{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockERC721",
  "sourceName": "forge-std/src/mocks/MockERC721.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_approved",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_operator",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_approved",
          "type": "bool"
        }
      ],
      "name": "ApprovalForAll",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "_tokenId",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "getApproved",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name_",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "symbol_",
          "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": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "ownerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "safeTransferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bool",
          "name": "approved",
          "type": "bool"
        }
      ],
      "name": "setApprovalForAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "tokenURI",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "id",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    }
  ],
  "bytecode": "0x6080604052348015600f57600080fd5b50610f838061001f6000396000f3fe6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610a33565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610a9d565b34801561014557600080fd5b5061016f610154366004610ab0565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610ae0565b6103c6565b005b61019a6101aa366004610b0a565b6104ad565b61019a6101bd366004610b0a565b6106a6565b3480156101ce57600080fd5b5061019a6101dd366004610bf7565b610795565b3480156101ee57600080fd5b5061016f6101fd366004610ab0565b610809565b34801561020e57600080fd5b5061022261021d366004610c60565b610860565b60405190815260200161010e565b34801561023c57600080fd5b5061012c6108c3565b34801561025157600080fd5b5061019a610260366004610c7b565b6108d2565b61019a610273366004610cb7565b61093e565b34801561028457600080fd5b5061012c610293366004610ab0565b50606090565b3480156102a557600080fd5b506101026102b4366004610d33565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610d66565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610d66565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105035760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610448565b6001600160a01b03821661054d5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610448565b336001600160a01b038416148061058757506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105a857506000818152600460205260409020546001600160a01b031633145b6105e55760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161060983610db6565b90915550506001600160a01b038216600090815260036020526040812080549161063283610dcd565b9091555050600081815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106b18383836104ad565b813b15806107515750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190610de6565b6001600160e01b031916145b6107905760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156107de5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610448565b60006107ea8382610e51565b5060016107f78282610e51565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b03168061085b5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610448565b919050565b60006001600160a01b0382166108a75760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610d66565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109498484846104ad565b823b15806109d55750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610986903390899088908890600401610f10565b6020604051808303816000875af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190610de6565b6001600160e01b031916145b610a145760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b6001600160e01b031981168114610a3057600080fd5b50565b600060208284031215610a4557600080fd5b8135610a5081610a1a565b9392505050565b6000815180845260005b81811015610a7d57602081850181015186830182015201610a61565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a506020830184610a57565b600060208284031215610ac257600080fd5b5035919050565b80356001600160a01b038116811461085b57600080fd5b60008060408385031215610af357600080fd5b610afc83610ac9565b946020939093013593505050565b600080600060608486031215610b1f57600080fd5b610b2884610ac9565b9250610b3660208501610ac9565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b60008067ffffffffffffffff841115610b7857610b78610b47565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715610ba757610ba7610b47565b604052838152905080828401851015610bbf57600080fd5b83836020830137600060208583010152509392505050565b600082601f830112610be857600080fd5b610a5083833560208501610b5d565b60008060408385031215610c0a57600080fd5b823567ffffffffffffffff811115610c2157600080fd5b610c2d85828601610bd7565b925050602083013567ffffffffffffffff811115610c4a57600080fd5b610c5685828601610bd7565b9150509250929050565b600060208284031215610c7257600080fd5b610a5082610ac9565b60008060408385031215610c8e57600080fd5b610c9783610ac9565b915060208301358015158114610cac57600080fd5b809150509250929050565b60008060008060808587031215610ccd57600080fd5b610cd685610ac9565b9350610ce460208601610ac9565b925060408501359150606085013567ffffffffffffffff811115610d0757600080fd5b8501601f81018713610d1857600080fd5b610d2787823560208401610b5d565b91505092959194509250565b60008060408385031215610d4657600080fd5b610d4f83610ac9565b9150610d5d60208401610ac9565b90509250929050565b600181811c90821680610d7a57607f821691505b602082108103610d9a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610dc557610dc5610da0565b506000190190565b600060018201610ddf57610ddf610da0565b5060010190565b600060208284031215610df857600080fd5b8151610a5081610a1a565b601f82111561079057806000526020600020601f840160051c81016020851015610e2a5750805b601f840160051c820191505b81811015610e4a5760008155600101610e36565b5050505050565b815167ffffffffffffffff811115610e6b57610e6b610b47565b610e7f81610e798454610d66565b84610e03565b6020601f821160018114610eb35760008315610e9b5750848201515b600019600385901b1c1916600184901b178455610e4a565b600084815260208120601f198516915b82811015610ee35787850151825560209485019460019092019101610ec3565b5084821015610f015786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610f4390830184610a57565b969550505050505056fea2646970667358221220d4945835f0cd5029541e37565fddb056ed0dbb74db72131ce24d75794c4d72ee64736f6c634300081c0033",
  "deployedBytecode": "0x6080604052600436106100dd5760003560e01c80636352211e1161007f578063a22cb46511610059578063a22cb46514610245578063b88d4fde14610265578063c87b56dd14610278578063e985e9c51461029957600080fd5b80636352211e146101e257806370a082311461020257806395d89b411461023057600080fd5b8063095ea7b3116100bb578063095ea7b31461018757806323b872dd1461019c57806342842e0e146101af5780634cd88b76146101c257600080fd5b806301ffc9a7146100e257806306fdde0314610117578063081812fc14610139575b600080fd5b3480156100ee57600080fd5b506101026100fd366004610a33565b6102e2565b60405190151581526020015b60405180910390f35b34801561012357600080fd5b5061012c610334565b60405161010e9190610a9d565b34801561014557600080fd5b5061016f610154366004610ab0565b6000908152600460205260409020546001600160a01b031690565b6040516001600160a01b03909116815260200161010e565b61019a610195366004610ae0565b6103c6565b005b61019a6101aa366004610b0a565b6104ad565b61019a6101bd366004610b0a565b6106a6565b3480156101ce57600080fd5b5061019a6101dd366004610bf7565b610795565b3480156101ee57600080fd5b5061016f6101fd366004610ab0565b610809565b34801561020e57600080fd5b5061022261021d366004610c60565b610860565b60405190815260200161010e565b34801561023c57600080fd5b5061012c6108c3565b34801561025157600080fd5b5061019a610260366004610c7b565b6108d2565b61019a610273366004610cb7565b61093e565b34801561028457600080fd5b5061012c610293366004610ab0565b50606090565b3480156102a557600080fd5b506101026102b4366004610d33565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006301ffc9a760e01b6001600160e01b03198316148061031357506380ac58cd60e01b6001600160e01b03198316145b8061032e5750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606000805461034390610d66565b80601f016020809104026020016040519081016040528092919081815260200182805461036f90610d66565b80156103bc5780601f10610391576101008083540402835291602001916103bc565b820191906000526020600020905b81548152906001019060200180831161039f57829003601f168201915b5050505050905090565b6000818152600260205260409020546001600160a01b03163381148061040f57506001600160a01b038116600090815260056020908152604080832033845290915290205460ff165b6104515760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b60448201526064015b60405180910390fd5b60008281526004602052604080822080546001600160a01b0319166001600160a01b0387811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b6000818152600260205260409020546001600160a01b038481169116146105035760405162461bcd60e51b815260206004820152600a60248201526957524f4e475f46524f4d60b01b6044820152606401610448565b6001600160a01b03821661054d5760405162461bcd60e51b81526020600482015260116024820152701253959053125117d49150d25412515395607a1b6044820152606401610448565b336001600160a01b038416148061058757506001600160a01b038316600090815260056020908152604080832033845290915290205460ff165b806105a857506000818152600460205260409020546001600160a01b031633145b6105e55760405162461bcd60e51b815260206004820152600e60248201526d1393d517d055551213d49256915160921b6044820152606401610448565b6001600160a01b038316600090815260036020526040812080549161060983610db6565b90915550506001600160a01b038216600090815260036020526040812080549161063283610dcd565b9091555050600081815260026020908152604080832080546001600160a01b038088166001600160a01b031992831681179093556004909452828520805490911690559051849391928716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6106b18383836104ad565b813b15806107515750604051630a85bd0160e11b8082523360048301526001600160a01b03858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610721573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107459190610de6565b6001600160e01b031916145b6107905760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b505050565b60065460ff16156107de5760405162461bcd60e51b81526020600482015260136024820152721053149150511657d253925512505312569151606a1b6044820152606401610448565b60006107ea8382610e51565b5060016107f78282610e51565b50506006805460ff1916600117905550565b6000818152600260205260409020546001600160a01b03168061085b5760405162461bcd60e51b815260206004820152600a6024820152691393d517d3525395115160b21b6044820152606401610448565b919050565b60006001600160a01b0382166108a75760405162461bcd60e51b815260206004820152600c60248201526b5a45524f5f4144445245535360a01b6044820152606401610448565b506001600160a01b031660009081526003602052604090205490565b60606001805461034390610d66565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6109498484846104ad565b823b15806109d55750604051630a85bd0160e11b808252906001600160a01b0385169063150b7a0290610986903390899088908890600401610f10565b6020604051808303816000875af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190610de6565b6001600160e01b031916145b610a145760405162461bcd60e51b815260206004820152601060248201526f155394d0519157d49150d2541251539560821b6044820152606401610448565b50505050565b6001600160e01b031981168114610a3057600080fd5b50565b600060208284031215610a4557600080fd5b8135610a5081610a1a565b9392505050565b6000815180845260005b81811015610a7d57602081850181015186830182015201610a61565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000610a506020830184610a57565b600060208284031215610ac257600080fd5b5035919050565b80356001600160a01b038116811461085b57600080fd5b60008060408385031215610af357600080fd5b610afc83610ac9565b946020939093013593505050565b600080600060608486031215610b1f57600080fd5b610b2884610ac9565b9250610b3660208501610ac9565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b60008067ffffffffffffffff841115610b7857610b78610b47565b50604051601f19601f85018116603f0116810181811067ffffffffffffffff82111715610ba757610ba7610b47565b604052838152905080828401851015610bbf57600080fd5b83836020830137600060208583010152509392505050565b600082601f830112610be857600080fd5b610a5083833560208501610b5d565b60008060408385031215610c0a57600080fd5b823567ffffffffffffffff811115610c2157600080fd5b610c2d85828601610bd7565b925050602083013567ffffffffffffffff811115610c4a57600080fd5b610c5685828601610bd7565b9150509250929050565b600060208284031215610c7257600080fd5b610a5082610ac9565b60008060408385031215610c8e57600080fd5b610c9783610ac9565b915060208301358015158114610cac57600080fd5b809150509250929050565b60008060008060808587031215610ccd57600080fd5b610cd685610ac9565b9350610ce460208601610ac9565b925060408501359150606085013567ffffffffffffffff811115610d0757600080fd5b8501601f81018713610d1857600080fd5b610d2787823560208401610b5d565b91505092959194509250565b60008060408385031215610d4657600080fd5b610d4f83610ac9565b9150610d5d60208401610ac9565b90509250929050565b600181811c90821680610d7a57607f821691505b602082108103610d9a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600081610dc557610dc5610da0565b506000190190565b600060018201610ddf57610ddf610da0565b5060010190565b600060208284031215610df857600080fd5b8151610a5081610a1a565b601f82111561079057806000526020600020601f840160051c81016020851015610e2a5750805b601f840160051c820191505b81811015610e4a5760008155600101610e36565b5050505050565b815167ffffffffffffffff811115610e6b57610e6b610b47565b610e7f81610e798454610d66565b84610e03565b6020601f821160018114610eb35760008315610e9b5750848201515b600019600385901b1c1916600184901b178455610e4a565b600084815260208120601f198516915b82811015610ee35787850151825560209485019460019092019101610ec3565b5084821015610f015786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090610f4390830184610a57565b969550505050505056fea2646970667358221220d4945835f0cd5029541e37565fddb056ed0dbb74db72131ce24d75794c4d72ee64736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
