// Code generated - DO NOT EDIT.
// This file is a generated binding and any manual changes will be lost.

package plonkverifier

import (
	"errors"
	"math/big"
	"strings"

	ethereum "github.com/ethereum/go-ethereum"
	"github.com/ethereum/go-ethereum/accounts/abi"
	"github.com/ethereum/go-ethereum/accounts/abi/bind"
	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/core/types"
	"github.com/ethereum/go-ethereum/event"
)

// Reference imports to suppress errors if they are not otherwise used.
var (
	_ = errors.New
	_ = big.NewInt
	_ = strings.NewReader
	_ = ethereum.NotFound
	_ = bind.Bind
	_ = common.Big1
	_ = types.BloomLookup
	_ = event.NewSubscription
	_ = abi.ConvertType
)

// PlonkverifierMetaData contains all meta data concerning the Plonkverifier contract.
var PlonkverifierMetaData = &bind.MetaData{
	ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256[]\",\"name\":\"public_inputs\",\"type\":\"uint256[]\"}],\"name\":\"Verify\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"success\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]",
	Bin: "0x6080604052348015600e575f5ffd5b5061297d8061001c5f395ff3fe608060405234801561000f575f5ffd5b5060043610610029575f3560e01c80637e4f7a8a1461002d575b5f5ffd5b61004061003b36600461287f565b610054565b604051901515815260200160405180910390f35b5f6040516102408101610066846104f6565b6100708585610509565b61007986610558565b6100828761056e565b5f61008e86868a610708565b905061009981610a3e565b90506100a58189610aa4565b90506100b18189610b32565b5060608201517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000061010884630100000085612814565b086101c08401525061011b818587610b9d565b61012682868a610f12565b91507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018183086101a08401525061015d90506112b7565b61016686612408565b61016f86612359565b61017886611f74565b61018186611aa0565b61018a86611806565b61019386611408565b61020001519050612877565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f77726f6e67206e756d626572206f66207075626c696320696e707574730000006044820152606481fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6572726f72206d6f6420657870000000000000000000000000000000000000006044820152606481fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f6572726f72206563206f7065726174696f6e00000000000000000000000000006044820152606481fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f696e707574732061726520626967676572207468616e207200000000000000006044820152606481fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f77726f6e672070726f6f662073697a65000000000000000000000000000000006044820152606481fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f6f70656e696e677320626967676572207468616e2072000000000000000000006044820152606481fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f6572726f722070616972696e67000000000000000000000000000000000000006044820152606481fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f6572726f722076657269667900000000000000000000000000000000000000006044820152606481fd5b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f6572726f722072616e646f6d2067656e206b7a670000000000000000000000006044820152606481fd5b600281146105065761050661019f565b50565b5f5b81811015610553577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000083351115610544576105446102bc565b6020929092019160010161050b565b505050565b61036081811461056a5761056a61031b565b5050565b61018081017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000813511156105a4576105a461037a565b506101a081017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000813511156105db576105db61037a565b506101c081017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000813511156106125761061261037a565b506101e081017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000813511156106495761064961037a565b5061020081017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000813511156106805761068061037a565b5061026081017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000813511156106b7576106b761037a565b5061030081015f5b6001811015610553577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000823511156106f9576106f961037a565b602091909101906001016106bf565b5f60405161024081016467616d6d6181527f239ed22af3191cfccd323949e417667defbcb082d9f31527488e523372ea9e7a60208201527f213da3cb623029a98e0186dc8c1a3a31ee249ab93bfb68abc1103900890eccb960408201527f01fd59b61f15d097ad7701c4dc12b8739eadc1d54664773c3ed5d8104c296c2a60608201527e22ee53909feab41bb47f0e6ddb802bb6096fd2027d89c22d94b4e56e227cd060808201527f14992dea1a6515e3f8a2250e30cb9e3bad58ff44bbfdd1390bc8d0a8f2bddd0f60a08201527f1e82777c7079b474d31f9fedafca8f2d108de5c58a2df629a8af49cd424c8c2960c08201527f060081d04d187d301d4223990acab3c887713358f1705af7f53e07aca0f709dd60e08201527f16911506ad1ccf9b39db250ce7752278c8115127c4f85080c2bd153946b4a5be6101008201527f279df33b57d698efd752579ee90674a7241ecdb21c6cb35cdf8ef7c1af73160a6101208201527f202fa12c1e82de2f49dc4c5bc771b94c8495544bb0055c4c381744cc3d1d332d6101408201527f040315f3fd753e8cca89f353d096fb94fcdf9cd41973954a3dd4ec58cba79d5f6101608201527f18e0b4a84e9429c05d0fd0d304acd0f3cfa93437356c112199d4d7c0162a1c9e6101808201527f2e14e072ab351d1b3838323f75ecf9b6c08043c230423d515febd04e29336b776101a08201527f1553e1a7b6e18ba105733244604cd37d82371c3a7b0503fa4aff460870170bcf6101c08201527f0c203d7594efa49bd977084de30db24ce843e501791176c21b5beda79ceaf1366101e08201527f0c4bddeb52250b0114282b00285f224b812fc581f2b55e5c3a49472069f901f36102008201527f2fb4fbb4677318edec4b80fc8fa22ffcce4a51d5f3771e575e726e790a9f9cbe6102208201527f28518b11376dc02418849d45b1f3b0e00d3f74502d713b002b9d7293a1018d79610240820152610260810160208602808883379081019060c0808784375061030501905060208282601b820160025afa905080610a0857610a08610438565b5080519250507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182066040820152509392505050565b5f60405161024060405101636265746181528360208201526020816024601c840160025afa80610a7057610a70610438565b5080519250507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018206602082015250919050565b5f60405161024060405101606564616c7068618252602082018681526020810190506103208601600160400280828437928301929190910190506040610220870182375060208282601b850160025afa905080610b0357610b03610438565b50517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181069091529392505050565b60405161024060405101637a657461815283602082015260c0808401604083013760208160e4601c840160025afa80610b6d57610b6d610438565b50517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019006606091909101525050565b5f60405160608101516101c0820151915085610bbb81878585610c36565b5f92505f91505b85821015610c2c577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001853582510992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018385086020958601959094506001929092019101610bc2565b5050509392505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f30644e427ce32d4886b01bfe313ba1dba6db8b2045d128178a7164500e0a6c1183096001855f5b86811015610d24577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103860882527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f0c9fabc7845d50d2852e2a0371c6441f145e0db82e8326961c25f1e3e32b045b8409925060209190910190600101610c7f565b50610d30818789610de8565b5060019050855f5b86811015610dde577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001868551090982526020820191507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f0c9fabc7845d50d2852e2a0371c6441f145e0db82e8326961c25f1e3e32b045b84099250600101610d38565b5050505050505050565b600183525f5f5b83811015610e3d5781850151828401517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001818309905060208401935080848801525050600181019050610def565b506020810382019150808401935050610e7e6020840160027f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001038551612814565b5f5b83811015610f0b5760208503945082517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018651840984527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018184097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090940193925050600101610e80565b5050505050565b5f60405160608101516101c0820151915061032084015f5f610f3a89602085013585356110be565b9150610f4d8962a653508a018787610f83565b90507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018082840987089998505050505050505050565b5f610faf85857f0c9fabc7845d50d2852e2a0371c6441f145e0db82e8326961c25f1e3e32b045b612814565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001817f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000103840894507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f30644e427ce32d4886b01bfe313ba1dba6db8b2045d128178a7164500e0a6c1182099050611068867f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff87612814565b94507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000185820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018482099695505050505050565b5f83525f602084015280604084015250806060830152505f6080820153603060818201535f60828201536042608382015360536084820153604260858201536032608682015360326087820153602d608882015360506089820153606c608a820153606f608b820153606e608c820153606b608d820153600b608e8201535f602082608f8460025afa8061115457611154610438565b8251600160208501536042602185015360536022850153604260238501536032602485015360326025850153602d602685015360506027850153606c6028850153606f6029850153606e602a850153606b602b850153600b602c850153602084602d8660025afa9150816111ca576111ca610438565b8351186020840152600260408401536042604184015360536042840153604260438401536032604484015360326045840153602d604684015360506047840153606c6048840153606f6049840153606e604a840153606b604b840153600b604c84015360208301602081602d8360025afa9150508061124b5761124b610438565b507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017001000000000000000000000000000000008351099050602082015160801c7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018183089392505050565b604051610240604051016101c08201517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000010360608501510861133d837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff83612814565b90507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f30644e427ce32d4886b01bfe313ba1dba6db8b2045d128178a7164500e0a6c11820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282098451935091507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001905082820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018282099050806080840152505050565b60405161024081016101608201518152610180820151602082015261028083013560408201526102a08301356060820152610220830135608082015261024083013560a08201526102c083013560c08201526102e083013560e082015260608201516101008201526101e08201516101208201526020816101408360025afa8061149457611494610497565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182510690508160408101925061028085013581526102a085013560208201526114e483836102c088018461277b565b61016084016114f9848461022089018461277b565b610140850161150d846102608901836127c2565b7f1fa4be93b5e7f7e674d5059b63554fab99638b304ed8310e9fa44c281ac9b03b85527f1a01ae7fac6228e39d3cb5a5e71fd31160f3241e79a5f48ffb3737e6c389b7216020860152805160408087019182529095908160608160075afa91508161157a5761157a610438565b60208101915081517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470382526115b286828586612672565b5050836040850194506115cf8560608801516102808a0184612709565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000017f0c9fabc7845d50d2852e2a0371c6441f145e0db82e8326961c25f1e3e32b045b60608801510995507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001868509935061164f85856102c08a018461277b565b61165b85828485612672565b50602082810180517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd470381528251865291810151908501527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c260408501527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed60608501527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b60808501527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa60a0850152905160c0840152805160e08401527f22f1acbb03c4508760c2430af35865e7cdf9f3eb1224504fdcc3708ddb954a486101008401527f2a344fad01c2ed0ed73142ae1752429eaea515c6f3f6b941103cc21c2308e1cb6101208401527f159f15b842ba9c8449aa3268f981010d4c7142e5193473d80b464e964845c3f86101408401527f0efd30ac7b6f8d0d3ccbc2207587c2acbad1532dc0293f0d034cf8258cd428b3610160840152925061055390508160405160205f6101808460085afa806117f8576117f86103d9565b505f51610200919091015250565b6040516102406040510160208101604082016101e084015180610160860160e0870151815261010087015161018088015261012087015161014088015261185186835f8b018461277b565b611864826101808a016101408a016127c2565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018383099150611899868360408b018461277b565b6118ac826101a08a016101408a016127c2565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183830991506118e1868360808b018461277b565b6118f4826101c08a016101408a016127c2565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183830991507f239ed22af3191cfccd323949e417667defbcb082d9f31527488e523372ea9e7a86527f213da3cb623029a98e0186dc8c1a3a31ee249ab93bfb68abc1103900890eccb9855261196c84838884612734565b61197f826101e08a016101408a016127c2565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183830991507f01fd59b61f15d097ad7701c4dc12b8739eadc1d54664773c3ed5d8104c296c2a86527e22ee53909feab41bb47f0e6ddb802bb6096fd2027d89c22d94b4e56e227cd085526119f684838884612734565b611a09826102008a016101408a016127c2565b61030088017f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184840992507f2fb4fbb4677318edec4b80fc8fa22ffcce4a51d5f3771e575e726e790a9f9cbe87527f28518b11376dc02418849d45b1f3b0e00d3f74502d713b002b9d7293a1018d798652611a8685848985612734565b611a9583826101408b016127c2565b505050505050505050565b6040516467616d6d616102408201908152606082015161026083015260e08201516102808301526101008201516102a083015260c0836102c08401377f239ed22af3191cfccd323949e417667defbcb082d9f31527488e523372ea9e7a6101408201527f213da3cb623029a98e0186dc8c1a3a31ee249ab93bfb68abc1103900890eccb96101608201527f01fd59b61f15d097ad7701c4dc12b8739eadc1d54664773c3ed5d8104c296c2a610180808301919091527e22ee53909feab41bb47f0e6ddb802bb6096fd2027d89c22d94b4e56e227cd06101a0808401919091527f2fb4fbb4677318edec4b80fc8fa22ffcce4a51d5f3771e575e726e790a9f9cbe6101c0808501919091527f28518b11376dc02418849d45b1f3b0e00d3f74502d713b002b9d7293a1018d796101e0808601919091526101208601516102008087019190915293870135610220860152918601356102408501528501356102608401528401356102808301528301356102a08201526102c081016103008401602081833750610260840135602091820152601b906102e5906101e085018285850160025afa9250505080611c5557611c55610438565b506101e00180517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000019006905250565b604051610240604051017f060081d04d187d301d4223990acab3c887713358f1705af7f53e07aca0f709dd81527f16911506ad1ccf9b39db250ce7752278c8115127c4f85080c2bd153946b4a5be6020820152611cee604082016101808501358360e086016126de565b7f279df33b57d698efd752579ee90674a7241ecdb21c6cb35cdf8ef7c1af73160a81527f202fa12c1e82de2f49dc4c5bc771b94c8495544bb0055c4c381744cc3d1d332d6020820152611d4e604082016101a08501358360e08601612734565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016101a0840135610180850135097f040315f3fd753e8cca89f353d096fb94fcdf9cd41973954a3dd4ec58cba79d5f82527f18e0b4a84e9429c05d0fd0d304acd0f3cfa93437356c112199d4d7c0162a1c9e6020830152611dd760408301828460e08701612734565b507f2e14e072ab351d1b3838323f75ecf9b6c08043c230423d515febd04e29336b7781527f1553e1a7b6e18ba105733244604cd37d82371c3a7b0503fa4aff460870170bcf6020820152611e38604082016101c08501358360e08601612734565b7f0c203d7594efa49bd977084de30db24ce843e501791176c21b5beda79ceaf13681527f0c4bddeb52250b0114282b00285f224b812fc581f2b55e5c3a49472069f901f36020820152611e93604082018260e0850180612672565b610300830161032084015f5b6001811015611edf578135845260208201356020850152611ec96040850184358660e08901612734565b6020929092019160409190910190600101611e9f565b5050507f14992dea1a6515e3f8a2250e30cb9e3bad58ff44bbfdd1390bc8d0a8f2bddd0f81527f1e82777c7079b474d31f9fedafca8f2d108de5c58a2df629a8af49cd424c8c296020820152611f3d60408201858360e08601612734565b61022083013581526102408301356020820152611f6260408201868360e08601612734565b610f0b8160a0840160e0850180612672565b6040516020810151604082015160608301515f8401517f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000184610260880135097f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016101e088013586097f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610180890135820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000185820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000161020089013587097f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016101a08a0135820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000186820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018284097f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000185820990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001600580097f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878a0998507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016101808c01358a0894507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000188860894507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160058a0993507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016101a08c0135850893507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000188850893507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001818a099250507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016101c08b0135830891507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187830891507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000183850997507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018289097f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001908103985085890997507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160808a01518908975061234d88828c611c84565b50505050505050505050565b60405160026301000000016102406040510161237a81836060860151612814565b915061238f8183610140870160a08701612709565b6123a281610100860160a08601806126a8565b6123b1818360a08601806126de565b6123c38160c0860160a08601806126a8565b6123da816101c085015160a0860160a087016126de565b505060c00180517f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4703905250565b6040515f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160208301516101e08501350990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016040830151820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610180840135820890505f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160208401516102008601350990507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016040840151820890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016101a0850135820890505f7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160408501516101c08701350890507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000182840992507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018184099250507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000015f840151830991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001610260850135830991507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000016101a0840151830860808401519092507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000190810391508183087f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001036101209390930192909252505050565b8151845260208201516020850152825160408501526020830151606085015260408160808660065afa80610f0b57610f0b61025d565b8151845260208201516020850152823560408501526020830135606085015260408160808660065afa80610f0b57610f0b61025d565b815184526020820151602085015282604085015260408160608660075afa80610f0b57610f0b61025d565b813584526020820135602085015282604085015260408160608660075afa80610f0b57610f0b61025d565b815184526020820151602085015282604085015260408460608660075afa815160408601526020820151606086015260408260808760065afa1680610f0b57610f0b61025d565b813584526020820135602085015282604085015260408460608660075afa815160408601526020820151606086015260408260808760065afa1680610f0b57610f0b61025d565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001838335097f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000181835108825250505050565b602083526020808401526020604084015280606084015250806080830152507f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160a08201525f60208260c08460055afa80612871576128716101fe565b50505190565b949350505050565b5f5f5f5f60408587031215612892575f5ffd5b843567ffffffffffffffff8111156128a8575f5ffd5b8501601f810187136128b8575f5ffd5b803567ffffffffffffffff8111156128ce575f5ffd5b8760208284010111156128df575f5ffd5b60209182019550935085013567ffffffffffffffff8111156128ff575f5ffd5b8501601f8101871361290f575f5ffd5b803567ffffffffffffffff811115612925575f5ffd5b8760208260051b8401011115612939575f5ffd5b94979396506020019450505056fea264697066735822122068e6dc700a5f4ea0fdf8674beefcce8861fcc8b1b6bd3d7c5cc0326a0fad583964736f6c634300081c0033",
}

