From a8c9fa1ee6ddccfa422a5e235a41997c9a853d51 Mon Sep 17 00:00:00 2001 From: hopeyen <60078528+hopeyen@users.noreply.github.com> Date: Tue, 17 Dec 2024 01:42:15 +0700 Subject: [PATCH] [v2] integrate with new payments contract (#995) --- .../bindings/EigenDAServiceManager/binding.go | 39 +- contracts/bindings/MockRollup/binding.go | 2 +- contracts/bindings/PaymentVault/binding.go | 524 +++++++++--------- core/eth/reader.go | 51 +- core/meterer/meterer.go | 4 +- core/meterer/meterer_test.go | 2 +- core/meterer/onchain_state.go | 18 +- core/mock/payment_state.go | 2 +- disperser/apiserver/server_v2_test.go | 2 +- 9 files changed, 343 insertions(+), 301 deletions(-) diff --git a/contracts/bindings/EigenDAServiceManager/binding.go b/contracts/bindings/EigenDAServiceManager/binding.go index edd3ed6ab..73c59a212 100644 --- a/contracts/bindings/EigenDAServiceManager/binding.go +++ b/contracts/bindings/EigenDAServiceManager/binding.go @@ -104,8 +104,8 @@ type VersionedBlobParams struct { // ContractEigenDAServiceManagerMetaData contains all meta data concerning the ContractEigenDAServiceManager contract. var ContractEigenDAServiceManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"__avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"__rewardsCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRewardsCoordinator\"},{\"name\":\"__registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"__stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"},{\"name\":\"__eigenDAThresholdRegistry\",\"type\":\"address\",\"internalType\":\"contractIEigenDAThresholdRegistry\"},{\"name\":\"__eigenDARelayRegistry\",\"type\":\"address\",\"internalType\":\"contractIEigenDARelayRegistry\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STORE_DURATION_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"THRESHOLD_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structBatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signedStakeForQuorums\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eigenDARelayRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDARelayRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenDAThresholdRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDAThresholdRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlobParams\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structVersionedBlobParams\",\"components\":[{\"name\":\"maxNumOperators\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numChunks\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"codingRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDefaultSecurityThresholdsV2\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structSecurityThresholds\",\"components\":[{\"name\":\"confirmationThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getIsQuorumRequired\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumAdversaryThresholdPercentage\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumConfirmationThresholdPercentage\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_batchConfirmers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_rewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isBatchConfirmer\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestServeUntilBlock\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumAdversaryThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumConfirmationThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumNumbersRequired\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsInitiator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setBatchConfirmer\",\"inputs\":[{\"name\":\"_batchConfirmer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsInitiator\",\"inputs\":[{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStaleStakesForbidden\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"staleStakesForbidden\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"pairingSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BatchConfirmerStatusChanged\",\"inputs\":[{\"name\":\"batchConfirmer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultSecurityThresholdsV2Updated\",\"inputs\":[{\"name\":\"previousDefaultSecurityThresholdsV2\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structSecurityThresholds\",\"components\":[{\"name\":\"confirmationThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"newDefaultSecurityThresholdsV2\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structSecurityThresholds\",\"components\":[{\"name\":\"confirmationThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumAdversaryThresholdPercentagesUpdated\",\"inputs\":[{\"name\":\"previousQuorumAdversaryThresholdPercentages\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"newQuorumAdversaryThresholdPercentages\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumConfirmationThresholdPercentagesUpdated\",\"inputs\":[{\"name\":\"previousQuorumConfirmationThresholdPercentages\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"newQuorumConfirmationThresholdPercentages\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumNumbersRequiredUpdated\",\"inputs\":[{\"name\":\"previousQuorumNumbersRequired\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"newQuorumNumbersRequired\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsInitiatorUpdated\",\"inputs\":[{\"name\":\"prevRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StaleStakesForbiddenUpdate\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"VersionedBlobParamsAdded\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint16\",\"indexed\":true,\"internalType\":\"uint16\"},{\"name\":\"versionedBlobParams\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structVersionedBlobParams\",\"components\":[{\"name\":\"maxNumOperators\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numChunks\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"codingRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"anonymous\":false}]", - Bin: "0x6101c06040523480156200001257600080fd5b5060405162005f7038038062005f708339810160408190526200003591620002f5565b6001600160a01b0380831660805280821660a05280871660c05280861660e052808516610100528316610120528386868286620000716200021a565b50505050806001600160a01b0316610140816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000cf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000f5919062000389565b6001600160a01b0316610160816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200014e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000174919062000389565b6001600160a01b0316610180816001600160a01b031681525050610160516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f6919062000389565b6001600160a01b03166101a052506200020e6200021a565b505050505050620003b0565b603254610100900460ff1615620002875760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620002da576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002f257600080fd5b50565b60008060008060008060c087890312156200030f57600080fd5b86516200031c81620002dc565b60208801519096506200032f81620002dc565b60408801519095506200034281620002dc565b60608801519094506200035581620002dc565b60808801519093506200036881620002dc565b60a08801519092506200037b81620002dc565b809150509295509295509295565b6000602082840312156200039c57600080fd5b8151620003a981620002dc565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a051615a646200050c600039600081816106280152611a6a0152600081816104340152611c4c01526000818161048601528181611e220152611fe40152600081816104d30152818161118601528181611735015281816118cd0152611b07015260008181610e9e01528181610ff90152818161109001528181612da201528181612f250152612fc4015260008181610cc901528181610d5801528181610dd801528181612a4601528181612b0a01528181612ce00152612e800152600081816134d501528181613591015261367d0152600081816104aa01528181612a9a01528181612b660152612be5015260006105230152600081816106fc0152818161077201528181610a0101528181610c39015281816129b201528181612c1e01528181612c7e015281816130da01526131270152615a646000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c80637794965a11610167578063e481af9d116100ce578063f122098311610087578063f1220983146106d1578063f2fde38b146106e4578063f8c66814146106f7578063fabc1cbc1461071e578063fc299dee14610731578063fce36c7d1461074457600080fd5b8063e481af9d14610652578063eaefd27d1461065a578063eccbbfc91461066d578063ee6c3bcf1461068d578063ef024458146106a0578063ef635529146106a857600080fd5b8063a5b7890a11610120578063a5b7890a146105d8578063a98fb355146105fb578063b98d09081461060e578063bafa91071461061b578063df5cf72314610623578063e15234ff1461064a57600080fd5b80637794965a146105665780638687feae14610579578063886f11951461058e5780638da5cb5b146105a15780639926ee7d146105b2578063a364f4da146105c557600080fd5b80635c975abb1161020b5780636d14a987116101c45780636d14a987146104ce5780636efb4636146104f5578063715018a614610516578063722764431461051e57806372d18e8d14610545578063775bbcb51461055357600080fd5b80635c975abb1461041d5780635df459461461042f5780635e0334761461046e5780635e8b3f2d1461047857806368304835146104815780636b3aa72e146104a857600080fd5b806333cfb7b71161025d57806333cfb7b7146103875780633bc28c8c146103a7578063416c7e5e146103ba5780634972134a146103cd578063595c6a67146103f25780635ac86ab7146103fa57600080fd5b8063048886d2146102a557806310d67a2f146102cd578063136439dd146102e25780631429c7c2146102f5578063171f1d5b1461031a5780632ecfe72b14610344575b600080fd5b6102b86102b33660046146b4565b610757565b60405190151581526020015b60405180910390f35b6102e06102db3660046146e6565b6107eb565b005b6102e06102f0366004614703565b6108a7565b6103086103033660046146b4565b6109e6565b60405160ff90911681526020016102c4565b61032d61032836600461486d565b610a75565b6040805192151583529015156020830152016102c4565b6103576103523660046148be565b610bff565b60408051825163ffffffff9081168252602080850151909116908201529181015160ff16908201526060016102c4565b61039a6103953660046146e6565b610ca4565b6040516102c491906148ed565b6102e06103b53660046146e6565b611173565b6102e06103c8366004614948565b611184565b6000546103dd9063ffffffff1681565b60405163ffffffff90911681526020016102c4565b6102e06112bb565b6102b86104083660046146b4565b60fc54600160ff9092169190911b9081161490565b60fc545b6040519081526020016102c4565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102c4565b6103dd620189c081565b6103dd61012c81565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b7f0000000000000000000000000000000000000000000000000000000000000000610456565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b610508610503366004614c26565b611382565b6040516102c4929190614d19565b6102e0612299565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b60005463ffffffff166103dd565b6102e0610561366004614d62565b6122ad565b6102e0610574366004614e3d565b612416565b6105816129ae565b6040516102c49190614f04565b60fb54610456906001600160a01b031681565b6065546001600160a01b0316610456565b6102e06105c0366004614f97565b612a3b565b6102e06105d33660046146e6565b612aff565b6102b86105e63660046146e6565b60026020526000908152604090205460ff1681565b6102e0610609366004615042565b612bc6565b60c9546102b89060ff1681565b610581612c1a565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b610581612c7a565b61039a612cda565b6103dd610668366004615092565b6130a3565b61042161067b366004615092565b60016020526000908152604090205481565b61030861069b3660046146b4565b6130bf565b610421606481565b6106b0613111565b60408051825160ff90811682526020938401511692810192909252016102c4565b6102e06106df3660046146e6565b6131a6565b6102e06106f23660046146e6565b6131b7565b6104567f000000000000000000000000000000000000000000000000000000000000000081565b6102e061072c366004614703565b61322d565b609754610456906001600160a01b031681565b6102e06107523660046150af565b613389565b604051630244436960e11b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063048886d290602401602060405180830381865afa1580156107c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e59190615123565b92915050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561083e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108629190615140565b6001600160a01b0316336001600160a01b03161461089b5760405162461bcd60e51b81526004016108929061515d565b60405180910390fd5b6108a4816136b4565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156108ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109139190615123565b61092f5760405162461bcd60e51b8152600401610892906151a7565b60fc54818116146109a85760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610892565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b604051630a14e3e160e11b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631429c7c2906024015b602060405180830381865afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e591906151ef565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610abd57610abd61520c565b60200201518951600160200201518a60200151600060028110610ae257610ae261520c565b60200201518b60200151600160028110610afe57610afe61520c565b602090810291909101518c518d830151604051610b5b9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610b7e9190615222565b9050610bf1610b97610b9088846137ab565b8690613842565b610b9f6138d6565b610be7610bd885610bd2604080518082018252600080825260209182015281518083019092526001825260029082015290565b906137ab565b610be18c613996565b90613842565b886201d4c0613a26565b909890975095505050505050565b60408051606081018252600080825260208201819052818301529051632ecfe72b60e01b815261ffff831660048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632ecfe72b90602401606060405180830381865afa158015610c80573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107e59190615244565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610d10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3491906152b5565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc391906152ce565b90506001600160c01b0381161580610e5d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5891906151ef565b60ff16155b15610e7957505060408051600081526020810190915292915050565b6000610e8d826001600160c01b0316613c4a565b90506000805b8251811015610f63577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f5848381518110610edd57610edd61520c565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610f21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f4591906152b5565b610f4f908361530d565b915080610f5b81615325565b915050610e93565b506000816001600160401b03811115610f7e57610f7e61471c565b604051908082528060200260200182016040528015610fa7578160200160208202803683370190505b5090506000805b8451811015611166576000858281518110610fcb57610fcb61520c565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015611040573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106491906152b5565b905060005b81811015611150576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa1580156110de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111029190615355565b600001518686815181106111185761111861520c565b6001600160a01b03909216602092830291909101909101528461113a81615325565b955050808061114890615325565b915050611069565b505050808061115e90615325565b915050610fae565b5090979650505050505050565b61117b613d0c565b6108a481613d66565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112069190615140565b6001600160a01b0316336001600160a01b0316146112b25760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610892565b6108a481613dcf565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611303573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113279190615123565b6113435760405162461bcd60e51b8152600401610892906151a7565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60408051808201909152606080825260208201526000846113f95760405162461bcd60e51b81526020600482015260376024820152600080516020615a0f83398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610892565b60408301515185148015611411575060a08301515185145b8015611421575060c08301515185145b8015611431575060e08301515185145b61149b5760405162461bcd60e51b81526020600482015260416024820152600080516020615a0f83398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610892565b825151602084015151146115135760405162461bcd60e51b815260206004820152604460248201819052600080516020615a0f833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610892565b4363ffffffff168463ffffffff16106115825760405162461bcd60e51b815260206004820152603c6024820152600080516020615a0f83398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610892565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b038111156115c3576115c361471c565b6040519080825280602002602001820160405280156115ec578160200160208202803683370190505b506020820152866001600160401b0381111561160a5761160a61471c565b604051908082528060200260200182016040528015611633578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b038111156116675761166761471c565b604051908082528060200260200182016040528015611690578160200160208202803683370190505b5081526020860151516001600160401b038111156116b0576116b061471c565b6040519080825280602002602001820160405280156116d9578160200160208202803683370190505b50816020018190525060006117ab8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015611782573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117a691906151ef565b613e17565b905060005b876020015151811015611a46576117f5886020015182815181106117d6576117d661520c565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061180b5761180b61520c565b602090810291909101015280156118cb57602083015161182c600183615396565b8151811061183c5761183c61520c565b602002602001015160001c8360200151828151811061185d5761185d61520c565b602002602001015160001c116118cb576040805162461bcd60e51b8152602060048201526024810191909152600080516020615a0f83398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610892565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106119105761191061520c565b60200260200101518b8b60000151858151811061192f5761192f61520c565b60200260200101516040518463ffffffff1660e01b815260040161196c9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611989573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ad91906152ce565b6001600160c01b0316836000015182815181106119cc576119cc61520c565b602002602001018181525050611a32610b90611a0684866000015185815181106119f8576119f861520c565b602002602001015116613ea8565b8a602001518481518110611a1c57611a1c61520c565b6020026020010151613ed390919063ffffffff16565b945080611a3e81615325565b9150506117b0565b5050611a5183613fb7565b60c95490935060ff16600081611a68576000611aea565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ac6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611aea91906152b5565b905060005b8a811015612168578215611c4a578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110611b4657611b4661520c565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015611b86573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611baa91906152b5565b611bb4919061530d565b11611c4a5760405162461bcd60e51b81526020600482015260666024820152600080516020615a0f83398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610892565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110611c8b57611c8b61520c565b9050013560f81c60f81b60f81c8c8c60a001518581518110611caf57611caf61520c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2f91906153ad565b6001600160401b031916611d528a6040015183815181106117d6576117d661520c565b67ffffffffffffffff191614611dee5760405162461bcd60e51b81526020600482015260616024820152600080516020615a0f83398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610892565b611e1e89604001518281518110611e0757611e0761520c565b60200260200101518761384290919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110611e6157611e6161520c565b9050013560f81c60f81b60f81c8c8c60c001518581518110611e8557611e8561520c565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611ee1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f0591906153d8565b85602001518281518110611f1b57611f1b61520c565b6001600160601b03909216602092830291909101820152850151805182908110611f4757611f4761520c565b602002602001015185600001518281518110611f6557611f6561520c565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a602001515181101561215357611fdd86600001518281518110611faf57611faf61520c565b60200260200101518f8f86818110611fc957611fc961520c565b600192013560f81c9290921c811614919050565b15612141577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106120235761202361520c565b9050013560f81c60f81b60f81c8e896020015185815181106120475761204761520c565b60200260200101518f60e0015188815181106120655761206561520c565b6020026020010151878151811061207e5761207e61520c565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156120e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061210691906153d8565b875180518590811061211a5761211a61520c565b6020026020010181815161212e91906153f5565b6001600160601b03169052506001909101905b8061214b81615325565b915050611f89565b5050808061216090615325565b915050611aef565b5050506000806121828c868a606001518b60800151610a75565b91509150816121f35760405162461bcd60e51b81526020600482015260436024820152600080516020615a0f83398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610892565b806122545760405162461bcd60e51b81526020600482015260396024820152600080516020615a0f83398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610892565b5050600087826020015160405160200161226f92919061541d565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6122a1613d0c565b6122ab6000614052565b565b603254610100900460ff16158080156122cd5750603254600160ff909116105b806122e75750303b1580156122e7575060325460ff166001145b61234a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610892565b6032805460ff19166001179055801561236d576032805461ff0019166101001790555b61237786866140a4565b61238084614052565b61238982613d66565b60005b83518110156123c7576123b78482815181106123aa576123aa61520c565b602002602001015161418e565b6123c081615325565b905061238c565b50801561240e576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60fc546000906001908116141561246f5760405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e64657820697320706175736564000000000000006044820152606401610892565b3360009081526002602052604090205460ff166124e35760405162461bcd60e51b815260206004820152602c60248201527f6f6e6c794261746368436f6e6669726d65723a206e6f742066726f6d2062617460448201526b31b41031b7b73334b936b2b960a11b6064820152608401610892565b3233146125605760405162461bcd60e51b815260206004820152605160248201526000805160206159ef83398151915260448201527f63683a2068656164657220616e64206e6f6e7369676e65722064617461206d75606482015270737420626520696e2063616c6c6461746160781b608482015260a401610892565b436125716080850160608601615092565b63ffffffff16106125f05760405162461bcd60e51b815260206004820152604f60248201526000805160206159ef83398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d6260648201526e657220697320696e2066757475726560881b608482015260a401610892565b63ffffffff431661012c61260a6080860160608701615092565b6126149190615465565b63ffffffff16101561269a5760405162461bcd60e51b815260206004820152605560248201526000805160206159ef83398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d62606482015274195c881a5cc81d1bdbc819985c881a5b881c185cdd605a1b608482015260a401610892565b6126a7604084018461548d565b90506126b6602085018561548d565b90501461274e5760405162461bcd60e51b815260206004820152606660248201526000805160206159ef83398151915260448201527f63683a2071756f72756d4e756d6265727320616e64207369676e65645374616b60648201527f65466f7251756f72756d73206d757374206265206f66207468652073616d65206084820152650d8cadccee8d60d31b60a482015260c401610892565b600061276161275c856154da565b6141f1565b905060008061278d83612777602089018961548d565b61278760808b0160608c01615092565b89611382565b9150915060005b6127a1604088018861548d565b90508110156128e3576127b7604088018861548d565b828181106127c7576127c761520c565b9050013560f81c60f81b60f81c60ff16836020015182815181106127ed576127ed61520c565b60200260200101516127ff919061557c565b6001600160601b03166064846000015183815181106128205761282061520c565b60200260200101516001600160601b031661283b91906155ab565b10156128d15760405162461bcd60e51b8152602060048201526064602482018190526000805160206159ef83398151915260448301527f63683a207369676e61746f7269657320646f206e6f74206f776e206174206c65908201527f617374207468726573686f6c642070657263656e74616765206f6620612071756084820152636f72756d60e01b60a482015260c401610892565b806128db81615325565b915050612794565b506000805463ffffffff16906128f88861426c565b6040805160208082018490528183018790524360e01b6001600160e01b0319166060830152825160448184030181526064830180855281519183019190912063ffffffff881660008181526001909452928590205552905191925086917fc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a9181900360840190a261298a826001615465565b6000805463ffffffff191663ffffffff929092169190911790555050505050505050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638687feae6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612a0e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a3691908101906155ca565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612a835760405162461bcd60e51b815260040161089290615640565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90612ad190859085906004016156b8565b600060405180830381600087803b158015612aeb57600080fd5b505af115801561240e573d6000803e3d6000fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b475760405162461bcd60e51b815260040161089290615640565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015612bab57600080fd5b505af1158015612bbf573d6000803e3d6000fd5b5050505050565b612bce613d0c565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590612b91908490600401614f04565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bafa91076040518163ffffffff1660e01b8152600401600060405180830381865afa158015612a0e573d6000803e3d6000fd5b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e15234ff6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612a0e573d6000803e3d6000fd5b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d6091906151ef565b60ff16905080612d7e57505060408051600081526020810190915290565b6000805b82811015612e3357604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e1591906152b5565b612e1f908361530d565b915080612e2b81615325565b915050612d82565b506000816001600160401b03811115612e4e57612e4e61471c565b604051908082528060200260200182016040528015612e77578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612edc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0091906151ef565b60ff1681101561309957604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612f74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f9891906152b5565b905060005b81811015613084576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015613012573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130369190615355565b6000015185858151811061304c5761304c61520c565b6001600160a01b03909216602092830291909101909101528361306e81615325565b945050808061307c90615325565b915050612f9d565b5050808061309190615325565b915050612e7e565b5090949350505050565b600061012c6130b5620189c084615465565b6107e59190615465565b60405163ee6c3bcf60e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ee6c3bcf90602401610a34565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef6355296040518163ffffffff1660e01b81526004016040805180830381865afa158015613182573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a369190615703565b6131ae613d0c565b6108a48161418e565b6131bf613d0c565b6001600160a01b0381166132245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610892565b6108a481614052565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613280573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132a49190615140565b6001600160a01b0316336001600160a01b0316146132d45760405162461bcd60e51b81526004016108929061515d565b60fc5419811960fc541916146133525760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610892565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016109db565b61339161427f565b60005b81811015613665578282828181106133ae576133ae61520c565b90506020028101906133c09190615738565b6133d19060408101906020016146e6565b6001600160a01b03166323b872dd33308686868181106133f3576133f361520c565b90506020028101906134059190615738565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af115801561345c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134809190615123565b5060008383838181106134955761349561520c565b90506020028101906134a79190615738565b6134b89060408101906020016146e6565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa158015613526573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061354a91906152b5565b905083838381811061355e5761355e61520c565b90506020028101906135709190615738565b6135819060408101906020016146e6565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106135c3576135c361520c565b90506020028101906135d59190615738565b604001356135e3919061530d565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af115801561362e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136529190615123565b50508061365e90615325565b9050613394565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90612ad190859085906004016157b3565b6001600160a01b0381166137425760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610892565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600080825260208201526137c76145cb565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa90508080156137fa576137fc565bfe5b508061383a5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610892565b505092915050565b604080518082019091526000808252602082015261385e6145e9565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa90508080156137fa57508061383a5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610892565b6138de614607565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820190915260008082526020820152600080806139c66000805160206159cf83398151915286615222565b90505b6139d281614314565b90935091506000805160206159cf833981519152828309831415613a0c576040805180820190915290815260208101919091529392505050565b6000805160206159cf8339815191526001820890506139c9565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613a5861462c565b60005b6002811015613c1d576000613a718260066155ab565b9050848260028110613a8557613a8561520c565b60200201515183613a9783600061530d565b600c8110613aa757613aa761520c565b6020020152848260028110613abe57613abe61520c565b60200201516020015183826001613ad5919061530d565b600c8110613ae557613ae561520c565b6020020152838260028110613afc57613afc61520c565b6020020151515183613b0f83600261530d565b600c8110613b1f57613b1f61520c565b6020020152838260028110613b3657613b3661520c565b6020020151516001602002015183613b4f83600361530d565b600c8110613b5f57613b5f61520c565b6020020152838260028110613b7657613b7661520c565b602002015160200151600060028110613b9157613b9161520c565b602002015183613ba283600461530d565b600c8110613bb257613bb261520c565b6020020152838260028110613bc957613bc961520c565b602002015160200151600160028110613be457613be461520c565b602002015183613bf583600561530d565b600c8110613c0557613c0561520c565b60200201525080613c1581615325565b915050613a5b565b50613c2661464b565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6060600080613c5884613ea8565b61ffff166001600160401b03811115613c7357613c7361471c565b6040519080825280601f01601f191660200182016040528015613c9d576020820181803683370190505b5090506000805b825182108015613cb5575061010081105b15613099576001811b935085841615613cfc578060f81b838381518110613cde57613cde61520c565b60200101906001600160f81b031916908160001a9053508160010191505b613d0581615325565b9050613ca4565b6065546001600160a01b031633146122ab5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610892565b609754604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b60c9805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc906020015b60405180910390a150565b600080613e2384614396565b9050808360ff166001901b11613ea15760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610892565b9392505050565b6000805b82156107e557613ebd600184615396565b9092169180613ecb816158c0565b915050613eac565b60408051808201909152600080825260208201526102008261ffff1610613f2f5760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610892565b8161ffff1660011415613f435750816107e5565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610613fac57600161ffff871660ff83161c81161415613f8f57613f8c8484613842565b93505b613f998384613842565b92506201fffe600192831b169101613f5f565b509195945050505050565b60408051808201909152600080825260208201528151158015613fdc57506020820151155b15613ffa575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020016000805160206159cf833981519152846020015161402d9190615222565b614045906000805160206159cf833981519152615396565b905292915050565b919050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fb546001600160a01b03161580156140c557506001600160a01b03821615155b6141475760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610892565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261418a826136b4565b5050565b6001600160a01b038116600081815260026020908152604091829020805460ff8082161560ff1990921682179092558351948552161515908301527f5c3265f5fb462ef4930fe47beaa183647c97f19ba545b761f41bc8cd4621d4149101613e0c565b600061422e82604080518082019091526000808252602082015250604080518082019091528151815260609091015163ffffffff16602082015290565b6040805182516020808301919091529092015163ffffffff16908201526060015b604051602081830303815290604052805190602001209050919050565b60008160405160200161424f9190615950565b6097546001600160a01b031633146122ab5760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a401610892565b600080806000805160206159cf83398151915260036000805160206159cf833981519152866000805160206159cf83398151915288890909089050600061438a827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f526000805160206159cf833981519152614523565b91959194509092505050565b60006101008251111561441f5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610892565b815161442d57506000919050565b600080836000815181106144435761444361520c565b0160200151600160f89190911c81901b92505b845181101561451a578481815181106144715761447161520c565b0160200151600160f89190911c1b91508282116145065760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610892565b9181179161451381615325565b9050614456565b50909392505050565b60008061452e61464b565b614536614669565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa92508280156137fa5750826145c05760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610892565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061461a614687565b8152602001614627614687565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60ff811681146108a457600080fd5b6000602082840312156146c657600080fd5b8135613ea1816146a5565b6001600160a01b03811681146108a457600080fd5b6000602082840312156146f857600080fd5b8135613ea1816146d1565b60006020828403121561471557600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156147545761475461471c565b60405290565b60405161010081016001600160401b03811182821017156147545761475461471c565b604051601f8201601f191681016001600160401b03811182821017156147a5576147a561471c565b604052919050565b6000604082840312156147bf57600080fd5b6147c7614732565b9050813581526020820135602082015292915050565b600082601f8301126147ee57600080fd5b6147f6614732565b80604084018581111561480857600080fd5b845b8181101561482257803584526020938401930161480a565b509095945050505050565b60006080828403121561483f57600080fd5b614847614732565b905061485383836147dd565b815261486283604084016147dd565b602082015292915050565b600080600080610120858703121561488457600080fd5b8435935061489586602087016147ad565b92506148a4866060870161482d565b91506148b38660e087016147ad565b905092959194509250565b6000602082840312156148d057600080fd5b813561ffff81168114613ea157600080fd5b803561404d816146d1565b6020808252825182820181905260009190848201906040850190845b8181101561492e5783516001600160a01b031683529284019291840191600101614909565b50909695505050505050565b80151581146108a457600080fd5b60006020828403121561495a57600080fd5b8135613ea18161493a565b63ffffffff811681146108a457600080fd5b803561404d81614965565b60006001600160401b0382111561499b5761499b61471c565b5060051b60200190565b600082601f8301126149b657600080fd5b813560206149cb6149c683614982565b61477d565b82815260059290921b840181019181810190868411156149ea57600080fd5b8286015b84811015614a0e578035614a0181614965565b83529183019183016149ee565b509695505050505050565b600082601f830112614a2a57600080fd5b81356020614a3a6149c683614982565b82815260069290921b84018101918181019086841115614a5957600080fd5b8286015b84811015614a0e57614a6f88826147ad565b835291830191604001614a5d565b600082601f830112614a8e57600080fd5b81356020614a9e6149c683614982565b82815260059290921b84018101918181019086841115614abd57600080fd5b8286015b84811015614a0e5780356001600160401b03811115614ae05760008081fd5b614aee8986838b01016149a5565b845250918301918301614ac1565b60006101808284031215614b0f57600080fd5b614b1761475a565b905081356001600160401b0380821115614b3057600080fd5b614b3c858386016149a5565b83526020840135915080821115614b5257600080fd5b614b5e85838601614a19565b60208401526040840135915080821115614b7757600080fd5b614b8385838601614a19565b6040840152614b95856060860161482d565b6060840152614ba78560e086016147ad565b6080840152610120840135915080821115614bc157600080fd5b614bcd858386016149a5565b60a0840152610140840135915080821115614be757600080fd5b614bf3858386016149a5565b60c0840152610160840135915080821115614c0d57600080fd5b50614c1a84828501614a7d565b60e08301525092915050565b600080600080600060808688031215614c3e57600080fd5b8535945060208601356001600160401b0380821115614c5c57600080fd5b818801915088601f830112614c7057600080fd5b813581811115614c7f57600080fd5b896020828501011115614c9157600080fd5b6020830196509450614ca560408901614977565b93506060880135915080821115614cbb57600080fd5b50614cc888828901614afc565b9150509295509295909350565b600081518084526020808501945080840160005b83811015614d0e5781516001600160601b031687529582019590820190600101614ce9565b509495945050505050565b6040815260008351604080840152614d346080840182614cd5565b90506020850151603f19848303016060850152614d518282614cd5565b925050508260208301529392505050565b600080600080600060a08688031215614d7a57600080fd5b8535614d85816146d1565b945060208681013594506040870135614d9d816146d1565b935060608701356001600160401b03811115614db857600080fd5b8701601f81018913614dc957600080fd5b8035614dd76149c682614982565b81815260059190911b8201830190838101908b831115614df657600080fd5b928401925b82841015614e1d578335614e0e816146d1565b82529284019290840190614dfb565b8096505050505050614e31608087016148e2565b90509295509295909350565b60008060408385031215614e5057600080fd5b82356001600160401b0380821115614e6757600080fd5b9084019060808287031215614e7b57600080fd5b90925060208401359080821115614e9157600080fd5b50614e9e85828601614afc565b9150509250929050565b60005b83811015614ec3578181015183820152602001614eab565b83811115614ed2576000848401525b50505050565b60008151808452614ef0816020860160208601614ea8565b601f01601f19169290920160200192915050565b602081526000613ea16020830184614ed8565b60006001600160401b03821115614f3057614f3061471c565b50601f01601f191660200190565b6000614f4c6149c684614f17565b9050828152838383011115614f6057600080fd5b828260208301376000602084830101529392505050565b600082601f830112614f8857600080fd5b613ea183833560208501614f3e565b60008060408385031215614faa57600080fd5b8235614fb5816146d1565b915060208301356001600160401b0380821115614fd157600080fd5b9084019060608287031215614fe557600080fd5b6040516060810181811083821117156150005761500061471c565b60405282358281111561501257600080fd5b61501e88828601614f77565b82525060208301356020820152604083013560408201528093505050509250929050565b60006020828403121561505457600080fd5b81356001600160401b0381111561506a57600080fd5b8201601f8101841361507b57600080fd5b61508a84823560208401614f3e565b949350505050565b6000602082840312156150a457600080fd5b8135613ea181614965565b600080602083850312156150c257600080fd5b82356001600160401b03808211156150d957600080fd5b818501915085601f8301126150ed57600080fd5b8135818111156150fc57600080fd5b8660208260051b850101111561511157600080fd5b60209290920196919550909350505050565b60006020828403121561513557600080fd5b8151613ea18161493a565b60006020828403121561515257600080fd5b8151613ea1816146d1565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60006020828403121561520157600080fd5b8151613ea1816146a5565b634e487b7160e01b600052603260045260246000fd5b60008261523f57634e487b7160e01b600052601260045260246000fd5b500690565b60006060828403121561525657600080fd5b604051606081018181106001600160401b03821117156152785761527861471c565b604052825161528681614965565b8152602083015161529681614965565b602082015260408301516152a9816146a5565b60408201529392505050565b6000602082840312156152c757600080fd5b5051919050565b6000602082840312156152e057600080fd5b81516001600160c01b0381168114613ea157600080fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115615320576153206152f7565b500190565b6000600019821415615339576153396152f7565b5060010190565b6001600160601b03811681146108a457600080fd5b60006040828403121561536757600080fd5b61536f614732565b825161537a816146d1565b8152602083015161538a81615340565b60208201529392505050565b6000828210156153a8576153a86152f7565b500390565b6000602082840312156153bf57600080fd5b815167ffffffffffffffff1981168114613ea157600080fd5b6000602082840312156153ea57600080fd5b8151613ea181615340565b60006001600160601b0383811690831681811015615415576154156152f7565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156154585781518552938201939082019060010161543c565b5092979650505050505050565b600063ffffffff808316818516808303821115615484576154846152f7565b01949350505050565b6000808335601e198436030181126154a457600080fd5b8301803591506001600160401b038211156154be57600080fd5b6020019150368190038213156154d357600080fd5b9250929050565b6000608082360312156154ec57600080fd5b604051608081016001600160401b03828210818311171561550f5761550f61471c565b8160405284358352602085013591508082111561552b57600080fd5b61553736838701614f77565b6020840152604085013591508082111561555057600080fd5b5061555d36828601614f77565b604083015250606083013561557181614965565b606082015292915050565b60006001600160601b03808316818516818304811182151516156155a2576155a26152f7565b02949350505050565b60008160001904831182151516156155c5576155c56152f7565b500290565b6000602082840312156155dc57600080fd5b81516001600160401b038111156155f257600080fd5b8201601f8101841361560357600080fd5b80516156116149c682614f17565b81815285602083850101111561562657600080fd5b615637826020830160208601614ea8565b95945050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b60018060a01b03831681526040602082015260008251606060408401526156e260a0840182614ed8565b90506020840151606084015260408401516080840152809150509392505050565b60006040828403121561571557600080fd5b61571d614732565b8251615728816146a5565b8152602083015161538a816146a5565b60008235609e1983360301811261574e57600080fd5b9190910192915050565b8183526000602080850194508260005b85811015614d0e57813561577b816146d1565b6001600160a01b031687528183013561579381615340565b6001600160601b0316878401526040968701969190910190600101615768565b60208082528181018390526000906040808401600586901b8501820187855b888110156158b257878303603f190184528135368b9003609e190181126157f857600080fd5b8a0160a0813536839003601e1901811261581157600080fd5b820180356001600160401b0381111561582957600080fd5b8060061b360384131561583b57600080fd5b82875261584d838801828c8501615758565b9250505061585c8883016148e2565b6001600160a01b0316888601528187013587860152606061587e818401614977565b63ffffffff16908601526080615895838201614977565b63ffffffff169501949094525092850192908501906001016157d2565b509098975050505050505050565b600061ffff808316818114156158d8576158d86152f7565b6001019392505050565b6000808335601e198436030181126158f957600080fd5b83016020810192503590506001600160401b0381111561591857600080fd5b8036038313156154d357600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815281356020820152600061596a60208401846158e2565b6080604085015261597f60a085018284615927565b91505061598f60408501856158e2565b848303601f190160608601526159a6838284615927565b9250505060608401356159b881614965565b63ffffffff16608093909301929092525091905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47456967656e4441536572766963654d616e616765722e636f6e6669726d426174424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220dcd4d37aa15e63ada7052440709abc671e1948a87de757ea49ac6ffa2dd548bf64736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"__avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"__rewardsCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRewardsCoordinator\"},{\"name\":\"__registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"__stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"},{\"name\":\"__eigenDAThresholdRegistry\",\"type\":\"address\",\"internalType\":\"contractIEigenDAThresholdRegistry\"},{\"name\":\"__eigenDARelayRegistry\",\"type\":\"address\",\"internalType\":\"contractIEigenDARelayRegistry\"},{\"name\":\"__paymentVault\",\"type\":\"address\",\"internalType\":\"contractIPaymentVault\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"BLOCK_STALE_MEASURE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"STORE_DURATION_BLOCKS\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"THRESHOLD_DENOMINATOR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"batchIdToBatchMetadataHash\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"confirmBatch\",\"inputs\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structBatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signedStakeForQuorums\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"eigenDARelayRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDARelayRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenDAThresholdRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDAThresholdRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBlobParams\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint16\",\"internalType\":\"uint16\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structVersionedBlobParams\",\"components\":[{\"name\":\"maxNumOperators\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numChunks\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"codingRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getDefaultSecurityThresholdsV2\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structSecurityThresholds\",\"components\":[{\"name\":\"confirmationThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getIsQuorumRequired\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumAdversaryThresholdPercentage\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumConfirmationThresholdPercentage\",\"inputs\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"_initialPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_batchConfirmers\",\"type\":\"address[]\",\"internalType\":\"address[]\"},{\"name\":\"_rewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"isBatchConfirmer\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestServeUntilBlock\",\"inputs\":[{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paymentVault\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPaymentVault\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumAdversaryThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumConfirmationThresholdPercentages\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"quorumNumbersRequired\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsInitiator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setBatchConfirmer\",\"inputs\":[{\"name\":\"_batchConfirmer\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setRewardsInitiator\",\"inputs\":[{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStaleStakesForbidden\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"staleStakesForbidden\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"pairingSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"BatchConfirmed\",\"inputs\":[{\"name\":\"batchHeaderHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"batchId\",\"type\":\"uint32\",\"indexed\":false,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BatchConfirmerStatusChanged\",\"inputs\":[{\"name\":\"batchConfirmer\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"status\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultSecurityThresholdsV2Updated\",\"inputs\":[{\"name\":\"previousDefaultSecurityThresholdsV2\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structSecurityThresholds\",\"components\":[{\"name\":\"confirmationThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]},{\"name\":\"newDefaultSecurityThresholdsV2\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structSecurityThresholds\",\"components\":[{\"name\":\"confirmationThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThreshold\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumAdversaryThresholdPercentagesUpdated\",\"inputs\":[{\"name\":\"previousQuorumAdversaryThresholdPercentages\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"newQuorumAdversaryThresholdPercentages\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumConfirmationThresholdPercentagesUpdated\",\"inputs\":[{\"name\":\"previousQuorumConfirmationThresholdPercentages\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"newQuorumConfirmationThresholdPercentages\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"QuorumNumbersRequiredUpdated\",\"inputs\":[{\"name\":\"previousQuorumNumbersRequired\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"},{\"name\":\"newQuorumNumbersRequired\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsInitiatorUpdated\",\"inputs\":[{\"name\":\"prevRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StaleStakesForbiddenUpdate\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"VersionedBlobParamsAdded\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint16\",\"indexed\":true,\"internalType\":\"uint16\"},{\"name\":\"versionedBlobParams\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structVersionedBlobParams\",\"components\":[{\"name\":\"maxNumOperators\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numChunks\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"codingRate\",\"type\":\"uint8\",\"internalType\":\"uint8\"}]}],\"anonymous\":false}]", + Bin: "0x6101e06040523480156200001257600080fd5b5060405162005fdc38038062005fdc8339810160408190526200003591620002fd565b6001600160a01b0380841660805280831660a05280821660c05280881660e052808716610100528086166101205284166101405284878782876200007862000222565b50505050806001600160a01b0316610160816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000d6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000fc9190620003a8565b6001600160a01b0316610180816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000155573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017b9190620003a8565b6001600160a01b03166101a0816001600160a01b031681525050610180516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fd9190620003a8565b6001600160a01b03166101c052506200021562000222565b50505050505050620003cf565b603254610100900460ff16156200028f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60325460ff9081161015620002e2576032805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b0381168114620002fa57600080fd5b50565b600080600080600080600060e0888a0312156200031957600080fd5b87516200032681620002e4565b60208901519097506200033981620002e4565b60408901519096506200034c81620002e4565b60608901519095506200035f81620002e4565b60808901519094506200037281620002e4565b60a08901519093506200038581620002e4565b60c08901519092506200039881620002e4565b8091505092959891949750929550565b600060208284031215620003bb57600080fd5b8151620003c881620002e4565b9392505050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c051615aa662000536600039600081816106430152611aac01526000818161044f0152611c8e0152600081816104a101528181611e6401526120260152600081816104ee015281816111c8015281816117770152818161190f0152611b49015260008181610ee00152818161103b015281816110d201528181612de401528181612f670152613006015260008181610d0b01528181610d9a01528181610e1a01528181612a8801528181612b4c01528181612d220152612ec2015260008181613517015281816135d301526136bf0152600081816104c501528181612adc01528181612ba80152612c27015260006106ad0152600061053e01526000818161073e015281816107b401528181610a4301528181610c7b015281816129f401528181612c6001528181612cc00152818161311c01526131690152615aa66000f3fe608060405234801561001057600080fd5b50600436106102bb5760003560e01c80637794965a11610182578063e481af9d116100e9578063ef635529116100a2578063f8c668141161007c578063f8c6681414610739578063fabc1cbc14610760578063fc299dee14610773578063fce36c7d1461078657600080fd5b8063ef635529146106ea578063f122098314610713578063f2fde38b1461072657600080fd5b8063e481af9d1461066d578063eaefd27d14610675578063eccbbfc914610688578063ed3916f7146106a8578063ee6c3bcf146106cf578063ef024458146106e257600080fd5b8063a5b7890a1161013b578063a5b7890a146105f3578063a98fb35514610616578063b98d090814610629578063bafa910714610636578063df5cf7231461063e578063e15234ff1461066557600080fd5b80637794965a146105815780638687feae14610594578063886f1195146105a95780638da5cb5b146105bc5780639926ee7d146105cd578063a364f4da146105e057600080fd5b80635c975abb116102265780636d14a987116101df5780636d14a987146104e95780636efb463614610510578063715018a614610531578063722764431461053957806372d18e8d14610560578063775bbcb51461056e57600080fd5b80635c975abb146104385780635df459461461044a5780635e033476146104895780635e8b3f2d14610493578063683048351461049c5780636b3aa72e146104c357600080fd5b806333cfb7b71161027857806333cfb7b7146103a25780633bc28c8c146103c2578063416c7e5e146103d55780634972134a146103e8578063595c6a671461040d5780635ac86ab71461041557600080fd5b8063048886d2146102c057806310d67a2f146102e8578063136439dd146102fd5780631429c7c214610310578063171f1d5b146103355780632ecfe72b1461035f575b600080fd5b6102d36102ce3660046146f6565b610799565b60405190151581526020015b60405180910390f35b6102fb6102f6366004614728565b61082d565b005b6102fb61030b366004614745565b6108e9565b61032361031e3660046146f6565b610a28565b60405160ff90911681526020016102df565b6103486103433660046148af565b610ab7565b6040805192151583529015156020830152016102df565b61037261036d366004614900565b610c41565b60408051825163ffffffff9081168252602080850151909116908201529181015160ff16908201526060016102df565b6103b56103b0366004614728565b610ce6565b6040516102df919061492f565b6102fb6103d0366004614728565b6111b5565b6102fb6103e336600461498a565b6111c6565b6000546103f89063ffffffff1681565b60405163ffffffff90911681526020016102df565b6102fb6112fd565b6102d36104233660046146f6565b60fc54600160ff9092169190911b9081161490565b60fc545b6040519081526020016102df565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016102df565b6103f8620189c081565b6103f861012c81565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b7f0000000000000000000000000000000000000000000000000000000000000000610471565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b61052361051e366004614c68565b6113c4565b6040516102df929190614d5b565b6102fb6122db565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b60005463ffffffff166103f8565b6102fb61057c366004614da4565b6122ef565b6102fb61058f366004614e7f565b612458565b61059c6129f0565b6040516102df9190614f46565b60fb54610471906001600160a01b031681565b6065546001600160a01b0316610471565b6102fb6105db366004614fd9565b612a7d565b6102fb6105ee366004614728565b612b41565b6102d3610601366004614728565b60026020526000908152604090205460ff1681565b6102fb610624366004615084565b612c08565b60c9546102d39060ff1681565b61059c612c5c565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b61059c612cbc565b6103b5612d1c565b6103f86106833660046150d4565b6130e5565b61043c6106963660046150d4565b60016020526000908152604090205481565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b6103236106dd3660046146f6565b613101565b61043c606481565b6106f2613153565b60408051825160ff90811682526020938401511692810192909252016102df565b6102fb610721366004614728565b6131e8565b6102fb610734366004614728565b6131f9565b6104717f000000000000000000000000000000000000000000000000000000000000000081565b6102fb61076e366004614745565b61326f565b609754610471906001600160a01b031681565b6102fb6107943660046150f1565b6133cb565b604051630244436960e11b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063048886d290602401602060405180830381865afa158015610803573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108279190615165565b92915050565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610880573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108a49190615182565b6001600160a01b0316336001600160a01b0316146108dd5760405162461bcd60e51b81526004016108d49061519f565b60405180910390fd5b6108e6816136f6565b50565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610931573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109559190615165565b6109715760405162461bcd60e51b81526004016108d4906151e9565b60fc54818116146109ea5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c697479000000000000000060648201526084016108d4565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b604051630a14e3e160e11b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690631429c7c2906024015b602060405180830381865afa158015610a93573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108279190615231565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000187876000015188602001518860000151600060028110610aff57610aff61524e565b60200201518951600160200201518a60200151600060028110610b2457610b2461524e565b60200201518b60200151600160028110610b4057610b4061524e565b602090810291909101518c518d830151604051610b9d9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c610bc09190615264565b9050610c33610bd9610bd288846137ed565b8690613884565b610be1613918565b610c29610c1a85610c14604080518082018252600080825260209182015281518083019092526001825260029082015290565b906137ed565b610c238c6139d8565b90613884565b886201d4c0613a68565b909890975095505050505050565b60408051606081018252600080825260208201819052818301529051632ecfe72b60e01b815261ffff831660048201526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690632ecfe72b90602401606060405180830381865afa158015610cc2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108279190615286565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa158015610d52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d7691906152f7565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa158015610de1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e059190615310565b90506001600160c01b0381161580610e9f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9a9190615231565b60ff16155b15610ebb57505060408051600081526020810190915292915050565b6000610ecf826001600160c01b0316613c8c565b90506000805b8251811015610fa5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f5848381518110610f1f57610f1f61524e565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa158015610f63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8791906152f7565b610f91908361534f565b915080610f9d81615367565b915050610ed5565b506000816001600160401b03811115610fc057610fc061475e565b604051908082528060200260200182016040528015610fe9578160200160208202803683370190505b5090506000805b84518110156111a857600085828151811061100d5761100d61524e565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa158015611082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a691906152f7565b905060005b81811015611192576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015611120573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111449190615397565b6000015186868151811061115a5761115a61524e565b6001600160a01b03909216602092830291909101909101528461117c81615367565b955050808061118a90615367565b9150506110ab565b50505080806111a090615367565b915050610ff0565b5090979650505050505050565b6111bd613d4e565b6108e681613da8565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112489190615182565b6001600160a01b0316336001600160a01b0316146112f45760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a4016108d4565b6108e681613e11565b60fb5460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611345573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113699190615165565b6113855760405162461bcd60e51b81526004016108d4906151e9565b60001960fc81905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b604080518082019091526060808252602082015260008461143b5760405162461bcd60e51b81526020600482015260376024820152600080516020615a5183398151915260448201527f7265733a20656d7074792071756f72756d20696e70757400000000000000000060648201526084016108d4565b60408301515185148015611453575060a08301515185145b8015611463575060c08301515185145b8015611473575060e08301515185145b6114dd5760405162461bcd60e51b81526020600482015260416024820152600080516020615a5183398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a4016108d4565b825151602084015151146115555760405162461bcd60e51b815260206004820152604460248201819052600080516020615a51833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a4016108d4565b4363ffffffff168463ffffffff16106115c45760405162461bcd60e51b815260206004820152603c6024820152600080516020615a5183398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b0000000060648201526084016108d4565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b038111156116055761160561475e565b60405190808252806020026020018201604052801561162e578160200160208202803683370190505b506020820152866001600160401b0381111561164c5761164c61475e565b604051908082528060200260200182016040528015611675578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b038111156116a9576116a961475e565b6040519080825280602002602001820160405280156116d2578160200160208202803683370190505b5081526020860151516001600160401b038111156116f2576116f261475e565b60405190808252806020026020018201604052801561171b578160200160208202803683370190505b50816020018190525060006117ed8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa1580156117c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117e89190615231565b613e59565b905060005b876020015151811015611a8857611837886020015182815181106118185761181861524e565b6020026020010151805160009081526020918201519091526040902090565b8360200151828151811061184d5761184d61524e565b6020908102919091010152801561190d57602083015161186e6001836153d8565b8151811061187e5761187e61524e565b602002602001015160001c8360200151828151811061189f5761189f61524e565b602002602001015160001c1161190d576040805162461bcd60e51b8152602060048201526024810191909152600080516020615a5183398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f7274656460648201526084016108d4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec6351846020015183815181106119525761195261524e565b60200260200101518b8b6000015185815181106119715761197161524e565b60200260200101516040518463ffffffff1660e01b81526004016119ae9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa1580156119cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119ef9190615310565b6001600160c01b031683600001518281518110611a0e57611a0e61524e565b602002602001018181525050611a74610bd2611a488486600001518581518110611a3a57611a3a61524e565b602002602001015116613eea565b8a602001518481518110611a5e57611a5e61524e565b6020026020010151613f1590919063ffffffff16565b945080611a8081615367565b9150506117f2565b5050611a9383613ff9565b60c95490935060ff16600081611aaa576000611b2c565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2c91906152f7565b905060005b8a8110156121aa578215611c8c578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110611b8857611b8861524e565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015611bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bec91906152f7565b611bf6919061534f565b11611c8c5760405162461bcd60e51b81526020600482015260666024820152600080516020615a5183398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c4016108d4565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110611ccd57611ccd61524e565b9050013560f81c60f81b60f81c8c8c60a001518581518110611cf157611cf161524e565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7191906153ef565b6001600160401b031916611d948a6040015183815181106118185761181861524e565b67ffffffffffffffff191614611e305760405162461bcd60e51b81526020600482015260616024820152600080516020615a5183398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c4016108d4565b611e6089604001518281518110611e4957611e4961524e565b60200260200101518761388490919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110611ea357611ea361524e565b9050013560f81c60f81b60f81c8c8c60c001518581518110611ec757611ec761524e565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015611f23573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f47919061541a565b85602001518281518110611f5d57611f5d61524e565b6001600160601b03909216602092830291909101820152850151805182908110611f8957611f8961524e565b602002602001015185600001518281518110611fa757611fa761524e565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156121955761201f86600001518281518110611ff157611ff161524e565b60200260200101518f8f8681811061200b5761200b61524e565b600192013560f81c9290921c811614919050565b15612183577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106120655761206561524e565b9050013560f81c60f81b60f81c8e896020015185815181106120895761208961524e565b60200260200101518f60e0015188815181106120a7576120a761524e565b602002602001015187815181106120c0576120c061524e565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015612124573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612148919061541a565b875180518590811061215c5761215c61524e565b602002602001018181516121709190615437565b6001600160601b03169052506001909101905b8061218d81615367565b915050611fcb565b505080806121a290615367565b915050611b31565b5050506000806121c48c868a606001518b60800151610ab7565b91509150816122355760405162461bcd60e51b81526020600482015260436024820152600080516020615a5183398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a4016108d4565b806122965760405162461bcd60e51b81526020600482015260396024820152600080516020615a5183398151915260448201527f7265733a207369676e617475726520697320696e76616c69640000000000000060648201526084016108d4565b505060008782602001516040516020016122b192919061545f565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6122e3613d4e565b6122ed6000614094565b565b603254610100900460ff161580801561230f5750603254600160ff909116105b806123295750303b158015612329575060325460ff166001145b61238c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108d4565b6032805460ff1916600117905580156123af576032805461ff0019166101001790555b6123b986866140e6565b6123c284614094565b6123cb82613da8565b60005b8351811015612409576123f98482815181106123ec576123ec61524e565b60200260200101516141d0565b61240281615367565b90506123ce565b508015612450576032805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b60fc54600090600190811614156124b15760405162461bcd60e51b815260206004820152601960248201527f5061757361626c653a20696e646578206973207061757365640000000000000060448201526064016108d4565b3360009081526002602052604090205460ff166125255760405162461bcd60e51b815260206004820152602c60248201527f6f6e6c794261746368436f6e6669726d65723a206e6f742066726f6d2062617460448201526b31b41031b7b73334b936b2b960a11b60648201526084016108d4565b3233146125a25760405162461bcd60e51b81526020600482015260516024820152600080516020615a3183398151915260448201527f63683a2068656164657220616e64206e6f6e7369676e65722064617461206d75606482015270737420626520696e2063616c6c6461746160781b608482015260a4016108d4565b436125b360808501606086016150d4565b63ffffffff16106126325760405162461bcd60e51b815260206004820152604f6024820152600080516020615a3183398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d6260648201526e657220697320696e2066757475726560881b608482015260a4016108d4565b63ffffffff431661012c61264c60808601606087016150d4565b61265691906154a7565b63ffffffff1610156126dc5760405162461bcd60e51b81526020600482015260556024820152600080516020615a3183398151915260448201527f63683a20737065636966696564207265666572656e6365426c6f636b4e756d62606482015274195c881a5cc81d1bdbc819985c881a5b881c185cdd605a1b608482015260a4016108d4565b6126e960408401846154cf565b90506126f860208501856154cf565b9050146127905760405162461bcd60e51b81526020600482015260666024820152600080516020615a3183398151915260448201527f63683a2071756f72756d4e756d6265727320616e64207369676e65645374616b60648201527f65466f7251756f72756d73206d757374206265206f66207468652073616d65206084820152650d8cadccee8d60d31b60a482015260c4016108d4565b60006127a361279e8561551c565b614233565b90506000806127cf836127b960208901896154cf565b6127c960808b0160608c016150d4565b896113c4565b9150915060005b6127e360408801886154cf565b9050811015612925576127f960408801886154cf565b828181106128095761280961524e565b9050013560f81c60f81b60f81c60ff168360200151828151811061282f5761282f61524e565b602002602001015161284191906155be565b6001600160601b03166064846000015183815181106128625761286261524e565b60200260200101516001600160601b031661287d91906155ed565b10156129135760405162461bcd60e51b815260206004820152606460248201819052600080516020615a3183398151915260448301527f63683a207369676e61746f7269657320646f206e6f74206f776e206174206c65908201527f617374207468726573686f6c642070657263656e74616765206f6620612071756084820152636f72756d60e01b60a482015260c4016108d4565b8061291d81615367565b9150506127d6565b506000805463ffffffff169061293a886142ae565b6040805160208082018490528183018790524360e01b6001600160e01b0319166060830152825160448184030181526064830180855281519183019190912063ffffffff881660008181526001909452928590205552905191925086917fc75557c4ad49697e231449688be13ef11cb6be8ed0d18819d8dde074a5a16f8a9181900360840190a26129cc8260016154a7565b6000805463ffffffff191663ffffffff929092169190911790555050505050505050565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638687feae6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612a50573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612a78919081019061560c565b905090565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612ac55760405162461bcd60e51b81526004016108d490615682565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d90612b1390859085906004016156fa565b600060405180830381600087803b158015612b2d57600080fd5b505af1158015612450573d6000803e3d6000fd5b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612b895760405162461bcd60e51b81526004016108d490615682565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015612bed57600080fd5b505af1158015612c01573d6000803e3d6000fd5b5050505050565b612c10613d4e565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590612bd3908490600401614f46565b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bafa91076040518163ffffffff1660e01b8152600401600060405180830381865afa158015612a50573d6000803e3d6000fd5b60607f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e15234ff6040518163ffffffff1660e01b8152600401600060405180830381865afa158015612a50573d6000803e3d6000fd5b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612da29190615231565b60ff16905080612dc057505060408051600081526020810190915290565b6000805b82811015612e7557604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612e33573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e5791906152f7565b612e61908361534f565b915080612e6d81615367565b915050612dc4565b506000816001600160401b03811115612e9057612e9061475e565b604051908082528060200260200182016040528015612eb9578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f1e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f429190615231565b60ff168110156130db57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015612fb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fda91906152f7565b905060005b818110156130c6576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015613054573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130789190615397565b6000015185858151811061308e5761308e61524e565b6001600160a01b0390921660209283029190910190910152836130b081615367565b94505080806130be90615367565b915050612fdf565b505080806130d390615367565b915050612ec0565b5090949350505050565b600061012c6130f7620189c0846154a7565b61082791906154a7565b60405163ee6c3bcf60e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ee6c3bcf90602401610a76565b60408051808201909152600080825260208201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ef6355296040518163ffffffff1660e01b81526004016040805180830381865afa1580156131c4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a789190615745565b6131f0613d4e565b6108e6816141d0565b613201613d4e565b6001600160a01b0381166132665760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016108d4565b6108e681614094565b60fb60009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156132c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132e69190615182565b6001600160a01b0316336001600160a01b0316146133165760405162461bcd60e51b81526004016108d49061519f565b60fc5419811960fc541916146133945760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c697479000000000000000060648201526084016108d4565b60fc81905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610a1d565b6133d36142c1565b60005b818110156136a7578282828181106133f0576133f061524e565b9050602002810190613402919061577a565b613413906040810190602001614728565b6001600160a01b03166323b872dd33308686868181106134355761343561524e565b9050602002810190613447919061577a565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af115801561349e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134c29190615165565b5060008383838181106134d7576134d761524e565b90506020028101906134e9919061577a565b6134fa906040810190602001614728565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa158015613568573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358c91906152f7565b90508383838181106135a0576135a061524e565b90506020028101906135b2919061577a565b6135c3906040810190602001614728565b6001600160a01b031663095ea7b37f0000000000000000000000000000000000000000000000000000000000000000838787878181106136055761360561524e565b9050602002810190613617919061577a565b60400135613625919061534f565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af1158015613670573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136949190615165565b5050806136a090615367565b90506133d6565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d90612b1390859085906004016157f5565b6001600160a01b0381166137845760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a4016108d4565b60fb54604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a160fb80546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082019091526000808252602082015261380961460d565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa905080801561383c5761383e565bfe5b508061387c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016108d4565b505092915050565b60408051808201909152600080825260208201526138a061462b565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa905080801561383c57508061387c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016108d4565b613920614649565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613a08600080516020615a1183398151915286615264565b90505b613a1481614356565b9093509150600080516020615a11833981519152828309831415613a4e576040805180820190915290815260208101919091529392505050565b600080516020615a11833981519152600182089050613a0b565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613a9a61466e565b60005b6002811015613c5f576000613ab38260066155ed565b9050848260028110613ac757613ac761524e565b60200201515183613ad983600061534f565b600c8110613ae957613ae961524e565b6020020152848260028110613b0057613b0061524e565b60200201516020015183826001613b17919061534f565b600c8110613b2757613b2761524e565b6020020152838260028110613b3e57613b3e61524e565b6020020151515183613b5183600261534f565b600c8110613b6157613b6161524e565b6020020152838260028110613b7857613b7861524e565b6020020151516001602002015183613b9183600361534f565b600c8110613ba157613ba161524e565b6020020152838260028110613bb857613bb861524e565b602002015160200151600060028110613bd357613bd361524e565b602002015183613be483600461534f565b600c8110613bf457613bf461524e565b6020020152838260028110613c0b57613c0b61524e565b602002015160200151600160028110613c2657613c2661524e565b602002015183613c3783600561534f565b600c8110613c4757613c4761524e565b60200201525080613c5781615367565b915050613a9d565b50613c6861468d565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6060600080613c9a84613eea565b61ffff166001600160401b03811115613cb557613cb561475e565b6040519080825280601f01601f191660200182016040528015613cdf576020820181803683370190505b5090506000805b825182108015613cf7575061010081105b156130db576001811b935085841615613d3e578060f81b838381518110613d2057613d2061524e565b60200101906001600160f81b031916908160001a9053508160010191505b613d4781615367565b9050613ce6565b6065546001600160a01b031633146122ed5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016108d4565b609754604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1609780546001600160a01b0319166001600160a01b0392909216919091179055565b60c9805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc906020015b60405180910390a150565b600080613e65846143d8565b9050808360ff166001901b11613ee35760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c75650060648201526084016108d4565b9392505050565b6000805b821561082757613eff6001846153d8565b9092169180613f0d81615902565b915050613eee565b60408051808201909152600080825260208201526102008261ffff1610613f715760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b60448201526064016108d4565b8161ffff1660011415613f85575081610827565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff1610613fee57600161ffff871660ff83161c81161415613fd157613fce8484613884565b93505b613fdb8384613884565b92506201fffe600192831b169101613fa1565b509195945050505050565b6040805180820190915260008082526020820152815115801561401e57506020820151155b1561403c575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615a11833981519152846020015161406f9190615264565b61408790600080516020615a118339815191526153d8565b905292915050565b919050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60fb546001600160a01b031615801561410757506001600160a01b03821615155b6141895760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a4016108d4565b60fc81905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a26141cc826136f6565b5050565b6001600160a01b038116600081815260026020908152604091829020805460ff8082161560ff1990921682179092558351948552161515908301527f5c3265f5fb462ef4930fe47beaa183647c97f19ba545b761f41bc8cd4621d4149101613e4e565b600061427082604080518082019091526000808252602082015250604080518082019091528151815260609091015163ffffffff16602082015290565b6040805182516020808301919091529092015163ffffffff16908201526060015b604051602081830303815290604052805190602001209050919050565b6000816040516020016142919190615992565b6097546001600160a01b031633146122ed5760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a4016108d4565b60008080600080516020615a118339815191526003600080516020615a1183398151915286600080516020615a118339815191528889090908905060006143cc827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615a11833981519152614565565b91959194509092505050565b6000610100825111156144615760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016108d4565b815161446f57506000919050565b600080836000815181106144855761448561524e565b0160200151600160f89190911c81901b92505b845181101561455c578481815181106144b3576144b361524e565b0160200151600160f89190911c1b91508282116145485760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016108d4565b9181179161455581615367565b9050614498565b50909392505050565b60008061457061468d565b6145786146ab565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa925082801561383c5750826146025760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c75726500000000000060448201526064016108d4565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061465c6146c9565b81526020016146696146c9565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60ff811681146108e657600080fd5b60006020828403121561470857600080fd5b8135613ee3816146e7565b6001600160a01b03811681146108e657600080fd5b60006020828403121561473a57600080fd5b8135613ee381614713565b60006020828403121561475757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156147965761479661475e565b60405290565b60405161010081016001600160401b03811182821017156147965761479661475e565b604051601f8201601f191681016001600160401b03811182821017156147e7576147e761475e565b604052919050565b60006040828403121561480157600080fd5b614809614774565b9050813581526020820135602082015292915050565b600082601f83011261483057600080fd5b614838614774565b80604084018581111561484a57600080fd5b845b8181101561486457803584526020938401930161484c565b509095945050505050565b60006080828403121561488157600080fd5b614889614774565b9050614895838361481f565b81526148a4836040840161481f565b602082015292915050565b60008060008061012085870312156148c657600080fd5b843593506148d786602087016147ef565b92506148e6866060870161486f565b91506148f58660e087016147ef565b905092959194509250565b60006020828403121561491257600080fd5b813561ffff81168114613ee357600080fd5b803561408f81614713565b6020808252825182820181905260009190848201906040850190845b818110156149705783516001600160a01b03168352928401929184019160010161494b565b50909695505050505050565b80151581146108e657600080fd5b60006020828403121561499c57600080fd5b8135613ee38161497c565b63ffffffff811681146108e657600080fd5b803561408f816149a7565b60006001600160401b038211156149dd576149dd61475e565b5060051b60200190565b600082601f8301126149f857600080fd5b81356020614a0d614a08836149c4565b6147bf565b82815260059290921b84018101918181019086841115614a2c57600080fd5b8286015b84811015614a50578035614a43816149a7565b8352918301918301614a30565b509695505050505050565b600082601f830112614a6c57600080fd5b81356020614a7c614a08836149c4565b82815260069290921b84018101918181019086841115614a9b57600080fd5b8286015b84811015614a5057614ab188826147ef565b835291830191604001614a9f565b600082601f830112614ad057600080fd5b81356020614ae0614a08836149c4565b82815260059290921b84018101918181019086841115614aff57600080fd5b8286015b84811015614a505780356001600160401b03811115614b225760008081fd5b614b308986838b01016149e7565b845250918301918301614b03565b60006101808284031215614b5157600080fd5b614b5961479c565b905081356001600160401b0380821115614b7257600080fd5b614b7e858386016149e7565b83526020840135915080821115614b9457600080fd5b614ba085838601614a5b565b60208401526040840135915080821115614bb957600080fd5b614bc585838601614a5b565b6040840152614bd7856060860161486f565b6060840152614be98560e086016147ef565b6080840152610120840135915080821115614c0357600080fd5b614c0f858386016149e7565b60a0840152610140840135915080821115614c2957600080fd5b614c35858386016149e7565b60c0840152610160840135915080821115614c4f57600080fd5b50614c5c84828501614abf565b60e08301525092915050565b600080600080600060808688031215614c8057600080fd5b8535945060208601356001600160401b0380821115614c9e57600080fd5b818801915088601f830112614cb257600080fd5b813581811115614cc157600080fd5b896020828501011115614cd357600080fd5b6020830196509450614ce7604089016149b9565b93506060880135915080821115614cfd57600080fd5b50614d0a88828901614b3e565b9150509295509295909350565b600081518084526020808501945080840160005b83811015614d505781516001600160601b031687529582019590820190600101614d2b565b509495945050505050565b6040815260008351604080840152614d766080840182614d17565b90506020850151603f19848303016060850152614d938282614d17565b925050508260208301529392505050565b600080600080600060a08688031215614dbc57600080fd5b8535614dc781614713565b945060208681013594506040870135614ddf81614713565b935060608701356001600160401b03811115614dfa57600080fd5b8701601f81018913614e0b57600080fd5b8035614e19614a08826149c4565b81815260059190911b8201830190838101908b831115614e3857600080fd5b928401925b82841015614e5f578335614e5081614713565b82529284019290840190614e3d565b8096505050505050614e7360808701614924565b90509295509295909350565b60008060408385031215614e9257600080fd5b82356001600160401b0380821115614ea957600080fd5b9084019060808287031215614ebd57600080fd5b90925060208401359080821115614ed357600080fd5b50614ee085828601614b3e565b9150509250929050565b60005b83811015614f05578181015183820152602001614eed565b83811115614f14576000848401525b50505050565b60008151808452614f32816020860160208601614eea565b601f01601f19169290920160200192915050565b602081526000613ee36020830184614f1a565b60006001600160401b03821115614f7257614f7261475e565b50601f01601f191660200190565b6000614f8e614a0884614f59565b9050828152838383011115614fa257600080fd5b828260208301376000602084830101529392505050565b600082601f830112614fca57600080fd5b613ee383833560208501614f80565b60008060408385031215614fec57600080fd5b8235614ff781614713565b915060208301356001600160401b038082111561501357600080fd5b908401906060828703121561502757600080fd5b6040516060810181811083821117156150425761504261475e565b60405282358281111561505457600080fd5b61506088828601614fb9565b82525060208301356020820152604083013560408201528093505050509250929050565b60006020828403121561509657600080fd5b81356001600160401b038111156150ac57600080fd5b8201601f810184136150bd57600080fd5b6150cc84823560208401614f80565b949350505050565b6000602082840312156150e657600080fd5b8135613ee3816149a7565b6000806020838503121561510457600080fd5b82356001600160401b038082111561511b57600080fd5b818501915085601f83011261512f57600080fd5b81358181111561513e57600080fd5b8660208260051b850101111561515357600080fd5b60209290920196919550909350505050565b60006020828403121561517757600080fd5b8151613ee38161497c565b60006020828403121561519457600080fd5b8151613ee381614713565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b60006020828403121561524357600080fd5b8151613ee3816146e7565b634e487b7160e01b600052603260045260246000fd5b60008261528157634e487b7160e01b600052601260045260246000fd5b500690565b60006060828403121561529857600080fd5b604051606081018181106001600160401b03821117156152ba576152ba61475e565b60405282516152c8816149a7565b815260208301516152d8816149a7565b602082015260408301516152eb816146e7565b60408201529392505050565b60006020828403121561530957600080fd5b5051919050565b60006020828403121561532257600080fd5b81516001600160c01b0381168114613ee357600080fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561536257615362615339565b500190565b600060001982141561537b5761537b615339565b5060010190565b6001600160601b03811681146108e657600080fd5b6000604082840312156153a957600080fd5b6153b1614774565b82516153bc81614713565b815260208301516153cc81615382565b60208201529392505050565b6000828210156153ea576153ea615339565b500390565b60006020828403121561540157600080fd5b815167ffffffffffffffff1981168114613ee357600080fd5b60006020828403121561542c57600080fd5b8151613ee381615382565b60006001600160601b038381169083168181101561545757615457615339565b039392505050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b8381101561549a5781518552938201939082019060010161547e565b5092979650505050505050565b600063ffffffff8083168185168083038211156154c6576154c6615339565b01949350505050565b6000808335601e198436030181126154e657600080fd5b8301803591506001600160401b0382111561550057600080fd5b60200191503681900382131561551557600080fd5b9250929050565b60006080823603121561552e57600080fd5b604051608081016001600160401b0382821081831117156155515761555161475e565b8160405284358352602085013591508082111561556d57600080fd5b61557936838701614fb9565b6020840152604085013591508082111561559257600080fd5b5061559f36828601614fb9565b60408301525060608301356155b3816149a7565b606082015292915050565b60006001600160601b03808316818516818304811182151516156155e4576155e4615339565b02949350505050565b600081600019048311821515161561560757615607615339565b500290565b60006020828403121561561e57600080fd5b81516001600160401b0381111561563457600080fd5b8201601f8101841361564557600080fd5b8051615653614a0882614f59565b81815285602083850101111561566857600080fd5b615679826020830160208601614eea565b95945050505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b60018060a01b038316815260406020820152600082516060604084015261572460a0840182614f1a565b90506020840151606084015260408401516080840152809150509392505050565b60006040828403121561575757600080fd5b61575f614774565b825161576a816146e7565b815260208301516153cc816146e7565b60008235609e1983360301811261579057600080fd5b9190910192915050565b8183526000602080850194508260005b85811015614d505781356157bd81614713565b6001600160a01b03168752818301356157d581615382565b6001600160601b03168784015260409687019691909101906001016157aa565b60208082528181018390526000906040808401600586901b8501820187855b888110156158f457878303603f190184528135368b9003609e1901811261583a57600080fd5b8a0160a0813536839003601e1901811261585357600080fd5b820180356001600160401b0381111561586b57600080fd5b8060061b360384131561587d57600080fd5b82875261588f838801828c850161579a565b9250505061589e888301614924565b6001600160a01b031688860152818701358786015260606158c08184016149b9565b63ffffffff169086015260806158d78382016149b9565b63ffffffff16950194909452509285019290850190600101615814565b509098975050505050505050565b600061ffff8083168181141561591a5761591a615339565b6001019392505050565b6000808335601e1984360301811261593b57600080fd5b83016020810192503590506001600160401b0381111561595a57600080fd5b80360383131561551557600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b602081528135602082015260006159ac6020840184615924565b608060408501526159c160a085018284615969565b9150506159d16040850185615924565b848303601f190160608601526159e8838284615969565b9250505060608401356159fa816149a7565b63ffffffff16608093909301929092525091905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47456967656e4441536572766963654d616e616765722e636f6e6669726d426174424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212202529869ee37a54378cbfaf69b87265a93f5e659e9dfa4373402fa036bea83e5764736f6c634300080c0033", } // ContractEigenDAServiceManagerABI is the input ABI used to generate the binding from. @@ -117,7 +117,7 @@ var ContractEigenDAServiceManagerABI = ContractEigenDAServiceManagerMetaData.ABI var ContractEigenDAServiceManagerBin = ContractEigenDAServiceManagerMetaData.Bin // DeployContractEigenDAServiceManager deploys a new Ethereum contract, binding an instance of ContractEigenDAServiceManager to it. -func DeployContractEigenDAServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, __avsDirectory common.Address, __rewardsCoordinator common.Address, __registryCoordinator common.Address, __stakeRegistry common.Address, __eigenDAThresholdRegistry common.Address, __eigenDARelayRegistry common.Address) (common.Address, *types.Transaction, *ContractEigenDAServiceManager, error) { +func DeployContractEigenDAServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, __avsDirectory common.Address, __rewardsCoordinator common.Address, __registryCoordinator common.Address, __stakeRegistry common.Address, __eigenDAThresholdRegistry common.Address, __eigenDARelayRegistry common.Address, __paymentVault common.Address) (common.Address, *types.Transaction, *ContractEigenDAServiceManager, error) { parsed, err := ContractEigenDAServiceManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -126,7 +126,7 @@ func DeployContractEigenDAServiceManager(auth *bind.TransactOpts, backend bind.C return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractEigenDAServiceManagerBin), backend, __avsDirectory, __rewardsCoordinator, __registryCoordinator, __stakeRegistry, __eigenDAThresholdRegistry, __eigenDARelayRegistry) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractEigenDAServiceManagerBin), backend, __avsDirectory, __rewardsCoordinator, __registryCoordinator, __stakeRegistry, __eigenDAThresholdRegistry, __eigenDARelayRegistry, __paymentVault) if err != nil { return common.Address{}, nil, nil, err } @@ -1020,6 +1020,37 @@ func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession return _ContractEigenDAServiceManager.Contract.PauserRegistry(&_ContractEigenDAServiceManager.CallOpts) } +// PaymentVault is a free data retrieval call binding the contract method 0xed3916f7. +// +// Solidity: function paymentVault() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCaller) PaymentVault(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractEigenDAServiceManager.contract.Call(opts, &out, "paymentVault") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PaymentVault is a free data retrieval call binding the contract method 0xed3916f7. +// +// Solidity: function paymentVault() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerSession) PaymentVault() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.PaymentVault(&_ContractEigenDAServiceManager.CallOpts) +} + +// PaymentVault is a free data retrieval call binding the contract method 0xed3916f7. +// +// Solidity: function paymentVault() view returns(address) +func (_ContractEigenDAServiceManager *ContractEigenDAServiceManagerCallerSession) PaymentVault() (common.Address, error) { + return _ContractEigenDAServiceManager.Contract.PaymentVault(&_ContractEigenDAServiceManager.CallOpts) +} + // QuorumAdversaryThresholdPercentages is a free data retrieval call binding the contract method 0x8687feae. // // Solidity: function quorumAdversaryThresholdPercentages() view returns(bytes) diff --git a/contracts/bindings/MockRollup/binding.go b/contracts/bindings/MockRollup/binding.go index e9695eaac..9bbbeb7a0 100644 --- a/contracts/bindings/MockRollup/binding.go +++ b/contracts/bindings/MockRollup/binding.go @@ -83,7 +83,7 @@ type QuorumBlobParam struct { // ContractMockRollupMetaData contains all meta data concerning the ContractMockRollup contract. var ContractMockRollupMetaData = &bind.MetaData{ ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_eigenDAServiceManager\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"},{\"name\":\"_tau\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"challengeCommitment\",\"inputs\":[{\"name\":\"timestamp\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"point\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"challengeValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"commitments\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"confirmer\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"polynomialCommitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"eigenDAServiceManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIEigenDAServiceManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"postCommitment\",\"inputs\":[{\"name\":\"blobHeader\",\"type\":\"tuple\",\"internalType\":\"structBlobHeader\",\"components\":[{\"name\":\"commitment\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"dataLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumBlobParams\",\"type\":\"tuple[]\",\"internalType\":\"structQuorumBlobParam[]\",\"components\":[{\"name\":\"quorumNumber\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"adversaryThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"confirmationThresholdPercentage\",\"type\":\"uint8\",\"internalType\":\"uint8\"},{\"name\":\"chunkLength\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}]},{\"name\":\"blobVerificationProof\",\"type\":\"tuple\",\"internalType\":\"structBlobVerificationProof\",\"components\":[{\"name\":\"batchId\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"blobIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"batchMetadata\",\"type\":\"tuple\",\"internalType\":\"structBatchMetadata\",\"components\":[{\"name\":\"batchHeader\",\"type\":\"tuple\",\"internalType\":\"structBatchHeader\",\"components\":[{\"name\":\"blobHeadersRoot\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"signedStakeForQuorums\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"signatoryRecordHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"confirmationBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"inclusionProof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumIndices\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"tau\",\"inputs\":[],\"outputs\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"}]", - Bin: "0x60806040523480156200001157600080fd5b5060405162001ecc38038062001ecc833981016040819052620000349162000067565b600080546001600160a01b0319166001600160a01b039390931692909217909155805160015560200151600255620000f9565b60008082840360608112156200007c57600080fd5b83516001600160a01b03811681146200009457600080fd5b92506040601f1982011215620000a957600080fd5b50604080519081016001600160401b0381118282101715620000db57634e487b7160e01b600052604160045260246000fd5b60409081526020858101518352940151938101939093525092909150565b611dc380620001096000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806349ce89971461005c578063b5144c73146100cf578063cfc4af55146100e4578063d2d16eb214610107578063fc30cad01461012a575b600080fd5b6100b761006a36600461154e565b6003602090815260009182526040918290208054835180850190945260018201548452600290910154918301919091526001600160a01b03811691600160a01b90910463ffffffff169083565b6040516100c693929190611567565b60405180910390f35b6100e26100dd36600461189e565b610155565b005b6001546002546100f2919082565b604080519283526020830191909152016100c6565b61011a610115366004611a7b565b610270565b60405190151581526020016100c6565b60005461013d906001600160a01b031681565b6040516001600160a01b0390911681526020016100c6565b426000908152600360205260409020546001600160a01b0316156101dd5760405162461bcd60e51b815260206004820152603460248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a20436f6d6d696044820152731d1b595b9d08185b1c9958591e481c1bdcdd195960621b60648201526084015b60405180910390fd5b6000546101f59083906001600160a01b0316836103f8565b506040805160608101825233815260208381015163ffffffff90811682840190815294518385019081524260009081526003845294909420925183549551909116600160a01b026001600160c01b03199095166001600160a01b03919091161793909317815590518051600183015590910151600290910155565b6000848152600360209081526040808320815160608101835281546001600160a01b038082168352600160a01b90910463ffffffff16828601528351808501855260018401548152600290930154948301949094529182015280519091166103385760405162461bcd60e51b815260206004820152603560248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527410dbdb5b5a5d1b595b9d081b9bdd081c1bdcdd1959605a1b60648201526084016101d4565b806020015163ffffffff1685106103c35760405162461bcd60e51b815260206004820152604360248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527f506f696e74206d757374206265206c657373207468616e2064617461206c656e6064820152620cee8d60eb1b608482015260a4016101d4565b60408051808201825260015481526002546020820152908201516103ec91879186919088610ab8565b9150505b949350505050565b805160405163eccbbfc960e01b815263ffffffff90911660048201526001600160a01b0383169063eccbbfc990602401602060405180830381865afa158015610445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104699190611ae9565b6104768260400151610b35565b146104fd5760405162461bcd60e51b815260206004820152604b60248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206260448201527f617463684d6574616461746120646f6573206e6f74206d617463682073746f7260648201526a6564206d6574616461746160a81b608482015260a4016101d4565b60608101516040820151515161054f919061051786610bac565b60405160200161052991815260200190565b60405160208183030381529060405280519060200120846020015163ffffffff16610bdc565b6105c15760405162461bcd60e51b815260206004820152603960248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206960448201527f6e636c7573696f6e2070726f6f6620697320696e76616c69640000000000000060648201526084016101d4565b6000805b8460400151518110156109a157846040015181815181106105e8576105e8611b02565b60200260200101516000015160ff16836040015160000151602001518460800151838151811061061a5761061a611b02565b0160200151815160f89190911c90811061063657610636611b02565b016020015160f81c146106b15760405162461bcd60e51b815260206004820152603a60248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a207160448201527f756f72756d4e756d62657220646f6573206e6f74206d6174636800000000000060648201526084016101d4565b846040015181815181106106c7576106c7611b02565b60200260200101516040015160ff16856040015182815181106106ec576106ec611b02565b60200260200101516020015160ff161061077f5760405162461bcd60e51b815260206004820152604860248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206160448201527f64766572736172795468726573686f6c6450657263656e74616765206973206e6064820152671bdd081d985b1a5960c21b608482015260a4016101d4565b60006107af858760400151848151811061079b5761079b611b02565b60200260200101516000015160ff16610bf4565b905060ff811615610866578060ff16866040015183815181106107d4576107d4611b02565b60200260200101516020015160ff1610156108665760405162461bcd60e51b815260206004820152604660248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206160448201527f64766572736172795468726573686f6c6450657263656e74616765206973206e6064820152651bdd081b595d60d21b608482015260a4016101d4565b8560400151828151811061087c5761087c611b02565b60200260200101516040015160ff1684604001516000015160400151856080015184815181106108ae576108ae611b02565b0160200151815160f89190911c9081106108ca576108ca611b02565b016020015160f81c10156109585760405162461bcd60e51b815260206004820152604960248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206360448201527f6f6e6669726d6174696f6e5468726573686f6c6450657263656e7461676520696064820152681cc81b9bdd081b595d60ba1b608482015260a4016101d4565b61098b838760400151848151811061097257610972611b02565b602002602001015160000151600160ff919091161b1790565b925050808061099990611b2e565b9150506105c5565b50610a1a610a13846001600160a01b031663e15234ff6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156109e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0e9190810190611b75565b610ceb565b8281161490565b610ab25760405162461bcd60e51b815260206004820152605960248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a207260448201527f657175697265642071756f72756d7320617265206e6f7420612073756273657460648201527f206f662074686520636f6e6669726d65642071756f72756d7300000000000000608482015260a4016101d4565b50505050565b600080610aef610aea604080518082018252600080825260209182015281518083019092526001825260029082015290565b610e78565b9050610b2a610b08610b01838a610f37565b8790610fce565b84610b1d610b16858b610f37565b8890610fce565b610b25611062565b611122565b979650505050505050565b6000610ba68260000151604051602001610b4f9190611c18565b60408051808303601f1901815282825280516020918201208682015187840151838601929092528484015260e01b6001600160e01b0319166060840152815160448185030181526064909301909152815191012090565b92915050565b600081604051602001610bbf9190611c78565b604051602081830303815290604052805190602001209050919050565b600083610bea86858561138f565b1495945050505050565b600081836001600160a01b0316638687feae6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c5d9190810190611b75565b511115610ba657826001600160a01b0316638687feae6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cca9190810190611b75565b8281518110610cdb57610cdb611b02565b016020015160f81c905092915050565b600061010082511115610d745760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016101d4565b8151610d8257506000919050565b60008083600081518110610d9857610d98611b02565b0160200151600160f89190911c81901b92505b8451811015610e6f57848181518110610dc657610dc6611b02565b0160200151600160f89190911c1b9150828211610e5b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016101d4565b91811791610e6881611b2e565b9050610dab565b50909392505050565b60408051808201909152600080825260208201528151158015610e9d57506020820151155b15610ebb575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478460200151610f009190611d1d565b610f2a907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611d3f565b905292915050565b919050565b6040805180820190915260008082526020820152610f53611492565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015610f8657610f88565bfe5b5080610fc65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016101d4565b505092915050565b6040805180820190915260008082526020820152610fea6114b0565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015610f86575080610fc65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016101d4565b61106a6114ce565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916111516114f3565b60005b600281101561131657600061116a826006611d56565b905084826002811061117e5761117e611b02565b60200201515183611190836000611d75565b600c81106111a0576111a0611b02565b60200201528482600281106111b7576111b7611b02565b602002015160200151838260016111ce9190611d75565b600c81106111de576111de611b02565b60200201528382600281106111f5576111f5611b02565b6020020151515183611208836002611d75565b600c811061121857611218611b02565b602002015283826002811061122f5761122f611b02565b6020020151516001602002015183611248836003611d75565b600c811061125857611258611b02565b602002015283826002811061126f5761126f611b02565b60200201516020015160006002811061128a5761128a611b02565b60200201518361129b836004611d75565b600c81106112ab576112ab611b02565b60200201528382600281106112c2576112c2611b02565b6020020151602001516001600281106112dd576112dd611b02565b6020020151836112ee836005611d75565b600c81106112fe576112fe611b02565b6020020152508061130e81611b2e565b915050611154565b5061131f611512565b60006020826101808560086107d05a03fa9050808015610f8657508061137f5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016101d4565b5051151598975050505050505050565b60006020845161139f9190611d1d565b156114265760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a4016101d4565b8260205b855181116114895761143d600285611d1d565b61145e57816000528086015160205260406000209150600284049350611477565b8086015160005281602052604060002091506002840493505b611482602082611d75565b905061142a565b50949350505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806114e1611530565b81526020016114ee611530565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561156057600080fd5b5035919050565b6001600160a01b038416815263ffffffff83166020820152608081016103f0604083018480518252602090810151910152565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156115d3576115d361159a565b60405290565b6040516080810167ffffffffffffffff811182821017156115d3576115d361159a565b60405160a0810167ffffffffffffffff811182821017156115d3576115d361159a565b6040805190810167ffffffffffffffff811182821017156115d3576115d361159a565b604051601f8201601f1916810167ffffffffffffffff8111828210171561166b5761166b61159a565b604052919050565b803563ffffffff81168114610f3257600080fd5b803560ff81168114610f3257600080fd5b600067ffffffffffffffff8211156116b2576116b261159a565b50601f01601f191660200190565b600082601f8301126116d157600080fd5b81356116e46116df82611698565b611642565b8181528460208386010111156116f957600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561172857600080fd5b6117306115b0565b9050813567ffffffffffffffff8082111561174a57600080fd5b908301906080828603121561175e57600080fd5b6117666115d9565b8235815260208301358281111561177c57600080fd5b611788878286016116c0565b6020830152506040830135828111156117a057600080fd5b6117ac878286016116c0565b6040830152506117be60608401611673565b606082015283525050602082810135908201526117dd60408301611673565b604082015292915050565b600060a082840312156117fa57600080fd5b6118026115fc565b905061180d82611673565b815261181b60208301611673565b6020820152604082013567ffffffffffffffff8082111561183b57600080fd5b61184785838601611716565b6040840152606084013591508082111561186057600080fd5b61186c858386016116c0565b6060840152608084013591508082111561188557600080fd5b50611892848285016116c0565b60808301525092915050565b60008060408084860312156118b257600080fd5b833567ffffffffffffffff808211156118ca57600080fd5b908501908187036080808212156118e057600080fd5b6118e86115b0565b858312156118f557600080fd5b6118fd61161f565b9250843583526020808601358185015283825261191b878701611673565b8183015260609350838601358581111561193457600080fd5b8087019650508a601f87011261194957600080fd5b85358581111561195b5761195b61159a565b611969828260051b01611642565b81815260079190911b8701820190828101908d83111561198857600080fd5b978301975b828910156119f45785898f0312156119a55760008081fd5b6119ad6115d9565b6119b68a611687565b81526119c3858b01611687565b858201526119d28b8b01611687565b8b8201526119e1888b01611673565b818901528252978501979083019061198d565b98840198909852509097508801359450505080831115611a1357600080fd5b5050611a21858286016117e8565b9150509250929050565b600082601f830112611a3c57600080fd5b611a4461161f565b806040840185811115611a5657600080fd5b845b81811015611a70578035845260209384019301611a58565b509095945050505050565b60008060008084860360e0811215611a9257600080fd5b85359450602086013593506080603f1982011215611aaf57600080fd5b50611ab861161f565b611ac58760408801611a2b565b8152611ad48760808801611a2b565b60208201529396929550929360c00135925050565b600060208284031215611afb57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611b4257611b42611b18565b5060010190565b60005b83811015611b64578181015183820152602001611b4c565b83811115610ab25750506000910152565b600060208284031215611b8757600080fd5b815167ffffffffffffffff811115611b9e57600080fd5b8201601f81018413611baf57600080fd5b8051611bbd6116df82611698565b818152856020838501011115611bd257600080fd5b611be3826020830160208601611b49565b95945050505050565b60008151808452611c04816020860160208601611b49565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160806040840152611c3e60a0840182611bec565b90506040840151601f19848303016060850152611c5b8282611bec565b91505063ffffffff60608501511660808401528091505092915050565b60208082528251805183830152810151604083015260009060a0830181850151606063ffffffff808316828801526040925082880151608080818a015285825180885260c08b0191508884019750600093505b80841015611d0e578751805160ff90811684528a82015181168b850152888201511688840152860151851686830152968801966001939093019290820190611ccb565b509a9950505050505050505050565b600082611d3a57634e487b7160e01b600052601260045260246000fd5b500690565b600082821015611d5157611d51611b18565b500390565b6000816000190483118215151615611d7057611d70611b18565b500290565b60008219821115611d8857611d88611b18565b50019056fea264697066735822122099b64bd10ac606646f0579ab9c7f7c5a14f59c8e48bc1ded1f06fdd0f38e810d64736f6c634300080c0033", + Bin: "0x60806040523480156200001157600080fd5b5060405162001ecc38038062001ecc833981016040819052620000349162000067565b600080546001600160a01b0319166001600160a01b039390931692909217909155805160015560200151600255620000f9565b60008082840360608112156200007c57600080fd5b83516001600160a01b03811681146200009457600080fd5b92506040601f1982011215620000a957600080fd5b50604080519081016001600160401b0381118282101715620000db57634e487b7160e01b600052604160045260246000fd5b60409081526020858101518352940151938101939093525092909150565b611dc380620001096000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806349ce89971461005c578063b5144c73146100cf578063cfc4af55146100e4578063d2d16eb214610107578063fc30cad01461012a575b600080fd5b6100b761006a36600461154e565b6003602090815260009182526040918290208054835180850190945260018201548452600290910154918301919091526001600160a01b03811691600160a01b90910463ffffffff169083565b6040516100c693929190611567565b60405180910390f35b6100e26100dd36600461189e565b610155565b005b6001546002546100f2919082565b604080519283526020830191909152016100c6565b61011a610115366004611a7b565b610270565b60405190151581526020016100c6565b60005461013d906001600160a01b031681565b6040516001600160a01b0390911681526020016100c6565b426000908152600360205260409020546001600160a01b0316156101dd5760405162461bcd60e51b815260206004820152603460248201527f4d6f636b526f6c6c75702e706f7374436f6d6d69746d656e743a20436f6d6d696044820152731d1b595b9d08185b1c9958591e481c1bdcdd195960621b60648201526084015b60405180910390fd5b6000546101f59083906001600160a01b0316836103f8565b506040805160608101825233815260208381015163ffffffff90811682840190815294518385019081524260009081526003845294909420925183549551909116600160a01b026001600160c01b03199095166001600160a01b03919091161793909317815590518051600183015590910151600290910155565b6000848152600360209081526040808320815160608101835281546001600160a01b038082168352600160a01b90910463ffffffff16828601528351808501855260018401548152600290930154948301949094529182015280519091166103385760405162461bcd60e51b815260206004820152603560248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527410dbdb5b5a5d1b595b9d081b9bdd081c1bdcdd1959605a1b60648201526084016101d4565b806020015163ffffffff1685106103c35760405162461bcd60e51b815260206004820152604360248201527f4d6f636b526f6c6c75702e6368616c6c656e6765436f6d6d69746d656e743a2060448201527f506f696e74206d757374206265206c657373207468616e2064617461206c656e6064820152620cee8d60eb1b608482015260a4016101d4565b60408051808201825260015481526002546020820152908201516103ec91879186919088610ab8565b9150505b949350505050565b805160405163eccbbfc960e01b815263ffffffff90911660048201526001600160a01b0383169063eccbbfc990602401602060405180830381865afa158015610445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104699190611ae9565b6104768260400151610b35565b146104fd5760405162461bcd60e51b815260206004820152604b60248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206260448201527f617463684d6574616461746120646f6573206e6f74206d617463682073746f7260648201526a6564206d6574616461746160a81b608482015260a4016101d4565b60608101516040820151515161054f919061051786610bac565b60405160200161052991815260200190565b60405160208183030381529060405280519060200120846020015163ffffffff16610bdc565b6105c15760405162461bcd60e51b815260206004820152603960248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206960448201527f6e636c7573696f6e2070726f6f6620697320696e76616c69640000000000000060648201526084016101d4565b6000805b8460400151518110156109a157846040015181815181106105e8576105e8611b02565b60200260200101516000015160ff16836040015160000151602001518460800151838151811061061a5761061a611b02565b0160200151815160f89190911c90811061063657610636611b02565b016020015160f81c146106b15760405162461bcd60e51b815260206004820152603a60248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a207160448201527f756f72756d4e756d62657220646f6573206e6f74206d6174636800000000000060648201526084016101d4565b846040015181815181106106c7576106c7611b02565b60200260200101516040015160ff16856040015182815181106106ec576106ec611b02565b60200260200101516020015160ff161061077f5760405162461bcd60e51b815260206004820152604860248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206160448201527f64766572736172795468726573686f6c6450657263656e74616765206973206e6064820152671bdd081d985b1a5960c21b608482015260a4016101d4565b60006107af858760400151848151811061079b5761079b611b02565b60200260200101516000015160ff16610bf4565b905060ff811615610866578060ff16866040015183815181106107d4576107d4611b02565b60200260200101516020015160ff1610156108665760405162461bcd60e51b815260206004820152604660248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206160448201527f64766572736172795468726573686f6c6450657263656e74616765206973206e6064820152651bdd081b595d60d21b608482015260a4016101d4565b8560400151828151811061087c5761087c611b02565b60200260200101516040015160ff1684604001516000015160400151856080015184815181106108ae576108ae611b02565b0160200151815160f89190911c9081106108ca576108ca611b02565b016020015160f81c10156109585760405162461bcd60e51b815260206004820152604960248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a206360448201527f6f6e6669726d6174696f6e5468726573686f6c6450657263656e7461676520696064820152681cc81b9bdd081b595d60ba1b608482015260a4016101d4565b61098b838760400151848151811061097257610972611b02565b602002602001015160000151600160ff919091161b1790565b925050808061099990611b2e565b9150506105c5565b50610a1a610a13846001600160a01b031663e15234ff6040518163ffffffff1660e01b8152600401600060405180830381865afa1580156109e6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a0e9190810190611b75565b610ceb565b8281161490565b610ab25760405162461bcd60e51b815260206004820152605960248201527f456967656e4441526f6c6c75705574696c732e766572696679426c6f623a207260448201527f657175697265642071756f72756d7320617265206e6f7420612073756273657460648201527f206f662074686520636f6e6669726d65642071756f72756d7300000000000000608482015260a4016101d4565b50505050565b600080610aef610aea604080518082018252600080825260209182015281518083019092526001825260029082015290565b610e78565b9050610b2a610b08610b01838a610f37565b8790610fce565b84610b1d610b16858b610f37565b8890610fce565b610b25611062565b611122565b979650505050505050565b6000610ba68260000151604051602001610b4f9190611c18565b60408051808303601f1901815282825280516020918201208682015187840151838601929092528484015260e01b6001600160e01b0319166060840152815160448185030181526064909301909152815191012090565b92915050565b600081604051602001610bbf9190611c78565b604051602081830303815290604052805190602001209050919050565b600083610bea86858561138f565b1495945050505050565b600081836001600160a01b0316638687feae6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610c35573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610c5d9190810190611b75565b511115610ba657826001600160a01b0316638687feae6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610ca2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610cca9190810190611b75565b8281518110610cdb57610cdb611b02565b016020015160f81c905092915050565b600061010082511115610d745760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a4016101d4565b8151610d8257506000919050565b60008083600081518110610d9857610d98611b02565b0160200151600160f89190911c81901b92505b8451811015610e6f57848181518110610dc657610dc6611b02565b0160200151600160f89190911c1b9150828211610e5b5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a4016101d4565b91811791610e6881611b2e565b9050610dab565b50909392505050565b60408051808201909152600080825260208201528151158015610e9d57506020820151155b15610ebb575050604080518082019091526000808252602082015290565b6040518060400160405280836000015181526020017f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd478460200151610f009190611d1d565b610f2a907f30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47611d3f565b905292915050565b919050565b6040805180820190915260008082526020820152610f53611492565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015610f8657610f88565bfe5b5080610fc65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b60448201526064016101d4565b505092915050565b6040805180820190915260008082526020820152610fea6114b0565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015610f86575080610fc65760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b60448201526064016101d4565b61106a6114ce565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b6040805180820182528581526020808201859052825180840190935285835282018390526000916111516114f3565b60005b600281101561131657600061116a826006611d56565b905084826002811061117e5761117e611b02565b60200201515183611190836000611d75565b600c81106111a0576111a0611b02565b60200201528482600281106111b7576111b7611b02565b602002015160200151838260016111ce9190611d75565b600c81106111de576111de611b02565b60200201528382600281106111f5576111f5611b02565b6020020151515183611208836002611d75565b600c811061121857611218611b02565b602002015283826002811061122f5761122f611b02565b6020020151516001602002015183611248836003611d75565b600c811061125857611258611b02565b602002015283826002811061126f5761126f611b02565b60200201516020015160006002811061128a5761128a611b02565b60200201518361129b836004611d75565b600c81106112ab576112ab611b02565b60200201528382600281106112c2576112c2611b02565b6020020151602001516001600281106112dd576112dd611b02565b6020020151836112ee836005611d75565b600c81106112fe576112fe611b02565b6020020152508061130e81611b2e565b915050611154565b5061131f611512565b60006020826101808560086107d05a03fa9050808015610f8657508061137f5760405162461bcd60e51b81526020600482015260156024820152741c185a5c9a5b99cb5bdc18dbd9194b59985a5b1959605a1b60448201526064016101d4565b5051151598975050505050505050565b60006020845161139f9190611d1d565b156114265760405162461bcd60e51b815260206004820152604b60248201527f4d65726b6c652e70726f63657373496e636c7573696f6e50726f6f664b65636360448201527f616b3a2070726f6f66206c656e6774682073686f756c642062652061206d756c60648201526a3a34b836329037b310199960a91b608482015260a4016101d4565b8260205b855181116114895761143d600285611d1d565b61145e57816000528086015160205260406000209150600284049350611477565b8086015160005281602052604060002091506002840493505b611482602082611d75565b905061142a565b50949350505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b60405180604001604052806114e1611530565b81526020016114ee611530565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b60006020828403121561156057600080fd5b5035919050565b6001600160a01b038416815263ffffffff83166020820152608081016103f0604083018480518252602090810151910152565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156115d3576115d361159a565b60405290565b6040516080810167ffffffffffffffff811182821017156115d3576115d361159a565b60405160a0810167ffffffffffffffff811182821017156115d3576115d361159a565b6040805190810167ffffffffffffffff811182821017156115d3576115d361159a565b604051601f8201601f1916810167ffffffffffffffff8111828210171561166b5761166b61159a565b604052919050565b803563ffffffff81168114610f3257600080fd5b803560ff81168114610f3257600080fd5b600067ffffffffffffffff8211156116b2576116b261159a565b50601f01601f191660200190565b600082601f8301126116d157600080fd5b81356116e46116df82611698565b611642565b8181528460208386010111156116f957600080fd5b816020850160208301376000918101602001919091529392505050565b60006060828403121561172857600080fd5b6117306115b0565b9050813567ffffffffffffffff8082111561174a57600080fd5b908301906080828603121561175e57600080fd5b6117666115d9565b8235815260208301358281111561177c57600080fd5b611788878286016116c0565b6020830152506040830135828111156117a057600080fd5b6117ac878286016116c0565b6040830152506117be60608401611673565b606082015283525050602082810135908201526117dd60408301611673565b604082015292915050565b600060a082840312156117fa57600080fd5b6118026115fc565b905061180d82611673565b815261181b60208301611673565b6020820152604082013567ffffffffffffffff8082111561183b57600080fd5b61184785838601611716565b6040840152606084013591508082111561186057600080fd5b61186c858386016116c0565b6060840152608084013591508082111561188557600080fd5b50611892848285016116c0565b60808301525092915050565b60008060408084860312156118b257600080fd5b833567ffffffffffffffff808211156118ca57600080fd5b908501908187036080808212156118e057600080fd5b6118e86115b0565b858312156118f557600080fd5b6118fd61161f565b9250843583526020808601358185015283825261191b878701611673565b8183015260609350838601358581111561193457600080fd5b8087019650508a601f87011261194957600080fd5b85358581111561195b5761195b61159a565b611969828260051b01611642565b81815260079190911b8701820190828101908d83111561198857600080fd5b978301975b828910156119f45785898f0312156119a55760008081fd5b6119ad6115d9565b6119b68a611687565b81526119c3858b01611687565b858201526119d28b8b01611687565b8b8201526119e1888b01611673565b818901528252978501979083019061198d565b98840198909852509097508801359450505080831115611a1357600080fd5b5050611a21858286016117e8565b9150509250929050565b600082601f830112611a3c57600080fd5b611a4461161f565b806040840185811115611a5657600080fd5b845b81811015611a70578035845260209384019301611a58565b509095945050505050565b60008060008084860360e0811215611a9257600080fd5b85359450602086013593506080603f1982011215611aaf57600080fd5b50611ab861161f565b611ac58760408801611a2b565b8152611ad48760808801611a2b565b60208201529396929550929360c00135925050565b600060208284031215611afb57600080fd5b5051919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415611b4257611b42611b18565b5060010190565b60005b83811015611b64578181015183820152602001611b4c565b83811115610ab25750506000910152565b600060208284031215611b8757600080fd5b815167ffffffffffffffff811115611b9e57600080fd5b8201601f81018413611baf57600080fd5b8051611bbd6116df82611698565b818152856020838501011115611bd257600080fd5b611be3826020830160208601611b49565b95945050505050565b60008151808452611c04816020860160208601611b49565b601f01601f19169290920160200192915050565b60208152815160208201526000602083015160806040840152611c3e60a0840182611bec565b90506040840151601f19848303016060850152611c5b8282611bec565b91505063ffffffff60608501511660808401528091505092915050565b60208082528251805183830152810151604083015260009060a0830181850151606063ffffffff808316828801526040925082880151608080818a015285825180885260c08b0191508884019750600093505b80841015611d0e578751805160ff90811684528a82015181168b850152888201511688840152860151851686830152968801966001939093019290820190611ccb565b509a9950505050505050505050565b600082611d3a57634e487b7160e01b600052601260045260246000fd5b500690565b600082821015611d5157611d51611b18565b500390565b6000816000190483118215151615611d7057611d70611b18565b500290565b60008219821115611d8857611d88611b18565b50019056fea26469706673582212203eb8469450e15c2f6053e675e9ca80aba4ccd8fdcd79c45cc463c45b7345f09f64736f6c634300080c0033", } // ContractMockRollupABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/PaymentVault/binding.go b/contracts/bindings/PaymentVault/binding.go index f5b3475a4..7349771b7 100644 --- a/contracts/bindings/PaymentVault/binding.go +++ b/contracts/bindings/PaymentVault/binding.go @@ -40,8 +40,8 @@ type IPaymentVaultReservation struct { // ContractPaymentVaultMetaData contains all meta data concerning the ContractPaymentVault contract. var ContractPaymentVaultMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositOnDemand\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getOnDemandAmount\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOnDemandAmounts\",\"inputs\":[{\"name\":\"_accounts\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"_payments\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReservation\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIPaymentVault.Reservation\",\"components\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReservations\",\"inputs\":[{\"name\":\"_accounts\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"_reservations\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentVault.Reservation[]\",\"components\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRateBinInterval\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalSymbolsPerBin\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_minNumSymbols\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_globalSymbolsPerBin\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_pricePerSymbol\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_reservationBinInterval\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_priceUpdateCooldown\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_globalRateBinInterval\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastPriceUpdateTime\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minNumSymbols\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"onDemandPayments\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pricePerSymbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"priceUpdateCooldown\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"reservationBinInterval\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"reservations\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGlobalRateBinInterval\",\"inputs\":[{\"name\":\"_globalRateBinInterval\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalSymbolsPerBin\",\"inputs\":[{\"name\":\"_globalSymbolsPerBin\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPriceParams\",\"inputs\":[{\"name\":\"_minNumSymbols\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_pricePerSymbol\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_priceUpdateCooldown\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setReservation\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_reservation\",\"type\":\"tuple\",\"internalType\":\"structIPaymentVault.Reservation\",\"components\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setReservationBinInterval\",\"inputs\":[{\"name\":\"_reservationBinInterval\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawERC20\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GlobalRateBinIntervalUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalSymbolsPerBinUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OnDemandPaymentUpdated\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"onDemandPayment\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"totalDeposit\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PriceParamsUpdated\",\"inputs\":[{\"name\":\"previousMinNumSymbols\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newMinNumSymbols\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"previousPricePerSymbol\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newPricePerSymbol\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"previousPriceUpdateCooldown\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newPriceUpdateCooldown\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReservationBinIntervalUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"newValue\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReservationUpdated\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"reservation\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIPaymentVault.Reservation\",\"components\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b603354610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60335460ff90811610156100dc576033805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6119ec806100ed6000396000f3fe60806040526004361061016a5760003560e01c8063761dab89116100d1578063b2066f801161008a578063efb435f811610064578063efb435f814610420578063f2fde38b14610456578063f323726a14610476578063fd3dc53a1461048c5761017b565b8063b2066f80146103b0578063d882a5fd146103dd578063d996dc99146103f35761017b565b8063761dab89146102ff5780638142951a146103155780638bec7d02146103355780638da5cb5b146103485780639aec864014610370578063a1db9782146103905761017b565b80634486bfb7116101235780634486bfb71461025b57806349b9a7af146102885780635a3d4f611461029e5780635a8a6869146102b4578063715018a6146102ca5780637201dd02146102df5761017b565b8063039f091c146101855780630eb7ed3d146101ae578063109f8fe5146101ce5780632c1a33bc146101fb5780632e1a7d4d1461021b578063327fad081461023b5761017b565b3661017b5761017933346104bd565b005b61017933346104bd565b34801561019157600080fd5b5061019b60025481565b6040519081526020015b60405180910390f35b3480156101ba57600080fd5b506101796101c93660046113b5565b610540565b3480156101da57600080fd5b506101ee6101e9366004611458565b610589565b6040516101a591906115b5565b34801561020757600080fd5b506101796102163660046113b5565b6107dc565b34801561022757600080fd5b506101796102363660046113b5565b610825565b34801561024757600080fd5b50610179610256366004611617565b6108a2565b34801561026757600080fd5b5061027b610276366004611458565b61098c565b6040516101a59190611643565b34801561029457600080fd5b5061019b60065481565b3480156102aa57600080fd5b5061019b60035481565b3480156102c057600080fd5b5061019b60045481565b3480156102d657600080fd5b50610179610a4b565b3480156102eb57600080fd5b506101796102fa3660046113b5565b610a5f565b34801561030b57600080fd5b5061019b60005481565b34801561032157600080fd5b50610179610330366004611687565b610aa8565b6101796103433660046116da565b610be3565b34801561035457600080fd5b506066546040516001600160a01b0390911681526020016101a5565b34801561037c57600080fd5b5061017961038b366004611782565b610bf0565b34801561039c57600080fd5b506101796103ab366004611858565b610d76565b3480156103bc57600080fd5b506103d06103cb3660046116da565b610e15565b6040516101a59190611882565b3480156103e957600080fd5b5061019b60055481565b3480156103ff57600080fd5b5061019b61040e3660046116da565b60086020526000908152604090205481565b34801561042c57600080fd5b5061019b61043b3660046116da565b6001600160a01b031660009081526008602052604090205490565b34801561046257600080fd5b506101796104713660046116da565b610fbf565b34801561048257600080fd5b5061019b60015481565b34801561049857600080fd5b506104ac6104a73660046116da565b611035565b6040516101a5959493929190611895565b6001600160a01b038216600090815260086020526040812080548392906104e59084906118f1565b90915550506001600160a01b038216600081815260086020908152604091829020548251858152918201527f56b34df61acb18dada28b541448a4ff3faf4c0970eb58b9980468a2c7538332291015b60405180910390a25050565b610548611188565b60035460408051918252602082018390527fc80ff81bc9dc10646cce952d59479338db706f244ef19fc33d454d9d30bda0a3910160405180910390a1600355565b606081516001600160401b038111156105a4576105a46113ce565b6040519080825280602002602001820160405280156105fc57816020015b6040805160a08101825260008082526020808301829052928201526060808201819052608082015282526000199092019101816105c25790505b50905060005b82518110156107d6576007600084838151811061062157610621611909565b6020908102919091018101516001600160a01b03168252818101929092526040908101600020815160a08101835281546001600160401b038082168352600160401b8204811695830195909552600160801b9004909316918301919091526001810180546060840191906106949061191f565b80601f01602080910402602001604051908101604052809291908181526020018280546106c09061191f565b801561070d5780601f106106e25761010080835404028352916020019161070d565b820191906000526020600020905b8154815290600101906020018083116106f057829003601f168201915b505050505081526020016002820180546107269061191f565b80601f01602080910402602001604051908101604052809291908181526020018280546107529061191f565b801561079f5780601f106107745761010080835404028352916020019161079f565b820191906000526020600020905b81548152906001019060200180831161078257829003601f168201915b5050505050815250508282815181106107ba576107ba611909565b6020026020010181905250806107cf90611954565b9050610602565b50919050565b6107e4611188565b60045460408051918252602082018390527ff6b7e27129fefc5c7012885c85042d19038ba1abe27be1402518bafb73f55d1a910160405180910390a1600455565b61082d611188565b60006108416066546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d806000811461088b576040519150601f19603f3d011682016040523d82523d6000602084013e610890565b606091505b505090508061089e57600080fd5b5050565b6108aa611188565b6002546006546108ba91906118f1565b42101561091a5760405162461bcd60e51b815260206004820152602360248201527f70726963652075706461746520636f6f6c646f776e206e6f74207375727061736044820152621cd95960ea1b60648201526084015b60405180910390fd5b600054600154600254604080519384526020840187905283019190915260608201849052608082015260a081018290527f4e8b1ca1fe3c8cccee8ccb90aaf40042352429fa05c61c75b8e77836ed3af5519060c00160405180910390a160019190915560009190915560025542600655565b606081516001600160401b038111156109a7576109a76113ce565b6040519080825280602002602001820160405280156109d0578160200160208202803683370190505b50905060005b82518110156107d657600860008483815181106109f5576109f5611909565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054828281518110610a3057610a30611909565b6020908102919091010152610a4481611954565b90506109d6565b610a53611188565b610a5d60006111e2565b565b610a67611188565b60055460408051918252602082018390527fd8e1e8a19df284fc03b3fb160e79cd05bd9d732512fcfd248ffa3195433b932f910160405180910390a1600555565b603354610100900460ff1615808015610ac85750603354600160ff909116105b80610ae25750303b158015610ae2575060335460ff166001145b610b455760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610911565b6033805460ff191660011790558015610b68576033805461ff0019166101001790555b610b71886111e2565b600087905560038690556001859055600484905560028390556005829055426006558015610bd9576033805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b610bed81346104bd565b50565b610bf8611188565b610c0a81606001518260800151611234565b80602001516001600160401b031681604001516001600160401b031611610c8e5760405162461bcd60e51b815260206004820152603260248201527f656e642074696d657374616d70206d75737420626520677265617465722074686044820152710616e2073746172742074696d657374616d760741b6064820152608401610911565b6001600160a01b0382166000908152600760209081526040918290208351815483860151948601516001600160401b03908116600160801b0267ffffffffffffffff60801b19968216600160401b026fffffffffffffffffffffffffffffffff199093169190931617179390931692909217825560608301518051849392610d1d92600185019291019061131c565b5060808201518051610d3991600284019160209091019061131c565b50905050816001600160a01b03167fff3054d138559c39b4c0826c43e94b2b2c6bc9a33ea1d0b74f16c916c7b73ec1826040516105349190611882565b610d7e611188565b816001600160a01b031663a9059cbb610d9f6066546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e10919061196f565b505050565b6040805160a08082018352600080835260208084018290528385018290526060808501819052608085018190526001600160a01b038716835260078252918590208551938401865280546001600160401b038082168652600160401b8204811693860193909352600160801b9004909116948301949094526001840180549394929391840191610ea49061191f565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed09061191f565b8015610f1d5780601f10610ef257610100808354040283529160200191610f1d565b820191906000526020600020905b815481529060010190602001808311610f0057829003601f168201915b50505050508152602001600282018054610f369061191f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f629061191f565b8015610faf5780601f10610f8457610100808354040283529160200191610faf565b820191906000526020600020905b815481529060010190602001808311610f9257829003601f168201915b5050505050815250509050919050565b610fc7611188565b6001600160a01b03811661102c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610911565b610bed816111e2565b600760205260009081526040902080546001820180546001600160401b0380841694600160401b8504821694600160801b90049091169290916110779061191f565b80601f01602080910402602001604051908101604052809291908181526020018280546110a39061191f565b80156110f05780601f106110c5576101008083540402835291602001916110f0565b820191906000526020600020905b8154815290600101906020018083116110d357829003601f168201915b5050505050908060020180546111059061191f565b80601f01602080910402602001604051908101604052809291908181526020018280546111319061191f565b801561117e5780601f106111535761010080835404028352916020019161117e565b820191906000526020600020905b81548152906001019060200180831161116157829003601f168201915b5050505050905085565b6066546001600160a01b03163314610a5d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610911565b606680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80518251146112855760405162461bcd60e51b815260206004820181905260248201527f617272617973206d7573742068617665207468652073616d65206c656e6774686044820152606401610911565b6000805b82518110156112c8578281815181106112a4576112a4611909565b01602001516112b69060f81c83611991565b91506112c181611954565b9050611289565b508060ff16606414610e105760405162461bcd60e51b815260206004820152601f60248201527f73756d206f662071756f72756d53706c697473206d75737420626520313030006044820152606401610911565b8280546113289061191f565b90600052602060002090601f01602090048101928261134a5760008555611390565b82601f1061136357805160ff1916838001178555611390565b82800160010185558215611390579182015b82811115611390578251825591602001919060010190611375565b5061139c9291506113a0565b5090565b5b8082111561139c57600081556001016113a1565b6000602082840312156113c757600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715611406576114066113ce565b60405290565b604051601f8201601f191681016001600160401b0381118282101715611434576114346113ce565b604052919050565b80356001600160a01b038116811461145357600080fd5b919050565b6000602080838503121561146b57600080fd5b82356001600160401b038082111561148257600080fd5b818501915085601f83011261149657600080fd5b8135818111156114a8576114a86113ce565b8060051b91506114b984830161140c565b81815291830184019184810190888411156114d357600080fd5b938501935b838510156114f8576114e98561143c565b825293850193908501906114d8565b98975050505050505050565b6000815180845260005b8181101561152a5760208185018101518683018201520161150e565b8181111561153c576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160401b0380835116845280602084015116602085015280604084015116604085015250606082015160a0606085015261159360a0850182611504565b9050608083015184820360808601526115ac8282611504565b95945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561160a57603f198886030184526115f8858351611551565b945092850192908501906001016115dc565b5092979650505050505050565b60008060006060848603121561162c57600080fd5b505081359360208301359350604090920135919050565b6020808252825182820181905260009190848201906040850190845b8181101561167b5783518352928401929184019160010161165f565b50909695505050505050565b600080600080600080600060e0888a0312156116a257600080fd5b6116ab8861143c565b9960208901359950604089013598606081013598506080810135975060a0810135965060c00135945092505050565b6000602082840312156116ec57600080fd5b6116f58261143c565b9392505050565b80356001600160401b038116811461145357600080fd5b600082601f83011261172457600080fd5b81356001600160401b0381111561173d5761173d6113ce565b611750601f8201601f191660200161140c565b81815284602083860101111561176557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561179557600080fd5b61179e8361143c565b915060208301356001600160401b03808211156117ba57600080fd5b9084019060a082870312156117ce57600080fd5b6117d66113e4565b6117df836116fc565b81526117ed602084016116fc565b60208201526117fe604084016116fc565b604082015260608301358281111561181557600080fd5b61182188828601611713565b60608301525060808301358281111561183957600080fd5b61184588828601611713565b6080830152508093505050509250929050565b6000806040838503121561186b57600080fd5b6118748361143c565b946020939093013593505050565b6020815260006116f56020830184611551565b60006001600160401b038088168352808716602084015280861660408401525060a060608301526118c960a0830185611504565b82810360808401526114f88185611504565b634e487b7160e01b600052601160045260246000fd5b60008219821115611904576119046118db565b500190565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061193357607f821691505b602082108114156107d657634e487b7160e01b600052602260045260246000fd5b6000600019821415611968576119686118db565b5060010190565b60006020828403121561198157600080fd5b815180151581146116f557600080fd5b600060ff821660ff84168060ff038211156119ae576119ae6118db565b01939250505056fea2646970667358221220af76988d6afa4f02420d619cfa532fbc6c573afb6c36e079ba4332f247db65ce64736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"fallback\",\"stateMutability\":\"payable\"},{\"type\":\"receive\",\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"depositOnDemand\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"getOnDemandTotalDeposit\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint80\",\"internalType\":\"uint80\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOnDemandTotalDeposits\",\"inputs\":[{\"name\":\"_accounts\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"_payments\",\"type\":\"uint80[]\",\"internalType\":\"uint80[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReservation\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIPaymentVault.Reservation\",\"components\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getReservations\",\"inputs\":[{\"name\":\"_accounts\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"_reservations\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentVault.Reservation[]\",\"components\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalRatePeriodInterval\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"globalSymbolsPerPeriod\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_minNumSymbols\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_pricePerSymbol\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_priceUpdateCooldown\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_globalSymbolsPerPeriod\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_reservationPeriodInterval\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_globalRatePeriodInterval\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"lastPriceUpdateTime\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"minNumSymbols\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"onDemandPayments\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"totalDeposit\",\"type\":\"uint80\",\"internalType\":\"uint80\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pricePerSymbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"priceUpdateCooldown\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"reservationPeriodInterval\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"reservations\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setGlobalRatePeriodInterval\",\"inputs\":[{\"name\":\"_globalRatePeriodInterval\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGlobalSymbolsPerPeriod\",\"inputs\":[{\"name\":\"_globalSymbolsPerPeriod\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPriceParams\",\"inputs\":[{\"name\":\"_minNumSymbols\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_pricePerSymbol\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_priceUpdateCooldown\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setReservation\",\"inputs\":[{\"name\":\"_account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_reservation\",\"type\":\"tuple\",\"internalType\":\"structIPaymentVault.Reservation\",\"components\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setReservationPeriodInterval\",\"inputs\":[{\"name\":\"_reservationPeriodInterval\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdraw\",\"inputs\":[{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"withdrawERC20\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"GlobalRatePeriodIntervalUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValue\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GlobalSymbolsPerPeriodUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValue\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OnDemandPaymentUpdated\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"onDemandPayment\",\"type\":\"uint80\",\"indexed\":false,\"internalType\":\"uint80\"},{\"name\":\"totalDeposit\",\"type\":\"uint80\",\"indexed\":false,\"internalType\":\"uint80\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PriceParamsUpdated\",\"inputs\":[{\"name\":\"previousMinNumSymbols\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newMinNumSymbols\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"previousPricePerSymbol\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newPricePerSymbol\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"previousPriceUpdateCooldown\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newPriceUpdateCooldown\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReservationPeriodIntervalUpdated\",\"inputs\":[{\"name\":\"previousValue\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"},{\"name\":\"newValue\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ReservationUpdated\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"reservation\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIPaymentVault.Reservation\",\"components\":[{\"name\":\"symbolsPerSecond\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endTimestamp\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumSplits\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"anonymous\":false}]", + Bin: "0x608060405234801561001057600080fd5b5061001961001e565b6100de565b600054610100900460ff161561008a5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156100dc576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b611e08806100ed6000396000f3fe60806040526004361061016a5760003560e01c80639aec8640116100d1578063c98d97dd1161008a578063f2fde38b11610064578063f2fde38b146104c2578063f323726a146104e2578063fba2b1d114610509578063fd3dc53a146105295761017b565b8063c98d97dd14610415578063d1c1fdcd14610435578063d996dc991461048c5761017b565b80639aec864014610341578063a16cf88414610361578063a1db978214610381578063aa788bd7146103a1578063b2066f80146103c1578063bff8a3d4146103ee5761017b565b806372228ab21161012357806372228ab21461027f578063761dab89146102a6578063897218fc146102c65780638bec7d02146102e65780638da5cb5b146102f95780639a1bbf37146103215761017b565b8063039f091c14610185578063109f8fe5146101c95780632e1a7d4d146101f65780634184a6741461021657806349b9a7af14610243578063715018a61461026a5761017b565b3661017b57610179333461055a565b005b610179333461055a565b34801561019157600080fd5b506065546101ac90600160801b90046001600160401b031681565b6040516001600160401b0390911681526020015b60405180910390f35b3480156101d557600080fd5b506101e96101e43660046117b8565b610679565b6040516101c09190611915565b34801561020257600080fd5b50610179610211366004611977565b6108cc565b34801561022257600080fd5b506102366102313660046117b8565b610949565b6040516101c09190611990565b34801561024f57600080fd5b506065546101ac90600160c01b90046001600160401b031681565b34801561027657600080fd5b50610179610a2b565b34801561028b57600080fd5b506066546101ac90600160401b90046001600160401b031681565b3480156102b257600080fd5b506065546101ac906001600160401b031681565b3480156102d257600080fd5b506101796102e13660046119f4565b610a3f565b6101796102f4366004611a16565b610ac7565b34801561030557600080fd5b506033546040516001600160a01b0390911681526020016101c0565b34801561032d57600080fd5b5061017961033c366004611a31565b610ad4565b34801561034d57600080fd5b5061017961035c366004611b26565b610cfe565b34801561036d57600080fd5b5061017961037c3660046119f4565b610e84565b34801561038d57600080fd5b5061017961039c366004611bfc565b610ef6565b3480156103ad57600080fd5b506101796103bc3660046119f4565b610f95565b3480156103cd57600080fd5b506103e16103dc366004611a16565b611018565b6040516101c09190611c26565b3480156103fa57600080fd5b506066546101ac90600160801b90046001600160401b031681565b34801561042157600080fd5b506066546101ac906001600160401b031681565b34801561044157600080fd5b50610474610450366004611a16565b6001600160a01b03166000908152606860205260409020546001600160501b031690565b6040516001600160501b0390911681526020016101c0565b34801561049857600080fd5b506104746104a7366004611a16565b6068602052600090815260409020546001600160501b031681565b3480156104ce57600080fd5b506101796104dd366004611a16565b6111c2565b3480156104ee57600080fd5b506065546101ac90600160401b90046001600160401b031681565b34801561051557600080fd5b50610179610524366004611c39565b611238565b34801561053557600080fd5b50610549610544366004611a16565b6113ae565b6040516101c0959493929190611c7c565b6001600160501b038111156105cb5760405162461bcd60e51b815260206004820152602c60248201527f616d6f756e74206d757374206265206c657373207468616e206f72206571756160448201526b6c20746f203830206269747360a01b60648201526084015b60405180910390fd5b6001600160a01b038216600090815260686020526040812080548392906105fc9084906001600160501b0316611cd8565b82546101009290920a6001600160501b038181021990931691831602179091556001600160a01b03841660008181526068602090815260409182902054825187861681529416908401529092507f6fbb447a2c09b8901d70b0d5b9fbce159ee8fda4460e5af2570cab3fe0adf26891015b60405180910390a25050565b606081516001600160401b038111156106945761069461172e565b6040519080825280602002602001820160405280156106ec57816020015b6040805160a08101825260008082526020808301829052928201526060808201819052608082015282526000199092019101816106b25790505b50905060005b82518110156108c6576067600084838151811061071157610711611d03565b6020908102919091018101516001600160a01b03168252818101929092526040908101600020815160a08101835281546001600160401b038082168352600160401b8204811695830195909552600160801b90049093169183019190915260018101805460608401919061078490611d19565b80601f01602080910402602001604051908101604052809291908181526020018280546107b090611d19565b80156107fd5780601f106107d2576101008083540402835291602001916107fd565b820191906000526020600020905b8154815290600101906020018083116107e057829003601f168201915b5050505050815260200160028201805461081690611d19565b80601f016020809104026020016040519081016040528092919081815260200182805461084290611d19565b801561088f5780601f106108645761010080835404028352916020019161088f565b820191906000526020600020905b81548152906001019060200180831161087257829003601f168201915b5050505050815250508282815181106108aa576108aa611d03565b6020026020010181905250806108bf90611d4e565b90506106f2565b50919050565b6108d4611501565b60006108e86033546001600160a01b031690565b6001600160a01b03168260405160006040518083038185875af1925050503d8060008114610932576040519150601f19603f3d011682016040523d82523d6000602084013e610937565b606091505b505090508061094557600080fd5b5050565b606081516001600160401b038111156109645761096461172e565b60405190808252806020026020018201604052801561098d578160200160208202803683370190505b50905060005b82518110156108c657606860008483815181106109b2576109b2611d03565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000160009054906101000a90046001600160501b0316828281518110610a0357610a03611d03565b6001600160501b0390921660209283029190910190910152610a2481611d4e565b9050610993565b610a33611501565b610a3d600061155b565b565b610a47611501565b606654604080516001600160401b03600160401b9093048316815291831660208301527f1ef4a1ce7d8e50959d15578b346bb20a5b049e5ee1978014a4ba66476265c957910160405180910390a1606680546001600160401b03909216600160401b026fffffffffffffffff000000000000000019909216919091179055565b610ad1813461055a565b50565b600054610100900460ff1615808015610af45750600054600160ff909116105b80610b0e5750303b158015610b0e575060005460ff166001145b610b715760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c2565b6000805460ff191660011790558015610b94576000805461ff0019166101001790555b610b9d8861155b565b86606560006101000a8154816001600160401b0302191690836001600160401b0316021790555085606560086101000a8154816001600160401b0302191690836001600160401b0316021790555084606560106101000a8154816001600160401b0302191690836001600160401b0316021790555042606560186101000a8154816001600160401b0302191690836001600160401b0316021790555083606660006101000a8154816001600160401b0302191690836001600160401b0316021790555082606660086101000a8154816001600160401b0302191690836001600160401b0316021790555081606660106101000a8154816001600160401b0302191690836001600160401b031602179055508015610cf4576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b610d06611501565b610d18816060015182608001516115ad565b80602001516001600160401b031681604001516001600160401b031611610d9c5760405162461bcd60e51b815260206004820152603260248201527f656e642074696d657374616d70206d75737420626520677265617465722074686044820152710616e2073746172742074696d657374616d760741b60648201526084016105c2565b6001600160a01b0382166000908152606760209081526040918290208351815483860151948601516001600160401b03908116600160801b0267ffffffffffffffff60801b19968216600160401b026fffffffffffffffffffffffffffffffff199093169190931617179390931692909217825560608301518051849392610e2b926001850192910190611695565b5060808201518051610e47916002840191602090910190611695565b50905050816001600160a01b03167fff3054d138559c39b4c0826c43e94b2b2c6bc9a33ea1d0b74f16c916c7b73ec18260405161066d9190611c26565b610e8c611501565b606654604080516001600160401b03928316815291831660208301527f3edf3b79e74d9e583ff51df95fbabefe15f504d33475b2cc77cffba292268aae910160405180910390a16066805467ffffffffffffffff19166001600160401b0392909216919091179055565b610efe611501565b816001600160a01b031663a9059cbb610f1f6033546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303816000875af1158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f909190611d69565b505050565b610f9d611501565b606654604080516001600160401b03600160801b9093048316815291831660208301527f833819c38214ef9f462f88b5c27a21bf201f394572a14da3e63c77ee15f0e93a910160405180910390a1606680546001600160401b03909216600160801b0267ffffffffffffffff60801b19909216919091179055565b6040805160a08082018352600080835260208084018290528385018290526060808501819052608085018190526001600160a01b038716835260678252918590208551938401865280546001600160401b038082168652600160401b8204811693860193909352600160801b90049091169483019490945260018401805493949293918401916110a790611d19565b80601f01602080910402602001604051908101604052809291908181526020018280546110d390611d19565b80156111205780601f106110f557610100808354040283529160200191611120565b820191906000526020600020905b81548152906001019060200180831161110357829003601f168201915b5050505050815260200160028201805461113990611d19565b80601f016020809104026020016040519081016040528092919081815260200182805461116590611d19565b80156111b25780601f10611187576101008083540402835291602001916111b2565b820191906000526020600020905b81548152906001019060200180831161119557829003601f168201915b5050505050815250509050919050565b6111ca611501565b6001600160a01b03811661122f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105c2565b610ad18161155b565b611240611501565b606554611266906001600160401b03600160801b8204811691600160c01b900416611d8b565b6001600160401b03164210156112ca5760405162461bcd60e51b815260206004820152602360248201527f70726963652075706461746520636f6f6c646f776e206e6f74207375727061736044820152621cd95960ea1b60648201526084016105c2565b606554604080516001600160401b0380841682528681166020830152600160401b84048116828401528581166060830152600160801b9093048316608082015291831660a0830152517f9b97ed982ea5820e21bfc9578505e78068a5333487583460ad56ff72defef77a9181900360c00190a160658054426001600160401b03908116600160c01b026001600160c01b03948216600160801b0277ffffffffffffffff0000000000000000ffffffffffffffff19968316600160401b02969096166001600160c01b0319909316929092179516949094179290921716919091179055565b606760205260009081526040902080546001820180546001600160401b0380841694600160401b8504821694600160801b90049091169290916113f090611d19565b80601f016020809104026020016040519081016040528092919081815260200182805461141c90611d19565b80156114695780601f1061143e57610100808354040283529160200191611469565b820191906000526020600020905b81548152906001019060200180831161144c57829003601f168201915b50505050509080600201805461147e90611d19565b80601f01602080910402602001604051908101604052809291908181526020018280546114aa90611d19565b80156114f75780601f106114cc576101008083540402835291602001916114f7565b820191906000526020600020905b8154815290600101906020018083116114da57829003601f168201915b5050505050905085565b6033546001600160a01b03163314610a3d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c2565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b80518251146115fe5760405162461bcd60e51b815260206004820181905260248201527f617272617973206d7573742068617665207468652073616d65206c656e67746860448201526064016105c2565b6000805b82518110156116415782818151811061161d5761161d611d03565b016020015161162f9060f81c83611dad565b915061163a81611d4e565b9050611602565b508060ff16606414610f905760405162461bcd60e51b815260206004820152601f60248201527f73756d206f662071756f72756d53706c697473206d757374206265203130300060448201526064016105c2565b8280546116a190611d19565b90600052602060002090601f0160209004810192826116c35760008555611709565b82601f106116dc57805160ff1916838001178555611709565b82800160010185558215611709579182015b828111156117095782518255916020019190600101906116ee565b50611715929150611719565b5090565b5b80821115611715576000815560010161171a565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156117665761176661172e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156117945761179461172e565b604052919050565b80356001600160a01b03811681146117b357600080fd5b919050565b600060208083850312156117cb57600080fd5b82356001600160401b03808211156117e257600080fd5b818501915085601f8301126117f657600080fd5b8135818111156118085761180861172e565b8060051b915061181984830161176c565b818152918301840191848101908884111561183357600080fd5b938501935b83851015611858576118498561179c565b82529385019390850190611838565b98975050505050505050565b6000815180845260005b8181101561188a5760208185018101518683018201520161186e565b8181111561189c576000602083870101525b50601f01601f19169290920160200192915050565b60006001600160401b0380835116845280602084015116602085015280604084015116604085015250606082015160a060608501526118f360a0850182611864565b90506080830151848203608086015261190c8282611864565b95945050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561196a57603f198886030184526119588583516118b1565b9450928501929085019060010161193c565b5092979650505050505050565b60006020828403121561198957600080fd5b5035919050565b6020808252825182820181905260009190848201906040850190845b818110156119d15783516001600160501b0316835292840192918401916001016119ac565b50909695505050505050565b80356001600160401b03811681146117b357600080fd5b600060208284031215611a0657600080fd5b611a0f826119dd565b9392505050565b600060208284031215611a2857600080fd5b611a0f8261179c565b600080600080600080600060e0888a031215611a4c57600080fd5b611a558861179c565b9650611a63602089016119dd565b9550611a71604089016119dd565b9450611a7f606089016119dd565b9350611a8d608089016119dd565b9250611a9b60a089016119dd565b9150611aa960c089016119dd565b905092959891949750929550565b600082601f830112611ac857600080fd5b81356001600160401b03811115611ae157611ae161172e565b611af4601f8201601f191660200161176c565b818152846020838601011115611b0957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215611b3957600080fd5b611b428361179c565b915060208301356001600160401b0380821115611b5e57600080fd5b9084019060a08287031215611b7257600080fd5b611b7a611744565b611b83836119dd565b8152611b91602084016119dd565b6020820152611ba2604084016119dd565b6040820152606083013582811115611bb957600080fd5b611bc588828601611ab7565b606083015250608083013582811115611bdd57600080fd5b611be988828601611ab7565b6080830152508093505050509250929050565b60008060408385031215611c0f57600080fd5b611c188361179c565b946020939093013593505050565b602081526000611a0f60208301846118b1565b600080600060608486031215611c4e57600080fd5b611c57846119dd565b9250611c65602085016119dd565b9150611c73604085016119dd565b90509250925092565b60006001600160401b038088168352808716602084015280861660408401525060a06060830152611cb060a0830185611864565b82810360808401526118588185611864565b634e487b7160e01b600052601160045260246000fd5b60006001600160501b03808316818516808303821115611cfa57611cfa611cc2565b01949350505050565b634e487b7160e01b600052603260045260246000fd5b600181811c90821680611d2d57607f821691505b602082108114156108c657634e487b7160e01b600052602260045260246000fd5b6000600019821415611d6257611d62611cc2565b5060010190565b600060208284031215611d7b57600080fd5b81518015158114611a0f57600080fd5b60006001600160401b03808316818516808303821115611cfa57611cfa611cc2565b600060ff821660ff84168060ff03821115611dca57611dca611cc2565b01939250505056fea2646970667358221220b5830c07e4ce314832ae15e4654d85f0f15f9c2f3eee1fd2923348676809ca7464736f6c634300080c0033", } // ContractPaymentVaultABI is the input ABI used to generate the binding from. @@ -211,12 +211,12 @@ func (_ContractPaymentVault *ContractPaymentVaultTransactorRaw) Transact(opts *b return _ContractPaymentVault.Contract.contract.Transact(opts, method, params...) } -// GetOnDemandAmount is a free data retrieval call binding the contract method 0xefb435f8. +// GetOnDemandTotalDeposit is a free data retrieval call binding the contract method 0xd1c1fdcd. // -// Solidity: function getOnDemandAmount(address _account) view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCaller) GetOnDemandAmount(opts *bind.CallOpts, _account common.Address) (*big.Int, error) { +// Solidity: function getOnDemandTotalDeposit(address _account) view returns(uint80) +func (_ContractPaymentVault *ContractPaymentVaultCaller) GetOnDemandTotalDeposit(opts *bind.CallOpts, _account common.Address) (*big.Int, error) { var out []interface{} - err := _ContractPaymentVault.contract.Call(opts, &out, "getOnDemandAmount", _account) + err := _ContractPaymentVault.contract.Call(opts, &out, "getOnDemandTotalDeposit", _account) if err != nil { return *new(*big.Int), err @@ -228,26 +228,26 @@ func (_ContractPaymentVault *ContractPaymentVaultCaller) GetOnDemandAmount(opts } -// GetOnDemandAmount is a free data retrieval call binding the contract method 0xefb435f8. +// GetOnDemandTotalDeposit is a free data retrieval call binding the contract method 0xd1c1fdcd. // -// Solidity: function getOnDemandAmount(address _account) view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultSession) GetOnDemandAmount(_account common.Address) (*big.Int, error) { - return _ContractPaymentVault.Contract.GetOnDemandAmount(&_ContractPaymentVault.CallOpts, _account) +// Solidity: function getOnDemandTotalDeposit(address _account) view returns(uint80) +func (_ContractPaymentVault *ContractPaymentVaultSession) GetOnDemandTotalDeposit(_account common.Address) (*big.Int, error) { + return _ContractPaymentVault.Contract.GetOnDemandTotalDeposit(&_ContractPaymentVault.CallOpts, _account) } -// GetOnDemandAmount is a free data retrieval call binding the contract method 0xefb435f8. +// GetOnDemandTotalDeposit is a free data retrieval call binding the contract method 0xd1c1fdcd. // -// Solidity: function getOnDemandAmount(address _account) view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCallerSession) GetOnDemandAmount(_account common.Address) (*big.Int, error) { - return _ContractPaymentVault.Contract.GetOnDemandAmount(&_ContractPaymentVault.CallOpts, _account) +// Solidity: function getOnDemandTotalDeposit(address _account) view returns(uint80) +func (_ContractPaymentVault *ContractPaymentVaultCallerSession) GetOnDemandTotalDeposit(_account common.Address) (*big.Int, error) { + return _ContractPaymentVault.Contract.GetOnDemandTotalDeposit(&_ContractPaymentVault.CallOpts, _account) } -// GetOnDemandAmounts is a free data retrieval call binding the contract method 0x4486bfb7. +// GetOnDemandTotalDeposits is a free data retrieval call binding the contract method 0x4184a674. // -// Solidity: function getOnDemandAmounts(address[] _accounts) view returns(uint256[] _payments) -func (_ContractPaymentVault *ContractPaymentVaultCaller) GetOnDemandAmounts(opts *bind.CallOpts, _accounts []common.Address) ([]*big.Int, error) { +// Solidity: function getOnDemandTotalDeposits(address[] _accounts) view returns(uint80[] _payments) +func (_ContractPaymentVault *ContractPaymentVaultCaller) GetOnDemandTotalDeposits(opts *bind.CallOpts, _accounts []common.Address) ([]*big.Int, error) { var out []interface{} - err := _ContractPaymentVault.contract.Call(opts, &out, "getOnDemandAmounts", _accounts) + err := _ContractPaymentVault.contract.Call(opts, &out, "getOnDemandTotalDeposits", _accounts) if err != nil { return *new([]*big.Int), err @@ -259,18 +259,18 @@ func (_ContractPaymentVault *ContractPaymentVaultCaller) GetOnDemandAmounts(opts } -// GetOnDemandAmounts is a free data retrieval call binding the contract method 0x4486bfb7. +// GetOnDemandTotalDeposits is a free data retrieval call binding the contract method 0x4184a674. // -// Solidity: function getOnDemandAmounts(address[] _accounts) view returns(uint256[] _payments) -func (_ContractPaymentVault *ContractPaymentVaultSession) GetOnDemandAmounts(_accounts []common.Address) ([]*big.Int, error) { - return _ContractPaymentVault.Contract.GetOnDemandAmounts(&_ContractPaymentVault.CallOpts, _accounts) +// Solidity: function getOnDemandTotalDeposits(address[] _accounts) view returns(uint80[] _payments) +func (_ContractPaymentVault *ContractPaymentVaultSession) GetOnDemandTotalDeposits(_accounts []common.Address) ([]*big.Int, error) { + return _ContractPaymentVault.Contract.GetOnDemandTotalDeposits(&_ContractPaymentVault.CallOpts, _accounts) } -// GetOnDemandAmounts is a free data retrieval call binding the contract method 0x4486bfb7. +// GetOnDemandTotalDeposits is a free data retrieval call binding the contract method 0x4184a674. // -// Solidity: function getOnDemandAmounts(address[] _accounts) view returns(uint256[] _payments) -func (_ContractPaymentVault *ContractPaymentVaultCallerSession) GetOnDemandAmounts(_accounts []common.Address) ([]*big.Int, error) { - return _ContractPaymentVault.Contract.GetOnDemandAmounts(&_ContractPaymentVault.CallOpts, _accounts) +// Solidity: function getOnDemandTotalDeposits(address[] _accounts) view returns(uint80[] _payments) +func (_ContractPaymentVault *ContractPaymentVaultCallerSession) GetOnDemandTotalDeposits(_accounts []common.Address) ([]*big.Int, error) { + return _ContractPaymentVault.Contract.GetOnDemandTotalDeposits(&_ContractPaymentVault.CallOpts, _accounts) } // GetReservation is a free data retrieval call binding the contract method 0xb2066f80. @@ -335,80 +335,80 @@ func (_ContractPaymentVault *ContractPaymentVaultCallerSession) GetReservations( return _ContractPaymentVault.Contract.GetReservations(&_ContractPaymentVault.CallOpts, _accounts) } -// GlobalRateBinInterval is a free data retrieval call binding the contract method 0xd882a5fd. +// GlobalRatePeriodInterval is a free data retrieval call binding the contract method 0xbff8a3d4. // -// Solidity: function globalRateBinInterval() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCaller) GlobalRateBinInterval(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function globalRatePeriodInterval() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCaller) GlobalRatePeriodInterval(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ContractPaymentVault.contract.Call(opts, &out, "globalRateBinInterval") + err := _ContractPaymentVault.contract.Call(opts, &out, "globalRatePeriodInterval") if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err } -// GlobalRateBinInterval is a free data retrieval call binding the contract method 0xd882a5fd. +// GlobalRatePeriodInterval is a free data retrieval call binding the contract method 0xbff8a3d4. // -// Solidity: function globalRateBinInterval() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultSession) GlobalRateBinInterval() (*big.Int, error) { - return _ContractPaymentVault.Contract.GlobalRateBinInterval(&_ContractPaymentVault.CallOpts) +// Solidity: function globalRatePeriodInterval() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultSession) GlobalRatePeriodInterval() (uint64, error) { + return _ContractPaymentVault.Contract.GlobalRatePeriodInterval(&_ContractPaymentVault.CallOpts) } -// GlobalRateBinInterval is a free data retrieval call binding the contract method 0xd882a5fd. +// GlobalRatePeriodInterval is a free data retrieval call binding the contract method 0xbff8a3d4. // -// Solidity: function globalRateBinInterval() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCallerSession) GlobalRateBinInterval() (*big.Int, error) { - return _ContractPaymentVault.Contract.GlobalRateBinInterval(&_ContractPaymentVault.CallOpts) +// Solidity: function globalRatePeriodInterval() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCallerSession) GlobalRatePeriodInterval() (uint64, error) { + return _ContractPaymentVault.Contract.GlobalRatePeriodInterval(&_ContractPaymentVault.CallOpts) } -// GlobalSymbolsPerBin is a free data retrieval call binding the contract method 0x5a3d4f61. +// GlobalSymbolsPerPeriod is a free data retrieval call binding the contract method 0xc98d97dd. // -// Solidity: function globalSymbolsPerBin() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCaller) GlobalSymbolsPerBin(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function globalSymbolsPerPeriod() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCaller) GlobalSymbolsPerPeriod(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ContractPaymentVault.contract.Call(opts, &out, "globalSymbolsPerBin") + err := _ContractPaymentVault.contract.Call(opts, &out, "globalSymbolsPerPeriod") if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err } -// GlobalSymbolsPerBin is a free data retrieval call binding the contract method 0x5a3d4f61. +// GlobalSymbolsPerPeriod is a free data retrieval call binding the contract method 0xc98d97dd. // -// Solidity: function globalSymbolsPerBin() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultSession) GlobalSymbolsPerBin() (*big.Int, error) { - return _ContractPaymentVault.Contract.GlobalSymbolsPerBin(&_ContractPaymentVault.CallOpts) +// Solidity: function globalSymbolsPerPeriod() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultSession) GlobalSymbolsPerPeriod() (uint64, error) { + return _ContractPaymentVault.Contract.GlobalSymbolsPerPeriod(&_ContractPaymentVault.CallOpts) } -// GlobalSymbolsPerBin is a free data retrieval call binding the contract method 0x5a3d4f61. +// GlobalSymbolsPerPeriod is a free data retrieval call binding the contract method 0xc98d97dd. // -// Solidity: function globalSymbolsPerBin() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCallerSession) GlobalSymbolsPerBin() (*big.Int, error) { - return _ContractPaymentVault.Contract.GlobalSymbolsPerBin(&_ContractPaymentVault.CallOpts) +// Solidity: function globalSymbolsPerPeriod() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCallerSession) GlobalSymbolsPerPeriod() (uint64, error) { + return _ContractPaymentVault.Contract.GlobalSymbolsPerPeriod(&_ContractPaymentVault.CallOpts) } // LastPriceUpdateTime is a free data retrieval call binding the contract method 0x49b9a7af. // -// Solidity: function lastPriceUpdateTime() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCaller) LastPriceUpdateTime(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function lastPriceUpdateTime() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCaller) LastPriceUpdateTime(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _ContractPaymentVault.contract.Call(opts, &out, "lastPriceUpdateTime") if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err @@ -416,30 +416,30 @@ func (_ContractPaymentVault *ContractPaymentVaultCaller) LastPriceUpdateTime(opt // LastPriceUpdateTime is a free data retrieval call binding the contract method 0x49b9a7af. // -// Solidity: function lastPriceUpdateTime() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultSession) LastPriceUpdateTime() (*big.Int, error) { +// Solidity: function lastPriceUpdateTime() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultSession) LastPriceUpdateTime() (uint64, error) { return _ContractPaymentVault.Contract.LastPriceUpdateTime(&_ContractPaymentVault.CallOpts) } // LastPriceUpdateTime is a free data retrieval call binding the contract method 0x49b9a7af. // -// Solidity: function lastPriceUpdateTime() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCallerSession) LastPriceUpdateTime() (*big.Int, error) { +// Solidity: function lastPriceUpdateTime() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCallerSession) LastPriceUpdateTime() (uint64, error) { return _ContractPaymentVault.Contract.LastPriceUpdateTime(&_ContractPaymentVault.CallOpts) } // MinNumSymbols is a free data retrieval call binding the contract method 0x761dab89. // -// Solidity: function minNumSymbols() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCaller) MinNumSymbols(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function minNumSymbols() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCaller) MinNumSymbols(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _ContractPaymentVault.contract.Call(opts, &out, "minNumSymbols") if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err @@ -447,21 +447,21 @@ func (_ContractPaymentVault *ContractPaymentVaultCaller) MinNumSymbols(opts *bin // MinNumSymbols is a free data retrieval call binding the contract method 0x761dab89. // -// Solidity: function minNumSymbols() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultSession) MinNumSymbols() (*big.Int, error) { +// Solidity: function minNumSymbols() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultSession) MinNumSymbols() (uint64, error) { return _ContractPaymentVault.Contract.MinNumSymbols(&_ContractPaymentVault.CallOpts) } // MinNumSymbols is a free data retrieval call binding the contract method 0x761dab89. // -// Solidity: function minNumSymbols() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCallerSession) MinNumSymbols() (*big.Int, error) { +// Solidity: function minNumSymbols() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCallerSession) MinNumSymbols() (uint64, error) { return _ContractPaymentVault.Contract.MinNumSymbols(&_ContractPaymentVault.CallOpts) } // OnDemandPayments is a free data retrieval call binding the contract method 0xd996dc99. // -// Solidity: function onDemandPayments(address ) view returns(uint256) +// Solidity: function onDemandPayments(address ) view returns(uint80 totalDeposit) func (_ContractPaymentVault *ContractPaymentVaultCaller) OnDemandPayments(opts *bind.CallOpts, arg0 common.Address) (*big.Int, error) { var out []interface{} err := _ContractPaymentVault.contract.Call(opts, &out, "onDemandPayments", arg0) @@ -478,14 +478,14 @@ func (_ContractPaymentVault *ContractPaymentVaultCaller) OnDemandPayments(opts * // OnDemandPayments is a free data retrieval call binding the contract method 0xd996dc99. // -// Solidity: function onDemandPayments(address ) view returns(uint256) +// Solidity: function onDemandPayments(address ) view returns(uint80 totalDeposit) func (_ContractPaymentVault *ContractPaymentVaultSession) OnDemandPayments(arg0 common.Address) (*big.Int, error) { return _ContractPaymentVault.Contract.OnDemandPayments(&_ContractPaymentVault.CallOpts, arg0) } // OnDemandPayments is a free data retrieval call binding the contract method 0xd996dc99. // -// Solidity: function onDemandPayments(address ) view returns(uint256) +// Solidity: function onDemandPayments(address ) view returns(uint80 totalDeposit) func (_ContractPaymentVault *ContractPaymentVaultCallerSession) OnDemandPayments(arg0 common.Address) (*big.Int, error) { return _ContractPaymentVault.Contract.OnDemandPayments(&_ContractPaymentVault.CallOpts, arg0) } @@ -523,16 +523,16 @@ func (_ContractPaymentVault *ContractPaymentVaultCallerSession) Owner() (common. // PricePerSymbol is a free data retrieval call binding the contract method 0xf323726a. // -// Solidity: function pricePerSymbol() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCaller) PricePerSymbol(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function pricePerSymbol() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCaller) PricePerSymbol(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _ContractPaymentVault.contract.Call(opts, &out, "pricePerSymbol") if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err @@ -540,30 +540,30 @@ func (_ContractPaymentVault *ContractPaymentVaultCaller) PricePerSymbol(opts *bi // PricePerSymbol is a free data retrieval call binding the contract method 0xf323726a. // -// Solidity: function pricePerSymbol() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultSession) PricePerSymbol() (*big.Int, error) { +// Solidity: function pricePerSymbol() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultSession) PricePerSymbol() (uint64, error) { return _ContractPaymentVault.Contract.PricePerSymbol(&_ContractPaymentVault.CallOpts) } // PricePerSymbol is a free data retrieval call binding the contract method 0xf323726a. // -// Solidity: function pricePerSymbol() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCallerSession) PricePerSymbol() (*big.Int, error) { +// Solidity: function pricePerSymbol() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCallerSession) PricePerSymbol() (uint64, error) { return _ContractPaymentVault.Contract.PricePerSymbol(&_ContractPaymentVault.CallOpts) } // PriceUpdateCooldown is a free data retrieval call binding the contract method 0x039f091c. // -// Solidity: function priceUpdateCooldown() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCaller) PriceUpdateCooldown(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function priceUpdateCooldown() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCaller) PriceUpdateCooldown(opts *bind.CallOpts) (uint64, error) { var out []interface{} err := _ContractPaymentVault.contract.Call(opts, &out, "priceUpdateCooldown") if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err @@ -571,47 +571,47 @@ func (_ContractPaymentVault *ContractPaymentVaultCaller) PriceUpdateCooldown(opt // PriceUpdateCooldown is a free data retrieval call binding the contract method 0x039f091c. // -// Solidity: function priceUpdateCooldown() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultSession) PriceUpdateCooldown() (*big.Int, error) { +// Solidity: function priceUpdateCooldown() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultSession) PriceUpdateCooldown() (uint64, error) { return _ContractPaymentVault.Contract.PriceUpdateCooldown(&_ContractPaymentVault.CallOpts) } // PriceUpdateCooldown is a free data retrieval call binding the contract method 0x039f091c. // -// Solidity: function priceUpdateCooldown() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCallerSession) PriceUpdateCooldown() (*big.Int, error) { +// Solidity: function priceUpdateCooldown() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCallerSession) PriceUpdateCooldown() (uint64, error) { return _ContractPaymentVault.Contract.PriceUpdateCooldown(&_ContractPaymentVault.CallOpts) } -// ReservationBinInterval is a free data retrieval call binding the contract method 0x5a8a6869. +// ReservationPeriodInterval is a free data retrieval call binding the contract method 0x72228ab2. // -// Solidity: function reservationBinInterval() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCaller) ReservationBinInterval(opts *bind.CallOpts) (*big.Int, error) { +// Solidity: function reservationPeriodInterval() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCaller) ReservationPeriodInterval(opts *bind.CallOpts) (uint64, error) { var out []interface{} - err := _ContractPaymentVault.contract.Call(opts, &out, "reservationBinInterval") + err := _ContractPaymentVault.contract.Call(opts, &out, "reservationPeriodInterval") if err != nil { - return *new(*big.Int), err + return *new(uint64), err } - out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + out0 := *abi.ConvertType(out[0], new(uint64)).(*uint64) return out0, err } -// ReservationBinInterval is a free data retrieval call binding the contract method 0x5a8a6869. +// ReservationPeriodInterval is a free data retrieval call binding the contract method 0x72228ab2. // -// Solidity: function reservationBinInterval() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultSession) ReservationBinInterval() (*big.Int, error) { - return _ContractPaymentVault.Contract.ReservationBinInterval(&_ContractPaymentVault.CallOpts) +// Solidity: function reservationPeriodInterval() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultSession) ReservationPeriodInterval() (uint64, error) { + return _ContractPaymentVault.Contract.ReservationPeriodInterval(&_ContractPaymentVault.CallOpts) } -// ReservationBinInterval is a free data retrieval call binding the contract method 0x5a8a6869. +// ReservationPeriodInterval is a free data retrieval call binding the contract method 0x72228ab2. // -// Solidity: function reservationBinInterval() view returns(uint256) -func (_ContractPaymentVault *ContractPaymentVaultCallerSession) ReservationBinInterval() (*big.Int, error) { - return _ContractPaymentVault.Contract.ReservationBinInterval(&_ContractPaymentVault.CallOpts) +// Solidity: function reservationPeriodInterval() view returns(uint64) +func (_ContractPaymentVault *ContractPaymentVaultCallerSession) ReservationPeriodInterval() (uint64, error) { + return _ContractPaymentVault.Contract.ReservationPeriodInterval(&_ContractPaymentVault.CallOpts) } // Reservations is a free data retrieval call binding the contract method 0xfd3dc53a. @@ -695,25 +695,25 @@ func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) DepositOnDem return _ContractPaymentVault.Contract.DepositOnDemand(&_ContractPaymentVault.TransactOpts, _account) } -// Initialize is a paid mutator transaction binding the contract method 0x8142951a. +// Initialize is a paid mutator transaction binding the contract method 0x9a1bbf37. // -// Solidity: function initialize(address _initialOwner, uint256 _minNumSymbols, uint256 _globalSymbolsPerBin, uint256 _pricePerSymbol, uint256 _reservationBinInterval, uint256 _priceUpdateCooldown, uint256 _globalRateBinInterval) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactor) Initialize(opts *bind.TransactOpts, _initialOwner common.Address, _minNumSymbols *big.Int, _globalSymbolsPerBin *big.Int, _pricePerSymbol *big.Int, _reservationBinInterval *big.Int, _priceUpdateCooldown *big.Int, _globalRateBinInterval *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.contract.Transact(opts, "initialize", _initialOwner, _minNumSymbols, _globalSymbolsPerBin, _pricePerSymbol, _reservationBinInterval, _priceUpdateCooldown, _globalRateBinInterval) +// Solidity: function initialize(address _initialOwner, uint64 _minNumSymbols, uint64 _pricePerSymbol, uint64 _priceUpdateCooldown, uint64 _globalSymbolsPerPeriod, uint64 _reservationPeriodInterval, uint64 _globalRatePeriodInterval) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactor) Initialize(opts *bind.TransactOpts, _initialOwner common.Address, _minNumSymbols uint64, _pricePerSymbol uint64, _priceUpdateCooldown uint64, _globalSymbolsPerPeriod uint64, _reservationPeriodInterval uint64, _globalRatePeriodInterval uint64) (*types.Transaction, error) { + return _ContractPaymentVault.contract.Transact(opts, "initialize", _initialOwner, _minNumSymbols, _pricePerSymbol, _priceUpdateCooldown, _globalSymbolsPerPeriod, _reservationPeriodInterval, _globalRatePeriodInterval) } -// Initialize is a paid mutator transaction binding the contract method 0x8142951a. +// Initialize is a paid mutator transaction binding the contract method 0x9a1bbf37. // -// Solidity: function initialize(address _initialOwner, uint256 _minNumSymbols, uint256 _globalSymbolsPerBin, uint256 _pricePerSymbol, uint256 _reservationBinInterval, uint256 _priceUpdateCooldown, uint256 _globalRateBinInterval) returns() -func (_ContractPaymentVault *ContractPaymentVaultSession) Initialize(_initialOwner common.Address, _minNumSymbols *big.Int, _globalSymbolsPerBin *big.Int, _pricePerSymbol *big.Int, _reservationBinInterval *big.Int, _priceUpdateCooldown *big.Int, _globalRateBinInterval *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.Contract.Initialize(&_ContractPaymentVault.TransactOpts, _initialOwner, _minNumSymbols, _globalSymbolsPerBin, _pricePerSymbol, _reservationBinInterval, _priceUpdateCooldown, _globalRateBinInterval) +// Solidity: function initialize(address _initialOwner, uint64 _minNumSymbols, uint64 _pricePerSymbol, uint64 _priceUpdateCooldown, uint64 _globalSymbolsPerPeriod, uint64 _reservationPeriodInterval, uint64 _globalRatePeriodInterval) returns() +func (_ContractPaymentVault *ContractPaymentVaultSession) Initialize(_initialOwner common.Address, _minNumSymbols uint64, _pricePerSymbol uint64, _priceUpdateCooldown uint64, _globalSymbolsPerPeriod uint64, _reservationPeriodInterval uint64, _globalRatePeriodInterval uint64) (*types.Transaction, error) { + return _ContractPaymentVault.Contract.Initialize(&_ContractPaymentVault.TransactOpts, _initialOwner, _minNumSymbols, _pricePerSymbol, _priceUpdateCooldown, _globalSymbolsPerPeriod, _reservationPeriodInterval, _globalRatePeriodInterval) } -// Initialize is a paid mutator transaction binding the contract method 0x8142951a. +// Initialize is a paid mutator transaction binding the contract method 0x9a1bbf37. // -// Solidity: function initialize(address _initialOwner, uint256 _minNumSymbols, uint256 _globalSymbolsPerBin, uint256 _pricePerSymbol, uint256 _reservationBinInterval, uint256 _priceUpdateCooldown, uint256 _globalRateBinInterval) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) Initialize(_initialOwner common.Address, _minNumSymbols *big.Int, _globalSymbolsPerBin *big.Int, _pricePerSymbol *big.Int, _reservationBinInterval *big.Int, _priceUpdateCooldown *big.Int, _globalRateBinInterval *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.Contract.Initialize(&_ContractPaymentVault.TransactOpts, _initialOwner, _minNumSymbols, _globalSymbolsPerBin, _pricePerSymbol, _reservationBinInterval, _priceUpdateCooldown, _globalRateBinInterval) +// Solidity: function initialize(address _initialOwner, uint64 _minNumSymbols, uint64 _pricePerSymbol, uint64 _priceUpdateCooldown, uint64 _globalSymbolsPerPeriod, uint64 _reservationPeriodInterval, uint64 _globalRatePeriodInterval) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) Initialize(_initialOwner common.Address, _minNumSymbols uint64, _pricePerSymbol uint64, _priceUpdateCooldown uint64, _globalSymbolsPerPeriod uint64, _reservationPeriodInterval uint64, _globalRatePeriodInterval uint64) (*types.Transaction, error) { + return _ContractPaymentVault.Contract.Initialize(&_ContractPaymentVault.TransactOpts, _initialOwner, _minNumSymbols, _pricePerSymbol, _priceUpdateCooldown, _globalSymbolsPerPeriod, _reservationPeriodInterval, _globalRatePeriodInterval) } // RenounceOwnership is a paid mutator transaction binding the contract method 0x715018a6. @@ -737,66 +737,66 @@ func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) RenounceOwne return _ContractPaymentVault.Contract.RenounceOwnership(&_ContractPaymentVault.TransactOpts) } -// SetGlobalRateBinInterval is a paid mutator transaction binding the contract method 0x7201dd02. +// SetGlobalRatePeriodInterval is a paid mutator transaction binding the contract method 0xaa788bd7. // -// Solidity: function setGlobalRateBinInterval(uint256 _globalRateBinInterval) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactor) SetGlobalRateBinInterval(opts *bind.TransactOpts, _globalRateBinInterval *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.contract.Transact(opts, "setGlobalRateBinInterval", _globalRateBinInterval) +// Solidity: function setGlobalRatePeriodInterval(uint64 _globalRatePeriodInterval) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactor) SetGlobalRatePeriodInterval(opts *bind.TransactOpts, _globalRatePeriodInterval uint64) (*types.Transaction, error) { + return _ContractPaymentVault.contract.Transact(opts, "setGlobalRatePeriodInterval", _globalRatePeriodInterval) } -// SetGlobalRateBinInterval is a paid mutator transaction binding the contract method 0x7201dd02. +// SetGlobalRatePeriodInterval is a paid mutator transaction binding the contract method 0xaa788bd7. // -// Solidity: function setGlobalRateBinInterval(uint256 _globalRateBinInterval) returns() -func (_ContractPaymentVault *ContractPaymentVaultSession) SetGlobalRateBinInterval(_globalRateBinInterval *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.Contract.SetGlobalRateBinInterval(&_ContractPaymentVault.TransactOpts, _globalRateBinInterval) +// Solidity: function setGlobalRatePeriodInterval(uint64 _globalRatePeriodInterval) returns() +func (_ContractPaymentVault *ContractPaymentVaultSession) SetGlobalRatePeriodInterval(_globalRatePeriodInterval uint64) (*types.Transaction, error) { + return _ContractPaymentVault.Contract.SetGlobalRatePeriodInterval(&_ContractPaymentVault.TransactOpts, _globalRatePeriodInterval) } -// SetGlobalRateBinInterval is a paid mutator transaction binding the contract method 0x7201dd02. +// SetGlobalRatePeriodInterval is a paid mutator transaction binding the contract method 0xaa788bd7. // -// Solidity: function setGlobalRateBinInterval(uint256 _globalRateBinInterval) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) SetGlobalRateBinInterval(_globalRateBinInterval *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.Contract.SetGlobalRateBinInterval(&_ContractPaymentVault.TransactOpts, _globalRateBinInterval) +// Solidity: function setGlobalRatePeriodInterval(uint64 _globalRatePeriodInterval) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) SetGlobalRatePeriodInterval(_globalRatePeriodInterval uint64) (*types.Transaction, error) { + return _ContractPaymentVault.Contract.SetGlobalRatePeriodInterval(&_ContractPaymentVault.TransactOpts, _globalRatePeriodInterval) } -// SetGlobalSymbolsPerBin is a paid mutator transaction binding the contract method 0x0eb7ed3d. +// SetGlobalSymbolsPerPeriod is a paid mutator transaction binding the contract method 0xa16cf884. // -// Solidity: function setGlobalSymbolsPerBin(uint256 _globalSymbolsPerBin) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactor) SetGlobalSymbolsPerBin(opts *bind.TransactOpts, _globalSymbolsPerBin *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.contract.Transact(opts, "setGlobalSymbolsPerBin", _globalSymbolsPerBin) +// Solidity: function setGlobalSymbolsPerPeriod(uint64 _globalSymbolsPerPeriod) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactor) SetGlobalSymbolsPerPeriod(opts *bind.TransactOpts, _globalSymbolsPerPeriod uint64) (*types.Transaction, error) { + return _ContractPaymentVault.contract.Transact(opts, "setGlobalSymbolsPerPeriod", _globalSymbolsPerPeriod) } -// SetGlobalSymbolsPerBin is a paid mutator transaction binding the contract method 0x0eb7ed3d. +// SetGlobalSymbolsPerPeriod is a paid mutator transaction binding the contract method 0xa16cf884. // -// Solidity: function setGlobalSymbolsPerBin(uint256 _globalSymbolsPerBin) returns() -func (_ContractPaymentVault *ContractPaymentVaultSession) SetGlobalSymbolsPerBin(_globalSymbolsPerBin *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.Contract.SetGlobalSymbolsPerBin(&_ContractPaymentVault.TransactOpts, _globalSymbolsPerBin) +// Solidity: function setGlobalSymbolsPerPeriod(uint64 _globalSymbolsPerPeriod) returns() +func (_ContractPaymentVault *ContractPaymentVaultSession) SetGlobalSymbolsPerPeriod(_globalSymbolsPerPeriod uint64) (*types.Transaction, error) { + return _ContractPaymentVault.Contract.SetGlobalSymbolsPerPeriod(&_ContractPaymentVault.TransactOpts, _globalSymbolsPerPeriod) } -// SetGlobalSymbolsPerBin is a paid mutator transaction binding the contract method 0x0eb7ed3d. +// SetGlobalSymbolsPerPeriod is a paid mutator transaction binding the contract method 0xa16cf884. // -// Solidity: function setGlobalSymbolsPerBin(uint256 _globalSymbolsPerBin) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) SetGlobalSymbolsPerBin(_globalSymbolsPerBin *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.Contract.SetGlobalSymbolsPerBin(&_ContractPaymentVault.TransactOpts, _globalSymbolsPerBin) +// Solidity: function setGlobalSymbolsPerPeriod(uint64 _globalSymbolsPerPeriod) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) SetGlobalSymbolsPerPeriod(_globalSymbolsPerPeriod uint64) (*types.Transaction, error) { + return _ContractPaymentVault.Contract.SetGlobalSymbolsPerPeriod(&_ContractPaymentVault.TransactOpts, _globalSymbolsPerPeriod) } -// SetPriceParams is a paid mutator transaction binding the contract method 0x327fad08. +// SetPriceParams is a paid mutator transaction binding the contract method 0xfba2b1d1. // -// Solidity: function setPriceParams(uint256 _minNumSymbols, uint256 _pricePerSymbol, uint256 _priceUpdateCooldown) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactor) SetPriceParams(opts *bind.TransactOpts, _minNumSymbols *big.Int, _pricePerSymbol *big.Int, _priceUpdateCooldown *big.Int) (*types.Transaction, error) { +// Solidity: function setPriceParams(uint64 _minNumSymbols, uint64 _pricePerSymbol, uint64 _priceUpdateCooldown) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactor) SetPriceParams(opts *bind.TransactOpts, _minNumSymbols uint64, _pricePerSymbol uint64, _priceUpdateCooldown uint64) (*types.Transaction, error) { return _ContractPaymentVault.contract.Transact(opts, "setPriceParams", _minNumSymbols, _pricePerSymbol, _priceUpdateCooldown) } -// SetPriceParams is a paid mutator transaction binding the contract method 0x327fad08. +// SetPriceParams is a paid mutator transaction binding the contract method 0xfba2b1d1. // -// Solidity: function setPriceParams(uint256 _minNumSymbols, uint256 _pricePerSymbol, uint256 _priceUpdateCooldown) returns() -func (_ContractPaymentVault *ContractPaymentVaultSession) SetPriceParams(_minNumSymbols *big.Int, _pricePerSymbol *big.Int, _priceUpdateCooldown *big.Int) (*types.Transaction, error) { +// Solidity: function setPriceParams(uint64 _minNumSymbols, uint64 _pricePerSymbol, uint64 _priceUpdateCooldown) returns() +func (_ContractPaymentVault *ContractPaymentVaultSession) SetPriceParams(_minNumSymbols uint64, _pricePerSymbol uint64, _priceUpdateCooldown uint64) (*types.Transaction, error) { return _ContractPaymentVault.Contract.SetPriceParams(&_ContractPaymentVault.TransactOpts, _minNumSymbols, _pricePerSymbol, _priceUpdateCooldown) } -// SetPriceParams is a paid mutator transaction binding the contract method 0x327fad08. +// SetPriceParams is a paid mutator transaction binding the contract method 0xfba2b1d1. // -// Solidity: function setPriceParams(uint256 _minNumSymbols, uint256 _pricePerSymbol, uint256 _priceUpdateCooldown) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) SetPriceParams(_minNumSymbols *big.Int, _pricePerSymbol *big.Int, _priceUpdateCooldown *big.Int) (*types.Transaction, error) { +// Solidity: function setPriceParams(uint64 _minNumSymbols, uint64 _pricePerSymbol, uint64 _priceUpdateCooldown) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) SetPriceParams(_minNumSymbols uint64, _pricePerSymbol uint64, _priceUpdateCooldown uint64) (*types.Transaction, error) { return _ContractPaymentVault.Contract.SetPriceParams(&_ContractPaymentVault.TransactOpts, _minNumSymbols, _pricePerSymbol, _priceUpdateCooldown) } @@ -821,25 +821,25 @@ func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) SetReservati return _ContractPaymentVault.Contract.SetReservation(&_ContractPaymentVault.TransactOpts, _account, _reservation) } -// SetReservationBinInterval is a paid mutator transaction binding the contract method 0x2c1a33bc. +// SetReservationPeriodInterval is a paid mutator transaction binding the contract method 0x897218fc. // -// Solidity: function setReservationBinInterval(uint256 _reservationBinInterval) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactor) SetReservationBinInterval(opts *bind.TransactOpts, _reservationBinInterval *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.contract.Transact(opts, "setReservationBinInterval", _reservationBinInterval) +// Solidity: function setReservationPeriodInterval(uint64 _reservationPeriodInterval) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactor) SetReservationPeriodInterval(opts *bind.TransactOpts, _reservationPeriodInterval uint64) (*types.Transaction, error) { + return _ContractPaymentVault.contract.Transact(opts, "setReservationPeriodInterval", _reservationPeriodInterval) } -// SetReservationBinInterval is a paid mutator transaction binding the contract method 0x2c1a33bc. +// SetReservationPeriodInterval is a paid mutator transaction binding the contract method 0x897218fc. // -// Solidity: function setReservationBinInterval(uint256 _reservationBinInterval) returns() -func (_ContractPaymentVault *ContractPaymentVaultSession) SetReservationBinInterval(_reservationBinInterval *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.Contract.SetReservationBinInterval(&_ContractPaymentVault.TransactOpts, _reservationBinInterval) +// Solidity: function setReservationPeriodInterval(uint64 _reservationPeriodInterval) returns() +func (_ContractPaymentVault *ContractPaymentVaultSession) SetReservationPeriodInterval(_reservationPeriodInterval uint64) (*types.Transaction, error) { + return _ContractPaymentVault.Contract.SetReservationPeriodInterval(&_ContractPaymentVault.TransactOpts, _reservationPeriodInterval) } -// SetReservationBinInterval is a paid mutator transaction binding the contract method 0x2c1a33bc. +// SetReservationPeriodInterval is a paid mutator transaction binding the contract method 0x897218fc. // -// Solidity: function setReservationBinInterval(uint256 _reservationBinInterval) returns() -func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) SetReservationBinInterval(_reservationBinInterval *big.Int) (*types.Transaction, error) { - return _ContractPaymentVault.Contract.SetReservationBinInterval(&_ContractPaymentVault.TransactOpts, _reservationBinInterval) +// Solidity: function setReservationPeriodInterval(uint64 _reservationPeriodInterval) returns() +func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) SetReservationPeriodInterval(_reservationPeriodInterval uint64) (*types.Transaction, error) { + return _ContractPaymentVault.Contract.SetReservationPeriodInterval(&_ContractPaymentVault.TransactOpts, _reservationPeriodInterval) } // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. @@ -947,9 +947,9 @@ func (_ContractPaymentVault *ContractPaymentVaultTransactorSession) Receive() (* return _ContractPaymentVault.Contract.Receive(&_ContractPaymentVault.TransactOpts) } -// ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator is returned from FilterGlobalRateBinIntervalUpdated and is used to iterate over the raw logs and unpacked data for GlobalRateBinIntervalUpdated events raised by the ContractPaymentVault contract. -type ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator struct { - Event *ContractPaymentVaultGlobalRateBinIntervalUpdated // Event containing the contract specifics and raw log +// ContractPaymentVaultGlobalRatePeriodIntervalUpdatedIterator is returned from FilterGlobalRatePeriodIntervalUpdated and is used to iterate over the raw logs and unpacked data for GlobalRatePeriodIntervalUpdated events raised by the ContractPaymentVault contract. +type ContractPaymentVaultGlobalRatePeriodIntervalUpdatedIterator struct { + Event *ContractPaymentVaultGlobalRatePeriodIntervalUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -963,7 +963,7 @@ type ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator) Next() bool { +func (it *ContractPaymentVaultGlobalRatePeriodIntervalUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -972,7 +972,7 @@ func (it *ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(ContractPaymentVaultGlobalRateBinIntervalUpdated) + it.Event = new(ContractPaymentVaultGlobalRatePeriodIntervalUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -987,7 +987,7 @@ func (it *ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractPaymentVaultGlobalRateBinIntervalUpdated) + it.Event = new(ContractPaymentVaultGlobalRatePeriodIntervalUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1003,42 +1003,42 @@ func (it *ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator) Error() error { +func (it *ContractPaymentVaultGlobalRatePeriodIntervalUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator) Close() error { +func (it *ContractPaymentVaultGlobalRatePeriodIntervalUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractPaymentVaultGlobalRateBinIntervalUpdated represents a GlobalRateBinIntervalUpdated event raised by the ContractPaymentVault contract. -type ContractPaymentVaultGlobalRateBinIntervalUpdated struct { - PreviousValue *big.Int - NewValue *big.Int +// ContractPaymentVaultGlobalRatePeriodIntervalUpdated represents a GlobalRatePeriodIntervalUpdated event raised by the ContractPaymentVault contract. +type ContractPaymentVaultGlobalRatePeriodIntervalUpdated struct { + PreviousValue uint64 + NewValue uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterGlobalRateBinIntervalUpdated is a free log retrieval operation binding the contract event 0xd8e1e8a19df284fc03b3fb160e79cd05bd9d732512fcfd248ffa3195433b932f. +// FilterGlobalRatePeriodIntervalUpdated is a free log retrieval operation binding the contract event 0x833819c38214ef9f462f88b5c27a21bf201f394572a14da3e63c77ee15f0e93a. // -// Solidity: event GlobalRateBinIntervalUpdated(uint256 previousValue, uint256 newValue) -func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterGlobalRateBinIntervalUpdated(opts *bind.FilterOpts) (*ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator, error) { +// Solidity: event GlobalRatePeriodIntervalUpdated(uint64 previousValue, uint64 newValue) +func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterGlobalRatePeriodIntervalUpdated(opts *bind.FilterOpts) (*ContractPaymentVaultGlobalRatePeriodIntervalUpdatedIterator, error) { - logs, sub, err := _ContractPaymentVault.contract.FilterLogs(opts, "GlobalRateBinIntervalUpdated") + logs, sub, err := _ContractPaymentVault.contract.FilterLogs(opts, "GlobalRatePeriodIntervalUpdated") if err != nil { return nil, err } - return &ContractPaymentVaultGlobalRateBinIntervalUpdatedIterator{contract: _ContractPaymentVault.contract, event: "GlobalRateBinIntervalUpdated", logs: logs, sub: sub}, nil + return &ContractPaymentVaultGlobalRatePeriodIntervalUpdatedIterator{contract: _ContractPaymentVault.contract, event: "GlobalRatePeriodIntervalUpdated", logs: logs, sub: sub}, nil } -// WatchGlobalRateBinIntervalUpdated is a free log subscription operation binding the contract event 0xd8e1e8a19df284fc03b3fb160e79cd05bd9d732512fcfd248ffa3195433b932f. +// WatchGlobalRatePeriodIntervalUpdated is a free log subscription operation binding the contract event 0x833819c38214ef9f462f88b5c27a21bf201f394572a14da3e63c77ee15f0e93a. // -// Solidity: event GlobalRateBinIntervalUpdated(uint256 previousValue, uint256 newValue) -func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchGlobalRateBinIntervalUpdated(opts *bind.WatchOpts, sink chan<- *ContractPaymentVaultGlobalRateBinIntervalUpdated) (event.Subscription, error) { +// Solidity: event GlobalRatePeriodIntervalUpdated(uint64 previousValue, uint64 newValue) +func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchGlobalRatePeriodIntervalUpdated(opts *bind.WatchOpts, sink chan<- *ContractPaymentVaultGlobalRatePeriodIntervalUpdated) (event.Subscription, error) { - logs, sub, err := _ContractPaymentVault.contract.WatchLogs(opts, "GlobalRateBinIntervalUpdated") + logs, sub, err := _ContractPaymentVault.contract.WatchLogs(opts, "GlobalRatePeriodIntervalUpdated") if err != nil { return nil, err } @@ -1048,8 +1048,8 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchGlobalRateBinInt select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractPaymentVaultGlobalRateBinIntervalUpdated) - if err := _ContractPaymentVault.contract.UnpackLog(event, "GlobalRateBinIntervalUpdated", log); err != nil { + event := new(ContractPaymentVaultGlobalRatePeriodIntervalUpdated) + if err := _ContractPaymentVault.contract.UnpackLog(event, "GlobalRatePeriodIntervalUpdated", log); err != nil { return err } event.Raw = log @@ -1070,21 +1070,21 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchGlobalRateBinInt }), nil } -// ParseGlobalRateBinIntervalUpdated is a log parse operation binding the contract event 0xd8e1e8a19df284fc03b3fb160e79cd05bd9d732512fcfd248ffa3195433b932f. +// ParseGlobalRatePeriodIntervalUpdated is a log parse operation binding the contract event 0x833819c38214ef9f462f88b5c27a21bf201f394572a14da3e63c77ee15f0e93a. // -// Solidity: event GlobalRateBinIntervalUpdated(uint256 previousValue, uint256 newValue) -func (_ContractPaymentVault *ContractPaymentVaultFilterer) ParseGlobalRateBinIntervalUpdated(log types.Log) (*ContractPaymentVaultGlobalRateBinIntervalUpdated, error) { - event := new(ContractPaymentVaultGlobalRateBinIntervalUpdated) - if err := _ContractPaymentVault.contract.UnpackLog(event, "GlobalRateBinIntervalUpdated", log); err != nil { +// Solidity: event GlobalRatePeriodIntervalUpdated(uint64 previousValue, uint64 newValue) +func (_ContractPaymentVault *ContractPaymentVaultFilterer) ParseGlobalRatePeriodIntervalUpdated(log types.Log) (*ContractPaymentVaultGlobalRatePeriodIntervalUpdated, error) { + event := new(ContractPaymentVaultGlobalRatePeriodIntervalUpdated) + if err := _ContractPaymentVault.contract.UnpackLog(event, "GlobalRatePeriodIntervalUpdated", log); err != nil { return nil, err } event.Raw = log return event, nil } -// ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator is returned from FilterGlobalSymbolsPerBinUpdated and is used to iterate over the raw logs and unpacked data for GlobalSymbolsPerBinUpdated events raised by the ContractPaymentVault contract. -type ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator struct { - Event *ContractPaymentVaultGlobalSymbolsPerBinUpdated // Event containing the contract specifics and raw log +// ContractPaymentVaultGlobalSymbolsPerPeriodUpdatedIterator is returned from FilterGlobalSymbolsPerPeriodUpdated and is used to iterate over the raw logs and unpacked data for GlobalSymbolsPerPeriodUpdated events raised by the ContractPaymentVault contract. +type ContractPaymentVaultGlobalSymbolsPerPeriodUpdatedIterator struct { + Event *ContractPaymentVaultGlobalSymbolsPerPeriodUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1098,7 +1098,7 @@ type ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator) Next() bool { +func (it *ContractPaymentVaultGlobalSymbolsPerPeriodUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1107,7 +1107,7 @@ func (it *ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator) Next() bool { if it.done { select { case log := <-it.logs: - it.Event = new(ContractPaymentVaultGlobalSymbolsPerBinUpdated) + it.Event = new(ContractPaymentVaultGlobalSymbolsPerPeriodUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1122,7 +1122,7 @@ func (it *ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator) Next() bool { // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractPaymentVaultGlobalSymbolsPerBinUpdated) + it.Event = new(ContractPaymentVaultGlobalSymbolsPerPeriodUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1138,42 +1138,42 @@ func (it *ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator) Next() bool { } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator) Error() error { +func (it *ContractPaymentVaultGlobalSymbolsPerPeriodUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator) Close() error { +func (it *ContractPaymentVaultGlobalSymbolsPerPeriodUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractPaymentVaultGlobalSymbolsPerBinUpdated represents a GlobalSymbolsPerBinUpdated event raised by the ContractPaymentVault contract. -type ContractPaymentVaultGlobalSymbolsPerBinUpdated struct { - PreviousValue *big.Int - NewValue *big.Int +// ContractPaymentVaultGlobalSymbolsPerPeriodUpdated represents a GlobalSymbolsPerPeriodUpdated event raised by the ContractPaymentVault contract. +type ContractPaymentVaultGlobalSymbolsPerPeriodUpdated struct { + PreviousValue uint64 + NewValue uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterGlobalSymbolsPerBinUpdated is a free log retrieval operation binding the contract event 0xc80ff81bc9dc10646cce952d59479338db706f244ef19fc33d454d9d30bda0a3. +// FilterGlobalSymbolsPerPeriodUpdated is a free log retrieval operation binding the contract event 0x3edf3b79e74d9e583ff51df95fbabefe15f504d33475b2cc77cffba292268aae. // -// Solidity: event GlobalSymbolsPerBinUpdated(uint256 previousValue, uint256 newValue) -func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterGlobalSymbolsPerBinUpdated(opts *bind.FilterOpts) (*ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator, error) { +// Solidity: event GlobalSymbolsPerPeriodUpdated(uint64 previousValue, uint64 newValue) +func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterGlobalSymbolsPerPeriodUpdated(opts *bind.FilterOpts) (*ContractPaymentVaultGlobalSymbolsPerPeriodUpdatedIterator, error) { - logs, sub, err := _ContractPaymentVault.contract.FilterLogs(opts, "GlobalSymbolsPerBinUpdated") + logs, sub, err := _ContractPaymentVault.contract.FilterLogs(opts, "GlobalSymbolsPerPeriodUpdated") if err != nil { return nil, err } - return &ContractPaymentVaultGlobalSymbolsPerBinUpdatedIterator{contract: _ContractPaymentVault.contract, event: "GlobalSymbolsPerBinUpdated", logs: logs, sub: sub}, nil + return &ContractPaymentVaultGlobalSymbolsPerPeriodUpdatedIterator{contract: _ContractPaymentVault.contract, event: "GlobalSymbolsPerPeriodUpdated", logs: logs, sub: sub}, nil } -// WatchGlobalSymbolsPerBinUpdated is a free log subscription operation binding the contract event 0xc80ff81bc9dc10646cce952d59479338db706f244ef19fc33d454d9d30bda0a3. +// WatchGlobalSymbolsPerPeriodUpdated is a free log subscription operation binding the contract event 0x3edf3b79e74d9e583ff51df95fbabefe15f504d33475b2cc77cffba292268aae. // -// Solidity: event GlobalSymbolsPerBinUpdated(uint256 previousValue, uint256 newValue) -func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchGlobalSymbolsPerBinUpdated(opts *bind.WatchOpts, sink chan<- *ContractPaymentVaultGlobalSymbolsPerBinUpdated) (event.Subscription, error) { +// Solidity: event GlobalSymbolsPerPeriodUpdated(uint64 previousValue, uint64 newValue) +func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchGlobalSymbolsPerPeriodUpdated(opts *bind.WatchOpts, sink chan<- *ContractPaymentVaultGlobalSymbolsPerPeriodUpdated) (event.Subscription, error) { - logs, sub, err := _ContractPaymentVault.contract.WatchLogs(opts, "GlobalSymbolsPerBinUpdated") + logs, sub, err := _ContractPaymentVault.contract.WatchLogs(opts, "GlobalSymbolsPerPeriodUpdated") if err != nil { return nil, err } @@ -1183,8 +1183,8 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchGlobalSymbolsPer select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractPaymentVaultGlobalSymbolsPerBinUpdated) - if err := _ContractPaymentVault.contract.UnpackLog(event, "GlobalSymbolsPerBinUpdated", log); err != nil { + event := new(ContractPaymentVaultGlobalSymbolsPerPeriodUpdated) + if err := _ContractPaymentVault.contract.UnpackLog(event, "GlobalSymbolsPerPeriodUpdated", log); err != nil { return err } event.Raw = log @@ -1205,12 +1205,12 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchGlobalSymbolsPer }), nil } -// ParseGlobalSymbolsPerBinUpdated is a log parse operation binding the contract event 0xc80ff81bc9dc10646cce952d59479338db706f244ef19fc33d454d9d30bda0a3. +// ParseGlobalSymbolsPerPeriodUpdated is a log parse operation binding the contract event 0x3edf3b79e74d9e583ff51df95fbabefe15f504d33475b2cc77cffba292268aae. // -// Solidity: event GlobalSymbolsPerBinUpdated(uint256 previousValue, uint256 newValue) -func (_ContractPaymentVault *ContractPaymentVaultFilterer) ParseGlobalSymbolsPerBinUpdated(log types.Log) (*ContractPaymentVaultGlobalSymbolsPerBinUpdated, error) { - event := new(ContractPaymentVaultGlobalSymbolsPerBinUpdated) - if err := _ContractPaymentVault.contract.UnpackLog(event, "GlobalSymbolsPerBinUpdated", log); err != nil { +// Solidity: event GlobalSymbolsPerPeriodUpdated(uint64 previousValue, uint64 newValue) +func (_ContractPaymentVault *ContractPaymentVaultFilterer) ParseGlobalSymbolsPerPeriodUpdated(log types.Log) (*ContractPaymentVaultGlobalSymbolsPerPeriodUpdated, error) { + event := new(ContractPaymentVaultGlobalSymbolsPerPeriodUpdated) + if err := _ContractPaymentVault.contract.UnpackLog(event, "GlobalSymbolsPerPeriodUpdated", log); err != nil { return nil, err } event.Raw = log @@ -1426,9 +1426,9 @@ type ContractPaymentVaultOnDemandPaymentUpdated struct { Raw types.Log // Blockchain specific contextual infos } -// FilterOnDemandPaymentUpdated is a free log retrieval operation binding the contract event 0x56b34df61acb18dada28b541448a4ff3faf4c0970eb58b9980468a2c75383322. +// FilterOnDemandPaymentUpdated is a free log retrieval operation binding the contract event 0x6fbb447a2c09b8901d70b0d5b9fbce159ee8fda4460e5af2570cab3fe0adf268. // -// Solidity: event OnDemandPaymentUpdated(address indexed account, uint256 onDemandPayment, uint256 totalDeposit) +// Solidity: event OnDemandPaymentUpdated(address indexed account, uint80 onDemandPayment, uint80 totalDeposit) func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterOnDemandPaymentUpdated(opts *bind.FilterOpts, account []common.Address) (*ContractPaymentVaultOnDemandPaymentUpdatedIterator, error) { var accountRule []interface{} @@ -1443,9 +1443,9 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterOnDemandPayment return &ContractPaymentVaultOnDemandPaymentUpdatedIterator{contract: _ContractPaymentVault.contract, event: "OnDemandPaymentUpdated", logs: logs, sub: sub}, nil } -// WatchOnDemandPaymentUpdated is a free log subscription operation binding the contract event 0x56b34df61acb18dada28b541448a4ff3faf4c0970eb58b9980468a2c75383322. +// WatchOnDemandPaymentUpdated is a free log subscription operation binding the contract event 0x6fbb447a2c09b8901d70b0d5b9fbce159ee8fda4460e5af2570cab3fe0adf268. // -// Solidity: event OnDemandPaymentUpdated(address indexed account, uint256 onDemandPayment, uint256 totalDeposit) +// Solidity: event OnDemandPaymentUpdated(address indexed account, uint80 onDemandPayment, uint80 totalDeposit) func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchOnDemandPaymentUpdated(opts *bind.WatchOpts, sink chan<- *ContractPaymentVaultOnDemandPaymentUpdated, account []common.Address) (event.Subscription, error) { var accountRule []interface{} @@ -1485,9 +1485,9 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchOnDemandPaymentU }), nil } -// ParseOnDemandPaymentUpdated is a log parse operation binding the contract event 0x56b34df61acb18dada28b541448a4ff3faf4c0970eb58b9980468a2c75383322. +// ParseOnDemandPaymentUpdated is a log parse operation binding the contract event 0x6fbb447a2c09b8901d70b0d5b9fbce159ee8fda4460e5af2570cab3fe0adf268. // -// Solidity: event OnDemandPaymentUpdated(address indexed account, uint256 onDemandPayment, uint256 totalDeposit) +// Solidity: event OnDemandPaymentUpdated(address indexed account, uint80 onDemandPayment, uint80 totalDeposit) func (_ContractPaymentVault *ContractPaymentVaultFilterer) ParseOnDemandPaymentUpdated(log types.Log) (*ContractPaymentVaultOnDemandPaymentUpdated, error) { event := new(ContractPaymentVaultOnDemandPaymentUpdated) if err := _ContractPaymentVault.contract.UnpackLog(event, "OnDemandPaymentUpdated", log); err != nil { @@ -1719,18 +1719,18 @@ func (it *ContractPaymentVaultPriceParamsUpdatedIterator) Close() error { // ContractPaymentVaultPriceParamsUpdated represents a PriceParamsUpdated event raised by the ContractPaymentVault contract. type ContractPaymentVaultPriceParamsUpdated struct { - PreviousMinNumSymbols *big.Int - NewMinNumSymbols *big.Int - PreviousPricePerSymbol *big.Int - NewPricePerSymbol *big.Int - PreviousPriceUpdateCooldown *big.Int - NewPriceUpdateCooldown *big.Int + PreviousMinNumSymbols uint64 + NewMinNumSymbols uint64 + PreviousPricePerSymbol uint64 + NewPricePerSymbol uint64 + PreviousPriceUpdateCooldown uint64 + NewPriceUpdateCooldown uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterPriceParamsUpdated is a free log retrieval operation binding the contract event 0x4e8b1ca1fe3c8cccee8ccb90aaf40042352429fa05c61c75b8e77836ed3af551. +// FilterPriceParamsUpdated is a free log retrieval operation binding the contract event 0x9b97ed982ea5820e21bfc9578505e78068a5333487583460ad56ff72defef77a. // -// Solidity: event PriceParamsUpdated(uint256 previousMinNumSymbols, uint256 newMinNumSymbols, uint256 previousPricePerSymbol, uint256 newPricePerSymbol, uint256 previousPriceUpdateCooldown, uint256 newPriceUpdateCooldown) +// Solidity: event PriceParamsUpdated(uint64 previousMinNumSymbols, uint64 newMinNumSymbols, uint64 previousPricePerSymbol, uint64 newPricePerSymbol, uint64 previousPriceUpdateCooldown, uint64 newPriceUpdateCooldown) func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterPriceParamsUpdated(opts *bind.FilterOpts) (*ContractPaymentVaultPriceParamsUpdatedIterator, error) { logs, sub, err := _ContractPaymentVault.contract.FilterLogs(opts, "PriceParamsUpdated") @@ -1740,9 +1740,9 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterPriceParamsUpda return &ContractPaymentVaultPriceParamsUpdatedIterator{contract: _ContractPaymentVault.contract, event: "PriceParamsUpdated", logs: logs, sub: sub}, nil } -// WatchPriceParamsUpdated is a free log subscription operation binding the contract event 0x4e8b1ca1fe3c8cccee8ccb90aaf40042352429fa05c61c75b8e77836ed3af551. +// WatchPriceParamsUpdated is a free log subscription operation binding the contract event 0x9b97ed982ea5820e21bfc9578505e78068a5333487583460ad56ff72defef77a. // -// Solidity: event PriceParamsUpdated(uint256 previousMinNumSymbols, uint256 newMinNumSymbols, uint256 previousPricePerSymbol, uint256 newPricePerSymbol, uint256 previousPriceUpdateCooldown, uint256 newPriceUpdateCooldown) +// Solidity: event PriceParamsUpdated(uint64 previousMinNumSymbols, uint64 newMinNumSymbols, uint64 previousPricePerSymbol, uint64 newPricePerSymbol, uint64 previousPriceUpdateCooldown, uint64 newPriceUpdateCooldown) func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchPriceParamsUpdated(opts *bind.WatchOpts, sink chan<- *ContractPaymentVaultPriceParamsUpdated) (event.Subscription, error) { logs, sub, err := _ContractPaymentVault.contract.WatchLogs(opts, "PriceParamsUpdated") @@ -1777,9 +1777,9 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchPriceParamsUpdat }), nil } -// ParsePriceParamsUpdated is a log parse operation binding the contract event 0x4e8b1ca1fe3c8cccee8ccb90aaf40042352429fa05c61c75b8e77836ed3af551. +// ParsePriceParamsUpdated is a log parse operation binding the contract event 0x9b97ed982ea5820e21bfc9578505e78068a5333487583460ad56ff72defef77a. // -// Solidity: event PriceParamsUpdated(uint256 previousMinNumSymbols, uint256 newMinNumSymbols, uint256 previousPricePerSymbol, uint256 newPricePerSymbol, uint256 previousPriceUpdateCooldown, uint256 newPriceUpdateCooldown) +// Solidity: event PriceParamsUpdated(uint64 previousMinNumSymbols, uint64 newMinNumSymbols, uint64 previousPricePerSymbol, uint64 newPricePerSymbol, uint64 previousPriceUpdateCooldown, uint64 newPriceUpdateCooldown) func (_ContractPaymentVault *ContractPaymentVaultFilterer) ParsePriceParamsUpdated(log types.Log) (*ContractPaymentVaultPriceParamsUpdated, error) { event := new(ContractPaymentVaultPriceParamsUpdated) if err := _ContractPaymentVault.contract.UnpackLog(event, "PriceParamsUpdated", log); err != nil { @@ -1789,9 +1789,9 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) ParsePriceParamsUpdat return event, nil } -// ContractPaymentVaultReservationBinIntervalUpdatedIterator is returned from FilterReservationBinIntervalUpdated and is used to iterate over the raw logs and unpacked data for ReservationBinIntervalUpdated events raised by the ContractPaymentVault contract. -type ContractPaymentVaultReservationBinIntervalUpdatedIterator struct { - Event *ContractPaymentVaultReservationBinIntervalUpdated // Event containing the contract specifics and raw log +// ContractPaymentVaultReservationPeriodIntervalUpdatedIterator is returned from FilterReservationPeriodIntervalUpdated and is used to iterate over the raw logs and unpacked data for ReservationPeriodIntervalUpdated events raised by the ContractPaymentVault contract. +type ContractPaymentVaultReservationPeriodIntervalUpdatedIterator struct { + Event *ContractPaymentVaultReservationPeriodIntervalUpdated // Event containing the contract specifics and raw log contract *bind.BoundContract // Generic contract to use for unpacking event data event string // Event name to use for unpacking event data @@ -1805,7 +1805,7 @@ type ContractPaymentVaultReservationBinIntervalUpdatedIterator struct { // Next advances the iterator to the subsequent event, returning whether there // are any more events found. In case of a retrieval or parsing error, false is // returned and Error() can be queried for the exact failure. -func (it *ContractPaymentVaultReservationBinIntervalUpdatedIterator) Next() bool { +func (it *ContractPaymentVaultReservationPeriodIntervalUpdatedIterator) Next() bool { // If the iterator failed, stop iterating if it.fail != nil { return false @@ -1814,7 +1814,7 @@ func (it *ContractPaymentVaultReservationBinIntervalUpdatedIterator) Next() bool if it.done { select { case log := <-it.logs: - it.Event = new(ContractPaymentVaultReservationBinIntervalUpdated) + it.Event = new(ContractPaymentVaultReservationPeriodIntervalUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1829,7 +1829,7 @@ func (it *ContractPaymentVaultReservationBinIntervalUpdatedIterator) Next() bool // Iterator still in progress, wait for either a data or an error event select { case log := <-it.logs: - it.Event = new(ContractPaymentVaultReservationBinIntervalUpdated) + it.Event = new(ContractPaymentVaultReservationPeriodIntervalUpdated) if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { it.fail = err return false @@ -1845,42 +1845,42 @@ func (it *ContractPaymentVaultReservationBinIntervalUpdatedIterator) Next() bool } // Error returns any retrieval or parsing error occurred during filtering. -func (it *ContractPaymentVaultReservationBinIntervalUpdatedIterator) Error() error { +func (it *ContractPaymentVaultReservationPeriodIntervalUpdatedIterator) Error() error { return it.fail } // Close terminates the iteration process, releasing any pending underlying // resources. -func (it *ContractPaymentVaultReservationBinIntervalUpdatedIterator) Close() error { +func (it *ContractPaymentVaultReservationPeriodIntervalUpdatedIterator) Close() error { it.sub.Unsubscribe() return nil } -// ContractPaymentVaultReservationBinIntervalUpdated represents a ReservationBinIntervalUpdated event raised by the ContractPaymentVault contract. -type ContractPaymentVaultReservationBinIntervalUpdated struct { - PreviousValue *big.Int - NewValue *big.Int +// ContractPaymentVaultReservationPeriodIntervalUpdated represents a ReservationPeriodIntervalUpdated event raised by the ContractPaymentVault contract. +type ContractPaymentVaultReservationPeriodIntervalUpdated struct { + PreviousValue uint64 + NewValue uint64 Raw types.Log // Blockchain specific contextual infos } -// FilterReservationBinIntervalUpdated is a free log retrieval operation binding the contract event 0xf6b7e27129fefc5c7012885c85042d19038ba1abe27be1402518bafb73f55d1a. +// FilterReservationPeriodIntervalUpdated is a free log retrieval operation binding the contract event 0x1ef4a1ce7d8e50959d15578b346bb20a5b049e5ee1978014a4ba66476265c957. // -// Solidity: event ReservationBinIntervalUpdated(uint256 previousValue, uint256 newValue) -func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterReservationBinIntervalUpdated(opts *bind.FilterOpts) (*ContractPaymentVaultReservationBinIntervalUpdatedIterator, error) { +// Solidity: event ReservationPeriodIntervalUpdated(uint64 previousValue, uint64 newValue) +func (_ContractPaymentVault *ContractPaymentVaultFilterer) FilterReservationPeriodIntervalUpdated(opts *bind.FilterOpts) (*ContractPaymentVaultReservationPeriodIntervalUpdatedIterator, error) { - logs, sub, err := _ContractPaymentVault.contract.FilterLogs(opts, "ReservationBinIntervalUpdated") + logs, sub, err := _ContractPaymentVault.contract.FilterLogs(opts, "ReservationPeriodIntervalUpdated") if err != nil { return nil, err } - return &ContractPaymentVaultReservationBinIntervalUpdatedIterator{contract: _ContractPaymentVault.contract, event: "ReservationBinIntervalUpdated", logs: logs, sub: sub}, nil + return &ContractPaymentVaultReservationPeriodIntervalUpdatedIterator{contract: _ContractPaymentVault.contract, event: "ReservationPeriodIntervalUpdated", logs: logs, sub: sub}, nil } -// WatchReservationBinIntervalUpdated is a free log subscription operation binding the contract event 0xf6b7e27129fefc5c7012885c85042d19038ba1abe27be1402518bafb73f55d1a. +// WatchReservationPeriodIntervalUpdated is a free log subscription operation binding the contract event 0x1ef4a1ce7d8e50959d15578b346bb20a5b049e5ee1978014a4ba66476265c957. // -// Solidity: event ReservationBinIntervalUpdated(uint256 previousValue, uint256 newValue) -func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchReservationBinIntervalUpdated(opts *bind.WatchOpts, sink chan<- *ContractPaymentVaultReservationBinIntervalUpdated) (event.Subscription, error) { +// Solidity: event ReservationPeriodIntervalUpdated(uint64 previousValue, uint64 newValue) +func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchReservationPeriodIntervalUpdated(opts *bind.WatchOpts, sink chan<- *ContractPaymentVaultReservationPeriodIntervalUpdated) (event.Subscription, error) { - logs, sub, err := _ContractPaymentVault.contract.WatchLogs(opts, "ReservationBinIntervalUpdated") + logs, sub, err := _ContractPaymentVault.contract.WatchLogs(opts, "ReservationPeriodIntervalUpdated") if err != nil { return nil, err } @@ -1890,8 +1890,8 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchReservationBinIn select { case log := <-logs: // New log arrived, parse the event and forward to the user - event := new(ContractPaymentVaultReservationBinIntervalUpdated) - if err := _ContractPaymentVault.contract.UnpackLog(event, "ReservationBinIntervalUpdated", log); err != nil { + event := new(ContractPaymentVaultReservationPeriodIntervalUpdated) + if err := _ContractPaymentVault.contract.UnpackLog(event, "ReservationPeriodIntervalUpdated", log); err != nil { return err } event.Raw = log @@ -1912,12 +1912,12 @@ func (_ContractPaymentVault *ContractPaymentVaultFilterer) WatchReservationBinIn }), nil } -// ParseReservationBinIntervalUpdated is a log parse operation binding the contract event 0xf6b7e27129fefc5c7012885c85042d19038ba1abe27be1402518bafb73f55d1a. +// ParseReservationPeriodIntervalUpdated is a log parse operation binding the contract event 0x1ef4a1ce7d8e50959d15578b346bb20a5b049e5ee1978014a4ba66476265c957. // -// Solidity: event ReservationBinIntervalUpdated(uint256 previousValue, uint256 newValue) -func (_ContractPaymentVault *ContractPaymentVaultFilterer) ParseReservationBinIntervalUpdated(log types.Log) (*ContractPaymentVaultReservationBinIntervalUpdated, error) { - event := new(ContractPaymentVaultReservationBinIntervalUpdated) - if err := _ContractPaymentVault.contract.UnpackLog(event, "ReservationBinIntervalUpdated", log); err != nil { +// Solidity: event ReservationPeriodIntervalUpdated(uint64 previousValue, uint64 newValue) +func (_ContractPaymentVault *ContractPaymentVaultFilterer) ParseReservationPeriodIntervalUpdated(log types.Log) (*ContractPaymentVaultReservationPeriodIntervalUpdated, error) { + event := new(ContractPaymentVaultReservationPeriodIntervalUpdated) + if err := _ContractPaymentVault.contract.UnpackLog(event, "ReservationPeriodIntervalUpdated", log); err != nil { return nil, err } event.Raw = log diff --git a/core/eth/reader.go b/core/eth/reader.go index 6390f221f..5b937a871 100644 --- a/core/eth/reader.go +++ b/core/eth/reader.go @@ -210,6 +210,21 @@ func (t *Reader) updateContractBindings(blsOperatorStateRetrieverAddr, eigenDASe } } + var contractPaymentVault *paymentvault.ContractPaymentVault + paymentVaultAddr, err := contractEigenDAServiceManager.PaymentVault(&bind.CallOpts{}) + if err != nil { + t.logger.Error("Failed to fetch PaymentVault address", "err", err) + //TODO(hopeyen): return err when the contract is deployed + // return err + } else { + contractPaymentVault, err = paymentvault.NewContractPaymentVault(paymentVaultAddr, t.ethClient) + if err != nil { + t.logger.Error("Failed to fetch PaymentVault contract", "err", err) + return err + } + + } + t.bindings = &ContractBindings{ ServiceManagerAddr: eigenDAServiceManagerAddr, RegCoordinatorAddr: registryCoordinatorAddr, @@ -224,8 +239,8 @@ func (t *Reader) updateContractBindings(blsOperatorStateRetrieverAddr, eigenDASe EigenDAServiceManager: contractEigenDAServiceManager, DelegationManager: contractDelegationManager, RelayRegistry: contractRelayRegistry, - // PaymentVault: contractPaymentVault, - ThresholdRegistry: contractThresholdRegistry, + PaymentVault: contractPaymentVault, + ThresholdRegistry: contractThresholdRegistry, } return nil } @@ -734,9 +749,8 @@ func (t *Reader) GetOnDemandPayments(ctx context.Context, accountIDs []gethcommo return nil, errors.New("payment vault not deployed") } paymentsMap := make(map[gethcommon.Address]*core.OnDemandPayment) - payments, err := t.bindings.PaymentVault.GetOnDemandAmounts(&bind.CallOpts{ - Context: ctx, - }, accountIDs) + payments, err := t.bindings.PaymentVault.GetOnDemandTotalDeposits(&bind.CallOpts{ + Context: ctx}, accountIDs) if err != nil { return nil, err } @@ -759,7 +773,7 @@ func (t *Reader) GetOnDemandPaymentByAccount(ctx context.Context, accountID geth if t.bindings.PaymentVault == nil { return nil, errors.New("payment vault not deployed") } - onDemandPayment, err := t.bindings.PaymentVault.GetOnDemandAmount(&bind.CallOpts{ + onDemandPayment, err := t.bindings.PaymentVault.GetOnDemandTotalDeposit(&bind.CallOpts{ Context: ctx, }, accountID) if err != nil { @@ -777,28 +791,27 @@ func (t *Reader) GetGlobalSymbolsPerSecond(ctx context.Context) (uint64, error) if t.bindings.PaymentVault == nil { return 0, errors.New("payment vault not deployed") } - globalSymbolsPerSecond, err := t.bindings.PaymentVault.GlobalRateBinInterval(&bind.CallOpts{ + globalSymbolsPerSecond, err := t.bindings.PaymentVault.GlobalRatePeriodInterval(&bind.CallOpts{ Context: ctx, }) if err != nil { return 0, err } - return globalSymbolsPerSecond.Uint64(), nil + return globalSymbolsPerSecond, nil } -func (t *Reader) GetGlobalRateBinInterval(ctx context.Context) (uint32, error) { +func (t *Reader) GetGlobalRatePeriodInterval(ctx context.Context) (uint32, error) { if t.bindings.PaymentVault == nil { return 0, errors.New("payment vault not deployed") } - globalRateBinInterval, err := t.bindings.PaymentVault.GlobalRateBinInterval(&bind.CallOpts{ + globalRateBinInterval, err := t.bindings.PaymentVault.GlobalRatePeriodInterval(&bind.CallOpts{ Context: ctx, }) if err != nil { return 0, err } - return uint32(globalRateBinInterval.Uint64()), nil + return uint32(globalRateBinInterval), nil } - func (t *Reader) GetMinNumSymbols(ctx context.Context) (uint32, error) { if t.bindings.PaymentVault == nil { return 0, errors.New("payment vault not deployed") @@ -809,7 +822,7 @@ func (t *Reader) GetMinNumSymbols(ctx context.Context) (uint32, error) { if err != nil { return 0, err } - return uint32(minNumSymbols.Uint64()), nil + return uint32(minNumSymbols), nil } func (t *Reader) GetPricePerSymbol(ctx context.Context) (uint32, error) { @@ -822,20 +835,19 @@ func (t *Reader) GetPricePerSymbol(ctx context.Context) (uint32, error) { if err != nil { return 0, err } - return uint32(pricePerSymbol.Uint64()), nil + return uint32(pricePerSymbol), nil } func (t *Reader) GetReservationWindow(ctx context.Context) (uint32, error) { if t.bindings.PaymentVault == nil { return 0, errors.New("payment vault not deployed") } - reservationWindow, err := t.bindings.PaymentVault.ReservationBinInterval(&bind.CallOpts{ - Context: ctx, - }) + reservationWindow, err := t.bindings.PaymentVault.ReservationPeriodInterval(&bind.CallOpts{ + Context: ctx}) if err != nil { return 0, err } - return uint32(reservationWindow.Uint64()), nil + return uint32(reservationWindow), nil } func (t *Reader) GetOperatorSocket(ctx context.Context, operatorId core.OperatorID) (string, error) { @@ -843,8 +855,7 @@ func (t *Reader) GetOperatorSocket(ctx context.Context, operatorId core.Operator return "", errors.New("socket registry not enabled") } socket, err := t.bindings.SocketRegistry.GetOperatorSocket(&bind.CallOpts{ - Context: ctx, - }, [32]byte(operatorId)) + Context: ctx}, [32]byte(operatorId)) if err != nil { return "", err } diff --git a/core/meterer/meterer.go b/core/meterer/meterer.go index 681c6d8c6..0babbe1f0 100644 --- a/core/meterer/meterer.go +++ b/core/meterer/meterer.go @@ -264,13 +264,13 @@ func (m *Meterer) SymbolsCharged(numSymbols uint) uint32 { // IncrementBinUsage increments the bin usage atomically and checks for overflow func (m *Meterer) IncrementGlobalBinUsage(ctx context.Context, symbolsCharged uint64) error { - globalPeriod := GetReservationPeriod(uint64(time.Now().Unix()), m.ChainPaymentState.GetGlobalRateBinInterval()) + globalPeriod := GetReservationPeriod(uint64(time.Now().Unix()), m.ChainPaymentState.GetGlobalRatePeriodInterval()) newUsage, err := m.OffchainStore.UpdateGlobalBin(ctx, globalPeriod, symbolsCharged) if err != nil { return fmt.Errorf("failed to increment global bin usage: %w", err) } - if newUsage > m.ChainPaymentState.GetGlobalSymbolsPerSecond() { + if newUsage > m.ChainPaymentState.GetGlobalSymbolsPerSecond()*uint64(m.ChainPaymentState.GetGlobalRatePeriodInterval()) { return fmt.Errorf("global bin usage overflows") } return nil diff --git a/core/meterer/meterer_test.go b/core/meterer/meterer_test.go index 9ab35df54..2b4bc4fa3 100644 --- a/core/meterer/meterer_test.go +++ b/core/meterer/meterer_test.go @@ -180,7 +180,7 @@ func TestMetererReservations(t *testing.T) { ctx := context.Background() paymentChainState.On("GetReservationWindow", testifymock.Anything).Return(uint32(1), nil) paymentChainState.On("GetGlobalSymbolsPerSecond", testifymock.Anything).Return(uint64(1009), nil) - paymentChainState.On("GetGlobalRateBinInterval", testifymock.Anything).Return(uint32(1), nil) + paymentChainState.On("GetGlobalRatePeriodInterval", testifymock.Anything).Return(uint32(1), nil) paymentChainState.On("GetMinNumSymbols", testifymock.Anything).Return(uint32(3), nil) reservationPeriod := meterer.GetReservationPeriod(uint64(time.Now().Unix()), mt.ChainPaymentState.GetReservationWindow()) diff --git a/core/meterer/onchain_state.go b/core/meterer/onchain_state.go index 85d6a9c93..48b15c43a 100644 --- a/core/meterer/onchain_state.go +++ b/core/meterer/onchain_state.go @@ -19,7 +19,7 @@ type OnchainPayment interface { GetOnDemandPaymentByAccount(ctx context.Context, accountID gethcommon.Address) (*core.OnDemandPayment, error) GetOnDemandQuorumNumbers(ctx context.Context) ([]uint8, error) GetGlobalSymbolsPerSecond() uint64 - GetGlobalRateBinInterval() uint32 + GetGlobalRatePeriodInterval() uint32 GetMinNumSymbols() uint32 GetPricePerSymbol() uint32 GetReservationWindow() uint32 @@ -40,12 +40,12 @@ type OnchainPaymentState struct { } type PaymentVaultParams struct { - GlobalSymbolsPerSecond uint64 - GlobalRateBinInterval uint32 - MinNumSymbols uint32 - PricePerSymbol uint32 - ReservationWindow uint32 - OnDemandQuorumNumbers []uint8 + GlobalSymbolsPerSecond uint64 + GlobalRatePeriodInterval uint32 + MinNumSymbols uint32 + PricePerSymbol uint32 + ReservationWindow uint32 + OnDemandQuorumNumbers []uint8 } func NewOnchainPaymentState(ctx context.Context, tx *eth.Reader) (*OnchainPaymentState, error) { @@ -194,8 +194,8 @@ func (pcs *OnchainPaymentState) GetGlobalSymbolsPerSecond() uint64 { return pcs.PaymentVaultParams.Load().GlobalSymbolsPerSecond } -func (pcs *OnchainPaymentState) GetGlobalRateBinInterval() uint32 { - return pcs.PaymentVaultParams.Load().GlobalRateBinInterval +func (pcs *OnchainPaymentState) GetGlobalRatePeriodInterval() uint32 { + return pcs.PaymentVaultParams.Load().GlobalRatePeriodInterval } func (pcs *OnchainPaymentState) GetMinNumSymbols() uint32 { diff --git a/core/mock/payment_state.go b/core/mock/payment_state.go index 8af76628f..32a2a0b6c 100644 --- a/core/mock/payment_state.go +++ b/core/mock/payment_state.go @@ -62,7 +62,7 @@ func (m *MockOnchainPaymentState) GetGlobalSymbolsPerSecond() uint64 { return args.Get(0).(uint64) } -func (m *MockOnchainPaymentState) GetGlobalRateBinInterval() uint32 { +func (m *MockOnchainPaymentState) GetGlobalRatePeriodInterval() uint32 { args := m.Called() return args.Get(0).(uint32) } diff --git a/disperser/apiserver/server_v2_test.go b/disperser/apiserver/server_v2_test.go index 41409bf55..7f95a8f3b 100644 --- a/disperser/apiserver/server_v2_test.go +++ b/disperser/apiserver/server_v2_test.go @@ -443,7 +443,7 @@ func newTestServerV2(t *testing.T) *testComponents { mockState.On("GetReservationWindow", tmock.Anything).Return(uint32(1), nil) mockState.On("GetPricePerSymbol", tmock.Anything).Return(uint32(2), nil) mockState.On("GetGlobalSymbolsPerSecond", tmock.Anything).Return(uint64(1009), nil) - mockState.On("GetGlobalRateBinInterval", tmock.Anything).Return(uint32(1), nil) + mockState.On("GetGlobalRatePeriodInterval", tmock.Anything).Return(uint32(1), nil) mockState.On("GetMinNumSymbols", tmock.Anything).Return(uint32(3), nil) now := uint64(time.Now().Unix())