From 2c1f544d92119625cea32fb2e773e600b60ee47d Mon Sep 17 00:00:00 2001 From: Julien Genestoux Date: Thu, 24 Oct 2024 16:09:04 -0400 Subject: [PATCH] adding upgrade with fallback --- ...nlockPrimeHookWithRecipientAndFallback.sol | 165 + ...PrimeHookWithRecipientAndFallback.dbg.json | 4 + ...lockPrimeHookWithRecipientAndFallback.json | 356 + .../1bad1a246ced45928824d35deeda720c.json | 26909 ++++++++++++++++ .../chain-8453/deployed_addresses.json | 3 +- ignition/deployments/chain-8453/journal.jsonl | 12 +- ignition/modules/UnlockPrimeHook.ts | 17 - .../modules/UnlockPrimeHookWithRecipient.ts | 19 +- ...UnlockPrimeHookWithRecipientAndFallback.ts | 48 + 9 files changed, 27496 insertions(+), 37 deletions(-) create mode 100644 contracts/UnlockPrimeHookWithRecipientAndFallback.sol create mode 100644 ignition/deployments/chain-8453/artifacts/UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback.dbg.json create mode 100644 ignition/deployments/chain-8453/artifacts/UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback.json create mode 100644 ignition/deployments/chain-8453/build-info/1bad1a246ced45928824d35deeda720c.json create mode 100644 ignition/modules/UnlockPrimeHookWithRecipientAndFallback.ts diff --git a/contracts/UnlockPrimeHookWithRecipientAndFallback.sol b/contracts/UnlockPrimeHookWithRecipientAndFallback.sol new file mode 100644 index 0000000..80807e3 --- /dev/null +++ b/contracts/UnlockPrimeHookWithRecipientAndFallback.sol @@ -0,0 +1,165 @@ +import "@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol"; + +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.27; + +// Uncomment this line to use console.log +// import "hardhat/console.sol"; + +interface IUniswapOracleV3 { + function PERIOD() external returns (uint256); + + function factory() external returns (address); + + function update(address _tokenIn, address _tokenOut) external; + + function consult( + address _tokenIn, + uint256 _amountIn, + address _tokenOut + ) external view returns (uint256 _amountOut); + + function updateAndConsult( + address _tokenIn, + uint256 _amountIn, + address _tokenOut + ) external returns (uint256 _amountOut); +} + +contract UnlockPrimeHookWithRecipientAndFallback { + address public unlockPrime; + address public oracle; + address public weth; + mapping(address => uint[2]) public refunds; // [amount, time] + + event UnlockPrimeSet(address); + event OracleSet(address); + event WethSet(address); + event RefundSet(address, uint256, uint256); + event RefundPaid(address, uint256); + + constructor(address _unlockPrime, address _oracle, address _weth) { + initialize(_unlockPrime, _oracle, _weth); + } + + function initialize( + address _unlockPrime, + address _oracle, + address _weth + ) public { + if (unlockPrime != address(0)) { + revert("Already initialized"); + } + unlockPrime = _unlockPrime; + emit UnlockPrimeSet(_unlockPrime); + oracle = _oracle; + emit OracleSet(_oracle); + weth = _weth; + emit WethSet(_weth); + } + + // Set the unlock prime address, only callable by lock manager + function setUnlockPrime(address _unlockPrime) public { + if (!IPublicLockV13(unlockPrime).isLockManager(msg.sender)) { + revert("Caller is not a lock manager"); + } + unlockPrime = _unlockPrime; + emit UnlockPrimeSet(_unlockPrime); + } + + // Set the oracle address, only callable by lock manager + function setOracle(address _oracle) public { + if (!IPublicLockV13(unlockPrime).isLockManager(msg.sender)) { + revert("Caller is not a lock manager"); + } + oracle = _oracle; + emit OracleSet(_oracle); + } + + // Set the WETH address, only callable by lock manager + function setWeth(address _weth) public { + if (!IPublicLockV13(unlockPrime).isLockManager(msg.sender)) { + revert("Caller is not a lock manager"); + } + weth = _weth; + emit WethSet(_weth); + } + + // Return the price of a key + function keyPurchasePrice( + address /* from */, + address /* recipient */, + address /* referrer */, + bytes calldata /* data */ + ) external view returns (uint256 minKeyPrice) { + return IPublicLockV13(msg.sender).keyPrice(); + } + + function recordRefund(address beneficiary, uint amount) private { + address UPAddress = IPublicLockV13(unlockPrime).tokenAddress(); + // At this point, check the pricePaid and its value against Uniswap oracles + uint valueInETH = IUniswapOracleV3(oracle).updateAndConsult( + UPAddress, + amount, + weth + ); + // Store the refund and the delay + uint existingRefund = refunds[beneficiary][0]; + uint existingDelay = refunds[beneficiary][1]; + uint newRefund = (valueInETH * 11) / 10; // 10% bonus + uint newDelay = block.timestamp + 60 * 60 * 24 * 14; // 2 weeks delay! + + if (existingDelay < block.timestamp) { + refunds[beneficiary] = [existingRefund + newRefund, newDelay]; + } else { + // One needs to wait for the delay to be able to increase their refund. + refunds[beneficiary] = [newRefund, newDelay]; + } + + emit RefundSet( + beneficiary, + refunds[beneficiary][0], + refunds[beneficiary][1] + ); + } + + // This function is called by Unlock when a key is purchased + function onKeyPurchase( + uint256 /* tokenId */, + address /* from */, + address recipient, + address /* referrer */, + bytes calldata /* data */, + uint256 /* minKeyPrice */, + uint256 /* pricePaid */ + ) external { + if (msg.sender == unlockPrime) { + recordRefund(recipient, IPublicLockV13(msg.sender).keyPrice()); + } + } + + // This function is called by Unlock when a key is extended + function onKeyExtend( + uint tokenId, + address /* sender */, + uint /* newTimestamp */, + uint /* expirationTimestamp */ + ) external { + IPublicLockV13 lock = IPublicLockV13(msg.sender); + if (msg.sender == unlockPrime) { + recordRefund(lock.ownerOf(tokenId), lock.keyPrice()); + } + } + + // Claim the refund! + function claimRefund() external { + uint[2] memory refund = refunds[msg.sender]; + require(refund[0] > 0, "No refund available"); + require(refund[1] < block.timestamp, "Refund not available yet"); + refunds[msg.sender] = [0, 0]; + payable(msg.sender).transfer(refund[0]); + emit RefundPaid(msg.sender, refund[0]); + } + + receive() external payable {} +} diff --git a/ignition/deployments/chain-8453/artifacts/UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback.dbg.json b/ignition/deployments/chain-8453/artifacts/UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback.dbg.json new file mode 100644 index 0000000..17e3fe3 --- /dev/null +++ b/ignition/deployments/chain-8453/artifacts/UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../build-info/1bad1a246ced45928824d35deeda720c.json" +} \ No newline at end of file diff --git a/ignition/deployments/chain-8453/artifacts/UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback.json b/ignition/deployments/chain-8453/artifacts/UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback.json new file mode 100644 index 0000000..02e082b --- /dev/null +++ b/ignition/deployments/chain-8453/artifacts/UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback.json @@ -0,0 +1,356 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "UnlockPrimeHookWithRecipientAndFallback", + "sourceName": "contracts/UnlockPrimeHookWithRecipientAndFallback.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_unlockPrime", + "type": "address" + }, + { + "internalType": "address", + "name": "_oracle", + "type": "address" + }, + { + "internalType": "address", + "name": "_weth", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "OracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "RefundPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "RefundSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "UnlockPrimeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "WethSet", + "type": "event" + }, + { + "inputs": [], + "name": "claimRefund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_unlockPrime", + "type": "address" + }, + { + "internalType": "address", + "name": "_oracle", + "type": "address" + }, + { + "internalType": "address", + "name": "_weth", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "keyPurchasePrice", + "outputs": [ + { + "internalType": "uint256", + "name": "minKeyPrice", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "onKeyExtend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "onKeyPurchase", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "oracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "refunds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_oracle", + "type": "address" + } + ], + "name": "setOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_unlockPrime", + "type": "address" + } + ], + "name": "setUnlockPrime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_weth", + "type": "address" + } + ], + "name": "setWeth", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockPrime", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "weth", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50604051611f0f380380611f0f833981810160405281019061003291906102a9565b61004383838361004b60201b60201c565b5050506103a3565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146100da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d190610359565b60405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5836040516101499190610388565b60405180910390a181600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa826040516101c19190610388565b60405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf9816040516102399190610388565b60405180910390a1505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102768261024b565b9050919050565b6102868161026b565b811461029157600080fd5b50565b6000815190506102a38161027d565b92915050565b6000806000606084860312156102c2576102c1610246565b5b60006102d086828701610294565b93505060206102e186828701610294565b92505060406102f286828701610294565b9150509250925092565b600082825260208201905092915050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b60006103436013836102fc565b915061034e8261030d565b602082019050919050565b6000602082019050818103600083015261037281610336565b9050919050565b6103828161026b565b82525050565b600060208201905061039d6000830184610379565b92915050565b611b5d806103b26000396000f3fe6080604052600436106100ab5760003560e01c80637dc0d1d0116100645780637dc0d1d0146101d75780638295d3be14610202578063b5545a3c1461022b578063b8d1452f14610242578063c0c53b8b1461026b578063db7d7f8d14610294576100b2565b8063016b9680146100b7578063221c1fd1146100e05780633436247b1461011d5780633fc8cef31461015a5780635e895f29146101855780637adbf973146101ae576100b2565b366100b257005b600080fd5b3480156100c357600080fd5b506100de60048036038101906100d99190611388565b6102bf565b005b3480156100ec57600080fd5b5061010760048036038101906101029190611454565b610410565b60405161011491906114eb565b60405180910390f35b34801561012957600080fd5b50610144600480360381019061013f9190611506565b61048c565b60405161015191906114eb565b60405180910390f35b34801561016657600080fd5b5061016f6104b4565b60405161017c9190611555565b60405180910390f35b34801561019157600080fd5b506101ac60048036038101906101a79190611570565b6104da565b005b3480156101ba57600080fd5b506101d560048036038101906101d09190611632565b6105b0565b005b3480156101e357600080fd5b506101ec610704565b6040516101f99190611555565b60405180910390f35b34801561020e57600080fd5b5061022960048036038101906102249190611632565b61072a565b005b34801561023757600080fd5b5061024061087d565b005b34801561024e57600080fd5b5061026960048036038101906102649190611632565b610acf565b005b34801561027757600080fd5b50610292600480360381019061028d919061165f565b610c23565b005b3480156102a057600080fd5b506102a9610e1e565b6040516102b69190611555565b60405180910390f35b600033905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610409576104088173ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b815260040161035391906114eb565b602060405180830381865afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039491906116c7565b8273ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104039190611709565b610e42565b5b5050505050565b60003373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104819190611709565b905095945050505050565b600360205281600052604060002081600281106104a857600080fd5b01600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036105a6576105a5863373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a09190611709565b610e42565b5b5050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016106099190611555565b602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a919061176e565b610689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610680906117f8565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa816040516106f99190611555565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016107839190611555565b602060405180830381865afa1580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c4919061176e565b610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa906117f8565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5816040516108729190611555565b60405180910390a150565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002806020026040519081016040528092919082600280156108f5576020028201915b8154815260200190600101908083116108e1575b5050505050905060008160006002811061091257610911611818565b5b602002015111610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90611893565b60405180910390fd5b428160016002811061096c5761096b611818565b5b6020020151106109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a8906118ff565b60405180910390fd5b6040518060400160405280600060ff168152602001600060ff16815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020906002610a1b929190611248565b503373ffffffffffffffffffffffffffffffffffffffff166108fc82600060028110610a4a57610a49611818565b5b60200201519081150290604051600060405180830381858888f19350505050158015610a7a573d6000803e3d6000fd5b507f1fe70b87853839959e74387a76c2713282f77a4a0656bf8689058a0eea2891e03382600060028110610ab157610ab0611818565b5b6020020151604051610ac492919061191f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b8152600401610b289190611555565b602060405180830381865afa158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b69919061176e565b610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f906117f8565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610c189190611555565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990611994565b60405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c583604051610d219190611555565b60405180910390a181600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa82604051610d999190611555565b60405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610e119190611555565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d76ea586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed491906116c7565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1e553e78385600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401610f59939291906119b4565b6020604051808303816000875af1158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190611709565b90506000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060028110610ff257610ff1611818565b5b015490506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061104a57611049611818565b5b015490506000600a600b8561105f9190611a1a565b6110699190611a8b565b90506000621275004261107c9190611abc565b9050428310156110f9576040518060400160405280838661109d9190611abc565b815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209060026110f392919061128d565b5061115d565b604051806040016040528083815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090600261115b92919061128d565b505b7fa1d590fd2e594a4a50983c420b530fcf5ffe210e5203b51d6c022cb0d9ac4f8088600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600281106111d1576111d0611818565b5b0154600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061122557611224611818565b5b015460405161123693929190611af0565b60405180910390a15050505050505050565b826002810192821561127c579160200282015b8281111561127b578251829060ff1690559160200191906001019061125b565b5b50905061128991906112cd565b5090565b82600281019282156112bc579160200282015b828111156112bb5782518255916020019190600101906112a0565b5b5090506112c991906112cd565b5090565b5b808211156112e65760008160009055506001016112ce565b5090565b600080fd5b600080fd5b6000819050919050565b611307816112f4565b811461131257600080fd5b50565b600081359050611324816112fe565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113558261132a565b9050919050565b6113658161134a565b811461137057600080fd5b50565b6000813590506113828161135c565b92915050565b600080600080608085870312156113a2576113a16112ea565b5b60006113b087828801611315565b94505060206113c187828801611373565b93505060406113d287828801611315565b92505060606113e387828801611315565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112611414576114136113ef565b5b8235905067ffffffffffffffff811115611431576114306113f4565b5b60208301915083600182028301111561144d5761144c6113f9565b5b9250929050565b6000806000806000608086880312156114705761146f6112ea565b5b600061147e88828901611373565b955050602061148f88828901611373565b94505060406114a088828901611373565b935050606086013567ffffffffffffffff8111156114c1576114c06112ef565b5b6114cd888289016113fe565b92509250509295509295909350565b6114e5816112f4565b82525050565b600060208201905061150060008301846114dc565b92915050565b6000806040838503121561151d5761151c6112ea565b5b600061152b85828601611373565b925050602061153c85828601611315565b9150509250929050565b61154f8161134a565b82525050565b600060208201905061156a6000830184611546565b92915050565b60008060008060008060008060e0898b0312156115905761158f6112ea565b5b600061159e8b828c01611315565b98505060206115af8b828c01611373565b97505060406115c08b828c01611373565b96505060606115d18b828c01611373565b955050608089013567ffffffffffffffff8111156115f2576115f16112ef565b5b6115fe8b828c016113fe565b945094505060a06116118b828c01611315565b92505060c06116228b828c01611315565b9150509295985092959890939650565b600060208284031215611648576116476112ea565b5b600061165684828501611373565b91505092915050565b600080600060608486031215611678576116776112ea565b5b600061168686828701611373565b935050602061169786828701611373565b92505060406116a886828701611373565b9150509250925092565b6000815190506116c18161135c565b92915050565b6000602082840312156116dd576116dc6112ea565b5b60006116eb848285016116b2565b91505092915050565b600081519050611703816112fe565b92915050565b60006020828403121561171f5761171e6112ea565b5b600061172d848285016116f4565b91505092915050565b60008115159050919050565b61174b81611736565b811461175657600080fd5b50565b60008151905061176881611742565b92915050565b600060208284031215611784576117836112ea565b5b600061179284828501611759565b91505092915050565b600082825260208201905092915050565b7f43616c6c6572206973206e6f742061206c6f636b206d616e6167657200000000600082015250565b60006117e2601c8361179b565b91506117ed826117ac565b602082019050919050565b60006020820190508181036000830152611811816117d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e6f20726566756e6420617661696c61626c6500000000000000000000000000600082015250565b600061187d60138361179b565b915061188882611847565b602082019050919050565b600060208201905081810360008301526118ac81611870565b9050919050565b7f526566756e64206e6f7420617661696c61626c65207965740000000000000000600082015250565b60006118e960188361179b565b91506118f4826118b3565b602082019050919050565b60006020820190508181036000830152611918816118dc565b9050919050565b60006040820190506119346000830185611546565b61194160208301846114dc565b9392505050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b600061197e60138361179b565b915061198982611948565b602082019050919050565b600060208201905081810360008301526119ad81611971565b9050919050565b60006060820190506119c96000830186611546565b6119d660208301856114dc565b6119e36040830184611546565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a25826112f4565b9150611a30836112f4565b9250828202611a3e816112f4565b91508282048414831517611a5557611a546119eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611a96826112f4565b9150611aa1836112f4565b925082611ab157611ab0611a5c565b5b828204905092915050565b6000611ac7826112f4565b9150611ad2836112f4565b9250828201905080821115611aea57611ae96119eb565b5b92915050565b6000606082019050611b056000830186611546565b611b1260208301856114dc565b611b1f60408301846114dc565b94935050505056fea264697066735822122008e09c1d2f6886a7c207324f1ad1ebde84b56354e465f1407f57b1181e5ba6a764736f6c634300081b0033", + "deployedBytecode": "0x6080604052600436106100ab5760003560e01c80637dc0d1d0116100645780637dc0d1d0146101d75780638295d3be14610202578063b5545a3c1461022b578063b8d1452f14610242578063c0c53b8b1461026b578063db7d7f8d14610294576100b2565b8063016b9680146100b7578063221c1fd1146100e05780633436247b1461011d5780633fc8cef31461015a5780635e895f29146101855780637adbf973146101ae576100b2565b366100b257005b600080fd5b3480156100c357600080fd5b506100de60048036038101906100d99190611388565b6102bf565b005b3480156100ec57600080fd5b5061010760048036038101906101029190611454565b610410565b60405161011491906114eb565b60405180910390f35b34801561012957600080fd5b50610144600480360381019061013f9190611506565b61048c565b60405161015191906114eb565b60405180910390f35b34801561016657600080fd5b5061016f6104b4565b60405161017c9190611555565b60405180910390f35b34801561019157600080fd5b506101ac60048036038101906101a79190611570565b6104da565b005b3480156101ba57600080fd5b506101d560048036038101906101d09190611632565b6105b0565b005b3480156101e357600080fd5b506101ec610704565b6040516101f99190611555565b60405180910390f35b34801561020e57600080fd5b5061022960048036038101906102249190611632565b61072a565b005b34801561023757600080fd5b5061024061087d565b005b34801561024e57600080fd5b5061026960048036038101906102649190611632565b610acf565b005b34801561027757600080fd5b50610292600480360381019061028d919061165f565b610c23565b005b3480156102a057600080fd5b506102a9610e1e565b6040516102b69190611555565b60405180910390f35b600033905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610409576104088173ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b815260040161035391906114eb565b602060405180830381865afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039491906116c7565b8273ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104039190611709565b610e42565b5b5050505050565b60003373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104819190611709565b905095945050505050565b600360205281600052604060002081600281106104a857600080fd5b01600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036105a6576105a5863373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a09190611709565b610e42565b5b5050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016106099190611555565b602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a919061176e565b610689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610680906117f8565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa816040516106f99190611555565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016107839190611555565b602060405180830381865afa1580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c4919061176e565b610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa906117f8565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5816040516108729190611555565b60405180910390a150565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002806020026040519081016040528092919082600280156108f5576020028201915b8154815260200190600101908083116108e1575b5050505050905060008160006002811061091257610911611818565b5b602002015111610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90611893565b60405180910390fd5b428160016002811061096c5761096b611818565b5b6020020151106109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a8906118ff565b60405180910390fd5b6040518060400160405280600060ff168152602001600060ff16815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020906002610a1b929190611248565b503373ffffffffffffffffffffffffffffffffffffffff166108fc82600060028110610a4a57610a49611818565b5b60200201519081150290604051600060405180830381858888f19350505050158015610a7a573d6000803e3d6000fd5b507f1fe70b87853839959e74387a76c2713282f77a4a0656bf8689058a0eea2891e03382600060028110610ab157610ab0611818565b5b6020020151604051610ac492919061191f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b8152600401610b289190611555565b602060405180830381865afa158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b69919061176e565b610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f906117f8565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610c189190611555565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990611994565b60405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c583604051610d219190611555565b60405180910390a181600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa82604051610d999190611555565b60405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610e119190611555565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d76ea586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed491906116c7565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1e553e78385600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401610f59939291906119b4565b6020604051808303816000875af1158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190611709565b90506000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060028110610ff257610ff1611818565b5b015490506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061104a57611049611818565b5b015490506000600a600b8561105f9190611a1a565b6110699190611a8b565b90506000621275004261107c9190611abc565b9050428310156110f9576040518060400160405280838661109d9190611abc565b815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209060026110f392919061128d565b5061115d565b604051806040016040528083815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090600261115b92919061128d565b505b7fa1d590fd2e594a4a50983c420b530fcf5ffe210e5203b51d6c022cb0d9ac4f8088600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600281106111d1576111d0611818565b5b0154600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061122557611224611818565b5b015460405161123693929190611af0565b60405180910390a15050505050505050565b826002810192821561127c579160200282015b8281111561127b578251829060ff1690559160200191906001019061125b565b5b50905061128991906112cd565b5090565b82600281019282156112bc579160200282015b828111156112bb5782518255916020019190600101906112a0565b5b5090506112c991906112cd565b5090565b5b808211156112e65760008160009055506001016112ce565b5090565b600080fd5b600080fd5b6000819050919050565b611307816112f4565b811461131257600080fd5b50565b600081359050611324816112fe565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113558261132a565b9050919050565b6113658161134a565b811461137057600080fd5b50565b6000813590506113828161135c565b92915050565b600080600080608085870312156113a2576113a16112ea565b5b60006113b087828801611315565b94505060206113c187828801611373565b93505060406113d287828801611315565b92505060606113e387828801611315565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112611414576114136113ef565b5b8235905067ffffffffffffffff811115611431576114306113f4565b5b60208301915083600182028301111561144d5761144c6113f9565b5b9250929050565b6000806000806000608086880312156114705761146f6112ea565b5b600061147e88828901611373565b955050602061148f88828901611373565b94505060406114a088828901611373565b935050606086013567ffffffffffffffff8111156114c1576114c06112ef565b5b6114cd888289016113fe565b92509250509295509295909350565b6114e5816112f4565b82525050565b600060208201905061150060008301846114dc565b92915050565b6000806040838503121561151d5761151c6112ea565b5b600061152b85828601611373565b925050602061153c85828601611315565b9150509250929050565b61154f8161134a565b82525050565b600060208201905061156a6000830184611546565b92915050565b60008060008060008060008060e0898b0312156115905761158f6112ea565b5b600061159e8b828c01611315565b98505060206115af8b828c01611373565b97505060406115c08b828c01611373565b96505060606115d18b828c01611373565b955050608089013567ffffffffffffffff8111156115f2576115f16112ef565b5b6115fe8b828c016113fe565b945094505060a06116118b828c01611315565b92505060c06116228b828c01611315565b9150509295985092959890939650565b600060208284031215611648576116476112ea565b5b600061165684828501611373565b91505092915050565b600080600060608486031215611678576116776112ea565b5b600061168686828701611373565b935050602061169786828701611373565b92505060406116a886828701611373565b9150509250925092565b6000815190506116c18161135c565b92915050565b6000602082840312156116dd576116dc6112ea565b5b60006116eb848285016116b2565b91505092915050565b600081519050611703816112fe565b92915050565b60006020828403121561171f5761171e6112ea565b5b600061172d848285016116f4565b91505092915050565b60008115159050919050565b61174b81611736565b811461175657600080fd5b50565b60008151905061176881611742565b92915050565b600060208284031215611784576117836112ea565b5b600061179284828501611759565b91505092915050565b600082825260208201905092915050565b7f43616c6c6572206973206e6f742061206c6f636b206d616e6167657200000000600082015250565b60006117e2601c8361179b565b91506117ed826117ac565b602082019050919050565b60006020820190508181036000830152611811816117d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e6f20726566756e6420617661696c61626c6500000000000000000000000000600082015250565b600061187d60138361179b565b915061188882611847565b602082019050919050565b600060208201905081810360008301526118ac81611870565b9050919050565b7f526566756e64206e6f7420617661696c61626c65207965740000000000000000600082015250565b60006118e960188361179b565b91506118f4826118b3565b602082019050919050565b60006020820190508181036000830152611918816118dc565b9050919050565b60006040820190506119346000830185611546565b61194160208301846114dc565b9392505050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b600061197e60138361179b565b915061198982611948565b602082019050919050565b600060208201905081810360008301526119ad81611971565b9050919050565b60006060820190506119c96000830186611546565b6119d660208301856114dc565b6119e36040830184611546565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a25826112f4565b9150611a30836112f4565b9250828202611a3e816112f4565b91508282048414831517611a5557611a546119eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611a96826112f4565b9150611aa1836112f4565b925082611ab157611ab0611a5c565b5b828204905092915050565b6000611ac7826112f4565b9150611ad2836112f4565b9250828201905080821115611aea57611ae96119eb565b5b92915050565b6000606082019050611b056000830186611546565b611b1260208301856114dc565b611b1f60408301846114dc565b94935050505056fea264697066735822122008e09c1d2f6886a7c207324f1ad1ebde84b56354e465f1407f57b1181e5ba6a764736f6c634300081b0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} \ No newline at end of file diff --git a/ignition/deployments/chain-8453/build-info/1bad1a246ced45928824d35deeda720c.json b/ignition/deployments/chain-8453/build-info/1bad1a246ced45928824d35deeda720c.json new file mode 100644 index 0000000..2dc5b66 --- /dev/null +++ b/ignition/deployments/chain-8453/build-info/1bad1a246ced45928824d35deeda720c.json @@ -0,0 +1,26909 @@ +{ + "id": "1bad1a246ced45928824d35deeda720c", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.8.27", + "solcLongVersion": "0.8.27+commit.40a35a09", + "input": { + "language": "Solidity", + "sources": { + "@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.5.17 <0.9.0;\npragma experimental ABIEncoderV2;\n\n/**\n * @title The PublicLock Interface\n */\n\ninterface IPublicLockV13 {\n /// Functions\n function initialize(\n address _lockCreator,\n uint _expirationDuration,\n address _tokenAddress,\n uint _keyPrice,\n uint _maxNumberOfKeys,\n string calldata _lockName\n ) external;\n\n // default role from OpenZeppelin\n function DEFAULT_ADMIN_ROLE() external view returns (bytes32 role);\n\n /**\n * @notice The version number of the current implementation on this network.\n * @return The current version number.\n */\n function publicLockVersion() external pure returns (uint16);\n\n /**\n * @dev Called by lock manager to withdraw all funds from the lock\n * @param _tokenAddress specifies the token address to withdraw or 0 for ETH. This is usually\n * the same as `tokenAddress` in MixinFunds.\n * @param _recipient specifies the address that will receive the tokens\n * @param _amount specifies the max amount to withdraw, which may be reduced when\n * considering the available balance. Set to 0 or MAX_UINT to withdraw everything.\n * -- however be wary of draining funds as it breaks the `cancelAndRefund` and `expireAndRefundFor` use cases.\n */\n function withdraw(\n address _tokenAddress,\n address payable _recipient,\n uint _amount\n ) external;\n\n /**\n * A function which lets a Lock manager of the lock to change the price for future purchases.\n * @dev Throws if called by other than a Lock manager\n * @dev Throws if lock has been disabled\n * @dev Throws if _tokenAddress is not a valid token\n * @param _keyPrice The new price to set for keys\n * @param _tokenAddress The address of the erc20 token to use for pricing the keys,\n * or 0 to use ETH\n */\n function updateKeyPricing(uint _keyPrice, address _tokenAddress) external;\n\n /**\n * Update the main key properties for the entire lock:\n *\n * - default duration of each key\n * - the maximum number of keys the lock can edit\n * - the maximum number of keys a single address can hold\n *\n * @notice keys previously bought are unaffected by this changes in expiration duration (i.e.\n * existing keys timestamps are not recalculated/updated)\n * @param _newExpirationDuration the new amount of time for each key purchased or type(uint).max for a non-expiring key\n * @param _maxKeysPerAcccount the maximum amount of key a single user can own\n * @param _maxNumberOfKeys uint the maximum number of keys\n * @dev _maxNumberOfKeys Can't be smaller than the existing supply\n */\n function updateLockConfig(\n uint _newExpirationDuration,\n uint _maxNumberOfKeys,\n uint _maxKeysPerAcccount\n ) external;\n\n /**\n * Checks if the user has a non-expired key.\n * @param _user The address of the key owner\n */\n function getHasValidKey(address _user) external view returns (bool);\n\n /**\n * @dev Returns the key's ExpirationTimestamp field for a given owner.\n * @param _tokenId the id of the key\n * @dev Returns 0 if the owner has never owned a key for this lock\n */\n function keyExpirationTimestampFor(\n uint _tokenId\n ) external view returns (uint timestamp);\n\n /**\n * Public function which returns the total number of unique owners (both expired\n * and valid). This may be larger than totalSupply.\n */\n function numberOfOwners() external view returns (uint);\n\n /**\n * Allows the Lock owner to assign\n * @param _lockName a descriptive name for this Lock.\n * @param _lockSymbol a Symbol for this Lock (default to KEY).\n * @param _baseTokenURI the baseTokenURI for this Lock\n */\n function setLockMetadata(\n string calldata _lockName,\n string calldata _lockSymbol,\n string calldata _baseTokenURI\n ) external;\n\n /**\n * @dev Gets the token symbol\n * @return string representing the token symbol\n */\n function symbol() external view returns (string memory);\n\n /** @notice A distinct Uniform Resource Identifier (URI) for a given asset.\n * @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\n * 3986. The URI may point to a JSON file that conforms to the \"ERC721\n * Metadata JSON Schema\".\n * https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n * @param _tokenId The tokenID we're inquiring about\n * @return String representing the URI for the requested token\n */\n function tokenURI(uint256 _tokenId) external view returns (string memory);\n\n /**\n * Allows a Lock manager to add or remove an event hook\n * @param _onKeyPurchaseHook Hook called when the `purchase` function is called\n * @param _onKeyCancelHook Hook called when the internal `_cancelAndRefund` function is called\n * @param _onValidKeyHook Hook called to determine if the contract should overide the status for a given address\n * @param _onTokenURIHook Hook called to generate a data URI used for NFT metadata\n * @param _onKeyTransferHook Hook called when a key is transfered\n * @param _onKeyExtendHook Hook called when a key is extended or renewed\n * @param _onKeyGrantHook Hook called when a key is granted\n */\n function setEventHooks(\n address _onKeyPurchaseHook,\n address _onKeyCancelHook,\n address _onValidKeyHook,\n address _onTokenURIHook,\n address _onKeyTransferHook,\n address _onKeyExtendHook,\n address _onKeyGrantHook\n ) external;\n\n /**\n * Allows a Lock manager to give a collection of users a key with no charge.\n * Each key may be assigned a different expiration date.\n * @dev Throws if called by other than a Lock manager\n * @param _recipients An array of receiving addresses\n * @param _expirationTimestamps An array of expiration Timestamps for the keys being granted\n * @return the ids of the granted tokens\n */\n function grantKeys(\n address[] calldata _recipients,\n uint[] calldata _expirationTimestamps,\n address[] calldata _keyManagers\n ) external returns (uint256[] memory);\n\n /**\n * Allows the Lock owner to extend an existing keys with no charge.\n * @param _tokenId The id of the token to extend\n * @param _duration The duration in secondes to add ot the key\n * @dev set `_duration` to 0 to use the default duration of the lock\n */\n function grantKeyExtension(uint _tokenId, uint _duration) external;\n\n /**\n * @dev Purchase function\n * @param _values array of tokens amount to pay for this purchase >= the current keyPrice - any applicable discount\n * (_values is ignored when using ETH)\n * @param _recipients array of addresses of the recipients of the purchased key\n * @param _referrers array of addresses of the users making the referral\n * @param _keyManagers optional array of addresses to grant managing rights to a specific address on creation\n * @param _data array of arbitrary data populated by the front-end which initiated the sale\n * @notice when called for an existing and non-expired key, the `_keyManager` param will be ignored\n * @dev Setting _value to keyPrice exactly doubles as a security feature. That way if the lock owner increases the\n * price while my transaction is pending I can't be charged more than I expected (only applicable to ERC-20 when more\n * than keyPrice is approved for spending).\n * @return tokenIds the ids of the created tokens\n */\n function purchase(\n uint256[] calldata _values,\n address[] calldata _recipients,\n address[] calldata _referrers,\n address[] calldata _keyManagers,\n bytes[] calldata _data\n ) external payable returns (uint256[] memory tokenIds);\n\n /**\n * @dev Extend function\n * @param _value the number of tokens to pay for this purchase >= the current keyPrice - any applicable discount\n * (_value is ignored when using ETH)\n * @param _tokenId the id of the key to extend\n * @param _referrer address of the user making the referral\n * @param _data arbitrary data populated by the front-end which initiated the sale\n * @dev Throws if lock is disabled or key does not exist for _recipient. Throws if _recipient == address(0).\n */\n function extend(\n uint _value,\n uint _tokenId,\n address _referrer,\n bytes calldata _data\n ) external payable;\n\n /**\n * Returns the percentage of the keyPrice to be sent to the referrer (in basis points)\n * @param _referrer the address of the referrer\n * @return referrerFee the percentage of the keyPrice to be sent to the referrer (in basis points)\n */\n function referrerFees(\n address _referrer\n ) external view returns (uint referrerFee);\n\n /**\n * Set a specific percentage of the keyPrice to be sent to the referrer while purchasing,\n * extending or renewing a key.\n * @param _referrer the address of the referrer\n * @param _feeBasisPoint the percentage of the price to be used for this\n * specific referrer (in basis points)\n * @dev To send a fixed percentage of the key price to all referrers, sett a percentage to `address(0)`\n */\n function setReferrerFee(address _referrer, uint _feeBasisPoint) external;\n\n /**\n * Merge existing keys\n * @param _tokenIdFrom the id of the token to substract time from\n * @param _tokenIdTo the id of the destination token to add time\n * @param _amount the amount of time to transfer (in seconds)\n */\n function mergeKeys(uint _tokenIdFrom, uint _tokenIdTo, uint _amount) external;\n\n /**\n * Deactivate an existing key\n * @param _tokenId the id of token to burn\n * @notice the key will be expired and ownership records will be destroyed\n */\n function burn(uint _tokenId) external;\n\n /**\n * @param _gasRefundValue price in wei or token in smallest price unit\n * @dev Set the value to be refunded to the sender on purchase\n */\n function setGasRefundValue(uint256 _gasRefundValue) external;\n\n /**\n * _gasRefundValue price in wei or token in smallest price unit\n * @dev Returns the value/price to be refunded to the sender on purchase\n */\n function gasRefundValue() external view returns (uint256 _gasRefundValue);\n\n /**\n * @notice returns the minimum price paid for a purchase with these params.\n * @dev this considers any discount from Unlock or the OnKeyPurchase hook.\n */\n function purchasePriceFor(\n address _recipient,\n address _referrer,\n bytes calldata _data\n ) external view returns (uint);\n\n /**\n * Allow a Lock manager to change the transfer fee.\n * @dev Throws if called by other than a Lock manager\n * @param _transferFeeBasisPoints The new transfer fee in basis-points(bps).\n * Ex: 200 bps = 2%\n */\n function updateTransferFee(uint _transferFeeBasisPoints) external;\n\n /**\n * Determines how much of a fee would need to be paid in order to\n * transfer to another account. This is pro-rated so the fee goes\n * down overtime.\n * @dev Throws if _tokenId does not have a valid key\n * @param _tokenId The id of the key check the transfer fee for.\n * @param _time The amount of time to calculate the fee for.\n * @return The transfer fee in seconds.\n */\n function getTransferFee(\n uint _tokenId,\n uint _time\n ) external view returns (uint);\n\n /**\n * @dev Invoked by a Lock manager to expire the user's key\n * and perform a refund and cancellation of the key\n * @param _tokenId The key id we wish to refund to\n * @param _amount The amount to refund to the key-owner\n * @dev Throws if called by other than a Lock manager\n * @dev Throws if _keyOwner does not have a valid key\n */\n function expireAndRefundFor(uint _tokenId, uint _amount) external;\n\n /**\n * @dev allows the key manager to expire a given tokenId\n * and send a refund to the keyOwner based on the amount of time remaining.\n * @param _tokenId The id of the key to cancel.\n * @notice cancel is enabled with a 10% penalty by default on all Locks.\n */\n function cancelAndRefund(uint _tokenId) external;\n\n /**\n * Allow a Lock manager to change the refund penalty.\n * @dev Throws if called by other than a Lock manager\n * @param _freeTrialLength The new duration of free trials for this lock\n * @param _refundPenaltyBasisPoints The new refund penaly in basis-points(bps)\n */\n function updateRefundPenalty(\n uint _freeTrialLength,\n uint _refundPenaltyBasisPoints\n ) external;\n\n /**\n * @dev Determines how much of a refund a key owner would receive if they issued\n * @param _tokenId the id of the token to get the refund value for.\n * @notice Due to the time required to mine a tx, the actual refund amount will be lower\n * than what the user reads from this call.\n * @return refund the amount of tokens refunded\n */\n function getCancelAndRefundValue(\n uint _tokenId\n ) external view returns (uint refund);\n\n function addLockManager(address account) external;\n\n function isLockManager(address account) external view returns (bool);\n\n /**\n * Returns the address of the `onKeyPurchaseHook` hook.\n * @return hookAddress address of the hook\n */\n function onKeyPurchaseHook() external view returns (address hookAddress);\n\n /**\n * Returns the address of the `onKeyCancelHook` hook.\n * @return hookAddress address of the hook\n */\n function onKeyCancelHook() external view returns (address hookAddress);\n\n /**\n * Returns the address of the `onValidKeyHook` hook.\n * @return hookAddress address of the hook\n */\n function onValidKeyHook() external view returns (address hookAddress);\n\n /**\n * Returns the address of the `onTokenURIHook` hook.\n * @return hookAddress address of the hook\n */\n function onTokenURIHook() external view returns (address hookAddress);\n\n /**\n * Returns the address of the `onKeyTransferHook` hook.\n * @return hookAddress address of the hook\n */\n function onKeyTransferHook() external view returns (address hookAddress);\n\n /**\n * Returns the address of the `onKeyExtendHook` hook.\n * @return hookAddress the address ok the hook\n */\n function onKeyExtendHook() external view returns (address hookAddress);\n\n /**\n * Returns the address of the `onKeyGrantHook` hook.\n * @return hookAddress the address ok the hook\n */\n function onKeyGrantHook() external view returns (address hookAddress);\n\n function renounceLockManager() external;\n\n /**\n * @return the maximum number of key allowed for a single address\n */\n function maxKeysPerAddress() external view returns (uint);\n\n function expirationDuration() external view returns (uint256);\n\n function freeTrialLength() external view returns (uint256);\n\n function keyPrice() external view returns (uint256);\n\n function maxNumberOfKeys() external view returns (uint256);\n\n function refundPenaltyBasisPoints() external view returns (uint256);\n\n function tokenAddress() external view returns (address);\n\n function transferFeeBasisPoints() external view returns (uint256);\n\n function unlockProtocol() external view returns (address);\n\n function keyManagerOf(uint) external view returns (address);\n\n ///===================================================================\n\n /**\n * @notice Allows the key owner to safely share their key (parent key) by\n * transferring a portion of the remaining time to a new key (child key).\n * @dev Throws if key is not valid.\n * @dev Throws if `_to` is the zero address\n * @param _to The recipient of the shared key\n * @param _tokenId the key to share\n * @param _timeShared The amount of time shared\n * checks if `_to` is a smart contract (code size > 0). If so, it calls\n * `onERC721Received` on `_to` and throws if the return value is not\n * `bytes4(keccak256('onERC721Received(address,address,uint,bytes)'))`.\n * @dev Emit Transfer event\n */\n function shareKey(address _to, uint _tokenId, uint _timeShared) external;\n\n /**\n * @notice Update transfer and cancel rights for a given key\n * @param _tokenId The id of the key to assign rights for\n * @param _keyManager The address to assign the rights to for the given key\n */\n function setKeyManagerOf(uint _tokenId, address _keyManager) external;\n\n /**\n * Check if a certain key is valid\n * @param _tokenId the id of the key to check validity\n * @notice this makes use of the onValidKeyHook if it is set\n */\n function isValidKey(uint _tokenId) external view returns (bool);\n\n /**\n * Returns the number of keys owned by `_keyOwner` (expired or not)\n * @param _keyOwner address for which we are retrieving the total number of keys\n * @return numberOfKeys total number of keys owned by the address\n */\n function totalKeys(\n address _keyOwner\n ) external view returns (uint numberOfKeys);\n\n /// @notice A descriptive name for a collection of NFTs in this contract\n function name() external view returns (string memory _name);\n\n ///===================================================================\n\n /// From ERC165.sol\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n\n ///===================================================================\n\n /// From ERC-721\n /**\n * In the specific case of a Lock, `balanceOf` returns only the tokens with a valid expiration timerange\n * @return balance The number of valid keys owned by `_keyOwner`\n */\n function balanceOf(address _owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the NFT specified by `tokenId`.\n */\n function ownerOf(uint256 tokenId) external view returns (address _owner);\n\n /**\n * @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to\n * another (`to`).\n *\n * Requirements:\n * - `from`, `to` cannot be zero.\n * - `tokenId` must be owned by `from`.\n * - If the caller is not `from`, it must be have been allowed to move this\n * NFT by either `approve` or `setApprovalForAll`.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * an ERC721-like function to transfer a token from one account to another.\n * @param from the owner of token to transfer\n * @param to the address that will receive the token\n * @param tokenId the id of the token\n * @dev Requirements: if the caller is not `from`, it must be approved to move this token by\n * either `approve` or `setApprovalForAll`.\n * The key manager will be reset to address zero after the transfer\n */\n function transferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * Lending a key allows you to transfer the token while retaining the\n * ownerships right by setting yourself as a key manager first.\n * @param from the owner of token to transfer\n * @param to the address that will receive the token\n * @param tokenId the id of the token\n * @notice This function can only be called by 1) the key owner when no key manager is set or 2) the key manager.\n * After calling the function, the `_recipent` will be the new owner, and the sender of the tx\n * will become the key manager.\n */\n function lendKey(address from, address to, uint tokenId) external;\n\n /**\n * Unlend is called when you have lent a key and want to claim its full ownership back.\n * @param _recipient the address that will receive the token ownership\n * @param _tokenId the id of the token\n * @dev Only the key manager of the token can call this function\n */\n function unlendKey(address _recipient, uint _tokenId) external;\n\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @notice Get the approved address for a single NFT\n * @dev Throws if `_tokenId` is not a valid NFT.\n * @param _tokenId The NFT to find the approved address for\n * @return operator The approved address for this NFT, or the zero address if there is none\n */\n function getApproved(\n uint256 _tokenId\n ) external view returns (address operator);\n\n /**\n * @dev Sets or unsets the approval of a given operator\n * An operator is allowed to transfer all tokens of the sender on their behalf\n * @param _operator operator address to set the approval\n * @param _approved representing the status of the approval to be set\n * @notice disabled when transfers are disabled\n */\n function setApprovalForAll(address _operator, bool _approved) external;\n\n /**\n * @dev Tells whether an operator is approved by a given keyManager\n * @param _owner owner address which you want to query the approval of\n * @param _operator operator address which you want to query the approval of\n * @return bool whether the given operator is approved by the given owner\n */\n function isApprovedForAll(\n address _owner,\n address _operator\n ) external view returns (bool);\n\n function safeTransferFrom(\n address from,\n address to,\n uint256 tokenId,\n bytes calldata data\n ) external;\n\n /**\n * Returns the total number of keys, including non-valid ones\n * @return _totalKeysCreated the total number of keys, valid or not\n */\n function totalSupply() external view returns (uint256 _totalKeysCreated);\n\n function tokenOfOwnerByIndex(\n address _owner,\n uint256 index\n ) external view returns (uint256 tokenId);\n\n function tokenByIndex(uint256 index) external view returns (uint256);\n\n /**\n * Innherited from Open Zeppelin AccessControl.sol\n */\n function getRoleAdmin(bytes32 role) external view returns (bytes32);\n\n function grantRole(bytes32 role, address account) external;\n\n function revokeRole(bytes32 role, address account) external;\n\n function renounceRole(bytes32 role, address account) external;\n\n function hasRole(bytes32 role, address account) external view returns (bool);\n\n /** `owner()` is provided as an helper to mimick the `Ownable` contract ABI.\n * The `Ownable` logic is used by many 3rd party services to determine\n * contract ownership - e.g. who is allowed to edit metadata on Opensea.\n *\n * @notice This logic is NOT used internally by the Unlock Protocol and is made\n * available only as a convenience helper.\n */\n function owner() external view returns (address owner);\n\n function setOwner(address account) external;\n\n function isOwner(address account) external view returns (bool isOwner);\n\n /**\n * Migrate data from the previous single owner => key mapping to\n * the new data structure w multiple tokens.\n * @param _calldata an ABI-encoded representation of the params (v10: the number of records to migrate as `uint`)\n * @dev when all record schemas are sucessfully upgraded, this function will update the `schemaVersion`\n * variable to the latest/current lock version\n */\n function migrate(bytes calldata _calldata) external;\n\n /**\n * Returns the version number of the data schema currently used by the lock\n * @notice if this is different from `publicLockVersion`, then the ability to purchase, grant\n * or extend keys is disabled.\n * @dev will return 0 if no ;igration has ever been run\n */\n function schemaVersion() external view returns (uint);\n\n /**\n * Set the schema version to the latest\n * @notice only lock manager call call this\n */\n function updateSchemaVersion() external;\n\n /**\n * Renew a given token\n * @notice only works for non-free, expiring, ERC20 locks\n * @param _tokenId the ID fo the token to renew\n * @param _referrer the address of the person to be granted UDT\n */\n function renewMembershipFor(uint _tokenId, address _referrer) external;\n\n /**\n * @dev helper to check if a key is currently renewable\n * it will revert if the pricing or duration of the lock have been modified\n * unfavorably since the key was bought(price increase or duration decrease).\n * It will also revert if a lock is not renewable or if the key is not ready for renewal yet\n * (at least 90% expired).\n * @param tokenId the id of the token to check\n * @param referrer the address where to send the referrer fee\n * @return true if the terms has changed\n */\n function isRenewable(\n uint256 tokenId,\n address referrer\n ) external view returns (bool);\n}\n" + }, + "contracts/UnlockPrimeHookWithRecipientAndFallback.sol": { + "content": "import \"@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol\";\n\n// SPDX-License-Identifier: UNLICENSED\npragma solidity ^0.8.27;\n\n// Uncomment this line to use console.log\n// import \"hardhat/console.sol\";\n\ninterface IUniswapOracleV3 {\n function PERIOD() external returns (uint256);\n\n function factory() external returns (address);\n\n function update(address _tokenIn, address _tokenOut) external;\n\n function consult(\n address _tokenIn,\n uint256 _amountIn,\n address _tokenOut\n ) external view returns (uint256 _amountOut);\n\n function updateAndConsult(\n address _tokenIn,\n uint256 _amountIn,\n address _tokenOut\n ) external returns (uint256 _amountOut);\n}\n\ncontract UnlockPrimeHookWithRecipientAndFallback {\n address public unlockPrime;\n address public oracle;\n address public weth;\n mapping(address => uint[2]) public refunds; // [amount, time]\n\n event UnlockPrimeSet(address);\n event OracleSet(address);\n event WethSet(address);\n event RefundSet(address, uint256, uint256);\n event RefundPaid(address, uint256);\n\n constructor(address _unlockPrime, address _oracle, address _weth) {\n initialize(_unlockPrime, _oracle, _weth);\n }\n\n function initialize(\n address _unlockPrime,\n address _oracle,\n address _weth\n ) public {\n if (unlockPrime != address(0)) {\n revert(\"Already initialized\");\n }\n unlockPrime = _unlockPrime;\n emit UnlockPrimeSet(_unlockPrime);\n oracle = _oracle;\n emit OracleSet(_oracle);\n weth = _weth;\n emit WethSet(_weth);\n }\n\n // Set the unlock prime address, only callable by lock manager\n function setUnlockPrime(address _unlockPrime) public {\n if (!IPublicLockV13(unlockPrime).isLockManager(msg.sender)) {\n revert(\"Caller is not a lock manager\");\n }\n unlockPrime = _unlockPrime;\n emit UnlockPrimeSet(_unlockPrime);\n }\n\n // Set the oracle address, only callable by lock manager\n function setOracle(address _oracle) public {\n if (!IPublicLockV13(unlockPrime).isLockManager(msg.sender)) {\n revert(\"Caller is not a lock manager\");\n }\n oracle = _oracle;\n emit OracleSet(_oracle);\n }\n\n // Set the WETH address, only callable by lock manager\n function setWeth(address _weth) public {\n if (!IPublicLockV13(unlockPrime).isLockManager(msg.sender)) {\n revert(\"Caller is not a lock manager\");\n }\n weth = _weth;\n emit WethSet(_weth);\n }\n\n // Return the price of a key\n function keyPurchasePrice(\n address /* from */,\n address /* recipient */,\n address /* referrer */,\n bytes calldata /* data */\n ) external view returns (uint256 minKeyPrice) {\n return IPublicLockV13(msg.sender).keyPrice();\n }\n\n function recordRefund(address beneficiary, uint amount) private {\n address UPAddress = IPublicLockV13(unlockPrime).tokenAddress();\n // At this point, check the pricePaid and its value against Uniswap oracles\n uint valueInETH = IUniswapOracleV3(oracle).updateAndConsult(\n UPAddress,\n amount,\n weth\n );\n // Store the refund and the delay\n uint existingRefund = refunds[beneficiary][0];\n uint existingDelay = refunds[beneficiary][1];\n uint newRefund = (valueInETH * 11) / 10; // 10% bonus\n uint newDelay = block.timestamp + 60 * 60 * 24 * 14; // 2 weeks delay!\n\n if (existingDelay < block.timestamp) {\n refunds[beneficiary] = [existingRefund + newRefund, newDelay];\n } else {\n // One needs to wait for the delay to be able to increase their refund.\n refunds[beneficiary] = [newRefund, newDelay];\n }\n\n emit RefundSet(\n beneficiary,\n refunds[beneficiary][0],\n refunds[beneficiary][1]\n );\n }\n\n // This function is called by Unlock when a key is purchased\n function onKeyPurchase(\n uint256 /* tokenId */,\n address /* from */,\n address recipient,\n address /* referrer */,\n bytes calldata /* data */,\n uint256 /* minKeyPrice */,\n uint256 /* pricePaid */\n ) external {\n if (msg.sender == unlockPrime) {\n recordRefund(recipient, IPublicLockV13(msg.sender).keyPrice());\n }\n }\n\n // This function is called by Unlock when a key is extended\n function onKeyExtend(\n uint tokenId,\n address /* sender */,\n uint /* newTimestamp */,\n uint /* expirationTimestamp */\n ) external {\n IPublicLockV13 lock = IPublicLockV13(msg.sender);\n if (msg.sender == unlockPrime) {\n recordRefund(lock.ownerOf(tokenId), lock.keyPrice());\n }\n }\n\n // Claim the refund!\n function claimRefund() external {\n uint[2] memory refund = refunds[msg.sender];\n require(refund[0] > 0, \"No refund available\");\n require(refund[1] < block.timestamp, \"Refund not available yet\");\n refunds[msg.sender] = [0, 0];\n payable(msg.sender).transfer(refund[0]);\n emit RefundPaid(msg.sender, refund[0]);\n }\n\n receive() external payable {}\n}\n" + } + }, + "settings": { + "evmVersion": "paris", + "optimizer": { + "enabled": false, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "sources": { + "@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol": { + "ast": { + "absolutePath": "@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol", + "exportedSymbols": { + "IPublicLockV13": [ + 651 + ] + }, + "id": 652, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.5", + ".17", + "<", + "0.9", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:32:0" + }, + { + "id": 2, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "65:33:0" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IPublicLockV13", + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 3, + "nodeType": "StructuredDocumentation", + "src": "100:42:0", + "text": " @title The PublicLock Interface" + }, + "fullyImplemented": false, + "id": 651, + "linearizedBaseContracts": [ + 651 + ], + "name": "IPublicLockV13", + "nameLocation": "154:14:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "documentation": { + "id": 4, + "nodeType": "StructuredDocumentation", + "src": "173:13:0", + "text": "Functions" + }, + "functionSelector": "6eadde43", + "id": 19, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "198:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6, + "mutability": "mutable", + "name": "_lockCreator", + "nameLocation": "222:12:0", + "nodeType": "VariableDeclaration", + "scope": 19, + "src": "214:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "214:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "_expirationDuration", + "nameLocation": "245:19:0", + "nodeType": "VariableDeclaration", + "scope": 19, + "src": "240:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "240:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10, + "mutability": "mutable", + "name": "_tokenAddress", + "nameLocation": "278:13:0", + "nodeType": "VariableDeclaration", + "scope": 19, + "src": "270:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 9, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "270:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 12, + "mutability": "mutable", + "name": "_keyPrice", + "nameLocation": "302:9:0", + "nodeType": "VariableDeclaration", + "scope": 19, + "src": "297:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 11, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "297:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "mutability": "mutable", + "name": "_maxNumberOfKeys", + "nameLocation": "322:16:0", + "nodeType": "VariableDeclaration", + "scope": 19, + "src": "317:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 13, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "317:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, + "mutability": "mutable", + "name": "_lockName", + "nameLocation": "360:9:0", + "nodeType": "VariableDeclaration", + "scope": 19, + "src": "344:25:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 15, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "344:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "208:165:0" + }, + "returnParameters": { + "id": 18, + "nodeType": "ParameterList", + "parameters": [], + "src": "382:0:0" + }, + "scope": 651, + "src": "189:194:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a217fddf", + "id": 24, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "DEFAULT_ADMIN_ROLE", + "nameLocation": "432:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 20, + "nodeType": "ParameterList", + "parameters": [], + "src": "450:2:0" + }, + "returnParameters": { + "id": 23, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 22, + "mutability": "mutable", + "name": "role", + "nameLocation": "484:4:0", + "nodeType": "VariableDeclaration", + "scope": 24, + "src": "476:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 21, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "476:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "475:14:0" + }, + "scope": 651, + "src": "423:67:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 25, + "nodeType": "StructuredDocumentation", + "src": "494:129:0", + "text": " @notice The version number of the current implementation on this network.\n @return The current version number." + }, + "functionSelector": "d1bbd49c", + "id": 30, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "publicLockVersion", + "nameLocation": "635:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 26, + "nodeType": "ParameterList", + "parameters": [], + "src": "652:2:0" + }, + "returnParameters": { + "id": 29, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 28, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 30, + "src": "678:6:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + }, + "typeName": { + "id": 27, + "name": "uint16", + "nodeType": "ElementaryTypeName", + "src": "678:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint16", + "typeString": "uint16" + } + }, + "visibility": "internal" + } + ], + "src": "677:8:0" + }, + "scope": 651, + "src": "626:60:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 31, + "nodeType": "StructuredDocumentation", + "src": "690:577:0", + "text": " @dev Called by lock manager to withdraw all funds from the lock\n @param _tokenAddress specifies the token address to withdraw or 0 for ETH. This is usually\n the same as `tokenAddress` in MixinFunds.\n @param _recipient specifies the address that will receive the tokens\n @param _amount specifies the max amount to withdraw, which may be reduced when\n considering the available balance. Set to 0 or MAX_UINT to withdraw everything.\n -- however be wary of draining funds as it breaks the `cancelAndRefund` and `expireAndRefundFor` use cases." + }, + "functionSelector": "d9caed12", + "id": 40, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nameLocation": "1279:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 38, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33, + "mutability": "mutable", + "name": "_tokenAddress", + "nameLocation": "1301:13:0", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "1293:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1293:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "mutability": "mutable", + "name": "_recipient", + "nameLocation": "1336:10:0", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "1320:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 34, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1320:15:0", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 37, + "mutability": "mutable", + "name": "_amount", + "nameLocation": "1357:7:0", + "nodeType": "VariableDeclaration", + "scope": 40, + "src": "1352:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1352:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1287:81:0" + }, + "returnParameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [], + "src": "1377:0:0" + }, + "scope": 651, + "src": "1270:108:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 41, + "nodeType": "StructuredDocumentation", + "src": "1382:418:0", + "text": " A function which lets a Lock manager of the lock to change the price for future purchases.\n @dev Throws if called by other than a Lock manager\n @dev Throws if lock has been disabled\n @dev Throws if _tokenAddress is not a valid token\n @param _keyPrice The new price to set for keys\n @param _tokenAddress The address of the erc20 token to use for pricing the keys,\n or 0 to use ETH" + }, + "functionSelector": "a2e4cd2e", + "id": 48, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "updateKeyPricing", + "nameLocation": "1812:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 43, + "mutability": "mutable", + "name": "_keyPrice", + "nameLocation": "1834:9:0", + "nodeType": "VariableDeclaration", + "scope": 48, + "src": "1829:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 42, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1829:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 45, + "mutability": "mutable", + "name": "_tokenAddress", + "nameLocation": "1853:13:0", + "nodeType": "VariableDeclaration", + "scope": 48, + "src": "1845:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1845:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1828:39:0" + }, + "returnParameters": { + "id": 47, + "nodeType": "ParameterList", + "parameters": [], + "src": "1876:0:0" + }, + "scope": 651, + "src": "1803:74:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 49, + "nodeType": "StructuredDocumentation", + "src": "1881:712:0", + "text": " Update the main key properties for the entire lock:\n - default duration of each key\n - the maximum number of keys the lock can edit\n - the maximum number of keys a single address can hold\n @notice keys previously bought are unaffected by this changes in expiration duration (i.e.\n existing keys timestamps are not recalculated/updated)\n @param _newExpirationDuration the new amount of time for each key purchased or type(uint).max for a non-expiring key\n @param _maxKeysPerAcccount the maximum amount of key a single user can own\n @param _maxNumberOfKeys uint the maximum number of keys\n @dev _maxNumberOfKeys Can't be smaller than the existing supply" + }, + "functionSelector": "282478df", + "id": 58, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "updateLockConfig", + "nameLocation": "2605:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 56, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 51, + "mutability": "mutable", + "name": "_newExpirationDuration", + "nameLocation": "2632:22:0", + "nodeType": "VariableDeclaration", + "scope": 58, + "src": "2627:27:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 50, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2627:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 53, + "mutability": "mutable", + "name": "_maxNumberOfKeys", + "nameLocation": "2665:16:0", + "nodeType": "VariableDeclaration", + "scope": 58, + "src": "2660:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 52, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2660:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 55, + "mutability": "mutable", + "name": "_maxKeysPerAcccount", + "nameLocation": "2692:19:0", + "nodeType": "VariableDeclaration", + "scope": 58, + "src": "2687:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 54, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2687:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2621:94:0" + }, + "returnParameters": { + "id": 57, + "nodeType": "ParameterList", + "parameters": [], + "src": "2724:0:0" + }, + "scope": 651, + "src": "2596:129:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 59, + "nodeType": "StructuredDocumentation", + "src": "2729:103:0", + "text": " Checks if the user has a non-expired key.\n @param _user The address of the key owner" + }, + "functionSelector": "6d8ea5b4", + "id": 66, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getHasValidKey", + "nameLocation": "2844:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 62, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 61, + "mutability": "mutable", + "name": "_user", + "nameLocation": "2867:5:0", + "nodeType": "VariableDeclaration", + "scope": 66, + "src": "2859:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 60, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2859:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2858:15:0" + }, + "returnParameters": { + "id": 65, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 64, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 66, + "src": "2897:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 63, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2897:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "2896:6:0" + }, + "scope": 651, + "src": "2835:68:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 67, + "nodeType": "StructuredDocumentation", + "src": "2907:190:0", + "text": " @dev Returns the key's ExpirationTimestamp field for a given owner.\n @param _tokenId the id of the key\n @dev Returns 0 if the owner has never owned a key for this lock" + }, + "functionSelector": "54b249fb", + "id": 74, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "keyExpirationTimestampFor", + "nameLocation": "3109:25:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 70, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 69, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "3145:8:0", + "nodeType": "VariableDeclaration", + "scope": 74, + "src": "3140:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 68, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3140:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3134:23:0" + }, + "returnParameters": { + "id": 73, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 72, + "mutability": "mutable", + "name": "timestamp", + "nameLocation": "3186:9:0", + "nodeType": "VariableDeclaration", + "scope": 74, + "src": "3181:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 71, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3181:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3180:16:0" + }, + "scope": 651, + "src": "3100:97:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 75, + "nodeType": "StructuredDocumentation", + "src": "3201:147:0", + "text": " Public function which returns the total number of unique owners (both expired\n and valid). This may be larger than totalSupply." + }, + "functionSelector": "93fd1844", + "id": 80, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "numberOfOwners", + "nameLocation": "3360:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [], + "src": "3374:2:0" + }, + "returnParameters": { + "id": 79, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 80, + "src": "3400:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 77, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3400:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "3399:6:0" + }, + "scope": 651, + "src": "3351:55:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 81, + "nodeType": "StructuredDocumentation", + "src": "3410:224:0", + "text": " Allows the Lock owner to assign\n @param _lockName a descriptive name for this Lock.\n @param _lockSymbol a Symbol for this Lock (default to KEY).\n @param _baseTokenURI the baseTokenURI for this Lock" + }, + "functionSelector": "d1b8759b", + "id": 90, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setLockMetadata", + "nameLocation": "3646:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 88, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 83, + "mutability": "mutable", + "name": "_lockName", + "nameLocation": "3683:9:0", + "nodeType": "VariableDeclaration", + "scope": 90, + "src": "3667:25:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 82, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3667:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 85, + "mutability": "mutable", + "name": "_lockSymbol", + "nameLocation": "3714:11:0", + "nodeType": "VariableDeclaration", + "scope": 90, + "src": "3698:27:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 84, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3698:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 87, + "mutability": "mutable", + "name": "_baseTokenURI", + "nameLocation": "3747:13:0", + "nodeType": "VariableDeclaration", + "scope": 90, + "src": "3731:29:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 86, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3731:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3661:103:0" + }, + "returnParameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [], + "src": "3773:0:0" + }, + "scope": 651, + "src": "3637:137:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 91, + "nodeType": "StructuredDocumentation", + "src": "3778:91:0", + "text": " @dev Gets the token symbol\n @return string representing the token symbol" + }, + "functionSelector": "95d89b41", + "id": 96, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nameLocation": "3881:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 92, + "nodeType": "ParameterList", + "parameters": [], + "src": "3887:2:0" + }, + "returnParameters": { + "id": 95, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 96, + "src": "3913:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 93, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3913:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "3912:15:0" + }, + "scope": 651, + "src": "3872:56:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 97, + "nodeType": "StructuredDocumentation", + "src": "3932:446:0", + "text": "@notice A distinct Uniform Resource Identifier (URI) for a given asset.\n @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC\n 3986. The URI may point to a JSON file that conforms to the \"ERC721\n Metadata JSON Schema\".\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\n @param _tokenId The tokenID we're inquiring about\n @return String representing the URI for the requested token" + }, + "functionSelector": "c87b56dd", + "id": 104, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nameLocation": "4390:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 100, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 99, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "4407:8:0", + "nodeType": "VariableDeclaration", + "scope": 104, + "src": "4399:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4399:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4398:18:0" + }, + "returnParameters": { + "id": 103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 102, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 104, + "src": "4440:13:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 101, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4440:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "4439:15:0" + }, + "scope": 651, + "src": "4381:74:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 105, + "nodeType": "StructuredDocumentation", + "src": "4459:651:0", + "text": " Allows a Lock manager to add or remove an event hook\n @param _onKeyPurchaseHook Hook called when the `purchase` function is called\n @param _onKeyCancelHook Hook called when the internal `_cancelAndRefund` function is called\n @param _onValidKeyHook Hook called to determine if the contract should overide the status for a given address\n @param _onTokenURIHook Hook called to generate a data URI used for NFT metadata\n @param _onKeyTransferHook Hook called when a key is transfered\n @param _onKeyExtendHook Hook called when a key is extended or renewed\n @param _onKeyGrantHook Hook called when a key is granted" + }, + "functionSelector": "74cac47d", + "id": 122, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setEventHooks", + "nameLocation": "5122:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 107, + "mutability": "mutable", + "name": "_onKeyPurchaseHook", + "nameLocation": "5149:18:0", + "nodeType": "VariableDeclaration", + "scope": 122, + "src": "5141:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 106, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5141:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 109, + "mutability": "mutable", + "name": "_onKeyCancelHook", + "nameLocation": "5181:16:0", + "nodeType": "VariableDeclaration", + "scope": 122, + "src": "5173:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 108, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5173:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 111, + "mutability": "mutable", + "name": "_onValidKeyHook", + "nameLocation": "5211:15:0", + "nodeType": "VariableDeclaration", + "scope": 122, + "src": "5203:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 110, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5203:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 113, + "mutability": "mutable", + "name": "_onTokenURIHook", + "nameLocation": "5240:15:0", + "nodeType": "VariableDeclaration", + "scope": 122, + "src": "5232:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 112, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5232:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 115, + "mutability": "mutable", + "name": "_onKeyTransferHook", + "nameLocation": "5269:18:0", + "nodeType": "VariableDeclaration", + "scope": 122, + "src": "5261:26:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 114, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5261:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 117, + "mutability": "mutable", + "name": "_onKeyExtendHook", + "nameLocation": "5301:16:0", + "nodeType": "VariableDeclaration", + "scope": 122, + "src": "5293:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 116, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5293:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 119, + "mutability": "mutable", + "name": "_onKeyGrantHook", + "nameLocation": "5331:15:0", + "nodeType": "VariableDeclaration", + "scope": 122, + "src": "5323:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5323:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "5135:215:0" + }, + "returnParameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [], + "src": "5359:0:0" + }, + "scope": 651, + "src": "5113:247:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 123, + "nodeType": "StructuredDocumentation", + "src": "5364:397:0", + "text": " Allows a Lock manager to give a collection of users a key with no charge.\n Each key may be assigned a different expiration date.\n @dev Throws if called by other than a Lock manager\n @param _recipients An array of receiving addresses\n @param _expirationTimestamps An array of expiration Timestamps for the keys being granted\n @return the ids of the granted tokens" + }, + "functionSelector": "81a3c943", + "id": 138, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "grantKeys", + "nameLocation": "5773:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 133, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 126, + "mutability": "mutable", + "name": "_recipients", + "nameLocation": "5807:11:0", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "5788:30:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 124, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5788:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 125, + "nodeType": "ArrayTypeName", + "src": "5788:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 129, + "mutability": "mutable", + "name": "_expirationTimestamps", + "nameLocation": "5840:21:0", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "5824:37:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 127, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5824:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 128, + "nodeType": "ArrayTypeName", + "src": "5824:6:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 132, + "mutability": "mutable", + "name": "_keyManagers", + "nameLocation": "5886:12:0", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "5867:31:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5867:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 131, + "nodeType": "ArrayTypeName", + "src": "5867:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + } + ], + "src": "5782:120:0" + }, + "returnParameters": { + "id": 137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 136, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 138, + "src": "5921:16:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 134, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5921:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 135, + "nodeType": "ArrayTypeName", + "src": "5921:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "5920:18:0" + }, + "scope": 651, + "src": "5764:175:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 139, + "nodeType": "StructuredDocumentation", + "src": "5943:266:0", + "text": " Allows the Lock owner to extend an existing keys with no charge.\n @param _tokenId The id of the token to extend\n @param _duration The duration in secondes to add ot the key\n @dev set `_duration` to 0 to use the default duration of the lock" + }, + "functionSelector": "4cd38c1d", + "id": 146, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "grantKeyExtension", + "nameLocation": "6221:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 144, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 141, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "6244:8:0", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "6239:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 140, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6239:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 143, + "mutability": "mutable", + "name": "_duration", + "nameLocation": "6259:9:0", + "nodeType": "VariableDeclaration", + "scope": 146, + "src": "6254:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 142, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6254:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "6238:31:0" + }, + "returnParameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [], + "src": "6278:0:0" + }, + "scope": 651, + "src": "6212:67:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 147, + "nodeType": "StructuredDocumentation", + "src": "6283:996:0", + "text": " @dev Purchase function\n @param _values array of tokens amount to pay for this purchase >= the current keyPrice - any applicable discount\n (_values is ignored when using ETH)\n @param _recipients array of addresses of the recipients of the purchased key\n @param _referrers array of addresses of the users making the referral\n @param _keyManagers optional array of addresses to grant managing rights to a specific address on creation\n @param _data array of arbitrary data populated by the front-end which initiated the sale\n @notice when called for an existing and non-expired key, the `_keyManager` param will be ignored\n @dev Setting _value to keyPrice exactly doubles as a security feature. That way if the lock owner increases the\n price while my transaction is pending I can't be charged more than I expected (only applicable to ERC-20 when more\n than keyPrice is approved for spending).\n @return tokenIds the ids of the created tokens" + }, + "functionSelector": "33818997", + "id": 168, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "purchase", + "nameLocation": "7291:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 163, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 150, + "mutability": "mutable", + "name": "_values", + "nameLocation": "7324:7:0", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "7305:26:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 148, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7305:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 149, + "nodeType": "ArrayTypeName", + "src": "7305:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 153, + "mutability": "mutable", + "name": "_recipients", + "nameLocation": "7356:11:0", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "7337:30:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 151, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7337:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 152, + "nodeType": "ArrayTypeName", + "src": "7337:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "_referrers", + "nameLocation": "7392:10:0", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "7373:29:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 154, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7373:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 155, + "nodeType": "ArrayTypeName", + "src": "7373:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 159, + "mutability": "mutable", + "name": "_keyManagers", + "nameLocation": "7427:12:0", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "7408:31:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 157, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7408:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 158, + "nodeType": "ArrayTypeName", + "src": "7408:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 162, + "mutability": "mutable", + "name": "_data", + "nameLocation": "7462:5:0", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "7445:22:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_calldata_ptr_$dyn_calldata_ptr", + "typeString": "bytes[]" + }, + "typeName": { + "baseType": { + "id": 160, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7445:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "id": 161, + "nodeType": "ArrayTypeName", + "src": "7445:7:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr", + "typeString": "bytes[]" + } + }, + "visibility": "internal" + } + ], + "src": "7299:172:0" + }, + "returnParameters": { + "id": 167, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 166, + "mutability": "mutable", + "name": "tokenIds", + "nameLocation": "7515:8:0", + "nodeType": "VariableDeclaration", + "scope": 168, + "src": "7498:25:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 164, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7498:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 165, + "nodeType": "ArrayTypeName", + "src": "7498:9:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "visibility": "internal" + } + ], + "src": "7497:27:0" + }, + "scope": 651, + "src": "7282:243:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 169, + "nodeType": "StructuredDocumentation", + "src": "7529:497:0", + "text": " @dev Extend function\n @param _value the number of tokens to pay for this purchase >= the current keyPrice - any applicable discount\n (_value is ignored when using ETH)\n @param _tokenId the id of the key to extend\n @param _referrer address of the user making the referral\n @param _data arbitrary data populated by the front-end which initiated the sale\n @dev Throws if lock is disabled or key does not exist for _recipient. Throws if _recipient == address(0)." + }, + "functionSelector": "d813cc19", + "id": 180, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "extend", + "nameLocation": "8038:6:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 171, + "mutability": "mutable", + "name": "_value", + "nameLocation": "8055:6:0", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "8050:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 170, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8050:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 173, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "8072:8:0", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "8067:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 172, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8067:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 175, + "mutability": "mutable", + "name": "_referrer", + "nameLocation": "8094:9:0", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "8086:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 174, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8086:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 177, + "mutability": "mutable", + "name": "_data", + "nameLocation": "8124:5:0", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "8109:20:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 176, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8109:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "8044:89:0" + }, + "returnParameters": { + "id": 179, + "nodeType": "ParameterList", + "parameters": [], + "src": "8150:0:0" + }, + "scope": 651, + "src": "8029:122:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 181, + "nodeType": "StructuredDocumentation", + "src": "8155:249:0", + "text": " Returns the percentage of the keyPrice to be sent to the referrer (in basis points)\n @param _referrer the address of the referrer\n @return referrerFee the percentage of the keyPrice to be sent to the referrer (in basis points)" + }, + "functionSelector": "c23135dd", + "id": 188, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "referrerFees", + "nameLocation": "8416:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 184, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 183, + "mutability": "mutable", + "name": "_referrer", + "nameLocation": "8442:9:0", + "nodeType": "VariableDeclaration", + "scope": 188, + "src": "8434:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8434:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "8428:27:0" + }, + "returnParameters": { + "id": 187, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 186, + "mutability": "mutable", + "name": "referrerFee", + "nameLocation": "8484:11:0", + "nodeType": "VariableDeclaration", + "scope": 188, + "src": "8479:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 185, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8479:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8478:18:0" + }, + "scope": 651, + "src": "8407:90:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 189, + "nodeType": "StructuredDocumentation", + "src": "8501:407:0", + "text": " Set a specific percentage of the keyPrice to be sent to the referrer while purchasing,\n extending or renewing a key.\n @param _referrer the address of the referrer\n @param _feeBasisPoint the percentage of the price to be used for this\n specific referrer (in basis points)\n @dev To send a fixed percentage of the key price to all referrers, sett a percentage to `address(0)`" + }, + "functionSelector": "debe2b0d", + "id": 196, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setReferrerFee", + "nameLocation": "8920:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 191, + "mutability": "mutable", + "name": "_referrer", + "nameLocation": "8943:9:0", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "8935:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 190, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8935:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 193, + "mutability": "mutable", + "name": "_feeBasisPoint", + "nameLocation": "8959:14:0", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "8954:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 192, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "8954:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "8934:40:0" + }, + "returnParameters": { + "id": 195, + "nodeType": "ParameterList", + "parameters": [], + "src": "8983:0:0" + }, + "scope": 651, + "src": "8911:73:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 197, + "nodeType": "StructuredDocumentation", + "src": "8988:234:0", + "text": " Merge existing keys\n @param _tokenIdFrom the id of the token to substract time from\n @param _tokenIdTo the id of the destination token to add time\n @param _amount the amount of time to transfer (in seconds)" + }, + "functionSelector": "068208cd", + "id": 206, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "mergeKeys", + "nameLocation": "9234:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 199, + "mutability": "mutable", + "name": "_tokenIdFrom", + "nameLocation": "9249:12:0", + "nodeType": "VariableDeclaration", + "scope": 206, + "src": "9244:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 198, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9244:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 201, + "mutability": "mutable", + "name": "_tokenIdTo", + "nameLocation": "9268:10:0", + "nodeType": "VariableDeclaration", + "scope": 206, + "src": "9263:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 200, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9263:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 203, + "mutability": "mutable", + "name": "_amount", + "nameLocation": "9285:7:0", + "nodeType": "VariableDeclaration", + "scope": 206, + "src": "9280:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 202, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9280:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9243:50:0" + }, + "returnParameters": { + "id": 205, + "nodeType": "ParameterList", + "parameters": [], + "src": "9302:0:0" + }, + "scope": 651, + "src": "9225:78:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 207, + "nodeType": "StructuredDocumentation", + "src": "9307:163:0", + "text": " Deactivate an existing key\n @param _tokenId the id of token to burn\n @notice the key will be expired and ownership records will be destroyed" + }, + "functionSelector": "42966c68", + "id": 212, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "burn", + "nameLocation": "9482:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 210, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 209, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "9492:8:0", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "9487:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 208, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9487:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9486:15:0" + }, + "returnParameters": { + "id": 211, + "nodeType": "ParameterList", + "parameters": [], + "src": "9510:0:0" + }, + "scope": 651, + "src": "9473:38:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 213, + "nodeType": "StructuredDocumentation", + "src": "9515:147:0", + "text": " @param _gasRefundValue price in wei or token in smallest price unit\n @dev Set the value to be refunded to the sender on purchase" + }, + "functionSelector": "f5766b39", + "id": 218, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setGasRefundValue", + "nameLocation": "9674:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 216, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 215, + "mutability": "mutable", + "name": "_gasRefundValue", + "nameLocation": "9700:15:0", + "nodeType": "VariableDeclaration", + "scope": 218, + "src": "9692:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9692:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9691:25:0" + }, + "returnParameters": { + "id": 217, + "nodeType": "ParameterList", + "parameters": [], + "src": "9725:0:0" + }, + "scope": 651, + "src": "9665:61:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 219, + "nodeType": "StructuredDocumentation", + "src": "9730:150:0", + "text": " _gasRefundValue price in wei or token in smallest price unit\n @dev Returns the value/price to be refunded to the sender on purchase" + }, + "functionSelector": "6207a8da", + "id": 224, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "gasRefundValue", + "nameLocation": "9892:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 220, + "nodeType": "ParameterList", + "parameters": [], + "src": "9906:2:0" + }, + "returnParameters": { + "id": 223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 222, + "mutability": "mutable", + "name": "_gasRefundValue", + "nameLocation": "9940:15:0", + "nodeType": "VariableDeclaration", + "scope": 224, + "src": "9932:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 221, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9932:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "9931:25:0" + }, + "scope": 651, + "src": "9883:74:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 225, + "nodeType": "StructuredDocumentation", + "src": "9961:164:0", + "text": " @notice returns the minimum price paid for a purchase with these params.\n @dev this considers any discount from Unlock or the OnKeyPurchase hook." + }, + "functionSelector": "097ba333", + "id": 236, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "purchasePriceFor", + "nameLocation": "10137:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 232, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 227, + "mutability": "mutable", + "name": "_recipient", + "nameLocation": "10167:10:0", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "10159:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10159:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 229, + "mutability": "mutable", + "name": "_referrer", + "nameLocation": "10191:9:0", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "10183:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 228, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10183:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 231, + "mutability": "mutable", + "name": "_data", + "nameLocation": "10221:5:0", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "10206:20:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 230, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "10206:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "10153:77:0" + }, + "returnParameters": { + "id": 235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 234, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 236, + "src": "10254:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 233, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10254:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10253:6:0" + }, + "scope": 651, + "src": "10128:132:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 237, + "nodeType": "StructuredDocumentation", + "src": "10264:220:0", + "text": " Allow a Lock manager to change the transfer fee.\n @dev Throws if called by other than a Lock manager\n @param _transferFeeBasisPoints The new transfer fee in basis-points(bps).\n Ex: 200 bps = 2%" + }, + "functionSelector": "8577a6d5", + "id": 242, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "updateTransferFee", + "nameLocation": "10496:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 239, + "mutability": "mutable", + "name": "_transferFeeBasisPoints", + "nameLocation": "10519:23:0", + "nodeType": "VariableDeclaration", + "scope": 242, + "src": "10514:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 238, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10514:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10513:30:0" + }, + "returnParameters": { + "id": 241, + "nodeType": "ParameterList", + "parameters": [], + "src": "10552:0:0" + }, + "scope": 651, + "src": "10487:66:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 243, + "nodeType": "StructuredDocumentation", + "src": "10557:393:0", + "text": " Determines how much of a fee would need to be paid in order to\n transfer to another account. This is pro-rated so the fee goes\n down overtime.\n @dev Throws if _tokenId does not have a valid key\n @param _tokenId The id of the key check the transfer fee for.\n @param _time The amount of time to calculate the fee for.\n @return The transfer fee in seconds." + }, + "functionSelector": "b1a3b25d", + "id": 252, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getTransferFee", + "nameLocation": "10962:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 248, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 245, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "10987:8:0", + "nodeType": "VariableDeclaration", + "scope": 252, + "src": "10982:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 244, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "10982:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "_time", + "nameLocation": "11006:5:0", + "nodeType": "VariableDeclaration", + "scope": 252, + "src": "11001:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 246, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11001:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "10976:39:0" + }, + "returnParameters": { + "id": 251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 250, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 252, + "src": "11039:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 249, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11039:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11038:6:0" + }, + "scope": 651, + "src": "10953:92:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 253, + "nodeType": "StructuredDocumentation", + "src": "11049:347:0", + "text": " @dev Invoked by a Lock manager to expire the user's key\n and perform a refund and cancellation of the key\n @param _tokenId The key id we wish to refund to\n @param _amount The amount to refund to the key-owner\n @dev Throws if called by other than a Lock manager\n @dev Throws if _keyOwner does not have a valid key" + }, + "functionSelector": "558b71e9", + "id": 260, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "expireAndRefundFor", + "nameLocation": "11408:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 255, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "11432:8:0", + "nodeType": "VariableDeclaration", + "scope": 260, + "src": "11427:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 254, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11427:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 257, + "mutability": "mutable", + "name": "_amount", + "nameLocation": "11447:7:0", + "nodeType": "VariableDeclaration", + "scope": 260, + "src": "11442:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 256, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11442:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11426:29:0" + }, + "returnParameters": { + "id": 259, + "nodeType": "ParameterList", + "parameters": [], + "src": "11464:0:0" + }, + "scope": 651, + "src": "11399:66:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 261, + "nodeType": "StructuredDocumentation", + "src": "11469:271:0", + "text": " @dev allows the key manager to expire a given tokenId\n and send a refund to the keyOwner based on the amount of time remaining.\n @param _tokenId The id of the key to cancel.\n @notice cancel is enabled with a 10% penalty by default on all Locks." + }, + "functionSelector": "d32bfb6c", + "id": 266, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "cancelAndRefund", + "nameLocation": "11752:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 263, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "11773:8:0", + "nodeType": "VariableDeclaration", + "scope": 266, + "src": "11768:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 262, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11768:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "11767:15:0" + }, + "returnParameters": { + "id": 265, + "nodeType": "ParameterList", + "parameters": [], + "src": "11791:0:0" + }, + "scope": 651, + "src": "11743:49:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 267, + "nodeType": "StructuredDocumentation", + "src": "11796:277:0", + "text": " Allow a Lock manager to change the refund penalty.\n @dev Throws if called by other than a Lock manager\n @param _freeTrialLength The new duration of free trials for this lock\n @param _refundPenaltyBasisPoints The new refund penaly in basis-points(bps)" + }, + "functionSelector": "39f46986", + "id": 274, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "updateRefundPenalty", + "nameLocation": "12085:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 269, + "mutability": "mutable", + "name": "_freeTrialLength", + "nameLocation": "12115:16:0", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "12110:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 268, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12110:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 271, + "mutability": "mutable", + "name": "_refundPenaltyBasisPoints", + "nameLocation": "12142:25:0", + "nodeType": "VariableDeclaration", + "scope": 274, + "src": "12137:30:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 270, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12137:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12104:67:0" + }, + "returnParameters": { + "id": 273, + "nodeType": "ParameterList", + "parameters": [], + "src": "12180:0:0" + }, + "scope": 651, + "src": "12076:105:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 275, + "nodeType": "StructuredDocumentation", + "src": "12185:349:0", + "text": " @dev Determines how much of a refund a key owner would receive if they issued\n @param _tokenId the id of the token to get the refund value for.\n @notice Due to the time required to mine a tx, the actual refund amount will be lower\n than what the user reads from this call.\n @return refund the amount of tokens refunded" + }, + "functionSelector": "92ac98a5", + "id": 282, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getCancelAndRefundValue", + "nameLocation": "12546:23:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 277, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "12580:8:0", + "nodeType": "VariableDeclaration", + "scope": 282, + "src": "12575:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 276, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12575:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12569:23:0" + }, + "returnParameters": { + "id": 281, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 280, + "mutability": "mutable", + "name": "refund", + "nameLocation": "12621:6:0", + "nodeType": "VariableDeclaration", + "scope": 282, + "src": "12616:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 279, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "12616:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "12615:13:0" + }, + "scope": 651, + "src": "12537:92:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d2503485", + "id": 287, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "addLockManager", + "nameLocation": "12642:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 285, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 284, + "mutability": "mutable", + "name": "account", + "nameLocation": "12665:7:0", + "nodeType": "VariableDeclaration", + "scope": 287, + "src": "12657:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 283, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12657:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12656:17:0" + }, + "returnParameters": { + "id": 286, + "nodeType": "ParameterList", + "parameters": [], + "src": "12682:0:0" + }, + "scope": 651, + "src": "12633:50:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "aae4b8f7", + "id": 294, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isLockManager", + "nameLocation": "12696:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 290, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 289, + "mutability": "mutable", + "name": "account", + "nameLocation": "12718:7:0", + "nodeType": "VariableDeclaration", + "scope": 294, + "src": "12710:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12710:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12709:17:0" + }, + "returnParameters": { + "id": 293, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 292, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 294, + "src": "12750:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 291, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12750:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "12749:6:0" + }, + "scope": 651, + "src": "12687:69:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 295, + "nodeType": "StructuredDocumentation", + "src": "12760:112:0", + "text": " Returns the address of the `onKeyPurchaseHook` hook.\n @return hookAddress address of the hook" + }, + "functionSelector": "2d33dd5b", + "id": 300, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onKeyPurchaseHook", + "nameLocation": "12884:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 296, + "nodeType": "ParameterList", + "parameters": [], + "src": "12901:2:0" + }, + "returnParameters": { + "id": 299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 298, + "mutability": "mutable", + "name": "hookAddress", + "nameLocation": "12935:11:0", + "nodeType": "VariableDeclaration", + "scope": 300, + "src": "12927:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12927:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "12926:21:0" + }, + "scope": 651, + "src": "12875:73:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 301, + "nodeType": "StructuredDocumentation", + "src": "12952:110:0", + "text": " Returns the address of the `onKeyCancelHook` hook.\n @return hookAddress address of the hook" + }, + "functionSelector": "217751bc", + "id": 306, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onKeyCancelHook", + "nameLocation": "13074:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 302, + "nodeType": "ParameterList", + "parameters": [], + "src": "13089:2:0" + }, + "returnParameters": { + "id": 305, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 304, + "mutability": "mutable", + "name": "hookAddress", + "nameLocation": "13123:11:0", + "nodeType": "VariableDeclaration", + "scope": 306, + "src": "13115:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 303, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13115:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13114:21:0" + }, + "scope": 651, + "src": "13065:71:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 307, + "nodeType": "StructuredDocumentation", + "src": "13140:109:0", + "text": " Returns the address of the `onValidKeyHook` hook.\n @return hookAddress address of the hook" + }, + "functionSelector": "26e9ca07", + "id": 312, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onValidKeyHook", + "nameLocation": "13261:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 308, + "nodeType": "ParameterList", + "parameters": [], + "src": "13275:2:0" + }, + "returnParameters": { + "id": 311, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 310, + "mutability": "mutable", + "name": "hookAddress", + "nameLocation": "13309:11:0", + "nodeType": "VariableDeclaration", + "scope": 312, + "src": "13301:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13301:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13300:21:0" + }, + "scope": 651, + "src": "13252:70:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 313, + "nodeType": "StructuredDocumentation", + "src": "13326:109:0", + "text": " Returns the address of the `onTokenURIHook` hook.\n @return hookAddress address of the hook" + }, + "functionSelector": "7ec2a724", + "id": 318, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onTokenURIHook", + "nameLocation": "13447:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 314, + "nodeType": "ParameterList", + "parameters": [], + "src": "13461:2:0" + }, + "returnParameters": { + "id": 317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 316, + "mutability": "mutable", + "name": "hookAddress", + "nameLocation": "13495:11:0", + "nodeType": "VariableDeclaration", + "scope": 318, + "src": "13487:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 315, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13487:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13486:21:0" + }, + "scope": 651, + "src": "13438:70:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 319, + "nodeType": "StructuredDocumentation", + "src": "13512:112:0", + "text": " Returns the address of the `onKeyTransferHook` hook.\n @return hookAddress address of the hook" + }, + "functionSelector": "389f07e8", + "id": 324, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onKeyTransferHook", + "nameLocation": "13636:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 320, + "nodeType": "ParameterList", + "parameters": [], + "src": "13653:2:0" + }, + "returnParameters": { + "id": 323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 322, + "mutability": "mutable", + "name": "hookAddress", + "nameLocation": "13687:11:0", + "nodeType": "VariableDeclaration", + "scope": 324, + "src": "13679:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13679:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13678:21:0" + }, + "scope": 651, + "src": "13627:73:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 325, + "nodeType": "StructuredDocumentation", + "src": "13704:114:0", + "text": " Returns the address of the `onKeyExtendHook` hook.\n @return hookAddress the address ok the hook" + }, + "functionSelector": "c907c3ec", + "id": 330, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onKeyExtendHook", + "nameLocation": "13830:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 326, + "nodeType": "ParameterList", + "parameters": [], + "src": "13845:2:0" + }, + "returnParameters": { + "id": 329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 328, + "mutability": "mutable", + "name": "hookAddress", + "nameLocation": "13879:11:0", + "nodeType": "VariableDeclaration", + "scope": 330, + "src": "13871:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 327, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13871:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "13870:21:0" + }, + "scope": 651, + "src": "13821:71:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 331, + "nodeType": "StructuredDocumentation", + "src": "13896:113:0", + "text": " Returns the address of the `onKeyGrantHook` hook.\n @return hookAddress the address ok the hook" + }, + "functionSelector": "b129694e", + "id": 336, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onKeyGrantHook", + "nameLocation": "14021:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 332, + "nodeType": "ParameterList", + "parameters": [], + "src": "14035:2:0" + }, + "returnParameters": { + "id": 335, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 334, + "mutability": "mutable", + "name": "hookAddress", + "nameLocation": "14069:11:0", + "nodeType": "VariableDeclaration", + "scope": 336, + "src": "14061:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 333, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14061:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14060:21:0" + }, + "scope": 651, + "src": "14012:70:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "f0ba6040", + "id": 339, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "renounceLockManager", + "nameLocation": "14095:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 337, + "nodeType": "ParameterList", + "parameters": [], + "src": "14114:2:0" + }, + "returnParameters": { + "id": 338, + "nodeType": "ParameterList", + "parameters": [], + "src": "14125:0:0" + }, + "scope": 651, + "src": "14086:40:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 340, + "nodeType": "StructuredDocumentation", + "src": "14130:77:0", + "text": " @return the maximum number of key allowed for a single address" + }, + "functionSelector": "d52e4a10", + "id": 345, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "maxKeysPerAddress", + "nameLocation": "14219:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 341, + "nodeType": "ParameterList", + "parameters": [], + "src": "14236:2:0" + }, + "returnParameters": { + "id": 344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 343, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "14262:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 342, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14262:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14261:6:0" + }, + "scope": 651, + "src": "14210:58:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "11a4c03a", + "id": 350, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "expirationDuration", + "nameLocation": "14281:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 346, + "nodeType": "ParameterList", + "parameters": [], + "src": "14299:2:0" + }, + "returnParameters": { + "id": 349, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 348, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 350, + "src": "14325:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 347, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14325:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14324:9:0" + }, + "scope": 651, + "src": "14272:62:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "a375cb05", + "id": 355, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "freeTrialLength", + "nameLocation": "14347:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 351, + "nodeType": "ParameterList", + "parameters": [], + "src": "14362:2:0" + }, + "returnParameters": { + "id": 354, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 353, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 355, + "src": "14388:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 352, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14388:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14387:9:0" + }, + "scope": 651, + "src": "14338:59:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "10e56973", + "id": 360, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "keyPrice", + "nameLocation": "14410:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 356, + "nodeType": "ParameterList", + "parameters": [], + "src": "14418:2:0" + }, + "returnParameters": { + "id": 359, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 358, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "14444:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 357, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14444:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14443:9:0" + }, + "scope": 651, + "src": "14401:52:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "74b6c106", + "id": 365, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "maxNumberOfKeys", + "nameLocation": "14466:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 361, + "nodeType": "ParameterList", + "parameters": [], + "src": "14481:2:0" + }, + "returnParameters": { + "id": 364, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 363, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 365, + "src": "14507:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14507:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14506:9:0" + }, + "scope": 651, + "src": "14457:59:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "56e0d51f", + "id": 370, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "refundPenaltyBasisPoints", + "nameLocation": "14529:24:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [], + "src": "14553:2:0" + }, + "returnParameters": { + "id": 369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 368, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 370, + "src": "14579:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14579:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14578:9:0" + }, + "scope": 651, + "src": "14520:68:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "9d76ea58", + "id": 375, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenAddress", + "nameLocation": "14601:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 371, + "nodeType": "ParameterList", + "parameters": [], + "src": "14613:2:0" + }, + "returnParameters": { + "id": 374, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 373, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 375, + "src": "14639:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 372, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14639:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14638:9:0" + }, + "scope": 651, + "src": "14592:56:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "183767da", + "id": 380, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFeeBasisPoints", + "nameLocation": "14661:22:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 376, + "nodeType": "ParameterList", + "parameters": [], + "src": "14683:2:0" + }, + "returnParameters": { + "id": 379, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 378, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 380, + "src": "14709:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 377, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14709:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14708:9:0" + }, + "scope": 651, + "src": "14652:66:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "0f15023b", + "id": 385, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "unlockProtocol", + "nameLocation": "14731:14:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 381, + "nodeType": "ParameterList", + "parameters": [], + "src": "14745:2:0" + }, + "returnParameters": { + "id": 384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 383, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 385, + "src": "14771:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 382, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14771:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14770:9:0" + }, + "scope": 651, + "src": "14722:58:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4d025fed", + "id": 392, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "keyManagerOf", + "nameLocation": "14793:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 387, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 392, + "src": "14806:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14806:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "14805:6:0" + }, + "returnParameters": { + "id": 391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 390, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 392, + "src": "14835:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 389, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14835:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "14834:9:0" + }, + "scope": 651, + "src": "14784:60:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 393, + "nodeType": "StructuredDocumentation", + "src": "14922:630:0", + "text": " @notice Allows the key owner to safely share their key (parent key) by\n transferring a portion of the remaining time to a new key (child key).\n @dev Throws if key is not valid.\n @dev Throws if `_to` is the zero address\n @param _to The recipient of the shared key\n @param _tokenId the key to share\n @param _timeShared The amount of time shared\n checks if `_to` is a smart contract (code size > 0). If so, it calls\n `onERC721Received` on `_to` and throws if the return value is not\n `bytes4(keccak256('onERC721Received(address,address,uint,bytes)'))`.\n @dev Emit Transfer event" + }, + "functionSelector": "f12c6b6e", + "id": 402, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "shareKey", + "nameLocation": "15564:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 400, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 395, + "mutability": "mutable", + "name": "_to", + "nameLocation": "15581:3:0", + "nodeType": "VariableDeclaration", + "scope": 402, + "src": "15573:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 394, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15573:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 397, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "15591:8:0", + "nodeType": "VariableDeclaration", + "scope": 402, + "src": "15586:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 396, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15586:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 399, + "mutability": "mutable", + "name": "_timeShared", + "nameLocation": "15606:11:0", + "nodeType": "VariableDeclaration", + "scope": 402, + "src": "15601:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 398, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15601:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "15572:46:0" + }, + "returnParameters": { + "id": 401, + "nodeType": "ParameterList", + "parameters": [], + "src": "15627:0:0" + }, + "scope": 651, + "src": "15555:73:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 403, + "nodeType": "StructuredDocumentation", + "src": "15632:210:0", + "text": " @notice Update transfer and cancel rights for a given key\n @param _tokenId The id of the key to assign rights for\n @param _keyManager The address to assign the rights to for the given key" + }, + "functionSelector": "b11d7ec1", + "id": 410, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setKeyManagerOf", + "nameLocation": "15854:15:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 405, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "15875:8:0", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "15870:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 404, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "15870:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 407, + "mutability": "mutable", + "name": "_keyManager", + "nameLocation": "15893:11:0", + "nodeType": "VariableDeclaration", + "scope": 410, + "src": "15885:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 406, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15885:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "15869:36:0" + }, + "returnParameters": { + "id": 409, + "nodeType": "ParameterList", + "parameters": [], + "src": "15914:0:0" + }, + "scope": 651, + "src": "15845:70:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 411, + "nodeType": "StructuredDocumentation", + "src": "15919:166:0", + "text": " Check if a certain key is valid\n @param _tokenId the id of the key to check validity\n @notice this makes use of the onValidKeyHook if it is set" + }, + "functionSelector": "a98d3623", + "id": 418, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isValidKey", + "nameLocation": "16097:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 414, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 413, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "16113:8:0", + "nodeType": "VariableDeclaration", + "scope": 418, + "src": "16108:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 412, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16108:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16107:15:0" + }, + "returnParameters": { + "id": 417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 416, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 418, + "src": "16146:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 415, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16146:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16145:6:0" + }, + "scope": 651, + "src": "16088:64:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 419, + "nodeType": "StructuredDocumentation", + "src": "16156:230:0", + "text": " Returns the number of keys owned by `_keyOwner` (expired or not)\n @param _keyOwner address for which we are retrieving the total number of keys\n @return numberOfKeys total number of keys owned by the address" + }, + "functionSelector": "812eecd4", + "id": 426, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalKeys", + "nameLocation": "16398:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 421, + "mutability": "mutable", + "name": "_keyOwner", + "nameLocation": "16421:9:0", + "nodeType": "VariableDeclaration", + "scope": 426, + "src": "16413:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 420, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16413:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "16407:27:0" + }, + "returnParameters": { + "id": 425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 424, + "mutability": "mutable", + "name": "numberOfKeys", + "nameLocation": "16463:12:0", + "nodeType": "VariableDeclaration", + "scope": 426, + "src": "16458:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 423, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "16458:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "16457:19:0" + }, + "scope": 651, + "src": "16389:88:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 427, + "nodeType": "StructuredDocumentation", + "src": "16481:72:0", + "text": "@notice A descriptive name for a collection of NFTs in this contract" + }, + "functionSelector": "06fdde03", + "id": 432, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nameLocation": "16565:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [], + "src": "16569:2:0" + }, + "returnParameters": { + "id": 431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "mutability": "mutable", + "name": "_name", + "nameLocation": "16609:5:0", + "nodeType": "VariableDeclaration", + "scope": 432, + "src": "16595:19:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 429, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "16595:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + } + ], + "src": "16594:21:0" + }, + "scope": 651, + "src": "16556:60:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 433, + "nodeType": "StructuredDocumentation", + "src": "16694:19:0", + "text": "From ERC165.sol" + }, + "functionSelector": "01ffc9a7", + "id": 440, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nameLocation": "16725:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 436, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 435, + "mutability": "mutable", + "name": "interfaceId", + "nameLocation": "16750:11:0", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "16743:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 434, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "16743:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "visibility": "internal" + } + ], + "src": "16742:20:0" + }, + "returnParameters": { + "id": 439, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 438, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 440, + "src": "16786:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 437, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "16786:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "16785:6:0" + }, + "scope": 651, + "src": "16716:76:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 441, + "nodeType": "StructuredDocumentation", + "src": "16889:183:0", + "text": " In the specific case of a Lock, `balanceOf` returns only the tokens with a valid expiration timerange\n @return balance The number of valid keys owned by `_keyOwner`" + }, + "functionSelector": "70a08231", + "id": 448, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nameLocation": "17084:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 443, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "17102:6:0", + "nodeType": "VariableDeclaration", + "scope": 448, + "src": "17094:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17094:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17093:16:0" + }, + "returnParameters": { + "id": 447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 446, + "mutability": "mutable", + "name": "balance", + "nameLocation": "17141:7:0", + "nodeType": "VariableDeclaration", + "scope": 448, + "src": "17133:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 445, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17133:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17132:17:0" + }, + "scope": 651, + "src": "17075:75:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 449, + "nodeType": "StructuredDocumentation", + "src": "17154:72:0", + "text": " @dev Returns the owner of the NFT specified by `tokenId`." + }, + "functionSelector": "6352211e", + "id": 456, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nameLocation": "17238:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 451, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "17254:7:0", + "nodeType": "VariableDeclaration", + "scope": 456, + "src": "17246:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17246:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17245:17:0" + }, + "returnParameters": { + "id": 455, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 454, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "17294:6:0", + "nodeType": "VariableDeclaration", + "scope": 456, + "src": "17286:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 453, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17286:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "17285:16:0" + }, + "scope": 651, + "src": "17229:73:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 457, + "nodeType": "StructuredDocumentation", + "src": "17306:339:0", + "text": " @dev Transfers a specific NFT (`tokenId`) from one account (`from`) to\n another (`to`).\n Requirements:\n - `from`, `to` cannot be zero.\n - `tokenId` must be owned by `from`.\n - If the caller is not `from`, it must be have been allowed to move this\n NFT by either `approve` or `setApprovalForAll`." + }, + "functionSelector": "42842e0e", + "id": 466, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "17657:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 464, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 459, + "mutability": "mutable", + "name": "from", + "nameLocation": "17682:4:0", + "nodeType": "VariableDeclaration", + "scope": 466, + "src": "17674:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17674:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 461, + "mutability": "mutable", + "name": "to", + "nameLocation": "17696:2:0", + "nodeType": "VariableDeclaration", + "scope": 466, + "src": "17688:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17688:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "17708:7:0", + "nodeType": "VariableDeclaration", + "scope": 466, + "src": "17700:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17700:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "17673:43:0" + }, + "returnParameters": { + "id": 465, + "nodeType": "ParameterList", + "parameters": [], + "src": "17725:0:0" + }, + "scope": 651, + "src": "17648:78:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 467, + "nodeType": "StructuredDocumentation", + "src": "17730:441:0", + "text": " an ERC721-like function to transfer a token from one account to another.\n @param from the owner of token to transfer\n @param to the address that will receive the token\n @param tokenId the id of the token\n @dev Requirements: if the caller is not `from`, it must be approved to move this token by\n either `approve` or `setApprovalForAll`.\n The key manager will be reset to address zero after the transfer" + }, + "functionSelector": "23b872dd", + "id": 476, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nameLocation": "18183:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 474, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 469, + "mutability": "mutable", + "name": "from", + "nameLocation": "18204:4:0", + "nodeType": "VariableDeclaration", + "scope": 476, + "src": "18196:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 468, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18196:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 471, + "mutability": "mutable", + "name": "to", + "nameLocation": "18218:2:0", + "nodeType": "VariableDeclaration", + "scope": 476, + "src": "18210:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18210:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 473, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "18230:7:0", + "nodeType": "VariableDeclaration", + "scope": 476, + "src": "18222:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 472, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "18222:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18195:43:0" + }, + "returnParameters": { + "id": 475, + "nodeType": "ParameterList", + "parameters": [], + "src": "18247:0:0" + }, + "scope": 651, + "src": "18174:74:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 477, + "nodeType": "StructuredDocumentation", + "src": "18252:537:0", + "text": " Lending a key allows you to transfer the token while retaining the\n ownerships right by setting yourself as a key manager first.\n @param from the owner of token to transfer\n @param to the address that will receive the token\n @param tokenId the id of the token\n @notice This function can only be called by 1) the key owner when no key manager is set or 2) the key manager.\n After calling the function, the `_recipent` will be the new owner, and the sender of the tx\n will become the key manager." + }, + "functionSelector": "0c2db8d1", + "id": 486, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "lendKey", + "nameLocation": "18801:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 484, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 479, + "mutability": "mutable", + "name": "from", + "nameLocation": "18817:4:0", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "18809:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 478, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18809:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 481, + "mutability": "mutable", + "name": "to", + "nameLocation": "18831:2:0", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "18823:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 480, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "18823:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 483, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "18840:7:0", + "nodeType": "VariableDeclaration", + "scope": 486, + "src": "18835:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 482, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "18835:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "18808:40:0" + }, + "returnParameters": { + "id": 485, + "nodeType": "ParameterList", + "parameters": [], + "src": "18857:0:0" + }, + "scope": 651, + "src": "18792:66:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 487, + "nodeType": "StructuredDocumentation", + "src": "18862:280:0", + "text": " Unlend is called when you have lent a key and want to claim its full ownership back.\n @param _recipient the address that will receive the token ownership\n @param _tokenId the id of the token\n @dev Only the key manager of the token can call this function" + }, + "functionSelector": "407dc589", + "id": 494, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "unlendKey", + "nameLocation": "19154:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 489, + "mutability": "mutable", + "name": "_recipient", + "nameLocation": "19172:10:0", + "nodeType": "VariableDeclaration", + "scope": 494, + "src": "19164:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 488, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19164:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "19189:8:0", + "nodeType": "VariableDeclaration", + "scope": 494, + "src": "19184:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 490, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "19184:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19163:35:0" + }, + "returnParameters": { + "id": 493, + "nodeType": "ParameterList", + "parameters": [], + "src": "19207:0:0" + }, + "scope": 651, + "src": "19145:63:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "095ea7b3", + "id": 501, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nameLocation": "19221:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 499, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 496, + "mutability": "mutable", + "name": "to", + "nameLocation": "19237:2:0", + "nodeType": "VariableDeclaration", + "scope": 501, + "src": "19229:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19229:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 498, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "19249:7:0", + "nodeType": "VariableDeclaration", + "scope": 501, + "src": "19241:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 497, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19241:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19228:29:0" + }, + "returnParameters": { + "id": 500, + "nodeType": "ParameterList", + "parameters": [], + "src": "19266:0:0" + }, + "scope": 651, + "src": "19212:55:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 502, + "nodeType": "StructuredDocumentation", + "src": "19271:271:0", + "text": " @notice Get the approved address for a single NFT\n @dev Throws if `_tokenId` is not a valid NFT.\n @param _tokenId The NFT to find the approved address for\n @return operator The approved address for this NFT, or the zero address if there is none" + }, + "functionSelector": "081812fc", + "id": 509, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nameLocation": "19554:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 505, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 504, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "19579:8:0", + "nodeType": "VariableDeclaration", + "scope": 509, + "src": "19571:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 503, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "19571:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "19565:26:0" + }, + "returnParameters": { + "id": 508, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 507, + "mutability": "mutable", + "name": "operator", + "nameLocation": "19623:8:0", + "nodeType": "VariableDeclaration", + "scope": 509, + "src": "19615:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 506, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19615:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "19614:18:0" + }, + "scope": 651, + "src": "19545:88:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 510, + "nodeType": "StructuredDocumentation", + "src": "19637:329:0", + "text": " @dev Sets or unsets the approval of a given operator\n An operator is allowed to transfer all tokens of the sender on their behalf\n @param _operator operator address to set the approval\n @param _approved representing the status of the approval to be set\n @notice disabled when transfers are disabled" + }, + "functionSelector": "a22cb465", + "id": 517, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nameLocation": "19978:17:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 512, + "mutability": "mutable", + "name": "_operator", + "nameLocation": "20004:9:0", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "19996:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "19996:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 514, + "mutability": "mutable", + "name": "_approved", + "nameLocation": "20020:9:0", + "nodeType": "VariableDeclaration", + "scope": 517, + "src": "20015:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 513, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "20015:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "19995:35:0" + }, + "returnParameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [], + "src": "20039:0:0" + }, + "scope": 651, + "src": "19969:71:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 518, + "nodeType": "StructuredDocumentation", + "src": "20044:307:0", + "text": " @dev Tells whether an operator is approved by a given keyManager\n @param _owner owner address which you want to query the approval of\n @param _operator operator address which you want to query the approval of\n @return bool whether the given operator is approved by the given owner" + }, + "functionSelector": "e985e9c5", + "id": 527, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nameLocation": "20363:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 523, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 520, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "20393:6:0", + "nodeType": "VariableDeclaration", + "scope": 527, + "src": "20385:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 519, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20385:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 522, + "mutability": "mutable", + "name": "_operator", + "nameLocation": "20413:9:0", + "nodeType": "VariableDeclaration", + "scope": 527, + "src": "20405:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20405:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "20379:47:0" + }, + "returnParameters": { + "id": 526, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 525, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 527, + "src": "20450:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 524, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "20450:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "20449:6:0" + }, + "scope": 651, + "src": "20354:102:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "b88d4fde", + "id": 538, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nameLocation": "20469:16:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 536, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 529, + "mutability": "mutable", + "name": "from", + "nameLocation": "20499:4:0", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "20491:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20491:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 531, + "mutability": "mutable", + "name": "to", + "nameLocation": "20517:2:0", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "20509:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 530, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20509:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 533, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "20533:7:0", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "20525:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 532, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20525:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 535, + "mutability": "mutable", + "name": "data", + "nameLocation": "20561:4:0", + "nodeType": "VariableDeclaration", + "scope": 538, + "src": "20546:19:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 534, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "20546:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "20485:84:0" + }, + "returnParameters": { + "id": 537, + "nodeType": "ParameterList", + "parameters": [], + "src": "20578:0:0" + }, + "scope": 651, + "src": "20460:119:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 539, + "nodeType": "StructuredDocumentation", + "src": "20583:143:0", + "text": " Returns the total number of keys, including non-valid ones\n @return _totalKeysCreated the total number of keys, valid or not" + }, + "functionSelector": "18160ddd", + "id": 544, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nameLocation": "20738:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 540, + "nodeType": "ParameterList", + "parameters": [], + "src": "20749:2:0" + }, + "returnParameters": { + "id": 543, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 542, + "mutability": "mutable", + "name": "_totalKeysCreated", + "nameLocation": "20783:17:0", + "nodeType": "VariableDeclaration", + "scope": 544, + "src": "20775:25:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 541, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20775:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20774:27:0" + }, + "scope": 651, + "src": "20729:73:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2f745c59", + "id": 553, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nameLocation": "20815:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 549, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 546, + "mutability": "mutable", + "name": "_owner", + "nameLocation": "20848:6:0", + "nodeType": "VariableDeclaration", + "scope": 553, + "src": "20840:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 545, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "20840:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 548, + "mutability": "mutable", + "name": "index", + "nameLocation": "20868:5:0", + "nodeType": "VariableDeclaration", + "scope": 553, + "src": "20860:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 547, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20860:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20834:43:0" + }, + "returnParameters": { + "id": 552, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 551, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "20909:7:0", + "nodeType": "VariableDeclaration", + "scope": 553, + "src": "20901:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 550, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20901:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20900:17:0" + }, + "scope": 651, + "src": "20806:112:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "4f6ccce7", + "id": 560, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nameLocation": "20931:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 556, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 555, + "mutability": "mutable", + "name": "index", + "nameLocation": "20952:5:0", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "20944:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 554, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20944:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20943:15:0" + }, + "returnParameters": { + "id": 559, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 558, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 560, + "src": "20982:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "20982:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "20981:9:0" + }, + "scope": 651, + "src": "20922:69:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 561, + "nodeType": "StructuredDocumentation", + "src": "20995:62:0", + "text": " Innherited from Open Zeppelin AccessControl.sol" + }, + "functionSelector": "248a9ca3", + "id": 568, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getRoleAdmin", + "nameLocation": "21069:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 564, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 563, + "mutability": "mutable", + "name": "role", + "nameLocation": "21090:4:0", + "nodeType": "VariableDeclaration", + "scope": 568, + "src": "21082:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 562, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21082:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "21081:14:0" + }, + "returnParameters": { + "id": 567, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 566, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 568, + "src": "21119:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 565, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21119:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + } + ], + "src": "21118:9:0" + }, + "scope": 651, + "src": "21060:68:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2f2ff15d", + "id": 575, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "grantRole", + "nameLocation": "21141:9:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 573, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 570, + "mutability": "mutable", + "name": "role", + "nameLocation": "21159:4:0", + "nodeType": "VariableDeclaration", + "scope": 575, + "src": "21151:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 569, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21151:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 572, + "mutability": "mutable", + "name": "account", + "nameLocation": "21173:7:0", + "nodeType": "VariableDeclaration", + "scope": 575, + "src": "21165:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 571, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21165:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21150:31:0" + }, + "returnParameters": { + "id": 574, + "nodeType": "ParameterList", + "parameters": [], + "src": "21190:0:0" + }, + "scope": 651, + "src": "21132:59:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "d547741f", + "id": 582, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "revokeRole", + "nameLocation": "21204:10:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 577, + "mutability": "mutable", + "name": "role", + "nameLocation": "21223:4:0", + "nodeType": "VariableDeclaration", + "scope": 582, + "src": "21215:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 576, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21215:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 579, + "mutability": "mutable", + "name": "account", + "nameLocation": "21237:7:0", + "nodeType": "VariableDeclaration", + "scope": 582, + "src": "21229:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21229:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21214:31:0" + }, + "returnParameters": { + "id": 581, + "nodeType": "ParameterList", + "parameters": [], + "src": "21254:0:0" + }, + "scope": 651, + "src": "21195:60:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "36568abe", + "id": 589, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "renounceRole", + "nameLocation": "21268:12:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 587, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 584, + "mutability": "mutable", + "name": "role", + "nameLocation": "21289:4:0", + "nodeType": "VariableDeclaration", + "scope": 589, + "src": "21281:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 583, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21281:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 586, + "mutability": "mutable", + "name": "account", + "nameLocation": "21303:7:0", + "nodeType": "VariableDeclaration", + "scope": 589, + "src": "21295:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 585, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21295:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21280:31:0" + }, + "returnParameters": { + "id": 588, + "nodeType": "ParameterList", + "parameters": [], + "src": "21320:0:0" + }, + "scope": 651, + "src": "21259:62:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "91d14854", + "id": 598, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "hasRole", + "nameLocation": "21334:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 594, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 591, + "mutability": "mutable", + "name": "role", + "nameLocation": "21350:4:0", + "nodeType": "VariableDeclaration", + "scope": 598, + "src": "21342:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 590, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "21342:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 593, + "mutability": "mutable", + "name": "account", + "nameLocation": "21364:7:0", + "nodeType": "VariableDeclaration", + "scope": 598, + "src": "21356:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 592, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21356:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21341:31:0" + }, + "returnParameters": { + "id": 597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 596, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 598, + "src": "21396:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 595, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21396:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "21395:6:0" + }, + "scope": 651, + "src": "21325:77:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 599, + "nodeType": "StructuredDocumentation", + "src": "21406:362:0", + "text": "`owner()` is provided as an helper to mimick the `Ownable` contract ABI.\n The `Ownable` logic is used by many 3rd party services to determine\n contract ownership - e.g. who is allowed to edit metadata on Opensea.\n @notice This logic is NOT used internally by the Unlock Protocol and is made\n available only as a convenience helper." + }, + "functionSelector": "8da5cb5b", + "id": 604, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "owner", + "nameLocation": "21780:5:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 600, + "nodeType": "ParameterList", + "parameters": [], + "src": "21785:2:0" + }, + "returnParameters": { + "id": 603, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 602, + "mutability": "mutable", + "name": "owner", + "nameLocation": "21819:5:0", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "21811:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 601, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21811:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21810:15:0" + }, + "scope": 651, + "src": "21771:55:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "13af4035", + "id": 609, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setOwner", + "nameLocation": "21839:8:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 607, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 606, + "mutability": "mutable", + "name": "account", + "nameLocation": "21856:7:0", + "nodeType": "VariableDeclaration", + "scope": 609, + "src": "21848:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 605, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21848:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21847:17:0" + }, + "returnParameters": { + "id": 608, + "nodeType": "ParameterList", + "parameters": [], + "src": "21873:0:0" + }, + "scope": 651, + "src": "21830:44:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "2f54bf6e", + "id": 616, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isOwner", + "nameLocation": "21887:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 612, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 611, + "mutability": "mutable", + "name": "account", + "nameLocation": "21903:7:0", + "nodeType": "VariableDeclaration", + "scope": 616, + "src": "21895:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 610, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "21895:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "21894:17:0" + }, + "returnParameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 614, + "mutability": "mutable", + "name": "isOwner", + "nameLocation": "21940:7:0", + "nodeType": "VariableDeclaration", + "scope": 616, + "src": "21935:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 613, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "21935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "21934:14:0" + }, + "scope": 651, + "src": "21878:71:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 617, + "nodeType": "StructuredDocumentation", + "src": "21953:394:0", + "text": " Migrate data from the previous single owner => key mapping to\n the new data structure w multiple tokens.\n @param _calldata an ABI-encoded representation of the params (v10: the number of records to migrate as `uint`)\n @dev when all record schemas are sucessfully upgraded, this function will update the `schemaVersion`\n variable to the latest/current lock version" + }, + "functionSelector": "8932a90d", + "id": 622, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "migrate", + "nameLocation": "22359:7:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 620, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 619, + "mutability": "mutable", + "name": "_calldata", + "nameLocation": "22382:9:0", + "nodeType": "VariableDeclaration", + "scope": 622, + "src": "22367:24:0", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 618, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "22367:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "22366:26:0" + }, + "returnParameters": { + "id": 621, + "nodeType": "ParameterList", + "parameters": [], + "src": "22401:0:0" + }, + "scope": 651, + "src": "22350:52:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 623, + "nodeType": "StructuredDocumentation", + "src": "22406:274:0", + "text": " Returns the version number of the data schema currently used by the lock\n @notice if this is different from `publicLockVersion`, then the ability to purchase, grant\n or extend keys is disabled.\n @dev will return 0 if no ;igration has ever been run" + }, + "functionSelector": "4e2ce6d3", + "id": 628, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "schemaVersion", + "nameLocation": "22692:13:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 624, + "nodeType": "ParameterList", + "parameters": [], + "src": "22705:2:0" + }, + "returnParameters": { + "id": 627, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 626, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 628, + "src": "22731:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 625, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "22731:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "22730:6:0" + }, + "scope": 651, + "src": "22683:54:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 629, + "nodeType": "StructuredDocumentation", + "src": "22741:97:0", + "text": " Set the schema version to the latest\n @notice only lock manager call call this" + }, + "functionSelector": "f32e8b24", + "id": 632, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "updateSchemaVersion", + "nameLocation": "22850:19:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 630, + "nodeType": "ParameterList", + "parameters": [], + "src": "22869:2:0" + }, + "returnParameters": { + "id": 631, + "nodeType": "ParameterList", + "parameters": [], + "src": "22880:0:0" + }, + "scope": 651, + "src": "22841:40:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 633, + "nodeType": "StructuredDocumentation", + "src": "22885:210:0", + "text": " Renew a given token\n @notice only works for non-free, expiring, ERC20 locks\n @param _tokenId the ID fo the token to renew\n @param _referrer the address of the person to be granted UDT" + }, + "functionSelector": "8505fe95", + "id": 640, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "renewMembershipFor", + "nameLocation": "23107:18:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 635, + "mutability": "mutable", + "name": "_tokenId", + "nameLocation": "23131:8:0", + "nodeType": "VariableDeclaration", + "scope": 640, + "src": "23126:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 634, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "23126:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 637, + "mutability": "mutable", + "name": "_referrer", + "nameLocation": "23149:9:0", + "nodeType": "VariableDeclaration", + "scope": 640, + "src": "23141:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 636, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23141:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23125:34:0" + }, + "returnParameters": { + "id": 639, + "nodeType": "ParameterList", + "parameters": [], + "src": "23168:0:0" + }, + "scope": 651, + "src": "23098:71:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "documentation": { + "id": 641, + "nodeType": "StructuredDocumentation", + "src": "23173:505:0", + "text": " @dev helper to check if a key is currently renewable\n it will revert if the pricing or duration of the lock have been modified\n unfavorably since the key was bought(price increase or duration decrease).\n It will also revert if a lock is not renewable or if the key is not ready for renewal yet\n (at least 90% expired).\n @param tokenId the id of the token to check\n @param referrer the address where to send the referrer fee\n @return true if the terms has changed" + }, + "functionSelector": "50878a47", + "id": 650, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isRenewable", + "nameLocation": "23690:11:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 643, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "23715:7:0", + "nodeType": "VariableDeclaration", + "scope": 650, + "src": "23707:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 642, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "23707:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 645, + "mutability": "mutable", + "name": "referrer", + "nameLocation": "23736:8:0", + "nodeType": "VariableDeclaration", + "scope": 650, + "src": "23728:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "23728:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "23701:47:0" + }, + "returnParameters": { + "id": 649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 648, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 650, + "src": "23772:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 647, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "23772:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "visibility": "internal" + } + ], + "src": "23771:6:0" + }, + "scope": 651, + "src": "23681:97:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 652, + "src": "144:23636:0", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "32:23749:0" + }, + "id": 0 + }, + "contracts/UnlockPrimeHookWithRecipientAndFallback.sol": { + "ast": { + "absolutePath": "contracts/UnlockPrimeHookWithRecipientAndFallback.sol", + "exportedSymbols": { + "IPublicLockV13": [ + 651 + ], + "IUniswapOracleV3": [ + 694 + ], + "UnlockPrimeHookWithRecipientAndFallback": [ + 1140 + ] + }, + "id": 1141, + "license": "UNLICENSED", + "nodeType": "SourceUnit", + "nodes": [ + { + "absolutePath": "@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol", + "file": "@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol", + "id": 653, + "nameLocation": "-1:-1:-1", + "nodeType": "ImportDirective", + "scope": 1141, + "sourceUnit": 652, + "src": "0:71:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "id": 654, + "literals": [ + "solidity", + "^", + "0.8", + ".27" + ], + "nodeType": "PragmaDirective", + "src": "112:24:1" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "IUniswapOracleV3", + "contractDependencies": [], + "contractKind": "interface", + "fullyImplemented": false, + "id": 694, + "linearizedBaseContracts": [ + 694 + ], + "name": "IUniswapOracleV3", + "nameLocation": "224:16:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "functionSelector": "b4d1d795", + "id": 659, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "PERIOD", + "nameLocation": "256:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 655, + "nodeType": "ParameterList", + "parameters": [], + "src": "262:2:1" + }, + "returnParameters": { + "id": 658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 657, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 659, + "src": "283:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 656, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "283:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "282:9:1" + }, + "scope": 694, + "src": "247:45:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c45a0155", + "id": 664, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "factory", + "nameLocation": "307:7:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 660, + "nodeType": "ParameterList", + "parameters": [], + "src": "314:2:1" + }, + "returnParameters": { + "id": 663, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 662, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 664, + "src": "335:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 661, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "335:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "334:9:1" + }, + "scope": 694, + "src": "298:46:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c640752d", + "id": 671, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "update", + "nameLocation": "359:6:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 669, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 666, + "mutability": "mutable", + "name": "_tokenIn", + "nameLocation": "374:8:1", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "366:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 665, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "366:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 668, + "mutability": "mutable", + "name": "_tokenOut", + "nameLocation": "392:9:1", + "nodeType": "VariableDeclaration", + "scope": 671, + "src": "384:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 667, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "384:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "365:37:1" + }, + "returnParameters": { + "id": 670, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:0:1" + }, + "scope": 694, + "src": "350:62:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "8c86f1e4", + "id": 682, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "consult", + "nameLocation": "427:7:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 673, + "mutability": "mutable", + "name": "_tokenIn", + "nameLocation": "452:8:1", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "444:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 672, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "444:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 675, + "mutability": "mutable", + "name": "_amountIn", + "nameLocation": "478:9:1", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "470:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "470:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 677, + "mutability": "mutable", + "name": "_tokenOut", + "nameLocation": "505:9:1", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "497:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "497:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "434:86:1" + }, + "returnParameters": { + "id": 681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 680, + "mutability": "mutable", + "name": "_amountOut", + "nameLocation": "552:10:1", + "nodeType": "VariableDeclaration", + "scope": 682, + "src": "544:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 679, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "544:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "543:20:1" + }, + "scope": 694, + "src": "418:146:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "functionSelector": "c1e553e7", + "id": 693, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "updateAndConsult", + "nameLocation": "579:16:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 689, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 684, + "mutability": "mutable", + "name": "_tokenIn", + "nameLocation": "613:8:1", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "605:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 683, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "605:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 686, + "mutability": "mutable", + "name": "_amountIn", + "nameLocation": "639:9:1", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "631:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 685, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "631:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 688, + "mutability": "mutable", + "name": "_tokenOut", + "nameLocation": "666:9:1", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "658:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 687, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "658:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "595:86:1" + }, + "returnParameters": { + "id": 692, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 691, + "mutability": "mutable", + "name": "_amountOut", + "nameLocation": "708:10:1", + "nodeType": "VariableDeclaration", + "scope": 693, + "src": "700:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 690, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "700:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "699:20:1" + }, + "scope": 694, + "src": "570:150:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1141, + "src": "214:508:1", + "usedErrors": [], + "usedEvents": [] + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "UnlockPrimeHookWithRecipientAndFallback", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 1140, + "linearizedBaseContracts": [ + 1140 + ], + "name": "UnlockPrimeHookWithRecipientAndFallback", + "nameLocation": "733:39:1", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "db7d7f8d", + "id": 696, + "mutability": "mutable", + "name": "unlockPrime", + "nameLocation": "794:11:1", + "nodeType": "VariableDeclaration", + "scope": 1140, + "src": "779:26:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 695, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "779:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "7dc0d1d0", + "id": 698, + "mutability": "mutable", + "name": "oracle", + "nameLocation": "826:6:1", + "nodeType": "VariableDeclaration", + "scope": 1140, + "src": "811:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 697, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "811:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "3fc8cef3", + "id": 700, + "mutability": "mutable", + "name": "weth", + "nameLocation": "853:4:1", + "nodeType": "VariableDeclaration", + "scope": 1140, + "src": "838:19:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "838:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "3436247b", + "id": 706, + "mutability": "mutable", + "name": "refunds", + "nameLocation": "898:7:1", + "nodeType": "VariableDeclaration", + "scope": 1140, + "src": "863:42:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2])" + }, + "typeName": { + "id": 705, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 701, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "871:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "863:27:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2])" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "baseType": { + "id": 702, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "882:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 704, + "length": { + "hexValue": "32", + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "887:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "882:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "eventSelector": "867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5", + "id": 710, + "name": "UnlockPrimeSet", + "nameLocation": "936:14:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 708, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 710, + "src": "951:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 707, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "951:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "950:9:1" + }, + "src": "930:30:1" + }, + { + "anonymous": false, + "eventSelector": "3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa", + "id": 714, + "name": "OracleSet", + "nameLocation": "971:9:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 713, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 712, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 714, + "src": "981:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 711, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "981:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "980:9:1" + }, + "src": "965:25:1" + }, + { + "anonymous": false, + "eventSelector": "13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf9", + "id": 718, + "name": "WethSet", + "nameLocation": "1001:7:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 717, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 716, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 718, + "src": "1009:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 715, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1009:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1008:9:1" + }, + "src": "995:23:1" + }, + { + "anonymous": false, + "eventSelector": "a1d590fd2e594a4a50983c420b530fcf5ffe210e5203b51d6c022cb0d9ac4f80", + "id": 726, + "name": "RefundSet", + "nameLocation": "1029:9:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 725, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 720, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 726, + "src": "1039:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 719, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1039:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 722, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 726, + "src": "1048:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 721, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1048:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 724, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 726, + "src": "1057:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 723, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1057:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1038:27:1" + }, + "src": "1023:43:1" + }, + { + "anonymous": false, + "eventSelector": "1fe70b87853839959e74387a76c2713282f77a4a0656bf8689058a0eea2891e0", + "id": 732, + "name": "RefundPaid", + "nameLocation": "1077:10:1", + "nodeType": "EventDefinition", + "parameters": { + "id": 731, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 728, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 732, + "src": "1088:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 727, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1088:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 730, + "indexed": false, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 732, + "src": "1097:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 729, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1097:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "1087:18:1" + }, + "src": "1071:35:1" + }, + { + "body": { + "id": 747, + "nodeType": "Block", + "src": "1178:57:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 742, + "name": "_unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "1199:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 743, + "name": "_oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 736, + "src": "1213:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 744, + "name": "_weth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 738, + "src": "1222:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 741, + "name": "initialize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 794, + "src": "1188:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address,address)" + } + }, + "id": 745, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1188:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 746, + "nodeType": "ExpressionStatement", + "src": "1188:40:1" + } + ] + }, + "id": 748, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 739, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 734, + "mutability": "mutable", + "name": "_unlockPrime", + "nameLocation": "1132:12:1", + "nodeType": "VariableDeclaration", + "scope": 748, + "src": "1124:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 733, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1124:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 736, + "mutability": "mutable", + "name": "_oracle", + "nameLocation": "1154:7:1", + "nodeType": "VariableDeclaration", + "scope": 748, + "src": "1146:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 735, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1146:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 738, + "mutability": "mutable", + "name": "_weth", + "nameLocation": "1171:5:1", + "nodeType": "VariableDeclaration", + "scope": 748, + "src": "1163:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 737, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1163:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1123:54:1" + }, + "returnParameters": { + "id": 740, + "nodeType": "ParameterList", + "parameters": [], + "src": "1178:0:1" + }, + "scope": 1140, + "src": "1112:123:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 793, + "nodeType": "Block", + "src": "1352:290:1", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 757, + "name": "unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "1366:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "arguments": [ + { + "hexValue": "30", + "id": 760, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1389:1:1", + "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": 759, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1381:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 758, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1381:7:1", + "typeDescriptions": {} + } + }, + "id": 761, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1381:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1366:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 768, + "nodeType": "IfStatement", + "src": "1362:85:1", + "trueBody": { + "id": 767, + "nodeType": "Block", + "src": "1393:54:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "416c726561647920696e697469616c697a6564", + "id": 764, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1414:21:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0", + "typeString": "literal_string \"Already initialized\"" + }, + "value": "Already initialized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0", + "typeString": "literal_string \"Already initialized\"" + } + ], + "id": 763, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "1407:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 765, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1407:29:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 766, + "nodeType": "ExpressionStatement", + "src": "1407:29:1" + } + ] + } + }, + { + "expression": { + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 769, + "name": "unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "1456:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 770, + "name": "_unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 750, + "src": "1470:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1456:26:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 772, + "nodeType": "ExpressionStatement", + "src": "1456:26:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 774, + "name": "_unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 750, + "src": "1512:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 773, + "name": "UnlockPrimeSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "1497:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1497:28:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 776, + "nodeType": "EmitStatement", + "src": "1492:33:1" + }, + { + "expression": { + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 777, + "name": "oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 698, + "src": "1535:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 778, + "name": "_oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 752, + "src": "1544:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1535:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 780, + "nodeType": "ExpressionStatement", + "src": "1535:16:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 782, + "name": "_oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 752, + "src": "1576:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 781, + "name": "OracleSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "1566:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1566:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 784, + "nodeType": "EmitStatement", + "src": "1561:23:1" + }, + { + "expression": { + "id": 787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 785, + "name": "weth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "1594:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 786, + "name": "_weth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 754, + "src": "1601:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1594:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 788, + "nodeType": "ExpressionStatement", + "src": "1594:12:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 790, + "name": "_weth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 754, + "src": "1629:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 789, + "name": "WethSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 718, + "src": "1621:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1621:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 792, + "nodeType": "EmitStatement", + "src": "1616:19:1" + } + ] + }, + "functionSelector": "c0c53b8b", + "id": 794, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "initialize", + "nameLocation": "1250:10:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 755, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 750, + "mutability": "mutable", + "name": "_unlockPrime", + "nameLocation": "1278:12:1", + "nodeType": "VariableDeclaration", + "scope": 794, + "src": "1270:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 749, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1270:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 752, + "mutability": "mutable", + "name": "_oracle", + "nameLocation": "1308:7:1", + "nodeType": "VariableDeclaration", + "scope": 794, + "src": "1300:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 751, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1300:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 754, + "mutability": "mutable", + "name": "_weth", + "nameLocation": "1333:5:1", + "nodeType": "VariableDeclaration", + "scope": 794, + "src": "1325:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 753, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1325:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1260:84:1" + }, + "returnParameters": { + "id": 756, + "nodeType": "ParameterList", + "parameters": [], + "src": "1352:0:1" + }, + "scope": 1140, + "src": "1241:401:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 821, + "nodeType": "Block", + "src": "1768:218:1", + "statements": [ + { + "condition": { + "id": 806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1782:54:1", + "subExpression": { + "arguments": [ + { + "expression": { + "id": 803, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1825:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 804, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1829:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "1825:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 800, + "name": "unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "1798:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 799, + "name": "IPublicLockV13", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "1783:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IPublicLockV13_$651_$", + "typeString": "type(contract IPublicLockV13)" + } + }, + "id": 801, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1783:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "1811:13:1", + "memberName": "isLockManager", + "nodeType": "MemberAccess", + "referencedDeclaration": 294, + "src": "1783:41:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1783:53:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 812, + "nodeType": "IfStatement", + "src": "1778:123:1", + "trueBody": { + "id": 811, + "nodeType": "Block", + "src": "1838:63:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "43616c6c6572206973206e6f742061206c6f636b206d616e61676572", + "id": 808, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1859:30:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d", + "typeString": "literal_string \"Caller is not a lock manager\"" + }, + "value": "Caller is not a lock manager" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d", + "typeString": "literal_string \"Caller is not a lock manager\"" + } + ], + "id": 807, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "1852:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1852:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 810, + "nodeType": "ExpressionStatement", + "src": "1852:38:1" + } + ] + } + }, + { + "expression": { + "id": 815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 813, + "name": "unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "1910:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 814, + "name": "_unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "1924:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1910:26:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 816, + "nodeType": "ExpressionStatement", + "src": "1910:26:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 818, + "name": "_unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 796, + "src": "1966:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 817, + "name": "UnlockPrimeSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 710, + "src": "1951:14:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "1951:28:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 820, + "nodeType": "EmitStatement", + "src": "1946:33:1" + } + ] + }, + "functionSelector": "8295d3be", + "id": 822, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setUnlockPrime", + "nameLocation": "1724:14:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 797, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 796, + "mutability": "mutable", + "name": "_unlockPrime", + "nameLocation": "1747:12:1", + "nodeType": "VariableDeclaration", + "scope": 822, + "src": "1739:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 795, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1739:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "1738:22:1" + }, + "returnParameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [], + "src": "1768:0:1" + }, + "scope": 1140, + "src": "1715:271:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 849, + "nodeType": "Block", + "src": "2096:198:1", + "statements": [ + { + "condition": { + "id": 834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2110:54:1", + "subExpression": { + "arguments": [ + { + "expression": { + "id": 831, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2153:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2157:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2153:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 828, + "name": "unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "2126:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 827, + "name": "IPublicLockV13", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "2111:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IPublicLockV13_$651_$", + "typeString": "type(contract IPublicLockV13)" + } + }, + "id": 829, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2111:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "id": 830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2139:13:1", + "memberName": "isLockManager", + "nodeType": "MemberAccess", + "referencedDeclaration": 294, + "src": "2111:41:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2111:53:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 840, + "nodeType": "IfStatement", + "src": "2106:123:1", + "trueBody": { + "id": 839, + "nodeType": "Block", + "src": "2166:63:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "43616c6c6572206973206e6f742061206c6f636b206d616e61676572", + "id": 836, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2187:30:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d", + "typeString": "literal_string \"Caller is not a lock manager\"" + }, + "value": "Caller is not a lock manager" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d", + "typeString": "literal_string \"Caller is not a lock manager\"" + } + ], + "id": 835, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "2180:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2180:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 838, + "nodeType": "ExpressionStatement", + "src": "2180:38:1" + } + ] + } + }, + { + "expression": { + "id": 843, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 841, + "name": "oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 698, + "src": "2238:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 842, + "name": "_oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 824, + "src": "2247:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2238:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 844, + "nodeType": "ExpressionStatement", + "src": "2238:16:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 846, + "name": "_oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 824, + "src": "2279:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 845, + "name": "OracleSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 714, + "src": "2269:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2269:18:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 848, + "nodeType": "EmitStatement", + "src": "2264:23:1" + } + ] + }, + "functionSelector": "7adbf973", + "id": 850, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setOracle", + "nameLocation": "2062:9:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 825, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 824, + "mutability": "mutable", + "name": "_oracle", + "nameLocation": "2080:7:1", + "nodeType": "VariableDeclaration", + "scope": 850, + "src": "2072:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 823, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2072:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2071:17:1" + }, + "returnParameters": { + "id": 826, + "nodeType": "ParameterList", + "parameters": [], + "src": "2096:0:1" + }, + "scope": 1140, + "src": "2053:241:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 877, + "nodeType": "Block", + "src": "2398:190:1", + "statements": [ + { + "condition": { + "id": 862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2412:54:1", + "subExpression": { + "arguments": [ + { + "expression": { + "id": 859, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2455:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 860, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2459:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2455:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 856, + "name": "unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "2428:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 855, + "name": "IPublicLockV13", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "2413:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IPublicLockV13_$651_$", + "typeString": "type(contract IPublicLockV13)" + } + }, + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2413:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "id": 858, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2441:13:1", + "memberName": "isLockManager", + "nodeType": "MemberAccess", + "referencedDeclaration": 294, + "src": "2413:41:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2413:53:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 868, + "nodeType": "IfStatement", + "src": "2408:123:1", + "trueBody": { + "id": 867, + "nodeType": "Block", + "src": "2468:63:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "hexValue": "43616c6c6572206973206e6f742061206c6f636b206d616e61676572", + "id": 864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2489:30:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d", + "typeString": "literal_string \"Caller is not a lock manager\"" + }, + "value": "Caller is not a lock manager" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d", + "typeString": "literal_string \"Caller is not a lock manager\"" + } + ], + "id": 863, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "2482:6:1", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2482:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 866, + "nodeType": "ExpressionStatement", + "src": "2482:38:1" + } + ] + } + }, + { + "expression": { + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 869, + "name": "weth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "2540:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 870, + "name": "_weth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "2547:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2540:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 872, + "nodeType": "ExpressionStatement", + "src": "2540:12:1" + }, + { + "eventCall": { + "arguments": [ + { + "id": 874, + "name": "_weth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "2575:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 873, + "name": "WethSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 718, + "src": "2567:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2567:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 876, + "nodeType": "EmitStatement", + "src": "2562:19:1" + } + ] + }, + "functionSelector": "b8d1452f", + "id": 878, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setWeth", + "nameLocation": "2368:7:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 852, + "mutability": "mutable", + "name": "_weth", + "nameLocation": "2384:5:1", + "nodeType": "VariableDeclaration", + "scope": 878, + "src": "2376:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 851, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2376:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "src": "2375:15:1" + }, + "returnParameters": { + "id": 854, + "nodeType": "ParameterList", + "parameters": [], + "src": "2398:0:1" + }, + "scope": 1140, + "src": "2359:229:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 898, + "nodeType": "Block", + "src": "2831:61:1", + "statements": [ + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "expression": { + "id": 892, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2863:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 893, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2867:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "2863:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 891, + "name": "IPublicLockV13", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "2848:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IPublicLockV13_$651_$", + "typeString": "type(contract IPublicLockV13)" + } + }, + "id": 894, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2848:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "id": 895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "2875:8:1", + "memberName": "keyPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 360, + "src": "2848:35:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2848:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 890, + "id": 897, + "nodeType": "Return", + "src": "2841:44:1" + } + ] + }, + "functionSelector": "221c1fd1", + "id": 899, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "keyPurchasePrice", + "nameLocation": "2636:16:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 880, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "2662:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 879, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2662:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 882, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "2690:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 881, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2690:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 884, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "2723:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 883, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2723:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 886, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "2755:14:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 885, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2755:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + } + ], + "src": "2652:134:1" + }, + "returnParameters": { + "id": 890, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 889, + "mutability": "mutable", + "name": "minKeyPrice", + "nameLocation": "2818:11:1", + "nodeType": "VariableDeclaration", + "scope": 899, + "src": "2810:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 888, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2810:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2809:21:1" + }, + "scope": 1140, + "src": "2627:265:1", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1002, + "nodeType": "Block", + "src": "2962:1021:1", + "statements": [ + { + "assignments": [ + 907 + ], + "declarations": [ + { + "constant": false, + "id": 907, + "mutability": "mutable", + "name": "UPAddress", + "nameLocation": "2980:9:1", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "2972:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2972:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + } + ], + "id": 913, + "initialValue": { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "id": 909, + "name": "unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "3007:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 908, + "name": "IPublicLockV13", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "2992:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IPublicLockV13_$651_$", + "typeString": "type(contract IPublicLockV13)" + } + }, + "id": 910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2992:27:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3020:12:1", + "memberName": "tokenAddress", + "nodeType": "MemberAccess", + "referencedDeclaration": 375, + "src": "2992:40:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_address_$", + "typeString": "function () view external returns (address)" + } + }, + "id": 912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "2992:42:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2972:62:1" + }, + { + "assignments": [ + 915 + ], + "declarations": [ + { + "constant": false, + "id": 915, + "mutability": "mutable", + "name": "valueInETH", + "nameLocation": "3133:10:1", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "3128:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 914, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3128:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 924, + "initialValue": { + "arguments": [ + { + "id": 920, + "name": "UPAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 907, + "src": "3201:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "id": 921, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 903, + "src": "3224:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 922, + "name": "weth", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "3244:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "arguments": [ + { + "id": 917, + "name": "oracle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 698, + "src": "3163:6:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 916, + "name": "IUniswapOracleV3", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 694, + "src": "3146:16:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IUniswapOracleV3_$694_$", + "typeString": "type(contract IUniswapOracleV3)" + } + }, + "id": 918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3146:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IUniswapOracleV3_$694", + "typeString": "contract IUniswapOracleV3" + } + }, + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3171:16:1", + "memberName": "updateAndConsult", + "nodeType": "MemberAccess", + "referencedDeclaration": 693, + "src": "3146:41:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$", + "typeString": "function (address,uint256,address) external returns (uint256)" + } + }, + "id": 923, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3146:112:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3128:130:1" + }, + { + "assignments": [ + 926 + ], + "declarations": [ + { + "constant": false, + "id": 926, + "mutability": "mutable", + "name": "existingRefund", + "nameLocation": "3315:14:1", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "3310:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 925, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3310:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 932, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 927, + "name": "refunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "3332:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2] storage ref)" + } + }, + "id": 929, + "indexExpression": { + "id": 928, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "3340:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3332:20:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "id": 931, + "indexExpression": { + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3353:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3332:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3310:45:1" + }, + { + "assignments": [ + 934 + ], + "declarations": [ + { + "constant": false, + "id": 934, + "mutability": "mutable", + "name": "existingDelay", + "nameLocation": "3370:13:1", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "3365:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 933, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3365:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 940, + "initialValue": { + "baseExpression": { + "baseExpression": { + "id": 935, + "name": "refunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "3386:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2] storage ref)" + } + }, + "id": 937, + "indexExpression": { + "id": 936, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "3394:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3386:20:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "id": 939, + "indexExpression": { + "hexValue": "31", + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3407:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3386:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3365:44:1" + }, + { + "assignments": [ + 942 + ], + "declarations": [ + { + "constant": false, + "id": 942, + "mutability": "mutable", + "name": "newRefund", + "nameLocation": "3424:9:1", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "3419:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 941, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3419:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 949, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 943, + "name": "valueInETH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 915, + "src": "3437:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3131", + "id": 944, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3450:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_11_by_1", + "typeString": "int_const 11" + }, + "value": "11" + }, + "src": "3437:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 946, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3436:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "hexValue": "3130", + "id": 947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3456:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "3436:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3419:39:1" + }, + { + "assignments": [ + 951 + ], + "declarations": [ + { + "constant": false, + "id": 951, + "mutability": "mutable", + "name": "newDelay", + "nameLocation": "3486:8:1", + "nodeType": "VariableDeclaration", + "scope": 1002, + "src": "3481:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 950, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3481:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "id": 962, + "initialValue": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 952, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3497:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 953, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3503:9:1", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "3497:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "commonType": { + "typeIdentifier": "t_rational_1209600_by_1", + "typeString": "int_const 1209600" + }, + "id": 960, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "id": 958, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "commonType": { + "typeIdentifier": "t_rational_3600_by_1", + "typeString": "int_const 3600" + }, + "id": 956, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "hexValue": "3630", + "id": 954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3515:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_60_by_1", + "typeString": "int_const 60" + }, + "value": "60" + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3630", + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3520:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_60_by_1", + "typeString": "int_const 60" + }, + "value": "60" + }, + "src": "3515:7:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_3600_by_1", + "typeString": "int_const 3600" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3234", + "id": 957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3525:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_24_by_1", + "typeString": "int_const 24" + }, + "value": "24" + }, + "src": "3515:12:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "hexValue": "3134", + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3530:2:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_14_by_1", + "typeString": "int_const 14" + }, + "value": "14" + }, + "src": "3515:17:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1209600_by_1", + "typeString": "int_const 1209600" + } + }, + "src": "3497:35:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3481:51:1" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 963, + "name": "existingDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 934, + "src": "3565:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 964, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3581:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 965, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "3587:9:1", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "3581:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3565:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 986, + "nodeType": "Block", + "src": "3690:153:1", + "statements": [ + { + "expression": { + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 978, + "name": "refunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "3788:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2] storage ref)" + } + }, + "id": 980, + "indexExpression": { + "id": 979, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "3796:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3788:20:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "id": 981, + "name": "newRefund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 942, + "src": "3812:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 982, + "name": "newDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "3823:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 983, + "isConstant": false, + "isInlineArray": true, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3811:21:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "src": "3788:44:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "id": 985, + "nodeType": "ExpressionStatement", + "src": "3788:44:1" + } + ] + }, + "id": 987, + "nodeType": "IfStatement", + "src": "3561:282:1", + "trueBody": { + "id": 977, + "nodeType": "Block", + "src": "3598:86:1", + "statements": [ + { + "expression": { + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 967, + "name": "refunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "3612:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2] storage ref)" + } + }, + "id": 969, + "indexExpression": { + "id": 968, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "3620:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3612:20:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "id": 970, + "name": "existingRefund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "3636:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "id": 971, + "name": "newRefund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 942, + "src": "3653:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3636:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "id": 973, + "name": "newDelay", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 951, + "src": "3664:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 974, + "isConstant": false, + "isInlineArray": true, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3635:38:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "src": "3612:61:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "id": 976, + "nodeType": "ExpressionStatement", + "src": "3612:61:1" + } + ] + } + }, + { + "eventCall": { + "arguments": [ + { + "id": 989, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "3881:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "baseExpression": { + "id": 990, + "name": "refunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "3906:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2] storage ref)" + } + }, + "id": 992, + "indexExpression": { + "id": 991, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "3914:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3906:20:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "id": 994, + "indexExpression": { + "hexValue": "30", + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3927:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3906:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "baseExpression": { + "baseExpression": { + "id": 995, + "name": "refunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "3943:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2] storage ref)" + } + }, + "id": 997, + "indexExpression": { + "id": 996, + "name": "beneficiary", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "3951:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3943:20:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "id": 999, + "indexExpression": { + "hexValue": "31", + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3964:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3943:23:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 988, + "name": "RefundSet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 726, + "src": "3858:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,uint256)" + } + }, + "id": 1000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "3858:118:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1001, + "nodeType": "EmitStatement", + "src": "3853:123:1" + } + ] + }, + "id": 1003, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "recordRefund", + "nameLocation": "2907:12:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 901, + "mutability": "mutable", + "name": "beneficiary", + "nameLocation": "2928:11:1", + "nodeType": "VariableDeclaration", + "scope": 1003, + "src": "2920:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 900, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2920:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 903, + "mutability": "mutable", + "name": "amount", + "nameLocation": "2946:6:1", + "nodeType": "VariableDeclaration", + "scope": 1003, + "src": "2941:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 902, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2941:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "2919:34:1" + }, + "returnParameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [], + "src": "2962:0:1" + }, + "scope": 1140, + "src": "2898:1085:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1036, + "nodeType": "Block", + "src": "4313:134:1", + "statements": [ + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1023, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1020, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4327:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1021, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4331:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4327:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1022, + "name": "unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "4341:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4327:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1035, + "nodeType": "IfStatement", + "src": "4323:118:1", + "trueBody": { + "id": 1034, + "nodeType": "Block", + "src": "4354:87:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "id": 1025, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "4381:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "arguments": [ + { + "expression": { + "id": 1027, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4407:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4411:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4407:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1026, + "name": "IPublicLockV13", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "4392:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IPublicLockV13_$651_$", + "typeString": "type(contract IPublicLockV13)" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4392:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4419:8:1", + "memberName": "keyPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 360, + "src": "4392:35:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4392:37:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1024, + "name": "recordRefund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1003, + "src": "4368:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4368:62:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1033, + "nodeType": "ExpressionStatement", + "src": "4368:62:1" + } + ] + } + } + ] + }, + "functionSelector": "5e895f29", + "id": 1037, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onKeyPurchase", + "nameLocation": "4063:13:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1005, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1037, + "src": "4086:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4086:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1007, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1037, + "src": "4117:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1006, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4117:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1009, + "mutability": "mutable", + "name": "recipient", + "nameLocation": "4153:9:1", + "nodeType": "VariableDeclaration", + "scope": 1037, + "src": "4145:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4145:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1011, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1037, + "src": "4172:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1010, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4172:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1013, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1037, + "src": "4204:14:1", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1012, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4204:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1015, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1037, + "src": "4239:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1014, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4239:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1017, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1037, + "src": "4274:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1016, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4274:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4076:227:1" + }, + "returnParameters": { + "id": 1019, + "nodeType": "ParameterList", + "parameters": [], + "src": "4313:0:1" + }, + "scope": 1140, + "src": "4054:393:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1072, + "nodeType": "Block", + "src": "4678:182:1", + "statements": [ + { + "assignments": [ + 1050 + ], + "declarations": [ + { + "constant": false, + "id": 1050, + "mutability": "mutable", + "name": "lock", + "nameLocation": "4703:4:1", + "nodeType": "VariableDeclaration", + "scope": 1072, + "src": "4688:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + }, + "typeName": { + "id": 1049, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 1048, + "name": "IPublicLockV13", + "nameLocations": [ + "4688:14:1" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 651, + "src": "4688:14:1" + }, + "referencedDeclaration": 651, + "src": "4688:14:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "visibility": "internal" + } + ], + "id": 1055, + "initialValue": { + "arguments": [ + { + "expression": { + "id": 1052, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4725:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4729:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4725:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1051, + "name": "IPublicLockV13", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 651, + "src": "4710:14:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IPublicLockV13_$651_$", + "typeString": "type(contract IPublicLockV13)" + } + }, + "id": 1054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4710:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4688:48:1" + }, + { + "condition": { + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "expression": { + "id": 1056, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4750:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4754:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4750:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "id": 1058, + "name": "unlockPrime", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 696, + "src": "4764:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4750:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1071, + "nodeType": "IfStatement", + "src": "4746:108:1", + "trueBody": { + "id": 1070, + "nodeType": "Block", + "src": "4777:77:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "id": 1063, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "4817:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "id": 1061, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1050, + "src": "4804:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4809:7:1", + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 456, + "src": "4804:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view external returns (address)" + } + }, + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4804:21:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "id": 1065, + "name": "lock", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1050, + "src": "4827:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IPublicLockV13_$651", + "typeString": "contract IPublicLockV13" + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4832:8:1", + "memberName": "keyPrice", + "nodeType": "MemberAccess", + "referencedDeclaration": 360, + "src": "4827:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$", + "typeString": "function () view external returns (uint256)" + } + }, + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4827:15:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1060, + "name": "recordRefund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1003, + "src": "4791:12:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4791:52:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1069, + "nodeType": "ExpressionStatement", + "src": "4791:52:1" + } + ] + } + } + ] + }, + "functionSelector": "016b9680", + "id": 1073, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onKeyExtend", + "nameLocation": "4526:11:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1039, + "mutability": "mutable", + "name": "tokenId", + "nameLocation": "4552:7:1", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "4547:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1038, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4547:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "4569:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4569:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "4599:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1042, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4599:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 1045, + "mutability": "mutable", + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "VariableDeclaration", + "scope": 1073, + "src": "4632:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1044, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4632:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "internal" + } + ], + "src": "4537:131:1" + }, + "returnParameters": { + "id": 1047, + "nodeType": "ParameterList", + "parameters": [], + "src": "4678:0:1" + }, + "scope": 1140, + "src": "4517:343:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1134, + "nodeType": "Block", + "src": "4923:324:1", + "statements": [ + { + "assignments": [ + 1081 + ], + "declarations": [ + { + "constant": false, + "id": 1081, + "mutability": "mutable", + "name": "refund", + "nameLocation": "4948:6:1", + "nodeType": "VariableDeclaration", + "scope": 1134, + "src": "4933:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2]" + }, + "typeName": { + "baseType": { + "id": 1079, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4933:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1080, + "length": { + "hexValue": "32", + "id": 1078, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4938:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "nodeType": "ArrayTypeName", + "src": "4933:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage_ptr", + "typeString": "uint256[2]" + } + }, + "visibility": "internal" + } + ], + "id": 1086, + "initialValue": { + "baseExpression": { + "id": 1082, + "name": "refunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "4957:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2] storage ref)" + } + }, + "id": 1085, + "indexExpression": { + "expression": { + "id": 1083, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4965:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "4969:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "4965:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4957:19:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4933:43:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1088, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1081, + "src": "4994:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "id": 1090, + "indexExpression": { + "hexValue": "30", + "id": 1089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5001:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4994:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "hexValue": "30", + "id": 1091, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5006:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4994:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "4e6f20726566756e6420617661696c61626c65", + "id": 1093, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5009:21:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71", + "typeString": "literal_string \"No refund available\"" + }, + "value": "No refund available" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71", + "typeString": "literal_string \"No refund available\"" + } + ], + "id": 1087, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4986:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1094, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "4986:45:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1095, + "nodeType": "ExpressionStatement", + "src": "4986:45:1" + }, + { + "expression": { + "arguments": [ + { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "baseExpression": { + "id": 1097, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1081, + "src": "5049:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "id": 1099, + "indexExpression": { + "hexValue": "31", + "id": 1098, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5056:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5049:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "expression": { + "id": 1100, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5061:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 1101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5067:9:1", + "memberName": "timestamp", + "nodeType": "MemberAccess", + "src": "5061:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5049:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "hexValue": "526566756e64206e6f7420617661696c61626c6520796574", + "id": 1103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5078:26:1", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd", + "typeString": "literal_string \"Refund not available yet\"" + }, + "value": "Refund not available yet" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd", + "typeString": "literal_string \"Refund not available yet\"" + } + ], + "id": 1096, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5041:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5041:64:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1105, + "nodeType": "ExpressionStatement", + "src": "5041:64:1" + }, + { + "expression": { + "id": 1113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 1106, + "name": "refunds", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "5115:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_array$_t_uint256_$2_storage_$", + "typeString": "mapping(address => uint256[2] storage ref)" + } + }, + "id": 1109, + "indexExpression": { + "expression": { + "id": 1107, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5123:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5127:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5123:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5115:19:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "components": [ + { + "hexValue": "30", + "id": 1110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5138:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "hexValue": "30", + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5141:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 1112, + "isConstant": false, + "isInlineArray": true, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5137:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$2_memory_ptr", + "typeString": "uint8[2] memory" + } + }, + "src": "5115:28:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_storage", + "typeString": "uint256[2] storage ref" + } + }, + "id": 1114, + "nodeType": "ExpressionStatement", + "src": "5115:28:1" + }, + { + "expression": { + "arguments": [ + { + "baseExpression": { + "id": 1121, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1081, + "src": "5182:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "id": 1123, + "indexExpression": { + "hexValue": "30", + "id": 1122, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5189:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5182:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "arguments": [ + { + "expression": { + "id": 1117, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5161:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5165:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5161:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5153:8:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_payable_$", + "typeString": "type(address payable)" + }, + "typeName": { + "id": 1115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5153:8:1", + "stateMutability": "payable", + "typeDescriptions": {} + } + }, + "id": 1119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5153:19:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 1120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5173:8:1", + "memberName": "transfer", + "nodeType": "MemberAccess", + "src": "5153:28:1", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5153:39:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1125, + "nodeType": "ExpressionStatement", + "src": "5153:39:1" + }, + { + "eventCall": { + "arguments": [ + { + "expression": { + "id": 1127, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5218:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberLocation": "5222:6:1", + "memberName": "sender", + "nodeType": "MemberAccess", + "src": "5218:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "baseExpression": { + "id": 1129, + "name": "refund", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1081, + "src": "5230:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$2_memory_ptr", + "typeString": "uint256[2] memory" + } + }, + "id": 1131, + "indexExpression": { + "hexValue": "30", + "id": 1130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5237:1:1", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5230:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1126, + "name": "RefundPaid", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 732, + "src": "5207:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 1132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "5207:33:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1133, + "nodeType": "EmitStatement", + "src": "5202:38:1" + } + ] + }, + "functionSelector": "b5545a3c", + "id": 1135, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claimRefund", + "nameLocation": "4900:11:1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1074, + "nodeType": "ParameterList", + "parameters": [], + "src": "4911:2:1" + }, + "returnParameters": { + "id": 1075, + "nodeType": "ParameterList", + "parameters": [], + "src": "4923:0:1" + }, + "scope": 1140, + "src": "4891:356:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 1138, + "nodeType": "Block", + "src": "5280:2:1", + "statements": [] + }, + "id": 1139, + "implemented": true, + "kind": "receive", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1136, + "nodeType": "ParameterList", + "parameters": [], + "src": "5260:2:1" + }, + "returnParameters": { + "id": 1137, + "nodeType": "ParameterList", + "parameters": [], + "src": "5280:0:1" + }, + "scope": 1140, + "src": "5253:29:1", + "stateMutability": "payable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1141, + "src": "724:4560:1", + "usedErrors": [], + "usedEvents": [ + 710, + 714, + 718, + 726, + 732 + ] + } + ], + "src": "0:5285:1" + }, + "id": 1 + } + }, + "contracts": { + "@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol": { + "IPublicLockV13": { + "abi": [ + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "addLockManager", + "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": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "cancelAndRefund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "expirationDuration", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "expireAndRefundFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_referrer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "extend", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "freeTrialLength", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "gasRefundValue", + "outputs": [ + { + "internalType": "uint256", + "name": "_gasRefundValue", + "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": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "getCancelAndRefundValue", + "outputs": [ + { + "internalType": "uint256", + "name": "refund", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_user", + "type": "address" + } + ], + "name": "getHasValidKey", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "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": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_time", + "type": "uint256" + } + ], + "name": "getTransferFee", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_duration", + "type": "uint256" + } + ], + "name": "grantKeyExtension", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "_recipients", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "_expirationTimestamps", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "_keyManagers", + "type": "address[]" + } + ], + "name": "grantKeys", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "nonpayable", + "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": "_lockCreator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_expirationDuration", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_keyPrice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxNumberOfKeys", + "type": "uint256" + }, + { + "internalType": "string", + "name": "_lockName", + "type": "string" + } + ], + "name": "initialize", + "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": "isLockManager", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "internalType": "bool", + "name": "isOwner", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "referrer", + "type": "address" + } + ], + "name": "isRenewable", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "isValidKey", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "keyExpirationTimestampFor", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "keyManagerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "keyPrice", + "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": "lendKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "maxKeysPerAddress", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxNumberOfKeys", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenIdFrom", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_tokenIdTo", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "mergeKeys", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "_calldata", + "type": "bytes" + } + ], + "name": "migrate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numberOfOwners", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "onKeyCancelHook", + "outputs": [ + { + "internalType": "address", + "name": "hookAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "onKeyExtendHook", + "outputs": [ + { + "internalType": "address", + "name": "hookAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "onKeyGrantHook", + "outputs": [ + { + "internalType": "address", + "name": "hookAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "onKeyPurchaseHook", + "outputs": [ + { + "internalType": "address", + "name": "hookAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "onKeyTransferHook", + "outputs": [ + { + "internalType": "address", + "name": "hookAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "onTokenURIHook", + "outputs": [ + { + "internalType": "address", + "name": "hookAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "onValidKeyHook", + "outputs": [ + { + "internalType": "address", + "name": "hookAddress", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "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": [], + "name": "publicLockVersion", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256[]", + "name": "_values", + "type": "uint256[]" + }, + { + "internalType": "address[]", + "name": "_recipients", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "_referrers", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "_keyManagers", + "type": "address[]" + }, + { + "internalType": "bytes[]", + "name": "_data", + "type": "bytes[]" + } + ], + "name": "purchase", + "outputs": [ + { + "internalType": "uint256[]", + "name": "tokenIds", + "type": "uint256[]" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_recipient", + "type": "address" + }, + { + "internalType": "address", + "name": "_referrer", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "purchasePriceFor", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_referrer", + "type": "address" + } + ], + "name": "referrerFees", + "outputs": [ + { + "internalType": "uint256", + "name": "referrerFee", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "refundPenaltyBasisPoints", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_referrer", + "type": "address" + } + ], + "name": "renewMembershipFor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceLockManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "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": "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": [], + "name": "schemaVersion", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "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": "_onKeyPurchaseHook", + "type": "address" + }, + { + "internalType": "address", + "name": "_onKeyCancelHook", + "type": "address" + }, + { + "internalType": "address", + "name": "_onValidKeyHook", + "type": "address" + }, + { + "internalType": "address", + "name": "_onTokenURIHook", + "type": "address" + }, + { + "internalType": "address", + "name": "_onKeyTransferHook", + "type": "address" + }, + { + "internalType": "address", + "name": "_onKeyExtendHook", + "type": "address" + }, + { + "internalType": "address", + "name": "_onKeyGrantHook", + "type": "address" + } + ], + "name": "setEventHooks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_gasRefundValue", + "type": "uint256" + } + ], + "name": "setGasRefundValue", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_keyManager", + "type": "address" + } + ], + "name": "setKeyManagerOf", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "_lockName", + "type": "string" + }, + { + "internalType": "string", + "name": "_lockSymbol", + "type": "string" + }, + { + "internalType": "string", + "name": "_baseTokenURI", + "type": "string" + } + ], + "name": "setLockMetadata", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "setOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_referrer", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_feeBasisPoint", + "type": "uint256" + } + ], + "name": "setReferrerFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_timeShared", + "type": "uint256" + } + ], + "name": "shareKey", + "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": [], + "name": "tokenAddress", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "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": "tokenId", + "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": [ + { + "internalType": "address", + "name": "_keyOwner", + "type": "address" + } + ], + "name": "totalKeys", + "outputs": [ + { + "internalType": "uint256", + "name": "numberOfKeys", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "_totalKeysCreated", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "transferFeeBasisPoints", + "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": "_recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + } + ], + "name": "unlendKey", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockProtocol", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_keyPrice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + } + ], + "name": "updateKeyPricing", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_newExpirationDuration", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxNumberOfKeys", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxKeysPerAcccount", + "type": "uint256" + } + ], + "name": "updateLockConfig", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_freeTrialLength", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_refundPenaltyBasisPoints", + "type": "uint256" + } + ], + "name": "updateRefundPenalty", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "updateSchemaVersion", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_transferFeeBasisPoints", + "type": "uint256" + } + ], + "name": "updateTransferFee", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenAddress", + "type": "address" + }, + { + "internalType": "address payable", + "name": "_recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amount", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "DEFAULT_ADMIN_ROLE()": "a217fddf", + "addLockManager(address)": "d2503485", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "burn(uint256)": "42966c68", + "cancelAndRefund(uint256)": "d32bfb6c", + "expirationDuration()": "11a4c03a", + "expireAndRefundFor(uint256,uint256)": "558b71e9", + "extend(uint256,uint256,address,bytes)": "d813cc19", + "freeTrialLength()": "a375cb05", + "gasRefundValue()": "6207a8da", + "getApproved(uint256)": "081812fc", + "getCancelAndRefundValue(uint256)": "92ac98a5", + "getHasValidKey(address)": "6d8ea5b4", + "getRoleAdmin(bytes32)": "248a9ca3", + "getTransferFee(uint256,uint256)": "b1a3b25d", + "grantKeyExtension(uint256,uint256)": "4cd38c1d", + "grantKeys(address[],uint256[],address[])": "81a3c943", + "grantRole(bytes32,address)": "2f2ff15d", + "hasRole(bytes32,address)": "91d14854", + "initialize(address,uint256,address,uint256,uint256,string)": "6eadde43", + "isApprovedForAll(address,address)": "e985e9c5", + "isLockManager(address)": "aae4b8f7", + "isOwner(address)": "2f54bf6e", + "isRenewable(uint256,address)": "50878a47", + "isValidKey(uint256)": "a98d3623", + "keyExpirationTimestampFor(uint256)": "54b249fb", + "keyManagerOf(uint256)": "4d025fed", + "keyPrice()": "10e56973", + "lendKey(address,address,uint256)": "0c2db8d1", + "maxKeysPerAddress()": "d52e4a10", + "maxNumberOfKeys()": "74b6c106", + "mergeKeys(uint256,uint256,uint256)": "068208cd", + "migrate(bytes)": "8932a90d", + "name()": "06fdde03", + "numberOfOwners()": "93fd1844", + "onKeyCancelHook()": "217751bc", + "onKeyExtendHook()": "c907c3ec", + "onKeyGrantHook()": "b129694e", + "onKeyPurchaseHook()": "2d33dd5b", + "onKeyTransferHook()": "389f07e8", + "onTokenURIHook()": "7ec2a724", + "onValidKeyHook()": "26e9ca07", + "owner()": "8da5cb5b", + "ownerOf(uint256)": "6352211e", + "publicLockVersion()": "d1bbd49c", + "purchase(uint256[],address[],address[],address[],bytes[])": "33818997", + "purchasePriceFor(address,address,bytes)": "097ba333", + "referrerFees(address)": "c23135dd", + "refundPenaltyBasisPoints()": "56e0d51f", + "renewMembershipFor(uint256,address)": "8505fe95", + "renounceLockManager()": "f0ba6040", + "renounceRole(bytes32,address)": "36568abe", + "revokeRole(bytes32,address)": "d547741f", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "schemaVersion()": "4e2ce6d3", + "setApprovalForAll(address,bool)": "a22cb465", + "setEventHooks(address,address,address,address,address,address,address)": "74cac47d", + "setGasRefundValue(uint256)": "f5766b39", + "setKeyManagerOf(uint256,address)": "b11d7ec1", + "setLockMetadata(string,string,string)": "d1b8759b", + "setOwner(address)": "13af4035", + "setReferrerFee(address,uint256)": "debe2b0d", + "shareKey(address,uint256,uint256)": "f12c6b6e", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenAddress()": "9d76ea58", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "tokenURI(uint256)": "c87b56dd", + "totalKeys(address)": "812eecd4", + "totalSupply()": "18160ddd", + "transferFeeBasisPoints()": "183767da", + "transferFrom(address,address,uint256)": "23b872dd", + "unlendKey(address,uint256)": "407dc589", + "unlockProtocol()": "0f15023b", + "updateKeyPricing(uint256,address)": "a2e4cd2e", + "updateLockConfig(uint256,uint256,uint256)": "282478df", + "updateRefundPenalty(uint256,uint256)": "39f46986", + "updateSchemaVersion()": "f32e8b24", + "updateTransferFee(uint256)": "8577a6d5", + "withdraw(address,address,uint256)": "d9caed12" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addLockManager\",\"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\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"cancelAndRefund\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"expirationDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"expireAndRefundFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_referrer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"extend\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"freeTrialLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"gasRefundValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasRefundValue\",\"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\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"getCancelAndRefundValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"refund\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_user\",\"type\":\"address\"}],\"name\":\"getHasValidKey\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"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\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_time\",\"type\":\"uint256\"}],\"name\":\"getTransferFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_duration\",\"type\":\"uint256\"}],\"name\":\"grantKeyExtension\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_recipients\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_expirationTimestamps\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"_keyManagers\",\"type\":\"address[]\"}],\"name\":\"grantKeys\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"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\":\"_lockCreator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_expirationDuration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_keyPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxNumberOfKeys\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_lockName\",\"type\":\"string\"}],\"name\":\"initialize\",\"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\":\"isLockManager\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isOwner\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOwner\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"referrer\",\"type\":\"address\"}],\"name\":\"isRenewable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"isValidKey\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"keyExpirationTimestampFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"keyManagerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"keyPrice\",\"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\":\"lendKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxKeysPerAddress\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxNumberOfKeys\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenIdFrom\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_tokenIdTo\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"mergeKeys\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_calldata\",\"type\":\"bytes\"}],\"name\":\"migrate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"numberOfOwners\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onKeyCancelHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"hookAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onKeyExtendHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"hookAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onKeyGrantHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"hookAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onKeyPurchaseHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"hookAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onKeyTransferHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"hookAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onTokenURIHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"hookAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"onValidKeyHook\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"hookAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"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\":[],\"name\":\"publicLockVersion\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_values\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"_recipients\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_referrers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"_keyManagers\",\"type\":\"address[]\"},{\"internalType\":\"bytes[]\",\"name\":\"_data\",\"type\":\"bytes[]\"}],\"name\":\"purchase\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"tokenIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_referrer\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"purchasePriceFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_referrer\",\"type\":\"address\"}],\"name\":\"referrerFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"referrerFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"refundPenaltyBasisPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_referrer\",\"type\":\"address\"}],\"name\":\"renewMembershipFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceLockManager\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"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\":\"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\":[],\"name\":\"schemaVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"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\":\"_onKeyPurchaseHook\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_onKeyCancelHook\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_onValidKeyHook\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_onTokenURIHook\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_onKeyTransferHook\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_onKeyExtendHook\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_onKeyGrantHook\",\"type\":\"address\"}],\"name\":\"setEventHooks\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasRefundValue\",\"type\":\"uint256\"}],\"name\":\"setGasRefundValue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_keyManager\",\"type\":\"address\"}],\"name\":\"setKeyManagerOf\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_lockName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_lockSymbol\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_baseTokenURI\",\"type\":\"string\"}],\"name\":\"setLockMetadata\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_referrer\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_feeBasisPoint\",\"type\":\"uint256\"}],\"name\":\"setReferrerFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_timeShared\",\"type\":\"uint256\"}],\"name\":\"shareKey\",\"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\":[],\"name\":\"tokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"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\":\"tokenId\",\"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\":[{\"internalType\":\"address\",\"name\":\"_keyOwner\",\"type\":\"address\"}],\"name\":\"totalKeys\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"numberOfKeys\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalKeysCreated\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferFeeBasisPoints\",\"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\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"unlendKey\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockProtocol\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_keyPrice\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"}],\"name\":\"updateKeyPricing\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newExpirationDuration\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxNumberOfKeys\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxKeysPerAcccount\",\"type\":\"uint256\"}],\"name\":\"updateLockConfig\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_freeTrialLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_refundPenaltyBasisPoints\",\"type\":\"uint256\"}],\"name\":\"updateRefundPenalty\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"updateSchemaVersion\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_transferFeeBasisPoints\",\"type\":\"uint256\"}],\"name\":\"updateTransferFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"_recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"balanceOf(address)\":{\"returns\":{\"balance\":\"The number of valid keys owned by `_keyOwner`\"}},\"burn(uint256)\":{\"params\":{\"_tokenId\":\"the id of token to burn\"}},\"cancelAndRefund(uint256)\":{\"details\":\"allows the key manager to expire a given tokenId and send a refund to the keyOwner based on the amount of time remaining.\",\"params\":{\"_tokenId\":\"The id of the key to cancel.\"}},\"expireAndRefundFor(uint256,uint256)\":{\"details\":\"Invoked by a Lock manager to expire the user's key and perform a refund and cancellation of the keyThrows if called by other than a Lock managerThrows if _keyOwner does not have a valid key\",\"params\":{\"_amount\":\"The amount to refund to the key-owner\",\"_tokenId\":\"The key id we wish to refund to\"}},\"extend(uint256,uint256,address,bytes)\":{\"details\":\"Extend functionThrows if lock is disabled or key does not exist for _recipient. Throws if _recipient == address(0).\",\"params\":{\"_data\":\"arbitrary data populated by the front-end which initiated the sale\",\"_referrer\":\"address of the user making the referral\",\"_tokenId\":\"the id of the key to extend\",\"_value\":\"the number of tokens to pay for this purchase >= the current keyPrice - any applicable discount (_value is ignored when using ETH)\"}},\"gasRefundValue()\":{\"details\":\"Returns the value/price to be refunded to the sender on purchase\"},\"getApproved(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT.\",\"params\":{\"_tokenId\":\"The NFT to find the approved address for\"},\"returns\":{\"operator\":\"The approved address for this NFT, or the zero address if there is none\"}},\"getCancelAndRefundValue(uint256)\":{\"details\":\"Determines how much of a refund a key owner would receive if they issued\",\"params\":{\"_tokenId\":\"the id of the token to get the refund value for.\"},\"returns\":{\"refund\":\"the amount of tokens refunded\"}},\"getHasValidKey(address)\":{\"params\":{\"_user\":\"The address of the key owner\"}},\"getTransferFee(uint256,uint256)\":{\"details\":\"Throws if _tokenId does not have a valid key\",\"params\":{\"_time\":\"The amount of time to calculate the fee for.\",\"_tokenId\":\"The id of the key check the transfer fee for.\"},\"returns\":{\"_0\":\"The transfer fee in seconds.\"}},\"grantKeyExtension(uint256,uint256)\":{\"details\":\"set `_duration` to 0 to use the default duration of the lock\",\"params\":{\"_duration\":\"The duration in secondes to add ot the key\",\"_tokenId\":\"The id of the token to extend\"}},\"grantKeys(address[],uint256[],address[])\":{\"details\":\"Throws if called by other than a Lock manager\",\"params\":{\"_expirationTimestamps\":\"An array of expiration Timestamps for the keys being granted\",\"_recipients\":\"An array of receiving addresses\"},\"returns\":{\"_0\":\"the ids of the granted tokens\"}},\"isApprovedForAll(address,address)\":{\"details\":\"Tells whether an operator is approved by a given keyManager\",\"params\":{\"_operator\":\"operator address which you want to query the approval of\",\"_owner\":\"owner address which you want to query the approval of\"},\"returns\":{\"_0\":\"bool whether the given operator is approved by the given owner\"}},\"isRenewable(uint256,address)\":{\"details\":\"helper to check if a key is currently renewable it will revert if the pricing or duration of the lock have been modified unfavorably since the key was bought(price increase or duration decrease). It will also revert if a lock is not renewable or if the key is not ready for renewal yet (at least 90% expired).\",\"params\":{\"referrer\":\"the address where to send the referrer fee\",\"tokenId\":\"the id of the token to check\"},\"returns\":{\"_0\":\"true if the terms has changed\"}},\"isValidKey(uint256)\":{\"params\":{\"_tokenId\":\"the id of the key to check validity\"}},\"keyExpirationTimestampFor(uint256)\":{\"details\":\"Returns the key's ExpirationTimestamp field for a given owner.Returns 0 if the owner has never owned a key for this lock\",\"params\":{\"_tokenId\":\"the id of the key\"}},\"lendKey(address,address,uint256)\":{\"params\":{\"from\":\"the owner of token to transfer\",\"to\":\"the address that will receive the token\",\"tokenId\":\"the id of the token\"}},\"maxKeysPerAddress()\":{\"returns\":{\"_0\":\"the maximum number of key allowed for a single address\"}},\"mergeKeys(uint256,uint256,uint256)\":{\"params\":{\"_amount\":\"the amount of time to transfer (in seconds)\",\"_tokenIdFrom\":\"the id of the token to substract time from\",\"_tokenIdTo\":\"the id of the destination token to add time\"}},\"migrate(bytes)\":{\"details\":\"when all record schemas are sucessfully upgraded, this function will update the `schemaVersion` variable to the latest/current lock version\",\"params\":{\"_calldata\":\"an ABI-encoded representation of the params (v10: the number of records to migrate as `uint`)\"}},\"onKeyCancelHook()\":{\"returns\":{\"hookAddress\":\"address of the hook\"}},\"onKeyExtendHook()\":{\"returns\":{\"hookAddress\":\"the address ok the hook\"}},\"onKeyGrantHook()\":{\"returns\":{\"hookAddress\":\"the address ok the hook\"}},\"onKeyPurchaseHook()\":{\"returns\":{\"hookAddress\":\"address of the hook\"}},\"onKeyTransferHook()\":{\"returns\":{\"hookAddress\":\"address of the hook\"}},\"onTokenURIHook()\":{\"returns\":{\"hookAddress\":\"address of the hook\"}},\"onValidKeyHook()\":{\"returns\":{\"hookAddress\":\"address of the hook\"}},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the NFT specified by `tokenId`.\"},\"publicLockVersion()\":{\"returns\":{\"_0\":\"The current version number.\"}},\"purchase(uint256[],address[],address[],address[],bytes[])\":{\"details\":\"Purchase functionSetting _value to keyPrice exactly doubles as a security feature. That way if the lock owner increases the price while my transaction is pending I can't be charged more than I expected (only applicable to ERC-20 when more than keyPrice is approved for spending).\",\"params\":{\"_data\":\"array of arbitrary data populated by the front-end which initiated the sale\",\"_keyManagers\":\"optional array of addresses to grant managing rights to a specific address on creation\",\"_recipients\":\"array of addresses of the recipients of the purchased key\",\"_referrers\":\"array of addresses of the users making the referral\",\"_values\":\"array of tokens amount to pay for this purchase >= the current keyPrice - any applicable discount (_values is ignored when using ETH)\"},\"returns\":{\"tokenIds\":\"the ids of the created tokens\"}},\"purchasePriceFor(address,address,bytes)\":{\"details\":\"this considers any discount from Unlock or the OnKeyPurchase hook.\"},\"referrerFees(address)\":{\"params\":{\"_referrer\":\"the address of the referrer\"},\"returns\":{\"referrerFee\":\"the percentage of the keyPrice to be sent to the referrer (in basis points)\"}},\"renewMembershipFor(uint256,address)\":{\"params\":{\"_referrer\":\"the address of the person to be granted UDT\",\"_tokenId\":\"the ID fo the token to renew\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Transfers a specific NFT (`tokenId`) from one account (`from`) to another (`to`). Requirements: - `from`, `to` cannot be zero. - `tokenId` must be owned by `from`. - If the caller is not `from`, it must be have been allowed to move this NFT by either `approve` or `setApprovalForAll`.\"},\"schemaVersion()\":{\"details\":\"will return 0 if no ;igration has ever been run\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Sets or unsets the approval of a given operator An operator is allowed to transfer all tokens of the sender on their behalf\",\"params\":{\"_approved\":\"representing the status of the approval to be set\",\"_operator\":\"operator address to set the approval\"}},\"setEventHooks(address,address,address,address,address,address,address)\":{\"params\":{\"_onKeyCancelHook\":\"Hook called when the internal `_cancelAndRefund` function is called\",\"_onKeyExtendHook\":\"Hook called when a key is extended or renewed\",\"_onKeyGrantHook\":\"Hook called when a key is granted\",\"_onKeyPurchaseHook\":\"Hook called when the `purchase` function is called\",\"_onKeyTransferHook\":\"Hook called when a key is transfered\",\"_onTokenURIHook\":\"Hook called to generate a data URI used for NFT metadata\",\"_onValidKeyHook\":\"Hook called to determine if the contract should overide the status for a given address\"}},\"setGasRefundValue(uint256)\":{\"details\":\"Set the value to be refunded to the sender on purchase\",\"params\":{\"_gasRefundValue\":\"price in wei or token in smallest price unit\"}},\"setKeyManagerOf(uint256,address)\":{\"params\":{\"_keyManager\":\"The address to assign the rights to for the given key\",\"_tokenId\":\"The id of the key to assign rights for\"}},\"setLockMetadata(string,string,string)\":{\"params\":{\"_baseTokenURI\":\"the baseTokenURI for this Lock\",\"_lockName\":\"a descriptive name for this Lock.\",\"_lockSymbol\":\"a Symbol for this Lock (default to KEY).\"}},\"setReferrerFee(address,uint256)\":{\"details\":\"To send a fixed percentage of the key price to all referrers, sett a percentage to `address(0)`\",\"params\":{\"_feeBasisPoint\":\"the percentage of the price to be used for this specific referrer (in basis points)\",\"_referrer\":\"the address of the referrer\"}},\"shareKey(address,uint256,uint256)\":{\"details\":\"Throws if key is not valid.Throws if `_to` is the zero addressEmit Transfer event\",\"params\":{\"_timeShared\":\"The amount of time shared checks if `_to` is a smart contract (code size > 0). If so, it calls `onERC721Received` on `_to` and throws if the return value is not `bytes4(keccak256('onERC721Received(address,address,uint,bytes)'))`.\",\"_to\":\"The recipient of the shared key\",\"_tokenId\":\"the key to share\"}},\"symbol()\":{\"details\":\"Gets the token symbol\",\"returns\":{\"_0\":\"string representing the token symbol\"}},\"tokenURI(uint256)\":{\"details\":\"Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC 3986. The URI may point to a JSON file that conforms to the \\\"ERC721 Metadata JSON Schema\\\". https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\",\"params\":{\"_tokenId\":\"The tokenID we're inquiring about\"},\"returns\":{\"_0\":\"String representing the URI for the requested token\"}},\"totalKeys(address)\":{\"params\":{\"_keyOwner\":\"address for which we are retrieving the total number of keys\"},\"returns\":{\"numberOfKeys\":\"total number of keys owned by the address\"}},\"totalSupply()\":{\"returns\":{\"_totalKeysCreated\":\"the total number of keys, valid or not\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Requirements: if the caller is not `from`, it must be approved to move this token by either `approve` or `setApprovalForAll`. The key manager will be reset to address zero after the transfer\",\"params\":{\"from\":\"the owner of token to transfer\",\"to\":\"the address that will receive the token\",\"tokenId\":\"the id of the token\"}},\"unlendKey(address,uint256)\":{\"details\":\"Only the key manager of the token can call this function\",\"params\":{\"_recipient\":\"the address that will receive the token ownership\",\"_tokenId\":\"the id of the token\"}},\"updateKeyPricing(uint256,address)\":{\"details\":\"Throws if called by other than a Lock managerThrows if lock has been disabledThrows if _tokenAddress is not a valid token\",\"params\":{\"_keyPrice\":\"The new price to set for keys\",\"_tokenAddress\":\"The address of the erc20 token to use for pricing the keys, or 0 to use ETH\"}},\"updateLockConfig(uint256,uint256,uint256)\":{\"details\":\"_maxNumberOfKeys Can't be smaller than the existing supply\",\"params\":{\"_maxKeysPerAcccount\":\"the maximum amount of key a single user can own\",\"_maxNumberOfKeys\":\"uint the maximum number of keys\",\"_newExpirationDuration\":\"the new amount of time for each key purchased or type(uint).max for a non-expiring key\"}},\"updateRefundPenalty(uint256,uint256)\":{\"details\":\"Throws if called by other than a Lock manager\",\"params\":{\"_freeTrialLength\":\"The new duration of free trials for this lock\",\"_refundPenaltyBasisPoints\":\"The new refund penaly in basis-points(bps)\"}},\"updateTransferFee(uint256)\":{\"details\":\"Throws if called by other than a Lock manager\",\"params\":{\"_transferFeeBasisPoints\":\"The new transfer fee in basis-points(bps). Ex: 200 bps = 2%\"}},\"withdraw(address,address,uint256)\":{\"details\":\"Called by lock manager to withdraw all funds from the lock\",\"params\":{\"_amount\":\"specifies the max amount to withdraw, which may be reduced when considering the available balance. Set to 0 or MAX_UINT to withdraw everything. -- however be wary of draining funds as it breaks the `cancelAndRefund` and `expireAndRefundFor` use cases.\",\"_recipient\":\"specifies the address that will receive the tokens\",\"_tokenAddress\":\"specifies the token address to withdraw or 0 for ETH. This is usually the same as `tokenAddress` in MixinFunds.\"}}},\"title\":\"The PublicLock Interface\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"balanceOf(address)\":{\"notice\":\"In the specific case of a Lock, `balanceOf` returns only the tokens with a valid expiration timerange\"},\"burn(uint256)\":{\"notice\":\"Deactivate an existing keythe key will be expired and ownership records will be destroyed\"},\"cancelAndRefund(uint256)\":{\"notice\":\"cancel is enabled with a 10% penalty by default on all Locks.\"},\"gasRefundValue()\":{\"notice\":\"_gasRefundValue price in wei or token in smallest price unit\"},\"getApproved(uint256)\":{\"notice\":\"Get the approved address for a single NFT\"},\"getCancelAndRefundValue(uint256)\":{\"notice\":\"Due to the time required to mine a tx, the actual refund amount will be lower than what the user reads from this call.\"},\"getHasValidKey(address)\":{\"notice\":\"Checks if the user has a non-expired key.\"},\"getRoleAdmin(bytes32)\":{\"notice\":\"Innherited from Open Zeppelin AccessControl.sol\"},\"getTransferFee(uint256,uint256)\":{\"notice\":\"Determines how much of a fee would need to be paid in order to transfer to another account. This is pro-rated so the fee goes down overtime.\"},\"grantKeyExtension(uint256,uint256)\":{\"notice\":\"Allows the Lock owner to extend an existing keys with no charge.\"},\"grantKeys(address[],uint256[],address[])\":{\"notice\":\"Allows a Lock manager to give a collection of users a key with no charge. Each key may be assigned a different expiration date.\"},\"initialize(address,uint256,address,uint256,uint256,string)\":{\"notice\":\"Functions\"},\"isValidKey(uint256)\":{\"notice\":\"Check if a certain key is validthis makes use of the onValidKeyHook if it is set\"},\"lendKey(address,address,uint256)\":{\"notice\":\"Lending a key allows you to transfer the token while retaining the ownerships right by setting yourself as a key manager first.This function can only be called by 1) the key owner when no key manager is set or 2) the key manager. After calling the function, the `_recipent` will be the new owner, and the sender of the tx will become the key manager.\"},\"mergeKeys(uint256,uint256,uint256)\":{\"notice\":\"Merge existing keys\"},\"migrate(bytes)\":{\"notice\":\"Migrate data from the previous single owner => key mapping to the new data structure w multiple tokens.\"},\"name()\":{\"notice\":\"A descriptive name for a collection of NFTs in this contract\"},\"numberOfOwners()\":{\"notice\":\"Public function which returns the total number of unique owners (both expired and valid). This may be larger than totalSupply.\"},\"onKeyCancelHook()\":{\"notice\":\"Returns the address of the `onKeyCancelHook` hook.\"},\"onKeyExtendHook()\":{\"notice\":\"Returns the address of the `onKeyExtendHook` hook.\"},\"onKeyGrantHook()\":{\"notice\":\"Returns the address of the `onKeyGrantHook` hook.\"},\"onKeyPurchaseHook()\":{\"notice\":\"Returns the address of the `onKeyPurchaseHook` hook.\"},\"onKeyTransferHook()\":{\"notice\":\"Returns the address of the `onKeyTransferHook` hook.\"},\"onTokenURIHook()\":{\"notice\":\"Returns the address of the `onTokenURIHook` hook.\"},\"onValidKeyHook()\":{\"notice\":\"Returns the address of the `onValidKeyHook` hook.\"},\"owner()\":{\"notice\":\"`owner()` is provided as an helper to mimick the `Ownable` contract ABI. The `Ownable` logic is used by many 3rd party services to determine contract ownership - e.g. who is allowed to edit metadata on Opensea.This logic is NOT used internally by the Unlock Protocol and is made available only as a convenience helper.\"},\"publicLockVersion()\":{\"notice\":\"The version number of the current implementation on this network.\"},\"purchase(uint256[],address[],address[],address[],bytes[])\":{\"notice\":\"when called for an existing and non-expired key, the `_keyManager` param will be ignored\"},\"purchasePriceFor(address,address,bytes)\":{\"notice\":\"returns the minimum price paid for a purchase with these params.\"},\"referrerFees(address)\":{\"notice\":\"Returns the percentage of the keyPrice to be sent to the referrer (in basis points)\"},\"renewMembershipFor(uint256,address)\":{\"notice\":\"Renew a given tokenonly works for non-free, expiring, ERC20 locks\"},\"schemaVersion()\":{\"notice\":\"Returns the version number of the data schema currently used by the lockif this is different from `publicLockVersion`, then the ability to purchase, grant or extend keys is disabled.\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"disabled when transfers are disabled\"},\"setEventHooks(address,address,address,address,address,address,address)\":{\"notice\":\"Allows a Lock manager to add or remove an event hook\"},\"setKeyManagerOf(uint256,address)\":{\"notice\":\"Update transfer and cancel rights for a given key\"},\"setLockMetadata(string,string,string)\":{\"notice\":\"Allows the Lock owner to assign\"},\"setReferrerFee(address,uint256)\":{\"notice\":\"Set a specific percentage of the keyPrice to be sent to the referrer while purchasing, extending or renewing a key.\"},\"shareKey(address,uint256,uint256)\":{\"notice\":\"Allows the key owner to safely share their key (parent key) by transferring a portion of the remaining time to a new key (child key).\"},\"supportsInterface(bytes4)\":{\"notice\":\"From ERC165.sol\"},\"tokenURI(uint256)\":{\"notice\":\"A distinct Uniform Resource Identifier (URI) for a given asset.\"},\"totalKeys(address)\":{\"notice\":\"Returns the number of keys owned by `_keyOwner` (expired or not)\"},\"totalSupply()\":{\"notice\":\"Returns the total number of keys, including non-valid ones\"},\"transferFrom(address,address,uint256)\":{\"notice\":\"an ERC721-like function to transfer a token from one account to another.\"},\"unlendKey(address,uint256)\":{\"notice\":\"Unlend is called when you have lent a key and want to claim its full ownership back.\"},\"updateKeyPricing(uint256,address)\":{\"notice\":\"A function which lets a Lock manager of the lock to change the price for future purchases.\"},\"updateLockConfig(uint256,uint256,uint256)\":{\"notice\":\"Update the main key properties for the entire lock: - default duration of each key - the maximum number of keys the lock can edit - the maximum number of keys a single address can holdkeys previously bought are unaffected by this changes in expiration duration (i.e. existing keys timestamps are not recalculated/updated)\"},\"updateRefundPenalty(uint256,uint256)\":{\"notice\":\"Allow a Lock manager to change the refund penalty.\"},\"updateSchemaVersion()\":{\"notice\":\"Set the schema version to the latestonly lock manager call call this\"},\"updateTransferFee(uint256)\":{\"notice\":\"Allow a Lock manager to change the transfer fee.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol\":\"IPublicLockV13\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol\":{\"keccak256\":\"0xcc5a3a09c6135b624989959c1e2ce86299da964b8c2bba7c51ffa6988c70e05d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b0e4a97444bd5a3fee04a52d68cc9f7833795257d9e2dfac6d8f96b6256c3b76\",\"dweb:/ipfs/QmZENp6w6ax9UiiyZ28oYBUdGCUNihoXbDT64igtFDTQGE\"]}},\"version\":1}" + } + }, + "contracts/UnlockPrimeHookWithRecipientAndFallback.sol": { + "IUniswapOracleV3": { + "abi": [ + { + "inputs": [], + "name": "PERIOD", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenOut", + "type": "address" + } + ], + "name": "consult", + "outputs": [ + { + "internalType": "uint256", + "name": "_amountOut", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "factory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenIn", + "type": "address" + }, + { + "internalType": "address", + "name": "_tokenOut", + "type": "address" + } + ], + "name": "update", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tokenIn", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_amountIn", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_tokenOut", + "type": "address" + } + ], + "name": "updateAndConsult", + "outputs": [ + { + "internalType": "uint256", + "name": "_amountOut", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "functionDebugData": {}, + "generatedSources": [], + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "functionDebugData": {}, + "generatedSources": [], + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "PERIOD()": "b4d1d795", + "consult(address,uint256,address)": "8c86f1e4", + "factory()": "c45a0155", + "update(address,address)": "c640752d", + "updateAndConsult(address,uint256,address)": "c1e553e7" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"PERIOD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"}],\"name\":\"consult\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"}],\"name\":\"update\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"}],\"name\":\"updateAndConsult\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"_amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/UnlockPrimeHookWithRecipientAndFallback.sol\":\"IUniswapOracleV3\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol\":{\"keccak256\":\"0xcc5a3a09c6135b624989959c1e2ce86299da964b8c2bba7c51ffa6988c70e05d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b0e4a97444bd5a3fee04a52d68cc9f7833795257d9e2dfac6d8f96b6256c3b76\",\"dweb:/ipfs/QmZENp6w6ax9UiiyZ28oYBUdGCUNihoXbDT64igtFDTQGE\"]},\"contracts/UnlockPrimeHookWithRecipientAndFallback.sol\":{\"keccak256\":\"0xd3a8476f78157a937b882d3e6ed4a4d9b19c891528df36bb40a5fdac46ab5bd4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f0dec8ad7dd674d0d6a4678ce2997b7221f48c8e083eaa2ecf876f02236a5810\",\"dweb:/ipfs/Qmeu3B7vkaiLXcPVqAqYyRABwSeXWZPkyPTj8Mm2s5Ltjd\"]}},\"version\":1}" + }, + "UnlockPrimeHookWithRecipientAndFallback": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_unlockPrime", + "type": "address" + }, + { + "internalType": "address", + "name": "_oracle", + "type": "address" + }, + { + "internalType": "address", + "name": "_weth", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "OracleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "RefundPaid", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "RefundSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "UnlockPrimeSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "WethSet", + "type": "event" + }, + { + "inputs": [], + "name": "claimRefund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_unlockPrime", + "type": "address" + }, + { + "internalType": "address", + "name": "_oracle", + "type": "address" + }, + { + "internalType": "address", + "name": "_weth", + "type": "address" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "keyPurchasePrice", + "outputs": [ + { + "internalType": "uint256", + "name": "minKeyPrice", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "onKeyExtend", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "onKeyPurchase", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "oracle", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "refunds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_oracle", + "type": "address" + } + ], + "name": "setOracle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_unlockPrime", + "type": "address" + } + ], + "name": "setUnlockPrime", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_weth", + "type": "address" + } + ], + "name": "setWeth", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unlockPrime", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "weth", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "evm": { + "bytecode": { + "functionDebugData": { + "@_748": { + "entryPoint": null, + "id": 748, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@initialize_794": { + "entryPoint": 75, + "id": 794, + "parameterSlots": 3, + "returnSlots": 0 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 660, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_address_fromMemory": { + "entryPoint": 681, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 889, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack": { + "entryPoint": 822, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 904, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 857, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_string_memory_ptr_fromStack": { + "entryPoint": 764, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 619, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 587, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 582, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0": { + "entryPoint": 781, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 637, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:3010:2", + "nodeType": "YulBlock", + "src": "0:3010:2", + "statements": [ + { + "body": { + "nativeSrc": "47:35:2", + "nodeType": "YulBlock", + "src": "47:35:2", + "statements": [ + { + "nativeSrc": "57:19:2", + "nodeType": "YulAssignment", + "src": "57:19:2", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "73:2:2", + "nodeType": "YulLiteral", + "src": "73:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "67:5:2", + "nodeType": "YulIdentifier", + "src": "67:5:2" + }, + "nativeSrc": "67:9:2", + "nodeType": "YulFunctionCall", + "src": "67:9:2" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "57:6:2", + "nodeType": "YulIdentifier", + "src": "57:6:2" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nativeSrc": "7:75:2", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "40:6:2", + "nodeType": "YulTypedName", + "src": "40:6:2", + "type": "" + } + ], + "src": "7:75:2" + }, + { + "body": { + "nativeSrc": "177:28:2", + "nodeType": "YulBlock", + "src": "177:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "194:1:2", + "nodeType": "YulLiteral", + "src": "194:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "197:1:2", + "nodeType": "YulLiteral", + "src": "197:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "187:6:2", + "nodeType": "YulIdentifier", + "src": "187:6:2" + }, + "nativeSrc": "187:12:2", + "nodeType": "YulFunctionCall", + "src": "187:12:2" + }, + "nativeSrc": "187:12:2", + "nodeType": "YulExpressionStatement", + "src": "187:12:2" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "88:117:2", + "nodeType": "YulFunctionDefinition", + "src": "88:117:2" + }, + { + "body": { + "nativeSrc": "300:28:2", + "nodeType": "YulBlock", + "src": "300:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "317:1:2", + "nodeType": "YulLiteral", + "src": "317:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "320:1:2", + "nodeType": "YulLiteral", + "src": "320:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "310:6:2", + "nodeType": "YulIdentifier", + "src": "310:6:2" + }, + "nativeSrc": "310:12:2", + "nodeType": "YulFunctionCall", + "src": "310:12:2" + }, + "nativeSrc": "310:12:2", + "nodeType": "YulExpressionStatement", + "src": "310:12:2" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nativeSrc": "211:117:2", + "nodeType": "YulFunctionDefinition", + "src": "211:117:2" + }, + { + "body": { + "nativeSrc": "379:81:2", + "nodeType": "YulBlock", + "src": "379:81:2", + "statements": [ + { + "nativeSrc": "389:65:2", + "nodeType": "YulAssignment", + "src": "389:65:2", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "404:5:2", + "nodeType": "YulIdentifier", + "src": "404:5:2" + }, + { + "kind": "number", + "nativeSrc": "411:42:2", + "nodeType": "YulLiteral", + "src": "411:42:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "400:3:2", + "nodeType": "YulIdentifier", + "src": "400:3:2" + }, + "nativeSrc": "400:54:2", + "nodeType": "YulFunctionCall", + "src": "400:54:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "389:7:2", + "nodeType": "YulIdentifier", + "src": "389:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nativeSrc": "334:126:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "361:5:2", + "nodeType": "YulTypedName", + "src": "361:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "371:7:2", + "nodeType": "YulTypedName", + "src": "371:7:2", + "type": "" + } + ], + "src": "334:126:2" + }, + { + "body": { + "nativeSrc": "511:51:2", + "nodeType": "YulBlock", + "src": "511:51:2", + "statements": [ + { + "nativeSrc": "521:35:2", + "nodeType": "YulAssignment", + "src": "521:35:2", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "550:5:2", + "nodeType": "YulIdentifier", + "src": "550:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nativeSrc": "532:17:2", + "nodeType": "YulIdentifier", + "src": "532:17:2" + }, + "nativeSrc": "532:24:2", + "nodeType": "YulFunctionCall", + "src": "532:24:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "521:7:2", + "nodeType": "YulIdentifier", + "src": "521:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nativeSrc": "466:96:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "493:5:2", + "nodeType": "YulTypedName", + "src": "493:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "503:7:2", + "nodeType": "YulTypedName", + "src": "503:7:2", + "type": "" + } + ], + "src": "466:96:2" + }, + { + "body": { + "nativeSrc": "611:79:2", + "nodeType": "YulBlock", + "src": "611:79:2", + "statements": [ + { + "body": { + "nativeSrc": "668:16:2", + "nodeType": "YulBlock", + "src": "668:16:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "677:1:2", + "nodeType": "YulLiteral", + "src": "677:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "680:1:2", + "nodeType": "YulLiteral", + "src": "680:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "670:6:2", + "nodeType": "YulIdentifier", + "src": "670:6:2" + }, + "nativeSrc": "670:12:2", + "nodeType": "YulFunctionCall", + "src": "670:12:2" + }, + "nativeSrc": "670:12:2", + "nodeType": "YulExpressionStatement", + "src": "670:12:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "634:5:2", + "nodeType": "YulIdentifier", + "src": "634:5:2" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "659:5:2", + "nodeType": "YulIdentifier", + "src": "659:5:2" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nativeSrc": "641:17:2", + "nodeType": "YulIdentifier", + "src": "641:17:2" + }, + "nativeSrc": "641:24:2", + "nodeType": "YulFunctionCall", + "src": "641:24:2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "631:2:2", + "nodeType": "YulIdentifier", + "src": "631:2:2" + }, + "nativeSrc": "631:35:2", + "nodeType": "YulFunctionCall", + "src": "631:35:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "624:6:2", + "nodeType": "YulIdentifier", + "src": "624:6:2" + }, + "nativeSrc": "624:43:2", + "nodeType": "YulFunctionCall", + "src": "624:43:2" + }, + "nativeSrc": "621:63:2", + "nodeType": "YulIf", + "src": "621:63:2" + } + ] + }, + "name": "validator_revert_t_address", + "nativeSrc": "568:122:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "604:5:2", + "nodeType": "YulTypedName", + "src": "604:5:2", + "type": "" + } + ], + "src": "568:122:2" + }, + { + "body": { + "nativeSrc": "759:80:2", + "nodeType": "YulBlock", + "src": "759:80:2", + "statements": [ + { + "nativeSrc": "769:22:2", + "nodeType": "YulAssignment", + "src": "769:22:2", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "784:6:2", + "nodeType": "YulIdentifier", + "src": "784:6:2" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "778:5:2", + "nodeType": "YulIdentifier", + "src": "778:5:2" + }, + "nativeSrc": "778:13:2", + "nodeType": "YulFunctionCall", + "src": "778:13:2" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "769:5:2", + "nodeType": "YulIdentifier", + "src": "769:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "827:5:2", + "nodeType": "YulIdentifier", + "src": "827:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nativeSrc": "800:26:2", + "nodeType": "YulIdentifier", + "src": "800:26:2" + }, + "nativeSrc": "800:33:2", + "nodeType": "YulFunctionCall", + "src": "800:33:2" + }, + "nativeSrc": "800:33:2", + "nodeType": "YulExpressionStatement", + "src": "800:33:2" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nativeSrc": "696:143:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "737:6:2", + "nodeType": "YulTypedName", + "src": "737:6:2", + "type": "" + }, + { + "name": "end", + "nativeSrc": "745:3:2", + "nodeType": "YulTypedName", + "src": "745:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "753:5:2", + "nodeType": "YulTypedName", + "src": "753:5:2", + "type": "" + } + ], + "src": "696:143:2" + }, + { + "body": { + "nativeSrc": "956:552:2", + "nodeType": "YulBlock", + "src": "956:552:2", + "statements": [ + { + "body": { + "nativeSrc": "1002:83:2", + "nodeType": "YulBlock", + "src": "1002:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "1004:77:2", + "nodeType": "YulIdentifier", + "src": "1004:77:2" + }, + "nativeSrc": "1004:79:2", + "nodeType": "YulFunctionCall", + "src": "1004:79:2" + }, + "nativeSrc": "1004:79:2", + "nodeType": "YulExpressionStatement", + "src": "1004:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "977:7:2", + "nodeType": "YulIdentifier", + "src": "977:7:2" + }, + { + "name": "headStart", + "nativeSrc": "986:9:2", + "nodeType": "YulIdentifier", + "src": "986:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "973:3:2", + "nodeType": "YulIdentifier", + "src": "973:3:2" + }, + "nativeSrc": "973:23:2", + "nodeType": "YulFunctionCall", + "src": "973:23:2" + }, + { + "kind": "number", + "nativeSrc": "998:2:2", + "nodeType": "YulLiteral", + "src": "998:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "969:3:2", + "nodeType": "YulIdentifier", + "src": "969:3:2" + }, + "nativeSrc": "969:32:2", + "nodeType": "YulFunctionCall", + "src": "969:32:2" + }, + "nativeSrc": "966:119:2", + "nodeType": "YulIf", + "src": "966:119:2" + }, + { + "nativeSrc": "1095:128:2", + "nodeType": "YulBlock", + "src": "1095:128:2", + "statements": [ + { + "nativeSrc": "1110:15:2", + "nodeType": "YulVariableDeclaration", + "src": "1110:15:2", + "value": { + "kind": "number", + "nativeSrc": "1124:1:2", + "nodeType": "YulLiteral", + "src": "1124:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1114:6:2", + "nodeType": "YulTypedName", + "src": "1114:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "1139:74:2", + "nodeType": "YulAssignment", + "src": "1139:74:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1185:9:2", + "nodeType": "YulIdentifier", + "src": "1185:9:2" + }, + { + "name": "offset", + "nativeSrc": "1196:6:2", + "nodeType": "YulIdentifier", + "src": "1196:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1181:3:2", + "nodeType": "YulIdentifier", + "src": "1181:3:2" + }, + "nativeSrc": "1181:22:2", + "nodeType": "YulFunctionCall", + "src": "1181:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "1205:7:2", + "nodeType": "YulIdentifier", + "src": "1205:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nativeSrc": "1149:31:2", + "nodeType": "YulIdentifier", + "src": "1149:31:2" + }, + "nativeSrc": "1149:64:2", + "nodeType": "YulFunctionCall", + "src": "1149:64:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1139:6:2", + "nodeType": "YulIdentifier", + "src": "1139:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "1233:129:2", + "nodeType": "YulBlock", + "src": "1233:129:2", + "statements": [ + { + "nativeSrc": "1248:16:2", + "nodeType": "YulVariableDeclaration", + "src": "1248:16:2", + "value": { + "kind": "number", + "nativeSrc": "1262:2:2", + "nodeType": "YulLiteral", + "src": "1262:2:2", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1252:6:2", + "nodeType": "YulTypedName", + "src": "1252:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "1278:74:2", + "nodeType": "YulAssignment", + "src": "1278:74:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1324:9:2", + "nodeType": "YulIdentifier", + "src": "1324:9:2" + }, + { + "name": "offset", + "nativeSrc": "1335:6:2", + "nodeType": "YulIdentifier", + "src": "1335:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1320:3:2", + "nodeType": "YulIdentifier", + "src": "1320:3:2" + }, + "nativeSrc": "1320:22:2", + "nodeType": "YulFunctionCall", + "src": "1320:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "1344:7:2", + "nodeType": "YulIdentifier", + "src": "1344:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nativeSrc": "1288:31:2", + "nodeType": "YulIdentifier", + "src": "1288:31:2" + }, + "nativeSrc": "1288:64:2", + "nodeType": "YulFunctionCall", + "src": "1288:64:2" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1278:6:2", + "nodeType": "YulIdentifier", + "src": "1278:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "1372:129:2", + "nodeType": "YulBlock", + "src": "1372:129:2", + "statements": [ + { + "nativeSrc": "1387:16:2", + "nodeType": "YulVariableDeclaration", + "src": "1387:16:2", + "value": { + "kind": "number", + "nativeSrc": "1401:2:2", + "nodeType": "YulLiteral", + "src": "1401:2:2", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1391:6:2", + "nodeType": "YulTypedName", + "src": "1391:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "1417:74:2", + "nodeType": "YulAssignment", + "src": "1417:74:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1463:9:2", + "nodeType": "YulIdentifier", + "src": "1463:9:2" + }, + { + "name": "offset", + "nativeSrc": "1474:6:2", + "nodeType": "YulIdentifier", + "src": "1474:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1459:3:2", + "nodeType": "YulIdentifier", + "src": "1459:3:2" + }, + "nativeSrc": "1459:22:2", + "nodeType": "YulFunctionCall", + "src": "1459:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "1483:7:2", + "nodeType": "YulIdentifier", + "src": "1483:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nativeSrc": "1427:31:2", + "nodeType": "YulIdentifier", + "src": "1427:31:2" + }, + "nativeSrc": "1427:64:2", + "nodeType": "YulFunctionCall", + "src": "1427:64:2" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "1417:6:2", + "nodeType": "YulIdentifier", + "src": "1417:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_address_fromMemory", + "nativeSrc": "845:663:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "910:9:2", + "nodeType": "YulTypedName", + "src": "910:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "921:7:2", + "nodeType": "YulTypedName", + "src": "921:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "933:6:2", + "nodeType": "YulTypedName", + "src": "933:6:2", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "941:6:2", + "nodeType": "YulTypedName", + "src": "941:6:2", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "949:6:2", + "nodeType": "YulTypedName", + "src": "949:6:2", + "type": "" + } + ], + "src": "845:663:2" + }, + { + "body": { + "nativeSrc": "1610:73:2", + "nodeType": "YulBlock", + "src": "1610:73:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1627:3:2", + "nodeType": "YulIdentifier", + "src": "1627:3:2" + }, + { + "name": "length", + "nativeSrc": "1632:6:2", + "nodeType": "YulIdentifier", + "src": "1632:6:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1620:6:2", + "nodeType": "YulIdentifier", + "src": "1620:6:2" + }, + "nativeSrc": "1620:19:2", + "nodeType": "YulFunctionCall", + "src": "1620:19:2" + }, + "nativeSrc": "1620:19:2", + "nodeType": "YulExpressionStatement", + "src": "1620:19:2" + }, + { + "nativeSrc": "1648:29:2", + "nodeType": "YulAssignment", + "src": "1648:29:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1667:3:2", + "nodeType": "YulIdentifier", + "src": "1667:3:2" + }, + { + "kind": "number", + "nativeSrc": "1672:4:2", + "nodeType": "YulLiteral", + "src": "1672:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1663:3:2", + "nodeType": "YulIdentifier", + "src": "1663:3:2" + }, + "nativeSrc": "1663:14:2", + "nodeType": "YulFunctionCall", + "src": "1663:14:2" + }, + "variableNames": [ + { + "name": "updated_pos", + "nativeSrc": "1648:11:2", + "nodeType": "YulIdentifier", + "src": "1648:11:2" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "1514:169:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "1582:3:2", + "nodeType": "YulTypedName", + "src": "1582:3:2", + "type": "" + }, + { + "name": "length", + "nativeSrc": "1587:6:2", + "nodeType": "YulTypedName", + "src": "1587:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nativeSrc": "1598:11:2", + "nodeType": "YulTypedName", + "src": "1598:11:2", + "type": "" + } + ], + "src": "1514:169:2" + }, + { + "body": { + "nativeSrc": "1795:63:2", + "nodeType": "YulBlock", + "src": "1795:63:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "1817:6:2", + "nodeType": "YulIdentifier", + "src": "1817:6:2" + }, + { + "kind": "number", + "nativeSrc": "1825:1:2", + "nodeType": "YulLiteral", + "src": "1825:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1813:3:2", + "nodeType": "YulIdentifier", + "src": "1813:3:2" + }, + "nativeSrc": "1813:14:2", + "nodeType": "YulFunctionCall", + "src": "1813:14:2" + }, + { + "hexValue": "416c726561647920696e697469616c697a6564", + "kind": "string", + "nativeSrc": "1829:21:2", + "nodeType": "YulLiteral", + "src": "1829:21:2", + "type": "", + "value": "Already initialized" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1806:6:2", + "nodeType": "YulIdentifier", + "src": "1806:6:2" + }, + "nativeSrc": "1806:45:2", + "nodeType": "YulFunctionCall", + "src": "1806:45:2" + }, + "nativeSrc": "1806:45:2", + "nodeType": "YulExpressionStatement", + "src": "1806:45:2" + } + ] + }, + "name": "store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0", + "nativeSrc": "1689:169:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nativeSrc": "1787:6:2", + "nodeType": "YulTypedName", + "src": "1787:6:2", + "type": "" + } + ], + "src": "1689:169:2" + }, + { + "body": { + "nativeSrc": "2010:220:2", + "nodeType": "YulBlock", + "src": "2010:220:2", + "statements": [ + { + "nativeSrc": "2020:74:2", + "nodeType": "YulAssignment", + "src": "2020:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2086:3:2", + "nodeType": "YulIdentifier", + "src": "2086:3:2" + }, + { + "kind": "number", + "nativeSrc": "2091:2:2", + "nodeType": "YulLiteral", + "src": "2091:2:2", + "type": "", + "value": "19" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "2027:58:2", + "nodeType": "YulIdentifier", + "src": "2027:58:2" + }, + "nativeSrc": "2027:67:2", + "nodeType": "YulFunctionCall", + "src": "2027:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "2020:3:2", + "nodeType": "YulIdentifier", + "src": "2020:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2192:3:2", + "nodeType": "YulIdentifier", + "src": "2192:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0", + "nativeSrc": "2103:88:2", + "nodeType": "YulIdentifier", + "src": "2103:88:2" + }, + "nativeSrc": "2103:93:2", + "nodeType": "YulFunctionCall", + "src": "2103:93:2" + }, + "nativeSrc": "2103:93:2", + "nodeType": "YulExpressionStatement", + "src": "2103:93:2" + }, + { + "nativeSrc": "2205:19:2", + "nodeType": "YulAssignment", + "src": "2205:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2216:3:2", + "nodeType": "YulIdentifier", + "src": "2216:3:2" + }, + { + "kind": "number", + "nativeSrc": "2221:2:2", + "nodeType": "YulLiteral", + "src": "2221:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2212:3:2", + "nodeType": "YulIdentifier", + "src": "2212:3:2" + }, + "nativeSrc": "2212:12:2", + "nodeType": "YulFunctionCall", + "src": "2212:12:2" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "2205:3:2", + "nodeType": "YulIdentifier", + "src": "2205:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack", + "nativeSrc": "1864:366:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "1998:3:2", + "nodeType": "YulTypedName", + "src": "1998:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "2006:3:2", + "nodeType": "YulTypedName", + "src": "2006:3:2", + "type": "" + } + ], + "src": "1864:366:2" + }, + { + "body": { + "nativeSrc": "2407:248:2", + "nodeType": "YulBlock", + "src": "2407:248:2", + "statements": [ + { + "nativeSrc": "2417:26:2", + "nodeType": "YulAssignment", + "src": "2417:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2429:9:2", + "nodeType": "YulIdentifier", + "src": "2429:9:2" + }, + { + "kind": "number", + "nativeSrc": "2440:2:2", + "nodeType": "YulLiteral", + "src": "2440:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2425:3:2", + "nodeType": "YulIdentifier", + "src": "2425:3:2" + }, + "nativeSrc": "2425:18:2", + "nodeType": "YulFunctionCall", + "src": "2425:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2417:4:2", + "nodeType": "YulIdentifier", + "src": "2417:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2464:9:2", + "nodeType": "YulIdentifier", + "src": "2464:9:2" + }, + { + "kind": "number", + "nativeSrc": "2475:1:2", + "nodeType": "YulLiteral", + "src": "2475:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2460:3:2", + "nodeType": "YulIdentifier", + "src": "2460:3:2" + }, + "nativeSrc": "2460:17:2", + "nodeType": "YulFunctionCall", + "src": "2460:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "2483:4:2", + "nodeType": "YulIdentifier", + "src": "2483:4:2" + }, + { + "name": "headStart", + "nativeSrc": "2489:9:2", + "nodeType": "YulIdentifier", + "src": "2489:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "2479:3:2", + "nodeType": "YulIdentifier", + "src": "2479:3:2" + }, + "nativeSrc": "2479:20:2", + "nodeType": "YulFunctionCall", + "src": "2479:20:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2453:6:2", + "nodeType": "YulIdentifier", + "src": "2453:6:2" + }, + "nativeSrc": "2453:47:2", + "nodeType": "YulFunctionCall", + "src": "2453:47:2" + }, + "nativeSrc": "2453:47:2", + "nodeType": "YulExpressionStatement", + "src": "2453:47:2" + }, + { + "nativeSrc": "2509:139:2", + "nodeType": "YulAssignment", + "src": "2509:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nativeSrc": "2643:4:2", + "nodeType": "YulIdentifier", + "src": "2643:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack", + "nativeSrc": "2517:124:2", + "nodeType": "YulIdentifier", + "src": "2517:124:2" + }, + "nativeSrc": "2517:131:2", + "nodeType": "YulFunctionCall", + "src": "2517:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2509:4:2", + "nodeType": "YulIdentifier", + "src": "2509:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "2236:419:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2387:9:2", + "nodeType": "YulTypedName", + "src": "2387:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2402:4:2", + "nodeType": "YulTypedName", + "src": "2402:4:2", + "type": "" + } + ], + "src": "2236:419:2" + }, + { + "body": { + "nativeSrc": "2726:53:2", + "nodeType": "YulBlock", + "src": "2726:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "2743:3:2", + "nodeType": "YulIdentifier", + "src": "2743:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2766:5:2", + "nodeType": "YulIdentifier", + "src": "2766:5:2" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nativeSrc": "2748:17:2", + "nodeType": "YulIdentifier", + "src": "2748:17:2" + }, + "nativeSrc": "2748:24:2", + "nodeType": "YulFunctionCall", + "src": "2748:24:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2736:6:2", + "nodeType": "YulIdentifier", + "src": "2736:6:2" + }, + "nativeSrc": "2736:37:2", + "nodeType": "YulFunctionCall", + "src": "2736:37:2" + }, + "nativeSrc": "2736:37:2", + "nodeType": "YulExpressionStatement", + "src": "2736:37:2" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "2661:118:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2714:5:2", + "nodeType": "YulTypedName", + "src": "2714:5:2", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "2721:3:2", + "nodeType": "YulTypedName", + "src": "2721:3:2", + "type": "" + } + ], + "src": "2661:118:2" + }, + { + "body": { + "nativeSrc": "2883:124:2", + "nodeType": "YulBlock", + "src": "2883:124:2", + "statements": [ + { + "nativeSrc": "2893:26:2", + "nodeType": "YulAssignment", + "src": "2893:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2905:9:2", + "nodeType": "YulIdentifier", + "src": "2905:9:2" + }, + { + "kind": "number", + "nativeSrc": "2916:2:2", + "nodeType": "YulLiteral", + "src": "2916:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2901:3:2", + "nodeType": "YulIdentifier", + "src": "2901:3:2" + }, + "nativeSrc": "2901:18:2", + "nodeType": "YulFunctionCall", + "src": "2901:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "2893:4:2", + "nodeType": "YulIdentifier", + "src": "2893:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "2973:6:2", + "nodeType": "YulIdentifier", + "src": "2973:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "2986:9:2", + "nodeType": "YulIdentifier", + "src": "2986:9:2" + }, + { + "kind": "number", + "nativeSrc": "2997:1:2", + "nodeType": "YulLiteral", + "src": "2997:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2982:3:2", + "nodeType": "YulIdentifier", + "src": "2982:3:2" + }, + "nativeSrc": "2982:17:2", + "nodeType": "YulFunctionCall", + "src": "2982:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "2929:43:2", + "nodeType": "YulIdentifier", + "src": "2929:43:2" + }, + "nativeSrc": "2929:71:2", + "nodeType": "YulFunctionCall", + "src": "2929:71:2" + }, + "nativeSrc": "2929:71:2", + "nodeType": "YulExpressionStatement", + "src": "2929:71:2" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "2785:222:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2855:9:2", + "nodeType": "YulTypedName", + "src": "2855:9:2", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "2867:6:2", + "nodeType": "YulTypedName", + "src": "2867:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "2878:4:2", + "nodeType": "YulTypedName", + "src": "2878:4:2", + "type": "" + } + ], + "src": "2785:222:2" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_addresst_addresst_address_fromMemory(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0(memPtr) {\n\n mstore(add(memPtr, 0), \"Already initialized\")\n\n }\n\n function abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 19)\n store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n}\n", + "id": 2, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50604051611f0f380380611f0f833981810160405281019061003291906102a9565b61004383838361004b60201b60201c565b5050506103a3565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146100da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d190610359565b60405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5836040516101499190610388565b60405180910390a181600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa826040516101c19190610388565b60405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf9816040516102399190610388565b60405180910390a1505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102768261024b565b9050919050565b6102868161026b565b811461029157600080fd5b50565b6000815190506102a38161027d565b92915050565b6000806000606084860312156102c2576102c1610246565b5b60006102d086828701610294565b93505060206102e186828701610294565b92505060406102f286828701610294565b9150509250925092565b600082825260208201905092915050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b60006103436013836102fc565b915061034e8261030d565b602082019050919050565b6000602082019050818103600083015261037281610336565b9050919050565b6103828161026b565b82525050565b600060208201905061039d6000830184610379565b92915050565b611b5d806103b26000396000f3fe6080604052600436106100ab5760003560e01c80637dc0d1d0116100645780637dc0d1d0146101d75780638295d3be14610202578063b5545a3c1461022b578063b8d1452f14610242578063c0c53b8b1461026b578063db7d7f8d14610294576100b2565b8063016b9680146100b7578063221c1fd1146100e05780633436247b1461011d5780633fc8cef31461015a5780635e895f29146101855780637adbf973146101ae576100b2565b366100b257005b600080fd5b3480156100c357600080fd5b506100de60048036038101906100d99190611388565b6102bf565b005b3480156100ec57600080fd5b5061010760048036038101906101029190611454565b610410565b60405161011491906114eb565b60405180910390f35b34801561012957600080fd5b50610144600480360381019061013f9190611506565b61048c565b60405161015191906114eb565b60405180910390f35b34801561016657600080fd5b5061016f6104b4565b60405161017c9190611555565b60405180910390f35b34801561019157600080fd5b506101ac60048036038101906101a79190611570565b6104da565b005b3480156101ba57600080fd5b506101d560048036038101906101d09190611632565b6105b0565b005b3480156101e357600080fd5b506101ec610704565b6040516101f99190611555565b60405180910390f35b34801561020e57600080fd5b5061022960048036038101906102249190611632565b61072a565b005b34801561023757600080fd5b5061024061087d565b005b34801561024e57600080fd5b5061026960048036038101906102649190611632565b610acf565b005b34801561027757600080fd5b50610292600480360381019061028d919061165f565b610c23565b005b3480156102a057600080fd5b506102a9610e1e565b6040516102b69190611555565b60405180910390f35b600033905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610409576104088173ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b815260040161035391906114eb565b602060405180830381865afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039491906116c7565b8273ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104039190611709565b610e42565b5b5050505050565b60003373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104819190611709565b905095945050505050565b600360205281600052604060002081600281106104a857600080fd5b01600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036105a6576105a5863373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a09190611709565b610e42565b5b5050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016106099190611555565b602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a919061176e565b610689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610680906117f8565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa816040516106f99190611555565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016107839190611555565b602060405180830381865afa1580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c4919061176e565b610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa906117f8565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5816040516108729190611555565b60405180910390a150565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002806020026040519081016040528092919082600280156108f5576020028201915b8154815260200190600101908083116108e1575b5050505050905060008160006002811061091257610911611818565b5b602002015111610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90611893565b60405180910390fd5b428160016002811061096c5761096b611818565b5b6020020151106109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a8906118ff565b60405180910390fd5b6040518060400160405280600060ff168152602001600060ff16815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020906002610a1b929190611248565b503373ffffffffffffffffffffffffffffffffffffffff166108fc82600060028110610a4a57610a49611818565b5b60200201519081150290604051600060405180830381858888f19350505050158015610a7a573d6000803e3d6000fd5b507f1fe70b87853839959e74387a76c2713282f77a4a0656bf8689058a0eea2891e03382600060028110610ab157610ab0611818565b5b6020020151604051610ac492919061191f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b8152600401610b289190611555565b602060405180830381865afa158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b69919061176e565b610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f906117f8565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610c189190611555565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990611994565b60405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c583604051610d219190611555565b60405180910390a181600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa82604051610d999190611555565b60405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610e119190611555565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d76ea586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed491906116c7565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1e553e78385600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401610f59939291906119b4565b6020604051808303816000875af1158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190611709565b90506000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060028110610ff257610ff1611818565b5b015490506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061104a57611049611818565b5b015490506000600a600b8561105f9190611a1a565b6110699190611a8b565b90506000621275004261107c9190611abc565b9050428310156110f9576040518060400160405280838661109d9190611abc565b815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209060026110f392919061128d565b5061115d565b604051806040016040528083815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090600261115b92919061128d565b505b7fa1d590fd2e594a4a50983c420b530fcf5ffe210e5203b51d6c022cb0d9ac4f8088600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600281106111d1576111d0611818565b5b0154600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061122557611224611818565b5b015460405161123693929190611af0565b60405180910390a15050505050505050565b826002810192821561127c579160200282015b8281111561127b578251829060ff1690559160200191906001019061125b565b5b50905061128991906112cd565b5090565b82600281019282156112bc579160200282015b828111156112bb5782518255916020019190600101906112a0565b5b5090506112c991906112cd565b5090565b5b808211156112e65760008160009055506001016112ce565b5090565b600080fd5b600080fd5b6000819050919050565b611307816112f4565b811461131257600080fd5b50565b600081359050611324816112fe565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113558261132a565b9050919050565b6113658161134a565b811461137057600080fd5b50565b6000813590506113828161135c565b92915050565b600080600080608085870312156113a2576113a16112ea565b5b60006113b087828801611315565b94505060206113c187828801611373565b93505060406113d287828801611315565b92505060606113e387828801611315565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112611414576114136113ef565b5b8235905067ffffffffffffffff811115611431576114306113f4565b5b60208301915083600182028301111561144d5761144c6113f9565b5b9250929050565b6000806000806000608086880312156114705761146f6112ea565b5b600061147e88828901611373565b955050602061148f88828901611373565b94505060406114a088828901611373565b935050606086013567ffffffffffffffff8111156114c1576114c06112ef565b5b6114cd888289016113fe565b92509250509295509295909350565b6114e5816112f4565b82525050565b600060208201905061150060008301846114dc565b92915050565b6000806040838503121561151d5761151c6112ea565b5b600061152b85828601611373565b925050602061153c85828601611315565b9150509250929050565b61154f8161134a565b82525050565b600060208201905061156a6000830184611546565b92915050565b60008060008060008060008060e0898b0312156115905761158f6112ea565b5b600061159e8b828c01611315565b98505060206115af8b828c01611373565b97505060406115c08b828c01611373565b96505060606115d18b828c01611373565b955050608089013567ffffffffffffffff8111156115f2576115f16112ef565b5b6115fe8b828c016113fe565b945094505060a06116118b828c01611315565b92505060c06116228b828c01611315565b9150509295985092959890939650565b600060208284031215611648576116476112ea565b5b600061165684828501611373565b91505092915050565b600080600060608486031215611678576116776112ea565b5b600061168686828701611373565b935050602061169786828701611373565b92505060406116a886828701611373565b9150509250925092565b6000815190506116c18161135c565b92915050565b6000602082840312156116dd576116dc6112ea565b5b60006116eb848285016116b2565b91505092915050565b600081519050611703816112fe565b92915050565b60006020828403121561171f5761171e6112ea565b5b600061172d848285016116f4565b91505092915050565b60008115159050919050565b61174b81611736565b811461175657600080fd5b50565b60008151905061176881611742565b92915050565b600060208284031215611784576117836112ea565b5b600061179284828501611759565b91505092915050565b600082825260208201905092915050565b7f43616c6c6572206973206e6f742061206c6f636b206d616e6167657200000000600082015250565b60006117e2601c8361179b565b91506117ed826117ac565b602082019050919050565b60006020820190508181036000830152611811816117d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e6f20726566756e6420617661696c61626c6500000000000000000000000000600082015250565b600061187d60138361179b565b915061188882611847565b602082019050919050565b600060208201905081810360008301526118ac81611870565b9050919050565b7f526566756e64206e6f7420617661696c61626c65207965740000000000000000600082015250565b60006118e960188361179b565b91506118f4826118b3565b602082019050919050565b60006020820190508181036000830152611918816118dc565b9050919050565b60006040820190506119346000830185611546565b61194160208301846114dc565b9392505050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b600061197e60138361179b565b915061198982611948565b602082019050919050565b600060208201905081810360008301526119ad81611971565b9050919050565b60006060820190506119c96000830186611546565b6119d660208301856114dc565b6119e36040830184611546565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a25826112f4565b9150611a30836112f4565b9250828202611a3e816112f4565b91508282048414831517611a5557611a546119eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611a96826112f4565b9150611aa1836112f4565b925082611ab157611ab0611a5c565b5b828204905092915050565b6000611ac7826112f4565b9150611ad2836112f4565b9250828201905080821115611aea57611ae96119eb565b5b92915050565b6000606082019050611b056000830186611546565b611b1260208301856114dc565b611b1f60408301846114dc565b94935050505056fea264697066735822122008e09c1d2f6886a7c207324f1ad1ebde84b56354e465f1407f57b1181e5ba6a764736f6c634300081b0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x1F0F CODESIZE SUB DUP1 PUSH2 0x1F0F DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE DUP2 ADD SWAP1 PUSH2 0x32 SWAP2 SWAP1 PUSH2 0x2A9 JUMP JUMPDEST PUSH2 0x43 DUP4 DUP4 DUP4 PUSH2 0x4B PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST POP POP POP PUSH2 0x3A3 JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xDA JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xD1 SWAP1 PUSH2 0x359 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x867B5AC058251D339D708E1228AC92D445562B0685454293FED8B862F87167C5 DUP4 PUSH1 0x40 MLOAD PUSH2 0x149 SWAP2 SWAP1 PUSH2 0x388 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP2 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x3F32684A32A11DABDBB8C0177DE80AA3AE36A004D75210335B49E544E48CD0AA DUP3 PUSH1 0x40 MLOAD PUSH2 0x1C1 SWAP2 SWAP1 PUSH2 0x388 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x13A533084DCBB1CFE0DBEA708EA977223C27C44D94F2FA3867A167C9CD340BF9 DUP2 PUSH1 0x40 MLOAD PUSH2 0x239 SWAP2 SWAP1 PUSH2 0x388 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x276 DUP3 PUSH2 0x24B JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x286 DUP2 PUSH2 0x26B JUMP JUMPDEST DUP2 EQ PUSH2 0x291 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x2A3 DUP2 PUSH2 0x27D JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x2C2 JUMPI PUSH2 0x2C1 PUSH2 0x246 JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x2D0 DUP7 DUP3 DUP8 ADD PUSH2 0x294 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x2E1 DUP7 DUP3 DUP8 ADD PUSH2 0x294 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x2F2 DUP7 DUP3 DUP8 ADD PUSH2 0x294 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343 PUSH1 0x13 DUP4 PUSH2 0x2FC JUMP JUMPDEST SWAP2 POP PUSH2 0x34E DUP3 PUSH2 0x30D JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x372 DUP2 PUSH2 0x336 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x382 DUP2 PUSH2 0x26B JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x39D PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x379 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1B5D DUP1 PUSH2 0x3B2 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xAB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7DC0D1D0 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x8295D3BE EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0xB5545A3C EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xB8D1452F EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xC0C53B8B EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0xDB7D7F8D EQ PUSH2 0x294 JUMPI PUSH2 0xB2 JUMP JUMPDEST DUP1 PUSH4 0x16B9680 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x221C1FD1 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0x3436247B EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x3FC8CEF3 EQ PUSH2 0x15A JUMPI DUP1 PUSH4 0x5E895F29 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x7ADBF973 EQ PUSH2 0x1AE JUMPI PUSH2 0xB2 JUMP JUMPDEST CALLDATASIZE PUSH2 0xB2 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD9 SWAP2 SWAP1 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x2BF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x102 SWAP2 SWAP1 PUSH2 0x1454 JUMP JUMPDEST PUSH2 0x410 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x114 SWAP2 SWAP1 PUSH2 0x14EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x144 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13F SWAP2 SWAP1 PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x48C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x14EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17C SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x1570 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D0 SWAP2 SWAP1 PUSH2 0x1632 JUMP JUMPDEST PUSH2 0x5B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1EC PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F9 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x224 SWAP2 SWAP1 PUSH2 0x1632 JUMP JUMPDEST PUSH2 0x72A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x240 PUSH2 0x87D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x269 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x264 SWAP2 SWAP1 PUSH2 0x1632 JUMP JUMPDEST PUSH2 0xACF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x292 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x28D SWAP2 SWAP1 PUSH2 0x165F JUMP JUMPDEST PUSH2 0xC23 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B6 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x409 JUMPI PUSH2 0x408 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6352211E DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x353 SWAP2 SWAP1 PUSH2 0x14EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x370 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 0x394 SWAP2 SWAP1 PUSH2 0x16C7 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10E56973 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 0x3DF 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 0x403 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0xE42 JUMP JUMPDEST JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10E56973 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 0x45D 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 0x481 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 PUSH1 0x2 DUP2 LT PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5A6 JUMPI PUSH2 0x5A5 DUP7 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10E56973 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 0x57C 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 0x5A0 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0xE42 JUMP JUMPDEST JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAE4B8F7 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x609 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x626 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 0x64A SWAP2 SWAP1 PUSH2 0x176E JUMP JUMPDEST PUSH2 0x689 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x680 SWAP1 PUSH2 0x17F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x3F32684A32A11DABDBB8C0177DE80AA3AE36A004D75210335B49E544E48CD0AA DUP2 PUSH1 0x40 MLOAD PUSH2 0x6F9 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAE4B8F7 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x783 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7A0 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 0x7C4 SWAP2 SWAP1 PUSH2 0x176E JUMP JUMPDEST PUSH2 0x803 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7FA SWAP1 PUSH2 0x17F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x867B5AC058251D339D708E1228AC92D445562B0685454293FED8B862F87167C5 DUP2 PUSH1 0x40 MLOAD PUSH2 0x872 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 DUP1 PUSH1 0x20 MUL PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP3 PUSH1 0x2 DUP1 ISZERO PUSH2 0x8F5 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x8E1 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0x912 JUMPI PUSH2 0x911 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL ADD MLOAD GT PUSH2 0x957 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x94E SWAP1 PUSH2 0x1893 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP2 PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0x96C JUMPI PUSH2 0x96B PUSH2 0x1818 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL ADD MLOAD LT PUSH2 0x9B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A8 SWAP1 PUSH2 0x18FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xFF AND DUP2 MSTORE POP PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 PUSH2 0xA1B SWAP3 SWAP2 SWAP1 PUSH2 0x1248 JUMP JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xA4A JUMPI PUSH2 0xA49 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL ADD MLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xA7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0x1FE70B87853839959E74387A76C2713282F77A4A0656BF8689058A0EEA2891E0 CALLER DUP3 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xAB1 JUMPI PUSH2 0xAB0 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0xAC4 SWAP3 SWAP2 SWAP1 PUSH2 0x191F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAE4B8F7 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB28 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB45 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 0xB69 SWAP2 SWAP1 PUSH2 0x176E JUMP JUMPDEST PUSH2 0xBA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB9F SWAP1 PUSH2 0x17F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x13A533084DCBB1CFE0DBEA708EA977223C27C44D94F2FA3867A167C9CD340BF9 DUP2 PUSH1 0x40 MLOAD PUSH2 0xC18 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xCB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCA9 SWAP1 PUSH2 0x1994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x867B5AC058251D339D708E1228AC92D445562B0685454293FED8B862F87167C5 DUP4 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP2 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x3F32684A32A11DABDBB8C0177DE80AA3AE36A004D75210335B49E544E48CD0AA DUP3 PUSH1 0x40 MLOAD PUSH2 0xD99 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x13A533084DCBB1CFE0DBEA708EA977223C27C44D94F2FA3867A167C9CD340BF9 DUP2 PUSH1 0x40 MLOAD PUSH2 0xE11 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9D76EA58 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 0xEB0 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 0xED4 SWAP2 SWAP1 PUSH2 0x16C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC1E553E7 DUP4 DUP6 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF59 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF78 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 0xF9C SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xFF2 JUMPI PUSH2 0xFF1 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0x104A JUMPI PUSH2 0x1049 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xA PUSH1 0xB DUP6 PUSH2 0x105F SWAP2 SWAP1 PUSH2 0x1A1A JUMP JUMPDEST PUSH2 0x1069 SWAP2 SWAP1 PUSH2 0x1A8B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x127500 TIMESTAMP PUSH2 0x107C SWAP2 SWAP1 PUSH2 0x1ABC JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP4 LT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP7 PUSH2 0x109D SWAP2 SWAP1 PUSH2 0x1ABC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x3 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 PUSH2 0x10F3 SWAP3 SWAP2 SWAP1 PUSH2 0x128D JUMP JUMPDEST POP PUSH2 0x115D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x3 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 PUSH2 0x115B SWAP3 SWAP2 SWAP1 PUSH2 0x128D JUMP JUMPDEST POP JUMPDEST PUSH32 0xA1D590FD2E594A4A50983C420B530FCF5FFE210E5203B51D6C022CB0D9AC4F80 DUP9 PUSH1 0x3 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0x11D1 JUMPI PUSH2 0x11D0 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST ADD SLOAD PUSH1 0x3 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0x1225 JUMPI PUSH2 0x1224 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x1236 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x2 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x127C JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x127B JUMPI DUP3 MLOAD DUP3 SWAP1 PUSH1 0xFF AND SWAP1 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x125B JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1289 SWAP2 SWAP1 PUSH2 0x12CD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 PUSH1 0x2 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x12BC JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x12BB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x12A0 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x12C9 SWAP2 SWAP1 PUSH2 0x12CD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x12E6 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x12CE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1307 DUP2 PUSH2 0x12F4 JUMP JUMPDEST DUP2 EQ PUSH2 0x1312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1324 DUP2 PUSH2 0x12FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1355 DUP3 PUSH2 0x132A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1365 DUP2 PUSH2 0x134A JUMP JUMPDEST DUP2 EQ PUSH2 0x1370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1382 DUP2 PUSH2 0x135C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x13A2 JUMPI PUSH2 0x13A1 PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x13B0 DUP8 DUP3 DUP9 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x13C1 DUP8 DUP3 DUP9 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x13D2 DUP8 DUP3 DUP9 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x13E3 DUP8 DUP3 DUP9 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1414 JUMPI PUSH2 0x1413 PUSH2 0x13EF JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1431 JUMPI PUSH2 0x1430 PUSH2 0x13F4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x144D JUMPI PUSH2 0x144C PUSH2 0x13F9 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1470 JUMPI PUSH2 0x146F PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x147E DUP9 DUP3 DUP10 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x148F DUP9 DUP3 DUP10 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x14A0 DUP9 DUP3 DUP10 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14C1 JUMPI PUSH2 0x14C0 PUSH2 0x12EF JUMP JUMPDEST JUMPDEST PUSH2 0x14CD DUP9 DUP3 DUP10 ADD PUSH2 0x13FE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH2 0x14E5 DUP2 PUSH2 0x12F4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1500 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x14DC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x151D JUMPI PUSH2 0x151C PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x152B DUP6 DUP3 DUP7 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x153C DUP6 DUP3 DUP7 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x154F DUP2 PUSH2 0x134A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x156A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1546 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1590 JUMPI PUSH2 0x158F PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x159E DUP12 DUP3 DUP13 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x15AF DUP12 DUP3 DUP13 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x15C0 DUP12 DUP3 DUP13 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x15D1 DUP12 DUP3 DUP13 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x15F2 JUMPI PUSH2 0x15F1 PUSH2 0x12EF JUMP JUMPDEST JUMPDEST PUSH2 0x15FE DUP12 DUP3 DUP13 ADD PUSH2 0x13FE JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0xA0 PUSH2 0x1611 DUP12 DUP3 DUP13 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x1622 DUP12 DUP3 DUP13 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1648 JUMPI PUSH2 0x1647 PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1656 DUP5 DUP3 DUP6 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1678 JUMPI PUSH2 0x1677 PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1686 DUP7 DUP3 DUP8 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1697 DUP7 DUP3 DUP8 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x16A8 DUP7 DUP3 DUP8 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x16C1 DUP2 PUSH2 0x135C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16DD JUMPI PUSH2 0x16DC PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16EB DUP5 DUP3 DUP6 ADD PUSH2 0x16B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1703 DUP2 PUSH2 0x12FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x171F JUMPI PUSH2 0x171E PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x172D DUP5 DUP3 DUP6 ADD PUSH2 0x16F4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x174B DUP2 PUSH2 0x1736 JUMP JUMPDEST DUP2 EQ PUSH2 0x1756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1768 DUP2 PUSH2 0x1742 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1784 JUMPI PUSH2 0x1783 PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1792 DUP5 DUP3 DUP6 ADD PUSH2 0x1759 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x43616C6C6572206973206E6F742061206C6F636B206D616E6167657200000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E2 PUSH1 0x1C DUP4 PUSH2 0x179B JUMP JUMPDEST SWAP2 POP PUSH2 0x17ED DUP3 PUSH2 0x17AC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1811 DUP2 PUSH2 0x17D5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E6F20726566756E6420617661696C61626C6500000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x187D PUSH1 0x13 DUP4 PUSH2 0x179B JUMP JUMPDEST SWAP2 POP PUSH2 0x1888 DUP3 PUSH2 0x1847 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x18AC DUP2 PUSH2 0x1870 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x526566756E64206E6F7420617661696C61626C65207965740000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18E9 PUSH1 0x18 DUP4 PUSH2 0x179B JUMP JUMPDEST SWAP2 POP PUSH2 0x18F4 DUP3 PUSH2 0x18B3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1918 DUP2 PUSH2 0x18DC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1934 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x1941 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x14DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x197E PUSH1 0x13 DUP4 PUSH2 0x179B JUMP JUMPDEST SWAP2 POP PUSH2 0x1989 DUP3 PUSH2 0x1948 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x19AD DUP2 PUSH2 0x1971 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x19C9 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x19D6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x14DC JUMP JUMPDEST PUSH2 0x19E3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1546 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A25 DUP3 PUSH2 0x12F4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A30 DUP4 PUSH2 0x12F4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x1A3E DUP2 PUSH2 0x12F4 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x1A55 JUMPI PUSH2 0x1A54 PUSH2 0x19EB JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A96 DUP3 PUSH2 0x12F4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1AA1 DUP4 PUSH2 0x12F4 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x1AB1 JUMPI PUSH2 0x1AB0 PUSH2 0x1A5C JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AC7 DUP3 PUSH2 0x12F4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1AD2 DUP4 PUSH2 0x12F4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1AEA JUMPI PUSH2 0x1AE9 PUSH2 0x19EB JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1B05 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x1B12 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x14DC JUMP JUMPDEST PUSH2 0x1B1F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x14DC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD 0xE0 SWAP13 SAR 0x2F PUSH9 0x86A7C207324F1AD1EB 0xDE DUP5 0xB5 PUSH4 0x54E465F1 BLOCKHASH PUSH32 0x57B1181E5BA6A764736F6C634300081B00330000000000000000000000000000 ", + "sourceMap": "724:4560:1:-:0;;;1112:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1188:40;1199:12;1213:7;1222:5;1188:10;;;:40;;:::i;:::-;1112:123;;;724:4560;;1241:401;1389:1;1366:25;;:11;;;;;;;;;;:25;;;1362:85;;1407:29;;;;;;;;;;:::i;:::-;;;;;;;;1362:85;1470:12;1456:11;;:26;;;;;;;;;;;;;;;;;;1497:28;1512:12;1497:28;;;;;;:::i;:::-;;;;;;;;1544:7;1535:6;;:16;;;;;;;;;;;;;;;;;;1566:18;1576:7;1566:18;;;;;;:::i;:::-;;;;;;;;1601:5;1594:4;;:12;;;;;;;;;;;;;;;;;;1621:14;1629:5;1621:14;;;;;;:::i;:::-;;;;;;;;1241:401;;;:::o;88:117:2:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:143::-;753:5;784:6;778:13;769:22;;800:33;827:5;800:33;:::i;:::-;696:143;;;;:::o;845:663::-;933:6;941;949;998:2;986:9;977:7;973:23;969:32;966:119;;;1004:79;;:::i;:::-;966:119;1124:1;1149:64;1205:7;1196:6;1185:9;1181:22;1149:64;:::i;:::-;1139:74;;1095:128;1262:2;1288:64;1344:7;1335:6;1324:9;1320:22;1288:64;:::i;:::-;1278:74;;1233:129;1401:2;1427:64;1483:7;1474:6;1463:9;1459:22;1427:64;:::i;:::-;1417:74;;1372:129;845:663;;;;;:::o;1514:169::-;1598:11;1632:6;1627:3;1620:19;1672:4;1667:3;1663:14;1648:29;;1514:169;;;;:::o;1689:::-;1829:21;1825:1;1817:6;1813:14;1806:45;1689:169;:::o;1864:366::-;2006:3;2027:67;2091:2;2086:3;2027:67;:::i;:::-;2020:74;;2103:93;2192:3;2103:93;:::i;:::-;2221:2;2216:3;2212:12;2205:19;;1864:366;;;:::o;2236:419::-;2402:4;2440:2;2429:9;2425:18;2417:26;;2489:9;2483:4;2479:20;2475:1;2464:9;2460:17;2453:47;2517:131;2643:4;2517:131;:::i;:::-;2509:139;;2236:419;;;:::o;2661:118::-;2748:24;2766:5;2748:24;:::i;:::-;2743:3;2736:37;2661:118;;:::o;2785:222::-;2878:4;2916:2;2905:9;2901:18;2893:26;;2929:71;2997:1;2986:9;2982:17;2973:6;2929:71;:::i;:::-;2785:222;;;;:::o;724:4560:1:-;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@_1139": { + "entryPoint": null, + "id": 1139, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@claimRefund_1135": { + "entryPoint": 2173, + "id": 1135, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@initialize_794": { + "entryPoint": 3107, + "id": 794, + "parameterSlots": 3, + "returnSlots": 0 + }, + "@keyPurchasePrice_899": { + "entryPoint": 1040, + "id": 899, + "parameterSlots": 5, + "returnSlots": 1 + }, + "@onKeyExtend_1073": { + "entryPoint": 703, + "id": 1073, + "parameterSlots": 4, + "returnSlots": 0 + }, + "@onKeyPurchase_1037": { + "entryPoint": 1242, + "id": 1037, + "parameterSlots": 8, + "returnSlots": 0 + }, + "@oracle_698": { + "entryPoint": 1796, + "id": 698, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@recordRefund_1003": { + "entryPoint": 3650, + "id": 1003, + "parameterSlots": 2, + "returnSlots": 0 + }, + "@refunds_706": { + "entryPoint": 1164, + "id": 706, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@setOracle_850": { + "entryPoint": 1456, + "id": 850, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setUnlockPrime_822": { + "entryPoint": 1834, + "id": 822, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@setWeth_878": { + "entryPoint": 2767, + "id": 878, + "parameterSlots": 1, + "returnSlots": 0 + }, + "@unlockPrime_696": { + "entryPoint": 3614, + "id": 696, + "parameterSlots": 0, + "returnSlots": 0 + }, + "@weth_700": { + "entryPoint": 1204, + "id": 700, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_decode_t_address": { + "entryPoint": 4979, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_address_fromMemory": { + "entryPoint": 5810, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bool_fromMemory": { + "entryPoint": 5977, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_bytes_calldata_ptr": { + "entryPoint": 5118, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_t_uint256": { + "entryPoint": 4885, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_t_uint256_fromMemory": { + "entryPoint": 5876, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address": { + "entryPoint": 5682, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_address_fromMemory": { + "entryPoint": 5831, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_addresst_addresst_address": { + "entryPoint": 5727, + "id": null, + "parameterSlots": 2, + "returnSlots": 3 + }, + "abi_decode_tuple_t_addresst_addresst_addresst_bytes_calldata_ptr": { + "entryPoint": 5204, + "id": null, + "parameterSlots": 2, + "returnSlots": 5 + }, + "abi_decode_tuple_t_addresst_uint256": { + "entryPoint": 5382, + "id": null, + "parameterSlots": 2, + "returnSlots": 2 + }, + "abi_decode_tuple_t_bool_fromMemory": { + "entryPoint": 5998, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256_fromMemory": { + "entryPoint": 5897, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_decode_tuple_t_uint256t_addresst_addresst_addresst_bytes_calldata_ptrt_uint256t_uint256": { + "entryPoint": 5488, + "id": null, + "parameterSlots": 2, + "returnSlots": 8 + }, + "abi_decode_tuple_t_uint256t_addresst_uint256t_uint256": { + "entryPoint": 5000, + "id": null, + "parameterSlots": 2, + "returnSlots": 4 + }, + "abi_encode_t_address_to_t_address_fromStack": { + "entryPoint": 5446, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d_to_t_string_memory_ptr_fromStack": { + "entryPoint": 6101, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack": { + "entryPoint": 6513, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd_to_t_string_memory_ptr_fromStack": { + "entryPoint": 6364, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71_to_t_string_memory_ptr_fromStack": { + "entryPoint": 6256, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_t_uint256_to_t_uint256_fromStack": { + "entryPoint": 5340, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "abi_encode_tuple_t_address__to_t_address__fromStack_reversed": { + "entryPoint": 5461, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed": { + "entryPoint": 6431, + "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": 6580, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed": { + "entryPoint": 6896, + "id": null, + "parameterSlots": 4, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 6136, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 6548, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 6399, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71__to_t_string_memory_ptr__fromStack_reversed": { + "entryPoint": 6291, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": { + "entryPoint": 5355, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "allocate_unbounded": { + "entryPoint": null, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_string_memory_ptr_fromStack": { + "entryPoint": 6043, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_add_t_uint256": { + "entryPoint": 6844, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_div_t_uint256": { + "entryPoint": 6795, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "checked_mul_t_uint256": { + "entryPoint": 6682, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "cleanup_t_address": { + "entryPoint": 4938, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_bool": { + "entryPoint": 5942, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint160": { + "entryPoint": 4906, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "cleanup_t_uint256": { + "entryPoint": 4852, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "panic_error_0x11": { + "entryPoint": 6635, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x12": { + "entryPoint": 6748, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 6168, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490": { + "entryPoint": 5108, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d": { + "entryPoint": 5103, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef": { + "entryPoint": 5113, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db": { + "entryPoint": 4847, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b": { + "entryPoint": 4842, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "store_literal_in_memory_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d": { + "entryPoint": 6060, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0": { + "entryPoint": 6472, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "store_literal_in_memory_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd": { + "entryPoint": 6323, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "store_literal_in_memory_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71": { + "entryPoint": 6215, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_address": { + "entryPoint": 4956, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_bool": { + "entryPoint": 5954, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "validator_revert_t_uint256": { + "entryPoint": 4862, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:15822:2", + "nodeType": "YulBlock", + "src": "0:15822:2", + "statements": [ + { + "body": { + "nativeSrc": "47:35:2", + "nodeType": "YulBlock", + "src": "47:35:2", + "statements": [ + { + "nativeSrc": "57:19:2", + "nodeType": "YulAssignment", + "src": "57:19:2", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "73:2:2", + "nodeType": "YulLiteral", + "src": "73:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "67:5:2", + "nodeType": "YulIdentifier", + "src": "67:5:2" + }, + "nativeSrc": "67:9:2", + "nodeType": "YulFunctionCall", + "src": "67:9:2" + }, + "variableNames": [ + { + "name": "memPtr", + "nativeSrc": "57:6:2", + "nodeType": "YulIdentifier", + "src": "57:6:2" + } + ] + } + ] + }, + "name": "allocate_unbounded", + "nativeSrc": "7:75:2", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "memPtr", + "nativeSrc": "40:6:2", + "nodeType": "YulTypedName", + "src": "40:6:2", + "type": "" + } + ], + "src": "7:75:2" + }, + { + "body": { + "nativeSrc": "177:28:2", + "nodeType": "YulBlock", + "src": "177:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "194:1:2", + "nodeType": "YulLiteral", + "src": "194:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "197:1:2", + "nodeType": "YulLiteral", + "src": "197:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "187:6:2", + "nodeType": "YulIdentifier", + "src": "187:6:2" + }, + "nativeSrc": "187:12:2", + "nodeType": "YulFunctionCall", + "src": "187:12:2" + }, + "nativeSrc": "187:12:2", + "nodeType": "YulExpressionStatement", + "src": "187:12:2" + } + ] + }, + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "88:117:2", + "nodeType": "YulFunctionDefinition", + "src": "88:117:2" + }, + { + "body": { + "nativeSrc": "300:28:2", + "nodeType": "YulBlock", + "src": "300:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "317:1:2", + "nodeType": "YulLiteral", + "src": "317:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "320:1:2", + "nodeType": "YulLiteral", + "src": "320:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "310:6:2", + "nodeType": "YulIdentifier", + "src": "310:6:2" + }, + "nativeSrc": "310:12:2", + "nodeType": "YulFunctionCall", + "src": "310:12:2" + }, + "nativeSrc": "310:12:2", + "nodeType": "YulExpressionStatement", + "src": "310:12:2" + } + ] + }, + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nativeSrc": "211:117:2", + "nodeType": "YulFunctionDefinition", + "src": "211:117:2" + }, + { + "body": { + "nativeSrc": "379:32:2", + "nodeType": "YulBlock", + "src": "379:32:2", + "statements": [ + { + "nativeSrc": "389:16:2", + "nodeType": "YulAssignment", + "src": "389:16:2", + "value": { + "name": "value", + "nativeSrc": "400:5:2", + "nodeType": "YulIdentifier", + "src": "400:5:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "389:7:2", + "nodeType": "YulIdentifier", + "src": "389:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nativeSrc": "334:77:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "361:5:2", + "nodeType": "YulTypedName", + "src": "361:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "371:7:2", + "nodeType": "YulTypedName", + "src": "371:7:2", + "type": "" + } + ], + "src": "334:77:2" + }, + { + "body": { + "nativeSrc": "460:79:2", + "nodeType": "YulBlock", + "src": "460:79:2", + "statements": [ + { + "body": { + "nativeSrc": "517:16:2", + "nodeType": "YulBlock", + "src": "517:16:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "526:1:2", + "nodeType": "YulLiteral", + "src": "526:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "529:1:2", + "nodeType": "YulLiteral", + "src": "529:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "519:6:2", + "nodeType": "YulIdentifier", + "src": "519:6:2" + }, + "nativeSrc": "519:12:2", + "nodeType": "YulFunctionCall", + "src": "519:12:2" + }, + "nativeSrc": "519:12:2", + "nodeType": "YulExpressionStatement", + "src": "519:12:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "483:5:2", + "nodeType": "YulIdentifier", + "src": "483:5:2" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "508:5:2", + "nodeType": "YulIdentifier", + "src": "508:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "490:17:2", + "nodeType": "YulIdentifier", + "src": "490:17:2" + }, + "nativeSrc": "490:24:2", + "nodeType": "YulFunctionCall", + "src": "490:24:2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "480:2:2", + "nodeType": "YulIdentifier", + "src": "480:2:2" + }, + "nativeSrc": "480:35:2", + "nodeType": "YulFunctionCall", + "src": "480:35:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "473:6:2", + "nodeType": "YulIdentifier", + "src": "473:6:2" + }, + "nativeSrc": "473:43:2", + "nodeType": "YulFunctionCall", + "src": "473:43:2" + }, + "nativeSrc": "470:63:2", + "nodeType": "YulIf", + "src": "470:63:2" + } + ] + }, + "name": "validator_revert_t_uint256", + "nativeSrc": "417:122:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "453:5:2", + "nodeType": "YulTypedName", + "src": "453:5:2", + "type": "" + } + ], + "src": "417:122:2" + }, + { + "body": { + "nativeSrc": "597:87:2", + "nodeType": "YulBlock", + "src": "597:87:2", + "statements": [ + { + "nativeSrc": "607:29:2", + "nodeType": "YulAssignment", + "src": "607:29:2", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "629:6:2", + "nodeType": "YulIdentifier", + "src": "629:6:2" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "616:12:2", + "nodeType": "YulIdentifier", + "src": "616:12:2" + }, + "nativeSrc": "616:20:2", + "nodeType": "YulFunctionCall", + "src": "616:20:2" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "607:5:2", + "nodeType": "YulIdentifier", + "src": "607:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "672:5:2", + "nodeType": "YulIdentifier", + "src": "672:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nativeSrc": "645:26:2", + "nodeType": "YulIdentifier", + "src": "645:26:2" + }, + "nativeSrc": "645:33:2", + "nodeType": "YulFunctionCall", + "src": "645:33:2" + }, + "nativeSrc": "645:33:2", + "nodeType": "YulExpressionStatement", + "src": "645:33:2" + } + ] + }, + "name": "abi_decode_t_uint256", + "nativeSrc": "545:139:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "575:6:2", + "nodeType": "YulTypedName", + "src": "575:6:2", + "type": "" + }, + { + "name": "end", + "nativeSrc": "583:3:2", + "nodeType": "YulTypedName", + "src": "583:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "591:5:2", + "nodeType": "YulTypedName", + "src": "591:5:2", + "type": "" + } + ], + "src": "545:139:2" + }, + { + "body": { + "nativeSrc": "735:81:2", + "nodeType": "YulBlock", + "src": "735:81:2", + "statements": [ + { + "nativeSrc": "745:65:2", + "nodeType": "YulAssignment", + "src": "745:65:2", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "760:5:2", + "nodeType": "YulIdentifier", + "src": "760:5:2" + }, + { + "kind": "number", + "nativeSrc": "767:42:2", + "nodeType": "YulLiteral", + "src": "767:42:2", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "756:3:2", + "nodeType": "YulIdentifier", + "src": "756:3:2" + }, + "nativeSrc": "756:54:2", + "nodeType": "YulFunctionCall", + "src": "756:54:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "745:7:2", + "nodeType": "YulIdentifier", + "src": "745:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_uint160", + "nativeSrc": "690:126:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "717:5:2", + "nodeType": "YulTypedName", + "src": "717:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "727:7:2", + "nodeType": "YulTypedName", + "src": "727:7:2", + "type": "" + } + ], + "src": "690:126:2" + }, + { + "body": { + "nativeSrc": "867:51:2", + "nodeType": "YulBlock", + "src": "867:51:2", + "statements": [ + { + "nativeSrc": "877:35:2", + "nodeType": "YulAssignment", + "src": "877:35:2", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "906:5:2", + "nodeType": "YulIdentifier", + "src": "906:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint160", + "nativeSrc": "888:17:2", + "nodeType": "YulIdentifier", + "src": "888:17:2" + }, + "nativeSrc": "888:24:2", + "nodeType": "YulFunctionCall", + "src": "888:24:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "877:7:2", + "nodeType": "YulIdentifier", + "src": "877:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_address", + "nativeSrc": "822:96:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "849:5:2", + "nodeType": "YulTypedName", + "src": "849:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "859:7:2", + "nodeType": "YulTypedName", + "src": "859:7:2", + "type": "" + } + ], + "src": "822:96:2" + }, + { + "body": { + "nativeSrc": "967:79:2", + "nodeType": "YulBlock", + "src": "967:79:2", + "statements": [ + { + "body": { + "nativeSrc": "1024:16:2", + "nodeType": "YulBlock", + "src": "1024:16:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1033:1:2", + "nodeType": "YulLiteral", + "src": "1033:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1036:1:2", + "nodeType": "YulLiteral", + "src": "1036:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1026:6:2", + "nodeType": "YulIdentifier", + "src": "1026:6:2" + }, + "nativeSrc": "1026:12:2", + "nodeType": "YulFunctionCall", + "src": "1026:12:2" + }, + "nativeSrc": "1026:12:2", + "nodeType": "YulExpressionStatement", + "src": "1026:12:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "990:5:2", + "nodeType": "YulIdentifier", + "src": "990:5:2" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "1015:5:2", + "nodeType": "YulIdentifier", + "src": "1015:5:2" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nativeSrc": "997:17:2", + "nodeType": "YulIdentifier", + "src": "997:17:2" + }, + "nativeSrc": "997:24:2", + "nodeType": "YulFunctionCall", + "src": "997:24:2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "987:2:2", + "nodeType": "YulIdentifier", + "src": "987:2:2" + }, + "nativeSrc": "987:35:2", + "nodeType": "YulFunctionCall", + "src": "987:35:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "980:6:2", + "nodeType": "YulIdentifier", + "src": "980:6:2" + }, + "nativeSrc": "980:43:2", + "nodeType": "YulFunctionCall", + "src": "980:43:2" + }, + "nativeSrc": "977:63:2", + "nodeType": "YulIf", + "src": "977:63:2" + } + ] + }, + "name": "validator_revert_t_address", + "nativeSrc": "924:122:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "960:5:2", + "nodeType": "YulTypedName", + "src": "960:5:2", + "type": "" + } + ], + "src": "924:122:2" + }, + { + "body": { + "nativeSrc": "1104:87:2", + "nodeType": "YulBlock", + "src": "1104:87:2", + "statements": [ + { + "nativeSrc": "1114:29:2", + "nodeType": "YulAssignment", + "src": "1114:29:2", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "1136:6:2", + "nodeType": "YulIdentifier", + "src": "1136:6:2" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "1123:12:2", + "nodeType": "YulIdentifier", + "src": "1123:12:2" + }, + "nativeSrc": "1123:20:2", + "nodeType": "YulFunctionCall", + "src": "1123:20:2" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "1114:5:2", + "nodeType": "YulIdentifier", + "src": "1114:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1179:5:2", + "nodeType": "YulIdentifier", + "src": "1179:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nativeSrc": "1152:26:2", + "nodeType": "YulIdentifier", + "src": "1152:26:2" + }, + "nativeSrc": "1152:33:2", + "nodeType": "YulFunctionCall", + "src": "1152:33:2" + }, + "nativeSrc": "1152:33:2", + "nodeType": "YulExpressionStatement", + "src": "1152:33:2" + } + ] + }, + "name": "abi_decode_t_address", + "nativeSrc": "1052:139:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "1082:6:2", + "nodeType": "YulTypedName", + "src": "1082:6:2", + "type": "" + }, + { + "name": "end", + "nativeSrc": "1090:3:2", + "nodeType": "YulTypedName", + "src": "1090:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "1098:5:2", + "nodeType": "YulTypedName", + "src": "1098:5:2", + "type": "" + } + ], + "src": "1052:139:2" + }, + { + "body": { + "nativeSrc": "1314:648:2", + "nodeType": "YulBlock", + "src": "1314:648:2", + "statements": [ + { + "body": { + "nativeSrc": "1361:83:2", + "nodeType": "YulBlock", + "src": "1361:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "1363:77:2", + "nodeType": "YulIdentifier", + "src": "1363:77:2" + }, + "nativeSrc": "1363:79:2", + "nodeType": "YulFunctionCall", + "src": "1363:79:2" + }, + "nativeSrc": "1363:79:2", + "nodeType": "YulExpressionStatement", + "src": "1363:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "1335:7:2", + "nodeType": "YulIdentifier", + "src": "1335:7:2" + }, + { + "name": "headStart", + "nativeSrc": "1344:9:2", + "nodeType": "YulIdentifier", + "src": "1344:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "1331:3:2", + "nodeType": "YulIdentifier", + "src": "1331:3:2" + }, + "nativeSrc": "1331:23:2", + "nodeType": "YulFunctionCall", + "src": "1331:23:2" + }, + { + "kind": "number", + "nativeSrc": "1356:3:2", + "nodeType": "YulLiteral", + "src": "1356:3:2", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "1327:3:2", + "nodeType": "YulIdentifier", + "src": "1327:3:2" + }, + "nativeSrc": "1327:33:2", + "nodeType": "YulFunctionCall", + "src": "1327:33:2" + }, + "nativeSrc": "1324:120:2", + "nodeType": "YulIf", + "src": "1324:120:2" + }, + { + "nativeSrc": "1454:117:2", + "nodeType": "YulBlock", + "src": "1454:117:2", + "statements": [ + { + "nativeSrc": "1469:15:2", + "nodeType": "YulVariableDeclaration", + "src": "1469:15:2", + "value": { + "kind": "number", + "nativeSrc": "1483:1:2", + "nodeType": "YulLiteral", + "src": "1483:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1473:6:2", + "nodeType": "YulTypedName", + "src": "1473:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "1498:63:2", + "nodeType": "YulAssignment", + "src": "1498:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1533:9:2", + "nodeType": "YulIdentifier", + "src": "1533:9:2" + }, + { + "name": "offset", + "nativeSrc": "1544:6:2", + "nodeType": "YulIdentifier", + "src": "1544:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1529:3:2", + "nodeType": "YulIdentifier", + "src": "1529:3:2" + }, + "nativeSrc": "1529:22:2", + "nodeType": "YulFunctionCall", + "src": "1529:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "1553:7:2", + "nodeType": "YulIdentifier", + "src": "1553:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "1508:20:2", + "nodeType": "YulIdentifier", + "src": "1508:20:2" + }, + "nativeSrc": "1508:53:2", + "nodeType": "YulFunctionCall", + "src": "1508:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "1498:6:2", + "nodeType": "YulIdentifier", + "src": "1498:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "1581:118:2", + "nodeType": "YulBlock", + "src": "1581:118:2", + "statements": [ + { + "nativeSrc": "1596:16:2", + "nodeType": "YulVariableDeclaration", + "src": "1596:16:2", + "value": { + "kind": "number", + "nativeSrc": "1610:2:2", + "nodeType": "YulLiteral", + "src": "1610:2:2", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1600:6:2", + "nodeType": "YulTypedName", + "src": "1600:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "1626:63:2", + "nodeType": "YulAssignment", + "src": "1626:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1661:9:2", + "nodeType": "YulIdentifier", + "src": "1661:9:2" + }, + { + "name": "offset", + "nativeSrc": "1672:6:2", + "nodeType": "YulIdentifier", + "src": "1672:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1657:3:2", + "nodeType": "YulIdentifier", + "src": "1657:3:2" + }, + "nativeSrc": "1657:22:2", + "nodeType": "YulFunctionCall", + "src": "1657:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "1681:7:2", + "nodeType": "YulIdentifier", + "src": "1681:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "1636:20:2", + "nodeType": "YulIdentifier", + "src": "1636:20:2" + }, + "nativeSrc": "1636:53:2", + "nodeType": "YulFunctionCall", + "src": "1636:53:2" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "1626:6:2", + "nodeType": "YulIdentifier", + "src": "1626:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "1709:118:2", + "nodeType": "YulBlock", + "src": "1709:118:2", + "statements": [ + { + "nativeSrc": "1724:16:2", + "nodeType": "YulVariableDeclaration", + "src": "1724:16:2", + "value": { + "kind": "number", + "nativeSrc": "1738:2:2", + "nodeType": "YulLiteral", + "src": "1738:2:2", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1728:6:2", + "nodeType": "YulTypedName", + "src": "1728:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "1754:63:2", + "nodeType": "YulAssignment", + "src": "1754:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1789:9:2", + "nodeType": "YulIdentifier", + "src": "1789:9:2" + }, + { + "name": "offset", + "nativeSrc": "1800:6:2", + "nodeType": "YulIdentifier", + "src": "1800:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1785:3:2", + "nodeType": "YulIdentifier", + "src": "1785:3:2" + }, + "nativeSrc": "1785:22:2", + "nodeType": "YulFunctionCall", + "src": "1785:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "1809:7:2", + "nodeType": "YulIdentifier", + "src": "1809:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "1764:20:2", + "nodeType": "YulIdentifier", + "src": "1764:20:2" + }, + "nativeSrc": "1764:53:2", + "nodeType": "YulFunctionCall", + "src": "1764:53:2" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "1754:6:2", + "nodeType": "YulIdentifier", + "src": "1754:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "1837:118:2", + "nodeType": "YulBlock", + "src": "1837:118:2", + "statements": [ + { + "nativeSrc": "1852:16:2", + "nodeType": "YulVariableDeclaration", + "src": "1852:16:2", + "value": { + "kind": "number", + "nativeSrc": "1866:2:2", + "nodeType": "YulLiteral", + "src": "1866:2:2", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "1856:6:2", + "nodeType": "YulTypedName", + "src": "1856:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "1882:63:2", + "nodeType": "YulAssignment", + "src": "1882:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "1917:9:2", + "nodeType": "YulIdentifier", + "src": "1917:9:2" + }, + { + "name": "offset", + "nativeSrc": "1928:6:2", + "nodeType": "YulIdentifier", + "src": "1928:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "1913:3:2", + "nodeType": "YulIdentifier", + "src": "1913:3:2" + }, + "nativeSrc": "1913:22:2", + "nodeType": "YulFunctionCall", + "src": "1913:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "1937:7:2", + "nodeType": "YulIdentifier", + "src": "1937:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "1892:20:2", + "nodeType": "YulIdentifier", + "src": "1892:20:2" + }, + "nativeSrc": "1892:53:2", + "nodeType": "YulFunctionCall", + "src": "1892:53:2" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "1882:6:2", + "nodeType": "YulIdentifier", + "src": "1882:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_addresst_uint256t_uint256", + "nativeSrc": "1197:765:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "1260:9:2", + "nodeType": "YulTypedName", + "src": "1260:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "1271:7:2", + "nodeType": "YulTypedName", + "src": "1271:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "1283:6:2", + "nodeType": "YulTypedName", + "src": "1283:6:2", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "1291:6:2", + "nodeType": "YulTypedName", + "src": "1291:6:2", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "1299:6:2", + "nodeType": "YulTypedName", + "src": "1299:6:2", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "1307:6:2", + "nodeType": "YulTypedName", + "src": "1307:6:2", + "type": "" + } + ], + "src": "1197:765:2" + }, + { + "body": { + "nativeSrc": "2057:28:2", + "nodeType": "YulBlock", + "src": "2057:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2074:1:2", + "nodeType": "YulLiteral", + "src": "2074:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2077:1:2", + "nodeType": "YulLiteral", + "src": "2077:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2067:6:2", + "nodeType": "YulIdentifier", + "src": "2067:6:2" + }, + "nativeSrc": "2067:12:2", + "nodeType": "YulFunctionCall", + "src": "2067:12:2" + }, + "nativeSrc": "2067:12:2", + "nodeType": "YulExpressionStatement", + "src": "2067:12:2" + } + ] + }, + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nativeSrc": "1968:117:2", + "nodeType": "YulFunctionDefinition", + "src": "1968:117:2" + }, + { + "body": { + "nativeSrc": "2180:28:2", + "nodeType": "YulBlock", + "src": "2180:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2197:1:2", + "nodeType": "YulLiteral", + "src": "2197:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2200:1:2", + "nodeType": "YulLiteral", + "src": "2200:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2190:6:2", + "nodeType": "YulIdentifier", + "src": "2190:6:2" + }, + "nativeSrc": "2190:12:2", + "nodeType": "YulFunctionCall", + "src": "2190:12:2" + }, + "nativeSrc": "2190:12:2", + "nodeType": "YulExpressionStatement", + "src": "2190:12:2" + } + ] + }, + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nativeSrc": "2091:117:2", + "nodeType": "YulFunctionDefinition", + "src": "2091:117:2" + }, + { + "body": { + "nativeSrc": "2303:28:2", + "nodeType": "YulBlock", + "src": "2303:28:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2320:1:2", + "nodeType": "YulLiteral", + "src": "2320:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2323:1:2", + "nodeType": "YulLiteral", + "src": "2323:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "2313:6:2", + "nodeType": "YulIdentifier", + "src": "2313:6:2" + }, + "nativeSrc": "2313:12:2", + "nodeType": "YulFunctionCall", + "src": "2313:12:2" + }, + "nativeSrc": "2313:12:2", + "nodeType": "YulExpressionStatement", + "src": "2313:12:2" + } + ] + }, + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nativeSrc": "2214:117:2", + "nodeType": "YulFunctionDefinition", + "src": "2214:117:2" + }, + { + "body": { + "nativeSrc": "2424:478:2", + "nodeType": "YulBlock", + "src": "2424:478:2", + "statements": [ + { + "body": { + "nativeSrc": "2473:83:2", + "nodeType": "YulBlock", + "src": "2473:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d", + "nativeSrc": "2475:77:2", + "nodeType": "YulIdentifier", + "src": "2475:77:2" + }, + "nativeSrc": "2475:79:2", + "nodeType": "YulFunctionCall", + "src": "2475:79:2" + }, + "nativeSrc": "2475:79:2", + "nodeType": "YulExpressionStatement", + "src": "2475:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2452:6:2", + "nodeType": "YulIdentifier", + "src": "2452:6:2" + }, + { + "kind": "number", + "nativeSrc": "2460:4:2", + "nodeType": "YulLiteral", + "src": "2460:4:2", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2448:3:2", + "nodeType": "YulIdentifier", + "src": "2448:3:2" + }, + "nativeSrc": "2448:17:2", + "nodeType": "YulFunctionCall", + "src": "2448:17:2" + }, + { + "name": "end", + "nativeSrc": "2467:3:2", + "nodeType": "YulIdentifier", + "src": "2467:3:2" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "2444:3:2", + "nodeType": "YulIdentifier", + "src": "2444:3:2" + }, + "nativeSrc": "2444:27:2", + "nodeType": "YulFunctionCall", + "src": "2444:27:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "2437:6:2", + "nodeType": "YulIdentifier", + "src": "2437:6:2" + }, + "nativeSrc": "2437:35:2", + "nodeType": "YulFunctionCall", + "src": "2437:35:2" + }, + "nativeSrc": "2434:122:2", + "nodeType": "YulIf", + "src": "2434:122:2" + }, + { + "nativeSrc": "2565:30:2", + "nodeType": "YulAssignment", + "src": "2565:30:2", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2588:6:2", + "nodeType": "YulIdentifier", + "src": "2588:6:2" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "2575:12:2", + "nodeType": "YulIdentifier", + "src": "2575:12:2" + }, + "nativeSrc": "2575:20:2", + "nodeType": "YulFunctionCall", + "src": "2575:20:2" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "2565:6:2", + "nodeType": "YulIdentifier", + "src": "2565:6:2" + } + ] + }, + { + "body": { + "nativeSrc": "2638:83:2", + "nodeType": "YulBlock", + "src": "2638:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490", + "nativeSrc": "2640:77:2", + "nodeType": "YulIdentifier", + "src": "2640:77:2" + }, + "nativeSrc": "2640:79:2", + "nodeType": "YulFunctionCall", + "src": "2640:79:2" + }, + "nativeSrc": "2640:79:2", + "nodeType": "YulExpressionStatement", + "src": "2640:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "length", + "nativeSrc": "2610:6:2", + "nodeType": "YulIdentifier", + "src": "2610:6:2" + }, + { + "kind": "number", + "nativeSrc": "2618:18:2", + "nodeType": "YulLiteral", + "src": "2618:18:2", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2607:2:2", + "nodeType": "YulIdentifier", + "src": "2607:2:2" + }, + "nativeSrc": "2607:30:2", + "nodeType": "YulFunctionCall", + "src": "2607:30:2" + }, + "nativeSrc": "2604:117:2", + "nodeType": "YulIf", + "src": "2604:117:2" + }, + { + "nativeSrc": "2730:29:2", + "nodeType": "YulAssignment", + "src": "2730:29:2", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "2746:6:2", + "nodeType": "YulIdentifier", + "src": "2746:6:2" + }, + { + "kind": "number", + "nativeSrc": "2754:4:2", + "nodeType": "YulLiteral", + "src": "2754:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2742:3:2", + "nodeType": "YulIdentifier", + "src": "2742:3:2" + }, + "nativeSrc": "2742:17:2", + "nodeType": "YulFunctionCall", + "src": "2742:17:2" + }, + "variableNames": [ + { + "name": "arrayPos", + "nativeSrc": "2730:8:2", + "nodeType": "YulIdentifier", + "src": "2730:8:2" + } + ] + }, + { + "body": { + "nativeSrc": "2813:83:2", + "nodeType": "YulBlock", + "src": "2813:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef", + "nativeSrc": "2815:77:2", + "nodeType": "YulIdentifier", + "src": "2815:77:2" + }, + "nativeSrc": "2815:79:2", + "nodeType": "YulFunctionCall", + "src": "2815:79:2" + }, + "nativeSrc": "2815:79:2", + "nodeType": "YulExpressionStatement", + "src": "2815:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "arrayPos", + "nativeSrc": "2778:8:2", + "nodeType": "YulIdentifier", + "src": "2778:8:2" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "2792:6:2", + "nodeType": "YulIdentifier", + "src": "2792:6:2" + }, + { + "kind": "number", + "nativeSrc": "2800:4:2", + "nodeType": "YulLiteral", + "src": "2800:4:2", + "type": "", + "value": "0x01" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "2788:3:2", + "nodeType": "YulIdentifier", + "src": "2788:3:2" + }, + "nativeSrc": "2788:17:2", + "nodeType": "YulFunctionCall", + "src": "2788:17:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2774:3:2", + "nodeType": "YulIdentifier", + "src": "2774:3:2" + }, + "nativeSrc": "2774:32:2", + "nodeType": "YulFunctionCall", + "src": "2774:32:2" + }, + { + "name": "end", + "nativeSrc": "2808:3:2", + "nodeType": "YulIdentifier", + "src": "2808:3:2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "2771:2:2", + "nodeType": "YulIdentifier", + "src": "2771:2:2" + }, + "nativeSrc": "2771:41:2", + "nodeType": "YulFunctionCall", + "src": "2771:41:2" + }, + "nativeSrc": "2768:128:2", + "nodeType": "YulIf", + "src": "2768:128:2" + } + ] + }, + "name": "abi_decode_t_bytes_calldata_ptr", + "nativeSrc": "2350:552:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "2391:6:2", + "nodeType": "YulTypedName", + "src": "2391:6:2", + "type": "" + }, + { + "name": "end", + "nativeSrc": "2399:3:2", + "nodeType": "YulTypedName", + "src": "2399:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "arrayPos", + "nativeSrc": "2407:8:2", + "nodeType": "YulTypedName", + "src": "2407:8:2", + "type": "" + }, + { + "name": "length", + "nativeSrc": "2417:6:2", + "nodeType": "YulTypedName", + "src": "2417:6:2", + "type": "" + } + ], + "src": "2350:552:2" + }, + { + "body": { + "nativeSrc": "3044:827:2", + "nodeType": "YulBlock", + "src": "3044:827:2", + "statements": [ + { + "body": { + "nativeSrc": "3091:83:2", + "nodeType": "YulBlock", + "src": "3091:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "3093:77:2", + "nodeType": "YulIdentifier", + "src": "3093:77:2" + }, + "nativeSrc": "3093:79:2", + "nodeType": "YulFunctionCall", + "src": "3093:79:2" + }, + "nativeSrc": "3093:79:2", + "nodeType": "YulExpressionStatement", + "src": "3093:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "3065:7:2", + "nodeType": "YulIdentifier", + "src": "3065:7:2" + }, + { + "name": "headStart", + "nativeSrc": "3074:9:2", + "nodeType": "YulIdentifier", + "src": "3074:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "3061:3:2", + "nodeType": "YulIdentifier", + "src": "3061:3:2" + }, + "nativeSrc": "3061:23:2", + "nodeType": "YulFunctionCall", + "src": "3061:23:2" + }, + { + "kind": "number", + "nativeSrc": "3086:3:2", + "nodeType": "YulLiteral", + "src": "3086:3:2", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "3057:3:2", + "nodeType": "YulIdentifier", + "src": "3057:3:2" + }, + "nativeSrc": "3057:33:2", + "nodeType": "YulFunctionCall", + "src": "3057:33:2" + }, + "nativeSrc": "3054:120:2", + "nodeType": "YulIf", + "src": "3054:120:2" + }, + { + "nativeSrc": "3184:117:2", + "nodeType": "YulBlock", + "src": "3184:117:2", + "statements": [ + { + "nativeSrc": "3199:15:2", + "nodeType": "YulVariableDeclaration", + "src": "3199:15:2", + "value": { + "kind": "number", + "nativeSrc": "3213:1:2", + "nodeType": "YulLiteral", + "src": "3213:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "3203:6:2", + "nodeType": "YulTypedName", + "src": "3203:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "3228:63:2", + "nodeType": "YulAssignment", + "src": "3228:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3263:9:2", + "nodeType": "YulIdentifier", + "src": "3263:9:2" + }, + { + "name": "offset", + "nativeSrc": "3274:6:2", + "nodeType": "YulIdentifier", + "src": "3274:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3259:3:2", + "nodeType": "YulIdentifier", + "src": "3259:3:2" + }, + "nativeSrc": "3259:22:2", + "nodeType": "YulFunctionCall", + "src": "3259:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "3283:7:2", + "nodeType": "YulIdentifier", + "src": "3283:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "3238:20:2", + "nodeType": "YulIdentifier", + "src": "3238:20:2" + }, + "nativeSrc": "3238:53:2", + "nodeType": "YulFunctionCall", + "src": "3238:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "3228:6:2", + "nodeType": "YulIdentifier", + "src": "3228:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "3311:118:2", + "nodeType": "YulBlock", + "src": "3311:118:2", + "statements": [ + { + "nativeSrc": "3326:16:2", + "nodeType": "YulVariableDeclaration", + "src": "3326:16:2", + "value": { + "kind": "number", + "nativeSrc": "3340:2:2", + "nodeType": "YulLiteral", + "src": "3340:2:2", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "3330:6:2", + "nodeType": "YulTypedName", + "src": "3330:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "3356:63:2", + "nodeType": "YulAssignment", + "src": "3356:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3391:9:2", + "nodeType": "YulIdentifier", + "src": "3391:9:2" + }, + { + "name": "offset", + "nativeSrc": "3402:6:2", + "nodeType": "YulIdentifier", + "src": "3402:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3387:3:2", + "nodeType": "YulIdentifier", + "src": "3387:3:2" + }, + "nativeSrc": "3387:22:2", + "nodeType": "YulFunctionCall", + "src": "3387:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "3411:7:2", + "nodeType": "YulIdentifier", + "src": "3411:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "3366:20:2", + "nodeType": "YulIdentifier", + "src": "3366:20:2" + }, + "nativeSrc": "3366:53:2", + "nodeType": "YulFunctionCall", + "src": "3366:53:2" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "3356:6:2", + "nodeType": "YulIdentifier", + "src": "3356:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "3439:118:2", + "nodeType": "YulBlock", + "src": "3439:118:2", + "statements": [ + { + "nativeSrc": "3454:16:2", + "nodeType": "YulVariableDeclaration", + "src": "3454:16:2", + "value": { + "kind": "number", + "nativeSrc": "3468:2:2", + "nodeType": "YulLiteral", + "src": "3468:2:2", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "3458:6:2", + "nodeType": "YulTypedName", + "src": "3458:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "3484:63:2", + "nodeType": "YulAssignment", + "src": "3484:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3519:9:2", + "nodeType": "YulIdentifier", + "src": "3519:9:2" + }, + { + "name": "offset", + "nativeSrc": "3530:6:2", + "nodeType": "YulIdentifier", + "src": "3530:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3515:3:2", + "nodeType": "YulIdentifier", + "src": "3515:3:2" + }, + "nativeSrc": "3515:22:2", + "nodeType": "YulFunctionCall", + "src": "3515:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "3539:7:2", + "nodeType": "YulIdentifier", + "src": "3539:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "3494:20:2", + "nodeType": "YulIdentifier", + "src": "3494:20:2" + }, + "nativeSrc": "3494:53:2", + "nodeType": "YulFunctionCall", + "src": "3494:53:2" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "3484:6:2", + "nodeType": "YulIdentifier", + "src": "3484:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "3567:297:2", + "nodeType": "YulBlock", + "src": "3567:297:2", + "statements": [ + { + "nativeSrc": "3582:46:2", + "nodeType": "YulVariableDeclaration", + "src": "3582:46:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3613:9:2", + "nodeType": "YulIdentifier", + "src": "3613:9:2" + }, + { + "kind": "number", + "nativeSrc": "3624:2:2", + "nodeType": "YulLiteral", + "src": "3624:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3609:3:2", + "nodeType": "YulIdentifier", + "src": "3609:3:2" + }, + "nativeSrc": "3609:18:2", + "nodeType": "YulFunctionCall", + "src": "3609:18:2" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "3596:12:2", + "nodeType": "YulIdentifier", + "src": "3596:12:2" + }, + "nativeSrc": "3596:32:2", + "nodeType": "YulFunctionCall", + "src": "3596:32:2" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "3586:6:2", + "nodeType": "YulTypedName", + "src": "3586:6:2", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "3675:83:2", + "nodeType": "YulBlock", + "src": "3675:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nativeSrc": "3677:77:2", + "nodeType": "YulIdentifier", + "src": "3677:77:2" + }, + "nativeSrc": "3677:79:2", + "nodeType": "YulFunctionCall", + "src": "3677:79:2" + }, + "nativeSrc": "3677:79:2", + "nodeType": "YulExpressionStatement", + "src": "3677:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "3647:6:2", + "nodeType": "YulIdentifier", + "src": "3647:6:2" + }, + { + "kind": "number", + "nativeSrc": "3655:18:2", + "nodeType": "YulLiteral", + "src": "3655:18:2", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3644:2:2", + "nodeType": "YulIdentifier", + "src": "3644:2:2" + }, + "nativeSrc": "3644:30:2", + "nodeType": "YulFunctionCall", + "src": "3644:30:2" + }, + "nativeSrc": "3641:117:2", + "nodeType": "YulIf", + "src": "3641:117:2" + }, + { + "nativeSrc": "3772:82:2", + "nodeType": "YulAssignment", + "src": "3772:82:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "3826:9:2", + "nodeType": "YulIdentifier", + "src": "3826:9:2" + }, + { + "name": "offset", + "nativeSrc": "3837:6:2", + "nodeType": "YulIdentifier", + "src": "3837:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3822:3:2", + "nodeType": "YulIdentifier", + "src": "3822:3:2" + }, + "nativeSrc": "3822:22:2", + "nodeType": "YulFunctionCall", + "src": "3822:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "3846:7:2", + "nodeType": "YulIdentifier", + "src": "3846:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nativeSrc": "3790:31:2", + "nodeType": "YulIdentifier", + "src": "3790:31:2" + }, + "nativeSrc": "3790:64:2", + "nodeType": "YulFunctionCall", + "src": "3790:64:2" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "3772:6:2", + "nodeType": "YulIdentifier", + "src": "3772:6:2" + }, + { + "name": "value4", + "nativeSrc": "3780:6:2", + "nodeType": "YulIdentifier", + "src": "3780:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_addresst_bytes_calldata_ptr", + "nativeSrc": "2908:963:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "2982:9:2", + "nodeType": "YulTypedName", + "src": "2982:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "2993:7:2", + "nodeType": "YulTypedName", + "src": "2993:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "3005:6:2", + "nodeType": "YulTypedName", + "src": "3005:6:2", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "3013:6:2", + "nodeType": "YulTypedName", + "src": "3013:6:2", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "3021:6:2", + "nodeType": "YulTypedName", + "src": "3021:6:2", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "3029:6:2", + "nodeType": "YulTypedName", + "src": "3029:6:2", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "3037:6:2", + "nodeType": "YulTypedName", + "src": "3037:6:2", + "type": "" + } + ], + "src": "2908:963:2" + }, + { + "body": { + "nativeSrc": "3942:53:2", + "nodeType": "YulBlock", + "src": "3942:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "3959:3:2", + "nodeType": "YulIdentifier", + "src": "3959:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "3982:5:2", + "nodeType": "YulIdentifier", + "src": "3982:5:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "3964:17:2", + "nodeType": "YulIdentifier", + "src": "3964:17:2" + }, + "nativeSrc": "3964:24:2", + "nodeType": "YulFunctionCall", + "src": "3964:24:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "3952:6:2", + "nodeType": "YulIdentifier", + "src": "3952:6:2" + }, + "nativeSrc": "3952:37:2", + "nodeType": "YulFunctionCall", + "src": "3952:37:2" + }, + "nativeSrc": "3952:37:2", + "nodeType": "YulExpressionStatement", + "src": "3952:37:2" + } + ] + }, + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "3877:118:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "3930:5:2", + "nodeType": "YulTypedName", + "src": "3930:5:2", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "3937:3:2", + "nodeType": "YulTypedName", + "src": "3937:3:2", + "type": "" + } + ], + "src": "3877:118:2" + }, + { + "body": { + "nativeSrc": "4099:124:2", + "nodeType": "YulBlock", + "src": "4099:124:2", + "statements": [ + { + "nativeSrc": "4109:26:2", + "nodeType": "YulAssignment", + "src": "4109:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4121:9:2", + "nodeType": "YulIdentifier", + "src": "4121:9:2" + }, + { + "kind": "number", + "nativeSrc": "4132:2:2", + "nodeType": "YulLiteral", + "src": "4132:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4117:3:2", + "nodeType": "YulIdentifier", + "src": "4117:3:2" + }, + "nativeSrc": "4117:18:2", + "nodeType": "YulFunctionCall", + "src": "4117:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4109:4:2", + "nodeType": "YulIdentifier", + "src": "4109:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "4189:6:2", + "nodeType": "YulIdentifier", + "src": "4189:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4202:9:2", + "nodeType": "YulIdentifier", + "src": "4202:9:2" + }, + { + "kind": "number", + "nativeSrc": "4213:1:2", + "nodeType": "YulLiteral", + "src": "4213:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4198:3:2", + "nodeType": "YulIdentifier", + "src": "4198:3:2" + }, + "nativeSrc": "4198:17:2", + "nodeType": "YulFunctionCall", + "src": "4198:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "4145:43:2", + "nodeType": "YulIdentifier", + "src": "4145:43:2" + }, + "nativeSrc": "4145:71:2", + "nodeType": "YulFunctionCall", + "src": "4145:71:2" + }, + "nativeSrc": "4145:71:2", + "nodeType": "YulExpressionStatement", + "src": "4145:71:2" + } + ] + }, + "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed", + "nativeSrc": "4001:222:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4071:9:2", + "nodeType": "YulTypedName", + "src": "4071:9:2", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4083:6:2", + "nodeType": "YulTypedName", + "src": "4083:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4094:4:2", + "nodeType": "YulTypedName", + "src": "4094:4:2", + "type": "" + } + ], + "src": "4001:222:2" + }, + { + "body": { + "nativeSrc": "4312:391:2", + "nodeType": "YulBlock", + "src": "4312:391:2", + "statements": [ + { + "body": { + "nativeSrc": "4358:83:2", + "nodeType": "YulBlock", + "src": "4358:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "4360:77:2", + "nodeType": "YulIdentifier", + "src": "4360:77:2" + }, + "nativeSrc": "4360:79:2", + "nodeType": "YulFunctionCall", + "src": "4360:79:2" + }, + "nativeSrc": "4360:79:2", + "nodeType": "YulExpressionStatement", + "src": "4360:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "4333:7:2", + "nodeType": "YulIdentifier", + "src": "4333:7:2" + }, + { + "name": "headStart", + "nativeSrc": "4342:9:2", + "nodeType": "YulIdentifier", + "src": "4342:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "4329:3:2", + "nodeType": "YulIdentifier", + "src": "4329:3:2" + }, + "nativeSrc": "4329:23:2", + "nodeType": "YulFunctionCall", + "src": "4329:23:2" + }, + { + "kind": "number", + "nativeSrc": "4354:2:2", + "nodeType": "YulLiteral", + "src": "4354:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "4325:3:2", + "nodeType": "YulIdentifier", + "src": "4325:3:2" + }, + "nativeSrc": "4325:32:2", + "nodeType": "YulFunctionCall", + "src": "4325:32:2" + }, + "nativeSrc": "4322:119:2", + "nodeType": "YulIf", + "src": "4322:119:2" + }, + { + "nativeSrc": "4451:117:2", + "nodeType": "YulBlock", + "src": "4451:117:2", + "statements": [ + { + "nativeSrc": "4466:15:2", + "nodeType": "YulVariableDeclaration", + "src": "4466:15:2", + "value": { + "kind": "number", + "nativeSrc": "4480:1:2", + "nodeType": "YulLiteral", + "src": "4480:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4470:6:2", + "nodeType": "YulTypedName", + "src": "4470:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "4495:63:2", + "nodeType": "YulAssignment", + "src": "4495:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4530:9:2", + "nodeType": "YulIdentifier", + "src": "4530:9:2" + }, + { + "name": "offset", + "nativeSrc": "4541:6:2", + "nodeType": "YulIdentifier", + "src": "4541:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4526:3:2", + "nodeType": "YulIdentifier", + "src": "4526:3:2" + }, + "nativeSrc": "4526:22:2", + "nodeType": "YulFunctionCall", + "src": "4526:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "4550:7:2", + "nodeType": "YulIdentifier", + "src": "4550:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "4505:20:2", + "nodeType": "YulIdentifier", + "src": "4505:20:2" + }, + "nativeSrc": "4505:53:2", + "nodeType": "YulFunctionCall", + "src": "4505:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "4495:6:2", + "nodeType": "YulIdentifier", + "src": "4495:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "4578:118:2", + "nodeType": "YulBlock", + "src": "4578:118:2", + "statements": [ + { + "nativeSrc": "4593:16:2", + "nodeType": "YulVariableDeclaration", + "src": "4593:16:2", + "value": { + "kind": "number", + "nativeSrc": "4607:2:2", + "nodeType": "YulLiteral", + "src": "4607:2:2", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "4597:6:2", + "nodeType": "YulTypedName", + "src": "4597:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "4623:63:2", + "nodeType": "YulAssignment", + "src": "4623:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4658:9:2", + "nodeType": "YulIdentifier", + "src": "4658:9:2" + }, + { + "name": "offset", + "nativeSrc": "4669:6:2", + "nodeType": "YulIdentifier", + "src": "4669:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4654:3:2", + "nodeType": "YulIdentifier", + "src": "4654:3:2" + }, + "nativeSrc": "4654:22:2", + "nodeType": "YulFunctionCall", + "src": "4654:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "4678:7:2", + "nodeType": "YulIdentifier", + "src": "4678:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "4633:20:2", + "nodeType": "YulIdentifier", + "src": "4633:20:2" + }, + "nativeSrc": "4633:53:2", + "nodeType": "YulFunctionCall", + "src": "4633:53:2" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "4623:6:2", + "nodeType": "YulIdentifier", + "src": "4623:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_uint256", + "nativeSrc": "4229:474:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4274:9:2", + "nodeType": "YulTypedName", + "src": "4274:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "4285:7:2", + "nodeType": "YulTypedName", + "src": "4285:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "4297:6:2", + "nodeType": "YulTypedName", + "src": "4297:6:2", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "4305:6:2", + "nodeType": "YulTypedName", + "src": "4305:6:2", + "type": "" + } + ], + "src": "4229:474:2" + }, + { + "body": { + "nativeSrc": "4774:53:2", + "nodeType": "YulBlock", + "src": "4774:53:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "4791:3:2", + "nodeType": "YulIdentifier", + "src": "4791:3:2" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "4814:5:2", + "nodeType": "YulIdentifier", + "src": "4814:5:2" + } + ], + "functionName": { + "name": "cleanup_t_address", + "nativeSrc": "4796:17:2", + "nodeType": "YulIdentifier", + "src": "4796:17:2" + }, + "nativeSrc": "4796:24:2", + "nodeType": "YulFunctionCall", + "src": "4796:24:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "4784:6:2", + "nodeType": "YulIdentifier", + "src": "4784:6:2" + }, + "nativeSrc": "4784:37:2", + "nodeType": "YulFunctionCall", + "src": "4784:37:2" + }, + "nativeSrc": "4784:37:2", + "nodeType": "YulExpressionStatement", + "src": "4784:37:2" + } + ] + }, + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "4709:118:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "4762:5:2", + "nodeType": "YulTypedName", + "src": "4762:5:2", + "type": "" + }, + { + "name": "pos", + "nativeSrc": "4769:3:2", + "nodeType": "YulTypedName", + "src": "4769:3:2", + "type": "" + } + ], + "src": "4709:118:2" + }, + { + "body": { + "nativeSrc": "4931:124:2", + "nodeType": "YulBlock", + "src": "4931:124:2", + "statements": [ + { + "nativeSrc": "4941:26:2", + "nodeType": "YulAssignment", + "src": "4941:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "4953:9:2", + "nodeType": "YulIdentifier", + "src": "4953:9:2" + }, + { + "kind": "number", + "nativeSrc": "4964:2:2", + "nodeType": "YulLiteral", + "src": "4964:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4949:3:2", + "nodeType": "YulIdentifier", + "src": "4949:3:2" + }, + "nativeSrc": "4949:18:2", + "nodeType": "YulFunctionCall", + "src": "4949:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "4941:4:2", + "nodeType": "YulIdentifier", + "src": "4941:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "5021:6:2", + "nodeType": "YulIdentifier", + "src": "5021:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5034:9:2", + "nodeType": "YulIdentifier", + "src": "5034:9:2" + }, + { + "kind": "number", + "nativeSrc": "5045:1:2", + "nodeType": "YulLiteral", + "src": "5045:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5030:3:2", + "nodeType": "YulIdentifier", + "src": "5030:3:2" + }, + "nativeSrc": "5030:17:2", + "nodeType": "YulFunctionCall", + "src": "5030:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "4977:43:2", + "nodeType": "YulIdentifier", + "src": "4977:43:2" + }, + "nativeSrc": "4977:71:2", + "nodeType": "YulFunctionCall", + "src": "4977:71:2" + }, + "nativeSrc": "4977:71:2", + "nodeType": "YulExpressionStatement", + "src": "4977:71:2" + } + ] + }, + "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed", + "nativeSrc": "4833:222:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "4903:9:2", + "nodeType": "YulTypedName", + "src": "4903:9:2", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "4915:6:2", + "nodeType": "YulTypedName", + "src": "4915:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "4926:4:2", + "nodeType": "YulTypedName", + "src": "4926:4:2", + "type": "" + } + ], + "src": "4833:222:2" + }, + { + "body": { + "nativeSrc": "5248:1214:2", + "nodeType": "YulBlock", + "src": "5248:1214:2", + "statements": [ + { + "body": { + "nativeSrc": "5295:83:2", + "nodeType": "YulBlock", + "src": "5295:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "5297:77:2", + "nodeType": "YulIdentifier", + "src": "5297:77:2" + }, + "nativeSrc": "5297:79:2", + "nodeType": "YulFunctionCall", + "src": "5297:79:2" + }, + "nativeSrc": "5297:79:2", + "nodeType": "YulExpressionStatement", + "src": "5297:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "5269:7:2", + "nodeType": "YulIdentifier", + "src": "5269:7:2" + }, + { + "name": "headStart", + "nativeSrc": "5278:9:2", + "nodeType": "YulIdentifier", + "src": "5278:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "5265:3:2", + "nodeType": "YulIdentifier", + "src": "5265:3:2" + }, + "nativeSrc": "5265:23:2", + "nodeType": "YulFunctionCall", + "src": "5265:23:2" + }, + { + "kind": "number", + "nativeSrc": "5290:3:2", + "nodeType": "YulLiteral", + "src": "5290:3:2", + "type": "", + "value": "224" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "5261:3:2", + "nodeType": "YulIdentifier", + "src": "5261:3:2" + }, + "nativeSrc": "5261:33:2", + "nodeType": "YulFunctionCall", + "src": "5261:33:2" + }, + "nativeSrc": "5258:120:2", + "nodeType": "YulIf", + "src": "5258:120:2" + }, + { + "nativeSrc": "5388:117:2", + "nodeType": "YulBlock", + "src": "5388:117:2", + "statements": [ + { + "nativeSrc": "5403:15:2", + "nodeType": "YulVariableDeclaration", + "src": "5403:15:2", + "value": { + "kind": "number", + "nativeSrc": "5417:1:2", + "nodeType": "YulLiteral", + "src": "5417:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5407:6:2", + "nodeType": "YulTypedName", + "src": "5407:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "5432:63:2", + "nodeType": "YulAssignment", + "src": "5432:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5467:9:2", + "nodeType": "YulIdentifier", + "src": "5467:9:2" + }, + { + "name": "offset", + "nativeSrc": "5478:6:2", + "nodeType": "YulIdentifier", + "src": "5478:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5463:3:2", + "nodeType": "YulIdentifier", + "src": "5463:3:2" + }, + "nativeSrc": "5463:22:2", + "nodeType": "YulFunctionCall", + "src": "5463:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "5487:7:2", + "nodeType": "YulIdentifier", + "src": "5487:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "5442:20:2", + "nodeType": "YulIdentifier", + "src": "5442:20:2" + }, + "nativeSrc": "5442:53:2", + "nodeType": "YulFunctionCall", + "src": "5442:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "5432:6:2", + "nodeType": "YulIdentifier", + "src": "5432:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "5515:118:2", + "nodeType": "YulBlock", + "src": "5515:118:2", + "statements": [ + { + "nativeSrc": "5530:16:2", + "nodeType": "YulVariableDeclaration", + "src": "5530:16:2", + "value": { + "kind": "number", + "nativeSrc": "5544:2:2", + "nodeType": "YulLiteral", + "src": "5544:2:2", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5534:6:2", + "nodeType": "YulTypedName", + "src": "5534:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "5560:63:2", + "nodeType": "YulAssignment", + "src": "5560:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5595:9:2", + "nodeType": "YulIdentifier", + "src": "5595:9:2" + }, + { + "name": "offset", + "nativeSrc": "5606:6:2", + "nodeType": "YulIdentifier", + "src": "5606:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5591:3:2", + "nodeType": "YulIdentifier", + "src": "5591:3:2" + }, + "nativeSrc": "5591:22:2", + "nodeType": "YulFunctionCall", + "src": "5591:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "5615:7:2", + "nodeType": "YulIdentifier", + "src": "5615:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "5570:20:2", + "nodeType": "YulIdentifier", + "src": "5570:20:2" + }, + "nativeSrc": "5570:53:2", + "nodeType": "YulFunctionCall", + "src": "5570:53:2" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "5560:6:2", + "nodeType": "YulIdentifier", + "src": "5560:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "5643:118:2", + "nodeType": "YulBlock", + "src": "5643:118:2", + "statements": [ + { + "nativeSrc": "5658:16:2", + "nodeType": "YulVariableDeclaration", + "src": "5658:16:2", + "value": { + "kind": "number", + "nativeSrc": "5672:2:2", + "nodeType": "YulLiteral", + "src": "5672:2:2", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5662:6:2", + "nodeType": "YulTypedName", + "src": "5662:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "5688:63:2", + "nodeType": "YulAssignment", + "src": "5688:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5723:9:2", + "nodeType": "YulIdentifier", + "src": "5723:9:2" + }, + { + "name": "offset", + "nativeSrc": "5734:6:2", + "nodeType": "YulIdentifier", + "src": "5734:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5719:3:2", + "nodeType": "YulIdentifier", + "src": "5719:3:2" + }, + "nativeSrc": "5719:22:2", + "nodeType": "YulFunctionCall", + "src": "5719:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "5743:7:2", + "nodeType": "YulIdentifier", + "src": "5743:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "5698:20:2", + "nodeType": "YulIdentifier", + "src": "5698:20:2" + }, + "nativeSrc": "5698:53:2", + "nodeType": "YulFunctionCall", + "src": "5698:53:2" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "5688:6:2", + "nodeType": "YulIdentifier", + "src": "5688:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "5771:118:2", + "nodeType": "YulBlock", + "src": "5771:118:2", + "statements": [ + { + "nativeSrc": "5786:16:2", + "nodeType": "YulVariableDeclaration", + "src": "5786:16:2", + "value": { + "kind": "number", + "nativeSrc": "5800:2:2", + "nodeType": "YulLiteral", + "src": "5800:2:2", + "type": "", + "value": "96" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5790:6:2", + "nodeType": "YulTypedName", + "src": "5790:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "5816:63:2", + "nodeType": "YulAssignment", + "src": "5816:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5851:9:2", + "nodeType": "YulIdentifier", + "src": "5851:9:2" + }, + { + "name": "offset", + "nativeSrc": "5862:6:2", + "nodeType": "YulIdentifier", + "src": "5862:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5847:3:2", + "nodeType": "YulIdentifier", + "src": "5847:3:2" + }, + "nativeSrc": "5847:22:2", + "nodeType": "YulFunctionCall", + "src": "5847:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "5871:7:2", + "nodeType": "YulIdentifier", + "src": "5871:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "5826:20:2", + "nodeType": "YulIdentifier", + "src": "5826:20:2" + }, + "nativeSrc": "5826:53:2", + "nodeType": "YulFunctionCall", + "src": "5826:53:2" + }, + "variableNames": [ + { + "name": "value3", + "nativeSrc": "5816:6:2", + "nodeType": "YulIdentifier", + "src": "5816:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "5899:298:2", + "nodeType": "YulBlock", + "src": "5899:298:2", + "statements": [ + { + "nativeSrc": "5914:47:2", + "nodeType": "YulVariableDeclaration", + "src": "5914:47:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "5945:9:2", + "nodeType": "YulIdentifier", + "src": "5945:9:2" + }, + { + "kind": "number", + "nativeSrc": "5956:3:2", + "nodeType": "YulLiteral", + "src": "5956:3:2", + "type": "", + "value": "128" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5941:3:2", + "nodeType": "YulIdentifier", + "src": "5941:3:2" + }, + "nativeSrc": "5941:19:2", + "nodeType": "YulFunctionCall", + "src": "5941:19:2" + } + ], + "functionName": { + "name": "calldataload", + "nativeSrc": "5928:12:2", + "nodeType": "YulIdentifier", + "src": "5928:12:2" + }, + "nativeSrc": "5928:33:2", + "nodeType": "YulFunctionCall", + "src": "5928:33:2" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "5918:6:2", + "nodeType": "YulTypedName", + "src": "5918:6:2", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6008:83:2", + "nodeType": "YulBlock", + "src": "6008:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db", + "nativeSrc": "6010:77:2", + "nodeType": "YulIdentifier", + "src": "6010:77:2" + }, + "nativeSrc": "6010:79:2", + "nodeType": "YulFunctionCall", + "src": "6010:79:2" + }, + "nativeSrc": "6010:79:2", + "nodeType": "YulExpressionStatement", + "src": "6010:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "5980:6:2", + "nodeType": "YulIdentifier", + "src": "5980:6:2" + }, + { + "kind": "number", + "nativeSrc": "5988:18:2", + "nodeType": "YulLiteral", + "src": "5988:18:2", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5977:2:2", + "nodeType": "YulIdentifier", + "src": "5977:2:2" + }, + "nativeSrc": "5977:30:2", + "nodeType": "YulFunctionCall", + "src": "5977:30:2" + }, + "nativeSrc": "5974:117:2", + "nodeType": "YulIf", + "src": "5974:117:2" + }, + { + "nativeSrc": "6105:82:2", + "nodeType": "YulAssignment", + "src": "6105:82:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6159:9:2", + "nodeType": "YulIdentifier", + "src": "6159:9:2" + }, + { + "name": "offset", + "nativeSrc": "6170:6:2", + "nodeType": "YulIdentifier", + "src": "6170:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6155:3:2", + "nodeType": "YulIdentifier", + "src": "6155:3:2" + }, + "nativeSrc": "6155:22:2", + "nodeType": "YulFunctionCall", + "src": "6155:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "6179:7:2", + "nodeType": "YulIdentifier", + "src": "6179:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_bytes_calldata_ptr", + "nativeSrc": "6123:31:2", + "nodeType": "YulIdentifier", + "src": "6123:31:2" + }, + "nativeSrc": "6123:64:2", + "nodeType": "YulFunctionCall", + "src": "6123:64:2" + }, + "variableNames": [ + { + "name": "value4", + "nativeSrc": "6105:6:2", + "nodeType": "YulIdentifier", + "src": "6105:6:2" + }, + { + "name": "value5", + "nativeSrc": "6113:6:2", + "nodeType": "YulIdentifier", + "src": "6113:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "6207:119:2", + "nodeType": "YulBlock", + "src": "6207:119:2", + "statements": [ + { + "nativeSrc": "6222:17:2", + "nodeType": "YulVariableDeclaration", + "src": "6222:17:2", + "value": { + "kind": "number", + "nativeSrc": "6236:3:2", + "nodeType": "YulLiteral", + "src": "6236:3:2", + "type": "", + "value": "160" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "6226:6:2", + "nodeType": "YulTypedName", + "src": "6226:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "6253:63:2", + "nodeType": "YulAssignment", + "src": "6253:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6288:9:2", + "nodeType": "YulIdentifier", + "src": "6288:9:2" + }, + { + "name": "offset", + "nativeSrc": "6299:6:2", + "nodeType": "YulIdentifier", + "src": "6299:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6284:3:2", + "nodeType": "YulIdentifier", + "src": "6284:3:2" + }, + "nativeSrc": "6284:22:2", + "nodeType": "YulFunctionCall", + "src": "6284:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "6308:7:2", + "nodeType": "YulIdentifier", + "src": "6308:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "6263:20:2", + "nodeType": "YulIdentifier", + "src": "6263:20:2" + }, + "nativeSrc": "6263:53:2", + "nodeType": "YulFunctionCall", + "src": "6263:53:2" + }, + "variableNames": [ + { + "name": "value6", + "nativeSrc": "6253:6:2", + "nodeType": "YulIdentifier", + "src": "6253:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "6336:119:2", + "nodeType": "YulBlock", + "src": "6336:119:2", + "statements": [ + { + "nativeSrc": "6351:17:2", + "nodeType": "YulVariableDeclaration", + "src": "6351:17:2", + "value": { + "kind": "number", + "nativeSrc": "6365:3:2", + "nodeType": "YulLiteral", + "src": "6365:3:2", + "type": "", + "value": "192" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "6355:6:2", + "nodeType": "YulTypedName", + "src": "6355:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "6382:63:2", + "nodeType": "YulAssignment", + "src": "6382:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6417:9:2", + "nodeType": "YulIdentifier", + "src": "6417:9:2" + }, + { + "name": "offset", + "nativeSrc": "6428:6:2", + "nodeType": "YulIdentifier", + "src": "6428:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6413:3:2", + "nodeType": "YulIdentifier", + "src": "6413:3:2" + }, + "nativeSrc": "6413:22:2", + "nodeType": "YulFunctionCall", + "src": "6413:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "6437:7:2", + "nodeType": "YulIdentifier", + "src": "6437:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256", + "nativeSrc": "6392:20:2", + "nodeType": "YulIdentifier", + "src": "6392:20:2" + }, + "nativeSrc": "6392:53:2", + "nodeType": "YulFunctionCall", + "src": "6392:53:2" + }, + "variableNames": [ + { + "name": "value7", + "nativeSrc": "6382:6:2", + "nodeType": "YulIdentifier", + "src": "6382:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256t_addresst_addresst_addresst_bytes_calldata_ptrt_uint256t_uint256", + "nativeSrc": "5061:1401:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "5162:9:2", + "nodeType": "YulTypedName", + "src": "5162:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "5173:7:2", + "nodeType": "YulTypedName", + "src": "5173:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "5185:6:2", + "nodeType": "YulTypedName", + "src": "5185:6:2", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "5193:6:2", + "nodeType": "YulTypedName", + "src": "5193:6:2", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "5201:6:2", + "nodeType": "YulTypedName", + "src": "5201:6:2", + "type": "" + }, + { + "name": "value3", + "nativeSrc": "5209:6:2", + "nodeType": "YulTypedName", + "src": "5209:6:2", + "type": "" + }, + { + "name": "value4", + "nativeSrc": "5217:6:2", + "nodeType": "YulTypedName", + "src": "5217:6:2", + "type": "" + }, + { + "name": "value5", + "nativeSrc": "5225:6:2", + "nodeType": "YulTypedName", + "src": "5225:6:2", + "type": "" + }, + { + "name": "value6", + "nativeSrc": "5233:6:2", + "nodeType": "YulTypedName", + "src": "5233:6:2", + "type": "" + }, + { + "name": "value7", + "nativeSrc": "5241:6:2", + "nodeType": "YulTypedName", + "src": "5241:6:2", + "type": "" + } + ], + "src": "5061:1401:2" + }, + { + "body": { + "nativeSrc": "6534:263:2", + "nodeType": "YulBlock", + "src": "6534:263:2", + "statements": [ + { + "body": { + "nativeSrc": "6580:83:2", + "nodeType": "YulBlock", + "src": "6580:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "6582:77:2", + "nodeType": "YulIdentifier", + "src": "6582:77:2" + }, + "nativeSrc": "6582:79:2", + "nodeType": "YulFunctionCall", + "src": "6582:79:2" + }, + "nativeSrc": "6582:79:2", + "nodeType": "YulExpressionStatement", + "src": "6582:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "6555:7:2", + "nodeType": "YulIdentifier", + "src": "6555:7:2" + }, + { + "name": "headStart", + "nativeSrc": "6564:9:2", + "nodeType": "YulIdentifier", + "src": "6564:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6551:3:2", + "nodeType": "YulIdentifier", + "src": "6551:3:2" + }, + "nativeSrc": "6551:23:2", + "nodeType": "YulFunctionCall", + "src": "6551:23:2" + }, + { + "kind": "number", + "nativeSrc": "6576:2:2", + "nodeType": "YulLiteral", + "src": "6576:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6547:3:2", + "nodeType": "YulIdentifier", + "src": "6547:3:2" + }, + "nativeSrc": "6547:32:2", + "nodeType": "YulFunctionCall", + "src": "6547:32:2" + }, + "nativeSrc": "6544:119:2", + "nodeType": "YulIf", + "src": "6544:119:2" + }, + { + "nativeSrc": "6673:117:2", + "nodeType": "YulBlock", + "src": "6673:117:2", + "statements": [ + { + "nativeSrc": "6688:15:2", + "nodeType": "YulVariableDeclaration", + "src": "6688:15:2", + "value": { + "kind": "number", + "nativeSrc": "6702:1:2", + "nodeType": "YulLiteral", + "src": "6702:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "6692:6:2", + "nodeType": "YulTypedName", + "src": "6692:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "6717:63:2", + "nodeType": "YulAssignment", + "src": "6717:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "6752:9:2", + "nodeType": "YulIdentifier", + "src": "6752:9:2" + }, + { + "name": "offset", + "nativeSrc": "6763:6:2", + "nodeType": "YulIdentifier", + "src": "6763:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6748:3:2", + "nodeType": "YulIdentifier", + "src": "6748:3:2" + }, + "nativeSrc": "6748:22:2", + "nodeType": "YulFunctionCall", + "src": "6748:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "6772:7:2", + "nodeType": "YulIdentifier", + "src": "6772:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "6727:20:2", + "nodeType": "YulIdentifier", + "src": "6727:20:2" + }, + "nativeSrc": "6727:53:2", + "nodeType": "YulFunctionCall", + "src": "6727:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "6717:6:2", + "nodeType": "YulIdentifier", + "src": "6717:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address", + "nativeSrc": "6468:329:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6504:9:2", + "nodeType": "YulTypedName", + "src": "6504:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "6515:7:2", + "nodeType": "YulTypedName", + "src": "6515:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "6527:6:2", + "nodeType": "YulTypedName", + "src": "6527:6:2", + "type": "" + } + ], + "src": "6468:329:2" + }, + { + "body": { + "nativeSrc": "6903:519:2", + "nodeType": "YulBlock", + "src": "6903:519:2", + "statements": [ + { + "body": { + "nativeSrc": "6949:83:2", + "nodeType": "YulBlock", + "src": "6949:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "6951:77:2", + "nodeType": "YulIdentifier", + "src": "6951:77:2" + }, + "nativeSrc": "6951:79:2", + "nodeType": "YulFunctionCall", + "src": "6951:79:2" + }, + "nativeSrc": "6951:79:2", + "nodeType": "YulExpressionStatement", + "src": "6951:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "6924:7:2", + "nodeType": "YulIdentifier", + "src": "6924:7:2" + }, + { + "name": "headStart", + "nativeSrc": "6933:9:2", + "nodeType": "YulIdentifier", + "src": "6933:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "6920:3:2", + "nodeType": "YulIdentifier", + "src": "6920:3:2" + }, + "nativeSrc": "6920:23:2", + "nodeType": "YulFunctionCall", + "src": "6920:23:2" + }, + { + "kind": "number", + "nativeSrc": "6945:2:2", + "nodeType": "YulLiteral", + "src": "6945:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "6916:3:2", + "nodeType": "YulIdentifier", + "src": "6916:3:2" + }, + "nativeSrc": "6916:32:2", + "nodeType": "YulFunctionCall", + "src": "6916:32:2" + }, + "nativeSrc": "6913:119:2", + "nodeType": "YulIf", + "src": "6913:119:2" + }, + { + "nativeSrc": "7042:117:2", + "nodeType": "YulBlock", + "src": "7042:117:2", + "statements": [ + { + "nativeSrc": "7057:15:2", + "nodeType": "YulVariableDeclaration", + "src": "7057:15:2", + "value": { + "kind": "number", + "nativeSrc": "7071:1:2", + "nodeType": "YulLiteral", + "src": "7071:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7061:6:2", + "nodeType": "YulTypedName", + "src": "7061:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "7086:63:2", + "nodeType": "YulAssignment", + "src": "7086:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7121:9:2", + "nodeType": "YulIdentifier", + "src": "7121:9:2" + }, + { + "name": "offset", + "nativeSrc": "7132:6:2", + "nodeType": "YulIdentifier", + "src": "7132:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7117:3:2", + "nodeType": "YulIdentifier", + "src": "7117:3:2" + }, + "nativeSrc": "7117:22:2", + "nodeType": "YulFunctionCall", + "src": "7117:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "7141:7:2", + "nodeType": "YulIdentifier", + "src": "7141:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "7096:20:2", + "nodeType": "YulIdentifier", + "src": "7096:20:2" + }, + "nativeSrc": "7096:53:2", + "nodeType": "YulFunctionCall", + "src": "7096:53:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7086:6:2", + "nodeType": "YulIdentifier", + "src": "7086:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "7169:118:2", + "nodeType": "YulBlock", + "src": "7169:118:2", + "statements": [ + { + "nativeSrc": "7184:16:2", + "nodeType": "YulVariableDeclaration", + "src": "7184:16:2", + "value": { + "kind": "number", + "nativeSrc": "7198:2:2", + "nodeType": "YulLiteral", + "src": "7198:2:2", + "type": "", + "value": "32" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7188:6:2", + "nodeType": "YulTypedName", + "src": "7188:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "7214:63:2", + "nodeType": "YulAssignment", + "src": "7214:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7249:9:2", + "nodeType": "YulIdentifier", + "src": "7249:9:2" + }, + { + "name": "offset", + "nativeSrc": "7260:6:2", + "nodeType": "YulIdentifier", + "src": "7260:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7245:3:2", + "nodeType": "YulIdentifier", + "src": "7245:3:2" + }, + "nativeSrc": "7245:22:2", + "nodeType": "YulFunctionCall", + "src": "7245:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "7269:7:2", + "nodeType": "YulIdentifier", + "src": "7269:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "7224:20:2", + "nodeType": "YulIdentifier", + "src": "7224:20:2" + }, + "nativeSrc": "7224:53:2", + "nodeType": "YulFunctionCall", + "src": "7224:53:2" + }, + "variableNames": [ + { + "name": "value1", + "nativeSrc": "7214:6:2", + "nodeType": "YulIdentifier", + "src": "7214:6:2" + } + ] + } + ] + }, + { + "nativeSrc": "7297:118:2", + "nodeType": "YulBlock", + "src": "7297:118:2", + "statements": [ + { + "nativeSrc": "7312:16:2", + "nodeType": "YulVariableDeclaration", + "src": "7312:16:2", + "value": { + "kind": "number", + "nativeSrc": "7326:2:2", + "nodeType": "YulLiteral", + "src": "7326:2:2", + "type": "", + "value": "64" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7316:6:2", + "nodeType": "YulTypedName", + "src": "7316:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "7342:63:2", + "nodeType": "YulAssignment", + "src": "7342:63:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7377:9:2", + "nodeType": "YulIdentifier", + "src": "7377:9:2" + }, + { + "name": "offset", + "nativeSrc": "7388:6:2", + "nodeType": "YulIdentifier", + "src": "7388:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7373:3:2", + "nodeType": "YulIdentifier", + "src": "7373:3:2" + }, + "nativeSrc": "7373:22:2", + "nodeType": "YulFunctionCall", + "src": "7373:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "7397:7:2", + "nodeType": "YulIdentifier", + "src": "7397:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address", + "nativeSrc": "7352:20:2", + "nodeType": "YulIdentifier", + "src": "7352:20:2" + }, + "nativeSrc": "7352:53:2", + "nodeType": "YulFunctionCall", + "src": "7352:53:2" + }, + "variableNames": [ + { + "name": "value2", + "nativeSrc": "7342:6:2", + "nodeType": "YulIdentifier", + "src": "7342:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_addresst_addresst_address", + "nativeSrc": "6803:619:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "6857:9:2", + "nodeType": "YulTypedName", + "src": "6857:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "6868:7:2", + "nodeType": "YulTypedName", + "src": "6868:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "6880:6:2", + "nodeType": "YulTypedName", + "src": "6880:6:2", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "6888:6:2", + "nodeType": "YulTypedName", + "src": "6888:6:2", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "6896:6:2", + "nodeType": "YulTypedName", + "src": "6896:6:2", + "type": "" + } + ], + "src": "6803:619:2" + }, + { + "body": { + "nativeSrc": "7491:80:2", + "nodeType": "YulBlock", + "src": "7491:80:2", + "statements": [ + { + "nativeSrc": "7501:22:2", + "nodeType": "YulAssignment", + "src": "7501:22:2", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "7516:6:2", + "nodeType": "YulIdentifier", + "src": "7516:6:2" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "7510:5:2", + "nodeType": "YulIdentifier", + "src": "7510:5:2" + }, + "nativeSrc": "7510:13:2", + "nodeType": "YulFunctionCall", + "src": "7510:13:2" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "7501:5:2", + "nodeType": "YulIdentifier", + "src": "7501:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "7559:5:2", + "nodeType": "YulIdentifier", + "src": "7559:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_address", + "nativeSrc": "7532:26:2", + "nodeType": "YulIdentifier", + "src": "7532:26:2" + }, + "nativeSrc": "7532:33:2", + "nodeType": "YulFunctionCall", + "src": "7532:33:2" + }, + "nativeSrc": "7532:33:2", + "nodeType": "YulExpressionStatement", + "src": "7532:33:2" + } + ] + }, + "name": "abi_decode_t_address_fromMemory", + "nativeSrc": "7428:143:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "7469:6:2", + "nodeType": "YulTypedName", + "src": "7469:6:2", + "type": "" + }, + { + "name": "end", + "nativeSrc": "7477:3:2", + "nodeType": "YulTypedName", + "src": "7477:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "7485:5:2", + "nodeType": "YulTypedName", + "src": "7485:5:2", + "type": "" + } + ], + "src": "7428:143:2" + }, + { + "body": { + "nativeSrc": "7654:274:2", + "nodeType": "YulBlock", + "src": "7654:274:2", + "statements": [ + { + "body": { + "nativeSrc": "7700:83:2", + "nodeType": "YulBlock", + "src": "7700:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "7702:77:2", + "nodeType": "YulIdentifier", + "src": "7702:77:2" + }, + "nativeSrc": "7702:79:2", + "nodeType": "YulFunctionCall", + "src": "7702:79:2" + }, + "nativeSrc": "7702:79:2", + "nodeType": "YulExpressionStatement", + "src": "7702:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "7675:7:2", + "nodeType": "YulIdentifier", + "src": "7675:7:2" + }, + { + "name": "headStart", + "nativeSrc": "7684:9:2", + "nodeType": "YulIdentifier", + "src": "7684:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "7671:3:2", + "nodeType": "YulIdentifier", + "src": "7671:3:2" + }, + "nativeSrc": "7671:23:2", + "nodeType": "YulFunctionCall", + "src": "7671:23:2" + }, + { + "kind": "number", + "nativeSrc": "7696:2:2", + "nodeType": "YulLiteral", + "src": "7696:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "7667:3:2", + "nodeType": "YulIdentifier", + "src": "7667:3:2" + }, + "nativeSrc": "7667:32:2", + "nodeType": "YulFunctionCall", + "src": "7667:32:2" + }, + "nativeSrc": "7664:119:2", + "nodeType": "YulIf", + "src": "7664:119:2" + }, + { + "nativeSrc": "7793:128:2", + "nodeType": "YulBlock", + "src": "7793:128:2", + "statements": [ + { + "nativeSrc": "7808:15:2", + "nodeType": "YulVariableDeclaration", + "src": "7808:15:2", + "value": { + "kind": "number", + "nativeSrc": "7822:1:2", + "nodeType": "YulLiteral", + "src": "7822:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "7812:6:2", + "nodeType": "YulTypedName", + "src": "7812:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "7837:74:2", + "nodeType": "YulAssignment", + "src": "7837:74:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "7883:9:2", + "nodeType": "YulIdentifier", + "src": "7883:9:2" + }, + { + "name": "offset", + "nativeSrc": "7894:6:2", + "nodeType": "YulIdentifier", + "src": "7894:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "7879:3:2", + "nodeType": "YulIdentifier", + "src": "7879:3:2" + }, + "nativeSrc": "7879:22:2", + "nodeType": "YulFunctionCall", + "src": "7879:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "7903:7:2", + "nodeType": "YulIdentifier", + "src": "7903:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_address_fromMemory", + "nativeSrc": "7847:31:2", + "nodeType": "YulIdentifier", + "src": "7847:31:2" + }, + "nativeSrc": "7847:64:2", + "nodeType": "YulFunctionCall", + "src": "7847:64:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "7837:6:2", + "nodeType": "YulIdentifier", + "src": "7837:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_address_fromMemory", + "nativeSrc": "7577:351:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "7624:9:2", + "nodeType": "YulTypedName", + "src": "7624:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "7635:7:2", + "nodeType": "YulTypedName", + "src": "7635:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "7647:6:2", + "nodeType": "YulTypedName", + "src": "7647:6:2", + "type": "" + } + ], + "src": "7577:351:2" + }, + { + "body": { + "nativeSrc": "7997:80:2", + "nodeType": "YulBlock", + "src": "7997:80:2", + "statements": [ + { + "nativeSrc": "8007:22:2", + "nodeType": "YulAssignment", + "src": "8007:22:2", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "8022:6:2", + "nodeType": "YulIdentifier", + "src": "8022:6:2" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8016:5:2", + "nodeType": "YulIdentifier", + "src": "8016:5:2" + }, + "nativeSrc": "8016:13:2", + "nodeType": "YulFunctionCall", + "src": "8016:13:2" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "8007:5:2", + "nodeType": "YulIdentifier", + "src": "8007:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "8065:5:2", + "nodeType": "YulIdentifier", + "src": "8065:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_uint256", + "nativeSrc": "8038:26:2", + "nodeType": "YulIdentifier", + "src": "8038:26:2" + }, + "nativeSrc": "8038:33:2", + "nodeType": "YulFunctionCall", + "src": "8038:33:2" + }, + "nativeSrc": "8038:33:2", + "nodeType": "YulExpressionStatement", + "src": "8038:33:2" + } + ] + }, + "name": "abi_decode_t_uint256_fromMemory", + "nativeSrc": "7934:143:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "7975:6:2", + "nodeType": "YulTypedName", + "src": "7975:6:2", + "type": "" + }, + { + "name": "end", + "nativeSrc": "7983:3:2", + "nodeType": "YulTypedName", + "src": "7983:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "7991:5:2", + "nodeType": "YulTypedName", + "src": "7991:5:2", + "type": "" + } + ], + "src": "7934:143:2" + }, + { + "body": { + "nativeSrc": "8160:274:2", + "nodeType": "YulBlock", + "src": "8160:274:2", + "statements": [ + { + "body": { + "nativeSrc": "8206:83:2", + "nodeType": "YulBlock", + "src": "8206:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "8208:77:2", + "nodeType": "YulIdentifier", + "src": "8208:77:2" + }, + "nativeSrc": "8208:79:2", + "nodeType": "YulFunctionCall", + "src": "8208:79:2" + }, + "nativeSrc": "8208:79:2", + "nodeType": "YulExpressionStatement", + "src": "8208:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8181:7:2", + "nodeType": "YulIdentifier", + "src": "8181:7:2" + }, + { + "name": "headStart", + "nativeSrc": "8190:9:2", + "nodeType": "YulIdentifier", + "src": "8190:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8177:3:2", + "nodeType": "YulIdentifier", + "src": "8177:3:2" + }, + "nativeSrc": "8177:23:2", + "nodeType": "YulFunctionCall", + "src": "8177:23:2" + }, + { + "kind": "number", + "nativeSrc": "8202:2:2", + "nodeType": "YulLiteral", + "src": "8202:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8173:3:2", + "nodeType": "YulIdentifier", + "src": "8173:3:2" + }, + "nativeSrc": "8173:32:2", + "nodeType": "YulFunctionCall", + "src": "8173:32:2" + }, + "nativeSrc": "8170:119:2", + "nodeType": "YulIf", + "src": "8170:119:2" + }, + { + "nativeSrc": "8299:128:2", + "nodeType": "YulBlock", + "src": "8299:128:2", + "statements": [ + { + "nativeSrc": "8314:15:2", + "nodeType": "YulVariableDeclaration", + "src": "8314:15:2", + "value": { + "kind": "number", + "nativeSrc": "8328:1:2", + "nodeType": "YulLiteral", + "src": "8328:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "8318:6:2", + "nodeType": "YulTypedName", + "src": "8318:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "8343:74:2", + "nodeType": "YulAssignment", + "src": "8343:74:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "8389:9:2", + "nodeType": "YulIdentifier", + "src": "8389:9:2" + }, + { + "name": "offset", + "nativeSrc": "8400:6:2", + "nodeType": "YulIdentifier", + "src": "8400:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "8385:3:2", + "nodeType": "YulIdentifier", + "src": "8385:3:2" + }, + "nativeSrc": "8385:22:2", + "nodeType": "YulFunctionCall", + "src": "8385:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "8409:7:2", + "nodeType": "YulIdentifier", + "src": "8409:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_uint256_fromMemory", + "nativeSrc": "8353:31:2", + "nodeType": "YulIdentifier", + "src": "8353:31:2" + }, + "nativeSrc": "8353:64:2", + "nodeType": "YulFunctionCall", + "src": "8353:64:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "8343:6:2", + "nodeType": "YulIdentifier", + "src": "8343:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_uint256_fromMemory", + "nativeSrc": "8083:351:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8130:9:2", + "nodeType": "YulTypedName", + "src": "8130:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8141:7:2", + "nodeType": "YulTypedName", + "src": "8141:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8153:6:2", + "nodeType": "YulTypedName", + "src": "8153:6:2", + "type": "" + } + ], + "src": "8083:351:2" + }, + { + "body": { + "nativeSrc": "8482:48:2", + "nodeType": "YulBlock", + "src": "8482:48:2", + "statements": [ + { + "nativeSrc": "8492:32:2", + "nodeType": "YulAssignment", + "src": "8492:32:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "8517:5:2", + "nodeType": "YulIdentifier", + "src": "8517:5:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8510:6:2", + "nodeType": "YulIdentifier", + "src": "8510:6:2" + }, + "nativeSrc": "8510:13:2", + "nodeType": "YulFunctionCall", + "src": "8510:13:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8503:6:2", + "nodeType": "YulIdentifier", + "src": "8503:6:2" + }, + "nativeSrc": "8503:21:2", + "nodeType": "YulFunctionCall", + "src": "8503:21:2" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "8492:7:2", + "nodeType": "YulIdentifier", + "src": "8492:7:2" + } + ] + } + ] + }, + "name": "cleanup_t_bool", + "nativeSrc": "8440:90:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "8464:5:2", + "nodeType": "YulTypedName", + "src": "8464:5:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "8474:7:2", + "nodeType": "YulTypedName", + "src": "8474:7:2", + "type": "" + } + ], + "src": "8440:90:2" + }, + { + "body": { + "nativeSrc": "8576:76:2", + "nodeType": "YulBlock", + "src": "8576:76:2", + "statements": [ + { + "body": { + "nativeSrc": "8630:16:2", + "nodeType": "YulBlock", + "src": "8630:16:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "8639:1:2", + "nodeType": "YulLiteral", + "src": "8639:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "8642:1:2", + "nodeType": "YulLiteral", + "src": "8642:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "8632:6:2", + "nodeType": "YulIdentifier", + "src": "8632:6:2" + }, + "nativeSrc": "8632:12:2", + "nodeType": "YulFunctionCall", + "src": "8632:12:2" + }, + "nativeSrc": "8632:12:2", + "nodeType": "YulExpressionStatement", + "src": "8632:12:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "8599:5:2", + "nodeType": "YulIdentifier", + "src": "8599:5:2" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "8621:5:2", + "nodeType": "YulIdentifier", + "src": "8621:5:2" + } + ], + "functionName": { + "name": "cleanup_t_bool", + "nativeSrc": "8606:14:2", + "nodeType": "YulIdentifier", + "src": "8606:14:2" + }, + "nativeSrc": "8606:21:2", + "nodeType": "YulFunctionCall", + "src": "8606:21:2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "8596:2:2", + "nodeType": "YulIdentifier", + "src": "8596:2:2" + }, + "nativeSrc": "8596:32:2", + "nodeType": "YulFunctionCall", + "src": "8596:32:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "8589:6:2", + "nodeType": "YulIdentifier", + "src": "8589:6:2" + }, + "nativeSrc": "8589:40:2", + "nodeType": "YulFunctionCall", + "src": "8589:40:2" + }, + "nativeSrc": "8586:60:2", + "nodeType": "YulIf", + "src": "8586:60:2" + } + ] + }, + "name": "validator_revert_t_bool", + "nativeSrc": "8536:116:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "8569:5:2", + "nodeType": "YulTypedName", + "src": "8569:5:2", + "type": "" + } + ], + "src": "8536:116:2" + }, + { + "body": { + "nativeSrc": "8718:77:2", + "nodeType": "YulBlock", + "src": "8718:77:2", + "statements": [ + { + "nativeSrc": "8728:22:2", + "nodeType": "YulAssignment", + "src": "8728:22:2", + "value": { + "arguments": [ + { + "name": "offset", + "nativeSrc": "8743:6:2", + "nodeType": "YulIdentifier", + "src": "8743:6:2" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "8737:5:2", + "nodeType": "YulIdentifier", + "src": "8737:5:2" + }, + "nativeSrc": "8737:13:2", + "nodeType": "YulFunctionCall", + "src": "8737:13:2" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "8728:5:2", + "nodeType": "YulIdentifier", + "src": "8728:5:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value", + "nativeSrc": "8783:5:2", + "nodeType": "YulIdentifier", + "src": "8783:5:2" + } + ], + "functionName": { + "name": "validator_revert_t_bool", + "nativeSrc": "8759:23:2", + "nodeType": "YulIdentifier", + "src": "8759:23:2" + }, + "nativeSrc": "8759:30:2", + "nodeType": "YulFunctionCall", + "src": "8759:30:2" + }, + "nativeSrc": "8759:30:2", + "nodeType": "YulExpressionStatement", + "src": "8759:30:2" + } + ] + }, + "name": "abi_decode_t_bool_fromMemory", + "nativeSrc": "8658:137:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "offset", + "nativeSrc": "8696:6:2", + "nodeType": "YulTypedName", + "src": "8696:6:2", + "type": "" + }, + { + "name": "end", + "nativeSrc": "8704:3:2", + "nodeType": "YulTypedName", + "src": "8704:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value", + "nativeSrc": "8712:5:2", + "nodeType": "YulTypedName", + "src": "8712:5:2", + "type": "" + } + ], + "src": "8658:137:2" + }, + { + "body": { + "nativeSrc": "8875:271:2", + "nodeType": "YulBlock", + "src": "8875:271:2", + "statements": [ + { + "body": { + "nativeSrc": "8921:83:2", + "nodeType": "YulBlock", + "src": "8921:83:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b", + "nativeSrc": "8923:77:2", + "nodeType": "YulIdentifier", + "src": "8923:77:2" + }, + "nativeSrc": "8923:79:2", + "nodeType": "YulFunctionCall", + "src": "8923:79:2" + }, + "nativeSrc": "8923:79:2", + "nodeType": "YulExpressionStatement", + "src": "8923:79:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "name": "dataEnd", + "nativeSrc": "8896:7:2", + "nodeType": "YulIdentifier", + "src": "8896:7:2" + }, + { + "name": "headStart", + "nativeSrc": "8905:9:2", + "nodeType": "YulIdentifier", + "src": "8905:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "8892:3:2", + "nodeType": "YulIdentifier", + "src": "8892:3:2" + }, + "nativeSrc": "8892:23:2", + "nodeType": "YulFunctionCall", + "src": "8892:23:2" + }, + { + "kind": "number", + "nativeSrc": "8917:2:2", + "nodeType": "YulLiteral", + "src": "8917:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "slt", + "nativeSrc": "8888:3:2", + "nodeType": "YulIdentifier", + "src": "8888:3:2" + }, + "nativeSrc": "8888:32:2", + "nodeType": "YulFunctionCall", + "src": "8888:32:2" + }, + "nativeSrc": "8885:119:2", + "nodeType": "YulIf", + "src": "8885:119:2" + }, + { + "nativeSrc": "9014:125:2", + "nodeType": "YulBlock", + "src": "9014:125:2", + "statements": [ + { + "nativeSrc": "9029:15:2", + "nodeType": "YulVariableDeclaration", + "src": "9029:15:2", + "value": { + "kind": "number", + "nativeSrc": "9043:1:2", + "nodeType": "YulLiteral", + "src": "9043:1:2", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "offset", + "nativeSrc": "9033:6:2", + "nodeType": "YulTypedName", + "src": "9033:6:2", + "type": "" + } + ] + }, + { + "nativeSrc": "9058:71:2", + "nodeType": "YulAssignment", + "src": "9058:71:2", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "9101:9:2", + "nodeType": "YulIdentifier", + "src": "9101:9:2" + }, + { + "name": "offset", + "nativeSrc": "9112:6:2", + "nodeType": "YulIdentifier", + "src": "9112:6:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9097:3:2", + "nodeType": "YulIdentifier", + "src": "9097:3:2" + }, + "nativeSrc": "9097:22:2", + "nodeType": "YulFunctionCall", + "src": "9097:22:2" + }, + { + "name": "dataEnd", + "nativeSrc": "9121:7:2", + "nodeType": "YulIdentifier", + "src": "9121:7:2" + } + ], + "functionName": { + "name": "abi_decode_t_bool_fromMemory", + "nativeSrc": "9068:28:2", + "nodeType": "YulIdentifier", + "src": "9068:28:2" + }, + "nativeSrc": "9068:61:2", + "nodeType": "YulFunctionCall", + "src": "9068:61:2" + }, + "variableNames": [ + { + "name": "value0", + "nativeSrc": "9058:6:2", + "nodeType": "YulIdentifier", + "src": "9058:6:2" + } + ] + } + ] + } + ] + }, + "name": "abi_decode_tuple_t_bool_fromMemory", + "nativeSrc": "8801:345:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "8845:9:2", + "nodeType": "YulTypedName", + "src": "8845:9:2", + "type": "" + }, + { + "name": "dataEnd", + "nativeSrc": "8856:7:2", + "nodeType": "YulTypedName", + "src": "8856:7:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "value0", + "nativeSrc": "8868:6:2", + "nodeType": "YulTypedName", + "src": "8868:6:2", + "type": "" + } + ], + "src": "8801:345:2" + }, + { + "body": { + "nativeSrc": "9248:73:2", + "nodeType": "YulBlock", + "src": "9248:73:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "9265:3:2", + "nodeType": "YulIdentifier", + "src": "9265:3:2" + }, + { + "name": "length", + "nativeSrc": "9270:6:2", + "nodeType": "YulIdentifier", + "src": "9270:6:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9258:6:2", + "nodeType": "YulIdentifier", + "src": "9258:6:2" + }, + "nativeSrc": "9258:19:2", + "nodeType": "YulFunctionCall", + "src": "9258:19:2" + }, + "nativeSrc": "9258:19:2", + "nodeType": "YulExpressionStatement", + "src": "9258:19:2" + }, + { + "nativeSrc": "9286:29:2", + "nodeType": "YulAssignment", + "src": "9286:29:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "9305:3:2", + "nodeType": "YulIdentifier", + "src": "9305:3:2" + }, + { + "kind": "number", + "nativeSrc": "9310:4:2", + "nodeType": "YulLiteral", + "src": "9310:4:2", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9301:3:2", + "nodeType": "YulIdentifier", + "src": "9301:3:2" + }, + "nativeSrc": "9301:14:2", + "nodeType": "YulFunctionCall", + "src": "9301:14:2" + }, + "variableNames": [ + { + "name": "updated_pos", + "nativeSrc": "9286:11:2", + "nodeType": "YulIdentifier", + "src": "9286:11:2" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "9152:169:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "9220:3:2", + "nodeType": "YulTypedName", + "src": "9220:3:2", + "type": "" + }, + { + "name": "length", + "nativeSrc": "9225:6:2", + "nodeType": "YulTypedName", + "src": "9225:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nativeSrc": "9236:11:2", + "nodeType": "YulTypedName", + "src": "9236:11:2", + "type": "" + } + ], + "src": "9152:169:2" + }, + { + "body": { + "nativeSrc": "9433:72:2", + "nodeType": "YulBlock", + "src": "9433:72:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "9455:6:2", + "nodeType": "YulIdentifier", + "src": "9455:6:2" + }, + { + "kind": "number", + "nativeSrc": "9463:1:2", + "nodeType": "YulLiteral", + "src": "9463:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9451:3:2", + "nodeType": "YulIdentifier", + "src": "9451:3:2" + }, + "nativeSrc": "9451:14:2", + "nodeType": "YulFunctionCall", + "src": "9451:14:2" + }, + { + "hexValue": "43616c6c6572206973206e6f742061206c6f636b206d616e61676572", + "kind": "string", + "nativeSrc": "9467:30:2", + "nodeType": "YulLiteral", + "src": "9467:30:2", + "type": "", + "value": "Caller is not a lock manager" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "9444:6:2", + "nodeType": "YulIdentifier", + "src": "9444:6:2" + }, + "nativeSrc": "9444:54:2", + "nodeType": "YulFunctionCall", + "src": "9444:54:2" + }, + "nativeSrc": "9444:54:2", + "nodeType": "YulExpressionStatement", + "src": "9444:54:2" + } + ] + }, + "name": "store_literal_in_memory_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d", + "nativeSrc": "9327:178:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nativeSrc": "9425:6:2", + "nodeType": "YulTypedName", + "src": "9425:6:2", + "type": "" + } + ], + "src": "9327:178:2" + }, + { + "body": { + "nativeSrc": "9657:220:2", + "nodeType": "YulBlock", + "src": "9657:220:2", + "statements": [ + { + "nativeSrc": "9667:74:2", + "nodeType": "YulAssignment", + "src": "9667:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "9733:3:2", + "nodeType": "YulIdentifier", + "src": "9733:3:2" + }, + { + "kind": "number", + "nativeSrc": "9738:2:2", + "nodeType": "YulLiteral", + "src": "9738:2:2", + "type": "", + "value": "28" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "9674:58:2", + "nodeType": "YulIdentifier", + "src": "9674:58:2" + }, + "nativeSrc": "9674:67:2", + "nodeType": "YulFunctionCall", + "src": "9674:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "9667:3:2", + "nodeType": "YulIdentifier", + "src": "9667:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "9839:3:2", + "nodeType": "YulIdentifier", + "src": "9839:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d", + "nativeSrc": "9750:88:2", + "nodeType": "YulIdentifier", + "src": "9750:88:2" + }, + "nativeSrc": "9750:93:2", + "nodeType": "YulFunctionCall", + "src": "9750:93:2" + }, + "nativeSrc": "9750:93:2", + "nodeType": "YulExpressionStatement", + "src": "9750:93:2" + }, + { + "nativeSrc": "9852:19:2", + "nodeType": "YulAssignment", + "src": "9852:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "9863:3:2", + "nodeType": "YulIdentifier", + "src": "9863:3:2" + }, + { + "kind": "number", + "nativeSrc": "9868:2:2", + "nodeType": "YulLiteral", + "src": "9868:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "9859:3:2", + "nodeType": "YulIdentifier", + "src": "9859:3:2" + }, + "nativeSrc": "9859:12:2", + "nodeType": "YulFunctionCall", + "src": "9859:12:2" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "9852:3:2", + "nodeType": "YulIdentifier", + "src": "9852:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d_to_t_string_memory_ptr_fromStack", + "nativeSrc": "9511:366:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "9645:3:2", + "nodeType": "YulTypedName", + "src": "9645:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "9653:3:2", + "nodeType": "YulTypedName", + "src": "9653:3:2", + "type": "" + } + ], + "src": "9511:366:2" + }, + { + "body": { + "nativeSrc": "10054:248:2", + "nodeType": "YulBlock", + "src": "10054:248:2", + "statements": [ + { + "nativeSrc": "10064:26:2", + "nodeType": "YulAssignment", + "src": "10064:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10076:9:2", + "nodeType": "YulIdentifier", + "src": "10076:9:2" + }, + { + "kind": "number", + "nativeSrc": "10087:2:2", + "nodeType": "YulLiteral", + "src": "10087:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10072:3:2", + "nodeType": "YulIdentifier", + "src": "10072:3:2" + }, + "nativeSrc": "10072:18:2", + "nodeType": "YulFunctionCall", + "src": "10072:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10064:4:2", + "nodeType": "YulIdentifier", + "src": "10064:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "10111:9:2", + "nodeType": "YulIdentifier", + "src": "10111:9:2" + }, + { + "kind": "number", + "nativeSrc": "10122:1:2", + "nodeType": "YulLiteral", + "src": "10122:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10107:3:2", + "nodeType": "YulIdentifier", + "src": "10107:3:2" + }, + "nativeSrc": "10107:17:2", + "nodeType": "YulFunctionCall", + "src": "10107:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "10130:4:2", + "nodeType": "YulIdentifier", + "src": "10130:4:2" + }, + { + "name": "headStart", + "nativeSrc": "10136:9:2", + "nodeType": "YulIdentifier", + "src": "10136:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "10126:3:2", + "nodeType": "YulIdentifier", + "src": "10126:3:2" + }, + "nativeSrc": "10126:20:2", + "nodeType": "YulFunctionCall", + "src": "10126:20:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10100:6:2", + "nodeType": "YulIdentifier", + "src": "10100:6:2" + }, + "nativeSrc": "10100:47:2", + "nodeType": "YulFunctionCall", + "src": "10100:47:2" + }, + "nativeSrc": "10100:47:2", + "nodeType": "YulExpressionStatement", + "src": "10100:47:2" + }, + { + "nativeSrc": "10156:139:2", + "nodeType": "YulAssignment", + "src": "10156:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nativeSrc": "10290:4:2", + "nodeType": "YulIdentifier", + "src": "10290:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d_to_t_string_memory_ptr_fromStack", + "nativeSrc": "10164:124:2", + "nodeType": "YulIdentifier", + "src": "10164:124:2" + }, + "nativeSrc": "10164:131:2", + "nodeType": "YulFunctionCall", + "src": "10164:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "10156:4:2", + "nodeType": "YulIdentifier", + "src": "10156:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "9883:419:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "10034:9:2", + "nodeType": "YulTypedName", + "src": "10034:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "10049:4:2", + "nodeType": "YulTypedName", + "src": "10049:4:2", + "type": "" + } + ], + "src": "9883:419:2" + }, + { + "body": { + "nativeSrc": "10336:152:2", + "nodeType": "YulBlock", + "src": "10336:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10353:1:2", + "nodeType": "YulLiteral", + "src": "10353:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10356:77:2", + "nodeType": "YulLiteral", + "src": "10356:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10346:6:2", + "nodeType": "YulIdentifier", + "src": "10346:6:2" + }, + "nativeSrc": "10346:88:2", + "nodeType": "YulFunctionCall", + "src": "10346:88:2" + }, + "nativeSrc": "10346:88:2", + "nodeType": "YulExpressionStatement", + "src": "10346:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10450:1:2", + "nodeType": "YulLiteral", + "src": "10450:1:2", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "10453:4:2", + "nodeType": "YulLiteral", + "src": "10453:4:2", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10443:6:2", + "nodeType": "YulIdentifier", + "src": "10443:6:2" + }, + "nativeSrc": "10443:15:2", + "nodeType": "YulFunctionCall", + "src": "10443:15:2" + }, + "nativeSrc": "10443:15:2", + "nodeType": "YulExpressionStatement", + "src": "10443:15:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "10474:1:2", + "nodeType": "YulLiteral", + "src": "10474:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "10477:4:2", + "nodeType": "YulLiteral", + "src": "10477:4:2", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "10467:6:2", + "nodeType": "YulIdentifier", + "src": "10467:6:2" + }, + "nativeSrc": "10467:15:2", + "nodeType": "YulFunctionCall", + "src": "10467:15:2" + }, + "nativeSrc": "10467:15:2", + "nodeType": "YulExpressionStatement", + "src": "10467:15:2" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "10308:180:2", + "nodeType": "YulFunctionDefinition", + "src": "10308:180:2" + }, + { + "body": { + "nativeSrc": "10600:63:2", + "nodeType": "YulBlock", + "src": "10600:63:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "10622:6:2", + "nodeType": "YulIdentifier", + "src": "10622:6:2" + }, + { + "kind": "number", + "nativeSrc": "10630:1:2", + "nodeType": "YulLiteral", + "src": "10630:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "10618:3:2", + "nodeType": "YulIdentifier", + "src": "10618:3:2" + }, + "nativeSrc": "10618:14:2", + "nodeType": "YulFunctionCall", + "src": "10618:14:2" + }, + { + "hexValue": "4e6f20726566756e6420617661696c61626c65", + "kind": "string", + "nativeSrc": "10634:21:2", + "nodeType": "YulLiteral", + "src": "10634:21:2", + "type": "", + "value": "No refund available" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "10611:6:2", + "nodeType": "YulIdentifier", + "src": "10611:6:2" + }, + "nativeSrc": "10611:45:2", + "nodeType": "YulFunctionCall", + "src": "10611:45:2" + }, + "nativeSrc": "10611:45:2", + "nodeType": "YulExpressionStatement", + "src": "10611:45:2" + } + ] + }, + "name": "store_literal_in_memory_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71", + "nativeSrc": "10494:169:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nativeSrc": "10592:6:2", + "nodeType": "YulTypedName", + "src": "10592:6:2", + "type": "" + } + ], + "src": "10494:169:2" + }, + { + "body": { + "nativeSrc": "10815:220:2", + "nodeType": "YulBlock", + "src": "10815:220:2", + "statements": [ + { + "nativeSrc": "10825:74:2", + "nodeType": "YulAssignment", + "src": "10825:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "10891:3:2", + "nodeType": "YulIdentifier", + "src": "10891:3:2" + }, + { + "kind": "number", + "nativeSrc": "10896:2:2", + "nodeType": "YulLiteral", + "src": "10896:2:2", + "type": "", + "value": "19" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "10832:58:2", + "nodeType": "YulIdentifier", + "src": "10832:58:2" + }, + "nativeSrc": "10832:67:2", + "nodeType": "YulFunctionCall", + "src": "10832:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "10825:3:2", + "nodeType": "YulIdentifier", + "src": "10825:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "10997:3:2", + "nodeType": "YulIdentifier", + "src": "10997:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71", + "nativeSrc": "10908:88:2", + "nodeType": "YulIdentifier", + "src": "10908:88:2" + }, + "nativeSrc": "10908:93:2", + "nodeType": "YulFunctionCall", + "src": "10908:93:2" + }, + "nativeSrc": "10908:93:2", + "nodeType": "YulExpressionStatement", + "src": "10908:93:2" + }, + { + "nativeSrc": "11010:19:2", + "nodeType": "YulAssignment", + "src": "11010:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "11021:3:2", + "nodeType": "YulIdentifier", + "src": "11021:3:2" + }, + { + "kind": "number", + "nativeSrc": "11026:2:2", + "nodeType": "YulLiteral", + "src": "11026:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11017:3:2", + "nodeType": "YulIdentifier", + "src": "11017:3:2" + }, + "nativeSrc": "11017:12:2", + "nodeType": "YulFunctionCall", + "src": "11017:12:2" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "11010:3:2", + "nodeType": "YulIdentifier", + "src": "11010:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71_to_t_string_memory_ptr_fromStack", + "nativeSrc": "10669:366:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "10803:3:2", + "nodeType": "YulTypedName", + "src": "10803:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "10811:3:2", + "nodeType": "YulTypedName", + "src": "10811:3:2", + "type": "" + } + ], + "src": "10669:366:2" + }, + { + "body": { + "nativeSrc": "11212:248:2", + "nodeType": "YulBlock", + "src": "11212:248:2", + "statements": [ + { + "nativeSrc": "11222:26:2", + "nodeType": "YulAssignment", + "src": "11222:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11234:9:2", + "nodeType": "YulIdentifier", + "src": "11234:9:2" + }, + { + "kind": "number", + "nativeSrc": "11245:2:2", + "nodeType": "YulLiteral", + "src": "11245:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11230:3:2", + "nodeType": "YulIdentifier", + "src": "11230:3:2" + }, + "nativeSrc": "11230:18:2", + "nodeType": "YulFunctionCall", + "src": "11230:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11222:4:2", + "nodeType": "YulIdentifier", + "src": "11222:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "11269:9:2", + "nodeType": "YulIdentifier", + "src": "11269:9:2" + }, + { + "kind": "number", + "nativeSrc": "11280:1:2", + "nodeType": "YulLiteral", + "src": "11280:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11265:3:2", + "nodeType": "YulIdentifier", + "src": "11265:3:2" + }, + "nativeSrc": "11265:17:2", + "nodeType": "YulFunctionCall", + "src": "11265:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "11288:4:2", + "nodeType": "YulIdentifier", + "src": "11288:4:2" + }, + { + "name": "headStart", + "nativeSrc": "11294:9:2", + "nodeType": "YulIdentifier", + "src": "11294:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "11284:3:2", + "nodeType": "YulIdentifier", + "src": "11284:3:2" + }, + "nativeSrc": "11284:20:2", + "nodeType": "YulFunctionCall", + "src": "11284:20:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11258:6:2", + "nodeType": "YulIdentifier", + "src": "11258:6:2" + }, + "nativeSrc": "11258:47:2", + "nodeType": "YulFunctionCall", + "src": "11258:47:2" + }, + "nativeSrc": "11258:47:2", + "nodeType": "YulExpressionStatement", + "src": "11258:47:2" + }, + { + "nativeSrc": "11314:139:2", + "nodeType": "YulAssignment", + "src": "11314:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nativeSrc": "11448:4:2", + "nodeType": "YulIdentifier", + "src": "11448:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71_to_t_string_memory_ptr_fromStack", + "nativeSrc": "11322:124:2", + "nodeType": "YulIdentifier", + "src": "11322:124:2" + }, + "nativeSrc": "11322:131:2", + "nodeType": "YulFunctionCall", + "src": "11322:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "11314:4:2", + "nodeType": "YulIdentifier", + "src": "11314:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "11041:419:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "11192:9:2", + "nodeType": "YulTypedName", + "src": "11192:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "11207:4:2", + "nodeType": "YulTypedName", + "src": "11207:4:2", + "type": "" + } + ], + "src": "11041:419:2" + }, + { + "body": { + "nativeSrc": "11572:68:2", + "nodeType": "YulBlock", + "src": "11572:68:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "11594:6:2", + "nodeType": "YulIdentifier", + "src": "11594:6:2" + }, + { + "kind": "number", + "nativeSrc": "11602:1:2", + "nodeType": "YulLiteral", + "src": "11602:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11590:3:2", + "nodeType": "YulIdentifier", + "src": "11590:3:2" + }, + "nativeSrc": "11590:14:2", + "nodeType": "YulFunctionCall", + "src": "11590:14:2" + }, + { + "hexValue": "526566756e64206e6f7420617661696c61626c6520796574", + "kind": "string", + "nativeSrc": "11606:26:2", + "nodeType": "YulLiteral", + "src": "11606:26:2", + "type": "", + "value": "Refund not available yet" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "11583:6:2", + "nodeType": "YulIdentifier", + "src": "11583:6:2" + }, + "nativeSrc": "11583:50:2", + "nodeType": "YulFunctionCall", + "src": "11583:50:2" + }, + "nativeSrc": "11583:50:2", + "nodeType": "YulExpressionStatement", + "src": "11583:50:2" + } + ] + }, + "name": "store_literal_in_memory_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd", + "nativeSrc": "11466:174:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nativeSrc": "11564:6:2", + "nodeType": "YulTypedName", + "src": "11564:6:2", + "type": "" + } + ], + "src": "11466:174:2" + }, + { + "body": { + "nativeSrc": "11792:220:2", + "nodeType": "YulBlock", + "src": "11792:220:2", + "statements": [ + { + "nativeSrc": "11802:74:2", + "nodeType": "YulAssignment", + "src": "11802:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "11868:3:2", + "nodeType": "YulIdentifier", + "src": "11868:3:2" + }, + { + "kind": "number", + "nativeSrc": "11873:2:2", + "nodeType": "YulLiteral", + "src": "11873:2:2", + "type": "", + "value": "24" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "11809:58:2", + "nodeType": "YulIdentifier", + "src": "11809:58:2" + }, + "nativeSrc": "11809:67:2", + "nodeType": "YulFunctionCall", + "src": "11809:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "11802:3:2", + "nodeType": "YulIdentifier", + "src": "11802:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "11974:3:2", + "nodeType": "YulIdentifier", + "src": "11974:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd", + "nativeSrc": "11885:88:2", + "nodeType": "YulIdentifier", + "src": "11885:88:2" + }, + "nativeSrc": "11885:93:2", + "nodeType": "YulFunctionCall", + "src": "11885:93:2" + }, + "nativeSrc": "11885:93:2", + "nodeType": "YulExpressionStatement", + "src": "11885:93:2" + }, + { + "nativeSrc": "11987:19:2", + "nodeType": "YulAssignment", + "src": "11987:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "11998:3:2", + "nodeType": "YulIdentifier", + "src": "11998:3:2" + }, + { + "kind": "number", + "nativeSrc": "12003:2:2", + "nodeType": "YulLiteral", + "src": "12003:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "11994:3:2", + "nodeType": "YulIdentifier", + "src": "11994:3:2" + }, + "nativeSrc": "11994:12:2", + "nodeType": "YulFunctionCall", + "src": "11994:12:2" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "11987:3:2", + "nodeType": "YulIdentifier", + "src": "11987:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd_to_t_string_memory_ptr_fromStack", + "nativeSrc": "11646:366:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "11780:3:2", + "nodeType": "YulTypedName", + "src": "11780:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "11788:3:2", + "nodeType": "YulTypedName", + "src": "11788:3:2", + "type": "" + } + ], + "src": "11646:366:2" + }, + { + "body": { + "nativeSrc": "12189:248:2", + "nodeType": "YulBlock", + "src": "12189:248:2", + "statements": [ + { + "nativeSrc": "12199:26:2", + "nodeType": "YulAssignment", + "src": "12199:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12211:9:2", + "nodeType": "YulIdentifier", + "src": "12211:9:2" + }, + { + "kind": "number", + "nativeSrc": "12222:2:2", + "nodeType": "YulLiteral", + "src": "12222:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12207:3:2", + "nodeType": "YulIdentifier", + "src": "12207:3:2" + }, + "nativeSrc": "12207:18:2", + "nodeType": "YulFunctionCall", + "src": "12207:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12199:4:2", + "nodeType": "YulIdentifier", + "src": "12199:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12246:9:2", + "nodeType": "YulIdentifier", + "src": "12246:9:2" + }, + { + "kind": "number", + "nativeSrc": "12257:1:2", + "nodeType": "YulLiteral", + "src": "12257:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12242:3:2", + "nodeType": "YulIdentifier", + "src": "12242:3:2" + }, + "nativeSrc": "12242:17:2", + "nodeType": "YulFunctionCall", + "src": "12242:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "12265:4:2", + "nodeType": "YulIdentifier", + "src": "12265:4:2" + }, + { + "name": "headStart", + "nativeSrc": "12271:9:2", + "nodeType": "YulIdentifier", + "src": "12271:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "12261:3:2", + "nodeType": "YulIdentifier", + "src": "12261:3:2" + }, + "nativeSrc": "12261:20:2", + "nodeType": "YulFunctionCall", + "src": "12261:20:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12235:6:2", + "nodeType": "YulIdentifier", + "src": "12235:6:2" + }, + "nativeSrc": "12235:47:2", + "nodeType": "YulFunctionCall", + "src": "12235:47:2" + }, + "nativeSrc": "12235:47:2", + "nodeType": "YulExpressionStatement", + "src": "12235:47:2" + }, + { + "nativeSrc": "12291:139:2", + "nodeType": "YulAssignment", + "src": "12291:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nativeSrc": "12425:4:2", + "nodeType": "YulIdentifier", + "src": "12425:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd_to_t_string_memory_ptr_fromStack", + "nativeSrc": "12299:124:2", + "nodeType": "YulIdentifier", + "src": "12299:124:2" + }, + "nativeSrc": "12299:131:2", + "nodeType": "YulFunctionCall", + "src": "12299:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12291:4:2", + "nodeType": "YulIdentifier", + "src": "12291:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "12018:419:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12169:9:2", + "nodeType": "YulTypedName", + "src": "12169:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12184:4:2", + "nodeType": "YulTypedName", + "src": "12184:4:2", + "type": "" + } + ], + "src": "12018:419:2" + }, + { + "body": { + "nativeSrc": "12569:206:2", + "nodeType": "YulBlock", + "src": "12569:206:2", + "statements": [ + { + "nativeSrc": "12579:26:2", + "nodeType": "YulAssignment", + "src": "12579:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12591:9:2", + "nodeType": "YulIdentifier", + "src": "12591:9:2" + }, + { + "kind": "number", + "nativeSrc": "12602:2:2", + "nodeType": "YulLiteral", + "src": "12602:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12587:3:2", + "nodeType": "YulIdentifier", + "src": "12587:3:2" + }, + "nativeSrc": "12587:18:2", + "nodeType": "YulFunctionCall", + "src": "12587:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "12579:4:2", + "nodeType": "YulIdentifier", + "src": "12579:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "12659:6:2", + "nodeType": "YulIdentifier", + "src": "12659:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12672:9:2", + "nodeType": "YulIdentifier", + "src": "12672:9:2" + }, + { + "kind": "number", + "nativeSrc": "12683:1:2", + "nodeType": "YulLiteral", + "src": "12683:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12668:3:2", + "nodeType": "YulIdentifier", + "src": "12668:3:2" + }, + "nativeSrc": "12668:17:2", + "nodeType": "YulFunctionCall", + "src": "12668:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "12615:43:2", + "nodeType": "YulIdentifier", + "src": "12615:43:2" + }, + "nativeSrc": "12615:71:2", + "nodeType": "YulFunctionCall", + "src": "12615:71:2" + }, + "nativeSrc": "12615:71:2", + "nodeType": "YulExpressionStatement", + "src": "12615:71:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "12740:6:2", + "nodeType": "YulIdentifier", + "src": "12740:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "12753:9:2", + "nodeType": "YulIdentifier", + "src": "12753:9:2" + }, + { + "kind": "number", + "nativeSrc": "12764:2:2", + "nodeType": "YulLiteral", + "src": "12764:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12749:3:2", + "nodeType": "YulIdentifier", + "src": "12749:3:2" + }, + "nativeSrc": "12749:18:2", + "nodeType": "YulFunctionCall", + "src": "12749:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "12696:43:2", + "nodeType": "YulIdentifier", + "src": "12696:43:2" + }, + "nativeSrc": "12696:72:2", + "nodeType": "YulFunctionCall", + "src": "12696:72:2" + }, + "nativeSrc": "12696:72:2", + "nodeType": "YulExpressionStatement", + "src": "12696:72:2" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed", + "nativeSrc": "12443:332:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "12533:9:2", + "nodeType": "YulTypedName", + "src": "12533:9:2", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "12545:6:2", + "nodeType": "YulTypedName", + "src": "12545:6:2", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "12553:6:2", + "nodeType": "YulTypedName", + "src": "12553:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "12564:4:2", + "nodeType": "YulTypedName", + "src": "12564:4:2", + "type": "" + } + ], + "src": "12443:332:2" + }, + { + "body": { + "nativeSrc": "12887:63:2", + "nodeType": "YulBlock", + "src": "12887:63:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "12909:6:2", + "nodeType": "YulIdentifier", + "src": "12909:6:2" + }, + { + "kind": "number", + "nativeSrc": "12917:1:2", + "nodeType": "YulLiteral", + "src": "12917:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "12905:3:2", + "nodeType": "YulIdentifier", + "src": "12905:3:2" + }, + "nativeSrc": "12905:14:2", + "nodeType": "YulFunctionCall", + "src": "12905:14:2" + }, + { + "hexValue": "416c726561647920696e697469616c697a6564", + "kind": "string", + "nativeSrc": "12921:21:2", + "nodeType": "YulLiteral", + "src": "12921:21:2", + "type": "", + "value": "Already initialized" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "12898:6:2", + "nodeType": "YulIdentifier", + "src": "12898:6:2" + }, + "nativeSrc": "12898:45:2", + "nodeType": "YulFunctionCall", + "src": "12898:45:2" + }, + "nativeSrc": "12898:45:2", + "nodeType": "YulExpressionStatement", + "src": "12898:45:2" + } + ] + }, + "name": "store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0", + "nativeSrc": "12781:169:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nativeSrc": "12879:6:2", + "nodeType": "YulTypedName", + "src": "12879:6:2", + "type": "" + } + ], + "src": "12781:169:2" + }, + { + "body": { + "nativeSrc": "13102:220:2", + "nodeType": "YulBlock", + "src": "13102:220:2", + "statements": [ + { + "nativeSrc": "13112:74:2", + "nodeType": "YulAssignment", + "src": "13112:74:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "13178:3:2", + "nodeType": "YulIdentifier", + "src": "13178:3:2" + }, + { + "kind": "number", + "nativeSrc": "13183:2:2", + "nodeType": "YulLiteral", + "src": "13183:2:2", + "type": "", + "value": "19" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack", + "nativeSrc": "13119:58:2", + "nodeType": "YulIdentifier", + "src": "13119:58:2" + }, + "nativeSrc": "13119:67:2", + "nodeType": "YulFunctionCall", + "src": "13119:67:2" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "13112:3:2", + "nodeType": "YulIdentifier", + "src": "13112:3:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "13284:3:2", + "nodeType": "YulIdentifier", + "src": "13284:3:2" + } + ], + "functionName": { + "name": "store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0", + "nativeSrc": "13195:88:2", + "nodeType": "YulIdentifier", + "src": "13195:88:2" + }, + "nativeSrc": "13195:93:2", + "nodeType": "YulFunctionCall", + "src": "13195:93:2" + }, + "nativeSrc": "13195:93:2", + "nodeType": "YulExpressionStatement", + "src": "13195:93:2" + }, + { + "nativeSrc": "13297:19:2", + "nodeType": "YulAssignment", + "src": "13297:19:2", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "13308:3:2", + "nodeType": "YulIdentifier", + "src": "13308:3:2" + }, + { + "kind": "number", + "nativeSrc": "13313:2:2", + "nodeType": "YulLiteral", + "src": "13313:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13304:3:2", + "nodeType": "YulIdentifier", + "src": "13304:3:2" + }, + "nativeSrc": "13304:12:2", + "nodeType": "YulFunctionCall", + "src": "13304:12:2" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "13297:3:2", + "nodeType": "YulIdentifier", + "src": "13297:3:2" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack", + "nativeSrc": "12956:366:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "13090:3:2", + "nodeType": "YulTypedName", + "src": "13090:3:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "13098:3:2", + "nodeType": "YulTypedName", + "src": "13098:3:2", + "type": "" + } + ], + "src": "12956:366:2" + }, + { + "body": { + "nativeSrc": "13499:248:2", + "nodeType": "YulBlock", + "src": "13499:248:2", + "statements": [ + { + "nativeSrc": "13509:26:2", + "nodeType": "YulAssignment", + "src": "13509:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13521:9:2", + "nodeType": "YulIdentifier", + "src": "13521:9:2" + }, + { + "kind": "number", + "nativeSrc": "13532:2:2", + "nodeType": "YulLiteral", + "src": "13532:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13517:3:2", + "nodeType": "YulIdentifier", + "src": "13517:3:2" + }, + "nativeSrc": "13517:18:2", + "nodeType": "YulFunctionCall", + "src": "13517:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "13509:4:2", + "nodeType": "YulIdentifier", + "src": "13509:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13556:9:2", + "nodeType": "YulIdentifier", + "src": "13556:9:2" + }, + { + "kind": "number", + "nativeSrc": "13567:1:2", + "nodeType": "YulLiteral", + "src": "13567:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13552:3:2", + "nodeType": "YulIdentifier", + "src": "13552:3:2" + }, + "nativeSrc": "13552:17:2", + "nodeType": "YulFunctionCall", + "src": "13552:17:2" + }, + { + "arguments": [ + { + "name": "tail", + "nativeSrc": "13575:4:2", + "nodeType": "YulIdentifier", + "src": "13575:4:2" + }, + { + "name": "headStart", + "nativeSrc": "13581:9:2", + "nodeType": "YulIdentifier", + "src": "13581:9:2" + } + ], + "functionName": { + "name": "sub", + "nativeSrc": "13571:3:2", + "nodeType": "YulIdentifier", + "src": "13571:3:2" + }, + "nativeSrc": "13571:20:2", + "nodeType": "YulFunctionCall", + "src": "13571:20:2" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "13545:6:2", + "nodeType": "YulIdentifier", + "src": "13545:6:2" + }, + "nativeSrc": "13545:47:2", + "nodeType": "YulFunctionCall", + "src": "13545:47:2" + }, + "nativeSrc": "13545:47:2", + "nodeType": "YulExpressionStatement", + "src": "13545:47:2" + }, + { + "nativeSrc": "13601:139:2", + "nodeType": "YulAssignment", + "src": "13601:139:2", + "value": { + "arguments": [ + { + "name": "tail", + "nativeSrc": "13735:4:2", + "nodeType": "YulIdentifier", + "src": "13735:4:2" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack", + "nativeSrc": "13609:124:2", + "nodeType": "YulIdentifier", + "src": "13609:124:2" + }, + "nativeSrc": "13609:131:2", + "nodeType": "YulFunctionCall", + "src": "13609:131:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "13601:4:2", + "nodeType": "YulIdentifier", + "src": "13601:4:2" + } + ] + } + ] + }, + "name": "abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed", + "nativeSrc": "13328:419:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13479:9:2", + "nodeType": "YulTypedName", + "src": "13479:9:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "13494:4:2", + "nodeType": "YulTypedName", + "src": "13494:4:2", + "type": "" + } + ], + "src": "13328:419:2" + }, + { + "body": { + "nativeSrc": "13907:288:2", + "nodeType": "YulBlock", + "src": "13907:288:2", + "statements": [ + { + "nativeSrc": "13917:26:2", + "nodeType": "YulAssignment", + "src": "13917:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "13929:9:2", + "nodeType": "YulIdentifier", + "src": "13929:9:2" + }, + { + "kind": "number", + "nativeSrc": "13940:2:2", + "nodeType": "YulLiteral", + "src": "13940:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "13925:3:2", + "nodeType": "YulIdentifier", + "src": "13925:3:2" + }, + "nativeSrc": "13925:18:2", + "nodeType": "YulFunctionCall", + "src": "13925:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "13917:4:2", + "nodeType": "YulIdentifier", + "src": "13917:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "13997:6:2", + "nodeType": "YulIdentifier", + "src": "13997:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14010:9:2", + "nodeType": "YulIdentifier", + "src": "14010:9:2" + }, + { + "kind": "number", + "nativeSrc": "14021:1:2", + "nodeType": "YulLiteral", + "src": "14021:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14006:3:2", + "nodeType": "YulIdentifier", + "src": "14006:3:2" + }, + "nativeSrc": "14006:17:2", + "nodeType": "YulFunctionCall", + "src": "14006:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "13953:43:2", + "nodeType": "YulIdentifier", + "src": "13953:43:2" + }, + "nativeSrc": "13953:71:2", + "nodeType": "YulFunctionCall", + "src": "13953:71:2" + }, + "nativeSrc": "13953:71:2", + "nodeType": "YulExpressionStatement", + "src": "13953:71:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "14078:6:2", + "nodeType": "YulIdentifier", + "src": "14078:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14091:9:2", + "nodeType": "YulIdentifier", + "src": "14091:9:2" + }, + { + "kind": "number", + "nativeSrc": "14102:2:2", + "nodeType": "YulLiteral", + "src": "14102:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14087:3:2", + "nodeType": "YulIdentifier", + "src": "14087:3:2" + }, + "nativeSrc": "14087:18:2", + "nodeType": "YulFunctionCall", + "src": "14087:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "14034:43:2", + "nodeType": "YulIdentifier", + "src": "14034:43:2" + }, + "nativeSrc": "14034:72:2", + "nodeType": "YulFunctionCall", + "src": "14034:72:2" + }, + "nativeSrc": "14034:72:2", + "nodeType": "YulExpressionStatement", + "src": "14034:72:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nativeSrc": "14160:6:2", + "nodeType": "YulIdentifier", + "src": "14160:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "14173:9:2", + "nodeType": "YulIdentifier", + "src": "14173:9:2" + }, + { + "kind": "number", + "nativeSrc": "14184:2:2", + "nodeType": "YulLiteral", + "src": "14184:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "14169:3:2", + "nodeType": "YulIdentifier", + "src": "14169:3:2" + }, + "nativeSrc": "14169:18:2", + "nodeType": "YulFunctionCall", + "src": "14169:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "14116:43:2", + "nodeType": "YulIdentifier", + "src": "14116:43:2" + }, + "nativeSrc": "14116:72:2", + "nodeType": "YulFunctionCall", + "src": "14116:72:2" + }, + "nativeSrc": "14116:72:2", + "nodeType": "YulExpressionStatement", + "src": "14116:72:2" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_address__to_t_address_t_uint256_t_address__fromStack_reversed", + "nativeSrc": "13753:442:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "13863:9:2", + "nodeType": "YulTypedName", + "src": "13863:9:2", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "13875:6:2", + "nodeType": "YulTypedName", + "src": "13875:6:2", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "13883:6:2", + "nodeType": "YulTypedName", + "src": "13883:6:2", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "13891:6:2", + "nodeType": "YulTypedName", + "src": "13891:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "13902:4:2", + "nodeType": "YulTypedName", + "src": "13902:4:2", + "type": "" + } + ], + "src": "13753:442:2" + }, + { + "body": { + "nativeSrc": "14229:152:2", + "nodeType": "YulBlock", + "src": "14229:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14246:1:2", + "nodeType": "YulLiteral", + "src": "14246:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14249:77:2", + "nodeType": "YulLiteral", + "src": "14249:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14239:6:2", + "nodeType": "YulIdentifier", + "src": "14239:6:2" + }, + "nativeSrc": "14239:88:2", + "nodeType": "YulFunctionCall", + "src": "14239:88:2" + }, + "nativeSrc": "14239:88:2", + "nodeType": "YulExpressionStatement", + "src": "14239:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14343:1:2", + "nodeType": "YulLiteral", + "src": "14343:1:2", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "14346:4:2", + "nodeType": "YulLiteral", + "src": "14346:4:2", + "type": "", + "value": "0x11" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14336:6:2", + "nodeType": "YulIdentifier", + "src": "14336:6:2" + }, + "nativeSrc": "14336:15:2", + "nodeType": "YulFunctionCall", + "src": "14336:15:2" + }, + "nativeSrc": "14336:15:2", + "nodeType": "YulExpressionStatement", + "src": "14336:15:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14367:1:2", + "nodeType": "YulLiteral", + "src": "14367:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14370:4:2", + "nodeType": "YulLiteral", + "src": "14370:4:2", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14360:6:2", + "nodeType": "YulIdentifier", + "src": "14360:6:2" + }, + "nativeSrc": "14360:15:2", + "nodeType": "YulFunctionCall", + "src": "14360:15:2" + }, + "nativeSrc": "14360:15:2", + "nodeType": "YulExpressionStatement", + "src": "14360:15:2" + } + ] + }, + "name": "panic_error_0x11", + "nativeSrc": "14201:180:2", + "nodeType": "YulFunctionDefinition", + "src": "14201:180:2" + }, + { + "body": { + "nativeSrc": "14435:362:2", + "nodeType": "YulBlock", + "src": "14435:362:2", + "statements": [ + { + "nativeSrc": "14445:25:2", + "nodeType": "YulAssignment", + "src": "14445:25:2", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "14468:1:2", + "nodeType": "YulIdentifier", + "src": "14468:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "14450:17:2", + "nodeType": "YulIdentifier", + "src": "14450:17:2" + }, + "nativeSrc": "14450:20:2", + "nodeType": "YulFunctionCall", + "src": "14450:20:2" + }, + "variableNames": [ + { + "name": "x", + "nativeSrc": "14445:1:2", + "nodeType": "YulIdentifier", + "src": "14445:1:2" + } + ] + }, + { + "nativeSrc": "14479:25:2", + "nodeType": "YulAssignment", + "src": "14479:25:2", + "value": { + "arguments": [ + { + "name": "y", + "nativeSrc": "14502:1:2", + "nodeType": "YulIdentifier", + "src": "14502:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "14484:17:2", + "nodeType": "YulIdentifier", + "src": "14484:17:2" + }, + "nativeSrc": "14484:20:2", + "nodeType": "YulFunctionCall", + "src": "14484:20:2" + }, + "variableNames": [ + { + "name": "y", + "nativeSrc": "14479:1:2", + "nodeType": "YulIdentifier", + "src": "14479:1:2" + } + ] + }, + { + "nativeSrc": "14513:28:2", + "nodeType": "YulVariableDeclaration", + "src": "14513:28:2", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "14536:1:2", + "nodeType": "YulIdentifier", + "src": "14536:1:2" + }, + { + "name": "y", + "nativeSrc": "14539:1:2", + "nodeType": "YulIdentifier", + "src": "14539:1:2" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "14532:3:2", + "nodeType": "YulIdentifier", + "src": "14532:3:2" + }, + "nativeSrc": "14532:9:2", + "nodeType": "YulFunctionCall", + "src": "14532:9:2" + }, + "variables": [ + { + "name": "product_raw", + "nativeSrc": "14517:11:2", + "nodeType": "YulTypedName", + "src": "14517:11:2", + "type": "" + } + ] + }, + { + "nativeSrc": "14550:41:2", + "nodeType": "YulAssignment", + "src": "14550:41:2", + "value": { + "arguments": [ + { + "name": "product_raw", + "nativeSrc": "14579:11:2", + "nodeType": "YulIdentifier", + "src": "14579:11:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "14561:17:2", + "nodeType": "YulIdentifier", + "src": "14561:17:2" + }, + "nativeSrc": "14561:30:2", + "nodeType": "YulFunctionCall", + "src": "14561:30:2" + }, + "variableNames": [ + { + "name": "product", + "nativeSrc": "14550:7:2", + "nodeType": "YulIdentifier", + "src": "14550:7:2" + } + ] + }, + { + "body": { + "nativeSrc": "14768:22:2", + "nodeType": "YulBlock", + "src": "14768:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "14770:16:2", + "nodeType": "YulIdentifier", + "src": "14770:16:2" + }, + "nativeSrc": "14770:18:2", + "nodeType": "YulFunctionCall", + "src": "14770:18:2" + }, + "nativeSrc": "14770:18:2", + "nodeType": "YulExpressionStatement", + "src": "14770:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "x", + "nativeSrc": "14701:1:2", + "nodeType": "YulIdentifier", + "src": "14701:1:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "14694:6:2", + "nodeType": "YulIdentifier", + "src": "14694:6:2" + }, + "nativeSrc": "14694:9:2", + "nodeType": "YulFunctionCall", + "src": "14694:9:2" + }, + { + "arguments": [ + { + "name": "y", + "nativeSrc": "14724:1:2", + "nodeType": "YulIdentifier", + "src": "14724:1:2" + }, + { + "arguments": [ + { + "name": "product", + "nativeSrc": "14731:7:2", + "nodeType": "YulIdentifier", + "src": "14731:7:2" + }, + { + "name": "x", + "nativeSrc": "14740:1:2", + "nodeType": "YulIdentifier", + "src": "14740:1:2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "14727:3:2", + "nodeType": "YulIdentifier", + "src": "14727:3:2" + }, + "nativeSrc": "14727:15:2", + "nodeType": "YulFunctionCall", + "src": "14727:15:2" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "14721:2:2", + "nodeType": "YulIdentifier", + "src": "14721:2:2" + }, + "nativeSrc": "14721:22:2", + "nodeType": "YulFunctionCall", + "src": "14721:22:2" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "14674:2:2", + "nodeType": "YulIdentifier", + "src": "14674:2:2" + }, + "nativeSrc": "14674:83:2", + "nodeType": "YulFunctionCall", + "src": "14674:83:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "14654:6:2", + "nodeType": "YulIdentifier", + "src": "14654:6:2" + }, + "nativeSrc": "14654:113:2", + "nodeType": "YulFunctionCall", + "src": "14654:113:2" + }, + "nativeSrc": "14651:139:2", + "nodeType": "YulIf", + "src": "14651:139:2" + } + ] + }, + "name": "checked_mul_t_uint256", + "nativeSrc": "14387:410:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "14418:1:2", + "nodeType": "YulTypedName", + "src": "14418:1:2", + "type": "" + }, + { + "name": "y", + "nativeSrc": "14421:1:2", + "nodeType": "YulTypedName", + "src": "14421:1:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "product", + "nativeSrc": "14427:7:2", + "nodeType": "YulTypedName", + "src": "14427:7:2", + "type": "" + } + ], + "src": "14387:410:2" + }, + { + "body": { + "nativeSrc": "14831:152:2", + "nodeType": "YulBlock", + "src": "14831:152:2", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14848:1:2", + "nodeType": "YulLiteral", + "src": "14848:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14851:77:2", + "nodeType": "YulLiteral", + "src": "14851:77:2", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14841:6:2", + "nodeType": "YulIdentifier", + "src": "14841:6:2" + }, + "nativeSrc": "14841:88:2", + "nodeType": "YulFunctionCall", + "src": "14841:88:2" + }, + "nativeSrc": "14841:88:2", + "nodeType": "YulExpressionStatement", + "src": "14841:88:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14945:1:2", + "nodeType": "YulLiteral", + "src": "14945:1:2", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "14948:4:2", + "nodeType": "YulLiteral", + "src": "14948:4:2", + "type": "", + "value": "0x12" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "14938:6:2", + "nodeType": "YulIdentifier", + "src": "14938:6:2" + }, + "nativeSrc": "14938:15:2", + "nodeType": "YulFunctionCall", + "src": "14938:15:2" + }, + "nativeSrc": "14938:15:2", + "nodeType": "YulExpressionStatement", + "src": "14938:15:2" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "14969:1:2", + "nodeType": "YulLiteral", + "src": "14969:1:2", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "14972:4:2", + "nodeType": "YulLiteral", + "src": "14972:4:2", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "14962:6:2", + "nodeType": "YulIdentifier", + "src": "14962:6:2" + }, + "nativeSrc": "14962:15:2", + "nodeType": "YulFunctionCall", + "src": "14962:15:2" + }, + "nativeSrc": "14962:15:2", + "nodeType": "YulExpressionStatement", + "src": "14962:15:2" + } + ] + }, + "name": "panic_error_0x12", + "nativeSrc": "14803:180:2", + "nodeType": "YulFunctionDefinition", + "src": "14803:180:2" + }, + { + "body": { + "nativeSrc": "15031:143:2", + "nodeType": "YulBlock", + "src": "15031:143:2", + "statements": [ + { + "nativeSrc": "15041:25:2", + "nodeType": "YulAssignment", + "src": "15041:25:2", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "15064:1:2", + "nodeType": "YulIdentifier", + "src": "15064:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "15046:17:2", + "nodeType": "YulIdentifier", + "src": "15046:17:2" + }, + "nativeSrc": "15046:20:2", + "nodeType": "YulFunctionCall", + "src": "15046:20:2" + }, + "variableNames": [ + { + "name": "x", + "nativeSrc": "15041:1:2", + "nodeType": "YulIdentifier", + "src": "15041:1:2" + } + ] + }, + { + "nativeSrc": "15075:25:2", + "nodeType": "YulAssignment", + "src": "15075:25:2", + "value": { + "arguments": [ + { + "name": "y", + "nativeSrc": "15098:1:2", + "nodeType": "YulIdentifier", + "src": "15098:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "15080:17:2", + "nodeType": "YulIdentifier", + "src": "15080:17:2" + }, + "nativeSrc": "15080:20:2", + "nodeType": "YulFunctionCall", + "src": "15080:20:2" + }, + "variableNames": [ + { + "name": "y", + "nativeSrc": "15075:1:2", + "nodeType": "YulIdentifier", + "src": "15075:1:2" + } + ] + }, + { + "body": { + "nativeSrc": "15122:22:2", + "nodeType": "YulBlock", + "src": "15122:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x12", + "nativeSrc": "15124:16:2", + "nodeType": "YulIdentifier", + "src": "15124:16:2" + }, + "nativeSrc": "15124:18:2", + "nodeType": "YulFunctionCall", + "src": "15124:18:2" + }, + "nativeSrc": "15124:18:2", + "nodeType": "YulExpressionStatement", + "src": "15124:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "y", + "nativeSrc": "15119:1:2", + "nodeType": "YulIdentifier", + "src": "15119:1:2" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "15112:6:2", + "nodeType": "YulIdentifier", + "src": "15112:6:2" + }, + "nativeSrc": "15112:9:2", + "nodeType": "YulFunctionCall", + "src": "15112:9:2" + }, + "nativeSrc": "15109:35:2", + "nodeType": "YulIf", + "src": "15109:35:2" + }, + { + "nativeSrc": "15154:14:2", + "nodeType": "YulAssignment", + "src": "15154:14:2", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "15163:1:2", + "nodeType": "YulIdentifier", + "src": "15163:1:2" + }, + { + "name": "y", + "nativeSrc": "15166:1:2", + "nodeType": "YulIdentifier", + "src": "15166:1:2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "15159:3:2", + "nodeType": "YulIdentifier", + "src": "15159:3:2" + }, + "nativeSrc": "15159:9:2", + "nodeType": "YulFunctionCall", + "src": "15159:9:2" + }, + "variableNames": [ + { + "name": "r", + "nativeSrc": "15154:1:2", + "nodeType": "YulIdentifier", + "src": "15154:1:2" + } + ] + } + ] + }, + "name": "checked_div_t_uint256", + "nativeSrc": "14989:185:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "15020:1:2", + "nodeType": "YulTypedName", + "src": "15020:1:2", + "type": "" + }, + { + "name": "y", + "nativeSrc": "15023:1:2", + "nodeType": "YulTypedName", + "src": "15023:1:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "r", + "nativeSrc": "15029:1:2", + "nodeType": "YulTypedName", + "src": "15029:1:2", + "type": "" + } + ], + "src": "14989:185:2" + }, + { + "body": { + "nativeSrc": "15224:147:2", + "nodeType": "YulBlock", + "src": "15224:147:2", + "statements": [ + { + "nativeSrc": "15234:25:2", + "nodeType": "YulAssignment", + "src": "15234:25:2", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "15257:1:2", + "nodeType": "YulIdentifier", + "src": "15257:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "15239:17:2", + "nodeType": "YulIdentifier", + "src": "15239:17:2" + }, + "nativeSrc": "15239:20:2", + "nodeType": "YulFunctionCall", + "src": "15239:20:2" + }, + "variableNames": [ + { + "name": "x", + "nativeSrc": "15234:1:2", + "nodeType": "YulIdentifier", + "src": "15234:1:2" + } + ] + }, + { + "nativeSrc": "15268:25:2", + "nodeType": "YulAssignment", + "src": "15268:25:2", + "value": { + "arguments": [ + { + "name": "y", + "nativeSrc": "15291:1:2", + "nodeType": "YulIdentifier", + "src": "15291:1:2" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "15273:17:2", + "nodeType": "YulIdentifier", + "src": "15273:17:2" + }, + "nativeSrc": "15273:20:2", + "nodeType": "YulFunctionCall", + "src": "15273:20:2" + }, + "variableNames": [ + { + "name": "y", + "nativeSrc": "15268:1:2", + "nodeType": "YulIdentifier", + "src": "15268:1:2" + } + ] + }, + { + "nativeSrc": "15302:16:2", + "nodeType": "YulAssignment", + "src": "15302:16:2", + "value": { + "arguments": [ + { + "name": "x", + "nativeSrc": "15313:1:2", + "nodeType": "YulIdentifier", + "src": "15313:1:2" + }, + { + "name": "y", + "nativeSrc": "15316:1:2", + "nodeType": "YulIdentifier", + "src": "15316:1:2" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15309:3:2", + "nodeType": "YulIdentifier", + "src": "15309:3:2" + }, + "nativeSrc": "15309:9:2", + "nodeType": "YulFunctionCall", + "src": "15309:9:2" + }, + "variableNames": [ + { + "name": "sum", + "nativeSrc": "15302:3:2", + "nodeType": "YulIdentifier", + "src": "15302:3:2" + } + ] + }, + { + "body": { + "nativeSrc": "15342:22:2", + "nodeType": "YulBlock", + "src": "15342:22:2", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x11", + "nativeSrc": "15344:16:2", + "nodeType": "YulIdentifier", + "src": "15344:16:2" + }, + "nativeSrc": "15344:18:2", + "nodeType": "YulFunctionCall", + "src": "15344:18:2" + }, + "nativeSrc": "15344:18:2", + "nodeType": "YulExpressionStatement", + "src": "15344:18:2" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "x", + "nativeSrc": "15334:1:2", + "nodeType": "YulIdentifier", + "src": "15334:1:2" + }, + { + "name": "sum", + "nativeSrc": "15337:3:2", + "nodeType": "YulIdentifier", + "src": "15337:3:2" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "15331:2:2", + "nodeType": "YulIdentifier", + "src": "15331:2:2" + }, + "nativeSrc": "15331:10:2", + "nodeType": "YulFunctionCall", + "src": "15331:10:2" + }, + "nativeSrc": "15328:36:2", + "nodeType": "YulIf", + "src": "15328:36:2" + } + ] + }, + "name": "checked_add_t_uint256", + "nativeSrc": "15180:191:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "x", + "nativeSrc": "15211:1:2", + "nodeType": "YulTypedName", + "src": "15211:1:2", + "type": "" + }, + { + "name": "y", + "nativeSrc": "15214:1:2", + "nodeType": "YulTypedName", + "src": "15214:1:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "sum", + "nativeSrc": "15220:3:2", + "nodeType": "YulTypedName", + "src": "15220:3:2", + "type": "" + } + ], + "src": "15180:191:2" + }, + { + "body": { + "nativeSrc": "15531:288:2", + "nodeType": "YulBlock", + "src": "15531:288:2", + "statements": [ + { + "nativeSrc": "15541:26:2", + "nodeType": "YulAssignment", + "src": "15541:26:2", + "value": { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15553:9:2", + "nodeType": "YulIdentifier", + "src": "15553:9:2" + }, + { + "kind": "number", + "nativeSrc": "15564:2:2", + "nodeType": "YulLiteral", + "src": "15564:2:2", + "type": "", + "value": "96" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15549:3:2", + "nodeType": "YulIdentifier", + "src": "15549:3:2" + }, + "nativeSrc": "15549:18:2", + "nodeType": "YulFunctionCall", + "src": "15549:18:2" + }, + "variableNames": [ + { + "name": "tail", + "nativeSrc": "15541:4:2", + "nodeType": "YulIdentifier", + "src": "15541:4:2" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "value0", + "nativeSrc": "15621:6:2", + "nodeType": "YulIdentifier", + "src": "15621:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15634:9:2", + "nodeType": "YulIdentifier", + "src": "15634:9:2" + }, + { + "kind": "number", + "nativeSrc": "15645:1:2", + "nodeType": "YulLiteral", + "src": "15645:1:2", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15630:3:2", + "nodeType": "YulIdentifier", + "src": "15630:3:2" + }, + "nativeSrc": "15630:17:2", + "nodeType": "YulFunctionCall", + "src": "15630:17:2" + } + ], + "functionName": { + "name": "abi_encode_t_address_to_t_address_fromStack", + "nativeSrc": "15577:43:2", + "nodeType": "YulIdentifier", + "src": "15577:43:2" + }, + "nativeSrc": "15577:71:2", + "nodeType": "YulFunctionCall", + "src": "15577:71:2" + }, + "nativeSrc": "15577:71:2", + "nodeType": "YulExpressionStatement", + "src": "15577:71:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value1", + "nativeSrc": "15702:6:2", + "nodeType": "YulIdentifier", + "src": "15702:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15715:9:2", + "nodeType": "YulIdentifier", + "src": "15715:9:2" + }, + { + "kind": "number", + "nativeSrc": "15726:2:2", + "nodeType": "YulLiteral", + "src": "15726:2:2", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15711:3:2", + "nodeType": "YulIdentifier", + "src": "15711:3:2" + }, + "nativeSrc": "15711:18:2", + "nodeType": "YulFunctionCall", + "src": "15711:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "15658:43:2", + "nodeType": "YulIdentifier", + "src": "15658:43:2" + }, + "nativeSrc": "15658:72:2", + "nodeType": "YulFunctionCall", + "src": "15658:72:2" + }, + "nativeSrc": "15658:72:2", + "nodeType": "YulExpressionStatement", + "src": "15658:72:2" + }, + { + "expression": { + "arguments": [ + { + "name": "value2", + "nativeSrc": "15784:6:2", + "nodeType": "YulIdentifier", + "src": "15784:6:2" + }, + { + "arguments": [ + { + "name": "headStart", + "nativeSrc": "15797:9:2", + "nodeType": "YulIdentifier", + "src": "15797:9:2" + }, + { + "kind": "number", + "nativeSrc": "15808:2:2", + "nodeType": "YulLiteral", + "src": "15808:2:2", + "type": "", + "value": "64" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "15793:3:2", + "nodeType": "YulIdentifier", + "src": "15793:3:2" + }, + "nativeSrc": "15793:18:2", + "nodeType": "YulFunctionCall", + "src": "15793:18:2" + } + ], + "functionName": { + "name": "abi_encode_t_uint256_to_t_uint256_fromStack", + "nativeSrc": "15740:43:2", + "nodeType": "YulIdentifier", + "src": "15740:43:2" + }, + "nativeSrc": "15740:72:2", + "nodeType": "YulFunctionCall", + "src": "15740:72:2" + }, + "nativeSrc": "15740:72:2", + "nodeType": "YulExpressionStatement", + "src": "15740:72:2" + } + ] + }, + "name": "abi_encode_tuple_t_address_t_uint256_t_uint256__to_t_address_t_uint256_t_uint256__fromStack_reversed", + "nativeSrc": "15377:442:2", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "headStart", + "nativeSrc": "15487:9:2", + "nodeType": "YulTypedName", + "src": "15487:9:2", + "type": "" + }, + { + "name": "value2", + "nativeSrc": "15499:6:2", + "nodeType": "YulTypedName", + "src": "15499:6:2", + "type": "" + }, + { + "name": "value1", + "nativeSrc": "15507:6:2", + "nodeType": "YulTypedName", + "src": "15507:6:2", + "type": "" + }, + { + "name": "value0", + "nativeSrc": "15515:6:2", + "nodeType": "YulTypedName", + "src": "15515:6:2", + "type": "" + } + ], + "returnVariables": [ + { + "name": "tail", + "nativeSrc": "15526:4:2", + "nodeType": "YulTypedName", + "src": "15526:4:2", + "type": "" + } + ], + "src": "15377:442:2" + } + ] + }, + "contents": "{\n\n function allocate_unbounded() -> memPtr {\n memPtr := mload(64)\n }\n\n function revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() {\n revert(0, 0)\n }\n\n function revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() {\n revert(0, 0)\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function validator_revert_t_uint256(value) {\n if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_uint256(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_uint256(value)\n }\n\n function cleanup_t_uint160(value) -> cleaned {\n cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n }\n\n function cleanup_t_address(value) -> cleaned {\n cleaned := cleanup_t_uint160(value)\n }\n\n function validator_revert_t_address(value) {\n if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_address(offset, end) -> value {\n value := calldataload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_uint256t_addresst_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() {\n revert(0, 0)\n }\n\n function revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() {\n revert(0, 0)\n }\n\n function revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() {\n revert(0, 0)\n }\n\n // bytes\n function abi_decode_t_bytes_calldata_ptr(offset, end) -> arrayPos, length {\n if iszero(slt(add(offset, 0x1f), end)) { revert_error_1b9f4a0a5773e33b91aa01db23bf8c55fce1411167c872835e7fa00a4f17d46d() }\n length := calldataload(offset)\n if gt(length, 0xffffffffffffffff) { revert_error_15abf5612cd996bc235ba1e55a4a30ac60e6bb601ff7ba4ad3f179b6be8d0490() }\n arrayPos := add(offset, 0x20)\n if gt(add(arrayPos, mul(length, 0x01)), end) { revert_error_81385d8c0b31fffe14be1da910c8bd3a80be4cfa248e04f42ec0faea3132a8ef() }\n }\n\n function abi_decode_tuple_t_addresst_addresst_addresst_bytes_calldata_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4 {\n if slt(sub(dataEnd, headStart), 128) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 96))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value3, value4 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n mstore(pos, cleanup_t_uint256(value))\n }\n\n function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n if slt(sub(dataEnd, headStart), 64) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n mstore(pos, cleanup_t_address(value))\n }\n\n function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n tail := add(headStart, 32)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n }\n\n function abi_decode_tuple_t_uint256t_addresst_addresst_addresst_bytes_calldata_ptrt_uint256t_uint256(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6, value7 {\n if slt(sub(dataEnd, headStart), 224) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 96\n\n value3 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := calldataload(add(headStart, 128))\n if gt(offset, 0xffffffffffffffff) { revert_error_c1322bf8034eace5e0b5c7295db60986aa89aae5e0ea0873e4689e076861a5db() }\n\n value4, value5 := abi_decode_t_bytes_calldata_ptr(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 160\n\n value6 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 192\n\n value7 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_tuple_t_addresst_addresst_address(headStart, dataEnd) -> value0, value1, value2 {\n if slt(sub(dataEnd, headStart), 96) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 32\n\n value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n {\n\n let offset := 64\n\n value2 := abi_decode_t_address(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_t_address_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_address(value)\n }\n\n function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_uint256(value)\n }\n\n function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function cleanup_t_bool(value) -> cleaned {\n cleaned := iszero(iszero(value))\n }\n\n function validator_revert_t_bool(value) {\n if iszero(eq(value, cleanup_t_bool(value))) { revert(0, 0) }\n }\n\n function abi_decode_t_bool_fromMemory(offset, end) -> value {\n value := mload(offset)\n validator_revert_t_bool(value)\n }\n\n function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n if slt(sub(dataEnd, headStart), 32) { revert_error_dbdddcbe895c83990c08b3492a0e83918d802a52331272ac6fdb6a7c4aea3b1b() }\n\n {\n\n let offset := 0\n\n value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n }\n\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n mstore(pos, length)\n updated_pos := add(pos, 0x20)\n }\n\n function store_literal_in_memory_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d(memPtr) {\n\n mstore(add(memPtr, 0), \"Caller is not a lock manager\")\n\n }\n\n function abi_encode_t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 28)\n store_literal_in_memory_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_003e80e9813f84de724aa709b51fc6aaaed4846708ab6fb298af92ac2f07a66d_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n function store_literal_in_memory_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71(memPtr) {\n\n mstore(add(memPtr, 0), \"No refund available\")\n\n }\n\n function abi_encode_t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 19)\n store_literal_in_memory_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_fcd7d324c1c5f7f732938cb6faa0f2b67ccebf54a3be160da80dc4f125449b71_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function store_literal_in_memory_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd(memPtr) {\n\n mstore(add(memPtr, 0), \"Refund not available yet\")\n\n }\n\n function abi_encode_t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 24)\n store_literal_in_memory_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d3e39efd306b0edefc0bfe840a545e84b9be1b1a05a0557fa214423d621fd1dd_to_t_string_memory_ptr_fromStack( tail)\n\n }\n\n function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n tail := add(headStart, 64)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n }\n\n function store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0(memPtr) {\n\n mstore(add(memPtr, 0), \"Already initialized\")\n\n }\n\n function abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 19)\n store_literal_in_memory_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0(pos)\n end := add(pos, 32)\n }\n\n function abi_encode_tuple_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n tail := add(headStart, 32)\n\n mstore(add(headStart, 0), sub(tail, headStart))\n tail := abi_encode_t_stringliteral_d3814fd4e72cfd7651525eee846049aca388165c613a1085fb56751abcdd36c0_to_t_string_memory_ptr_fromStack( tail)\n\n }\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 tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_address_to_t_address_fromStack(value2, add(headStart, 64))\n\n }\n\n function panic_error_0x11() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x11)\n revert(0, 0x24)\n }\n\n function checked_mul_t_uint256(x, y) -> product {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n let product_raw := mul(x, y)\n product := cleanup_t_uint256(product_raw)\n\n // overflow, if x != 0 and y != product/x\n if iszero(\n or(\n iszero(x),\n eq(y, div(product, x))\n )\n ) { panic_error_0x11() }\n\n }\n\n function panic_error_0x12() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x12)\n revert(0, 0x24)\n }\n\n function checked_div_t_uint256(x, y) -> r {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n if iszero(y) { panic_error_0x12() }\n\n r := div(x, y)\n }\n\n function checked_add_t_uint256(x, y) -> sum {\n x := cleanup_t_uint256(x)\n y := cleanup_t_uint256(y)\n sum := add(x, y)\n\n if gt(x, sum) { panic_error_0x11() }\n\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 tail := add(headStart, 96)\n\n abi_encode_t_address_to_t_address_fromStack(value0, add(headStart, 0))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value1, add(headStart, 32))\n\n abi_encode_t_uint256_to_t_uint256_fromStack(value2, add(headStart, 64))\n\n }\n\n}\n", + "id": 2, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "6080604052600436106100ab5760003560e01c80637dc0d1d0116100645780637dc0d1d0146101d75780638295d3be14610202578063b5545a3c1461022b578063b8d1452f14610242578063c0c53b8b1461026b578063db7d7f8d14610294576100b2565b8063016b9680146100b7578063221c1fd1146100e05780633436247b1461011d5780633fc8cef31461015a5780635e895f29146101855780637adbf973146101ae576100b2565b366100b257005b600080fd5b3480156100c357600080fd5b506100de60048036038101906100d99190611388565b6102bf565b005b3480156100ec57600080fd5b5061010760048036038101906101029190611454565b610410565b60405161011491906114eb565b60405180910390f35b34801561012957600080fd5b50610144600480360381019061013f9190611506565b61048c565b60405161015191906114eb565b60405180910390f35b34801561016657600080fd5b5061016f6104b4565b60405161017c9190611555565b60405180910390f35b34801561019157600080fd5b506101ac60048036038101906101a79190611570565b6104da565b005b3480156101ba57600080fd5b506101d560048036038101906101d09190611632565b6105b0565b005b3480156101e357600080fd5b506101ec610704565b6040516101f99190611555565b60405180910390f35b34801561020e57600080fd5b5061022960048036038101906102249190611632565b61072a565b005b34801561023757600080fd5b5061024061087d565b005b34801561024e57600080fd5b5061026960048036038101906102649190611632565b610acf565b005b34801561027757600080fd5b50610292600480360381019061028d919061165f565b610c23565b005b3480156102a057600080fd5b506102a9610e1e565b6040516102b69190611555565b60405180910390f35b600033905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610409576104088173ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b815260040161035391906114eb565b602060405180830381865afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039491906116c7565b8273ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104039190611709565b610e42565b5b5050505050565b60003373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104819190611709565b905095945050505050565b600360205281600052604060002081600281106104a857600080fd5b01600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036105a6576105a5863373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a09190611709565b610e42565b5b5050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016106099190611555565b602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a919061176e565b610689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610680906117f8565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa816040516106f99190611555565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016107839190611555565b602060405180830381865afa1580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c4919061176e565b610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa906117f8565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5816040516108729190611555565b60405180910390a150565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002806020026040519081016040528092919082600280156108f5576020028201915b8154815260200190600101908083116108e1575b5050505050905060008160006002811061091257610911611818565b5b602002015111610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90611893565b60405180910390fd5b428160016002811061096c5761096b611818565b5b6020020151106109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a8906118ff565b60405180910390fd5b6040518060400160405280600060ff168152602001600060ff16815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020906002610a1b929190611248565b503373ffffffffffffffffffffffffffffffffffffffff166108fc82600060028110610a4a57610a49611818565b5b60200201519081150290604051600060405180830381858888f19350505050158015610a7a573d6000803e3d6000fd5b507f1fe70b87853839959e74387a76c2713282f77a4a0656bf8689058a0eea2891e03382600060028110610ab157610ab0611818565b5b6020020151604051610ac492919061191f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b8152600401610b289190611555565b602060405180830381865afa158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b69919061176e565b610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f906117f8565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610c189190611555565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990611994565b60405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c583604051610d219190611555565b60405180910390a181600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa82604051610d999190611555565b60405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610e119190611555565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d76ea586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed491906116c7565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1e553e78385600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401610f59939291906119b4565b6020604051808303816000875af1158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190611709565b90506000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060028110610ff257610ff1611818565b5b015490506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061104a57611049611818565b5b015490506000600a600b8561105f9190611a1a565b6110699190611a8b565b90506000621275004261107c9190611abc565b9050428310156110f9576040518060400160405280838661109d9190611abc565b815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209060026110f392919061128d565b5061115d565b604051806040016040528083815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090600261115b92919061128d565b505b7fa1d590fd2e594a4a50983c420b530fcf5ffe210e5203b51d6c022cb0d9ac4f8088600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600281106111d1576111d0611818565b5b0154600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061122557611224611818565b5b015460405161123693929190611af0565b60405180910390a15050505050505050565b826002810192821561127c579160200282015b8281111561127b578251829060ff1690559160200191906001019061125b565b5b50905061128991906112cd565b5090565b82600281019282156112bc579160200282015b828111156112bb5782518255916020019190600101906112a0565b5b5090506112c991906112cd565b5090565b5b808211156112e65760008160009055506001016112ce565b5090565b600080fd5b600080fd5b6000819050919050565b611307816112f4565b811461131257600080fd5b50565b600081359050611324816112fe565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113558261132a565b9050919050565b6113658161134a565b811461137057600080fd5b50565b6000813590506113828161135c565b92915050565b600080600080608085870312156113a2576113a16112ea565b5b60006113b087828801611315565b94505060206113c187828801611373565b93505060406113d287828801611315565b92505060606113e387828801611315565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112611414576114136113ef565b5b8235905067ffffffffffffffff811115611431576114306113f4565b5b60208301915083600182028301111561144d5761144c6113f9565b5b9250929050565b6000806000806000608086880312156114705761146f6112ea565b5b600061147e88828901611373565b955050602061148f88828901611373565b94505060406114a088828901611373565b935050606086013567ffffffffffffffff8111156114c1576114c06112ef565b5b6114cd888289016113fe565b92509250509295509295909350565b6114e5816112f4565b82525050565b600060208201905061150060008301846114dc565b92915050565b6000806040838503121561151d5761151c6112ea565b5b600061152b85828601611373565b925050602061153c85828601611315565b9150509250929050565b61154f8161134a565b82525050565b600060208201905061156a6000830184611546565b92915050565b60008060008060008060008060e0898b0312156115905761158f6112ea565b5b600061159e8b828c01611315565b98505060206115af8b828c01611373565b97505060406115c08b828c01611373565b96505060606115d18b828c01611373565b955050608089013567ffffffffffffffff8111156115f2576115f16112ef565b5b6115fe8b828c016113fe565b945094505060a06116118b828c01611315565b92505060c06116228b828c01611315565b9150509295985092959890939650565b600060208284031215611648576116476112ea565b5b600061165684828501611373565b91505092915050565b600080600060608486031215611678576116776112ea565b5b600061168686828701611373565b935050602061169786828701611373565b92505060406116a886828701611373565b9150509250925092565b6000815190506116c18161135c565b92915050565b6000602082840312156116dd576116dc6112ea565b5b60006116eb848285016116b2565b91505092915050565b600081519050611703816112fe565b92915050565b60006020828403121561171f5761171e6112ea565b5b600061172d848285016116f4565b91505092915050565b60008115159050919050565b61174b81611736565b811461175657600080fd5b50565b60008151905061176881611742565b92915050565b600060208284031215611784576117836112ea565b5b600061179284828501611759565b91505092915050565b600082825260208201905092915050565b7f43616c6c6572206973206e6f742061206c6f636b206d616e6167657200000000600082015250565b60006117e2601c8361179b565b91506117ed826117ac565b602082019050919050565b60006020820190508181036000830152611811816117d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e6f20726566756e6420617661696c61626c6500000000000000000000000000600082015250565b600061187d60138361179b565b915061188882611847565b602082019050919050565b600060208201905081810360008301526118ac81611870565b9050919050565b7f526566756e64206e6f7420617661696c61626c65207965740000000000000000600082015250565b60006118e960188361179b565b91506118f4826118b3565b602082019050919050565b60006020820190508181036000830152611918816118dc565b9050919050565b60006040820190506119346000830185611546565b61194160208301846114dc565b9392505050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b600061197e60138361179b565b915061198982611948565b602082019050919050565b600060208201905081810360008301526119ad81611971565b9050919050565b60006060820190506119c96000830186611546565b6119d660208301856114dc565b6119e36040830184611546565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a25826112f4565b9150611a30836112f4565b9250828202611a3e816112f4565b91508282048414831517611a5557611a546119eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611a96826112f4565b9150611aa1836112f4565b925082611ab157611ab0611a5c565b5b828204905092915050565b6000611ac7826112f4565b9150611ad2836112f4565b9250828201905080821115611aea57611ae96119eb565b5b92915050565b6000606082019050611b056000830186611546565b611b1260208301856114dc565b611b1f60408301846114dc565b94935050505056fea264697066735822122008e09c1d2f6886a7c207324f1ad1ebde84b56354e465f1407f57b1181e5ba6a764736f6c634300081b0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xAB JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x7DC0D1D0 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0x7DC0D1D0 EQ PUSH2 0x1D7 JUMPI DUP1 PUSH4 0x8295D3BE EQ PUSH2 0x202 JUMPI DUP1 PUSH4 0xB5545A3C EQ PUSH2 0x22B JUMPI DUP1 PUSH4 0xB8D1452F EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0xC0C53B8B EQ PUSH2 0x26B JUMPI DUP1 PUSH4 0xDB7D7F8D EQ PUSH2 0x294 JUMPI PUSH2 0xB2 JUMP JUMPDEST DUP1 PUSH4 0x16B9680 EQ PUSH2 0xB7 JUMPI DUP1 PUSH4 0x221C1FD1 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0x3436247B EQ PUSH2 0x11D JUMPI DUP1 PUSH4 0x3FC8CEF3 EQ PUSH2 0x15A JUMPI DUP1 PUSH4 0x5E895F29 EQ PUSH2 0x185 JUMPI DUP1 PUSH4 0x7ADBF973 EQ PUSH2 0x1AE JUMPI PUSH2 0xB2 JUMP JUMPDEST CALLDATASIZE PUSH2 0xB2 JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xC3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xDE PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0xD9 SWAP2 SWAP1 PUSH2 0x1388 JUMP JUMPDEST PUSH2 0x2BF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xEC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x102 SWAP2 SWAP1 PUSH2 0x1454 JUMP JUMPDEST PUSH2 0x410 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x114 SWAP2 SWAP1 PUSH2 0x14EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x129 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x144 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x13F SWAP2 SWAP1 PUSH2 0x1506 JUMP JUMPDEST PUSH2 0x48C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x151 SWAP2 SWAP1 PUSH2 0x14EB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x166 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x16F PUSH2 0x4B4 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x17C SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x191 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1AC PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1A7 SWAP2 SWAP1 PUSH2 0x1570 JUMP JUMPDEST PUSH2 0x4DA JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1D5 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x1D0 SWAP2 SWAP1 PUSH2 0x1632 JUMP JUMPDEST PUSH2 0x5B0 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1EC PUSH2 0x704 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x1F9 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x20E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x229 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x224 SWAP2 SWAP1 PUSH2 0x1632 JUMP JUMPDEST PUSH2 0x72A JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x237 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x240 PUSH2 0x87D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x24E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x269 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x264 SWAP2 SWAP1 PUSH2 0x1632 JUMP JUMPDEST PUSH2 0xACF JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x277 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x292 PUSH1 0x4 DUP1 CALLDATASIZE SUB DUP2 ADD SWAP1 PUSH2 0x28D SWAP2 SWAP1 PUSH2 0x165F JUMP JUMPDEST PUSH2 0xC23 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2A9 PUSH2 0xE1E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x2B6 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 CALLER SWAP1 POP PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x409 JUMPI PUSH2 0x408 DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x6352211E DUP8 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x353 SWAP2 SWAP1 PUSH2 0x14EB JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x370 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 0x394 SWAP2 SWAP1 PUSH2 0x16C7 JUMP JUMPDEST DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10E56973 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 0x3DF 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 0x403 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0xE42 JUMP JUMPDEST JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10E56973 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 0x45D 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 0x481 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST SWAP1 POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE DUP2 PUSH1 0x0 MSTORE PUSH1 0x40 PUSH1 0x0 KECCAK256 DUP2 PUSH1 0x2 DUP2 LT PUSH2 0x4A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST ADD PUSH1 0x0 SWAP2 POP SWAP2 POP POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB PUSH2 0x5A6 JUMPI PUSH2 0x5A5 DUP7 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x10E56973 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 0x57C 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 0x5A0 SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST PUSH2 0xE42 JUMP JUMPDEST JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAE4B8F7 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x609 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x626 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 0x64A SWAP2 SWAP1 PUSH2 0x176E JUMP JUMPDEST PUSH2 0x689 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x680 SWAP1 PUSH2 0x17F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x3F32684A32A11DABDBB8C0177DE80AA3AE36A004D75210335B49E544E48CD0AA DUP2 PUSH1 0x40 MLOAD PUSH2 0x6F9 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAE4B8F7 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x783 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7A0 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 0x7C4 SWAP2 SWAP1 PUSH2 0x176E JUMP JUMPDEST PUSH2 0x803 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7FA SWAP1 PUSH2 0x17F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x867B5AC058251D339D708E1228AC92D445562B0685454293FED8B862F87167C5 DUP2 PUSH1 0x40 MLOAD PUSH2 0x872 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 DUP1 PUSH1 0x20 MUL PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP3 PUSH1 0x2 DUP1 ISZERO PUSH2 0x8F5 JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0x8E1 JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x0 DUP2 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0x912 JUMPI PUSH2 0x911 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL ADD MLOAD GT PUSH2 0x957 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x94E SWAP1 PUSH2 0x1893 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST TIMESTAMP DUP2 PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0x96C JUMPI PUSH2 0x96B PUSH2 0x1818 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL ADD MLOAD LT PUSH2 0x9B1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x9A8 SWAP1 PUSH2 0x18FF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 PUSH1 0xFF AND DUP2 MSTORE POP PUSH1 0x3 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 PUSH2 0xA1B SWAP3 SWAP2 SWAP1 PUSH2 0x1248 JUMP JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xA4A JUMPI PUSH2 0xA49 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL ADD MLOAD SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0xA7A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH32 0x1FE70B87853839959E74387A76C2713282F77A4A0656BF8689058A0EEA2891E0 CALLER DUP3 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xAB1 JUMPI PUSH2 0xAB0 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST PUSH1 0x20 MUL ADD MLOAD PUSH1 0x40 MLOAD PUSH2 0xAC4 SWAP3 SWAP2 SWAP1 PUSH2 0x191F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xAAE4B8F7 CALLER PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB28 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xB45 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 0xB69 SWAP2 SWAP1 PUSH2 0x176E JUMP JUMPDEST PUSH2 0xBA8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xB9F SWAP1 PUSH2 0x17F8 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x13A533084DCBB1CFE0DBEA708EA977223C27C44D94F2FA3867A167C9CD340BF9 DUP2 PUSH1 0x40 MLOAD PUSH2 0xC18 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xCB2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCA9 SWAP1 PUSH2 0x1994 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x867B5AC058251D339D708E1228AC92D445562B0685454293FED8B862F87167C5 DUP4 PUSH1 0x40 MLOAD PUSH2 0xD21 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP2 PUSH1 0x1 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x3F32684A32A11DABDBB8C0177DE80AA3AE36A004D75210335B49E544E48CD0AA DUP3 PUSH1 0x40 MLOAD PUSH2 0xD99 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0x13A533084DCBB1CFE0DBEA708EA977223C27C44D94F2FA3867A167C9CD340BF9 DUP2 PUSH1 0x40 MLOAD PUSH2 0xE11 SWAP2 SWAP1 PUSH2 0x1555 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x9D76EA58 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 0xEB0 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 0xED4 SWAP2 SWAP1 PUSH2 0x16C7 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xC1E553E7 DUP4 DUP6 PUSH1 0x2 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xF59 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x19B4 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 GAS CALL ISZERO DUP1 ISZERO PUSH2 0xF78 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 0xF9C SWAP2 SWAP1 PUSH2 0x1709 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0xFF2 JUMPI PUSH2 0xFF1 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x3 PUSH1 0x0 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0x104A JUMPI PUSH2 0x1049 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST ADD SLOAD SWAP1 POP PUSH1 0x0 PUSH1 0xA PUSH1 0xB DUP6 PUSH2 0x105F SWAP2 SWAP1 PUSH2 0x1A1A JUMP JUMPDEST PUSH2 0x1069 SWAP2 SWAP1 PUSH2 0x1A8B JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH3 0x127500 TIMESTAMP PUSH2 0x107C SWAP2 SWAP1 PUSH2 0x1ABC JUMP JUMPDEST SWAP1 POP TIMESTAMP DUP4 LT ISZERO PUSH2 0x10F9 JUMPI PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP7 PUSH2 0x109D SWAP2 SWAP1 PUSH2 0x1ABC JUMP JUMPDEST DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x3 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 PUSH2 0x10F3 SWAP3 SWAP2 SWAP1 PUSH2 0x128D JUMP JUMPDEST POP PUSH2 0x115D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE POP PUSH1 0x3 PUSH1 0x0 DUP11 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 PUSH2 0x115B SWAP3 SWAP2 SWAP1 PUSH2 0x128D JUMP JUMPDEST POP JUMPDEST PUSH32 0xA1D590FD2E594A4A50983C420B530FCF5FFE210E5203B51D6C022CB0D9AC4F80 DUP9 PUSH1 0x3 PUSH1 0x0 DUP12 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 PUSH1 0x2 DUP2 LT PUSH2 0x11D1 JUMPI PUSH2 0x11D0 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST ADD SLOAD PUSH1 0x3 PUSH1 0x0 DUP13 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 PUSH1 0x2 DUP2 LT PUSH2 0x1225 JUMPI PUSH2 0x1224 PUSH2 0x1818 JUMP JUMPDEST JUMPDEST ADD SLOAD PUSH1 0x40 MLOAD PUSH2 0x1236 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x1AF0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x2 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x127C JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x127B JUMPI DUP3 MLOAD DUP3 SWAP1 PUSH1 0xFF AND SWAP1 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x125B JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x1289 SWAP2 SWAP1 PUSH2 0x12CD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST DUP3 PUSH1 0x2 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x12BC JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x12BB JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x12A0 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x12C9 SWAP2 SWAP1 PUSH2 0x12CD JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x12E6 JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x12CE JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1307 DUP2 PUSH2 0x12F4 JUMP JUMPDEST DUP2 EQ PUSH2 0x1312 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1324 DUP2 PUSH2 0x12FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1355 DUP3 PUSH2 0x132A JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x1365 DUP2 PUSH2 0x134A JUMP JUMPDEST DUP2 EQ PUSH2 0x1370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 CALLDATALOAD SWAP1 POP PUSH2 0x1382 DUP2 PUSH2 0x135C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x13A2 JUMPI PUSH2 0x13A1 PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x13B0 DUP8 DUP3 DUP9 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x20 PUSH2 0x13C1 DUP8 DUP3 DUP9 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x40 PUSH2 0x13D2 DUP8 DUP3 DUP9 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x60 PUSH2 0x13E3 DUP8 DUP3 DUP9 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP2 SWAP5 POP SWAP3 POP JUMP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x1414 JUMPI PUSH2 0x1413 PUSH2 0x13EF JUMP JUMPDEST JUMPDEST DUP3 CALLDATALOAD SWAP1 POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x1431 JUMPI PUSH2 0x1430 PUSH2 0x13F4 JUMP JUMPDEST JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x1 DUP3 MUL DUP4 ADD GT ISZERO PUSH2 0x144D JUMPI PUSH2 0x144C PUSH2 0x13F9 JUMP JUMPDEST JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x1470 JUMPI PUSH2 0x146F PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x147E DUP9 DUP3 DUP10 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x20 PUSH2 0x148F DUP9 DUP3 DUP10 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP5 POP POP PUSH1 0x40 PUSH2 0x14A0 DUP9 DUP3 DUP10 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x14C1 JUMPI PUSH2 0x14C0 PUSH2 0x12EF JUMP JUMPDEST JUMPDEST PUSH2 0x14CD DUP9 DUP3 DUP10 ADD PUSH2 0x13FE JUMP JUMPDEST SWAP3 POP SWAP3 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH2 0x14E5 DUP2 PUSH2 0x12F4 JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x1500 PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x14DC JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x151D JUMPI PUSH2 0x151C PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x152B DUP6 DUP3 DUP7 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x20 PUSH2 0x153C DUP6 DUP3 DUP7 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH2 0x154F DUP2 PUSH2 0x134A JUMP JUMPDEST DUP3 MSTORE POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP PUSH2 0x156A PUSH1 0x0 DUP4 ADD DUP5 PUSH2 0x1546 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xE0 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x1590 JUMPI PUSH2 0x158F PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x159E DUP12 DUP3 DUP13 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP9 POP POP PUSH1 0x20 PUSH2 0x15AF DUP12 DUP3 DUP13 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP8 POP POP PUSH1 0x40 PUSH2 0x15C0 DUP12 DUP3 DUP13 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP7 POP POP PUSH1 0x60 PUSH2 0x15D1 DUP12 DUP3 DUP13 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP6 POP POP PUSH1 0x80 DUP10 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x15F2 JUMPI PUSH2 0x15F1 PUSH2 0x12EF JUMP JUMPDEST JUMPDEST PUSH2 0x15FE DUP12 DUP3 DUP13 ADD PUSH2 0x13FE JUMP JUMPDEST SWAP5 POP SWAP5 POP POP PUSH1 0xA0 PUSH2 0x1611 DUP12 DUP3 DUP13 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP3 POP POP PUSH1 0xC0 PUSH2 0x1622 DUP12 DUP3 DUP13 ADD PUSH2 0x1315 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1648 JUMPI PUSH2 0x1647 PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1656 DUP5 DUP3 DUP6 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x1678 JUMPI PUSH2 0x1677 PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1686 DUP7 DUP3 DUP8 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP4 POP POP PUSH1 0x20 PUSH2 0x1697 DUP7 DUP3 DUP8 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP3 POP POP PUSH1 0x40 PUSH2 0x16A8 DUP7 DUP3 DUP8 ADD PUSH2 0x1373 JUMP JUMPDEST SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x16C1 DUP2 PUSH2 0x135C JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x16DD JUMPI PUSH2 0x16DC PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x16EB DUP5 DUP3 DUP6 ADD PUSH2 0x16B2 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1703 DUP2 PUSH2 0x12FE JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x171F JUMPI PUSH2 0x171E PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x172D DUP5 DUP3 DUP6 ADD PUSH2 0x16F4 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO ISZERO SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x174B DUP2 PUSH2 0x1736 JUMP JUMPDEST DUP2 EQ PUSH2 0x1756 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP2 MLOAD SWAP1 POP PUSH2 0x1768 DUP2 PUSH2 0x1742 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1784 JUMPI PUSH2 0x1783 PUSH2 0x12EA JUMP JUMPDEST JUMPDEST PUSH1 0x0 PUSH2 0x1792 DUP5 DUP3 DUP6 ADD PUSH2 0x1759 JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x43616C6C6572206973206E6F742061206C6F636B206D616E6167657200000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x17E2 PUSH1 0x1C DUP4 PUSH2 0x179B JUMP JUMPDEST SWAP2 POP PUSH2 0x17ED DUP3 PUSH2 0x17AC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1811 DUP2 PUSH2 0x17D5 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH32 0x4E6F20726566756E6420617661696C61626C6500000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x187D PUSH1 0x13 DUP4 PUSH2 0x179B JUMP JUMPDEST SWAP2 POP PUSH2 0x1888 DUP3 PUSH2 0x1847 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x18AC DUP2 PUSH2 0x1870 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x526566756E64206E6F7420617661696C61626C65207965740000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x18E9 PUSH1 0x18 DUP4 PUSH2 0x179B JUMP JUMPDEST SWAP2 POP PUSH2 0x18F4 DUP3 PUSH2 0x18B3 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x1918 DUP2 PUSH2 0x18DC JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 DUP3 ADD SWAP1 POP PUSH2 0x1934 PUSH1 0x0 DUP4 ADD DUP6 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x1941 PUSH1 0x20 DUP4 ADD DUP5 PUSH2 0x14DC JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x416C726561647920696E697469616C697A656400000000000000000000000000 PUSH1 0x0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x197E PUSH1 0x13 DUP4 PUSH2 0x179B JUMP JUMPDEST SWAP2 POP PUSH2 0x1989 DUP3 PUSH2 0x1948 JUMP JUMPDEST PUSH1 0x20 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 ADD SWAP1 POP DUP2 DUP2 SUB PUSH1 0x0 DUP4 ADD MSTORE PUSH2 0x19AD DUP2 PUSH2 0x1971 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x19C9 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x19D6 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x14DC JUMP JUMPDEST PUSH2 0x19E3 PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x1546 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A25 DUP3 PUSH2 0x12F4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1A30 DUP4 PUSH2 0x12F4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 MUL PUSH2 0x1A3E DUP2 PUSH2 0x12F4 JUMP JUMPDEST SWAP2 POP DUP3 DUP3 DIV DUP5 EQ DUP4 ISZERO OR PUSH2 0x1A55 JUMPI PUSH2 0x1A54 PUSH2 0x19EB JUMP JUMPDEST JUMPDEST POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH1 0x0 MSTORE PUSH1 0x12 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1A96 DUP3 PUSH2 0x12F4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1AA1 DUP4 PUSH2 0x12F4 JUMP JUMPDEST SWAP3 POP DUP3 PUSH2 0x1AB1 JUMPI PUSH2 0x1AB0 PUSH2 0x1A5C JUMP JUMPDEST JUMPDEST DUP3 DUP3 DIV SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1AC7 DUP3 PUSH2 0x12F4 JUMP JUMPDEST SWAP2 POP PUSH2 0x1AD2 DUP4 PUSH2 0x12F4 JUMP JUMPDEST SWAP3 POP DUP3 DUP3 ADD SWAP1 POP DUP1 DUP3 GT ISZERO PUSH2 0x1AEA JUMPI PUSH2 0x1AE9 PUSH2 0x19EB JUMP JUMPDEST JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP3 ADD SWAP1 POP PUSH2 0x1B05 PUSH1 0x0 DUP4 ADD DUP7 PUSH2 0x1546 JUMP JUMPDEST PUSH2 0x1B12 PUSH1 0x20 DUP4 ADD DUP6 PUSH2 0x14DC JUMP JUMPDEST PUSH2 0x1B1F PUSH1 0x40 DUP4 ADD DUP5 PUSH2 0x14DC JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 ADDMOD 0xE0 SWAP13 SAR 0x2F PUSH9 0x86A7C207324F1AD1EB 0xDE DUP5 0xB5 PUSH4 0x54E465F1 BLOCKHASH PUSH32 0x57B1181E5BA6A764736F6C634300081B00330000000000000000000000000000 ", + "sourceMap": "724:4560:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4517:343;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2627:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;863:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;838:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4054:393;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2053:241;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;811:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1715:271;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4891:356;;;;;;;;;;;;;:::i;:::-;;2359:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1241:401;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;779:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4517:343;4688:19;4725:10;4688:48;;4764:11;;;;;;;;;;4750:25;;:10;:25;;;4746:108;;4791:52;4804:4;:12;;;4817:7;4804:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4827:4;:13;;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4791:12;:52::i;:::-;4746:108;4678:182;4517:343;;;;:::o;2627:265::-;2810:19;2863:10;2848:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2841:44;;2627:265;;;;;;;:::o;863:42::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;838:19::-;;;;;;;;;;;;;:::o;4054:393::-;4341:11;;;;;;;;;;4327:25;;:10;:25;;;4323:118;;4368:62;4381:9;4407:10;4392:35;;;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4368:12;:62::i;:::-;4323:118;4054:393;;;;;;;;:::o;2053:241::-;2126:11;;;;;;;;;;2111:41;;;2153:10;2111:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2106:123;;2180:38;;;;;;;;;;:::i;:::-;;;;;;;;2106:123;2247:7;2238:6;;:16;;;;;;;;;;;;;;;;;;2269:18;2279:7;2269:18;;;;;;:::i;:::-;;;;;;;;2053:241;:::o;811:21::-;;;;;;;;;;;;;:::o;1715:271::-;1798:11;;;;;;;;;;1783:41;;;1825:10;1783:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1778:123;;1852:38;;;;;;;;;;:::i;:::-;;;;;;;;1778:123;1924:12;1910:11;;:26;;;;;;;;;;;;;;;;;;1951:28;1966:12;1951:28;;;;;;:::i;:::-;;;;;;;;1715:271;:::o;4891:356::-;4933:21;4957:7;:19;4965:10;4957:19;;;;;;;;;;;;;;;4933:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5006:1;4994:6;5001:1;4994:9;;;;;;;:::i;:::-;;;;;;:13;4986:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;5061:15;5049:6;5056:1;5049:9;;;;;;;:::i;:::-;;;;;;:27;5041:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;5115:28;;;;;;;;5138:1;5115:28;;;;;;5141:1;5115:28;;;;;:7;:19;5123:10;5115:19;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;5161:10;5153:28;;:39;5182:6;5189:1;5182:9;;;;;;;:::i;:::-;;;;;;5153:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5207:33;5218:10;5230:6;5237:1;5230:9;;;;;;;:::i;:::-;;;;;;5207:33;;;;;;;:::i;:::-;;;;;;;;4923:324;4891:356::o;2359:229::-;2428:11;;;;;;;;;;2413:41;;;2455:10;2413:53;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2408:123;;2482:38;;;;;;;;;;:::i;:::-;;;;;;;;2408:123;2547:5;2540:4;;:12;;;;;;;;;;;;;;;;;;2567:14;2575:5;2567:14;;;;;;:::i;:::-;;;;;;;;2359:229;:::o;1241:401::-;1389:1;1366:25;;:11;;;;;;;;;;:25;;;1362:85;;1407:29;;;;;;;;;;:::i;:::-;;;;;;;;1362:85;1470:12;1456:11;;:26;;;;;;;;;;;;;;;;;;1497:28;1512:12;1497:28;;;;;;:::i;:::-;;;;;;;;1544:7;1535:6;;:16;;;;;;;;;;;;;;;;;;1566:18;1576:7;1566:18;;;;;;:::i;:::-;;;;;;;;1601:5;1594:4;;:12;;;;;;;;;;;;;;;;;;1621:14;1629:5;1621:14;;;;;;:::i;:::-;;;;;;;;1241:401;;;:::o;779:26::-;;;;;;;;;;;;:::o;2898:1085::-;2972:17;3007:11;;;;;;;;;;;2992:40;;;:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2972:62;;3128:15;3163:6;;;;;;;;;;;3146:41;;;3201:9;3224:6;3244:4;;;;;;;;;;;3146:112;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3128:130;;3310:19;3332:7;:20;3340:11;3332:20;;;;;;;;;;;;;;;3353:1;3332:23;;;;;;;:::i;:::-;;;;3310:45;;3365:18;3386:7;:20;3394:11;3386:20;;;;;;;;;;;;;;;3407:1;3386:23;;;;;;;:::i;:::-;;;;3365:44;;3419:14;3456:2;3450;3437:10;:15;;;;:::i;:::-;3436:22;;;;:::i;:::-;3419:39;;3481:13;3515:17;3497:15;:35;;;;:::i;:::-;3481:51;;3581:15;3565:13;:31;3561:282;;;3612:61;;;;;;;;3653:9;3636:14;:26;;;;:::i;:::-;3612:61;;;;3664:8;3612:61;;;:7;:20;3620:11;3612:20;;;;;;;;;;;;;;;:61;;;;;;;:::i;:::-;;3561:282;;;3788:44;;;;;;;;3812:9;3788:44;;;;3823:8;3788:44;;;:7;:20;3796:11;3788:20;;;;;;;;;;;;;;;:44;;;;;;;:::i;:::-;;3561:282;3858:118;3881:11;3906:7;:20;3914:11;3906:20;;;;;;;;;;;;;;;3927:1;3906:23;;;;;;;:::i;:::-;;;;3943:7;:20;3951:11;3943:20;;;;;;;;;;;;;;;3964:1;3943:23;;;;;;;:::i;:::-;;;;3858:118;;;;;;;;:::i;:::-;;;;;;;;2962:1021;;;;;;2898:1085;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;88:117:2:-;197:1;194;187:12;211:117;320:1;317;310:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:126::-;727:7;767:42;760:5;756:54;745:65;;690:126;;;:::o;822:96::-;859:7;888:24;906:5;888:24;:::i;:::-;877:35;;822:96;;;:::o;924:122::-;997:24;1015:5;997:24;:::i;:::-;990:5;987:35;977:63;;1036:1;1033;1026:12;977:63;924:122;:::o;1052:139::-;1098:5;1136:6;1123:20;1114:29;;1152:33;1179:5;1152:33;:::i;:::-;1052:139;;;;:::o;1197:765::-;1283:6;1291;1299;1307;1356:3;1344:9;1335:7;1331:23;1327:33;1324:120;;;1363:79;;:::i;:::-;1324:120;1483:1;1508:53;1553:7;1544:6;1533:9;1529:22;1508:53;:::i;:::-;1498:63;;1454:117;1610:2;1636:53;1681:7;1672:6;1661:9;1657:22;1636:53;:::i;:::-;1626:63;;1581:118;1738:2;1764:53;1809:7;1800:6;1789:9;1785:22;1764:53;:::i;:::-;1754:63;;1709:118;1866:2;1892:53;1937:7;1928:6;1917:9;1913:22;1892:53;:::i;:::-;1882:63;;1837:118;1197:765;;;;;;;:::o;1968:117::-;2077:1;2074;2067:12;2091:117;2200:1;2197;2190:12;2214:117;2323:1;2320;2313:12;2350:552;2407:8;2417:6;2467:3;2460:4;2452:6;2448:17;2444:27;2434:122;;2475:79;;:::i;:::-;2434:122;2588:6;2575:20;2565:30;;2618:18;2610:6;2607:30;2604:117;;;2640:79;;:::i;:::-;2604:117;2754:4;2746:6;2742:17;2730:29;;2808:3;2800:4;2792:6;2788:17;2778:8;2774:32;2771:41;2768:128;;;2815:79;;:::i;:::-;2768:128;2350:552;;;;;:::o;2908:963::-;3005:6;3013;3021;3029;3037;3086:3;3074:9;3065:7;3061:23;3057:33;3054:120;;;3093:79;;:::i;:::-;3054:120;3213:1;3238:53;3283:7;3274:6;3263:9;3259:22;3238:53;:::i;:::-;3228:63;;3184:117;3340:2;3366:53;3411:7;3402:6;3391:9;3387:22;3366:53;:::i;:::-;3356:63;;3311:118;3468:2;3494:53;3539:7;3530:6;3519:9;3515:22;3494:53;:::i;:::-;3484:63;;3439:118;3624:2;3613:9;3609:18;3596:32;3655:18;3647:6;3644:30;3641:117;;;3677:79;;:::i;:::-;3641:117;3790:64;3846:7;3837:6;3826:9;3822:22;3790:64;:::i;:::-;3772:82;;;;3567:297;2908:963;;;;;;;;:::o;3877:118::-;3964:24;3982:5;3964:24;:::i;:::-;3959:3;3952:37;3877:118;;:::o;4001:222::-;4094:4;4132:2;4121:9;4117:18;4109:26;;4145:71;4213:1;4202:9;4198:17;4189:6;4145:71;:::i;:::-;4001:222;;;;:::o;4229:474::-;4297:6;4305;4354:2;4342:9;4333:7;4329:23;4325:32;4322:119;;;4360:79;;:::i;:::-;4322:119;4480:1;4505:53;4550:7;4541:6;4530:9;4526:22;4505:53;:::i;:::-;4495:63;;4451:117;4607:2;4633:53;4678:7;4669:6;4658:9;4654:22;4633:53;:::i;:::-;4623:63;;4578:118;4229:474;;;;;:::o;4709:118::-;4796:24;4814:5;4796:24;:::i;:::-;4791:3;4784:37;4709:118;;:::o;4833:222::-;4926:4;4964:2;4953:9;4949:18;4941:26;;4977:71;5045:1;5034:9;5030:17;5021:6;4977:71;:::i;:::-;4833:222;;;;:::o;5061:1401::-;5185:6;5193;5201;5209;5217;5225;5233;5241;5290:3;5278:9;5269:7;5265:23;5261:33;5258:120;;;5297:79;;:::i;:::-;5258:120;5417:1;5442:53;5487:7;5478:6;5467:9;5463:22;5442:53;:::i;:::-;5432:63;;5388:117;5544:2;5570:53;5615:7;5606:6;5595:9;5591:22;5570:53;:::i;:::-;5560:63;;5515:118;5672:2;5698:53;5743:7;5734:6;5723:9;5719:22;5698:53;:::i;:::-;5688:63;;5643:118;5800:2;5826:53;5871:7;5862:6;5851:9;5847:22;5826:53;:::i;:::-;5816:63;;5771:118;5956:3;5945:9;5941:19;5928:33;5988:18;5980:6;5977:30;5974:117;;;6010:79;;:::i;:::-;5974:117;6123:64;6179:7;6170:6;6159:9;6155:22;6123:64;:::i;:::-;6105:82;;;;5899:298;6236:3;6263:53;6308:7;6299:6;6288:9;6284:22;6263:53;:::i;:::-;6253:63;;6207:119;6365:3;6392:53;6437:7;6428:6;6417:9;6413:22;6392:53;:::i;:::-;6382:63;;6336:119;5061:1401;;;;;;;;;;;:::o;6468:329::-;6527:6;6576:2;6564:9;6555:7;6551:23;6547:32;6544:119;;;6582:79;;:::i;:::-;6544:119;6702:1;6727:53;6772:7;6763:6;6752:9;6748:22;6727:53;:::i;:::-;6717:63;;6673:117;6468:329;;;;:::o;6803:619::-;6880:6;6888;6896;6945:2;6933:9;6924:7;6920:23;6916:32;6913:119;;;6951:79;;:::i;:::-;6913:119;7071:1;7096:53;7141:7;7132:6;7121:9;7117:22;7096:53;:::i;:::-;7086:63;;7042:117;7198:2;7224:53;7269:7;7260:6;7249:9;7245:22;7224:53;:::i;:::-;7214:63;;7169:118;7326:2;7352:53;7397:7;7388:6;7377:9;7373:22;7352:53;:::i;:::-;7342:63;;7297:118;6803:619;;;;;:::o;7428:143::-;7485:5;7516:6;7510:13;7501:22;;7532:33;7559:5;7532:33;:::i;:::-;7428:143;;;;:::o;7577:351::-;7647:6;7696:2;7684:9;7675:7;7671:23;7667:32;7664:119;;;7702:79;;:::i;:::-;7664:119;7822:1;7847:64;7903:7;7894:6;7883:9;7879:22;7847:64;:::i;:::-;7837:74;;7793:128;7577:351;;;;:::o;7934:143::-;7991:5;8022:6;8016:13;8007:22;;8038:33;8065:5;8038:33;:::i;:::-;7934:143;;;;:::o;8083:351::-;8153:6;8202:2;8190:9;8181:7;8177:23;8173:32;8170:119;;;8208:79;;:::i;:::-;8170:119;8328:1;8353:64;8409:7;8400:6;8389:9;8385:22;8353:64;:::i;:::-;8343:74;;8299:128;8083:351;;;;:::o;8440:90::-;8474:7;8517:5;8510:13;8503:21;8492:32;;8440:90;;;:::o;8536:116::-;8606:21;8621:5;8606:21;:::i;:::-;8599:5;8596:32;8586:60;;8642:1;8639;8632:12;8586:60;8536:116;:::o;8658:137::-;8712:5;8743:6;8737:13;8728:22;;8759:30;8783:5;8759:30;:::i;:::-;8658:137;;;;:::o;8801:345::-;8868:6;8917:2;8905:9;8896:7;8892:23;8888:32;8885:119;;;8923:79;;:::i;:::-;8885:119;9043:1;9068:61;9121:7;9112:6;9101:9;9097:22;9068:61;:::i;:::-;9058:71;;9014:125;8801:345;;;;:::o;9152:169::-;9236:11;9270:6;9265:3;9258:19;9310:4;9305:3;9301:14;9286:29;;9152:169;;;;:::o;9327:178::-;9467:30;9463:1;9455:6;9451:14;9444:54;9327:178;:::o;9511:366::-;9653:3;9674:67;9738:2;9733:3;9674:67;:::i;:::-;9667:74;;9750:93;9839:3;9750:93;:::i;:::-;9868:2;9863:3;9859:12;9852:19;;9511:366;;;:::o;9883:419::-;10049:4;10087:2;10076:9;10072:18;10064:26;;10136:9;10130:4;10126:20;10122:1;10111:9;10107:17;10100:47;10164:131;10290:4;10164:131;:::i;:::-;10156:139;;9883:419;;;:::o;10308:180::-;10356:77;10353:1;10346:88;10453:4;10450:1;10443:15;10477:4;10474:1;10467:15;10494:169;10634:21;10630:1;10622:6;10618:14;10611:45;10494:169;:::o;10669:366::-;10811:3;10832:67;10896:2;10891:3;10832:67;:::i;:::-;10825:74;;10908:93;10997:3;10908:93;:::i;:::-;11026:2;11021:3;11017:12;11010:19;;10669:366;;;:::o;11041:419::-;11207:4;11245:2;11234:9;11230:18;11222:26;;11294:9;11288:4;11284:20;11280:1;11269:9;11265:17;11258:47;11322:131;11448:4;11322:131;:::i;:::-;11314:139;;11041:419;;;:::o;11466:174::-;11606:26;11602:1;11594:6;11590:14;11583:50;11466:174;:::o;11646:366::-;11788:3;11809:67;11873:2;11868:3;11809:67;:::i;:::-;11802:74;;11885:93;11974:3;11885:93;:::i;:::-;12003:2;11998:3;11994:12;11987:19;;11646:366;;;:::o;12018:419::-;12184:4;12222:2;12211:9;12207:18;12199:26;;12271:9;12265:4;12261:20;12257:1;12246:9;12242:17;12235:47;12299:131;12425:4;12299:131;:::i;:::-;12291:139;;12018:419;;;:::o;12443:332::-;12564:4;12602:2;12591:9;12587:18;12579:26;;12615:71;12683:1;12672:9;12668:17;12659:6;12615:71;:::i;:::-;12696:72;12764:2;12753:9;12749:18;12740:6;12696:72;:::i;:::-;12443:332;;;;;:::o;12781:169::-;12921:21;12917:1;12909:6;12905:14;12898:45;12781:169;:::o;12956:366::-;13098:3;13119:67;13183:2;13178:3;13119:67;:::i;:::-;13112:74;;13195:93;13284:3;13195:93;:::i;:::-;13313:2;13308:3;13304:12;13297:19;;12956:366;;;:::o;13328:419::-;13494:4;13532:2;13521:9;13517:18;13509:26;;13581:9;13575:4;13571:20;13567:1;13556:9;13552:17;13545:47;13609:131;13735:4;13609:131;:::i;:::-;13601:139;;13328:419;;;:::o;13753:442::-;13902:4;13940:2;13929:9;13925:18;13917:26;;13953:71;14021:1;14010:9;14006:17;13997:6;13953:71;:::i;:::-;14034:72;14102:2;14091:9;14087:18;14078:6;14034:72;:::i;:::-;14116;14184:2;14173:9;14169:18;14160:6;14116:72;:::i;:::-;13753:442;;;;;;:::o;14201:180::-;14249:77;14246:1;14239:88;14346:4;14343:1;14336:15;14370:4;14367:1;14360:15;14387:410;14427:7;14450:20;14468:1;14450:20;:::i;:::-;14445:25;;14484:20;14502:1;14484:20;:::i;:::-;14479:25;;14539:1;14536;14532:9;14561:30;14579:11;14561:30;:::i;:::-;14550:41;;14740:1;14731:7;14727:15;14724:1;14721:22;14701:1;14694:9;14674:83;14651:139;;14770:18;;:::i;:::-;14651:139;14435:362;14387:410;;;;:::o;14803:180::-;14851:77;14848:1;14841:88;14948:4;14945:1;14938:15;14972:4;14969:1;14962:15;14989:185;15029:1;15046:20;15064:1;15046:20;:::i;:::-;15041:25;;15080:20;15098:1;15080:20;:::i;:::-;15075:25;;15119:1;15109:35;;15124:18;;:::i;:::-;15109:35;15166:1;15163;15159:9;15154:14;;14989:185;;;;:::o;15180:191::-;15220:3;15239:20;15257:1;15239:20;:::i;:::-;15234:25;;15273:20;15291:1;15273:20;:::i;:::-;15268:25;;15316:1;15313;15309:9;15302:16;;15337:3;15334:1;15331:10;15328:36;;;15344:18;;:::i;:::-;15328:36;15180:191;;;;:::o;15377:442::-;15526:4;15564:2;15553:9;15549:18;15541:26;;15577:71;15645:1;15634:9;15630:17;15621:6;15577:71;:::i;:::-;15658:72;15726:2;15715:9;15711:18;15702:6;15658:72;:::i;:::-;15740;15808:2;15797:9;15793:18;15784:6;15740:72;:::i;:::-;15377:442;;;;;;:::o" + }, + "methodIdentifiers": { + "claimRefund()": "b5545a3c", + "initialize(address,address,address)": "c0c53b8b", + "keyPurchasePrice(address,address,address,bytes)": "221c1fd1", + "onKeyExtend(uint256,address,uint256,uint256)": "016b9680", + "onKeyPurchase(uint256,address,address,address,bytes,uint256,uint256)": "5e895f29", + "oracle()": "7dc0d1d0", + "refunds(address,uint256)": "3436247b", + "setOracle(address)": "7adbf973", + "setUnlockPrime(address)": "8295d3be", + "setWeth(address)": "b8d1452f", + "unlockPrime()": "db7d7f8d", + "weth()": "3fc8cef3" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_unlockPrime\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_weth\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"OracleSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"RefundPaid\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"RefundSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"UnlockPrimeSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"WethSet\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"claimRefund\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_unlockPrime\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_weth\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"keyPurchasePrice\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minKeyPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onKeyExtend\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"onKeyPurchase\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"refunds\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oracle\",\"type\":\"address\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_unlockPrime\",\"type\":\"address\"}],\"name\":\"setUnlockPrime\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_weth\",\"type\":\"address\"}],\"name\":\"setWeth\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unlockPrime\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"weth\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/UnlockPrimeHookWithRecipientAndFallback.sol\":\"UnlockPrimeHookWithRecipientAndFallback\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@unlock-protocol/contracts/dist/PublicLock/IPublicLockV13.sol\":{\"keccak256\":\"0xcc5a3a09c6135b624989959c1e2ce86299da964b8c2bba7c51ffa6988c70e05d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b0e4a97444bd5a3fee04a52d68cc9f7833795257d9e2dfac6d8f96b6256c3b76\",\"dweb:/ipfs/QmZENp6w6ax9UiiyZ28oYBUdGCUNihoXbDT64igtFDTQGE\"]},\"contracts/UnlockPrimeHookWithRecipientAndFallback.sol\":{\"keccak256\":\"0xd3a8476f78157a937b882d3e6ed4a4d9b19c891528df36bb40a5fdac46ab5bd4\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://f0dec8ad7dd674d0d6a4678ce2997b7221f48c8e083eaa2ecf876f02236a5810\",\"dweb:/ipfs/Qmeu3B7vkaiLXcPVqAqYyRABwSeXWZPkyPTj8Mm2s5Ltjd\"]}},\"version\":1}" + } + } + } + } +} \ No newline at end of file diff --git a/ignition/deployments/chain-8453/deployed_addresses.json b/ignition/deployments/chain-8453/deployed_addresses.json index aa84f64..d101384 100644 --- a/ignition/deployments/chain-8453/deployed_addresses.json +++ b/ignition/deployments/chain-8453/deployed_addresses.json @@ -5,5 +5,6 @@ "UnlockPrimeHookModule#UnlockPrimeHook": "0x3Ad44f5a1F61d88775d4E4660b821DFC05887A1F", "UnlockPrimeTokenURIHook#UnlockPrimeTokenURIHook": "0x58cFCddC4B9254633B864E9d71e3217e464BeEcB", "UnlockPrimeHookWithRecipientModule#UnlockPrimeHookWithRecipient": "0x3Ad44f5a1F61d88775d4E4660b821DFC05887A1F", - "UpgradeModule#UnlockPrimeHookWithRecipient": "0x3aB34e2885c29B6D91C881e3107641849e7e627E" + "UpgradeModule#UnlockPrimeHookWithRecipient": "0x3aB34e2885c29B6D91C881e3107641849e7e627E", + "UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback": "0xb77fb0a2543F889e55fb794cF649C7D12856af17" } diff --git a/ignition/deployments/chain-8453/journal.jsonl b/ignition/deployments/chain-8453/journal.jsonl index f002424..9a3ccd5 100644 --- a/ignition/deployments/chain-8453/journal.jsonl +++ b/ignition/deployments/chain-8453/journal.jsonl @@ -29,4 +29,14 @@ {"futureId":"UpgradeModule#ProxyModule~ProxyAdmin.upgradeAndCall","networkInteraction":{"data":"0x9623609d0000000000000000000000003ad44f5a1f61d88775d4e4660b821dfc05887a1f0000000000000000000000003ab34e2885c29b6d91c881e3107641849e7e627e00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","id":1,"to":"0x16C034060ED720D92608905E149b9AA5F71feb75","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} {"futureId":"UpgradeModule#ProxyModule~ProxyAdmin.upgradeAndCall","networkInteractionId":1,"nonce":631,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"22658070"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000"}},"hash":"0x2e7658f3e05de29a6d2b7011c8581c0319ef30e9f5cf7f194f232aaf79bc0b42"},"type":"TRANSACTION_SEND"} {"futureId":"UpgradeModule#ProxyModule~ProxyAdmin.upgradeAndCall","hash":"0x2e7658f3e05de29a6d2b7011c8581c0319ef30e9f5cf7f194f232aaf79bc0b42","networkInteractionId":1,"receipt":{"blockHash":"0x5ca8dcea9febe0a73e55fa4a4dd3ddb9ab26e6f6308c6a9be05230bd6cd58004","blockNumber":21118997,"logs":[{"address":"0x3Ad44f5a1F61d88775d4E4660b821DFC05887A1F","data":"0x","logIndex":211,"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x0000000000000000000000003ab34e2885c29b6d91c881e3107641849e7e627e"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} -{"futureId":"UpgradeModule#ProxyModule~ProxyAdmin.upgradeAndCall","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} \ No newline at end of file +{"futureId":"UpgradeModule#ProxyModule~ProxyAdmin.upgradeAndCall","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} +{"artifactId":"UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback","constructorArgs":["0x01D8412eE898A74cE44187F4877Bf9303E3C16e5","0xfa7AC1c24339f629826C419eC95961Df58563438","0x4200000000000000000000000000000000000006"],"contractName":"UnlockPrimeHookWithRecipientAndFallback","dependencies":[],"from":"0x81dd955d02d337db81ba6c9c5f6213e647672052","futureId":"UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback","networkInteraction":{"data":"0x608060405234801561001057600080fd5b50604051611f0f380380611f0f833981810160405281019061003291906102a9565b61004383838361004b60201b60201c565b5050506103a3565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146100da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d190610359565b60405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5836040516101499190610388565b60405180910390a181600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa826040516101c19190610388565b60405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf9816040516102399190610388565b60405180910390a1505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006102768261024b565b9050919050565b6102868161026b565b811461029157600080fd5b50565b6000815190506102a38161027d565b92915050565b6000806000606084860312156102c2576102c1610246565b5b60006102d086828701610294565b93505060206102e186828701610294565b92505060406102f286828701610294565b9150509250925092565b600082825260208201905092915050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b60006103436013836102fc565b915061034e8261030d565b602082019050919050565b6000602082019050818103600083015261037281610336565b9050919050565b6103828161026b565b82525050565b600060208201905061039d6000830184610379565b92915050565b611b5d806103b26000396000f3fe6080604052600436106100ab5760003560e01c80637dc0d1d0116100645780637dc0d1d0146101d75780638295d3be14610202578063b5545a3c1461022b578063b8d1452f14610242578063c0c53b8b1461026b578063db7d7f8d14610294576100b2565b8063016b9680146100b7578063221c1fd1146100e05780633436247b1461011d5780633fc8cef31461015a5780635e895f29146101855780637adbf973146101ae576100b2565b366100b257005b600080fd5b3480156100c357600080fd5b506100de60048036038101906100d99190611388565b6102bf565b005b3480156100ec57600080fd5b5061010760048036038101906101029190611454565b610410565b60405161011491906114eb565b60405180910390f35b34801561012957600080fd5b50610144600480360381019061013f9190611506565b61048c565b60405161015191906114eb565b60405180910390f35b34801561016657600080fd5b5061016f6104b4565b60405161017c9190611555565b60405180910390f35b34801561019157600080fd5b506101ac60048036038101906101a79190611570565b6104da565b005b3480156101ba57600080fd5b506101d560048036038101906101d09190611632565b6105b0565b005b3480156101e357600080fd5b506101ec610704565b6040516101f99190611555565b60405180910390f35b34801561020e57600080fd5b5061022960048036038101906102249190611632565b61072a565b005b34801561023757600080fd5b5061024061087d565b005b34801561024e57600080fd5b5061026960048036038101906102649190611632565b610acf565b005b34801561027757600080fd5b50610292600480360381019061028d919061165f565b610c23565b005b3480156102a057600080fd5b506102a9610e1e565b6040516102b69190611555565b60405180910390f35b600033905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610409576104088173ffffffffffffffffffffffffffffffffffffffff16636352211e876040518263ffffffff1660e01b815260040161035391906114eb565b602060405180830381865afa158015610370573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039491906116c7565b8273ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104039190611709565b610e42565b5b5050505050565b60003373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561045d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104819190611709565b905095945050505050565b600360205281600052604060002081600281106104a857600080fd5b01600091509150505481565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036105a6576105a5863373ffffffffffffffffffffffffffffffffffffffff166310e569736040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a09190611709565b610e42565b5b5050505050505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016106099190611555565b602060405180830381865afa158015610626573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061064a919061176e565b610689576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610680906117f8565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa816040516106f99190611555565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b81526004016107839190611555565b602060405180830381865afa1580156107a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c4919061176e565b610803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fa906117f8565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5816040516108729190611555565b60405180910390a150565b6000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002806020026040519081016040528092919082600280156108f5576020028201915b8154815260200190600101908083116108e1575b5050505050905060008160006002811061091257610911611818565b5b602002015111610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90611893565b60405180910390fd5b428160016002811061096c5761096b611818565b5b6020020151106109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a8906118ff565b60405180910390fd5b6040518060400160405280600060ff168152602001600060ff16815250600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020906002610a1b929190611248565b503373ffffffffffffffffffffffffffffffffffffffff166108fc82600060028110610a4a57610a49611818565b5b60200201519081150290604051600060405180830381858888f19350505050158015610a7a573d6000803e3d6000fd5b507f1fe70b87853839959e74387a76c2713282f77a4a0656bf8689058a0eea2891e03382600060028110610ab157610ab0611818565b5b6020020151604051610ac492919061191f565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663aae4b8f7336040518263ffffffff1660e01b8152600401610b289190611555565b602060405180830381865afa158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b69919061176e565b610ba8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b9f906117f8565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610c189190611555565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca990611994565b60405180910390fd5b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c583604051610d219190611555565b60405180910390a181600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa82604051610d999190611555565b60405180910390a180600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf981604051610e119190611555565b60405180910390a1505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d76ea586040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ed491906116c7565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c1e553e78385600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518463ffffffff1660e01b8152600401610f59939291906119b4565b6020604051808303816000875af1158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190611709565b90506000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060028110610ff257610ff1611818565b5b015490506000600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061104a57611049611818565b5b015490506000600a600b8561105f9190611a1a565b6110699190611a8b565b90506000621275004261107c9190611abc565b9050428310156110f9576040518060400160405280838661109d9190611abc565b815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209060026110f392919061128d565b5061115d565b604051806040016040528083815260200182815250600360008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090600261115b92919061128d565b505b7fa1d590fd2e594a4a50983c420b530fcf5ffe210e5203b51d6c022cb0d9ac4f8088600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600281106111d1576111d0611818565b5b0154600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060016002811061122557611224611818565b5b015460405161123693929190611af0565b60405180910390a15050505050505050565b826002810192821561127c579160200282015b8281111561127b578251829060ff1690559160200191906001019061125b565b5b50905061128991906112cd565b5090565b82600281019282156112bc579160200282015b828111156112bb5782518255916020019190600101906112a0565b5b5090506112c991906112cd565b5090565b5b808211156112e65760008160009055506001016112ce565b5090565b600080fd5b600080fd5b6000819050919050565b611307816112f4565b811461131257600080fd5b50565b600081359050611324816112fe565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006113558261132a565b9050919050565b6113658161134a565b811461137057600080fd5b50565b6000813590506113828161135c565b92915050565b600080600080608085870312156113a2576113a16112ea565b5b60006113b087828801611315565b94505060206113c187828801611373565b93505060406113d287828801611315565b92505060606113e387828801611315565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112611414576114136113ef565b5b8235905067ffffffffffffffff811115611431576114306113f4565b5b60208301915083600182028301111561144d5761144c6113f9565b5b9250929050565b6000806000806000608086880312156114705761146f6112ea565b5b600061147e88828901611373565b955050602061148f88828901611373565b94505060406114a088828901611373565b935050606086013567ffffffffffffffff8111156114c1576114c06112ef565b5b6114cd888289016113fe565b92509250509295509295909350565b6114e5816112f4565b82525050565b600060208201905061150060008301846114dc565b92915050565b6000806040838503121561151d5761151c6112ea565b5b600061152b85828601611373565b925050602061153c85828601611315565b9150509250929050565b61154f8161134a565b82525050565b600060208201905061156a6000830184611546565b92915050565b60008060008060008060008060e0898b0312156115905761158f6112ea565b5b600061159e8b828c01611315565b98505060206115af8b828c01611373565b97505060406115c08b828c01611373565b96505060606115d18b828c01611373565b955050608089013567ffffffffffffffff8111156115f2576115f16112ef565b5b6115fe8b828c016113fe565b945094505060a06116118b828c01611315565b92505060c06116228b828c01611315565b9150509295985092959890939650565b600060208284031215611648576116476112ea565b5b600061165684828501611373565b91505092915050565b600080600060608486031215611678576116776112ea565b5b600061168686828701611373565b935050602061169786828701611373565b92505060406116a886828701611373565b9150509250925092565b6000815190506116c18161135c565b92915050565b6000602082840312156116dd576116dc6112ea565b5b60006116eb848285016116b2565b91505092915050565b600081519050611703816112fe565b92915050565b60006020828403121561171f5761171e6112ea565b5b600061172d848285016116f4565b91505092915050565b60008115159050919050565b61174b81611736565b811461175657600080fd5b50565b60008151905061176881611742565b92915050565b600060208284031215611784576117836112ea565b5b600061179284828501611759565b91505092915050565b600082825260208201905092915050565b7f43616c6c6572206973206e6f742061206c6f636b206d616e6167657200000000600082015250565b60006117e2601c8361179b565b91506117ed826117ac565b602082019050919050565b60006020820190508181036000830152611811816117d5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e6f20726566756e6420617661696c61626c6500000000000000000000000000600082015250565b600061187d60138361179b565b915061188882611847565b602082019050919050565b600060208201905081810360008301526118ac81611870565b9050919050565b7f526566756e64206e6f7420617661696c61626c65207965740000000000000000600082015250565b60006118e960188361179b565b91506118f4826118b3565b602082019050919050565b60006020820190508181036000830152611918816118dc565b9050919050565b60006040820190506119346000830185611546565b61194160208301846114dc565b9392505050565b7f416c726561647920696e697469616c697a656400000000000000000000000000600082015250565b600061197e60138361179b565b915061198982611948565b602082019050919050565b600060208201905081810360008301526119ad81611971565b9050919050565b60006060820190506119c96000830186611546565b6119d660208301856114dc565b6119e36040830184611546565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000611a25826112f4565b9150611a30836112f4565b9250828202611a3e816112f4565b91508282048414831517611a5557611a546119eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000611a96826112f4565b9150611aa1836112f4565b925082611ab157611ab0611a5c565b5b828204905092915050565b6000611ac7826112f4565b9150611ad2836112f4565b9250828201905080821115611aea57611ae96119eb565b5b92915050565b6000606082019050611b056000830186611546565b611b1260208301856114dc565b611b1f60408301846114dc565b94935050505056fea264697066735822122008e09c1d2f6886a7c207324f1ad1ebde84b56354e465f1407f57b1181e5ba6a764736f6c634300081b003300000000000000000000000001d8412ee898a74ce44187f4877bf9303e3c16e5000000000000000000000000fa7ac1c24339f629826c419ec95961df585634380000000000000000000000004200000000000000000000000000000000000006","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback","networkInteractionId":1,"nonce":638,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"19413312"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000"}},"hash":"0x85b828ba2b7e496cb8cfca4243e052356ca89fd8fffcf5c860f0ac83b3c901fa"},"type":"TRANSACTION_SEND"} +{"futureId":"UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback","hash":"0x85b828ba2b7e496cb8cfca4243e052356ca89fd8fffcf5c860f0ac83b3c901fa","networkInteractionId":1,"receipt":{"blockHash":"0x0b0754ba233220b604150f15298ccdd2110ac10b88b142ae51b6953730f4a9ad","blockNumber":21505045,"contractAddress":"0xb77fb0a2543F889e55fb794cF649C7D12856af17","logs":[{"address":"0xb77fb0a2543F889e55fb794cF649C7D12856af17","data":"0x00000000000000000000000001d8412ee898a74ce44187f4877bf9303e3c16e5","logIndex":111,"topics":["0x867b5ac058251d339d708e1228ac92d445562b0685454293fed8b862f87167c5"]},{"address":"0xb77fb0a2543F889e55fb794cF649C7D12856af17","data":"0x000000000000000000000000fa7ac1c24339f629826c419ec95961df58563438","logIndex":112,"topics":["0x3f32684a32a11dabdbb8c0177de80aa3ae36a004d75210335b49e544e48cd0aa"]},{"address":"0xb77fb0a2543F889e55fb794cF649C7D12856af17","data":"0x0000000000000000000000004200000000000000000000000000000000000006","logIndex":113,"topics":["0x13a533084dcbb1cfe0dbea708ea977223c27c44d94f2fa3867a167c9cd340bf9"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback","result":{"address":"0xb77fb0a2543F889e55fb794cF649C7D12856af17","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} +{"args":["0x3Ad44f5a1F61d88775d4E4660b821DFC05887A1F","0xb77fb0a2543F889e55fb794cF649C7D12856af17","0x"],"artifactId":"ProxyModule#ProxyAdmin","contractAddress":"0x16C034060ED720D92608905E149b9AA5F71feb75","dependencies":["ProxyModule#ProxyAdmin","ProxyModule#TransparentUpgradeableProxy","UpgradeModuleWithFallback#UnlockPrimeHookWithRecipientAndFallback"],"from":"0x81dd955d02d337db81ba6c9c5f6213e647672052","functionName":"upgradeAndCall","futureId":"UpgradeModuleWithFallback#ProxyModule~ProxyAdmin.upgradeAndCall","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"UpgradeModuleWithFallback#ProxyModule~ProxyAdmin.upgradeAndCall","networkInteraction":{"data":"0x9623609d0000000000000000000000003ad44f5a1f61d88775d4e4660b821dfc05887a1f000000000000000000000000b77fb0a2543f889e55fb794cf649c7d12856af1700000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000","id":1,"to":"0x16C034060ED720D92608905E149b9AA5F71feb75","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} +{"futureId":"UpgradeModuleWithFallback#ProxyModule~ProxyAdmin.upgradeAndCall","networkInteractionId":1,"nonce":639,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"19294290"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"1000000"}},"hash":"0x121fc4ac8ce83e66bb22ce01afcd87fdc79b6cae11470cfe3cad7cbb8a0b1e36"},"type":"TRANSACTION_SEND"} +{"futureId":"UpgradeModuleWithFallback#ProxyModule~ProxyAdmin.upgradeAndCall","hash":"0x121fc4ac8ce83e66bb22ce01afcd87fdc79b6cae11470cfe3cad7cbb8a0b1e36","networkInteractionId":1,"receipt":{"blockHash":"0x02f46ba464a98316041494fe0ca1f14dd681722cd4c6fa4a8be17cd5e1cf9bb2","blockNumber":21505051,"logs":[{"address":"0x3Ad44f5a1F61d88775d4E4660b821DFC05887A1F","data":"0x","logIndex":310,"topics":["0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b","0x000000000000000000000000b77fb0a2543f889e55fb794cf649c7d12856af17"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} +{"futureId":"UpgradeModuleWithFallback#ProxyModule~ProxyAdmin.upgradeAndCall","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} \ No newline at end of file diff --git a/ignition/modules/UnlockPrimeHook.ts b/ignition/modules/UnlockPrimeHook.ts index 9bd1f97..5e6e2de 100644 --- a/ignition/modules/UnlockPrimeHook.ts +++ b/ignition/modules/UnlockPrimeHook.ts @@ -48,20 +48,3 @@ const unlockPrimeHookModule = buildModule("UnlockPrimeHookModule", (m) => { }); export default unlockPrimeHookModule; - -// // This setup uses Hardhat Ignition to manage smart contract deployments. -// // Learn more about it at https://hardhat.org/ignition - -// import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; - -// const UnlockPrimeHook = buildModule("UnlockPrimeHook", (m) => { -// const hook = m.contract("UnlockPrimeHook", [ -// "0x01D8412eE898A74cE44187F4877Bf9303E3C16e5", // Unlock Prime -// "0xfa7AC1c24339f629826C419eC95961Df58563438", // Oracle -// "0x4200000000000000000000000000000000000006", // Weth -// ]); - -// return { hook }; -// }); - -// export default UnlockPrimeHook; diff --git a/ignition/modules/UnlockPrimeHookWithRecipient.ts b/ignition/modules/UnlockPrimeHookWithRecipient.ts index 09e3758..0661e14 100644 --- a/ignition/modules/UnlockPrimeHookWithRecipient.ts +++ b/ignition/modules/UnlockPrimeHookWithRecipient.ts @@ -4,7 +4,7 @@ import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; import { proxyModule } from "./UnlockPrimeHook"; -const upgradeModule = buildModule("UpgradeModule", (m) => { +export const upgradeModule = buildModule("UpgradeModule", (m) => { const proxyAdminOwner = m.getAccount(0); const { proxyAdmin, proxy } = m.useModule(proxyModule); @@ -41,20 +41,3 @@ const unlockPrimeHookWithRecipientModule = buildModule( ); export default unlockPrimeHookWithRecipientModule; - -// // // This setup uses Hardhat Ignition to manage smart contract deployments. -// // // Learn more about it at https://hardhat.org/ignition - -// // import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; - -// // const UnlockPrimeHook = buildModule("UnlockPrimeHook", (m) => { -// // const hook = m.contract("UnlockPrimeHook", [ -// // "0x01D8412eE898A74cE44187F4877Bf9303E3C16e5", // Unlock Prime -// // "0xfa7AC1c24339f629826C419eC95961Df58563438", // Oracle -// // "0x4200000000000000000000000000000000000006", // Weth -// // ]); - -// // return { hook }; -// // }); - -// // export default UnlockPrimeHook; diff --git a/ignition/modules/UnlockPrimeHookWithRecipientAndFallback.ts b/ignition/modules/UnlockPrimeHookWithRecipientAndFallback.ts new file mode 100644 index 0000000..0856999 --- /dev/null +++ b/ignition/modules/UnlockPrimeHookWithRecipientAndFallback.ts @@ -0,0 +1,48 @@ +// This setup uses Hardhat Ignition to manage smart contract deployments. +// Learn more about it at https://hardhat.org/ignition + +import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; +import { upgradeModule as proxyModule } from "./UnlockPrimeHookWithRecipient"; + +const upgradeModule = buildModule("UpgradeModuleWithFallback", (m) => { + // Deploy new implementation contract + const UnlockPrimeHookWithRecipientAndFallback = m.contract( + "UnlockPrimeHookWithRecipientAndFallback", + [ + "0x01D8412eE898A74cE44187F4877Bf9303E3C16e5", // Unlock Prime + "0xfa7AC1c24339f629826C419eC95961Df58563438", // Oracle + "0x4200000000000000000000000000000000000006", // Weth + ] + ); + + const proxyAdminOwner = m.getAccount(0); + const { proxyAdmin, proxy } = m.useModule(proxyModule); + + m.call( + proxyAdmin, + "upgradeAndCall", + [proxy, UnlockPrimeHookWithRecipientAndFallback, "0x"], + { + from: proxyAdminOwner, + } + ); + + return { proxyAdmin, proxy }; +}); + +// const unlockPrimeHookWithRecipientAndFallbackModule = buildModule( +// "UnlockPrimeHookWithRecipientAndFallbackModule", +// (m) => { +// const { proxy, proxyAdmin } = m.useModule(upgradeModule); + +// const unlockPrimeHook = m.contractAt( +// "UnlockPrimeHookWithRecipientAndFallback", +// proxy +// ); + +// return { unlockPrimeHook, proxy, proxyAdmin }; +// } +// ); + +// export default unlockPrimeHookWithRecipientAndFallbackModule; +export default upgradeModule;