// PlonkverifierABI is the input ABI used to generate the binding from.
// Deprecated: Use PlonkverifierMetaData.ABI instead.
var PlonkverifierABI = PlonkverifierMetaData.ABI

// PlonkverifierBin is the compiled bytecode used for deploying new contracts.
// Deprecated: Use PlonkverifierMetaData.Bin instead.
var PlonkverifierBin = PlonkverifierMetaData.Bin

// DeployPlonkverifier deploys a new Ethereum contract, binding an instance of Plonkverifier to it.
func DeployPlonkverifier(auth *bind.TransactOpts, backend bind.ContractBackend) (common.Address, *types.Transaction, *Plonkverifier, error) {
	parsed, err := PlonkverifierMetaData.GetAbi()
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	if parsed == nil {
		return common.Address{}, nil, nil, errors.New("GetABI returned nil")
	}

	address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(PlonkverifierBin), backend)
	if err != nil {
		return common.Address{}, nil, nil, err
	}
	return address, tx, &Plonkverifier{PlonkverifierCaller: PlonkverifierCaller{contract: contract}, PlonkverifierTransactor: PlonkverifierTransactor{contract: contract}, PlonkverifierFilterer: PlonkverifierFilterer{contract: contract}}, nil
}

// Plonkverifier is an auto generated Go binding around an Ethereum contract.
type Plonkverifier struct {
	PlonkverifierCaller     // Read-only binding to the contract
	PlonkverifierTransactor // Write-only binding to the contract
	PlonkverifierFilterer   // Log filterer for contract events
}

