diff --git a/.changeset/forty-lizards-camp.md b/.changeset/forty-lizards-camp.md new file mode 100644 index 00000000000..3e0a5a59b0e --- /dev/null +++ b/.changeset/forty-lizards-camp.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +Enable rotating encryptionPublicKey in CapabilitiesRegistry contract diff --git a/contracts/.changeset/silent-houses-join.md b/contracts/.changeset/silent-houses-join.md new file mode 100644 index 00000000000..4138756c78a --- /dev/null +++ b/contracts/.changeset/silent-houses-join.md @@ -0,0 +1,5 @@ +--- +'@chainlink/contracts': patch +--- + +Enable rotating encryptionPublicKey in CapabilitiesRegistry contract diff --git a/contracts/src/v0.8/keystone/CapabilitiesRegistry.sol b/contracts/src/v0.8/keystone/CapabilitiesRegistry.sol index 4f4ff6f3280..d69fafa7009 100644 --- a/contracts/src/v0.8/keystone/CapabilitiesRegistry.sol +++ b/contracts/src/v0.8/keystone/CapabilitiesRegistry.sol @@ -641,6 +641,8 @@ contract CapabilitiesRegistry is OwnerIsCreator, TypeAndVersionInterface { s_nodeSigners.add(node.signer); } + if (node.encryptionPublicKey == bytes32("")) revert InvalidNodeEncryptionPublicKey(node.encryptionPublicKey); + bytes32[] memory supportedHashedCapabilityIds = node.hashedCapabilityIds; if (supportedHashedCapabilityIds.length == 0) revert InvalidNodeCapabilities(supportedHashedCapabilityIds); @@ -678,6 +680,7 @@ contract CapabilitiesRegistry is OwnerIsCreator, TypeAndVersionInterface { storedNode.nodeOperatorId = node.nodeOperatorId; storedNode.p2pId = node.p2pId; + storedNode.encryptionPublicKey = node.encryptionPublicKey; emit NodeUpdated(node.p2pId, node.nodeOperatorId, node.signer); } diff --git a/contracts/src/v0.8/keystone/test/CapabilitiesRegistry_UpdateNodesTest.t.sol b/contracts/src/v0.8/keystone/test/CapabilitiesRegistry_UpdateNodesTest.t.sol index fe846536270..218161f3b2c 100644 --- a/contracts/src/v0.8/keystone/test/CapabilitiesRegistry_UpdateNodesTest.t.sol +++ b/contracts/src/v0.8/keystone/test/CapabilitiesRegistry_UpdateNodesTest.t.sol @@ -138,6 +138,25 @@ contract CapabilitiesRegistry_UpdateNodesTest is BaseTest { s_CapabilitiesRegistry.updateNodes(nodes); } + function test_RevertWhen_EncryptionPublicKeyEmpty() public { + changePrank(NODE_OPERATOR_ONE_ADMIN); + CapabilitiesRegistry.NodeParams[] memory nodes = new CapabilitiesRegistry.NodeParams[](1); + + bytes32[] memory hashedCapabilityIds = new bytes32[](1); + hashedCapabilityIds[0] = s_basicHashedCapabilityId; + + nodes[0] = CapabilitiesRegistry.NodeParams({ + nodeOperatorId: TEST_NODE_OPERATOR_ONE_ID, + p2pId: P2P_ID, + signer: NODE_OPERATOR_ONE_SIGNER_ADDRESS, + encryptionPublicKey: bytes32(""), + hashedCapabilityIds: hashedCapabilityIds + }); + + vm.expectRevert(abi.encodeWithSelector(CapabilitiesRegistry.InvalidNodeEncryptionPublicKey.selector, bytes32(""))); + s_CapabilitiesRegistry.updateNodes(nodes); + } + function test_RevertWhen_NodeSignerAlreadyAssignedToAnotherNode() public { changePrank(NODE_OPERATOR_ONE_ADMIN); CapabilitiesRegistry.NodeParams[] memory nodes = new CapabilitiesRegistry.NodeParams[](1); diff --git a/core/gethwrappers/keystone/generated/capabilities_registry/capabilities_registry.go b/core/gethwrappers/keystone/generated/capabilities_registry/capabilities_registry.go index 971d2264d61..70ef48982c6 100644 --- a/core/gethwrappers/keystone/generated/capabilities_registry/capabilities_registry.go +++ b/core/gethwrappers/keystone/generated/capabilities_registry/capabilities_registry.go @@ -89,7 +89,7 @@ type CapabilitiesRegistryNodeParams struct { var CapabilitiesRegistryMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"AccessForbidden\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityIsDeprecated\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"CapabilityRequiredByDON\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"DONDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONCapability\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"DuplicateDONNode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"proposedConfigurationContract\",\"type\":\"address\"}],\"name\":\"InvalidCapabilityConfigurationContractInterface\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"nodeCount\",\"type\":\"uint256\"}],\"name\":\"InvalidFaultTolerance\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"name\":\"InvalidNodeCapabilities\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"encryptionPublicKey\",\"type\":\"bytes32\"}],\"name\":\"InvalidNodeEncryptionPublicKey\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeOperatorAdmin\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"InvalidNodeP2PId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidNodeSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"lengthOne\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lengthTwo\",\"type\":\"uint256\"}],\"name\":\"LengthMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"NodeAlreadyExists\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"NodeDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"NodeDoesNotSupportCapability\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"}],\"name\":\"NodeOperatorDoesNotExist\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"NodePartOfCapabilitiesDON\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"nodeP2PId\",\"type\":\"bytes32\"}],\"name\":\"NodePartOfWorkflowDON\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityConfigured\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"CapabilityDeprecated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"}],\"name\":\"ConfigSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"}],\"name\":\"NodeOperatorRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"name\":\"NodeOperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"NodeRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"}],\"name\":\"NodeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"string\",\"name\":\"labelledName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"enumCapabilitiesRegistry.CapabilityType\",\"name\":\"capabilityType\",\"type\":\"uint8\"},{\"internalType\":\"enumCapabilitiesRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"}],\"internalType\":\"structCapabilitiesRegistry.Capability[]\",\"name\":\"capabilities\",\"type\":\"tuple[]\"}],\"name\":\"addCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"nodes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilitiesRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"acceptsWorkflows\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"}],\"name\":\"addDON\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilitiesRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"addNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"encryptionPublicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilitiesRegistry.NodeParams[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"addNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"name\":\"deprecateCapabilities\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCapabilities\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hashedId\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"labelledName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"enumCapabilitiesRegistry.CapabilityType\",\"name\":\"capabilityType\",\"type\":\"uint8\"},{\"internalType\":\"enumCapabilitiesRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDeprecated\",\"type\":\"bool\"}],\"internalType\":\"structCapabilitiesRegistry.CapabilityInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedId\",\"type\":\"bytes32\"}],\"name\":\"getCapability\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"hashedId\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"labelledName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"},{\"internalType\":\"enumCapabilitiesRegistry.CapabilityType\",\"name\":\"capabilityType\",\"type\":\"uint8\"},{\"internalType\":\"enumCapabilitiesRegistry.CapabilityResponseType\",\"name\":\"responseType\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"configurationContract\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"isDeprecated\",\"type\":\"bool\"}],\"internalType\":\"structCapabilitiesRegistry.CapabilityInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"}],\"name\":\"getCapabilityConfigs\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"}],\"name\":\"getDON\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"acceptsWorkflows\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodeP2PIds\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilitiesRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"}],\"internalType\":\"structCapabilitiesRegistry.DONInfo\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDONs\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"id\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"acceptsWorkflows\",\"type\":\"bool\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodeP2PIds\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilitiesRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"}],\"internalType\":\"structCapabilitiesRegistry.DONInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"labelledName\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"version\",\"type\":\"string\"}],\"name\":\"getHashedCapabilityId\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"}],\"name\":\"getNode\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"workflowDONId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"encryptionPublicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"capabilitiesDONIds\",\"type\":\"uint256[]\"}],\"internalType\":\"structCapabilitiesRegistry.NodeInfo\",\"name\":\"nodeInfo\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"}],\"name\":\"getNodeOperator\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilitiesRegistry.NodeOperator\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNodeOperators\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilitiesRegistry.NodeOperator[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNodes\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"configCount\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"workflowDONId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"encryptionPublicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"capabilitiesDONIds\",\"type\":\"uint256[]\"}],\"internalType\":\"structCapabilitiesRegistry.NodeInfo[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"hashedCapabilityId\",\"type\":\"bytes32\"}],\"name\":\"isCapabilityDeprecated\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"donIds\",\"type\":\"uint32[]\"}],\"name\":\"removeDONs\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint32[]\"}],\"name\":\"removeNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"removedNodeP2PIds\",\"type\":\"bytes32[]\"}],\"name\":\"removeNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"donId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32[]\",\"name\":\"nodes\",\"type\":\"bytes32[]\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"capabilityId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"config\",\"type\":\"bytes\"}],\"internalType\":\"structCapabilitiesRegistry.CapabilityConfiguration[]\",\"name\":\"capabilityConfigurations\",\"type\":\"tuple[]\"},{\"internalType\":\"bool\",\"name\":\"isPublic\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"f\",\"type\":\"uint8\"}],\"name\":\"updateDON\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32[]\",\"name\":\"nodeOperatorIds\",\"type\":\"uint32[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"}],\"internalType\":\"structCapabilitiesRegistry.NodeOperator[]\",\"name\":\"nodeOperators\",\"type\":\"tuple[]\"}],\"name\":\"updateNodeOperators\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"nodeOperatorId\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"signer\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"p2pId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"encryptionPublicKey\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"hashedCapabilityIds\",\"type\":\"bytes32[]\"}],\"internalType\":\"structCapabilitiesRegistry.NodeParams[]\",\"name\":\"nodes\",\"type\":\"tuple[]\"}],\"name\":\"updateNodes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x6080604052600e80546001600160401b0319166401000000011790553480156200002857600080fd5b503380600081620000805760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000b357620000b381620000bc565b50505062000167565b336001600160a01b03821603620001165760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000077565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b61514880620001776000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806350c946fe116100ee57806386fa424611610097578063d8bc7b6811610071578063d8bc7b68146103f6578063ddbe4f8214610409578063e29581aa1461041e578063f2fde38b1461043357600080fd5b806386fa42461461039b5780638da5cb5b146103ae5780639cb7c5f4146103d657600080fd5b8063715f5295116100c8578063715f52951461036d57806379ba50971461038057806384f5ed8a1461038857600080fd5b806350c946fe146103255780635d83d9671461034557806366acaa331461035857600080fd5b8063235374051161015b5780632c01a1e8116101355780632c01a1e8146102cb578063358039f4146102de578063398f3773146102f15780633f2a13c91461030457600080fd5b80632353740514610285578063275459f2146102a55780632a852933146102b857600080fd5b80631d05394c1161018c5780631d05394c1461023b578063214502431461025057806322bdbcbc1461026557600080fd5b80630fe5800a146101b357806312570011146101d9578063181f5a77146101fc575b600080fd5b6101c66101c1366004613f7c565b610446565b6040519081526020015b60405180910390f35b6101ec6101e7366004613fe0565b61047a565b60405190151581526020016101d0565b604080518082018252601a81527f4361706162696c6974696573526567697374727920312e302e30000000000000602082015290516101d09190614067565b61024e6102493660046140bf565b610487565b005b610258610694565b6040516101d09190614241565b6102786102733660046142dc565b6107f1565b6040516101d09190614334565b6102986102933660046142dc565b6108de565b6040516101d09190614347565b61024e6102b33660046140bf565b610922565b61024e6102c636600461437b565b6109f9565b61024e6102d93660046140bf565b610ad9565b61024e6102ec3660046140bf565b610d7c565b61024e6102ff3660046140bf565b6114a4565b61031761031236600461441d565b611663565b6040516101d0929190614447565b610338610333366004613fe0565b61184f565b6040516101d091906144e4565b61024e6103533660046140bf565b61193c565b610360611a31565b6040516101d091906144f7565b61024e61037b3660046140bf565b611c14565b61024e611cc6565b61024e6103963660046140bf565b611dc3565b61024e6103a936600461456c565b6122de565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d0565b6103e96103e4366004613fe0565b61261e565b6040516101d091906146bb565b61024e6104043660046146ce565b612859565b610411612923565b6040516101d09190614754565b610426612a17565b6040516101d091906147c9565b61024e610441366004614862565b612b28565b6000828260405160200161045b929190614447565b6040516020818303038152906040528051906020012090505b92915050565b6000610474600583612b3c565b61048f612b57565b60005b8181101561068f5760008383838181106104ae576104ae61487d565b90506020020160208101906104c391906142dc565b63ffffffff8181166000908152600d60209081526040808320805464010000000081049095168085526001820190935290832094955093909290916a010000000000000000000090910460ff16905b61051b83612bda565b8110156105bb57811561057157600c60006105368584612be4565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1690556105b3565b6105b18663ffffffff16600c60006105928588612be490919063ffffffff16565b8152602001908152602001600020600501612bf090919063ffffffff16565b505b600101610512565b508354640100000000900463ffffffff16600003610612576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff861660048201526024015b60405180910390fd5b63ffffffff85166000818152600d6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000169055519182527ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a25050505050806001019050610492565b505050565b600e54606090640100000000900463ffffffff1660006106b56001836148db565b63ffffffff1667ffffffffffffffff8111156106d3576106d3613e39565b60405190808252806020026020018201604052801561075a57816020015b6040805160e081018252600080825260208083018290529282018190526060808301829052608083019190915260a0820181905260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106f15790505b509050600060015b8363ffffffff168163ffffffff1610156107ce5763ffffffff8082166000908152600d602052604090205416156107c65761079c81612bfc565b8383815181106107ae576107ae61487d565b6020026020010181905250816107c3906148f8565b91505b600101610762565b506107da6001846148db565b63ffffffff1681146107ea578082525b5092915050565b60408051808201909152600081526060602082015263ffffffff82166000908152600b60209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff168352600181018054919284019161085590614930565b80601f016020809104026020016040519081016040528092919081815260200182805461088190614930565b80156108ce5780601f106108a3576101008083540402835291602001916108ce565b820191906000526020600020905b8154815290600101906020018083116108b157829003601f168201915b5050505050815250509050919050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082019290925260a0810182905260c081019190915261047482612bfc565b61092a612b57565b60005b63ffffffff811682111561068f57600083838363ffffffff168181106109555761095561487d565b905060200201602081019061096a91906142dc565b63ffffffff81166000908152600b6020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681559192506109b56001830182613dcc565b505060405163ffffffff8216907fa59268ca81d40429e65ccea5385b59cf2d3fc6519371dee92f8eb1dae5107a7a90600090a2506109f281614983565b905061092d565b610a01612b57565b63ffffffff8088166000908152600d60205260408120805490926401000000009091041690819003610a67576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff8a166004820152602401610609565b610ace888888886040518060a001604052808f63ffffffff16815260200187610a8f90614983565b63ffffffff811682528b15156020830152895460ff6a01000000000000000000009091048116151560408401528b166060909201919091529650612ec7565b505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015610d76576000848483818110610b1357610b1361487d565b602090810292909201356000818152600c90935260409092206001810154929350919050610b70576040517fd82f6adb00000000000000000000000000000000000000000000000000000000815260048101839052602401610609565b6000610b7e82600501612bda565b1115610bd357610b916005820184612be4565b6040517f60a6d89800000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260248101839052604401610609565b805468010000000000000000900463ffffffff1615610c3b5780546040517f60b9df730000000000000000000000000000000000000000000000000000000081526801000000000000000090910463ffffffff16600482015260248101839052604401610609565b83158015610c755750805463ffffffff166000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff163314155b15610cae576040517f9473075d000000000000000000000000000000000000000000000000000000008152336004820152602401610609565b6001810154610cbf90600790612bf0565b506002810154610cd190600990612bf0565b506000828152600c6020526040812080547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001681556001810182905560028101829055600381018290559060058201818181610d2d8282613e06565b5050505050507f5254e609a97bab37b7cc79fe128f85c097bd6015c6e1624ae0ba392eb975320582604051610d6491815260200190565b60405180910390a15050600101610af7565b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015610d76576000848483818110610db657610db661487d565b9050602002810190610dc891906149a6565b610dd1906149e4565b6040808201516000908152600c6020908152828220805463ffffffff168352600b82528383208451808601909552805473ffffffffffffffffffffffffffffffffffffffff1685526001810180549697509195939493909284019190610e3690614930565b80601f0160208091040260200160405190810160405280929190818152602001828054610e6290614930565b8015610eaf5780601f10610e8457610100808354040283529160200191610eaf565b820191906000526020600020905b815481529060010190602001808311610e9257829003601f168201915b505050919092525050506001830154909150610eff5782604001516040517fd82f6adb00000000000000000000000000000000000000000000000000000000815260040161060991815260200190565b84158015610f245750805173ffffffffffffffffffffffffffffffffffffffff163314155b15610f5d576040517f9473075d000000000000000000000000000000000000000000000000000000008152336004820152602401610609565b6020830151610f98576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600182015460208401518114611019576020840151610fb990600790612b3c565b15610ff0576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208401516001840155611005600782612bf0565b506020840151611017906007906136de565b505b6080840151805160000361105b57806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016106099190614ac1565b8354600090859060049061107c90640100000000900463ffffffff16614983565b91906101000a81548163ffffffff021916908363ffffffff1602179055905060005b8251811015611161576110d48382815181106110bc576110bc61487d565b60200260200101516003612b3c90919063ffffffff16565b61110c57826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016106099190614ac1565b6111588382815181106111215761112161487d565b60200260200101518760040160008563ffffffff1663ffffffff1681526020019081526020016000206136de90919063ffffffff16565b5060010161109e565b50845468010000000000000000900463ffffffff1680156112c25763ffffffff8082166000908152600d6020908152604080832080546401000000009004909416835260019093018152828220600201805484518184028101840190955280855292939290918301828280156111f657602002820191906000526020600020905b8154815260200190600101908083116111e2575b5050505050905060005b81518110156112bf5761125582828151811061121e5761121e61487d565b60200260200101518960040160008763ffffffff1663ffffffff168152602001908152602001600020612b3c90919063ffffffff16565b6112b75781818151811061126b5761126b61487d565b6020026020010151836040517f03dcd86200000000000000000000000000000000000000000000000000000000815260040161060992919091825263ffffffff16602082015260400190565b600101611200565b50505b60006112d0876005016136ea565b905060005b81518163ffffffff161015611416576000828263ffffffff16815181106112fe576112fe61487d565b60209081029190910181015163ffffffff8082166000908152600d8452604080822080546401000000009004909316825260019092018452818120600201805483518187028101870190945280845293955090939192909183018282801561138557602002820191906000526020600020905b815481526020019060010190808311611371575b5050505050905060005b8151811015611402576113e48282815181106113ad576113ad61487d565b60200260200101518c60040160008a63ffffffff1663ffffffff168152602001908152602001600020612b3c90919063ffffffff16565b6113fa5781818151811061126b5761126b61487d565b60010161138f565b5050508061140f90614983565b90506112d5565b50875187547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff90911690811788556040808a015160028a018190556020808c01518351928352908201527f4b5b465e22eea0c3d40c30e936643245b80d19b2dcf75788c0699fe8d8db645b910160405180910390a25050505050505050806001019050610d9a565b6114ac612b57565b60005b8181101561068f5760008383838181106114cb576114cb61487d565b90506020028101906114dd9190614b05565b6114e690614b39565b805190915073ffffffffffffffffffffffffffffffffffffffff16611537576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e54604080518082018252835173ffffffffffffffffffffffffffffffffffffffff908116825260208086015181840190815263ffffffff9095166000818152600b909252939020825181547fffffffffffffffffffffffff000000000000000000000000000000000000000016921691909117815592519192909160018201906115c39082614bf3565b5050600e80549091506000906115de9063ffffffff16614983565b91906101000a81548163ffffffff021916908363ffffffff160217905550816000015173ffffffffffffffffffffffffffffffffffffffff168163ffffffff167f78e94ca80be2c30abc061b99e7eb8583b1254781734b1e3ce339abb57da2fe8e84602001516040516116519190614067565b60405180910390a350506001016114af565b63ffffffff8083166000908152600d602090815260408083208054640100000000900490941680845260019094018252808320858452600301909152812080546060938493909290916116b590614930565b80601f01602080910402602001604051908101604052809291908181526020018280546116e190614930565b801561172e5780601f106117035761010080835404028352916020019161172e565b820191906000526020600020905b81548152906001019060200180831161171157829003601f168201915b5050506000888152600260208190526040909120015492935060609262010000900473ffffffffffffffffffffffffffffffffffffffff16159150611841905057600086815260026020819052604091829020015490517f8318ed5d00000000000000000000000000000000000000000000000000000000815263ffffffff891660048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690638318ed5d90602401600060405180830381865afa1580156117f8573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261183e9190810190614d0d565b90505b9093509150505b9250929050565b604080516101008101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915260408051610100810182526000848152600c6020908152838220805463ffffffff8082168652640100000000820481168487018190526801000000000000000090920416858701526001820154606086015260028201546080860152600382015460a0860152835260040190529190912060c0820190611911906136ea565b8152602001611934600c60008681526020019081526020016000206005016136ea565b905292915050565b611944612b57565b60005b8181101561068f5760008383838181106119635761196361487d565b905060200201359050611980816003612b3c90919063ffffffff16565b6119b9576040517fe181733f00000000000000000000000000000000000000000000000000000000815260048101829052602401610609565b6119c46005826136de565b6119fd576040517ff7d7a29400000000000000000000000000000000000000000000000000000000815260048101829052602401610609565b60405181907fdcea1b78b6ddc31592a94607d537543fcaafda6cc52d6d5cc7bbfca1422baf2190600090a250600101611947565b600e5460609063ffffffff166000611a4a6001836148db565b63ffffffff1667ffffffffffffffff811115611a6857611a68613e39565b604051908082528060200260200182016040528015611aae57816020015b604080518082019091526000815260606020820152815260200190600190039081611a865790505b509050600060015b8363ffffffff168163ffffffff161015611bfe5763ffffffff81166000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611bf65763ffffffff81166000908152600b60209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff1683526001810180549192840191611b4a90614930565b80601f0160208091040260200160405190810160405280929190818152602001828054611b7690614930565b8015611bc35780601f10611b9857610100808354040283529160200191611bc3565b820191906000526020600020905b815481529060010190602001808311611ba657829003601f168201915b505050505081525050838381518110611bde57611bde61487d565b602002602001018190525081611bf3906148f8565b91505b600101611ab6565b50600e546107da9060019063ffffffff166148db565b611c1c612b57565b60005b8181101561068f576000838383818110611c3b57611c3b61487d565b9050602002810190611c4d91906149a6565b611c5690614d8a565b90506000611c6c82600001518360200151610446565b9050611c796003826136de565b611cb2576040517febf5255100000000000000000000000000000000000000000000000000000000815260048101829052602401610609565b611cbc81836136f7565b5050600101611c1f565b60015473ffffffffffffffffffffffffffffffffffffffff163314611d47576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610609565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015610d76576000848483818110611dfd57611dfd61487d565b9050602002810190611e0f91906149a6565b611e18906149e4565b805163ffffffff166000908152600b602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff168252600181018054959650939491939092840191611e6e90614930565b80601f0160208091040260200160405190810160405280929190818152602001828054611e9a90614930565b8015611ee75780601f10611ebc57610100808354040283529160200191611ee7565b820191906000526020600020905b815481529060010190602001808311611eca57829003601f168201915b50505091909252505081519192505073ffffffffffffffffffffffffffffffffffffffff16611f4d5781516040517fadd9ae1e00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602401610609565b83158015611f725750805173ffffffffffffffffffffffffffffffffffffffff163314155b15611fab576040517f9473075d000000000000000000000000000000000000000000000000000000008152336004820152602401610609565b6040808301516000908152600c602052206001810154156120005782604001516040517f5461848300000000000000000000000000000000000000000000000000000000815260040161060991815260200190565b60408301516120435782604001516040517f64e2ee9200000000000000000000000000000000000000000000000000000000815260040161060991815260200190565b602083015115806120605750602083015161206090600790612b3c565b15612097576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608301516120da5782606001516040517f37d8976500000000000000000000000000000000000000000000000000000000815260040161060991815260200190565b6080830151805160000361211c57806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016106099190614ac1565b8154829060049061213a90640100000000900463ffffffff16614983565b82546101009290920a63ffffffff818102199093169183160217909155825464010000000090041660005b8251811015612210576121838382815181106110bc576110bc61487d565b6121bb57826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016106099190614ac1565b6122078382815181106121d0576121d061487d565b60200260200101518560040160008563ffffffff1663ffffffff1681526020019081526020016000206136de90919063ffffffff16565b50600101612165565b5060608501516003840155845183547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff9182161784556040860151600285015560208601516001850181905561227091600791906136de16565b506040850151612282906009906136de565b50845160408087015160208089015183519283529082015263ffffffff909216917f74becb12a5e8fd0e98077d02dfba8f647c9670c9df177e42c2418cf17a636f05910160405180910390a25050505050806001019050611de1565b828114612321576040517fab8b67c60000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610609565b6000805473ffffffffffffffffffffffffffffffffffffffff16905b848110156126165760008686838181106123595761235961487d565b905060200201602081019061236e91906142dc565b63ffffffff81166000908152600b6020526040902080549192509073ffffffffffffffffffffffffffffffffffffffff166123dd576040517fadd9ae1e00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610609565b60008686858181106123f1576123f161487d565b90506020028101906124039190614b05565b61240c90614b39565b805190915073ffffffffffffffffffffffffffffffffffffffff1661245d576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815473ffffffffffffffffffffffffffffffffffffffff16331480159061249a57503373ffffffffffffffffffffffffffffffffffffffff861614155b156124d3576040517f9473075d000000000000000000000000000000000000000000000000000000008152336004820152602401610609565b8051825473ffffffffffffffffffffffffffffffffffffffff908116911614158061254f575060208082015160405161250c9201614067565b60405160208183030381529060405280519060200120826001016040516020016125369190614e30565b6040516020818303038152906040528051906020012014155b1561260857805182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602081015160018301906125a99082614bf3565b50806000015173ffffffffffffffffffffffffffffffffffffffff168363ffffffff167f86f41145bde5dd7f523305452e4aad3685508c181432ec733d5f345009358a2883602001516040516125ff9190614067565b60405180910390a35b50505080600101905061233d565b505050505050565b61265f6040805160e0810182526000808252606060208301819052928201839052909182019081526020016000815260006020820181905260409091015290565b6040805160e0810182528381526000848152600260209081529290208054919283019161268b90614930565b80601f01602080910402602001604051908101604052809291908181526020018280546126b790614930565b80156127045780601f106126d957610100808354040283529160200191612704565b820191906000526020600020905b8154815290600101906020018083116126e757829003601f168201915b5050505050815260200160026000858152602001908152602001600020600101805461272f90614930565b80601f016020809104026020016040519081016040528092919081815260200182805461275b90614930565b80156127a85780601f1061277d576101008083540402835291602001916127a8565b820191906000526020600020905b81548152906001019060200180831161278b57829003601f168201915b50505091835250506000848152600260208181526040909220015491019060ff1660038111156127da576127da6145d8565b815260008481526002602081815260409092200154910190610100900460ff16600181111561280b5761280b6145d8565b81526000848152600260208181526040928390209091015462010000900473ffffffffffffffffffffffffffffffffffffffff16908301520161284f600585612b3c565b1515905292915050565b612861612b57565b600e805460009164010000000090910463ffffffff1690600461288383614983565b82546101009290920a63ffffffff81810219909316918316021790915581166000818152600d602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001684179055815160a08101835292835260019083015286151590820152841515606082015260ff84166080820152909150612919908990899089908990612ec7565b5050505050505050565b6060600061293160036136ea565b90506000815167ffffffffffffffff81111561294f5761294f613e39565b6040519080825280602002602001820160405280156129c157816020015b6129ae6040805160e0810182526000808252606060208301819052928201839052909182019081526020016000815260006020820181905260409091015290565b81526020019060019003908161296d5790505b50905060005b82518110156107ea576129f28382815181106129e5576129e561487d565b602002602001015161261e565b828281518110612a0457612a0461487d565b60209081029190910101526001016129c7565b60606000612a2560096136ea565b90506000815167ffffffffffffffff811115612a4357612a43613e39565b604051908082528060200260200182016040528015612ad257816020015b60408051610100810182526000808252602080830182905292820181905260608083018290526080830182905260a083019190915260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181612a615790505b50905060005b82518110156107ea57612b03838281518110612af657612af661487d565b602002602001015161184f565b828281518110612b1557612b1561487d565b6020908102919091010152600101612ad8565b612b30612b57565b612b39816138df565b50565b600081815260018301602052604081205415155b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612bd8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610609565b565b6000610474825490565b6000612b5083836139d4565b6000612b5083836139fe565b6040805160e0810182526000808252602080830182905282840182905260608084018390526080840183905260a0840181905260c084015263ffffffff8581168352600d8252848320805464010000000090049091168084526001909101825284832060028101805487518186028101860190985280885295969295919493909190830182828015612cad57602002820191906000526020600020905b815481526020019060010190808311612c99575b505050505090506000815167ffffffffffffffff811115612cd057612cd0613e39565b604051908082528060200260200182016040528015612d1657816020015b604080518082019091526000815260606020820152815260200190600190039081612cee5790505b50905060005b8151811015612e2e576040518060400160405280848381518110612d4257612d4261487d565b60200260200101518152602001856003016000868581518110612d6757612d6761487d565b602002602001015181526020019081526020016000208054612d8890614930565b80601f0160208091040260200160405190810160405280929190818152602001828054612db490614930565b8015612e015780601f10612dd657610100808354040283529160200191612e01565b820191906000526020600020905b815481529060010190602001808311612de457829003601f168201915b5050505050815250828281518110612e1b57612e1b61487d565b6020908102919091010152600101612d1c565b506040805160e08101825263ffffffff8089166000818152600d6020818152868320548086168752948b168187015260ff680100000000000000008604811697870197909752690100000000000000000085048716151560608701529290915290526a010000000000000000000090049091161515608082015260a08101612eb5856136ea565b81526020019190915295945050505050565b805163ffffffff9081166000908152600d602090815260408083208286015190941683526001909301905220608082015160ff161580612f19575060808201518590612f14906001614ede565b60ff16115b15612f625760808201516040517f25b4d61800000000000000000000000000000000000000000000000000000000815260ff909116600482015260248101869052604401610609565b6001826020015163ffffffff16111561304a57815163ffffffff166000908152600d602090815260408220908401516001918201918391612fa391906148db565b63ffffffff1663ffffffff168152602001908152602001600020905060005b612fcb82612bda565b81101561304757612ffa846000015163ffffffff16600c60006105928587600001612be490919063ffffffff16565b50600c60006130098484612be4565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff169055600101612fc2565b50505b60005b858110156132845761307a87878381811061306a5761306a61487d565b85926020909102013590506136de565b6130db5782518787838181106130925761309261487d565b6040517f636e405700000000000000000000000000000000000000000000000000000000815263ffffffff90941660048501526020029190910135602483015250604401610609565b82606001511561323257825163ffffffff16600c60008989858181106131035761310361487d565b602090810292909201358352508101919091526040016000205468010000000000000000900463ffffffff161480159061317d5750600c600088888481811061314e5761314e61487d565b602090810292909201358352508101919091526040016000205468010000000000000000900463ffffffff1615155b156131df5782518787838181106131965761319661487d565b6040517f60b9df7300000000000000000000000000000000000000000000000000000000815263ffffffff90941660048501526020029190910135602483015250604401610609565b8251600c60008989858181106131f7576131f761487d565b90506020020135815260200190815260200160002060000160086101000a81548163ffffffff021916908363ffffffff16021790555061327c565b825161327a9063ffffffff16600c60008a8a868181106132545761325461487d565b9050602002013581526020019081526020016000206005016136de90919063ffffffff16565b505b60010161304d565b5060005b8381101561369257368585838181106132a3576132a361487d565b90506020028101906132b59190614b05565b90506132c360038235612b3c565b6132fc576040517fe181733f00000000000000000000000000000000000000000000000000000000815281356004820152602401610609565b61330860058235612b3c565b15613342576040517ff7d7a29400000000000000000000000000000000000000000000000000000000815281356004820152602401610609565b803560009081526003840160205260408120805461335f90614930565b905011156133ab5783516040517f3927d08000000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015281356024820152604401610609565b60005b878110156134b5576134528235600c60008c8c868181106133d1576133d161487d565b9050602002013581526020019081526020016000206004016000600c60008e8e888181106134015761340161487d565b90506020020135815260200190815260200160002060000160049054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001908152602001600020612b3c90919063ffffffff16565b6134ad578888828181106134685761346861487d565b6040517fa7e792500000000000000000000000000000000000000000000000000000000081526020909102929092013560048301525082356024820152604401610609565b6001016133ae565b50600283018054600181018255600091825260209182902083359101556134de90820182614ef7565b823560009081526003860160205260409020916134fc919083614f5c565b50604080850151855163ffffffff9081166000908152600d602090815284822080549415156901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff90951694909417909355606088015188518316825284822080549115156a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff9092169190911790556080880151885183168252848220805460ff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff909216919091179055828801805189518416835294909120805494909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9094169390931790558551915161368992918435908c908c9061364f90880188614ef7565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613af192505050565b50600101613288565b50815160208084015160405163ffffffff91821681529216917ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a2505050505050565b6000612b508383613bd2565b60606000612b5083613c21565b608081015173ffffffffffffffffffffffffffffffffffffffff16156137995761374581608001517f78bea72100000000000000000000000000000000000000000000000000000000613c7d565b6137995760808101516040517fabb5e3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610609565b6000828152600260205260409020815182919081906137b89082614bf3565b50602082015160018201906137cd9082614bf3565b5060408201516002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600381111561380f5761380f6145d8565b021790555060608201516002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836001811115613856576138566145d8565b0217905550608091909101516002909101805473ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff90921691909117905560405182907f04f0a9bcf3f3a3b42a4d7ca081119755f82ebe43e0d30c8f7292c4fe0dc4a2ae90600090a25050565b3373ffffffffffffffffffffffffffffffffffffffff82160361395e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610609565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60008260000182815481106139eb576139eb61487d565b9060005260206000200154905092915050565b60008181526001830160205260408120548015613ae7576000613a22600183615077565b8554909150600090613a3690600190615077565b9050818114613a9b576000866000018281548110613a5657613a5661487d565b9060005260206000200154905080876000018481548110613a7957613a7961487d565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613aac57613aac61508a565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610474565b6000915050610474565b6000848152600260208190526040909120015462010000900473ffffffffffffffffffffffffffffffffffffffff161561261657600084815260026020819052604091829020015490517ffba64a7c0000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff169063fba64a7c90613b98908690869086908b908d906004016150b9565b600060405180830381600087803b158015613bb257600080fd5b505af1158015613bc6573d6000803e3d6000fd5b50505050505050505050565b6000818152600183016020526040812054613c1957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610474565b506000610474565b606081600001805480602002602001604051908101604052809291908181526020018280548015613c7157602002820191906000526020600020905b815481526020019060010190808311613c5d575b50505050509050919050565b6000613c8883613c99565b8015612b505750612b508383613cfd565b6000613cc5827f01ffc9a700000000000000000000000000000000000000000000000000000000613cfd565b80156104745750613cf6827fffffffff00000000000000000000000000000000000000000000000000000000613cfd565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015613db5575060208210155b8015613dc15750600081115b979650505050505050565b508054613dd890614930565b6000825580601f10613de8575050565b601f016020900490600052602060002090810190612b399190613e20565b5080546000825590600052602060002090810190612b3991905b5b80821115613e355760008155600101613e21565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715613e8b57613e8b613e39565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613ed857613ed8613e39565b604052919050565b600067ffffffffffffffff821115613efa57613efa613e39565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613f3757600080fd5b8135613f4a613f4582613ee0565b613e91565b818152846020838601011115613f5f57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613f8f57600080fd5b823567ffffffffffffffff80821115613fa757600080fd5b613fb386838701613f26565b93506020850135915080821115613fc957600080fd5b50613fd685828601613f26565b9150509250929050565b600060208284031215613ff257600080fd5b5035919050565b60005b83811015614014578181015183820152602001613ffc565b50506000910152565b60008151808452614035816020860160208601613ff9565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612b50602083018461401d565b60008083601f84011261408c57600080fd5b50813567ffffffffffffffff8111156140a457600080fd5b6020830191508360208260051b850101111561184857600080fd5b600080602083850312156140d257600080fd5b823567ffffffffffffffff8111156140e957600080fd5b6140f58582860161407a565b90969095509350505050565b60008151808452602080850194506020840160005b8381101561413257815187529582019590820190600101614116565b509495945050505050565b600082825180855260208086019550808260051b84010181860160005b848110156141ba578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051845284015160408585018190526141a68186018361401d565b9a86019a945050509083019060010161415a565b5090979650505050505050565b600063ffffffff8083511684528060208401511660208501525060ff604083015116604084015260608201511515606084015260808201511515608084015260a082015160e060a085015261421f60e0850182614101565b905060c083015184820360c0860152614238828261413d565b95945050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156142b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526142a48583516141c7565b9450928501929085019060010161426a565b5092979650505050505050565b803563ffffffff811681146142d757600080fd5b919050565b6000602082840312156142ee57600080fd5b612b50826142c3565b73ffffffffffffffffffffffffffffffffffffffff8151168252600060208201516040602085015261432c604085018261401d565b949350505050565b602081526000612b5060208301846142f7565b602081526000612b5060208301846141c7565b803580151581146142d757600080fd5b803560ff811681146142d757600080fd5b600080600080600080600060a0888a03121561439657600080fd5b61439f886142c3565b9650602088013567ffffffffffffffff808211156143bc57600080fd5b6143c88b838c0161407a565b909850965060408a01359150808211156143e157600080fd5b506143ee8a828b0161407a565b909550935061440190506060890161435a565b915061440f6080890161436a565b905092959891949750929550565b6000806040838503121561443057600080fd5b614439836142c3565b946020939093013593505050565b60408152600061445a604083018561401d565b8281036020840152614238818561401d565b600061010063ffffffff80845116855280602085015116602086015280604085015116604086015250606083015160608501526080830151608085015260a083015160a085015260c08301518160c08601526144ca82860182614101565b91505060e083015184820360e08601526142388282614101565b602081526000612b50602083018461446c565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156142b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261455a8583516142f7565b94509285019290850190600101614520565b6000806000806040858703121561458257600080fd5b843567ffffffffffffffff8082111561459a57600080fd5b6145a68883890161407a565b909650945060208701359150808211156145bf57600080fd5b506145cc8782880161407a565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b805182526000602082015160e0602085015261462660e085018261401d565b90506040830151848203604086015261463f828261401d565b915050606083015160048110614657576146576145d8565b6060850152608083015160028110614671576146716145d8565b8060808601525060a083015161469f60a086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c08301516146b360c086018215159052565b509392505050565b602081526000612b506020830184614607565b600080600080600080600060a0888a0312156146e957600080fd5b873567ffffffffffffffff8082111561470157600080fd5b61470d8b838c0161407a565b909950975060208a013591508082111561472657600080fd5b506147338a828b0161407a565b909650945061474690506040890161435a565b92506144016060890161435a565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156142b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526147b7858351614607565b9450928501929085019060010161477d565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b828110156142b6577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088860301845261482c85835161446c565b945092850192908501906001016147f2565b803573ffffffffffffffffffffffffffffffffffffffff811681146142d757600080fd5b60006020828403121561487457600080fd5b612b508261483e565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8281168282160390808211156107ea576107ea6148ac565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614929576149296148ac565b5060010190565b600181811c9082168061494457607f821691505b60208210810361497d577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600063ffffffff80831681810361499c5761499c6148ac565b6001019392505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff618336030181126149da57600080fd5b9190910192915050565b600060a082360312156149f657600080fd5b6149fe613e68565b614a07836142c3565b8152602080840135818301526040840135604083015260608401356060830152608084013567ffffffffffffffff80821115614a4257600080fd5b9085019036601f830112614a5557600080fd5b813581811115614a6757614a67613e39565b8060051b9150614a78848301613e91565b8181529183018401918481019036841115614a9257600080fd5b938501935b83851015614ab057843582529385019390850190614a97565b608087015250939695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015614af957835183529284019291840191600101614add565b50909695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc18336030181126149da57600080fd5b600060408236031215614b4b57600080fd5b6040516040810167ffffffffffffffff8282108183111715614b6f57614b6f613e39565b81604052614b7c8561483e565b83526020850135915080821115614b9257600080fd5b50614b9f36828601613f26565b60208301525092915050565b601f82111561068f576000816000526020600020601f850160051c81016020861015614bd45750805b601f850160051c820191505b8181101561261657828155600101614be0565b815167ffffffffffffffff811115614c0d57614c0d613e39565b614c2181614c1b8454614930565b84614bab565b602080601f831160018114614c745760008415614c3e5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612616565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614cc157888601518255948401946001909101908401614ca2565b5085821015614cfd57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215614d1f57600080fd5b815167ffffffffffffffff811115614d3657600080fd5b8201601f81018413614d4757600080fd5b8051614d55613f4582613ee0565b818152856020838501011115614d6a57600080fd5b614238826020830160208601613ff9565b8035600281106142d757600080fd5b600060a08236031215614d9c57600080fd5b614da4613e68565b823567ffffffffffffffff80821115614dbc57600080fd5b614dc836838701613f26565b83526020850135915080821115614dde57600080fd5b50614deb36828601613f26565b602083015250604083013560048110614e0357600080fd5b6040820152614e1460608401614d7b565b6060820152614e256080840161483e565b608082015292915050565b6000602080835260008454614e4481614930565b8060208701526040600180841660008114614e665760018114614ea057614ed0565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00851660408a0152604084151560051b8a01019550614ed0565b89600052602060002060005b85811015614ec75781548b8201860152908301908801614eac565b8a016040019650505b509398975050505050505050565b60ff8181168382160190811115610474576104746148ac565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614f2c57600080fd5b83018035915067ffffffffffffffff821115614f4757600080fd5b60200191503681900382131561184857600080fd5b67ffffffffffffffff831115614f7457614f74613e39565b614f8883614f828354614930565b83614bab565b6000601f841160018114614fda5760008515614fa45750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b178355615070565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156150295786850135825560209485019460019092019101615009565b5086821015615064577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81810381811115610474576104746148ac565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6080815284608082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8611156150f257600080fd5b8560051b808860a0850137820182810360a090810160208501526151189082018761401d565b91505063ffffffff8085166040840152808416606084015250969550505050505056fea164736f6c6343000818000a", + Bin: "0x6080604052600e80546001600160401b0319166401000000011790553480156200002857600080fd5b503380600081620000805760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000b357620000b381620000bc565b50505062000167565b336001600160a01b03821603620001165760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000077565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b61519580620001776000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c806350c946fe116100ee57806386fa424611610097578063d8bc7b6811610071578063d8bc7b68146103f6578063ddbe4f8214610409578063e29581aa1461041e578063f2fde38b1461043357600080fd5b806386fa42461461039b5780638da5cb5b146103ae5780639cb7c5f4146103d657600080fd5b8063715f5295116100c8578063715f52951461036d57806379ba50971461038057806384f5ed8a1461038857600080fd5b806350c946fe146103255780635d83d9671461034557806366acaa331461035857600080fd5b8063235374051161015b5780632c01a1e8116101355780632c01a1e8146102cb578063358039f4146102de578063398f3773146102f15780633f2a13c91461030457600080fd5b80632353740514610285578063275459f2146102a55780632a852933146102b857600080fd5b80631d05394c1161018c5780631d05394c1461023b578063214502431461025057806322bdbcbc1461026557600080fd5b80630fe5800a146101b357806312570011146101d9578063181f5a77146101fc575b600080fd5b6101c66101c1366004613fc9565b610446565b6040519081526020015b60405180910390f35b6101ec6101e736600461402d565b61047a565b60405190151581526020016101d0565b604080518082018252601a81527f4361706162696c6974696573526567697374727920312e302e30000000000000602082015290516101d091906140b4565b61024e61024936600461410c565b610487565b005b610258610694565b6040516101d0919061428e565b610278610273366004614329565b6107f1565b6040516101d09190614381565b610298610293366004614329565b6108de565b6040516101d09190614394565b61024e6102b336600461410c565b610922565b61024e6102c63660046143c8565b6109f9565b61024e6102d936600461410c565b610ad9565b61024e6102ec36600461410c565b610d7c565b61024e6102ff36600461410c565b6114f1565b61031761031236600461446a565b6116b0565b6040516101d0929190614494565b61033861033336600461402d565b61189c565b6040516101d09190614531565b61024e61035336600461410c565b611989565b610360611a7e565b6040516101d09190614544565b61024e61037b36600461410c565b611c61565b61024e611d13565b61024e61039636600461410c565b611e10565b61024e6103a93660046145b9565b61232b565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101d0565b6103e96103e436600461402d565b61266b565b6040516101d09190614708565b61024e61040436600461471b565b6128a6565b610411612970565b6040516101d091906147a1565b610426612a64565b6040516101d09190614816565b61024e6104413660046148af565b612b75565b6000828260405160200161045b929190614494565b6040516020818303038152906040528051906020012090505b92915050565b6000610474600583612b89565b61048f612ba4565b60005b8181101561068f5760008383838181106104ae576104ae6148ca565b90506020020160208101906104c39190614329565b63ffffffff8181166000908152600d60209081526040808320805464010000000081049095168085526001820190935290832094955093909290916a010000000000000000000090910460ff16905b61051b83612c27565b8110156105bb57811561057157600c60006105368584612c31565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff1690556105b3565b6105b18663ffffffff16600c60006105928588612c3190919063ffffffff16565b8152602001908152602001600020600501612c3d90919063ffffffff16565b505b600101610512565b508354640100000000900463ffffffff16600003610612576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff861660048201526024015b60405180910390fd5b63ffffffff85166000818152600d6020908152604080832080547fffffffffffffffffffffffffffffffffffffffffff0000000000000000000000169055519182527ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a25050505050806001019050610492565b505050565b600e54606090640100000000900463ffffffff1660006106b5600183614928565b63ffffffff1667ffffffffffffffff8111156106d3576106d3613e86565b60405190808252806020026020018201604052801561075a57816020015b6040805160e081018252600080825260208083018290529282018190526060808301829052608083019190915260a0820181905260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106f15790505b509050600060015b8363ffffffff168163ffffffff1610156107ce5763ffffffff8082166000908152600d602052604090205416156107c65761079c81612c49565b8383815181106107ae576107ae6148ca565b6020026020010181905250816107c390614945565b91505b600101610762565b506107da600184614928565b63ffffffff1681146107ea578082525b5092915050565b60408051808201909152600081526060602082015263ffffffff82166000908152600b60209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff16835260018101805491928401916108559061497d565b80601f01602080910402602001604051908101604052809291908181526020018280546108819061497d565b80156108ce5780601f106108a3576101008083540402835291602001916108ce565b820191906000526020600020905b8154815290600101906020018083116108b157829003601f168201915b5050505050815250509050919050565b6040805160e0810182526000808252602082018190529181018290526060808201839052608082019290925260a0810182905260c081019190915261047482612c49565b61092a612ba4565b60005b63ffffffff811682111561068f57600083838363ffffffff16818110610955576109556148ca565b905060200201602081019061096a9190614329565b63ffffffff81166000908152600b6020526040812080547fffffffffffffffffffffffff00000000000000000000000000000000000000001681559192506109b56001830182613e19565b505060405163ffffffff8216907fa59268ca81d40429e65ccea5385b59cf2d3fc6519371dee92f8eb1dae5107a7a90600090a2506109f2816149d0565b905061092d565b610a01612ba4565b63ffffffff8088166000908152600d60205260408120805490926401000000009091041690819003610a67576040517f2b62be9b00000000000000000000000000000000000000000000000000000000815263ffffffff8a166004820152602401610609565b610ace888888886040518060a001604052808f63ffffffff16815260200187610a8f906149d0565b63ffffffff811682528b15156020830152895460ff6a01000000000000000000009091048116151560408401528b166060909201919091529650612f14565b505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015610d76576000848483818110610b1357610b136148ca565b602090810292909201356000818152600c90935260409092206001810154929350919050610b70576040517fd82f6adb00000000000000000000000000000000000000000000000000000000815260048101839052602401610609565b6000610b7e82600501612c27565b1115610bd357610b916005820184612c31565b6040517f60a6d89800000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260248101839052604401610609565b805468010000000000000000900463ffffffff1615610c3b5780546040517f60b9df730000000000000000000000000000000000000000000000000000000081526801000000000000000090910463ffffffff16600482015260248101839052604401610609565b83158015610c755750805463ffffffff166000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff163314155b15610cae576040517f9473075d000000000000000000000000000000000000000000000000000000008152336004820152602401610609565b6001810154610cbf90600790612c3d565b506002810154610cd190600990612c3d565b506000828152600c6020526040812080547fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001681556001810182905560028101829055600381018290559060058201818181610d2d8282613e53565b5050505050507f5254e609a97bab37b7cc79fe128f85c097bd6015c6e1624ae0ba392eb975320582604051610d6491815260200190565b60405180910390a15050600101610af7565b50505050565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015610d76576000848483818110610db657610db66148ca565b9050602002810190610dc891906149f3565b610dd190614a31565b6040808201516000908152600c6020908152828220805463ffffffff168352600b82528383208451808601909552805473ffffffffffffffffffffffffffffffffffffffff1685526001810180549697509195939493909284019190610e369061497d565b80601f0160208091040260200160405190810160405280929190818152602001828054610e629061497d565b8015610eaf5780601f10610e8457610100808354040283529160200191610eaf565b820191906000526020600020905b815481529060010190602001808311610e9257829003601f168201915b505050919092525050506001830154909150610eff5782604001516040517fd82f6adb00000000000000000000000000000000000000000000000000000000815260040161060991815260200190565b84158015610f245750805173ffffffffffffffffffffffffffffffffffffffff163314155b15610f5d576040517f9473075d000000000000000000000000000000000000000000000000000000008152336004820152602401610609565b6020830151610f98576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600182015460208401518114611019576020840151610fb990600790612b89565b15610ff0576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208401516001840155611005600782612c3d565b5060208401516110179060079061372b565b505b606084015161105c5783606001516040517f37d8976500000000000000000000000000000000000000000000000000000000815260040161060991815260200190565b6080840151805160000361109e57806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016106099190614b0e565b835460009085906004906110bf90640100000000900463ffffffff166149d0565b91906101000a81548163ffffffff021916908363ffffffff1602179055905060005b82518110156111a4576111178382815181106110ff576110ff6148ca565b60200260200101516003612b8990919063ffffffff16565b61114f57826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016106099190614b0e565b61119b838281518110611164576111646148ca565b60200260200101518760040160008563ffffffff1663ffffffff16815260200190815260200160002061372b90919063ffffffff16565b506001016110e1565b50845468010000000000000000900463ffffffff1680156113055763ffffffff8082166000908152600d60209081526040808320805464010000000090049094168352600190930181528282206002018054845181840281018401909552808552929392909183018282801561123957602002820191906000526020600020905b815481526020019060010190808311611225575b5050505050905060005b815181101561130257611298828281518110611261576112616148ca565b60200260200101518960040160008763ffffffff1663ffffffff168152602001908152602001600020612b8990919063ffffffff16565b6112fa578181815181106112ae576112ae6148ca565b6020026020010151836040517f03dcd86200000000000000000000000000000000000000000000000000000000815260040161060992919091825263ffffffff16602082015260400190565b600101611243565b50505b600061131387600501613737565b905060005b81518163ffffffff161015611459576000828263ffffffff1681518110611341576113416148ca565b60209081029190910181015163ffffffff8082166000908152600d845260408082208054640100000000900490931682526001909201845281812060020180548351818702810187019094528084529395509093919290918301828280156113c857602002820191906000526020600020905b8154815260200190600101908083116113b4575b5050505050905060005b8151811015611445576114278282815181106113f0576113f06148ca565b60200260200101518c60040160008a63ffffffff1663ffffffff168152602001908152602001600020612b8990919063ffffffff16565b61143d578181815181106112ae576112ae6148ca565b6001016113d2565b50505080611452906149d0565b9050611318565b50875187547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff90911690811788556040808a015160028a0181905560608b015160038b01556020808c01518351928352908201527f4b5b465e22eea0c3d40c30e936643245b80d19b2dcf75788c0699fe8d8db645b910160405180910390a25050505050505050806001019050610d9a565b6114f9612ba4565b60005b8181101561068f576000838383818110611518576115186148ca565b905060200281019061152a9190614b52565b61153390614b86565b805190915073ffffffffffffffffffffffffffffffffffffffff16611584576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600e54604080518082018252835173ffffffffffffffffffffffffffffffffffffffff908116825260208086015181840190815263ffffffff9095166000818152600b909252939020825181547fffffffffffffffffffffffff000000000000000000000000000000000000000016921691909117815592519192909160018201906116109082614c40565b5050600e805490915060009061162b9063ffffffff166149d0565b91906101000a81548163ffffffff021916908363ffffffff160217905550816000015173ffffffffffffffffffffffffffffffffffffffff168163ffffffff167f78e94ca80be2c30abc061b99e7eb8583b1254781734b1e3ce339abb57da2fe8e846020015160405161169e91906140b4565b60405180910390a350506001016114fc565b63ffffffff8083166000908152600d602090815260408083208054640100000000900490941680845260019094018252808320858452600301909152812080546060938493909290916117029061497d565b80601f016020809104026020016040519081016040528092919081815260200182805461172e9061497d565b801561177b5780601f106117505761010080835404028352916020019161177b565b820191906000526020600020905b81548152906001019060200180831161175e57829003601f168201915b5050506000888152600260208190526040909120015492935060609262010000900473ffffffffffffffffffffffffffffffffffffffff1615915061188e905057600086815260026020819052604091829020015490517f8318ed5d00000000000000000000000000000000000000000000000000000000815263ffffffff891660048201526201000090910473ffffffffffffffffffffffffffffffffffffffff1690638318ed5d90602401600060405180830381865afa158015611845573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261188b9190810190614d5a565b90505b9093509150505b9250929050565b604080516101008101825260008082526020820181905291810182905260608082018390526080820183905260a082019290925260c0810182905260e081019190915260408051610100810182526000848152600c6020908152838220805463ffffffff8082168652640100000000820481168487018190526801000000000000000090920416858701526001820154606086015260028201546080860152600382015460a0860152835260040190529190912060c082019061195e90613737565b8152602001611981600c6000868152602001908152602001600020600501613737565b905292915050565b611991612ba4565b60005b8181101561068f5760008383838181106119b0576119b06148ca565b9050602002013590506119cd816003612b8990919063ffffffff16565b611a06576040517fe181733f00000000000000000000000000000000000000000000000000000000815260048101829052602401610609565b611a1160058261372b565b611a4a576040517ff7d7a29400000000000000000000000000000000000000000000000000000000815260048101829052602401610609565b60405181907fdcea1b78b6ddc31592a94607d537543fcaafda6cc52d6d5cc7bbfca1422baf2190600090a250600101611994565b600e5460609063ffffffff166000611a97600183614928565b63ffffffff1667ffffffffffffffff811115611ab557611ab5613e86565b604051908082528060200260200182016040528015611afb57816020015b604080518082019091526000815260606020820152815260200190600190039081611ad35790505b509050600060015b8363ffffffff168163ffffffff161015611c4b5763ffffffff81166000908152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611c435763ffffffff81166000908152600b60209081526040918290208251808401909352805473ffffffffffffffffffffffffffffffffffffffff1683526001810180549192840191611b979061497d565b80601f0160208091040260200160405190810160405280929190818152602001828054611bc39061497d565b8015611c105780601f10611be557610100808354040283529160200191611c10565b820191906000526020600020905b815481529060010190602001808311611bf357829003601f168201915b505050505081525050838381518110611c2b57611c2b6148ca565b602002602001018190525081611c4090614945565b91505b600101611b03565b50600e546107da9060019063ffffffff16614928565b611c69612ba4565b60005b8181101561068f576000838383818110611c8857611c886148ca565b9050602002810190611c9a91906149f3565b611ca390614dd7565b90506000611cb982600001518360200151610446565b9050611cc660038261372b565b611cff576040517febf5255100000000000000000000000000000000000000000000000000000000815260048101829052602401610609565b611d098183613744565b5050600101611c6c565b60015473ffffffffffffffffffffffffffffffffffffffff163314611d94576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e6572000000000000000000006044820152606401610609565b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b6000805473ffffffffffffffffffffffffffffffffffffffff163314905b82811015610d76576000848483818110611e4a57611e4a6148ca565b9050602002810190611e5c91906149f3565b611e6590614a31565b805163ffffffff166000908152600b602090815260408083208151808301909252805473ffffffffffffffffffffffffffffffffffffffff168252600181018054959650939491939092840191611ebb9061497d565b80601f0160208091040260200160405190810160405280929190818152602001828054611ee79061497d565b8015611f345780601f10611f0957610100808354040283529160200191611f34565b820191906000526020600020905b815481529060010190602001808311611f1757829003601f168201915b50505091909252505081519192505073ffffffffffffffffffffffffffffffffffffffff16611f9a5781516040517fadd9ae1e00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602401610609565b83158015611fbf5750805173ffffffffffffffffffffffffffffffffffffffff163314155b15611ff8576040517f9473075d000000000000000000000000000000000000000000000000000000008152336004820152602401610609565b6040808301516000908152600c6020522060018101541561204d5782604001516040517f5461848300000000000000000000000000000000000000000000000000000000815260040161060991815260200190565b60408301516120905782604001516040517f64e2ee9200000000000000000000000000000000000000000000000000000000815260040161060991815260200190565b602083015115806120ad575060208301516120ad90600790612b89565b156120e4576040517f8377314600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60608301516121275782606001516040517f37d8976500000000000000000000000000000000000000000000000000000000815260040161060991815260200190565b6080830151805160000361216957806040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016106099190614b0e565b8154829060049061218790640100000000900463ffffffff166149d0565b82546101009290920a63ffffffff818102199093169183160217909155825464010000000090041660005b825181101561225d576121d08382815181106110ff576110ff6148ca565b61220857826040517f3748d4c60000000000000000000000000000000000000000000000000000000081526004016106099190614b0e565b61225483828151811061221d5761221d6148ca565b60200260200101518560040160008563ffffffff1663ffffffff16815260200190815260200160002061372b90919063ffffffff16565b506001016121b2565b5060608501516003840155845183547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001663ffffffff918216178455604086015160028501556020860151600185018190556122bd916007919061372b16565b5060408501516122cf9060099061372b565b50845160408087015160208089015183519283529082015263ffffffff909216917f74becb12a5e8fd0e98077d02dfba8f647c9670c9df177e42c2418cf17a636f05910160405180910390a25050505050806001019050611e2e565b82811461236e576040517fab8b67c60000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610609565b6000805473ffffffffffffffffffffffffffffffffffffffff16905b848110156126635760008686838181106123a6576123a66148ca565b90506020020160208101906123bb9190614329565b63ffffffff81166000908152600b6020526040902080549192509073ffffffffffffffffffffffffffffffffffffffff1661242a576040517fadd9ae1e00000000000000000000000000000000000000000000000000000000815263ffffffff83166004820152602401610609565b600086868581811061243e5761243e6148ca565b90506020028101906124509190614b52565b61245990614b86565b805190915073ffffffffffffffffffffffffffffffffffffffff166124aa576040517feeacd93900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815473ffffffffffffffffffffffffffffffffffffffff1633148015906124e757503373ffffffffffffffffffffffffffffffffffffffff861614155b15612520576040517f9473075d000000000000000000000000000000000000000000000000000000008152336004820152602401610609565b8051825473ffffffffffffffffffffffffffffffffffffffff908116911614158061259c575060208082015160405161255992016140b4565b60405160208183030381529060405280519060200120826001016040516020016125839190614e7d565b6040516020818303038152906040528051906020012014155b1561265557805182547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909116178255602081015160018301906125f69082614c40565b50806000015173ffffffffffffffffffffffffffffffffffffffff168363ffffffff167f86f41145bde5dd7f523305452e4aad3685508c181432ec733d5f345009358a28836020015160405161264c91906140b4565b60405180910390a35b50505080600101905061238a565b505050505050565b6126ac6040805160e0810182526000808252606060208301819052928201839052909182019081526020016000815260006020820181905260409091015290565b6040805160e081018252838152600084815260026020908152929020805491928301916126d89061497d565b80601f01602080910402602001604051908101604052809291908181526020018280546127049061497d565b80156127515780601f1061272657610100808354040283529160200191612751565b820191906000526020600020905b81548152906001019060200180831161273457829003601f168201915b5050505050815260200160026000858152602001908152602001600020600101805461277c9061497d565b80601f01602080910402602001604051908101604052809291908181526020018280546127a89061497d565b80156127f55780601f106127ca576101008083540402835291602001916127f5565b820191906000526020600020905b8154815290600101906020018083116127d857829003601f168201915b50505091835250506000848152600260208181526040909220015491019060ff16600381111561282757612827614625565b815260008481526002602081815260409092200154910190610100900460ff16600181111561285857612858614625565b81526000848152600260208181526040928390209091015462010000900473ffffffffffffffffffffffffffffffffffffffff16908301520161289c600585612b89565b1515905292915050565b6128ae612ba4565b600e805460009164010000000090910463ffffffff169060046128d0836149d0565b82546101009290920a63ffffffff81810219909316918316021790915581166000818152600d602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000001684179055815160a08101835292835260019083015286151590820152841515606082015260ff84166080820152909150612966908990899089908990612f14565b5050505050505050565b6060600061297e6003613737565b90506000815167ffffffffffffffff81111561299c5761299c613e86565b604051908082528060200260200182016040528015612a0e57816020015b6129fb6040805160e0810182526000808252606060208301819052928201839052909182019081526020016000815260006020820181905260409091015290565b8152602001906001900390816129ba5790505b50905060005b82518110156107ea57612a3f838281518110612a3257612a326148ca565b602002602001015161266b565b828281518110612a5157612a516148ca565b6020908102919091010152600101612a14565b60606000612a726009613737565b90506000815167ffffffffffffffff811115612a9057612a90613e86565b604051908082528060200260200182016040528015612b1f57816020015b60408051610100810182526000808252602080830182905292820181905260608083018290526080830182905260a083019190915260c0820181905260e082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181612aae5790505b50905060005b82518110156107ea57612b50838281518110612b4357612b436148ca565b602002602001015161189c565b828281518110612b6257612b626148ca565b6020908102919091010152600101612b25565b612b7d612ba4565b612b868161392c565b50565b600081815260018301602052604081205415155b9392505050565b60005473ffffffffffffffffffffffffffffffffffffffff163314612c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610609565b565b6000610474825490565b6000612b9d8383613a21565b6000612b9d8383613a4b565b6040805160e0810182526000808252602080830182905282840182905260608084018390526080840183905260a0840181905260c084015263ffffffff8581168352600d8252848320805464010000000090049091168084526001909101825284832060028101805487518186028101860190985280885295969295919493909190830182828015612cfa57602002820191906000526020600020905b815481526020019060010190808311612ce6575b505050505090506000815167ffffffffffffffff811115612d1d57612d1d613e86565b604051908082528060200260200182016040528015612d6357816020015b604080518082019091526000815260606020820152815260200190600190039081612d3b5790505b50905060005b8151811015612e7b576040518060400160405280848381518110612d8f57612d8f6148ca565b60200260200101518152602001856003016000868581518110612db457612db46148ca565b602002602001015181526020019081526020016000208054612dd59061497d565b80601f0160208091040260200160405190810160405280929190818152602001828054612e019061497d565b8015612e4e5780601f10612e2357610100808354040283529160200191612e4e565b820191906000526020600020905b815481529060010190602001808311612e3157829003601f168201915b5050505050815250828281518110612e6857612e686148ca565b6020908102919091010152600101612d69565b506040805160e08101825263ffffffff8089166000818152600d6020818152868320548086168752948b168187015260ff680100000000000000008604811697870197909752690100000000000000000085048716151560608701529290915290526a010000000000000000000090049091161515608082015260a08101612f0285613737565b81526020019190915295945050505050565b805163ffffffff9081166000908152600d602090815260408083208286015190941683526001909301905220608082015160ff161580612f66575060808201518590612f61906001614f2b565b60ff16115b15612faf5760808201516040517f25b4d61800000000000000000000000000000000000000000000000000000000815260ff909116600482015260248101869052604401610609565b6001826020015163ffffffff16111561309757815163ffffffff166000908152600d602090815260408220908401516001918201918391612ff09190614928565b63ffffffff1663ffffffff168152602001908152602001600020905060005b61301882612c27565b81101561309457613047846000015163ffffffff16600c60006105928587600001612c3190919063ffffffff16565b50600c60006130568484612c31565b8152602081019190915260400160002080547fffffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffff16905560010161300f565b50505b60005b858110156132d1576130c78787838181106130b7576130b76148ca565b859260209091020135905061372b565b6131285782518787838181106130df576130df6148ca565b6040517f636e405700000000000000000000000000000000000000000000000000000000815263ffffffff90941660048501526020029190910135602483015250604401610609565b82606001511561327f57825163ffffffff16600c6000898985818110613150576131506148ca565b602090810292909201358352508101919091526040016000205468010000000000000000900463ffffffff16148015906131ca5750600c600088888481811061319b5761319b6148ca565b602090810292909201358352508101919091526040016000205468010000000000000000900463ffffffff1615155b1561322c5782518787838181106131e3576131e36148ca565b6040517f60b9df7300000000000000000000000000000000000000000000000000000000815263ffffffff90941660048501526020029190910135602483015250604401610609565b8251600c6000898985818110613244576132446148ca565b90506020020135815260200190815260200160002060000160086101000a81548163ffffffff021916908363ffffffff1602179055506132c9565b82516132c79063ffffffff16600c60008a8a868181106132a1576132a16148ca565b90506020020135815260200190815260200160002060050161372b90919063ffffffff16565b505b60010161309a565b5060005b838110156136df57368585838181106132f0576132f06148ca565b90506020028101906133029190614b52565b905061331060038235612b89565b613349576040517fe181733f00000000000000000000000000000000000000000000000000000000815281356004820152602401610609565b61335560058235612b89565b1561338f576040517ff7d7a29400000000000000000000000000000000000000000000000000000000815281356004820152602401610609565b80356000908152600384016020526040812080546133ac9061497d565b905011156133f85783516040517f3927d08000000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015281356024820152604401610609565b60005b878110156135025761349f8235600c60008c8c8681811061341e5761341e6148ca565b9050602002013581526020019081526020016000206004016000600c60008e8e8881811061344e5761344e6148ca565b90506020020135815260200190815260200160002060000160049054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001908152602001600020612b8990919063ffffffff16565b6134fa578888828181106134b5576134b56148ca565b6040517fa7e792500000000000000000000000000000000000000000000000000000000081526020909102929092013560048301525082356024820152604401610609565b6001016133fb565b506002830180546001810182556000918252602091829020833591015561352b90820182614f44565b82356000908152600386016020526040902091613549919083614fa9565b50604080850151855163ffffffff9081166000908152600d602090815284822080549415156901000000000000000000027fffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffff90951694909417909355606088015188518316825284822080549115156a0100000000000000000000027fffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffff9092169190911790556080880151885183168252848220805460ff9290921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff909216919091179055828801805189518416835294909120805494909216640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff909416939093179055855191516136d692918435908c908c9061369c90880188614f44565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613b3e92505050565b506001016132d5565b50815160208084015160405163ffffffff91821681529216917ff264aae70bf6a9d90e68e0f9b393f4e7fbea67b063b0f336e0b36c1581703651910160405180910390a2505050505050565b6000612b9d8383613c1f565b60606000612b9d83613c6e565b608081015173ffffffffffffffffffffffffffffffffffffffff16156137e65761379281608001517f78bea72100000000000000000000000000000000000000000000000000000000613cca565b6137e65760808101516040517fabb5e3fd00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610609565b6000828152600260205260409020815182919081906138059082614c40565b506020820151600182019061381a9082614c40565b5060408201516002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600183600381111561385c5761385c614625565b021790555060608201516002820180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008360018111156138a3576138a3614625565b0217905550608091909101516002909101805473ffffffffffffffffffffffffffffffffffffffff90921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff90921691909117905560405182907f04f0a9bcf3f3a3b42a4d7ca081119755f82ebe43e0d30c8f7292c4fe0dc4a2ae90600090a25050565b3373ffffffffffffffffffffffffffffffffffffffff8216036139ab576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610609565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b6000826000018281548110613a3857613a386148ca565b9060005260206000200154905092915050565b60008181526001830160205260408120548015613b34576000613a6f6001836150c4565b8554909150600090613a83906001906150c4565b9050818114613ae8576000866000018281548110613aa357613aa36148ca565b9060005260206000200154905080876000018481548110613ac657613ac66148ca565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613af957613af96150d7565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610474565b6000915050610474565b6000848152600260208190526040909120015462010000900473ffffffffffffffffffffffffffffffffffffffff161561266357600084815260026020819052604091829020015490517ffba64a7c0000000000000000000000000000000000000000000000000000000081526201000090910473ffffffffffffffffffffffffffffffffffffffff169063fba64a7c90613be5908690869086908b908d90600401615106565b600060405180830381600087803b158015613bff57600080fd5b505af1158015613c13573d6000803e3d6000fd5b50505050505050505050565b6000818152600183016020526040812054613c6657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610474565b506000610474565b606081600001805480602002602001604051908101604052809291908181526020018280548015613cbe57602002820191906000526020600020905b815481526020019060010190808311613caa575b50505050509050919050565b6000613cd583613ce6565b8015612b9d5750612b9d8383613d4a565b6000613d12827f01ffc9a700000000000000000000000000000000000000000000000000000000613d4a565b80156104745750613d43827fffffffff00000000000000000000000000000000000000000000000000000000613d4a565b1592915050565b604080517fffffffff000000000000000000000000000000000000000000000000000000008316602480830191909152825180830390910181526044909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f01ffc9a700000000000000000000000000000000000000000000000000000000178152825160009392849283928392918391908a617530fa92503d91506000519050828015613e02575060208210155b8015613e0e5750600081115b979650505050505050565b508054613e259061497d565b6000825580601f10613e35575050565b601f016020900490600052602060002090810190612b869190613e6d565b5080546000825590600052602060002090810190612b8691905b5b80821115613e825760008155600101613e6e565b5090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60405160a0810167ffffffffffffffff81118282101715613ed857613ed8613e86565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613f2557613f25613e86565b604052919050565b600067ffffffffffffffff821115613f4757613f47613e86565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112613f8457600080fd5b8135613f97613f9282613f2d565b613ede565b818152846020838601011115613fac57600080fd5b816020850160208301376000918101602001919091529392505050565b60008060408385031215613fdc57600080fd5b823567ffffffffffffffff80821115613ff457600080fd5b61400086838701613f73565b9350602085013591508082111561401657600080fd5b5061402385828601613f73565b9150509250929050565b60006020828403121561403f57600080fd5b5035919050565b60005b83811015614061578181015183820152602001614049565b50506000910152565b60008151808452614082816020860160208601614046565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000612b9d602083018461406a565b60008083601f8401126140d957600080fd5b50813567ffffffffffffffff8111156140f157600080fd5b6020830191508360208260051b850101111561189557600080fd5b6000806020838503121561411f57600080fd5b823567ffffffffffffffff81111561413657600080fd5b614142858286016140c7565b90969095509350505050565b60008151808452602080850194506020840160005b8381101561417f57815187529582019590820190600101614163565b509495945050505050565b600082825180855260208086019550808260051b84010181860160005b84811015614207578583037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001895281518051845284015160408585018190526141f38186018361406a565b9a86019a94505050908301906001016141a7565b5090979650505050505050565b600063ffffffff8083511684528060208401511660208501525060ff604083015116604084015260608201511515606084015260808201511515608084015260a082015160e060a085015261426c60e085018261414e565b905060c083015184820360c0860152614285828261418a565b95945050505050565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015614303577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526142f1858351614214565b945092850192908501906001016142b7565b5092979650505050505050565b803563ffffffff8116811461432457600080fd5b919050565b60006020828403121561433b57600080fd5b612b9d82614310565b73ffffffffffffffffffffffffffffffffffffffff81511682526000602082015160406020850152614379604085018261406a565b949350505050565b602081526000612b9d6020830184614344565b602081526000612b9d6020830184614214565b8035801515811461432457600080fd5b803560ff8116811461432457600080fd5b600080600080600080600060a0888a0312156143e357600080fd5b6143ec88614310565b9650602088013567ffffffffffffffff8082111561440957600080fd5b6144158b838c016140c7565b909850965060408a013591508082111561442e57600080fd5b5061443b8a828b016140c7565b909550935061444e9050606089016143a7565b915061445c608089016143b7565b905092959891949750929550565b6000806040838503121561447d57600080fd5b61448683614310565b946020939093013593505050565b6040815260006144a7604083018561406a565b8281036020840152614285818561406a565b600061010063ffffffff80845116855280602085015116602086015280604085015116604086015250606083015160608501526080830151608085015260a083015160a085015260c08301518160c08601526145178286018261414e565b91505060e083015184820360e0860152614285828261414e565b602081526000612b9d60208301846144b9565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015614303577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526145a7858351614344565b9450928501929085019060010161456d565b600080600080604085870312156145cf57600080fd5b843567ffffffffffffffff808211156145e757600080fd5b6145f3888389016140c7565b9096509450602087013591508082111561460c57600080fd5b50614619878288016140c7565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b805182526000602082015160e0602085015261467360e085018261406a565b90506040830151848203604086015261468c828261406a565b9150506060830151600481106146a4576146a4614625565b60608501526080830151600281106146be576146be614625565b8060808601525060a08301516146ec60a086018273ffffffffffffffffffffffffffffffffffffffff169052565b5060c083015161470060c086018215159052565b509392505050565b602081526000612b9d6020830184614654565b600080600080600080600060a0888a03121561473657600080fd5b873567ffffffffffffffff8082111561474e57600080fd5b61475a8b838c016140c7565b909950975060208a013591508082111561477357600080fd5b506147808a828b016140c7565b90965094506147939050604089016143a7565b925061444e606089016143a7565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015614303577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452614804858351614654565b945092850192908501906001016147ca565b600060208083016020845280855180835260408601915060408160051b87010192506020870160005b82811015614303577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526148798583516144b9565b9450928501929085019060010161483f565b803573ffffffffffffffffffffffffffffffffffffffff8116811461432457600080fd5b6000602082840312156148c157600080fd5b612b9d8261488b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b63ffffffff8281168282160390808211156107ea576107ea6148f9565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614976576149766148f9565b5060010190565b600181811c9082168061499157607f821691505b6020821081036149ca577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b600063ffffffff8083168181036149e9576149e96148f9565b6001019392505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61833603018112614a2757600080fd5b9190910192915050565b600060a08236031215614a4357600080fd5b614a4b613eb5565b614a5483614310565b8152602080840135818301526040840135604083015260608401356060830152608084013567ffffffffffffffff80821115614a8f57600080fd5b9085019036601f830112614aa257600080fd5b813581811115614ab457614ab4613e86565b8060051b9150614ac5848301613ede565b8181529183018401918481019036841115614adf57600080fd5b938501935b83851015614afd57843582529385019390850190614ae4565b608087015250939695505050505050565b6020808252825182820181905260009190848201906040850190845b81811015614b4657835183529284019291840191600101614b2a565b50909695505050505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1833603018112614a2757600080fd5b600060408236031215614b9857600080fd5b6040516040810167ffffffffffffffff8282108183111715614bbc57614bbc613e86565b81604052614bc98561488b565b83526020850135915080821115614bdf57600080fd5b50614bec36828601613f73565b60208301525092915050565b601f82111561068f576000816000526020600020601f850160051c81016020861015614c215750805b601f850160051c820191505b8181101561266357828155600101614c2d565b815167ffffffffffffffff811115614c5a57614c5a613e86565b614c6e81614c68845461497d565b84614bf8565b602080601f831160018114614cc15760008415614c8b5750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612663565b6000858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b82811015614d0e57888601518255948401946001909101908401614cef565b5085821015614d4a57878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215614d6c57600080fd5b815167ffffffffffffffff811115614d8357600080fd5b8201601f81018413614d9457600080fd5b8051614da2613f9282613f2d565b818152856020838501011115614db757600080fd5b614285826020830160208601614046565b80356002811061432457600080fd5b600060a08236031215614de957600080fd5b614df1613eb5565b823567ffffffffffffffff80821115614e0957600080fd5b614e1536838701613f73565b83526020850135915080821115614e2b57600080fd5b50614e3836828601613f73565b602083015250604083013560048110614e5057600080fd5b6040820152614e6160608401614dc8565b6060820152614e726080840161488b565b608082015292915050565b6000602080835260008454614e918161497d565b8060208701526040600180841660008114614eb35760018114614eed57614f1d565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00851660408a0152604084151560051b8a01019550614f1d565b89600052602060002060005b85811015614f145781548b8201860152908301908801614ef9565b8a016040019650505b509398975050505050505050565b60ff8181168382160190811115610474576104746148f9565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614f7957600080fd5b83018035915067ffffffffffffffff821115614f9457600080fd5b60200191503681900382131561189557600080fd5b67ffffffffffffffff831115614fc157614fc1613e86565b614fd583614fcf835461497d565b83614bf8565b6000601f8411600181146150275760008515614ff15750838201355b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b1c1916600186901b1783556150bd565b6000838152602090207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0861690835b828110156150765786850135825560209485019460019092019101615056565b50868210156150b1577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b81810381811115610474576104746148f9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6080815284608082015260007f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff86111561513f57600080fd5b8560051b808860a0850137820182810360a090810160208501526151659082018761406a565b91505063ffffffff8085166040840152808416606084015250969550505050505056fea164736f6c6343000818000a", } var CapabilitiesRegistryABI = CapabilitiesRegistryMetaData.ABI diff --git a/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 24d463c9b04..ba9504ad259 100644 --- a/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/keystone/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -1,5 +1,5 @@ GETH_VERSION: 1.13.8 -capabilities_registry: ../../../contracts/solc/v0.8.24/CapabilitiesRegistry/CapabilitiesRegistry.abi ../../../contracts/solc/v0.8.24/CapabilitiesRegistry/CapabilitiesRegistry.bin 5c97ce78e6b13502b654c4ba0ff0ad6348a40435f709b6d157e6709d43360bbe +capabilities_registry: ../../../contracts/solc/v0.8.24/CapabilitiesRegistry/CapabilitiesRegistry.abi ../../../contracts/solc/v0.8.24/CapabilitiesRegistry/CapabilitiesRegistry.bin 83c3405d7e0f8326eaad1bd0cb54e304e8bdf9daf6bf6503de57c56e86a909cc feeds_consumer: ../../../contracts/solc/v0.8.24/KeystoneFeedsConsumer/KeystoneFeedsConsumer.abi ../../../contracts/solc/v0.8.24/KeystoneFeedsConsumer/KeystoneFeedsConsumer.bin 6ac5b12eff3b022a35c3c40d5ed0285bf9bfec0e3669a4b12307332a216048ca forwarder: ../../../contracts/solc/v0.8.24/KeystoneForwarder/KeystoneForwarder.abi ../../../contracts/solc/v0.8.24/KeystoneForwarder/KeystoneForwarder.bin 03911334d0c88f8ee8ee2d9832fd312bc8a48c824fcda5c807585af2d0e6a148 ocr3_capability: ../../../contracts/solc/v0.8.24/OCR3Capability/OCR3Capability.abi ../../../contracts/solc/v0.8.24/OCR3Capability/OCR3Capability.bin 2a6bfae30ccf38327fc7e78605a226839dfa0ce5a1a22e0414b91d24c35b3a53