// PlonkverifierCaller is an auto generated read-only Go binding around an Ethereum contract.
type PlonkverifierCaller struct {
	contract *bind.BoundContract // Generic contract wrapper for the low level calls
}

// PlonkverifierTransactor is an auto generated write-only Go binding around an Ethereum contract.
type PlonkverifierTransactor struct {
	contract *bind.BoundContract // Generic contract wrapper for the low level calls
}

// PlonkverifierFilterer is an auto generated log filtering Go binding around an Ethereum contract events.
type PlonkverifierFilterer struct {
	contract *bind.BoundContract // Generic contract wrapper for the low level calls
}

// PlonkverifierSession is an auto generated Go binding around an Ethereum contract,
// with pre-set call and transact options.
type PlonkverifierSession struct {
	Contract     *Plonkverifier    // Generic contract binding to set the session for
	CallOpts     bind.CallOpts     // Call options to use throughout this session
	TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session
}

// PlonkverifierCallerSession is an auto generated read-only Go binding around an Ethereum contract,
// with pre-set call options.
type PlonkverifierCallerSession struct {
	Contract *PlonkverifierCaller // Generic contract caller binding to set the session for
	CallOpts bind.CallOpts        // Call options to use throughout this session
}

// PlonkverifierTransactorSession is an auto generated write-only Go binding around an Ethereum contract,
// with pre-set transact options.
type PlonkverifierTransactorSession struct {
	Contract     *PlonkverifierTransactor // Generic contract transactor binding to set the session for
	TransactOpts bind.TransactOpts        // Transaction auth options to use throughout this session
}

// PlonkverifierRaw is an auto generated low-level Go binding around an Ethereum contract.
type PlonkverifierRaw struct {
	Contract *Plonkverifier // Generic contract binding to access the raw methods on
}

// PlonkverifierCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
type PlonkverifierCallerRaw struct {
	Contract *PlonkverifierCaller // Generic read-only contract binding to access the raw methods on
}

// PlonkverifierTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
type PlonkverifierTransactorRaw struct {
	Contract *PlonkverifierTransactor // Generic write-only contract binding to access the raw methods on
}

// NewPlonkverifier creates a new instance of Plonkverifier, bound to a specific deployed contract.
func NewPlonkverifier(address common.Address, backend bind.ContractBackend) (*Plonkverifier, error) {
	contract, err := bindPlonkverifier(address, backend, backend, backend)
	if err != nil {
		return nil, err
	}
	return &Plonkverifier{PlonkverifierCaller: PlonkverifierCaller{contract: contract}, PlonkverifierTransactor: PlonkverifierTransactor{contract: contract}, PlonkverifierFilterer: PlonkverifierFilterer{contract: contract}}, nil
}

// NewPlonkverifierCaller creates a new read-only instance of Plonkverifier, bound to a specific deployed contract.
func NewPlonkverifierCaller(address common.Address, caller bind.ContractCaller) (*PlonkverifierCaller, error) {
	contract, err := bindPlonkverifier(address, caller, nil, nil)
	if err != nil {
		return nil, err
	}
	return &PlonkverifierCaller{contract: contract}, nil
}

// NewPlonkverifierTransactor creates a new write-only instance of Plonkverifier, bound to a specific deployed contract.
func NewPlonkverifierTransactor(address common.Address, transactor bind.ContractTransactor) (*PlonkverifierTransactor, error) {
	contract, err := bindPlonkverifier(address, nil, transactor, nil)
	if err != nil {
		return nil, err
	}
	return &PlonkverifierTransactor{contract: contract}, nil
}

// NewPlonkverifierFilterer creates a new log filterer instance of Plonkverifier, bound to a specific deployed contract.
func NewPlonkverifierFilterer(address common.Address, filterer bind.ContractFilterer) (*PlonkverifierFilterer, error) {
	contract, err := bindPlonkverifier(address, nil, nil, filterer)
	if err != nil {
		return nil, err
	}
	return &PlonkverifierFilterer{contract: contract}, nil
}

// bindPlonkverifier binds a generic wrapper to an already deployed contract.
func bindPlonkverifier(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
	parsed, err := PlonkverifierMetaData.GetAbi()
	if err != nil {
		return nil, err
	}
	return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil
}

// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_Plonkverifier *PlonkverifierRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Plonkverifier.Contract.PlonkverifierCaller.contract.Call(opts, result, method, params...)
}

// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_Plonkverifier *PlonkverifierRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Plonkverifier.Contract.PlonkverifierTransactor.contract.Transfer(opts)
}

// Transact invokes the (paid) contract method with params as input values.
func (_Plonkverifier *PlonkverifierRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Plonkverifier.Contract.PlonkverifierTransactor.contract.Transact(opts, method, params...)
}

// Call invokes the (constant) contract method with params as input values and
// sets the output to result. The result type might be a single field for simple
// returns, a slice of interfaces for anonymous returns and a struct for named
// returns.
func (_Plonkverifier *PlonkverifierCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error {
	return _Plonkverifier.Contract.contract.Call(opts, result, method, params...)
}

// Transfer initiates a plain transaction to move funds to the contract, calling
// its default method if one is available.
func (_Plonkverifier *PlonkverifierTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
	return _Plonkverifier.Contract.contract.Transfer(opts)
}

// Transact invokes the (paid) contract method with params as input values.
func (_Plonkverifier *PlonkverifierTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
	return _Plonkverifier.Contract.contract.Transact(opts, method, params...)
}

// Verify is a free data retrieval call binding the contract method 0x7e4f7a8a.
//
// Solidity: function Verify(bytes proof, uint256[] public_inputs) view returns(bool success)
func (_Plonkverifier *PlonkverifierCaller) Verify(opts *bind.CallOpts, proof []byte, public_inputs []*big.Int) (bool, error) {
	var out []interface{}
	err := _Plonkverifier.contract.Call(opts, &out, "Verify", proof, public_inputs)

	if err != nil {
		return *new(bool), err
	}

	out0 := *abi.ConvertType(out[0], new(bool)).(*bool)

	return out0, err

}

// Verify is a free data retrieval call binding the contract method 0x7e4f7a8a.
//
// Solidity: function Verify(bytes proof, uint256[] public_inputs) view returns(bool success)
func (_Plonkverifier *PlonkverifierSession) Verify(proof []byte, public_inputs []*big.Int) (bool, error) {
	return _Plonkverifier.Contract.Verify(&_Plonkverifier.CallOpts, proof, public_inputs)
}

// Verify is a free data retrieval call binding the contract method 0x7e4f7a8a.
//
// Solidity: function Verify(bytes proof, uint256[] public_inputs) view returns(bool success)
func (_Plonkverifier *PlonkverifierCallerSession) Verify(proof []byte, public_inputs []*big.Int) (bool, error) {
	return _Plonkverifier.Contract.Verify(&_Plonkverifier.CallOpts, proof, public_inputs)
}
