From 89433616eb3683bffbc1afb6f91f17aab389164a Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Wed, 28 Aug 2024 17:06:36 +0100 Subject: [PATCH 1/2] chore: updating ABIs --- abis/0.8.25/AgentFactory.json | 539 +++++++++ abis/0.8.25/AgentFactorySubscription.json | 561 ++++++++++ abis/0.8.25/AgentMech.json | 1083 +++++++++++++++++++ abis/0.8.25/AgentMechSubscription.json | 1202 +++++++++++++++++++++ abis/0.8.25/AgentRegistry.json | 1046 ++++++++++++++++++ abis/0.8.25/Karma.json | 359 ++++++ abis/0.8.25/KarmaProxy.json | 59 + abis/0.8.25/MechMarketplace.json | 837 ++++++++++++++ contracts/AgentRegistry.sol | 10 +- 9 files changed, 5691 insertions(+), 5 deletions(-) create mode 100644 abis/0.8.25/AgentFactory.json create mode 100644 abis/0.8.25/AgentFactorySubscription.json create mode 100644 abis/0.8.25/AgentMech.json create mode 100644 abis/0.8.25/AgentMechSubscription.json create mode 100644 abis/0.8.25/AgentRegistry.json create mode 100644 abis/0.8.25/Karma.json create mode 100644 abis/0.8.25/KarmaProxy.json create mode 100644 abis/0.8.25/MechMarketplace.json diff --git a/abis/0.8.25/AgentFactory.json b/abis/0.8.25/AgentFactory.json new file mode 100644 index 0000000..2e58f62 --- /dev/null +++ b/abis/0.8.25/AgentFactory.json @@ -0,0 +1,539 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AgentFactory", + "sourceName": "contracts/AgentFactory.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_agentRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "AgentInstanceRegistered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentInstancesSlotsFilled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentNotInService", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "componentId", + "type": "uint256" + } + ], + "name": "ComponentNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "HashExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectAgentBondingValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectRegistrationDepositValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OnlyOwnServiceMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorHasNoInstances", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceMustBeInactive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "currentThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxThreshold", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "mech", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "CreateMech", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "Pause", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "Unpause", + "type": "event" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "agentRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "agentOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "agentHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "price", + "type": "uint256" + }, + { + "internalType": "address", + "name": "mechMarketplace", + "type": "address" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "mech", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a0604052348015600e575f80fd5b50604051613fba380380613fba833981016040819052602b91604c565b6001600160a01b03166080525f80546001600160a01b031916331790556077565b5f60208284031215605b575f80fd5b81516001600160a01b03811681146070575f80fd5b9392505050565b608051613f1e61009c5f395f8181608e0152818161041b01526104ce0152613f1e5ff3fe608060405234801561000f575f80fd5b5060043610610085575f3560e01c80638da5cb5b116100585780638da5cb5b146101205780639683fe3e1461013f578063a6f9dae11461017c578063ffa1ad741461018f575f80fd5b80630d1cfcae146100895780633f4ba83a146100da5780635c975abb146100e45780638456cb5914610118575b5f80fd5b6100b07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e26101d8565b005b5f546101089074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016100d1565b6100e261029f565b5f546100b09073ffffffffffffffffffffffffffffffffffffffff1681565b61015261014d3660046106ff565b610378565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016100d1565b6100e261018a366004610742565b6105a0565b6101cb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d19190610762565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461024e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610310575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f8054819074010000000000000000000000000000000000000000900460ff16156103cf576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa3def92300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a3def923906044016020604051808303815f875af1158015610461573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048591906107b5565b6040805173ffffffffffffffffffffffffffffffffffffffff891660208201529081018290529092505f90606001604051602081830303815290604052805190602001209050807f00000000000000000000000000000000000000000000000000000000000000008487876040516104fc906106ca565b73ffffffffffffffffffffffffffffffffffffffff94851681526020810193909352604083019190915290911660608201526080018190604051809103905ff590508015801561054e573d5f803e3d5ffd5b50915084838373ffffffffffffffffffffffffffffffffffffffff167f67a2e45041c70013518c5b9b849a6944a6c17ff44d66be1c707020460ecbd1db60405160405180910390a45094509492505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610611575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b61371c806107cd83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146106fa575f80fd5b919050565b5f805f8060808587031215610712575f80fd5b61071b856106d7565b93506020850135925060408501359150610737606086016106d7565b905092959194509250565b5f60208284031215610752575f80fd5b61075b826106d7565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156107c5575f80fd5b505191905056fe60c06040525f80556001600655348015610017575f80fd5b5060405161371c38038061371c83398101604081905261003691610469565b604080516001600160a01b038616602082015280820185905281518082038301815260609091019091528490849061006d8161016b565b5050506001600160a01b0384166100975760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104ac565b90506001600160a01b03811661013157604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261015d6101cd565b608052506105949350505050565b610173610295565b51156101c15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610128565b6101ca816102fd565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b81525060405160200161023e91906104cc565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60606102f86102f3604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6103c1565b905090565b5f61030782610416565b90505f8151602083015ff0905061036d604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b0316146103bc5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b6044820152606401610128565b505050565b6060813b600181116103e257505060408051602081019091525f8152919050565b806103ec81610515565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b606081516001610426919061052a565b82604051602001610438929190610543565b6040516020818303038152906040529050919050565b80516001600160a01b0381168114610464575f80fd5b919050565b5f805f806080858703121561047c575f80fd5b6104858561044e565b935060208501519250604085015191506104a16060860161044e565b905092959194509250565b5f602082840312156104bc575f80fd5b6104c58261044e565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8161052357610523610501565b505f190190565b8082018082111561053d5761053d610501565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516131596105c35f395f81816105ab015261172001525f81816108cd015261175501526131595ff3fe6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f80fd5b8063f5dcb7bb1461086a578063f6171e441461089d575f80fd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f80fd5b8063d843b7f414610785578063d8a4676f146107c6575f80fd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f80fd5b8063b94207d3146106bf578063bc197c81146106d2575f80fd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f80fd5b8063a035b1fe1461063d578063a4f9edbf14610652575f80fd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f80fd5b806391b7f5ed14610550578063982c0db31461056f575f80fd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f80fd5b806358ce0909146104605780636d70f7ae1461048c575f80fd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f80fd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f80fd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f80fd5b806223de29146102b7578062427c54146102dd575f80fd5b366102b357005b5f80fd5b3480156102c2575f80fd5b506102db6102d136600461270e565b5050505050505050565b005b3480156102e8575f80fd5b506103086102f73660046127b8565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f80fd5b5061035f6103353660046127d3565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f80fd5b506102db6103aa366004612915565b61094b565b3480156103ba575f80fd5b5061035f6103c9366004612915565b610ac5565b3480156103d9575f80fd5b50610308610c68565b3480156103ed575f80fd5b506103086103fc3660046127b8565b60076020525f908152604090205481565b348015610418575f80fd5b50610308610427366004612959565b610c8c565b348015610437575f80fd5b506102db6104463660046129a8565b610cc8565b348015610456575f80fd5b5061030860035481565b34801561046b575f80fd5b5061047f61047a366004612a05565b610ead565b6040516103129190612a25565b348015610497575f80fd5b506104ab6104a63660046127b8565b611004565b6040519015158152602001610312565b6102db6104c9366004612a68565b6110d6565b3480156104d9575f80fd5b506103086104e83660046127b8565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f80fd5b506103086105293660046127b8565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f80fd5b506102db61056a366004612abd565b611159565b34801561057a575f80fd5b506103086105893660046127b8565b60096020525f908152604090205481565b3480156105a5575f80fd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f80fd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f80fd5b50610308610638366004612a68565b611247565b348015610648575f80fd5b5061030860015481565b34801561065d575f80fd5b506102db61066c366004612ad4565b6112fb565b34801561067c575f80fd5b5061030860045481565b348015610691575f80fd5b505f54610308565b3480156106a4575f80fd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612ad4565b611377565b3480156106dd575f80fd5b5061035f6106ec366004612b4f565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f80fd5b5061030860025481565b348015610739575f80fd5b5061074d610748366004612be5565b611432565b6040516103129190612ca3565b348015610765575f80fd5b506103086107743660046127b8565b600c6020525f908152604090205481565b348015610790575f80fd5b506105f961079f366004612abd565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f80fd5b506107e56107e0366004612abd565b61151c565b6040516103129190612ce2565b3480156107fd575f80fd5b506102db61080c366004612abd565b6115f1565b34801561081c575f80fd5b5061030861171d565b348015610830575f80fd5b5061035f61083f366004612d21565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f80fd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f80fd5b506103086108b7366004612a05565b611777565b3480156108c7575f80fd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f80fd5b506105f9611799565b34801561090e575f80fd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b61095433611004565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117b6565b5050600160065550565b5f805f80610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b0682611004565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612d98565b602060405180830381865afa158015610bcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612db0565b95505050505050610c62565b610c0a6104a68783868661199b565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f80610c726119b7565b806020019051810190610c859190612def565b9392505050565b5f610c95611a86565b610c9f8484611b05565b9050610cae6040850185612e1b565b90505f03610cbf57610cbf84611bd9565b610c8582611c57565b610cd133611004565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117b6565b6005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906356d0819e90610e74908890859088908890600401612e7c565b5f604051808303815f87803b158015610e8b575f80fd5b505af1158015610e9d573d5f803e3d5ffd5b5050600160065550505050505050565b6002546060905f849003610ebf578093505b80610eca8486612eea565b1115610f1757610eda8385612eea565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315610ffd578367ffffffffffffffff811115610f3657610f36612841565b604051908082528060200260200182016040528015610f5f578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fb2575f828152600a60205260409020600101549150600101610f8f565b505f5b85811015610ffa5781848281518110610fd057610fd0612efd565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fb5565b50505b5092915050565b5f805f61100f6119b7565b8060200190518101906110229190612def565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161107891815260200190565b602060405180830381865afa158015611093573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b79190612f2a565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611149576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b611154838383611ccb565b505050565b61116233611004565b80611180575033730576a174d229e3cfa37253523e645a78a0c91b57145b61120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125061171d565b84848460405160200161126593929190612f45565b604051602081830303815290604052805190602001206040516020016112bd9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6113036119b7565b511561136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137481611e73565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113e5576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140091908490611247565b335f908152600c6020526040812080549293509061141d83612f83565b919050555061142d338383611ccb565b919050565b606061143d33611004565b8061145b575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f6115018787878787156114fb5787611fe3565b5a611fe3565b925090508061151257815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff161561142d575f828152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116115635750505050509050805f6002811061158f5761158f612efd565b60200201511580156115a357506020810151155b80156115d857505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115e657600291506115eb565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611664576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116bf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116c981836120e6565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171191815260200190565b60405180910390a25050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146117525761174d612239565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f208160028110611790575f80fd5b01549150829050565b5f806117a36119b7565b806020019051810190610c629190612f2a565b5f828152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16806118ee5760055473ffffffffffffffffffffffffffffffffffffffff1615611899576005546040517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff9091169063f2e433bf906024016080604051808303815f875af115801561186e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118929190612fba565b6040015190505b73ffffffffffffffffffffffffffffffffffffffff81166118e9576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018590526024016109fa565b6118f8565b6118f881856120e6565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260086020526040812080548594509161192b83612f83565b909155505060048054905f61193f83612f83565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b70858460405161198c929190612d98565b60405180910390a25092915050565b5f805f6119aa87878787612337565b915091506115128161241f565b606061174d611a816040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6125d1565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611b9f82611b66610140880188612e1b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611bd0576001915050610c62565b505f9392505050565b5f805460208301359180611bec83612f83565b9190505514611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b8015611374576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cbf576040519150601f19603f3d011682016040523d82523d5f602084013e611cc4565b606091505b5050505050565b611cd6348284612626565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d0683612f83565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d3b83612f83565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e0283612f83565b909155505060038054905f611e1683612f83565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e63929190612d98565b60405180910390a2505050505050565b5f611e7d82612670565b90505f8151602083015ff09050611f4f6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f60606001846001811115611ffa57611ffa612cb5565b0361206e578673ffffffffffffffffffffffffffffffffffffffff168386604051612025919061305c565b5f604051808303818686f4925050503d805f811461205e576040519150601f19603f3d011682016040523d82523d5f602084013e612063565b606091505b5090925090506120dc565b8673ffffffffffffffffffffffffffffffffffffffff16838787604051612095919061305c565b5f60405180830381858888f193505050503d805f81146120d0576040519150601f19603f3d011682016040523d82523d5f602084013e6120d5565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812080549161211683613067565b909155505060028054905f61212a83613067565b90915550505f818152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161214d5750505050509050805f6002811061217957612179612efd565b602002015115801561218d57506020810151155b80156121c257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b156121fc576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122c29190612ca3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561236c57505f90506003612416565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123bd573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612410575f60019250925050612416565b91505f90505b94509492505050565b5f81600481111561243257612432612cb5565b0361243a5750565b600181600481111561244e5761244e612cb5565b036124b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b60028160048111156124c9576124c9612cb5565b03612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561254457612544612cb5565b03611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b600181116125f257505060408051602081019091525f8152919050565b806125fc81613067565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b600154831015611154576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126809190612eea565b8260405160200161269292919061309b565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611374575f80fd5b5f8083601f8401126126d9575f80fd5b50813567ffffffffffffffff8111156126f0575f80fd5b602083019150836020828501011115612707575f80fd5b9250929050565b5f805f805f805f8060c0898b031215612725575f80fd5b8835612730816126a8565b97506020890135612740816126a8565b96506040890135612750816126a8565b955060608901359450608089013567ffffffffffffffff80821115612773575f80fd5b61277f8c838d016126c9565b909650945060a08b0135915080821115612797575f80fd5b506127a48b828c016126c9565b999c989b5096995094979396929594505050565b5f602082840312156127c8575f80fd5b8135610c85816126a8565b5f805f805f608086880312156127e7575f80fd5b85356127f2816126a8565b94506020860135612802816126a8565b935060408601359250606086013567ffffffffffffffff811115612824575f80fd5b612830888289016126c9565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261287d575f80fd5b813567ffffffffffffffff8082111561289857612898612841565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156128de576128de612841565b816040528381528660208588010111156128f6575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215612926575f80fd5b82359150602083013567ffffffffffffffff811115612943575f80fd5b61294f8582860161286e565b9150509250929050565b5f805f6060848603121561296b575f80fd5b833567ffffffffffffffff811115612981575f80fd5b84016101608187031215612993575f80fd5b95602085013595506040909401359392505050565b5f805f80608085870312156129bb575f80fd5b84359350602085013567ffffffffffffffff8111156129d8575f80fd5b6129e48782880161286e565b93505060408501356129f5816126a8565b9396929550929360600135925050565b5f8060408385031215612a16575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b81811015612a5c57835183529284019291840191600101612a40565b50909695505050505050565b5f805f60608486031215612a7a575f80fd5b8335612a85816126a8565b9250602084013567ffffffffffffffff811115612aa0575f80fd5b612aac8682870161286e565b925050604084013590509250925092565b5f60208284031215612acd575f80fd5b5035919050565b5f60208284031215612ae4575f80fd5b813567ffffffffffffffff811115612afa575f80fd5b612b068482850161286e565b949350505050565b5f8083601f840112612b1e575f80fd5b50813567ffffffffffffffff811115612b35575f80fd5b6020830191508360208260051b8501011115612707575f80fd5b5f805f805f805f8060a0898b031215612b66575f80fd5b8835612b71816126a8565b97506020890135612b81816126a8565b9650604089013567ffffffffffffffff80821115612b9d575f80fd5b612ba98c838d01612b0e565b909850965060608b0135915080821115612bc1575f80fd5b612bcd8c838d01612b0e565b909650945060808b0135915080821115612797575f80fd5b5f805f805f60a08688031215612bf9575f80fd5b8535612c04816126a8565b945060208601359350604086013567ffffffffffffffff811115612c26575f80fd5b612c328882890161286e565b935050606086013560028110612c46575f80fd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612c57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d1b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f805f805f8060a08789031215612d36575f80fd5b8635612d41816126a8565b95506020870135612d51816126a8565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d7a575f80fd5b612d8689828a016126c9565b979a9699509497509295939492505050565b828152604060208201525f612b066040830184612c57565b5f60208284031215612dc0575f80fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f80fd5b5f8060408385031215612e00575f80fd5b8251612e0b816126a8565b6020939093015192949293505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e4e575f80fd5b83018035915067ffffffffffffffff821115612e68575f80fd5b602001915036819003821315612707575f80fd5b848152608060208201525f612e946080830186612c57565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612ebd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f3a575f80fd5b8151610c85816126a8565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612f736060830185612c57565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fb357612fb3612ebd565b5060010190565b5f60808284031215612fca575f80fd5b6040516080810181811067ffffffffffffffff82111715612fed57612fed612841565b6040528251612ffb816126a8565b8152602083015161300b816126a8565b6020820152604083015161301e816126a8565b6040820152606083015163ffffffff81168114613039575f80fd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613045565b5f8161307557613075612ebd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b06600f83018461304556fea26469706673582212201cd08849c6bb0bbad9e5b60bc3fd20a33581b199675f820e1d9898d2263963c164736f6c63430008190033a2646970667358221220069a57d330f4c772fbb54a15ad3181893011072621a5550faf0b2dae39d0e65e64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610085575f3560e01c80638da5cb5b116100585780638da5cb5b146101205780639683fe3e1461013f578063a6f9dae11461017c578063ffa1ad741461018f575f80fd5b80630d1cfcae146100895780633f4ba83a146100da5780635c975abb146100e45780638456cb5914610118575b5f80fd5b6100b07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e26101d8565b005b5f546101089074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016100d1565b6100e261029f565b5f546100b09073ffffffffffffffffffffffffffffffffffffffff1681565b61015261014d3660046106ff565b610378565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016100d1565b6100e261018a366004610742565b6105a0565b6101cb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d19190610762565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461024e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610310575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f8054819074010000000000000000000000000000000000000000900460ff16156103cf576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa3def92300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8781166004830152602482018790527f0000000000000000000000000000000000000000000000000000000000000000169063a3def923906044016020604051808303815f875af1158015610461573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061048591906107b5565b6040805173ffffffffffffffffffffffffffffffffffffffff891660208201529081018290529092505f90606001604051602081830303815290604052805190602001209050807f00000000000000000000000000000000000000000000000000000000000000008487876040516104fc906106ca565b73ffffffffffffffffffffffffffffffffffffffff94851681526020810193909352604083019190915290911660608201526080018190604051809103905ff590508015801561054e573d5f803e3d5ffd5b50915084838373ffffffffffffffffffffffffffffffffffffffff167f67a2e45041c70013518c5b9b849a6944a6c17ff44d66be1c707020460ecbd1db60405160405180910390a45094509492505050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610611575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b73ffffffffffffffffffffffffffffffffffffffff811661065e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b61371c806107cd83390190565b803573ffffffffffffffffffffffffffffffffffffffff811681146106fa575f80fd5b919050565b5f805f8060808587031215610712575f80fd5b61071b856106d7565b93506020850135925060408501359150610737606086016106d7565b905092959194509250565b5f60208284031215610752575f80fd5b61075b826106d7565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f602082840312156107c5575f80fd5b505191905056fe60c06040525f80556001600655348015610017575f80fd5b5060405161371c38038061371c83398101604081905261003691610469565b604080516001600160a01b038616602082015280820185905281518082038301815260609091019091528490849061006d8161016b565b5050506001600160a01b0384166100975760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104ac565b90506001600160a01b03811661013157604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261015d6101cd565b608052506105949350505050565b610173610295565b51156101c15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610128565b6101ca816102fd565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b81525060405160200161023e91906104cc565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60606102f86102f3604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6103c1565b905090565b5f61030782610416565b90505f8151602083015ff0905061036d604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b0316146103bc5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b6044820152606401610128565b505050565b6060813b600181116103e257505060408051602081019091525f8152919050565b806103ec81610515565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b606081516001610426919061052a565b82604051602001610438929190610543565b6040516020818303038152906040529050919050565b80516001600160a01b0381168114610464575f80fd5b919050565b5f805f806080858703121561047c575f80fd5b6104858561044e565b935060208501519250604085015191506104a16060860161044e565b905092959194509250565b5f602082840312156104bc575f80fd5b6104c58261044e565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8161052357610523610501565b505f190190565b8082018082111561053d5761053d610501565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516131596105c35f395f81816105ab015261172001525f81816108cd015261175501526131595ff3fe6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f80fd5b8063f5dcb7bb1461086a578063f6171e441461089d575f80fd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f80fd5b8063d843b7f414610785578063d8a4676f146107c6575f80fd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f80fd5b8063b94207d3146106bf578063bc197c81146106d2575f80fd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f80fd5b8063a035b1fe1461063d578063a4f9edbf14610652575f80fd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f80fd5b806391b7f5ed14610550578063982c0db31461056f575f80fd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f80fd5b806358ce0909146104605780636d70f7ae1461048c575f80fd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f80fd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f80fd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f80fd5b806223de29146102b7578062427c54146102dd575f80fd5b366102b357005b5f80fd5b3480156102c2575f80fd5b506102db6102d136600461270e565b5050505050505050565b005b3480156102e8575f80fd5b506103086102f73660046127b8565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f80fd5b5061035f6103353660046127d3565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f80fd5b506102db6103aa366004612915565b61094b565b3480156103ba575f80fd5b5061035f6103c9366004612915565b610ac5565b3480156103d9575f80fd5b50610308610c68565b3480156103ed575f80fd5b506103086103fc3660046127b8565b60076020525f908152604090205481565b348015610418575f80fd5b50610308610427366004612959565b610c8c565b348015610437575f80fd5b506102db6104463660046129a8565b610cc8565b348015610456575f80fd5b5061030860035481565b34801561046b575f80fd5b5061047f61047a366004612a05565b610ead565b6040516103129190612a25565b348015610497575f80fd5b506104ab6104a63660046127b8565b611004565b6040519015158152602001610312565b6102db6104c9366004612a68565b6110d6565b3480156104d9575f80fd5b506103086104e83660046127b8565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f80fd5b506103086105293660046127b8565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f80fd5b506102db61056a366004612abd565b611159565b34801561057a575f80fd5b506103086105893660046127b8565b60096020525f908152604090205481565b3480156105a5575f80fd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f80fd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f80fd5b50610308610638366004612a68565b611247565b348015610648575f80fd5b5061030860015481565b34801561065d575f80fd5b506102db61066c366004612ad4565b6112fb565b34801561067c575f80fd5b5061030860045481565b348015610691575f80fd5b505f54610308565b3480156106a4575f80fd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612ad4565b611377565b3480156106dd575f80fd5b5061035f6106ec366004612b4f565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f80fd5b5061030860025481565b348015610739575f80fd5b5061074d610748366004612be5565b611432565b6040516103129190612ca3565b348015610765575f80fd5b506103086107743660046127b8565b600c6020525f908152604090205481565b348015610790575f80fd5b506105f961079f366004612abd565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f80fd5b506107e56107e0366004612abd565b61151c565b6040516103129190612ce2565b3480156107fd575f80fd5b506102db61080c366004612abd565b6115f1565b34801561081c575f80fd5b5061030861171d565b348015610830575f80fd5b5061035f61083f366004612d21565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f80fd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f80fd5b506103086108b7366004612a05565b611777565b3480156108c7575f80fd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f80fd5b506105f9611799565b34801561090e575f80fd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b61095433611004565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117b6565b5050600160065550565b5f805f80610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b0682611004565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612d98565b602060405180830381865afa158015610bcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612db0565b95505050505050610c62565b610c0a6104a68783868661199b565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f80610c726119b7565b806020019051810190610c859190612def565b9392505050565b5f610c95611a86565b610c9f8484611b05565b9050610cae6040850185612e1b565b90505f03610cbf57610cbf84611bd9565b610c8582611c57565b610cd133611004565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117b6565b6005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906356d0819e90610e74908890859088908890600401612e7c565b5f604051808303815f87803b158015610e8b575f80fd5b505af1158015610e9d573d5f803e3d5ffd5b5050600160065550505050505050565b6002546060905f849003610ebf578093505b80610eca8486612eea565b1115610f1757610eda8385612eea565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315610ffd578367ffffffffffffffff811115610f3657610f36612841565b604051908082528060200260200182016040528015610f5f578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fb2575f828152600a60205260409020600101549150600101610f8f565b505f5b85811015610ffa5781848281518110610fd057610fd0612efd565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fb5565b50505b5092915050565b5f805f61100f6119b7565b8060200190518101906110229190612def565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161107891815260200190565b602060405180830381865afa158015611093573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b79190612f2a565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611149576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b611154838383611ccb565b505050565b61116233611004565b80611180575033730576a174d229e3cfa37253523e645a78a0c91b57145b61120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125061171d565b84848460405160200161126593929190612f45565b604051602081830303815290604052805190602001206040516020016112bd9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6113036119b7565b511561136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137481611e73565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113e5576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140091908490611247565b335f908152600c6020526040812080549293509061141d83612f83565b919050555061142d338383611ccb565b919050565b606061143d33611004565b8061145b575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f6115018787878787156114fb5787611fe3565b5a611fe3565b925090508061151257815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff161561142d575f828152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116115635750505050509050805f6002811061158f5761158f612efd565b60200201511580156115a357506020810151155b80156115d857505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115e657600291506115eb565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611664576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116bf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116c981836120e6565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171191815260200190565b60405180910390a25050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146117525761174d612239565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f208160028110611790575f80fd5b01549150829050565b5f806117a36119b7565b806020019051810190610c629190612f2a565b5f828152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16806118ee5760055473ffffffffffffffffffffffffffffffffffffffff1615611899576005546040517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff9091169063f2e433bf906024016080604051808303815f875af115801561186e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118929190612fba565b6040015190505b73ffffffffffffffffffffffffffffffffffffffff81166118e9576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018590526024016109fa565b6118f8565b6118f881856120e6565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260086020526040812080548594509161192b83612f83565b909155505060048054905f61193f83612f83565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b70858460405161198c929190612d98565b60405180910390a25092915050565b5f805f6119aa87878787612337565b915091506115128161241f565b606061174d611a816040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6125d1565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611b9f82611b66610140880188612e1b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611bd0576001915050610c62565b505f9392505050565b5f805460208301359180611bec83612f83565b9190505514611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b8015611374576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cbf576040519150601f19603f3d011682016040523d82523d5f602084013e611cc4565b606091505b5050505050565b611cd6348284612626565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d0683612f83565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d3b83612f83565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e0283612f83565b909155505060038054905f611e1683612f83565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e63929190612d98565b60405180910390a2505050505050565b5f611e7d82612670565b90505f8151602083015ff09050611f4f6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f60606001846001811115611ffa57611ffa612cb5565b0361206e578673ffffffffffffffffffffffffffffffffffffffff168386604051612025919061305c565b5f604051808303818686f4925050503d805f811461205e576040519150601f19603f3d011682016040523d82523d5f602084013e612063565b606091505b5090925090506120dc565b8673ffffffffffffffffffffffffffffffffffffffff16838787604051612095919061305c565b5f60405180830381858888f193505050503d805f81146120d0576040519150601f19603f3d011682016040523d82523d5f602084013e6120d5565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812080549161211683613067565b909155505060028054905f61212a83613067565b90915550505f818152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161214d5750505050509050805f6002811061217957612179612efd565b602002015115801561218d57506020810151155b80156121c257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b156121fc576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122c29190612ca3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561236c57505f90506003612416565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123bd573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612410575f60019250925050612416565b91505f90505b94509492505050565b5f81600481111561243257612432612cb5565b0361243a5750565b600181600481111561244e5761244e612cb5565b036124b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b60028160048111156124c9576124c9612cb5565b03612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561254457612544612cb5565b03611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b600181116125f257505060408051602081019091525f8152919050565b806125fc81613067565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b600154831015611154576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126809190612eea565b8260405160200161269292919061309b565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611374575f80fd5b5f8083601f8401126126d9575f80fd5b50813567ffffffffffffffff8111156126f0575f80fd5b602083019150836020828501011115612707575f80fd5b9250929050565b5f805f805f805f8060c0898b031215612725575f80fd5b8835612730816126a8565b97506020890135612740816126a8565b96506040890135612750816126a8565b955060608901359450608089013567ffffffffffffffff80821115612773575f80fd5b61277f8c838d016126c9565b909650945060a08b0135915080821115612797575f80fd5b506127a48b828c016126c9565b999c989b5096995094979396929594505050565b5f602082840312156127c8575f80fd5b8135610c85816126a8565b5f805f805f608086880312156127e7575f80fd5b85356127f2816126a8565b94506020860135612802816126a8565b935060408601359250606086013567ffffffffffffffff811115612824575f80fd5b612830888289016126c9565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261287d575f80fd5b813567ffffffffffffffff8082111561289857612898612841565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156128de576128de612841565b816040528381528660208588010111156128f6575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215612926575f80fd5b82359150602083013567ffffffffffffffff811115612943575f80fd5b61294f8582860161286e565b9150509250929050565b5f805f6060848603121561296b575f80fd5b833567ffffffffffffffff811115612981575f80fd5b84016101608187031215612993575f80fd5b95602085013595506040909401359392505050565b5f805f80608085870312156129bb575f80fd5b84359350602085013567ffffffffffffffff8111156129d8575f80fd5b6129e48782880161286e565b93505060408501356129f5816126a8565b9396929550929360600135925050565b5f8060408385031215612a16575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b81811015612a5c57835183529284019291840191600101612a40565b50909695505050505050565b5f805f60608486031215612a7a575f80fd5b8335612a85816126a8565b9250602084013567ffffffffffffffff811115612aa0575f80fd5b612aac8682870161286e565b925050604084013590509250925092565b5f60208284031215612acd575f80fd5b5035919050565b5f60208284031215612ae4575f80fd5b813567ffffffffffffffff811115612afa575f80fd5b612b068482850161286e565b949350505050565b5f8083601f840112612b1e575f80fd5b50813567ffffffffffffffff811115612b35575f80fd5b6020830191508360208260051b8501011115612707575f80fd5b5f805f805f805f8060a0898b031215612b66575f80fd5b8835612b71816126a8565b97506020890135612b81816126a8565b9650604089013567ffffffffffffffff80821115612b9d575f80fd5b612ba98c838d01612b0e565b909850965060608b0135915080821115612bc1575f80fd5b612bcd8c838d01612b0e565b909650945060808b0135915080821115612797575f80fd5b5f805f805f60a08688031215612bf9575f80fd5b8535612c04816126a8565b945060208601359350604086013567ffffffffffffffff811115612c26575f80fd5b612c328882890161286e565b935050606086013560028110612c46575f80fd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612c57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d1b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f805f805f8060a08789031215612d36575f80fd5b8635612d41816126a8565b95506020870135612d51816126a8565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d7a575f80fd5b612d8689828a016126c9565b979a9699509497509295939492505050565b828152604060208201525f612b066040830184612c57565b5f60208284031215612dc0575f80fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f80fd5b5f8060408385031215612e00575f80fd5b8251612e0b816126a8565b6020939093015192949293505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e4e575f80fd5b83018035915067ffffffffffffffff821115612e68575f80fd5b602001915036819003821315612707575f80fd5b848152608060208201525f612e946080830186612c57565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612ebd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f3a575f80fd5b8151610c85816126a8565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612f736060830185612c57565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fb357612fb3612ebd565b5060010190565b5f60808284031215612fca575f80fd5b6040516080810181811067ffffffffffffffff82111715612fed57612fed612841565b6040528251612ffb816126a8565b8152602083015161300b816126a8565b6020820152604083015161301e816126a8565b6040820152606083015163ffffffff81168114613039575f80fd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613045565b5f8161307557613075612ebd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b06600f83018461304556fea26469706673582212201cd08849c6bb0bbad9e5b60bc3fd20a33581b199675f820e1d9898d2263963c164736f6c63430008190033a2646970667358221220069a57d330f4c772fbb54a15ad3181893011072621a5550faf0b2dae39d0e65e64736f6c63430008190033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.25/AgentFactorySubscription.json b/abis/0.8.25/AgentFactorySubscription.json new file mode 100644 index 0000000..2417772 --- /dev/null +++ b/abis/0.8.25/AgentFactorySubscription.json @@ -0,0 +1,561 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AgentFactorySubscription", + "sourceName": "contracts/integrations/nevermined/AgentFactorySubscription.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_agentRegistry", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "AgentInstanceRegistered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentInstancesSlotsFilled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentNotInService", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "componentId", + "type": "uint256" + } + ], + "name": "ComponentNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "HashExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectAgentBondingValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectRegistrationDepositValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OnlyOwnServiceMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorHasNoInstances", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceMustBeInactive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "currentThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxThreshold", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "mech", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "minCreditsPerRequest", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "subscriptionNFT", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "subscriptionTokenId", + "type": "uint256" + } + ], + "name": "CreateMech", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "Pause", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "Unpause", + "type": "event" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "agentRegistry", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "agentOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "agentHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "minCreditsPerRequest", + "type": "uint256" + }, + { + "internalType": "address", + "name": "subscriptionNFT", + "type": "address" + }, + { + "internalType": "uint256", + "name": "subscriptionTokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "mechMarketplace", + "type": "address" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "mech", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60a0604052348015600e575f80fd5b50604051614732380380614732833981016040819052602b91604c565b6001600160a01b03166080525f80546001600160a01b031916331790556077565b5f60208284031215605b575f80fd5b81516001600160a01b03811681146070575f80fd5b9392505050565b60805161469661009c5f395f8181608e0152818161041b01526104ce01526146965ff3fe608060405234801561000f575f80fd5b5060043610610085575f3560e01c806389925c0e1161005857806389925c0e146101205780638da5cb5b1461015d578063a6f9dae11461017c578063ffa1ad741461018f575f80fd5b80630d1cfcae146100895780633f4ba83a146100da5780635c975abb146100e45780638456cb5914610118575b5f80fd5b6100b07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e26101d8565b005b5f546101089074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016100d1565b6100e261029f565b61013361012e36600461073c565b610378565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016100d1565b5f546100b09073ffffffffffffffffffffffffffffffffffffffff1681565b6100e261018a366004610797565b6105dd565b6101cb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d191906107b7565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461024e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610310575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f8054819074010000000000000000000000000000000000000000900460ff16156103cf576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa3def92300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018990527f0000000000000000000000000000000000000000000000000000000000000000169063a3def923906044016020604051808303815f875af1158015610461573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610485919061080a565b6040805173ffffffffffffffffffffffffffffffffffffffff8b1660208201529081018290529092505f90606001604051602081830303815290604052805190602001209050807f000000000000000000000000000000000000000000000000000000000000000084898989896040516104fe90610707565b73ffffffffffffffffffffffffffffffffffffffff9687168152602081019590955260408501939093529084166060840152608083015290911660a082015260c0018190604051809103905ff590508015801561055d573d5f803e3d5ffd5b5091508573ffffffffffffffffffffffffffffffffffffffff16838373ffffffffffffffffffffffffffffffffffffffff167ff5bcf7f211d4b6f9a7c854a16f2d552d7827ca39de6c38f3506e2d1f9eae66a78a896040516105c9929190918252602082015260400190565b60405180910390a450965096945050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461064e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b73ffffffffffffffffffffffffffffffffffffffff811661069b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b613e3f8061082283390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114610737575f80fd5b919050565b5f805f805f8060c08789031215610751575f80fd5b61075a87610714565b9550602087013594506040870135935061077660608801610714565b92506080870135915061078b60a08801610714565b90509295509295509295565b5f602082840312156107a7575f80fd5b6107b082610714565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561081a575f80fd5b505191905056fe60c06040525f80556001600655348015610017575f80fd5b50604051613e3f380380613e3f833981016040819052610036916104ec565b8585858383835f82826040516020016100649291906001600160a01b03929092168252602082015260400190565b60408051601f19818403018152919052905061007f816101ee565b5050506001600160a01b0384166100a95760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101129190610547565b90506001600160a01b03811661014357604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261016f610250565b6080525050506001600160a01b03851691506101a0905057604051631f0f7ba560e11b815260040160405180910390fd5b815f036101c057604051631fed7fc560e01b815260040160405180910390fd5b50600d80546001600160a01b0319166001600160a01b039390931692909217909155600e555061062f915050565b6101f6610318565b51156102445760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015260640161013a565b61024d81610380565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b8152506040516020016102c19190610567565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b606061037b610376604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b610444565b905090565b5f61038a82610499565b90505f8151602083015ff090506103f0604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b03161461043f5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b604482015260640161013a565b505050565b6060813b6001811161046557505060408051602081019091525f8152919050565b8061046f816105b0565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b6060815160016104a991906105c5565b826040516020016104bb9291906105de565b6040516020818303038152906040529050919050565b80516001600160a01b03811681146104e7575f80fd5b919050565b5f805f805f8060c08789031215610501575f80fd5b61050a876104d1565b95506020870151945060408701519350610526606088016104d1565b92506080870151915061053b60a088016104d1565b90509295509295509295565b5f60208284031215610557575f80fd5b610560826104d1565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f816105be576105be61059c565b505f190190565b808201808211156105d8576105d861059c565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516137e161065e5f395f8181610651015261194e01525f818161094e015261198301526137e15ff3fe6080604052600436106102cd575f3560e01c80639c5e95901161017b578063cbd6407a116100d1578063f23a6e6111610087578063f698da2511610062578063f698da251461093d578063fc0c546a14610970578063ffa1ad7414610984575f80fd5b8063f23a6e61146108a6578063f5dcb7bb146108eb578063f6171e441461091e575f80fd5b8063d8a4676f116100b7578063d8a4676f14610847578063e7d915cf14610873578063ed24911d14610892575f80fd5b8063cbd6407a146107db578063d843b7f414610806575f80fd5b8063affed0e011610131578063bc197c811161010c578063bc197c8114610753578063bdf863171461079a578063c7dec3fc146107af575f80fd5b8063affed0e014610707578063b0d691fe1461071a578063b94207d314610740575f80fd5b8063a035b1fe11610161578063a035b1fe146106be578063a4f9edbf146106d3578063a669aaf9146106f2575f80fd5b80639c5e9590146106735780639ec4a5bf1461069f575f80fd5b80634ada3e611161023057806385cf7244116101e657806391b7f5ed116101c157806391b7f5ed146105f6578063982c0db3146106155780639a8a059214610640575f80fd5b806385cf72441461054f578063878b1132146105a05780638fb847ef146105b5575f80fd5b80636d70f7ae116102165780636d70f7ae146104cc57806379412518146104fb5780637af734731461050e575f80fd5b80634ada3e611461048b57806358ce0909146104a0575f80fd5b806317d70f7c116102855780632ebfc9271161026b5780632ebfc9271461042e5780633a871cdd1461044d5780634954bbf11461046c575f80fd5b806317d70f7c146103ef5780631bbbeeb814610403575f80fd5b8063150b7a02116102b5578063150b7a021461033c578063157305fe146103b15780631626ba7e146103d0575f80fd5b806223de29146102d8578062427c54146102fe575f80fd5b366102d457005b5f80fd5b3480156102e3575f80fd5b506102fc6102f2366004612c80565b5050505050505050565b005b348015610309575f80fd5b50610329610318366004612d2a565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610347575f80fd5b50610380610356366004612d45565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610333565b3480156103bc575f80fd5b506102fc6103cb366004612ec6565b6109cc565b3480156103db575f80fd5b506103806103ea366004612ec6565b610b46565b3480156103fa575f80fd5b50610329610ce9565b34801561040e575f80fd5b5061032961041d366004612d2a565b60076020525f908152604090205481565b348015610439575f80fd5b506102fc610448366004612f0a565b610d0d565b348015610458575f80fd5b50610329610467366004612f34565b610ec6565b348015610477575f80fd5b506102fc610486366004612f83565b610f02565b348015610496575f80fd5b5061032960035481565b3480156104ab575f80fd5b506104bf6104ba366004612fe0565b6110e7565b6040516103339190613000565b3480156104d7575f80fd5b506104eb6104e6366004612d2a565b61123e565b6040519015158152602001610333565b6102fc610509366004613043565b611310565b348015610519575f80fd5b50610329610528366004612d2a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561055a575f80fd5b50600d5461057b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610333565b3480156105ab575f80fd5b50610329600e5481565b3480156105c0575f80fd5b506103296105cf366004612d2a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b348015610601575f80fd5b506102fc610610366004613098565b611393565b348015610620575f80fd5b5061032961062f366004612d2a565b60096020525f908152604090205481565b34801561064b575f80fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561067e575f80fd5b5060055461057b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106aa575f80fd5b506103296106b9366004613043565b611481565b3480156106c9575f80fd5b5061032960015481565b3480156106de575f80fd5b506102fc6106ed3660046130af565b611535565b3480156106fd575f80fd5b5061032960045481565b348015610712575f80fd5b505f54610329565b348015610725575f80fd5b50730576a174d229e3cfa37253523e645a78a0c91b5761057b565b61032961074e3660046130af565b6115b1565b34801561075e575f80fd5b5061038061076d36600461312a565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156107a5575f80fd5b5061032960025481565b3480156107ba575f80fd5b506107ce6107c93660046131c0565b61166c565b604051610333919061327e565b3480156107e6575f80fd5b506103296107f5366004612d2a565b600c6020525f908152604090205481565b348015610811575f80fd5b5061057b610820366004613098565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015610852575f80fd5b50610866610861366004613098565b611756565b60405161033391906132bd565b34801561087e575f80fd5b506102fc61088d366004613098565b61182b565b34801561089d575f80fd5b5061032961194b565b3480156108b1575f80fd5b506103806108c03660046132fc565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b3480156108f6575f80fd5b506103297f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b348015610929575f80fd5b50610329610938366004612fe0565b6119a5565b348015610948575f80fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561097b575f80fd5b5061057b6119c7565b34801561098f575f80fd5b506107ce6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109d53361123e565b806109f3575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610ac1576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610b32576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a7b565b610b3c82826119e4565b5050600160065550565b5f805f80610b6685602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610c7c5782858301602001610b878261123e565b158015610baa575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610bdd57507fffffffff000000000000000000000000000000000000000000000000000000009450610ce39350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610c31908b908590600401613373565b602060405180830381865afa158015610c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c70919061338b565b95505050505050610ce3565b610c8b6104e687838686611bd4565b15610cbc57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610ce3915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f80610cf3611bf0565b806020019051810190610d0691906133ca565b9392505050565b610d163361123e565b80610d34575033730576a174d229e3cfa37253523e645a78a0c91b57145b610dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b73ffffffffffffffffffffffffffffffffffffffff8216610e0d576040517f3e1ef74a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03610e46576040517f1fed7fc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155600e8290556040518281527fa739b38899b4a928ed52e053d6cad069a2f5e76ebeea63aa310f9595e28c5f20906020015b60405180910390a25050565b5f610ecf611cbf565b610ed98484611d3e565b9050610ee860408501856133f6565b90505f03610ef957610ef984611e12565b610d0682611e90565b610f0b3361123e565b80610f29575033730576a174d229e3cfa37253523e645a78a0c91b57145b610fb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b60016006541115610ff2576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16611046576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61105185856119e4565b6005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906356d0819e906110ae908890859088908890600401613457565b5f604051808303815f87803b1580156110c5575f80fd5b505af11580156110d7573d5f803e3d5ffd5b5050600160065550505050505050565b6002546060905f8490036110f9578093505b8061110484866134c5565b11156111515761111483856134c5565b6040517f7ae59685000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610a7b565b8315611237578367ffffffffffffffff81111561117057611170612db3565b604051908082528060200260200182016040528015611199578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b848110156111ec575f828152600a602052604090206001015491506001016111c9565b505f5b85811015611234578184828151811061120a5761120a6134d8565b6020908102919091018101919091525f838152600a909152604090206001015491506001016111ef565b50505b5092915050565b5f805f611249611bf0565b80602001905181019061125c91906133ca565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016112b291815260200190565b602060405180830381865afa1580156112cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f19190613505565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611383576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610a7b565b61138e838383611f04565b505050565b61139c3361123e565b806113ba575033730576a174d229e3cfa37253523e645a78a0c91b57145b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61148a61194b565b84848460405160200161149f93929190613520565b604051602081830303815290604052805190602001206040516020016114f79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61153d611bf0565b51156115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610a7b565b6115ae816120ac565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff161561161f576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a7b565b335f818152600c602052604090205461163a91908490611481565b335f908152600c602052604081208054929350906116578361355e565b9190505550611667338383611f04565b919050565b60606116773361123e565b80611695575033730576a174d229e3cfa37253523e645a78a0c91b57145b611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b5f61173b878787878715611735578761221c565b5a61221c565b925090508061174c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611667575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161179d5750505050509050805f600281106117c9576117c96134d8565b60200201511580156117dd57506020810151155b801561181257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156118205760029150611825565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461189e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610a7b565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806118f9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611903818361231f565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd083604051610eba91815260200190565b5f7f000000000000000000000000000000000000000000000000000000000000000046146119805761197b612472565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f2081600281106119be575f80fd5b01549150829050565b5f806119d1611bf0565b806020019051810190610ce39190613505565b5f828152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1680611b1c5760055473ffffffffffffffffffffffffffffffffffffffff1615611ac7576005546040517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff9091169063f2e433bf906024016080604051808303815f875af1158015611a9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac09190613595565b6040015190505b73ffffffffffffffffffffffffffffffffffffffff8116611b17576040517ffe23980400000000000000000000000000000000000000000000000000000000815260048101859052602401610a7b565b611b26565b611b26818561231f565b611b31818585612570565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260408120805492945090611b648361355e565b909155505060048054905f611b788361355e565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b708584604051611bc5929190613373565b60405180910390a25092915050565b5f805f611be38787878761275c565b9150915061174c81612844565b606061197b611cba6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6129f6565b33730576a174d229e3cfa37253523e645a78a0c91b5714611d3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610a7b565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611dd882611d9f6101408801886133f6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b4692505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611e09576001915050610ce3565b505f9392505050565b5f805460208301359180611e258361355e565b91905055146115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e6365000000000000000000000000000000000000006044820152606401610a7b565b80156115ae576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611ef8576040519150601f19603f3d011682016040523d82523d5f602084013e611efd565b606091505b5050505050565b611f0f348284612a4b565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611f3f8361355e565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611f748361355e565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e39492939290919061203b8361355e565b909155505060038054905f61204f8361355e565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc858760405161209c929190613373565b60405180910390a2505050505050565b5f6120b682612be2565b90505f8151602083015ff090506121886040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c656400000000000000000000000000000000000000006044820152606401610a7b565b5f6060600184600181111561223357612233613290565b036122a7578673ffffffffffffffffffffffffffffffffffffffff16838660405161225e9190613637565b5f604051808303818686f4925050503d805f8114612297576040519150601f19603f3d011682016040523d82523d5f602084013e61229c565b606091505b509092509050612315565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516122ce9190613637565b5f60405180830381858888f193505050503d805f8114612309576040519150601f19603f3d011682016040523d82523d5f602084013e61230e565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812080549161234f83613642565b909155505060028054905f61236383613642565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116123865750505050509050805f600281106123b2576123b26134d8565b60200201511580156123c657506020810151155b80156123fb57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612435576040517ffe23980400000000000000000000000000000000000000000000000000000000815260048101839052602401610a7b565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016124fb919061327e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6060600160065411156125af576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065581515f906125cb9084016020908101908501613676565b600d54600e546040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201929092529295509293505f92169062fdd58e90604401602060405180830381865afa158015612648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266c91906136f5565b9050818181111561267a5750805b801561271257600d54600e546040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201929092526044810184905291169063f5298aca906064015f604051808303815f87803b1580156126fb575f80fd5b505af115801561270d573d5f803e3d5ffd5b505050505b604080518481526020810183905287917fc618cebcfec26828410db514432d580b183e1e3e9e97cc6ab5ef9922b0a1c4c1910160405180910390a250506001600655509392505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561279157505f9050600361283b565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e2573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612835575f6001925092505061283b565b91505f90505b94509492505050565b5f81600481111561285757612857613290565b0361285f5750565b600181600481111561287357612873613290565b036128da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a7b565b60028160048111156128ee576128ee613290565b03612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a7b565b600381600481111561296957612969613290565b036115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a7b565b6060813b60018111612a1757505060408051602081019091525f8152919050565b80612a2181613642565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60016006541115612a88576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026006558215612ac8576040517f0f0fe74c00000000000000000000000000000000000000000000000000000000815260048101849052602401610a7b565b600d54600e546040517efdd58e00000000000000000000000000000000000000000000000000000000815233600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015612b3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6191906136f5565b335f9081526009602052604081205460018054939450909290612b859084906134c5565b612b8f919061370c565b905080831015612bd5576040517facff13ae0000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610a7b565b5050600160065550505050565b606081516001612bf291906134c5565b82604051602001612c04929190613723565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff811681146115ae575f80fd5b5f8083601f840112612c4b575f80fd5b50813567ffffffffffffffff811115612c62575f80fd5b602083019150836020828501011115612c79575f80fd5b9250929050565b5f805f805f805f8060c0898b031215612c97575f80fd5b8835612ca281612c1a565b97506020890135612cb281612c1a565b96506040890135612cc281612c1a565b955060608901359450608089013567ffffffffffffffff80821115612ce5575f80fd5b612cf18c838d01612c3b565b909650945060a08b0135915080821115612d09575f80fd5b50612d168b828c01612c3b565b999c989b5096995094979396929594505050565b5f60208284031215612d3a575f80fd5b8135610d0681612c1a565b5f805f805f60808688031215612d59575f80fd5b8535612d6481612c1a565b94506020860135612d7481612c1a565b935060408601359250606086013567ffffffffffffffff811115612d96575f80fd5b612da288828901612c3b565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e2757612e27612db3565b604052919050565b5f67ffffffffffffffff821115612e4857612e48612db3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112612e83575f80fd5b8135612e96612e9182612e2f565b612de0565b818152846020838601011115612eaa575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215612ed7575f80fd5b82359150602083013567ffffffffffffffff811115612ef4575f80fd5b612f0085828601612e74565b9150509250929050565b5f8060408385031215612f1b575f80fd5b8235612f2681612c1a565b946020939093013593505050565b5f805f60608486031215612f46575f80fd5b833567ffffffffffffffff811115612f5c575f80fd5b84016101608187031215612f6e575f80fd5b95602085013595506040909401359392505050565b5f805f8060808587031215612f96575f80fd5b84359350602085013567ffffffffffffffff811115612fb3575f80fd5b612fbf87828801612e74565b9350506040850135612fd081612c1a565b9396929550929360600135925050565b5f8060408385031215612ff1575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b818110156130375783518352928401929184019160010161301b565b50909695505050505050565b5f805f60608486031215613055575f80fd5b833561306081612c1a565b9250602084013567ffffffffffffffff81111561307b575f80fd5b61308786828701612e74565b925050604084013590509250925092565b5f602082840312156130a8575f80fd5b5035919050565b5f602082840312156130bf575f80fd5b813567ffffffffffffffff8111156130d5575f80fd5b6130e184828501612e74565b949350505050565b5f8083601f8401126130f9575f80fd5b50813567ffffffffffffffff811115613110575f80fd5b6020830191508360208260051b8501011115612c79575f80fd5b5f805f805f805f8060a0898b031215613141575f80fd5b883561314c81612c1a565b9750602089013561315c81612c1a565b9650604089013567ffffffffffffffff80821115613178575f80fd5b6131848c838d016130e9565b909850965060608b013591508082111561319c575f80fd5b6131a88c838d016130e9565b909650945060808b0135915080821115612d09575f80fd5b5f805f805f60a086880312156131d4575f80fd5b85356131df81612c1a565b945060208601359350604086013567ffffffffffffffff811115613201575f80fd5b61320d88828901612e74565b935050606086013560028110613221575f80fd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610d066020830184613232565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60208101600383106132f6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f805f805f8060a08789031215613311575f80fd5b863561331c81612c1a565b9550602087013561332c81612c1a565b94506040870135935060608701359250608087013567ffffffffffffffff811115613355575f80fd5b61336189828a01612c3b565b979a9699509497509295939492505050565b828152604060208201525f6130e16040830184613232565b5f6020828403121561339b575f80fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610d06575f80fd5b5f80604083850312156133db575f80fd5b82516133e681612c1a565b6020939093015192949293505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613429575f80fd5b83018035915067ffffffffffffffff821115613443575f80fd5b602001915036819003821315612c79575f80fd5b848152608060208201525f61346f6080830186613232565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610ce357610ce3613498565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215613515575f80fd5b8151610d0681612c1a565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f61354e6060830185613232565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358e5761358e613498565b5060010190565b5f608082840312156135a5575f80fd5b6040516080810181811067ffffffffffffffff821117156135c8576135c8612db3565b60405282516135d681612c1a565b815260208301516135e681612c1a565b602082015260408301516135f981612c1a565b6040820152606083015163ffffffff81168114613614575f80fd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610d068284613620565b5f8161365057613650613498565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8060408385031215613687575f80fd5b82519150602083015167ffffffffffffffff8111156136a4575f80fd5b8301601f810185136136b4575f80fd5b80516136c2612e9182612e2f565b8181528660208385010111156136d6575f80fd5b8160208401602083015e5f602083830101528093505050509250929050565b5f60208284031215613705575f80fd5b5051919050565b8082028115828204841417610ce357610ce3613498565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f6130e1600f83018461362056fea2646970667358221220b69d0d2f43cba0bbdf8f7740bd7daf3d66080b5d267f8439fc3baa25a7b3367e64736f6c63430008190033a2646970667358221220f786908a38722d86a3c8be13736fda4160f4369114547c1674dfd21f3687f3eb64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b5060043610610085575f3560e01c806389925c0e1161005857806389925c0e146101205780638da5cb5b1461015d578063a6f9dae11461017c578063ffa1ad741461018f575f80fd5b80630d1cfcae146100895780633f4ba83a146100da5780635c975abb146100e45780638456cb5914610118575b5f80fd5b6100b07f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100e26101d8565b005b5f546101089074010000000000000000000000000000000000000000900460ff1681565b60405190151581526020016100d1565b6100e261029f565b61013361012e36600461073c565b610378565b6040805192835273ffffffffffffffffffffffffffffffffffffffff9091166020830152016100d1565b5f546100b09073ffffffffffffffffffffffffffffffffffffffff1681565b6100e261018a366004610797565b6105dd565b6101cb6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516100d191906107b7565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461024e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16815560405133917faeb196d352664784d1900b0e7414a8face7d29f4dae8c4b0cf68ed477423bbf491a2565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610310575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b5f80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017815560405133917f5ee71a369c8672edded508e624ffc9257fa1ae6886ef32905c18e60196bca39991a2565b5f8054819074010000000000000000000000000000000000000000900460ff16156103cf576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517fa3def92300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152602482018990527f0000000000000000000000000000000000000000000000000000000000000000169063a3def923906044016020604051808303815f875af1158015610461573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610485919061080a565b6040805173ffffffffffffffffffffffffffffffffffffffff8b1660208201529081018290529092505f90606001604051602081830303815290604052805190602001209050807f000000000000000000000000000000000000000000000000000000000000000084898989896040516104fe90610707565b73ffffffffffffffffffffffffffffffffffffffff9687168152602081019590955260408501939093529084166060840152608083015290911660a082015260c0018190604051809103905ff590508015801561055d573d5f803e3d5ffd5b5091508573ffffffffffffffffffffffffffffffffffffffff16838373ffffffffffffffffffffffffffffffffffffffff167ff5bcf7f211d4b6f9a7c854a16f2d552d7827ca39de6c38f3506e2d1f9eae66a78a896040516105c9929190918252602082015260400190565b60405180910390a450965096945050505050565b5f5473ffffffffffffffffffffffffffffffffffffffff16331461064e575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610245565b73ffffffffffffffffffffffffffffffffffffffff811661069b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b613e3f8061082283390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114610737575f80fd5b919050565b5f805f805f8060c08789031215610751575f80fd5b61075a87610714565b9550602087013594506040870135935061077660608801610714565b92506080870135915061078b60a08801610714565b90509295509295509295565b5f602082840312156107a7575f80fd5b6107b082610714565b9392505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f6020828403121561081a575f80fd5b505191905056fe60c06040525f80556001600655348015610017575f80fd5b50604051613e3f380380613e3f833981016040819052610036916104ec565b8585858383835f82826040516020016100649291906001600160a01b03929092168252602082015260400190565b60408051601f19818403018152919052905061007f816101ee565b5050506001600160a01b0384166100a95760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101129190610547565b90506001600160a01b03811661014357604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261016f610250565b6080525050506001600160a01b03851691506101a0905057604051631f0f7ba560e11b815260040160405180910390fd5b815f036101c057604051631fed7fc560e01b815260040160405180910390fd5b50600d80546001600160a01b0319166001600160a01b039390931692909217909155600e555061062f915050565b6101f6610318565b51156102445760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015260640161013a565b61024d81610380565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b8152506040516020016102c19190610567565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b606061037b610376604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b610444565b905090565b5f61038a82610499565b90505f8151602083015ff090506103f0604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b03161461043f5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b604482015260640161013a565b505050565b6060813b6001811161046557505060408051602081019091525f8152919050565b8061046f816105b0565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b6060815160016104a991906105c5565b826040516020016104bb9291906105de565b6040516020818303038152906040529050919050565b80516001600160a01b03811681146104e7575f80fd5b919050565b5f805f805f8060c08789031215610501575f80fd5b61050a876104d1565b95506020870151945060408701519350610526606088016104d1565b92506080870151915061053b60a088016104d1565b90509295509295509295565b5f60208284031215610557575f80fd5b610560826104d1565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f816105be576105be61059c565b505f190190565b808201808211156105d8576105d861059c565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516137e161065e5f395f8181610651015261194e01525f818161094e015261198301526137e15ff3fe6080604052600436106102cd575f3560e01c80639c5e95901161017b578063cbd6407a116100d1578063f23a6e6111610087578063f698da2511610062578063f698da251461093d578063fc0c546a14610970578063ffa1ad7414610984575f80fd5b8063f23a6e61146108a6578063f5dcb7bb146108eb578063f6171e441461091e575f80fd5b8063d8a4676f116100b7578063d8a4676f14610847578063e7d915cf14610873578063ed24911d14610892575f80fd5b8063cbd6407a146107db578063d843b7f414610806575f80fd5b8063affed0e011610131578063bc197c811161010c578063bc197c8114610753578063bdf863171461079a578063c7dec3fc146107af575f80fd5b8063affed0e014610707578063b0d691fe1461071a578063b94207d314610740575f80fd5b8063a035b1fe11610161578063a035b1fe146106be578063a4f9edbf146106d3578063a669aaf9146106f2575f80fd5b80639c5e9590146106735780639ec4a5bf1461069f575f80fd5b80634ada3e611161023057806385cf7244116101e657806391b7f5ed116101c157806391b7f5ed146105f6578063982c0db3146106155780639a8a059214610640575f80fd5b806385cf72441461054f578063878b1132146105a05780638fb847ef146105b5575f80fd5b80636d70f7ae116102165780636d70f7ae146104cc57806379412518146104fb5780637af734731461050e575f80fd5b80634ada3e611461048b57806358ce0909146104a0575f80fd5b806317d70f7c116102855780632ebfc9271161026b5780632ebfc9271461042e5780633a871cdd1461044d5780634954bbf11461046c575f80fd5b806317d70f7c146103ef5780631bbbeeb814610403575f80fd5b8063150b7a02116102b5578063150b7a021461033c578063157305fe146103b15780631626ba7e146103d0575f80fd5b806223de29146102d8578062427c54146102fe575f80fd5b366102d457005b5f80fd5b3480156102e3575f80fd5b506102fc6102f2366004612c80565b5050505050505050565b005b348015610309575f80fd5b50610329610318366004612d2a565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610347575f80fd5b50610380610356366004612d45565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610333565b3480156103bc575f80fd5b506102fc6103cb366004612ec6565b6109cc565b3480156103db575f80fd5b506103806103ea366004612ec6565b610b46565b3480156103fa575f80fd5b50610329610ce9565b34801561040e575f80fd5b5061032961041d366004612d2a565b60076020525f908152604090205481565b348015610439575f80fd5b506102fc610448366004612f0a565b610d0d565b348015610458575f80fd5b50610329610467366004612f34565b610ec6565b348015610477575f80fd5b506102fc610486366004612f83565b610f02565b348015610496575f80fd5b5061032960035481565b3480156104ab575f80fd5b506104bf6104ba366004612fe0565b6110e7565b6040516103339190613000565b3480156104d7575f80fd5b506104eb6104e6366004612d2a565b61123e565b6040519015158152602001610333565b6102fc610509366004613043565b611310565b348015610519575f80fd5b50610329610528366004612d2a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561055a575f80fd5b50600d5461057b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610333565b3480156105ab575f80fd5b50610329600e5481565b3480156105c0575f80fd5b506103296105cf366004612d2a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b348015610601575f80fd5b506102fc610610366004613098565b611393565b348015610620575f80fd5b5061032961062f366004612d2a565b60096020525f908152604090205481565b34801561064b575f80fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561067e575f80fd5b5060055461057b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106aa575f80fd5b506103296106b9366004613043565b611481565b3480156106c9575f80fd5b5061032960015481565b3480156106de575f80fd5b506102fc6106ed3660046130af565b611535565b3480156106fd575f80fd5b5061032960045481565b348015610712575f80fd5b505f54610329565b348015610725575f80fd5b50730576a174d229e3cfa37253523e645a78a0c91b5761057b565b61032961074e3660046130af565b6115b1565b34801561075e575f80fd5b5061038061076d36600461312a565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156107a5575f80fd5b5061032960025481565b3480156107ba575f80fd5b506107ce6107c93660046131c0565b61166c565b604051610333919061327e565b3480156107e6575f80fd5b506103296107f5366004612d2a565b600c6020525f908152604090205481565b348015610811575f80fd5b5061057b610820366004613098565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015610852575f80fd5b50610866610861366004613098565b611756565b60405161033391906132bd565b34801561087e575f80fd5b506102fc61088d366004613098565b61182b565b34801561089d575f80fd5b5061032961194b565b3480156108b1575f80fd5b506103806108c03660046132fc565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b3480156108f6575f80fd5b506103297f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b348015610929575f80fd5b50610329610938366004612fe0565b6119a5565b348015610948575f80fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561097b575f80fd5b5061057b6119c7565b34801561098f575f80fd5b506107ce6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109d53361123e565b806109f3575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610ac1576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610b32576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a7b565b610b3c82826119e4565b5050600160065550565b5f805f80610b6685602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610c7c5782858301602001610b878261123e565b158015610baa575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610bdd57507fffffffff000000000000000000000000000000000000000000000000000000009450610ce39350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610c31908b908590600401613373565b602060405180830381865afa158015610c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c70919061338b565b95505050505050610ce3565b610c8b6104e687838686611bd4565b15610cbc57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610ce3915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f80610cf3611bf0565b806020019051810190610d0691906133ca565b9392505050565b610d163361123e565b80610d34575033730576a174d229e3cfa37253523e645a78a0c91b57145b610dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b73ffffffffffffffffffffffffffffffffffffffff8216610e0d576040517f3e1ef74a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03610e46576040517f1fed7fc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155600e8290556040518281527fa739b38899b4a928ed52e053d6cad069a2f5e76ebeea63aa310f9595e28c5f20906020015b60405180910390a25050565b5f610ecf611cbf565b610ed98484611d3e565b9050610ee860408501856133f6565b90505f03610ef957610ef984611e12565b610d0682611e90565b610f0b3361123e565b80610f29575033730576a174d229e3cfa37253523e645a78a0c91b57145b610fb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b60016006541115610ff2576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16611046576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61105185856119e4565b6005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906356d0819e906110ae908890859088908890600401613457565b5f604051808303815f87803b1580156110c5575f80fd5b505af11580156110d7573d5f803e3d5ffd5b5050600160065550505050505050565b6002546060905f8490036110f9578093505b8061110484866134c5565b11156111515761111483856134c5565b6040517f7ae59685000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610a7b565b8315611237578367ffffffffffffffff81111561117057611170612db3565b604051908082528060200260200182016040528015611199578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b848110156111ec575f828152600a602052604090206001015491506001016111c9565b505f5b85811015611234578184828151811061120a5761120a6134d8565b6020908102919091018101919091525f838152600a909152604090206001015491506001016111ef565b50505b5092915050565b5f805f611249611bf0565b80602001905181019061125c91906133ca565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016112b291815260200190565b602060405180830381865afa1580156112cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f19190613505565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611383576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610a7b565b61138e838383611f04565b505050565b61139c3361123e565b806113ba575033730576a174d229e3cfa37253523e645a78a0c91b57145b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61148a61194b565b84848460405160200161149f93929190613520565b604051602081830303815290604052805190602001206040516020016114f79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61153d611bf0565b51156115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610a7b565b6115ae816120ac565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff161561161f576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a7b565b335f818152600c602052604090205461163a91908490611481565b335f908152600c602052604081208054929350906116578361355e565b9190505550611667338383611f04565b919050565b60606116773361123e565b80611695575033730576a174d229e3cfa37253523e645a78a0c91b57145b611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b5f61173b878787878715611735578761221c565b5a61221c565b925090508061174c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611667575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161179d5750505050509050805f600281106117c9576117c96134d8565b60200201511580156117dd57506020810151155b801561181257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156118205760029150611825565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461189e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610a7b565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806118f9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611903818361231f565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd083604051610eba91815260200190565b5f7f000000000000000000000000000000000000000000000000000000000000000046146119805761197b612472565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f2081600281106119be575f80fd5b01549150829050565b5f806119d1611bf0565b806020019051810190610ce39190613505565b5f828152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1680611b1c5760055473ffffffffffffffffffffffffffffffffffffffff1615611ac7576005546040517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff9091169063f2e433bf906024016080604051808303815f875af1158015611a9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac09190613595565b6040015190505b73ffffffffffffffffffffffffffffffffffffffff8116611b17576040517ffe23980400000000000000000000000000000000000000000000000000000000815260048101859052602401610a7b565b611b26565b611b26818561231f565b611b31818585612570565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260408120805492945090611b648361355e565b909155505060048054905f611b788361355e565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b708584604051611bc5929190613373565b60405180910390a25092915050565b5f805f611be38787878761275c565b9150915061174c81612844565b606061197b611cba6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6129f6565b33730576a174d229e3cfa37253523e645a78a0c91b5714611d3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610a7b565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611dd882611d9f6101408801886133f6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b4692505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611e09576001915050610ce3565b505f9392505050565b5f805460208301359180611e258361355e565b91905055146115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e6365000000000000000000000000000000000000006044820152606401610a7b565b80156115ae576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611ef8576040519150601f19603f3d011682016040523d82523d5f602084013e611efd565b606091505b5050505050565b611f0f348284612a4b565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611f3f8361355e565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611f748361355e565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e39492939290919061203b8361355e565b909155505060038054905f61204f8361355e565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc858760405161209c929190613373565b60405180910390a2505050505050565b5f6120b682612be2565b90505f8151602083015ff090506121886040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c656400000000000000000000000000000000000000006044820152606401610a7b565b5f6060600184600181111561223357612233613290565b036122a7578673ffffffffffffffffffffffffffffffffffffffff16838660405161225e9190613637565b5f604051808303818686f4925050503d805f8114612297576040519150601f19603f3d011682016040523d82523d5f602084013e61229c565b606091505b509092509050612315565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516122ce9190613637565b5f60405180830381858888f193505050503d805f8114612309576040519150601f19603f3d011682016040523d82523d5f602084013e61230e565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812080549161234f83613642565b909155505060028054905f61236383613642565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116123865750505050509050805f600281106123b2576123b26134d8565b60200201511580156123c657506020810151155b80156123fb57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612435576040517ffe23980400000000000000000000000000000000000000000000000000000000815260048101839052602401610a7b565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016124fb919061327e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6060600160065411156125af576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065581515f906125cb9084016020908101908501613676565b600d54600e546040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201929092529295509293505f92169062fdd58e90604401602060405180830381865afa158015612648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266c91906136f5565b9050818181111561267a5750805b801561271257600d54600e546040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201929092526044810184905291169063f5298aca906064015f604051808303815f87803b1580156126fb575f80fd5b505af115801561270d573d5f803e3d5ffd5b505050505b604080518481526020810183905287917fc618cebcfec26828410db514432d580b183e1e3e9e97cc6ab5ef9922b0a1c4c1910160405180910390a250506001600655509392505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561279157505f9050600361283b565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e2573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612835575f6001925092505061283b565b91505f90505b94509492505050565b5f81600481111561285757612857613290565b0361285f5750565b600181600481111561287357612873613290565b036128da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a7b565b60028160048111156128ee576128ee613290565b03612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a7b565b600381600481111561296957612969613290565b036115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a7b565b6060813b60018111612a1757505060408051602081019091525f8152919050565b80612a2181613642565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60016006541115612a88576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026006558215612ac8576040517f0f0fe74c00000000000000000000000000000000000000000000000000000000815260048101849052602401610a7b565b600d54600e546040517efdd58e00000000000000000000000000000000000000000000000000000000815233600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015612b3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6191906136f5565b335f9081526009602052604081205460018054939450909290612b859084906134c5565b612b8f919061370c565b905080831015612bd5576040517facff13ae0000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610a7b565b5050600160065550505050565b606081516001612bf291906134c5565b82604051602001612c04929190613723565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff811681146115ae575f80fd5b5f8083601f840112612c4b575f80fd5b50813567ffffffffffffffff811115612c62575f80fd5b602083019150836020828501011115612c79575f80fd5b9250929050565b5f805f805f805f8060c0898b031215612c97575f80fd5b8835612ca281612c1a565b97506020890135612cb281612c1a565b96506040890135612cc281612c1a565b955060608901359450608089013567ffffffffffffffff80821115612ce5575f80fd5b612cf18c838d01612c3b565b909650945060a08b0135915080821115612d09575f80fd5b50612d168b828c01612c3b565b999c989b5096995094979396929594505050565b5f60208284031215612d3a575f80fd5b8135610d0681612c1a565b5f805f805f60808688031215612d59575f80fd5b8535612d6481612c1a565b94506020860135612d7481612c1a565b935060408601359250606086013567ffffffffffffffff811115612d96575f80fd5b612da288828901612c3b565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e2757612e27612db3565b604052919050565b5f67ffffffffffffffff821115612e4857612e48612db3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112612e83575f80fd5b8135612e96612e9182612e2f565b612de0565b818152846020838601011115612eaa575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215612ed7575f80fd5b82359150602083013567ffffffffffffffff811115612ef4575f80fd5b612f0085828601612e74565b9150509250929050565b5f8060408385031215612f1b575f80fd5b8235612f2681612c1a565b946020939093013593505050565b5f805f60608486031215612f46575f80fd5b833567ffffffffffffffff811115612f5c575f80fd5b84016101608187031215612f6e575f80fd5b95602085013595506040909401359392505050565b5f805f8060808587031215612f96575f80fd5b84359350602085013567ffffffffffffffff811115612fb3575f80fd5b612fbf87828801612e74565b9350506040850135612fd081612c1a565b9396929550929360600135925050565b5f8060408385031215612ff1575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b818110156130375783518352928401929184019160010161301b565b50909695505050505050565b5f805f60608486031215613055575f80fd5b833561306081612c1a565b9250602084013567ffffffffffffffff81111561307b575f80fd5b61308786828701612e74565b925050604084013590509250925092565b5f602082840312156130a8575f80fd5b5035919050565b5f602082840312156130bf575f80fd5b813567ffffffffffffffff8111156130d5575f80fd5b6130e184828501612e74565b949350505050565b5f8083601f8401126130f9575f80fd5b50813567ffffffffffffffff811115613110575f80fd5b6020830191508360208260051b8501011115612c79575f80fd5b5f805f805f805f8060a0898b031215613141575f80fd5b883561314c81612c1a565b9750602089013561315c81612c1a565b9650604089013567ffffffffffffffff80821115613178575f80fd5b6131848c838d016130e9565b909850965060608b013591508082111561319c575f80fd5b6131a88c838d016130e9565b909650945060808b0135915080821115612d09575f80fd5b5f805f805f60a086880312156131d4575f80fd5b85356131df81612c1a565b945060208601359350604086013567ffffffffffffffff811115613201575f80fd5b61320d88828901612e74565b935050606086013560028110613221575f80fd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610d066020830184613232565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60208101600383106132f6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f805f805f8060a08789031215613311575f80fd5b863561331c81612c1a565b9550602087013561332c81612c1a565b94506040870135935060608701359250608087013567ffffffffffffffff811115613355575f80fd5b61336189828a01612c3b565b979a9699509497509295939492505050565b828152604060208201525f6130e16040830184613232565b5f6020828403121561339b575f80fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610d06575f80fd5b5f80604083850312156133db575f80fd5b82516133e681612c1a565b6020939093015192949293505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613429575f80fd5b83018035915067ffffffffffffffff821115613443575f80fd5b602001915036819003821315612c79575f80fd5b848152608060208201525f61346f6080830186613232565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610ce357610ce3613498565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215613515575f80fd5b8151610d0681612c1a565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f61354e6060830185613232565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358e5761358e613498565b5060010190565b5f608082840312156135a5575f80fd5b6040516080810181811067ffffffffffffffff821117156135c8576135c8612db3565b60405282516135d681612c1a565b815260208301516135e681612c1a565b602082015260408301516135f981612c1a565b6040820152606083015163ffffffff81168114613614575f80fd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610d068284613620565b5f8161365057613650613498565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8060408385031215613687575f80fd5b82519150602083015167ffffffffffffffff8111156136a4575f80fd5b8301601f810185136136b4575f80fd5b80516136c2612e9182612e2f565b8181528660208385010111156136d6575f80fd5b8160208401602083015e5f602083830101528093505050509250929050565b5f60208284031215613705575f80fd5b5051919050565b8082028115828204841417610ce357610ce3613498565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f6130e1600f83018461362056fea2646970667358221220b69d0d2f43cba0bbdf8f7740bd7daf3d66080b5d267f8439fc3baa25a7b3367e64736f6c63430008190033a2646970667358221220f786908a38722d86a3c8be13736fda4160f4369114547c1674dfd21f3687f3eb64736f6c63430008190033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.25/AgentMech.json b/abis/0.8.25/AgentMech.json new file mode 100644 index 0000000..15f5a1f --- /dev/null +++ b/abis/0.8.25/AgentMech.json @@ -0,0 +1,1083 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AgentMech", + "sourceName": "contracts/AgentMech.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_price", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_mechMarketplace", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "mechMarketplace", + "type": "address" + } + ], + "name": "MarketplaceExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "MarketplaceOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + } + ], + "name": "NotEnoughPaid", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "RequestIdNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "Deliver", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "mechMarketplace", + "type": "address" + } + ], + "name": "MechMarketplaceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "PriceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "Request", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "RevokeRequest", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR_TYPE_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "chainId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deliver", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "address", + "name": "mechStakingInstance", + "type": "address" + }, + { + "internalType": "uint256", + "name": "mechServiceId", + "type": "uint256" + } + ], + "name": "deliverToMarketplace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "entryPoint", + "outputs": [ + { + "internalType": "contract IEntryPoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "txGas", + "type": "uint256" + } + ], + "name": "exec", + "outputs": [ + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getDeliveriesCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "getRequestId", + "outputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "getRequestStatus", + "outputs": [ + { + "internalType": "enum AgentMech.RequestStatus", + "name": "status", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getRequestsCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "size", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + } + ], + "name": "getUndeliveredRequestIds", + "outputs": [ + { + "internalType": "uint256[]", + "name": "requestIds", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "isOperator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapDeliveryCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapNonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapRequestAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapRequestCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapRequestIds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapUndeliveredRequestsCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mechMarketplace", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numTotalDeliveries", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numTotalRequests", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numUndeliveredRequests", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "price", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "request", + "outputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "requestFromMarketplace", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "revokeRequest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newPrice", + "type": "uint256" + } + ], + "name": "setPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initParams", + "type": "bytes" + } + ], + "name": "setUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC721", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "callGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "verificationGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPriorityFeePerGas", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct UserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60c06040525f80556001600655348015610017575f80fd5b5060405161371c38038061371c83398101604081905261003691610469565b604080516001600160a01b038616602082015280820185905281518082038301815260609091019091528490849061006d8161016b565b5050506001600160a01b0384166100975760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061010091906104ac565b90506001600160a01b03811661013157604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261015d6101cd565b608052506105949350505050565b610173610295565b51156101c15760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610128565b6101ca816102fd565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b81525060405160200161023e91906104cc565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b60606102f86102f3604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6103c1565b905090565b5f61030782610416565b90505f8151602083015ff0905061036d604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b0316146103bc5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b6044820152606401610128565b505050565b6060813b600181116103e257505060408051602081019091525f8152919050565b806103ec81610515565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b606081516001610426919061052a565b82604051602001610438929190610543565b6040516020818303038152906040529050919050565b80516001600160a01b0381168114610464575f80fd5b919050565b5f805f806080858703121561047c575f80fd5b6104858561044e565b935060208501519250604085015191506104a16060860161044e565b905092959194509250565b5f602082840312156104bc575f80fd5b6104c58261044e565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f8161052357610523610501565b505f190190565b8082018082111561053d5761053d610501565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516131596105c35f395f81816105ab015261172001525f81816108cd015261175501526131595ff3fe6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f80fd5b8063f5dcb7bb1461086a578063f6171e441461089d575f80fd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f80fd5b8063d843b7f414610785578063d8a4676f146107c6575f80fd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f80fd5b8063b94207d3146106bf578063bc197c81146106d2575f80fd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f80fd5b8063a035b1fe1461063d578063a4f9edbf14610652575f80fd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f80fd5b806391b7f5ed14610550578063982c0db31461056f575f80fd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f80fd5b806358ce0909146104605780636d70f7ae1461048c575f80fd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f80fd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f80fd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f80fd5b806223de29146102b7578062427c54146102dd575f80fd5b366102b357005b5f80fd5b3480156102c2575f80fd5b506102db6102d136600461270e565b5050505050505050565b005b3480156102e8575f80fd5b506103086102f73660046127b8565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f80fd5b5061035f6103353660046127d3565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f80fd5b506102db6103aa366004612915565b61094b565b3480156103ba575f80fd5b5061035f6103c9366004612915565b610ac5565b3480156103d9575f80fd5b50610308610c68565b3480156103ed575f80fd5b506103086103fc3660046127b8565b60076020525f908152604090205481565b348015610418575f80fd5b50610308610427366004612959565b610c8c565b348015610437575f80fd5b506102db6104463660046129a8565b610cc8565b348015610456575f80fd5b5061030860035481565b34801561046b575f80fd5b5061047f61047a366004612a05565b610ead565b6040516103129190612a25565b348015610497575f80fd5b506104ab6104a63660046127b8565b611004565b6040519015158152602001610312565b6102db6104c9366004612a68565b6110d6565b3480156104d9575f80fd5b506103086104e83660046127b8565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f80fd5b506103086105293660046127b8565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f80fd5b506102db61056a366004612abd565b611159565b34801561057a575f80fd5b506103086105893660046127b8565b60096020525f908152604090205481565b3480156105a5575f80fd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f80fd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f80fd5b50610308610638366004612a68565b611247565b348015610648575f80fd5b5061030860015481565b34801561065d575f80fd5b506102db61066c366004612ad4565b6112fb565b34801561067c575f80fd5b5061030860045481565b348015610691575f80fd5b505f54610308565b3480156106a4575f80fd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612ad4565b611377565b3480156106dd575f80fd5b5061035f6106ec366004612b4f565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f80fd5b5061030860025481565b348015610739575f80fd5b5061074d610748366004612be5565b611432565b6040516103129190612ca3565b348015610765575f80fd5b506103086107743660046127b8565b600c6020525f908152604090205481565b348015610790575f80fd5b506105f961079f366004612abd565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f80fd5b506107e56107e0366004612abd565b61151c565b6040516103129190612ce2565b3480156107fd575f80fd5b506102db61080c366004612abd565b6115f1565b34801561081c575f80fd5b5061030861171d565b348015610830575f80fd5b5061035f61083f366004612d21565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f80fd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f80fd5b506103086108b7366004612a05565b611777565b3480156108c7575f80fd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f80fd5b506105f9611799565b34801561090e575f80fd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b61095433611004565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117b6565b5050600160065550565b5f805f80610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b0682611004565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612d98565b602060405180830381865afa158015610bcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612db0565b95505050505050610c62565b610c0a6104a68783868661199b565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f80610c726119b7565b806020019051810190610c859190612def565b9392505050565b5f610c95611a86565b610c9f8484611b05565b9050610cae6040850185612e1b565b90505f03610cbf57610cbf84611bd9565b610c8582611c57565b610cd133611004565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117b6565b6005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906356d0819e90610e74908890859088908890600401612e7c565b5f604051808303815f87803b158015610e8b575f80fd5b505af1158015610e9d573d5f803e3d5ffd5b5050600160065550505050505050565b6002546060905f849003610ebf578093505b80610eca8486612eea565b1115610f1757610eda8385612eea565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315610ffd578367ffffffffffffffff811115610f3657610f36612841565b604051908082528060200260200182016040528015610f5f578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fb2575f828152600a60205260409020600101549150600101610f8f565b505f5b85811015610ffa5781848281518110610fd057610fd0612efd565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fb5565b50505b5092915050565b5f805f61100f6119b7565b8060200190518101906110229190612def565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161107891815260200190565b602060405180830381865afa158015611093573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b79190612f2a565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611149576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b611154838383611ccb565b505050565b61116233611004565b80611180575033730576a174d229e3cfa37253523e645a78a0c91b57145b61120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125061171d565b84848460405160200161126593929190612f45565b604051602081830303815290604052805190602001206040516020016112bd9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6113036119b7565b511561136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137481611e73565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113e5576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140091908490611247565b335f908152600c6020526040812080549293509061141d83612f83565b919050555061142d338383611ccb565b919050565b606061143d33611004565b8061145b575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f6115018787878787156114fb5787611fe3565b5a611fe3565b925090508061151257815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff161561142d575f828152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116115635750505050509050805f6002811061158f5761158f612efd565b60200201511580156115a357506020810151155b80156115d857505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115e657600291506115eb565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611664576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116bf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116c981836120e6565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171191815260200190565b60405180910390a25050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146117525761174d612239565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f208160028110611790575f80fd5b01549150829050565b5f806117a36119b7565b806020019051810190610c629190612f2a565b5f828152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16806118ee5760055473ffffffffffffffffffffffffffffffffffffffff1615611899576005546040517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff9091169063f2e433bf906024016080604051808303815f875af115801561186e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118929190612fba565b6040015190505b73ffffffffffffffffffffffffffffffffffffffff81166118e9576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018590526024016109fa565b6118f8565b6118f881856120e6565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260086020526040812080548594509161192b83612f83565b909155505060048054905f61193f83612f83565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b70858460405161198c929190612d98565b60405180910390a25092915050565b5f805f6119aa87878787612337565b915091506115128161241f565b606061174d611a816040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6125d1565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611b9f82611b66610140880188612e1b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611bd0576001915050610c62565b505f9392505050565b5f805460208301359180611bec83612f83565b9190505514611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b8015611374576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cbf576040519150601f19603f3d011682016040523d82523d5f602084013e611cc4565b606091505b5050505050565b611cd6348284612626565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d0683612f83565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d3b83612f83565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e0283612f83565b909155505060038054905f611e1683612f83565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e63929190612d98565b60405180910390a2505050505050565b5f611e7d82612670565b90505f8151602083015ff09050611f4f6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f60606001846001811115611ffa57611ffa612cb5565b0361206e578673ffffffffffffffffffffffffffffffffffffffff168386604051612025919061305c565b5f604051808303818686f4925050503d805f811461205e576040519150601f19603f3d011682016040523d82523d5f602084013e612063565b606091505b5090925090506120dc565b8673ffffffffffffffffffffffffffffffffffffffff16838787604051612095919061305c565b5f60405180830381858888f193505050503d805f81146120d0576040519150601f19603f3d011682016040523d82523d5f602084013e6120d5565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812080549161211683613067565b909155505060028054905f61212a83613067565b90915550505f818152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161214d5750505050509050805f6002811061217957612179612efd565b602002015115801561218d57506020810151155b80156121c257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b156121fc576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122c29190612ca3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561236c57505f90506003612416565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123bd573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612410575f60019250925050612416565b91505f90505b94509492505050565b5f81600481111561243257612432612cb5565b0361243a5750565b600181600481111561244e5761244e612cb5565b036124b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b60028160048111156124c9576124c9612cb5565b03612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561254457612544612cb5565b03611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b600181116125f257505060408051602081019091525f8152919050565b806125fc81613067565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b600154831015611154576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126809190612eea565b8260405160200161269292919061309b565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611374575f80fd5b5f8083601f8401126126d9575f80fd5b50813567ffffffffffffffff8111156126f0575f80fd5b602083019150836020828501011115612707575f80fd5b9250929050565b5f805f805f805f8060c0898b031215612725575f80fd5b8835612730816126a8565b97506020890135612740816126a8565b96506040890135612750816126a8565b955060608901359450608089013567ffffffffffffffff80821115612773575f80fd5b61277f8c838d016126c9565b909650945060a08b0135915080821115612797575f80fd5b506127a48b828c016126c9565b999c989b5096995094979396929594505050565b5f602082840312156127c8575f80fd5b8135610c85816126a8565b5f805f805f608086880312156127e7575f80fd5b85356127f2816126a8565b94506020860135612802816126a8565b935060408601359250606086013567ffffffffffffffff811115612824575f80fd5b612830888289016126c9565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261287d575f80fd5b813567ffffffffffffffff8082111561289857612898612841565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156128de576128de612841565b816040528381528660208588010111156128f6575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215612926575f80fd5b82359150602083013567ffffffffffffffff811115612943575f80fd5b61294f8582860161286e565b9150509250929050565b5f805f6060848603121561296b575f80fd5b833567ffffffffffffffff811115612981575f80fd5b84016101608187031215612993575f80fd5b95602085013595506040909401359392505050565b5f805f80608085870312156129bb575f80fd5b84359350602085013567ffffffffffffffff8111156129d8575f80fd5b6129e48782880161286e565b93505060408501356129f5816126a8565b9396929550929360600135925050565b5f8060408385031215612a16575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b81811015612a5c57835183529284019291840191600101612a40565b50909695505050505050565b5f805f60608486031215612a7a575f80fd5b8335612a85816126a8565b9250602084013567ffffffffffffffff811115612aa0575f80fd5b612aac8682870161286e565b925050604084013590509250925092565b5f60208284031215612acd575f80fd5b5035919050565b5f60208284031215612ae4575f80fd5b813567ffffffffffffffff811115612afa575f80fd5b612b068482850161286e565b949350505050565b5f8083601f840112612b1e575f80fd5b50813567ffffffffffffffff811115612b35575f80fd5b6020830191508360208260051b8501011115612707575f80fd5b5f805f805f805f8060a0898b031215612b66575f80fd5b8835612b71816126a8565b97506020890135612b81816126a8565b9650604089013567ffffffffffffffff80821115612b9d575f80fd5b612ba98c838d01612b0e565b909850965060608b0135915080821115612bc1575f80fd5b612bcd8c838d01612b0e565b909650945060808b0135915080821115612797575f80fd5b5f805f805f60a08688031215612bf9575f80fd5b8535612c04816126a8565b945060208601359350604086013567ffffffffffffffff811115612c26575f80fd5b612c328882890161286e565b935050606086013560028110612c46575f80fd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612c57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d1b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f805f805f8060a08789031215612d36575f80fd5b8635612d41816126a8565b95506020870135612d51816126a8565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d7a575f80fd5b612d8689828a016126c9565b979a9699509497509295939492505050565b828152604060208201525f612b066040830184612c57565b5f60208284031215612dc0575f80fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f80fd5b5f8060408385031215612e00575f80fd5b8251612e0b816126a8565b6020939093015192949293505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e4e575f80fd5b83018035915067ffffffffffffffff821115612e68575f80fd5b602001915036819003821315612707575f80fd5b848152608060208201525f612e946080830186612c57565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612ebd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f3a575f80fd5b8151610c85816126a8565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612f736060830185612c57565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fb357612fb3612ebd565b5060010190565b5f60808284031215612fca575f80fd5b6040516080810181811067ffffffffffffffff82111715612fed57612fed612841565b6040528251612ffb816126a8565b8152602083015161300b816126a8565b6020820152604083015161301e816126a8565b6040820152606083015163ffffffff81168114613039575f80fd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613045565b5f8161307557613075612ebd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b06600f83018461304556fea26469706673582212201cd08849c6bb0bbad9e5b60bc3fd20a33581b199675f820e1d9898d2263963c164736f6c63430008190033", + "deployedBytecode": "0x6080604052600436106102ac575f3560e01c8063a035b1fe11610165578063d843b7f4116100c6578063f5dcb7bb1161007c578063f698da2511610062578063f698da25146108bc578063fc0c546a146108ef578063ffa1ad7414610903575f80fd5b8063f5dcb7bb1461086a578063f6171e441461089d575f80fd5b8063e7d915cf116100ac578063e7d915cf146107f2578063ed24911d14610811578063f23a6e6114610825575f80fd5b8063d843b7f414610785578063d8a4676f146107c6575f80fd5b8063b94207d31161011b578063bdf8631711610101578063bdf8631714610719578063c7dec3fc1461072e578063cbd6407a1461075a575f80fd5b8063b94207d3146106bf578063bc197c81146106d2575f80fd5b8063a669aaf91161014b578063a669aaf914610671578063affed0e014610686578063b0d691fe14610699575f80fd5b8063a035b1fe1461063d578063a4f9edbf14610652575f80fd5b806358ce09091161020f57806391b7f5ed116101c55780639a8a0592116101ab5780639a8a05921461059a5780639c5e9590146105cd5780639ec4a5bf1461061e575f80fd5b806391b7f5ed14610550578063982c0db31461056f575f80fd5b806379412518116101f557806379412518146104bb5780637af73473146104ce5780638fb847ef1461050f575f80fd5b806358ce0909146104605780636d70f7ae1461048c575f80fd5b806317d70f7c116102645780633a871cdd1161024a5780633a871cdd1461040d5780634954bbf11461042c5780634ada3e611461044b575f80fd5b806317d70f7c146103ce5780631bbbeeb8146103e2575f80fd5b8063150b7a0211610294578063150b7a021461031b578063157305fe146103905780631626ba7e146103af575f80fd5b806223de29146102b7578062427c54146102dd575f80fd5b366102b357005b5f80fd5b3480156102c2575f80fd5b506102db6102d136600461270e565b5050505050505050565b005b3480156102e8575f80fd5b506103086102f73660046127b8565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610326575f80fd5b5061035f6103353660046127d3565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610312565b34801561039b575f80fd5b506102db6103aa366004612915565b61094b565b3480156103ba575f80fd5b5061035f6103c9366004612915565b610ac5565b3480156103d9575f80fd5b50610308610c68565b3480156103ed575f80fd5b506103086103fc3660046127b8565b60076020525f908152604090205481565b348015610418575f80fd5b50610308610427366004612959565b610c8c565b348015610437575f80fd5b506102db6104463660046129a8565b610cc8565b348015610456575f80fd5b5061030860035481565b34801561046b575f80fd5b5061047f61047a366004612a05565b610ead565b6040516103129190612a25565b348015610497575f80fd5b506104ab6104a63660046127b8565b611004565b6040519015158152602001610312565b6102db6104c9366004612a68565b6110d6565b3480156104d9575f80fd5b506103086104e83660046127b8565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561051a575f80fd5b506103086105293660046127b8565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b34801561055b575f80fd5b506102db61056a366004612abd565b611159565b34801561057a575f80fd5b506103086105893660046127b8565b60096020525f908152604090205481565b3480156105a5575f80fd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156105d8575f80fd5b506005546105f99073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610312565b348015610629575f80fd5b50610308610638366004612a68565b611247565b348015610648575f80fd5b5061030860015481565b34801561065d575f80fd5b506102db61066c366004612ad4565b6112fb565b34801561067c575f80fd5b5061030860045481565b348015610691575f80fd5b505f54610308565b3480156106a4575f80fd5b50730576a174d229e3cfa37253523e645a78a0c91b576105f9565b6103086106cd366004612ad4565b611377565b3480156106dd575f80fd5b5061035f6106ec366004612b4f565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b348015610724575f80fd5b5061030860025481565b348015610739575f80fd5b5061074d610748366004612be5565b611432565b6040516103129190612ca3565b348015610765575f80fd5b506103086107743660046127b8565b600c6020525f908152604090205481565b348015610790575f80fd5b506105f961079f366004612abd565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b3480156107d1575f80fd5b506107e56107e0366004612abd565b61151c565b6040516103129190612ce2565b3480156107fd575f80fd5b506102db61080c366004612abd565b6115f1565b34801561081c575f80fd5b5061030861171d565b348015610830575f80fd5b5061035f61083f366004612d21565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b348015610875575f80fd5b506103087f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b3480156108a8575f80fd5b506103086108b7366004612a05565b611777565b3480156108c7575f80fd5b506103087f000000000000000000000000000000000000000000000000000000000000000081565b3480156108fa575f80fd5b506105f9611799565b34801561090e575f80fd5b5061074d6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b61095433611004565b80610972575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610a40576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610ab1576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b610abb82826117b6565b5050600160065550565b5f805f80610ae585602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610bfb5782858301602001610b0682611004565b158015610b29575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610b5c57507fffffffff000000000000000000000000000000000000000000000000000000009450610c629350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610bb0908b908590600401612d98565b602060405180830381865afa158015610bcb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bef9190612db0565b95505050505050610c62565b610c0a6104a68783868661199b565b15610c3b57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610c62915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f80610c726119b7565b806020019051810190610c859190612def565b9392505050565b5f610c95611a86565b610c9f8484611b05565b9050610cae6040850185612e1b565b90505f03610cbf57610cbf84611bd9565b610c8582611c57565b610cd133611004565b80610cef575033730576a174d229e3cfa37253523e645a78a0c91b57145b610d7b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60016006541115610db8576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16610e0c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610e1785856117b6565b6005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906356d0819e90610e74908890859088908890600401612e7c565b5f604051808303815f87803b158015610e8b575f80fd5b505af1158015610e9d573d5f803e3d5ffd5b5050600160065550505050505050565b6002546060905f849003610ebf578093505b80610eca8486612eea565b1115610f1757610eda8385612eea565b6040517f7ae596850000000000000000000000000000000000000000000000000000000081526004810191909152602481018290526044016109fa565b8315610ffd578367ffffffffffffffff811115610f3657610f36612841565b604051908082528060200260200182016040528015610f5f578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b84811015610fb2575f828152600a60205260409020600101549150600101610f8f565b505f5b85811015610ffa5781848281518110610fd057610fd0612efd565b6020908102919091018101919091525f838152600a90915260409020600101549150600101610fb5565b50505b5092915050565b5f805f61100f6119b7565b8060200190518101906110229190612def565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161107891815260200190565b602060405180830381865afa158015611093573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110b79190612f2a565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611149576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b611154838383611ccb565b505050565b61116233611004565b80611180575033730576a174d229e3cfa37253523e645a78a0c91b57145b61120c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61125061171d565b84848460405160200161126593929190612f45565b604051602081830303815290604052805190602001206040516020016112bd9291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6113036119b7565b511561136b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a65640000000000000000000000000060448201526064016109fa565b61137481611e73565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff16156113e5576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201526024016109fa565b335f818152600c602052604090205461140091908490611247565b335f908152600c6020526040812080549293509061141d83612f83565b919050555061142d338383611ccb565b919050565b606061143d33611004565b8061145b575033730576a174d229e3cfa37253523e645a78a0c91b57145b6114e7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084016109fa565b5f6115018787878787156114fb5787611fe3565b5a611fe3565b925090508061151257815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff161561142d575f828152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116115635750505050509050805f6002811061158f5761158f612efd565b60200201511580156115a357506020810151155b80156115d857505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156115e657600291506115eb565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611664576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044016109fa565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806116bf576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116c981836120e6565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd08360405161171191815260200190565b60405180910390a25050565b5f7f000000000000000000000000000000000000000000000000000000000000000046146117525761174d612239565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f208160028110611790575f80fd5b01549150829050565b5f806117a36119b7565b806020019051810190610c629190612f2a565b5f828152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff16806118ee5760055473ffffffffffffffffffffffffffffffffffffffff1615611899576005546040517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff9091169063f2e433bf906024016080604051808303815f875af115801561186e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118929190612fba565b6040015190505b73ffffffffffffffffffffffffffffffffffffffff81166118e9576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018590526024016109fa565b6118f8565b6118f881856120e6565b73ffffffffffffffffffffffffffffffffffffffff81165f90815260086020526040812080548594509161192b83612f83565b909155505060048054905f61193f83612f83565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b70858460405161198c929190612d98565b60405180910390a25092915050565b5f805f6119aa87878787612337565b915091506115128161241f565b606061174d611a816040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6125d1565b33730576a174d229e3cfa37253523e645a78a0c91b5714611b03576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e740000000060448201526064016109fa565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611b9f82611b66610140880188612e1b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610ac592505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611bd0576001915050610c62565b505f9392505050565b5f805460208301359180611bec83612f83565b9190505514611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e63650000000000000000000000000000000000000060448201526064016109fa565b8015611374576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611cbf576040519150601f19603f3d011682016040523d82523d5f602084013e611cc4565b606091505b5050505050565b611cd6348284612626565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611d0683612f83565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611d3b83612f83565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e394929392909190611e0283612f83565b909155505060038054905f611e1683612f83565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc8587604051611e63929190612d98565b60405180910390a2505050505050565b5f611e7d82612670565b90505f8151602083015ff09050611f4f6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611154576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c6564000000000000000000000000000000000000000060448201526064016109fa565b5f60606001846001811115611ffa57611ffa612cb5565b0361206e578673ffffffffffffffffffffffffffffffffffffffff168386604051612025919061305c565b5f604051808303818686f4925050503d805f811461205e576040519150601f19603f3d011682016040523d82523d5f602084013e612063565b606091505b5090925090506120dc565b8673ffffffffffffffffffffffffffffffffffffffff16838787604051612095919061305c565b5f60405180830381858888f193505050503d805f81146120d0576040519150601f19603f3d011682016040523d82523d5f602084013e6120d5565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812080549161211683613067565b909155505060028054905f61212a83613067565b90915550505f818152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161214d5750505050509050805f6002811061217957612179612efd565b602002015115801561218d57506020810151155b80156121c257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b156121fc576040517ffe239804000000000000000000000000000000000000000000000000000000008152600481018390526024016109fa565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016122c29190612ca3565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561236c57505f90506003612416565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156123bd573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612410575f60019250925050612416565b91505f90505b94509492505050565b5f81600481111561243257612432612cb5565b0361243a5750565b600181600481111561244e5761244e612cb5565b036124b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109fa565b60028160048111156124c9576124c9612cb5565b03612530576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109fa565b600381600481111561254457612544612cb5565b03611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f756500000000000000000000000000000000000000000000000000000000000060648201526084016109fa565b6060813b600181116125f257505060408051602081019091525f8152919050565b806125fc81613067565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b600154831015611154576001546040517fb48978280000000000000000000000000000000000000000000000000000000081526109fa918591600401918252602082015260400190565b6060815160016126809190612eea565b8260405160200161269292919061309b565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff81168114611374575f80fd5b5f8083601f8401126126d9575f80fd5b50813567ffffffffffffffff8111156126f0575f80fd5b602083019150836020828501011115612707575f80fd5b9250929050565b5f805f805f805f8060c0898b031215612725575f80fd5b8835612730816126a8565b97506020890135612740816126a8565b96506040890135612750816126a8565b955060608901359450608089013567ffffffffffffffff80821115612773575f80fd5b61277f8c838d016126c9565b909650945060a08b0135915080821115612797575f80fd5b506127a48b828c016126c9565b999c989b5096995094979396929594505050565b5f602082840312156127c8575f80fd5b8135610c85816126a8565b5f805f805f608086880312156127e7575f80fd5b85356127f2816126a8565b94506020860135612802816126a8565b935060408601359250606086013567ffffffffffffffff811115612824575f80fd5b612830888289016126c9565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f83011261287d575f80fd5b813567ffffffffffffffff8082111561289857612898612841565b604051601f83017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019082821181831017156128de576128de612841565b816040528381528660208588010111156128f6575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215612926575f80fd5b82359150602083013567ffffffffffffffff811115612943575f80fd5b61294f8582860161286e565b9150509250929050565b5f805f6060848603121561296b575f80fd5b833567ffffffffffffffff811115612981575f80fd5b84016101608187031215612993575f80fd5b95602085013595506040909401359392505050565b5f805f80608085870312156129bb575f80fd5b84359350602085013567ffffffffffffffff8111156129d8575f80fd5b6129e48782880161286e565b93505060408501356129f5816126a8565b9396929550929360600135925050565b5f8060408385031215612a16575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b81811015612a5c57835183529284019291840191600101612a40565b50909695505050505050565b5f805f60608486031215612a7a575f80fd5b8335612a85816126a8565b9250602084013567ffffffffffffffff811115612aa0575f80fd5b612aac8682870161286e565b925050604084013590509250925092565b5f60208284031215612acd575f80fd5b5035919050565b5f60208284031215612ae4575f80fd5b813567ffffffffffffffff811115612afa575f80fd5b612b068482850161286e565b949350505050565b5f8083601f840112612b1e575f80fd5b50813567ffffffffffffffff811115612b35575f80fd5b6020830191508360208260051b8501011115612707575f80fd5b5f805f805f805f8060a0898b031215612b66575f80fd5b8835612b71816126a8565b97506020890135612b81816126a8565b9650604089013567ffffffffffffffff80821115612b9d575f80fd5b612ba98c838d01612b0e565b909850965060608b0135915080821115612bc1575f80fd5b612bcd8c838d01612b0e565b909650945060808b0135915080821115612797575f80fd5b5f805f805f60a08688031215612bf9575f80fd5b8535612c04816126a8565b945060208601359350604086013567ffffffffffffffff811115612c26575f80fd5b612c328882890161286e565b935050606086013560028110612c46575f80fd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610c856020830184612c57565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160038310612d1b577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f805f805f8060a08789031215612d36575f80fd5b8635612d41816126a8565b95506020870135612d51816126a8565b94506040870135935060608701359250608087013567ffffffffffffffff811115612d7a575f80fd5b612d8689828a016126c9565b979a9699509497509295939492505050565b828152604060208201525f612b066040830184612c57565b5f60208284031215612dc0575f80fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610c85575f80fd5b5f8060408385031215612e00575f80fd5b8251612e0b816126a8565b6020939093015192949293505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612e4e575f80fd5b83018035915067ffffffffffffffff821115612e68575f80fd5b602001915036819003821315612707575f80fd5b848152608060208201525f612e946080830186612c57565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610c6257610c62612ebd565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215612f3a575f80fd5b8151610c85816126a8565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f612f736060830185612c57565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fb357612fb3612ebd565b5060010190565b5f60808284031215612fca575f80fd5b6040516080810181811067ffffffffffffffff82111715612fed57612fed612841565b6040528251612ffb816126a8565b8152602083015161300b816126a8565b6020820152604083015161301e816126a8565b6040820152606083015163ffffffff81168114613039575f80fd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610c858284613045565b5f8161307557613075612ebd565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f612b06600f83018461304556fea26469706673582212201cd08849c6bb0bbad9e5b60bc3fd20a33581b199675f820e1d9898d2263963c164736f6c63430008190033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.25/AgentMechSubscription.json b/abis/0.8.25/AgentMechSubscription.json new file mode 100644 index 0000000..7db8529 --- /dev/null +++ b/abis/0.8.25/AgentMechSubscription.json @@ -0,0 +1,1202 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AgentMechSubscription", + "sourceName": "contracts/integrations/nevermined/AgentMechSubscription.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_registry", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_tokenId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_minCreditsPerRequest", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_subscriptionNFT", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_subscriptionTokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "_mechMarketplace", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "mechMarketplace", + "type": "address" + } + ], + "name": "MarketplaceExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "MarketplaceOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "NoDepositAllowed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "creditsBalance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minCreditsPerRequest", + "type": "uint256" + } + ], + "name": "NotEnoughCredits", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "RequestIdNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroSubscriptionAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroTokenId", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "Deliver", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "deliverPrice", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "creditsToBurn", + "type": "uint256" + } + ], + "name": "DeliverPrice", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "mechMarketplace", + "type": "address" + } + ], + "name": "MechMarketplaceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "price", + "type": "uint256" + } + ], + "name": "PriceUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "Request", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "RevokeRequest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "subscriptionNFT", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "subscriptionTokenId", + "type": "uint256" + } + ], + "name": "SubscriptionUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR_TYPE_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "chainId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "deliver", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "address", + "name": "mechStakingInstance", + "type": "address" + }, + { + "internalType": "uint256", + "name": "mechServiceId", + "type": "uint256" + } + ], + "name": "deliverToMarketplace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "entryPoint", + "outputs": [ + { + "internalType": "contract IEntryPoint", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "enum Enum.Operation", + "name": "operation", + "type": "uint8" + }, + { + "internalType": "uint256", + "name": "txGas", + "type": "uint256" + } + ], + "name": "exec", + "outputs": [ + { + "internalType": "bytes", + "name": "returnData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getDeliveriesCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "getRequestId", + "outputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "getRequestStatus", + "outputs": [ + { + "internalType": "enum AgentMech.RequestStatus", + "name": "status", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getRequestsCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "size", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + } + ], + "name": "getUndeliveredRequestIds", + "outputs": [ + { + "internalType": "uint256[]", + "name": "requestIds", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "signer", + "type": "address" + } + ], + "name": "isOperator", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "name": "isValidSignature", + "outputs": [ + { + "internalType": "bytes4", + "name": "magicValue", + "type": "bytes4" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapDeliveryCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapNonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapRequestAddresses", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapRequestCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapRequestIds", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapUndeliveredRequestsCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "mechMarketplace", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nonce", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numTotalDeliveries", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numTotalRequests", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numUndeliveredRequests", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "price", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "request", + "outputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "requestFromMarketplace", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "revokeRequest", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newPrice", + "type": "uint256" + } + ], + "name": "setPrice", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_subscriptionNFT", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_subscriptionTokenId", + "type": "uint256" + } + ], + "name": "setSubscription", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "initParams", + "type": "bytes" + } + ], + "name": "setUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "subscriptionNFT", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subscriptionTokenId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "token", + "outputs": [ + { + "internalType": "contract IERC721", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tokenId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "tokensReceived", + "outputs": [], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "initCode", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "callData", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "callGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "verificationGasLimit", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "preVerificationGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxFeePerGas", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxPriorityFeePerGas", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "paymasterAndData", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "signature", + "type": "bytes" + } + ], + "internalType": "struct UserOperation", + "name": "userOp", + "type": "tuple" + }, + { + "internalType": "bytes32", + "name": "userOpHash", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "missingAccountFunds", + "type": "uint256" + } + ], + "name": "validateUserOp", + "outputs": [ + { + "internalType": "uint256", + "name": "validationData", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x60c06040525f80556001600655348015610017575f80fd5b50604051613e3f380380613e3f833981016040819052610036916104ec565b8585858383835f82826040516020016100649291906001600160a01b03929092168252602082015260400190565b60408051601f19818403018152919052905061007f816101ee565b5050506001600160a01b0384166100a95760405163d92e233d60e01b815260040160405180910390fd5b6040516331a9108f60e11b8152600481018490525f906001600160a01b03861690636352211e90602401602060405180830381865afa1580156100ee573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101129190610547565b90506001600160a01b03811661014357604051630ede975960e01b8152600481018590526024015b60405180910390fd5b600580546001600160a01b0319166001600160a01b03841617905560018390554660a05261016f610250565b6080525050506001600160a01b03851691506101a0905057604051631f0f7ba560e11b815260040160405180910390fd5b815f036101c057604051631fed7fc560e01b815260040160405180910390fd5b50600d80546001600160a01b0319166001600160a01b039390931692909217909155600e555061062f915050565b6101f6610318565b51156102445760405162461bcd60e51b815260206004820152601360248201527f416c726561647920696e697469616c697a656400000000000000000000000000604482015260640161013a565b61024d81610380565b50565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d093525604051806040016040528060058152602001640312e312e360dc1b8152506040516020016102c19190610567565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b606061037b610376604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b610444565b905090565b5f61038a82610499565b90505f8151602083015ff090506103f0604051606b60f91b6020820152602560fa1b60218201526001600160601b03193060601b166022820152600160f81b60368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6001600160a01b0316816001600160a01b03161461043f5760405162461bcd60e51b815260206004820152600c60248201526b15dc9a5d194819985a5b195960a21b604482015260640161013a565b505050565b6060813b6001811161046557505060408051602081019091525f8152919050565b8061046f816105b0565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b6060815160016104a991906105c5565b826040516020016104bb9291906105de565b6040516020818303038152906040529050919050565b80516001600160a01b03811681146104e7575f80fd5b919050565b5f805f805f8060c08789031215610501575f80fd5b61050a876104d1565b95506020870151945060408701519350610526606088016104d1565b92506080870151915061053b60a088016104d1565b90509295509295509295565b5f60208284031215610557575f80fd5b610560826104d1565b9392505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b634e487b7160e01b5f52601160045260245ffd5b5f816105be576105be61059c565b505f190190565b808201808211156105d8576105d861059c565b92915050565b606360f81b815260e083901b6001600160e01b03191660018201526880600e6000396000f360b81b60058201525f600e820181905282518060208501600f85015e5f9201600f019182525092915050565b60805160a0516137e161065e5f395f8181610651015261194e01525f818161094e015261198301526137e15ff3fe6080604052600436106102cd575f3560e01c80639c5e95901161017b578063cbd6407a116100d1578063f23a6e6111610087578063f698da2511610062578063f698da251461093d578063fc0c546a14610970578063ffa1ad7414610984575f80fd5b8063f23a6e61146108a6578063f5dcb7bb146108eb578063f6171e441461091e575f80fd5b8063d8a4676f116100b7578063d8a4676f14610847578063e7d915cf14610873578063ed24911d14610892575f80fd5b8063cbd6407a146107db578063d843b7f414610806575f80fd5b8063affed0e011610131578063bc197c811161010c578063bc197c8114610753578063bdf863171461079a578063c7dec3fc146107af575f80fd5b8063affed0e014610707578063b0d691fe1461071a578063b94207d314610740575f80fd5b8063a035b1fe11610161578063a035b1fe146106be578063a4f9edbf146106d3578063a669aaf9146106f2575f80fd5b80639c5e9590146106735780639ec4a5bf1461069f575f80fd5b80634ada3e611161023057806385cf7244116101e657806391b7f5ed116101c157806391b7f5ed146105f6578063982c0db3146106155780639a8a059214610640575f80fd5b806385cf72441461054f578063878b1132146105a05780638fb847ef146105b5575f80fd5b80636d70f7ae116102165780636d70f7ae146104cc57806379412518146104fb5780637af734731461050e575f80fd5b80634ada3e611461048b57806358ce0909146104a0575f80fd5b806317d70f7c116102855780632ebfc9271161026b5780632ebfc9271461042e5780633a871cdd1461044d5780634954bbf11461046c575f80fd5b806317d70f7c146103ef5780631bbbeeb814610403575f80fd5b8063150b7a02116102b5578063150b7a021461033c578063157305fe146103b15780631626ba7e146103d0575f80fd5b806223de29146102d8578062427c54146102fe575f80fd5b366102d457005b5f80fd5b3480156102e3575f80fd5b506102fc6102f2366004612c80565b5050505050505050565b005b348015610309575f80fd5b50610329610318366004612d2a565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610347575f80fd5b50610380610356366004612d45565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610333565b3480156103bc575f80fd5b506102fc6103cb366004612ec6565b6109cc565b3480156103db575f80fd5b506103806103ea366004612ec6565b610b46565b3480156103fa575f80fd5b50610329610ce9565b34801561040e575f80fd5b5061032961041d366004612d2a565b60076020525f908152604090205481565b348015610439575f80fd5b506102fc610448366004612f0a565b610d0d565b348015610458575f80fd5b50610329610467366004612f34565b610ec6565b348015610477575f80fd5b506102fc610486366004612f83565b610f02565b348015610496575f80fd5b5061032960035481565b3480156104ab575f80fd5b506104bf6104ba366004612fe0565b6110e7565b6040516103339190613000565b3480156104d7575f80fd5b506104eb6104e6366004612d2a565b61123e565b6040519015158152602001610333565b6102fc610509366004613043565b611310565b348015610519575f80fd5b50610329610528366004612d2a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561055a575f80fd5b50600d5461057b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610333565b3480156105ab575f80fd5b50610329600e5481565b3480156105c0575f80fd5b506103296105cf366004612d2a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b348015610601575f80fd5b506102fc610610366004613098565b611393565b348015610620575f80fd5b5061032961062f366004612d2a565b60096020525f908152604090205481565b34801561064b575f80fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561067e575f80fd5b5060055461057b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106aa575f80fd5b506103296106b9366004613043565b611481565b3480156106c9575f80fd5b5061032960015481565b3480156106de575f80fd5b506102fc6106ed3660046130af565b611535565b3480156106fd575f80fd5b5061032960045481565b348015610712575f80fd5b505f54610329565b348015610725575f80fd5b50730576a174d229e3cfa37253523e645a78a0c91b5761057b565b61032961074e3660046130af565b6115b1565b34801561075e575f80fd5b5061038061076d36600461312a565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156107a5575f80fd5b5061032960025481565b3480156107ba575f80fd5b506107ce6107c93660046131c0565b61166c565b604051610333919061327e565b3480156107e6575f80fd5b506103296107f5366004612d2a565b600c6020525f908152604090205481565b348015610811575f80fd5b5061057b610820366004613098565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015610852575f80fd5b50610866610861366004613098565b611756565b60405161033391906132bd565b34801561087e575f80fd5b506102fc61088d366004613098565b61182b565b34801561089d575f80fd5b5061032961194b565b3480156108b1575f80fd5b506103806108c03660046132fc565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b3480156108f6575f80fd5b506103297f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b348015610929575f80fd5b50610329610938366004612fe0565b6119a5565b348015610948575f80fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561097b575f80fd5b5061057b6119c7565b34801561098f575f80fd5b506107ce6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109d53361123e565b806109f3575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610ac1576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610b32576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a7b565b610b3c82826119e4565b5050600160065550565b5f805f80610b6685602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610c7c5782858301602001610b878261123e565b158015610baa575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610bdd57507fffffffff000000000000000000000000000000000000000000000000000000009450610ce39350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610c31908b908590600401613373565b602060405180830381865afa158015610c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c70919061338b565b95505050505050610ce3565b610c8b6104e687838686611bd4565b15610cbc57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610ce3915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f80610cf3611bf0565b806020019051810190610d0691906133ca565b9392505050565b610d163361123e565b80610d34575033730576a174d229e3cfa37253523e645a78a0c91b57145b610dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b73ffffffffffffffffffffffffffffffffffffffff8216610e0d576040517f3e1ef74a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03610e46576040517f1fed7fc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155600e8290556040518281527fa739b38899b4a928ed52e053d6cad069a2f5e76ebeea63aa310f9595e28c5f20906020015b60405180910390a25050565b5f610ecf611cbf565b610ed98484611d3e565b9050610ee860408501856133f6565b90505f03610ef957610ef984611e12565b610d0682611e90565b610f0b3361123e565b80610f29575033730576a174d229e3cfa37253523e645a78a0c91b57145b610fb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b60016006541115610ff2576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16611046576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61105185856119e4565b6005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906356d0819e906110ae908890859088908890600401613457565b5f604051808303815f87803b1580156110c5575f80fd5b505af11580156110d7573d5f803e3d5ffd5b5050600160065550505050505050565b6002546060905f8490036110f9578093505b8061110484866134c5565b11156111515761111483856134c5565b6040517f7ae59685000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610a7b565b8315611237578367ffffffffffffffff81111561117057611170612db3565b604051908082528060200260200182016040528015611199578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b848110156111ec575f828152600a602052604090206001015491506001016111c9565b505f5b85811015611234578184828151811061120a5761120a6134d8565b6020908102919091018101919091525f838152600a909152604090206001015491506001016111ef565b50505b5092915050565b5f805f611249611bf0565b80602001905181019061125c91906133ca565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016112b291815260200190565b602060405180830381865afa1580156112cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f19190613505565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611383576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610a7b565b61138e838383611f04565b505050565b61139c3361123e565b806113ba575033730576a174d229e3cfa37253523e645a78a0c91b57145b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61148a61194b565b84848460405160200161149f93929190613520565b604051602081830303815290604052805190602001206040516020016114f79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61153d611bf0565b51156115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610a7b565b6115ae816120ac565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff161561161f576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a7b565b335f818152600c602052604090205461163a91908490611481565b335f908152600c602052604081208054929350906116578361355e565b9190505550611667338383611f04565b919050565b60606116773361123e565b80611695575033730576a174d229e3cfa37253523e645a78a0c91b57145b611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b5f61173b878787878715611735578761221c565b5a61221c565b925090508061174c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611667575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161179d5750505050509050805f600281106117c9576117c96134d8565b60200201511580156117dd57506020810151155b801561181257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156118205760029150611825565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461189e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610a7b565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806118f9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611903818361231f565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd083604051610eba91815260200190565b5f7f000000000000000000000000000000000000000000000000000000000000000046146119805761197b612472565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f2081600281106119be575f80fd5b01549150829050565b5f806119d1611bf0565b806020019051810190610ce39190613505565b5f828152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1680611b1c5760055473ffffffffffffffffffffffffffffffffffffffff1615611ac7576005546040517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff9091169063f2e433bf906024016080604051808303815f875af1158015611a9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac09190613595565b6040015190505b73ffffffffffffffffffffffffffffffffffffffff8116611b17576040517ffe23980400000000000000000000000000000000000000000000000000000000815260048101859052602401610a7b565b611b26565b611b26818561231f565b611b31818585612570565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260408120805492945090611b648361355e565b909155505060048054905f611b788361355e565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b708584604051611bc5929190613373565b60405180910390a25092915050565b5f805f611be38787878761275c565b9150915061174c81612844565b606061197b611cba6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6129f6565b33730576a174d229e3cfa37253523e645a78a0c91b5714611d3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610a7b565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611dd882611d9f6101408801886133f6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b4692505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611e09576001915050610ce3565b505f9392505050565b5f805460208301359180611e258361355e565b91905055146115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e6365000000000000000000000000000000000000006044820152606401610a7b565b80156115ae576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611ef8576040519150601f19603f3d011682016040523d82523d5f602084013e611efd565b606091505b5050505050565b611f0f348284612a4b565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611f3f8361355e565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611f748361355e565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e39492939290919061203b8361355e565b909155505060038054905f61204f8361355e565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc858760405161209c929190613373565b60405180910390a2505050505050565b5f6120b682612be2565b90505f8151602083015ff090506121886040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c656400000000000000000000000000000000000000006044820152606401610a7b565b5f6060600184600181111561223357612233613290565b036122a7578673ffffffffffffffffffffffffffffffffffffffff16838660405161225e9190613637565b5f604051808303818686f4925050503d805f8114612297576040519150601f19603f3d011682016040523d82523d5f602084013e61229c565b606091505b509092509050612315565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516122ce9190613637565b5f60405180830381858888f193505050503d805f8114612309576040519150601f19603f3d011682016040523d82523d5f602084013e61230e565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812080549161234f83613642565b909155505060028054905f61236383613642565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116123865750505050509050805f600281106123b2576123b26134d8565b60200201511580156123c657506020810151155b80156123fb57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612435576040517ffe23980400000000000000000000000000000000000000000000000000000000815260048101839052602401610a7b565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016124fb919061327e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6060600160065411156125af576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065581515f906125cb9084016020908101908501613676565b600d54600e546040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201929092529295509293505f92169062fdd58e90604401602060405180830381865afa158015612648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266c91906136f5565b9050818181111561267a5750805b801561271257600d54600e546040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201929092526044810184905291169063f5298aca906064015f604051808303815f87803b1580156126fb575f80fd5b505af115801561270d573d5f803e3d5ffd5b505050505b604080518481526020810183905287917fc618cebcfec26828410db514432d580b183e1e3e9e97cc6ab5ef9922b0a1c4c1910160405180910390a250506001600655509392505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561279157505f9050600361283b565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e2573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612835575f6001925092505061283b565b91505f90505b94509492505050565b5f81600481111561285757612857613290565b0361285f5750565b600181600481111561287357612873613290565b036128da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a7b565b60028160048111156128ee576128ee613290565b03612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a7b565b600381600481111561296957612969613290565b036115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a7b565b6060813b60018111612a1757505060408051602081019091525f8152919050565b80612a2181613642565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60016006541115612a88576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026006558215612ac8576040517f0f0fe74c00000000000000000000000000000000000000000000000000000000815260048101849052602401610a7b565b600d54600e546040517efdd58e00000000000000000000000000000000000000000000000000000000815233600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015612b3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6191906136f5565b335f9081526009602052604081205460018054939450909290612b859084906134c5565b612b8f919061370c565b905080831015612bd5576040517facff13ae0000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610a7b565b5050600160065550505050565b606081516001612bf291906134c5565b82604051602001612c04929190613723565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff811681146115ae575f80fd5b5f8083601f840112612c4b575f80fd5b50813567ffffffffffffffff811115612c62575f80fd5b602083019150836020828501011115612c79575f80fd5b9250929050565b5f805f805f805f8060c0898b031215612c97575f80fd5b8835612ca281612c1a565b97506020890135612cb281612c1a565b96506040890135612cc281612c1a565b955060608901359450608089013567ffffffffffffffff80821115612ce5575f80fd5b612cf18c838d01612c3b565b909650945060a08b0135915080821115612d09575f80fd5b50612d168b828c01612c3b565b999c989b5096995094979396929594505050565b5f60208284031215612d3a575f80fd5b8135610d0681612c1a565b5f805f805f60808688031215612d59575f80fd5b8535612d6481612c1a565b94506020860135612d7481612c1a565b935060408601359250606086013567ffffffffffffffff811115612d96575f80fd5b612da288828901612c3b565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e2757612e27612db3565b604052919050565b5f67ffffffffffffffff821115612e4857612e48612db3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112612e83575f80fd5b8135612e96612e9182612e2f565b612de0565b818152846020838601011115612eaa575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215612ed7575f80fd5b82359150602083013567ffffffffffffffff811115612ef4575f80fd5b612f0085828601612e74565b9150509250929050565b5f8060408385031215612f1b575f80fd5b8235612f2681612c1a565b946020939093013593505050565b5f805f60608486031215612f46575f80fd5b833567ffffffffffffffff811115612f5c575f80fd5b84016101608187031215612f6e575f80fd5b95602085013595506040909401359392505050565b5f805f8060808587031215612f96575f80fd5b84359350602085013567ffffffffffffffff811115612fb3575f80fd5b612fbf87828801612e74565b9350506040850135612fd081612c1a565b9396929550929360600135925050565b5f8060408385031215612ff1575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b818110156130375783518352928401929184019160010161301b565b50909695505050505050565b5f805f60608486031215613055575f80fd5b833561306081612c1a565b9250602084013567ffffffffffffffff81111561307b575f80fd5b61308786828701612e74565b925050604084013590509250925092565b5f602082840312156130a8575f80fd5b5035919050565b5f602082840312156130bf575f80fd5b813567ffffffffffffffff8111156130d5575f80fd5b6130e184828501612e74565b949350505050565b5f8083601f8401126130f9575f80fd5b50813567ffffffffffffffff811115613110575f80fd5b6020830191508360208260051b8501011115612c79575f80fd5b5f805f805f805f8060a0898b031215613141575f80fd5b883561314c81612c1a565b9750602089013561315c81612c1a565b9650604089013567ffffffffffffffff80821115613178575f80fd5b6131848c838d016130e9565b909850965060608b013591508082111561319c575f80fd5b6131a88c838d016130e9565b909650945060808b0135915080821115612d09575f80fd5b5f805f805f60a086880312156131d4575f80fd5b85356131df81612c1a565b945060208601359350604086013567ffffffffffffffff811115613201575f80fd5b61320d88828901612e74565b935050606086013560028110613221575f80fd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610d066020830184613232565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60208101600383106132f6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f805f805f8060a08789031215613311575f80fd5b863561331c81612c1a565b9550602087013561332c81612c1a565b94506040870135935060608701359250608087013567ffffffffffffffff811115613355575f80fd5b61336189828a01612c3b565b979a9699509497509295939492505050565b828152604060208201525f6130e16040830184613232565b5f6020828403121561339b575f80fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610d06575f80fd5b5f80604083850312156133db575f80fd5b82516133e681612c1a565b6020939093015192949293505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613429575f80fd5b83018035915067ffffffffffffffff821115613443575f80fd5b602001915036819003821315612c79575f80fd5b848152608060208201525f61346f6080830186613232565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610ce357610ce3613498565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215613515575f80fd5b8151610d0681612c1a565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f61354e6060830185613232565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358e5761358e613498565b5060010190565b5f608082840312156135a5575f80fd5b6040516080810181811067ffffffffffffffff821117156135c8576135c8612db3565b60405282516135d681612c1a565b815260208301516135e681612c1a565b602082015260408301516135f981612c1a565b6040820152606083015163ffffffff81168114613614575f80fd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610d068284613620565b5f8161365057613650613498565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8060408385031215613687575f80fd5b82519150602083015167ffffffffffffffff8111156136a4575f80fd5b8301601f810185136136b4575f80fd5b80516136c2612e9182612e2f565b8181528660208385010111156136d6575f80fd5b8160208401602083015e5f602083830101528093505050509250929050565b5f60208284031215613705575f80fd5b5051919050565b8082028115828204841417610ce357610ce3613498565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f6130e1600f83018461362056fea2646970667358221220b69d0d2f43cba0bbdf8f7740bd7daf3d66080b5d267f8439fc3baa25a7b3367e64736f6c63430008190033", + "deployedBytecode": "0x6080604052600436106102cd575f3560e01c80639c5e95901161017b578063cbd6407a116100d1578063f23a6e6111610087578063f698da2511610062578063f698da251461093d578063fc0c546a14610970578063ffa1ad7414610984575f80fd5b8063f23a6e61146108a6578063f5dcb7bb146108eb578063f6171e441461091e575f80fd5b8063d8a4676f116100b7578063d8a4676f14610847578063e7d915cf14610873578063ed24911d14610892575f80fd5b8063cbd6407a146107db578063d843b7f414610806575f80fd5b8063affed0e011610131578063bc197c811161010c578063bc197c8114610753578063bdf863171461079a578063c7dec3fc146107af575f80fd5b8063affed0e014610707578063b0d691fe1461071a578063b94207d314610740575f80fd5b8063a035b1fe11610161578063a035b1fe146106be578063a4f9edbf146106d3578063a669aaf9146106f2575f80fd5b80639c5e9590146106735780639ec4a5bf1461069f575f80fd5b80634ada3e611161023057806385cf7244116101e657806391b7f5ed116101c157806391b7f5ed146105f6578063982c0db3146106155780639a8a059214610640575f80fd5b806385cf72441461054f578063878b1132146105a05780638fb847ef146105b5575f80fd5b80636d70f7ae116102165780636d70f7ae146104cc57806379412518146104fb5780637af734731461050e575f80fd5b80634ada3e611461048b57806358ce0909146104a0575f80fd5b806317d70f7c116102855780632ebfc9271161026b5780632ebfc9271461042e5780633a871cdd1461044d5780634954bbf11461046c575f80fd5b806317d70f7c146103ef5780631bbbeeb814610403575f80fd5b8063150b7a02116102b5578063150b7a021461033c578063157305fe146103b15780631626ba7e146103d0575f80fd5b806223de29146102d8578062427c54146102fe575f80fd5b366102d457005b5f80fd5b3480156102e3575f80fd5b506102fc6102f2366004612c80565b5050505050505050565b005b348015610309575f80fd5b50610329610318366004612d2a565b60086020525f908152604090205481565b6040519081526020015b60405180910390f35b348015610347575f80fd5b50610380610356366004612d45565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610333565b3480156103bc575f80fd5b506102fc6103cb366004612ec6565b6109cc565b3480156103db575f80fd5b506103806103ea366004612ec6565b610b46565b3480156103fa575f80fd5b50610329610ce9565b34801561040e575f80fd5b5061032961041d366004612d2a565b60076020525f908152604090205481565b348015610439575f80fd5b506102fc610448366004612f0a565b610d0d565b348015610458575f80fd5b50610329610467366004612f34565b610ec6565b348015610477575f80fd5b506102fc610486366004612f83565b610f02565b348015610496575f80fd5b5061032960035481565b3480156104ab575f80fd5b506104bf6104ba366004612fe0565b6110e7565b6040516103339190613000565b3480156104d7575f80fd5b506104eb6104e6366004612d2a565b61123e565b6040519015158152602001610333565b6102fc610509366004613043565b611310565b348015610519575f80fd5b50610329610528366004612d2a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526007602052604090205490565b34801561055a575f80fd5b50600d5461057b9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610333565b3480156105ab575f80fd5b50610329600e5481565b3480156105c0575f80fd5b506103296105cf366004612d2a565b73ffffffffffffffffffffffffffffffffffffffff165f9081526008602052604090205490565b348015610601575f80fd5b506102fc610610366004613098565b611393565b348015610620575f80fd5b5061032961062f366004612d2a565b60096020525f908152604090205481565b34801561064b575f80fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561067e575f80fd5b5060055461057b9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106aa575f80fd5b506103296106b9366004613043565b611481565b3480156106c9575f80fd5b5061032960015481565b3480156106de575f80fd5b506102fc6106ed3660046130af565b611535565b3480156106fd575f80fd5b5061032960045481565b348015610712575f80fd5b505f54610329565b348015610725575f80fd5b50730576a174d229e3cfa37253523e645a78a0c91b5761057b565b61032961074e3660046130af565b6115b1565b34801561075e575f80fd5b5061038061076d36600461312a565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b3480156107a5575f80fd5b5061032960025481565b3480156107ba575f80fd5b506107ce6107c93660046131c0565b61166c565b604051610333919061327e565b3480156107e6575f80fd5b506103296107f5366004612d2a565b600c6020525f908152604090205481565b348015610811575f80fd5b5061057b610820366004613098565b600b6020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b348015610852575f80fd5b50610866610861366004613098565b611756565b60405161033391906132bd565b34801561087e575f80fd5b506102fc61088d366004613098565b61182b565b34801561089d575f80fd5b5061032961194b565b3480156108b1575f80fd5b506103806108c03660046132fc565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b3480156108f6575f80fd5b506103297f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b348015610929575f80fd5b50610329610938366004612fe0565b6119a5565b348015610948575f80fd5b506103297f000000000000000000000000000000000000000000000000000000000000000081565b34801561097b575f80fd5b5061057b6119c7565b34801561098f575f80fd5b506107ce6040518060400160405280600581526020017f312e312e3000000000000000000000000000000000000000000000000000000081525081565b6109d53361123e565b806109f3575033730576a174d229e3cfa37253523e645a78a0c91b57145b610a84576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e7472616374000060648201526084015b60405180910390fd5b60016006541115610ac1576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff1615610b32576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a7b565b610b3c82826119e4565b5050600160065550565b5f805f80610b6685602081015160408201516060909201515f1a92909190565b9094509250905060ff81165f03610c7c5782858301602001610b878261123e565b158015610baa575073ffffffffffffffffffffffffffffffffffffffff82163014155b15610bdd57507fffffffff000000000000000000000000000000000000000000000000000000009450610ce39350505050565b6040517f1626ba7e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690631626ba7e90610c31908b908590600401613373565b602060405180830381865afa158015610c4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c70919061338b565b95505050505050610ce3565b610c8b6104e687838686611bd4565b15610cbc57507f1626ba7e000000000000000000000000000000000000000000000000000000009250610ce3915050565b507fffffffff00000000000000000000000000000000000000000000000000000000925050505b92915050565b5f80610cf3611bf0565b806020019051810190610d0691906133ca565b9392505050565b610d163361123e565b80610d34575033730576a174d229e3cfa37253523e645a78a0c91b57145b610dc0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b73ffffffffffffffffffffffffffffffffffffffff8216610e0d576040517f3e1ef74a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f03610e46576040517f1fed7fc500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600d80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155600e8290556040518281527fa739b38899b4a928ed52e053d6cad069a2f5e76ebeea63aa310f9595e28c5f20906020015b60405180910390a25050565b5f610ecf611cbf565b610ed98484611d3e565b9050610ee860408501856133f6565b90505f03610ef957610ef984611e12565b610d0682611e90565b610f0b3361123e565b80610f29575033730576a174d229e3cfa37253523e645a78a0c91b57145b610fb5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b60016006541115610ff2576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065560055473ffffffffffffffffffffffffffffffffffffffff16611046576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61105185856119e4565b6005546040517f56d0819e00000000000000000000000000000000000000000000000000000000815291925073ffffffffffffffffffffffffffffffffffffffff16906356d0819e906110ae908890859088908890600401613457565b5f604051808303815f87803b1580156110c5575f80fd5b505af11580156110d7573d5f803e3d5ffd5b5050600160065550505050505050565b6002546060905f8490036110f9578093505b8061110484866134c5565b11156111515761111483856134c5565b6040517f7ae59685000000000000000000000000000000000000000000000000000000008152600481019190915260248101829052604401610a7b565b8315611237578367ffffffffffffffff81111561117057611170612db3565b604051908082528060200260200182016040528015611199578160200160208202803683370190505b505f808052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e4549193505b848110156111ec575f828152600a602052604090206001015491506001016111c9565b505f5b85811015611234578184828151811061120a5761120a6134d8565b6020908102919091018101919091525f838152600a909152604090206001015491506001016111ef565b50505b5092915050565b5f805f611249611bf0565b80602001905181019061125c91906133ca565b915091508373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016112b291815260200190565b602060405180830381865afa1580156112cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f19190613505565b73ffffffffffffffffffffffffffffffffffffffff1614949350505050565b60055473ffffffffffffffffffffffffffffffffffffffff163314611383576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610a7b565b61138e838383611f04565b505050565b61139c3361123e565b806113ba575033730576a174d229e3cfa37253523e645a78a0c91b57145b611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b60018190556040518181527f66cbca4f3c64fecf1dcb9ce094abcf7f68c3450a1d4e3a8e917dd621edb4ebe09060200160405180910390a150565b5f61148a61194b565b84848460405160200161149f93929190613520565b604051602081830303815290604052805190602001206040516020016114f79291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b61153d611bf0565b51156115a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f416c726561647920696e697469616c697a6564000000000000000000000000006044820152606401610a7b565b6115ae816120ac565b50565b6005545f9073ffffffffffffffffffffffffffffffffffffffff161561161f576005546040517f4b6c692700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610a7b565b335f818152600c602052604090205461163a91908490611481565b335f908152600c602052604081208054929350906116578361355e565b9190505550611667338383611f04565b919050565b60606116773361123e565b80611695575033730576a174d229e3cfa37253523e645a78a0c91b57145b611721576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603e60248201527f4f6e6c792063616c6c61626c6520627920746865206d656368206f706572617460448201527f6f72206f722074686520656e74727920706f696e7420636f6e747261637400006064820152608401610a7b565b5f61173b878787878715611735578761221c565b5a61221c565b925090508061174c57815160208301fd5b5095945050505050565b5f818152600b602052604081205473ffffffffffffffffffffffffffffffffffffffff1615611667575f828152600a60205260408082208151808301928390529160029082845b81548152602001906001019080831161179d5750505050509050805f600281106117c9576117c96134d8565b60200201511580156117dd57506020810151155b801561181257505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548314155b156118205760029150611825565b600191505b50919050565b60055473ffffffffffffffffffffffffffffffffffffffff16331461189e576005546040517fe56895c000000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610a7b565b5f818152600b602052604090205473ffffffffffffffffffffffffffffffffffffffff16806118f9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611903818361231f565b8073ffffffffffffffffffffffffffffffffffffffff167fa36a540c5fea3a5e69d4b1c2247b28a93fd183ef1314af26a8db7b3ae080bcd083604051610eba91815260200190565b5f7f000000000000000000000000000000000000000000000000000000000000000046146119805761197b612472565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600a602052815f5260405f2081600281106119be575f80fd5b01549150829050565b5f806119d1611bf0565b806020019051810190610ce39190613505565b5f828152600b602052604090205460609073ffffffffffffffffffffffffffffffffffffffff1680611b1c5760055473ffffffffffffffffffffffffffffffffffffffff1615611ac7576005546040517ff2e433bf0000000000000000000000000000000000000000000000000000000081526004810186905273ffffffffffffffffffffffffffffffffffffffff9091169063f2e433bf906024016080604051808303815f875af1158015611a9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ac09190613595565b6040015190505b73ffffffffffffffffffffffffffffffffffffffff8116611b17576040517ffe23980400000000000000000000000000000000000000000000000000000000815260048101859052602401610a7b565b611b26565b611b26818561231f565b611b31818585612570565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600860205260408120805492945090611b648361355e565b909155505060048054905f611b788361355e565b91905055503373ffffffffffffffffffffffffffffffffffffffff167f0cd979445339c62199996f208428d987b1cea24d18e62b79ec24d94b636e8b708584604051611bc5929190613373565b60405180910390a25092915050565b5f805f611be38787878761275c565b9150915061174c81612844565b606061197b611cba6040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b6129f6565b33730576a174d229e3cfa37253523e645a78a0c91b5714611d3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610a7b565b565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000005f908152601c829052603c81207f1626ba7e00000000000000000000000000000000000000000000000000000000611dd882611d9f6101408801886133f6565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250610b4692505050565b7fffffffff000000000000000000000000000000000000000000000000000000001614611e09576001915050610ce3565b505f9392505050565b5f805460208301359180611e258361355e565b91905055146115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f496e76616c6964206e6f6e6365000000000000000000000000000000000000006044820152606401610a7b565b80156115ae576040515f9033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d805f8114611ef8576040519150601f19603f3d011682016040523d82523d5f602084013e611efd565b606091505b5050505050565b611f0f348284612a4b565b73ffffffffffffffffffffffffffffffffffffffff83165f908152600760205260408120805491611f3f8361355e565b909155505073ffffffffffffffffffffffffffffffffffffffff83165f908152600960205260408120805491611f748361355e565b90915550505f818152600b6020908152604080832080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8816179055600a9091528082207f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e480546001830181905590859055808452918320849055600280547f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e39492939290919061203b8361355e565b909155505060038054905f61204f8361355e565b91905055508573ffffffffffffffffffffffffffffffffffffffff167f4bda649efe6b98b0f9c1d5e859c29e20910f45c66dabfe6fad4a4881f7faf9cc858760405161209c929190613373565b60405180910390a2505050505050565b5f6120b682612be2565b90505f8151602083015ff090506121886040517fd60000000000000000000000000000000000000000000000000000000000000060208201527f940000000000000000000000000000000000000000000000000000000000000060218201527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000003060601b1660228201527f010000000000000000000000000000000000000000000000000000000000000060368201525f90603701604051602081830303815290604052805190602001205f1c905090565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461138e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5772697465206661696c656400000000000000000000000000000000000000006044820152606401610a7b565b5f6060600184600181111561223357612233613290565b036122a7578673ffffffffffffffffffffffffffffffffffffffff16838660405161225e9190613637565b5f604051808303818686f4925050503d805f8114612297576040519150601f19603f3d011682016040523d82523d5f602084013e61229c565b606091505b509092509050612315565b8673ffffffffffffffffffffffffffffffffffffffff168387876040516122ce9190613637565b5f60405180830381858888f193505050503d805f8114612309576040519150601f19603f3d011682016040523d82523d5f602084013e61230e565b606091505b5090925090505b9550959350505050565b73ffffffffffffffffffffffffffffffffffffffff82165f90815260096020526040812080549161234f83613642565b909155505060028054905f61236383613642565b90915550505f818152600a60205260408082208151808301928390529160029082845b8154815260200190600101908083116123865750505050509050805f600281106123b2576123b26134d8565b60200201511580156123c657506020810151155b80156123fb57505f8052600a6020527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e3548214155b15612435576040517ffe23980400000000000000000000000000000000000000000000000000000000815260048101839052602401610a7b565b6020818101805183515f908152600a9093526040808420600190810192909255935191518352838320919091559281529081208181559091015550565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f493aeac1d921aa02a044029e7fe4be43b1a4e80b40706fa5819e8fbb0d0935256040518060400160405280600581526020017f312e312e300000000000000000000000000000000000000000000000000000008152506040516020016124fb919061327e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b6060600160065411156125af576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260065581515f906125cb9084016020908101908501613676565b600d54600e546040517efdd58e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201929092529295509293505f92169062fdd58e90604401602060405180830381865afa158015612648573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061266c91906136f5565b9050818181111561267a5750805b801561271257600d54600e546040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a8116600483015260248201929092526044810184905291169063f5298aca906064015f604051808303815f87803b1580156126fb575f80fd5b505af115801561270d573d5f803e3d5ffd5b505050505b604080518481526020810183905287917fc618cebcfec26828410db514432d580b183e1e3e9e97cc6ab5ef9922b0a1c4c1910160405180910390a250506001600655509392505050565b5f807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561279157505f9050600361283b565b604080515f8082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156127e2573d5f803e3d5ffd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116612835575f6001925092505061283b565b91505f90505b94509492505050565b5f81600481111561285757612857613290565b0361285f5750565b600181600481111561287357612873613290565b036128da576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a7b565b60028160048111156128ee576128ee613290565b03612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a7b565b600381600481111561296957612969613290565b036115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152608401610a7b565b6060813b60018111612a1757505060408051602081019091525f8152919050565b80612a2181613642565b9150506040519150601f19601f602083010116820160405280825280600160208401853c50919050565b60016006541115612a88576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026006558215612ac8576040517f0f0fe74c00000000000000000000000000000000000000000000000000000000815260048101849052602401610a7b565b600d54600e546040517efdd58e00000000000000000000000000000000000000000000000000000000815233600482015260248101919091525f9173ffffffffffffffffffffffffffffffffffffffff169062fdd58e90604401602060405180830381865afa158015612b3d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b6191906136f5565b335f9081526009602052604081205460018054939450909290612b859084906134c5565b612b8f919061370c565b905080831015612bd5576040517facff13ae0000000000000000000000000000000000000000000000000000000081526004810184905260248101829052604401610a7b565b5050600160065550505050565b606081516001612bf291906134c5565b82604051602001612c04929190613723565b6040516020818303038152906040529050919050565b73ffffffffffffffffffffffffffffffffffffffff811681146115ae575f80fd5b5f8083601f840112612c4b575f80fd5b50813567ffffffffffffffff811115612c62575f80fd5b602083019150836020828501011115612c79575f80fd5b9250929050565b5f805f805f805f8060c0898b031215612c97575f80fd5b8835612ca281612c1a565b97506020890135612cb281612c1a565b96506040890135612cc281612c1a565b955060608901359450608089013567ffffffffffffffff80821115612ce5575f80fd5b612cf18c838d01612c3b565b909650945060a08b0135915080821115612d09575f80fd5b50612d168b828c01612c3b565b999c989b5096995094979396929594505050565b5f60208284031215612d3a575f80fd5b8135610d0681612c1a565b5f805f805f60808688031215612d59575f80fd5b8535612d6481612c1a565b94506020860135612d7481612c1a565b935060408601359250606086013567ffffffffffffffff811115612d96575f80fd5b612da288828901612c3b565b969995985093965092949392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612e2757612e27612db3565b604052919050565b5f67ffffffffffffffff821115612e4857612e48612db3565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f830112612e83575f80fd5b8135612e96612e9182612e2f565b612de0565b818152846020838601011115612eaa575f80fd5b816020850160208301375f918101602001919091529392505050565b5f8060408385031215612ed7575f80fd5b82359150602083013567ffffffffffffffff811115612ef4575f80fd5b612f0085828601612e74565b9150509250929050565b5f8060408385031215612f1b575f80fd5b8235612f2681612c1a565b946020939093013593505050565b5f805f60608486031215612f46575f80fd5b833567ffffffffffffffff811115612f5c575f80fd5b84016101608187031215612f6e575f80fd5b95602085013595506040909401359392505050565b5f805f8060808587031215612f96575f80fd5b84359350602085013567ffffffffffffffff811115612fb3575f80fd5b612fbf87828801612e74565b9350506040850135612fd081612c1a565b9396929550929360600135925050565b5f8060408385031215612ff1575f80fd5b50508035926020909101359150565b602080825282518282018190525f9190848201906040850190845b818110156130375783518352928401929184019160010161301b565b50909695505050505050565b5f805f60608486031215613055575f80fd5b833561306081612c1a565b9250602084013567ffffffffffffffff81111561307b575f80fd5b61308786828701612e74565b925050604084013590509250925092565b5f602082840312156130a8575f80fd5b5035919050565b5f602082840312156130bf575f80fd5b813567ffffffffffffffff8111156130d5575f80fd5b6130e184828501612e74565b949350505050565b5f8083601f8401126130f9575f80fd5b50813567ffffffffffffffff811115613110575f80fd5b6020830191508360208260051b8501011115612c79575f80fd5b5f805f805f805f8060a0898b031215613141575f80fd5b883561314c81612c1a565b9750602089013561315c81612c1a565b9650604089013567ffffffffffffffff80821115613178575f80fd5b6131848c838d016130e9565b909850965060608b013591508082111561319c575f80fd5b6131a88c838d016130e9565b909650945060808b0135915080821115612d09575f80fd5b5f805f805f60a086880312156131d4575f80fd5b85356131df81612c1a565b945060208601359350604086013567ffffffffffffffff811115613201575f80fd5b61320d88828901612e74565b935050606086013560028110613221575f80fd5b949793965091946080013592915050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f610d066020830184613232565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60208101600383106132f6577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f805f805f8060a08789031215613311575f80fd5b863561331c81612c1a565b9550602087013561332c81612c1a565b94506040870135935060608701359250608087013567ffffffffffffffff811115613355575f80fd5b61336189828a01612c3b565b979a9699509497509295939492505050565b828152604060208201525f6130e16040830184613232565b5f6020828403121561339b575f80fd5b81517fffffffff0000000000000000000000000000000000000000000000000000000081168114610d06575f80fd5b5f80604083850312156133db575f80fd5b82516133e681612c1a565b6020939093015192949293505050565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112613429575f80fd5b83018035915067ffffffffffffffff821115613443575f80fd5b602001915036819003821315612c79575f80fd5b848152608060208201525f61346f6080830186613232565b73ffffffffffffffffffffffffffffffffffffffff949094166040830152506060015292915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b80820180821115610ce357610ce3613498565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f60208284031215613515575f80fd5b8151610d0681612c1a565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f61354e6060830185613232565b9050826040830152949350505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358e5761358e613498565b5060010190565b5f608082840312156135a5575f80fd5b6040516080810181811067ffffffffffffffff821117156135c8576135c8612db3565b60405282516135d681612c1a565b815260208301516135e681612c1a565b602082015260408301516135f981612c1a565b6040820152606083015163ffffffff81168114613614575f80fd5b60608201529392505050565b5f81518060208401855e5f93019283525090919050565b5f610d068284613620565b5f8161365057613650613498565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f8060408385031215613687575f80fd5b82519150602083015167ffffffffffffffff8111156136a4575f80fd5b8301601f810185136136b4575f80fd5b80516136c2612e9182612e2f565b8181528660208385010111156136d6575f80fd5b8160208401602083015e5f602083830101528093505050509250929050565b5f60208284031215613705575f80fd5b5051919050565b8082028115828204841417610ce357610ce3613498565b7f630000000000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000008360e01b1660018201527f80600e6000396000f3000000000000000000000000000000000000000000000060058201525f600e8201525f6130e1600f83018461362056fea2646970667358221220b69d0d2f43cba0bbdf8f7740bd7daf3d66080b5d267f8439fc3baa25a7b3367e64736f6c63430008190033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.25/AgentRegistry.json b/abis/0.8.25/AgentRegistry.json new file mode 100644 index 0000000..4b273b8 --- /dev/null +++ b/abis/0.8.25/AgentRegistry.json @@ -0,0 +1,1046 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "AgentRegistry", + "sourceName": "contracts/AgentRegistry.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_name", + "type": "string" + }, + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "string", + "name": "_baseURI", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "AgentInstanceRegistered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentInstancesSlotsFilled", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "AgentNotFound", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "AgentNotInService", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "componentId", + "type": "uint256" + } + ], + "name": "ComponentNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "HashExists", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectAgentBondingValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "sent", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "IncorrectRegistrationDepositValue", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "provided", + "type": "address" + }, + { + "internalType": "address", + "name": "expected", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OnlyOwnServiceMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "OperatorHasNoInstances", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "OperatorOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [], + "name": "Paused", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceMustBeInactive", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "multisig", + "type": "address" + } + ], + "name": "UnauthorizedMultisig", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "WrongAgentId", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "state", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "WrongServiceState", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "currentThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "minThreshold", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "maxThreshold", + "type": "uint256" + } + ], + "name": "WrongThreshold", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "baseURI", + "type": "string" + } + ], + "name": "BaseURIChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "agentHash", + "type": "bytes32" + } + ], + "name": "CreateAgent", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "manager", + "type": "address" + } + ], + "name": "ManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "agentHash", + "type": "bytes32" + } + ], + "name": "UpdateAgentHash", + "type": "event" + }, + { + "inputs": [], + "name": "CID_PREFIX", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newManager", + "type": "address" + } + ], + "name": "changeManager", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "agentOwner", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "agentHash", + "type": "bytes32" + } + ], + "name": "create", + "outputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "unitId", + "type": "uint256" + } + ], + "name": "exists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + } + ], + "name": "getHashes", + "outputs": [ + { + "internalType": "uint256", + "name": "numHashes", + "type": "uint256" + }, + { + "internalType": "bytes32[]", + "name": "agentHashes", + "type": "bytes32[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "manager", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapAgentIdHashes", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "string", + "name": "bURI", + "type": "string" + } + ], + "name": "setBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "unitId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "unitId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "agentId", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "agentHash", + "type": "bytes32" + } + ], + "name": "updateHash", + "outputs": [ + { + "internalType": "bool", + "name": "success", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040526001600a55348015610014575f80fd5b506040516126e73803806126e783398101604081905261003391610116565b82825f610040838261021b565b50600161004d828261021b565b506008915061005e9050828261021b565b5050600680546001600160a01b03191633179055506102da9050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261009d575f80fd5b81516001600160401b03808211156100b7576100b761007a565b604051601f8301601f19908116603f011681019082821181831017156100df576100df61007a565b816040528381528660208588010111156100f7575f80fd5b8360208701602083015e5f602085830101528094505050505092915050565b5f805f60608486031215610128575f80fd5b83516001600160401b038082111561013e575f80fd5b61014a8783880161008e565b9450602086015191508082111561015f575f80fd5b61016b8783880161008e565b93506040860151915080821115610180575f80fd5b5061018d8682870161008e565b9150509250925092565b600181811c908216806101ab57607f821691505b6020821081036101c957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561021657805f5260205f20601f840160051c810160208510156101f45750805b601f840160051c820191505b81811015610213575f8155600101610200565b50505b505050565b81516001600160401b038111156102345761023461007a565b610248816102428454610197565b846101cf565b602080601f83116001811461027b575f84156102645750858301515b5f19600386901b1c1916600185901b1785556102d2565b5f85815260208120601f198616915b828110156102a95788860151825594840194600190910190840161028a565b50858210156102c657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b612400806102e75f395ff3fe608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806370a08231116100f3578063a3fbbaae11610093578063b88d4fde1161006e578063b88d4fde14610426578063c87b56dd14610439578063e985e9c51461044c578063ffa1ad7414610479575f80fd5b8063a3fbbaae146103ed578063a6f9dae114610400578063b1f52e8014610413575f80fd5b80638da5cb5b116100ce5780638da5cb5b1461039f57806395d89b41146103bf578063a22cb465146103c7578063a3def923146103da575f80fd5b806370a082311461033d5780637647a90c146103505780637c5e63e014610363575f80fd5b806342842e0e1161015e5780634f6ccce7116101395780634f6ccce7146102fc57806355f804b31461030f5780636352211e146103225780636c0360eb14610335575f80fd5b806342842e0e146102b6578063481c6a75146102c95780634f558e79146102e9575f80fd5b8063081812fc11610199578063081812fc1461021d578063095ea7b31461027757806318160ddd1461028c57806323b872dd146102a3575f80fd5b806301ffc9a7146101bf57806302a8ca10146101e757806306fdde0314610208575b5f80fd5b6101d26101cd366004611c84565b6104b5565b60405190151581526020015b60405180910390f35b6101fa6101f5366004611ca6565b610599565b6040516101de929190611cbd565b610210610652565b6040516101de9190611d0b565b61025261022b366004611ca6565b60046020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b61028a610285366004611d81565b6106dd565b005b61029560095481565b6040519081526020016101de565b61028a6102b1366004611da9565b610824565b61028a6102c4366004611da9565b610ae7565b6007546102529073ffffffffffffffffffffffffffffffffffffffff1681565b6101d26102f7366004611ca6565b610c4a565b61029561030a366004611ca6565b610c6b565b61028a61031d366004611e0f565b610cc8565b610252610330366004611ca6565b610dbc565b610210610e47565b61029561034b366004611ed8565b610e54565b61029561035e366004611ef1565b610efa565b6102106040518060400160405280600981526020017f663031373031323230000000000000000000000000000000000000000000000081525081565b6006546102529073ffffffffffffffffffffffffffffffffffffffff1681565b610210610f25565b61028a6103d5366004611f11565b610f32565b6102956103e8366004611d81565b610fc8565b61028a6103fb366004611ed8565b61118b565b61028a61040e366004611ed8565b6112b9565b6101d2610421366004611ef1565b6113e7565b61028a610434366004611f4a565b611503565b610210610447366004611ca6565b611657565b6101d261045a366004611fdd565b600560209081525f928352604080842090915290825290205460ff1681565b6102106040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061054757507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061059357507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f60605f831180156105ad57506009548311155b1561060f575f838152600b60209081526040918290208054835181840281018401909452808452909183018282801561060357602002820191905f5260205f20905b8154815260200190600101908083116105ef575b50505050509050610649565b6040517f0ede9759000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b80519150915091565b5f805461065e9061200e565b80601f016020809104026020016040519081016040528092919081815260200182805461068a9061200e565b80156106d55780601f106106ac576101008083540402835291602001916106d5565b820191905f5260205f20905b8154815290600101906020018083116106b857829003601f168201915b505050505081565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061073e575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff165b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b5f8281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116146108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8216610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b3373ffffffffffffffffffffffffffffffffffffffff84161480610983575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b806109b057505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b610a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610af2838383610824565b73ffffffffffffffffffffffffffffffffffffffff82163b15610c45576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610b98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbc919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b505050565b5f80821180156105935750600954610c639060016120a7565b821092915050565b5f610c778260016120a7565b9050600954811115610cc3576009546040517f7ae59685000000000000000000000000000000000000000000000000000000008152610640918391600401918252602082015260400190565b919050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610d3b576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b80515f03610d75576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008610d8182826120fe565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf681604051610db19190611d0b565b60405180910390a150565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610640565b6008805461065e9061200e565b5f73ffffffffffffffffffffffffffffffffffffffff8216610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610640565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b600b602052815f5260405f208181548110610f13575f80fd5b905f5260205f20015f91509150505481565b6001805461065e9061200e565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f6001600a541115611006576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600a5560075473ffffffffffffffffffffffffffffffffffffffff16331461107e576007546040517f625a43fe00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff83166110cb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f829003611105576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600954806111138161221a565b5f818152600b602090815260408220805460018101825590835291200184905560098190559150611146905083826116dd565b807f17139772d2eecff1a9acaf38c64bfda7c833f94bf253bbdc6353c31e2f50712c8360405161117891815260200190565b60405180910390a26001600a5592915050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146111fe576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff811661124b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b60065473ffffffffffffffffffffffffffffffffffffffff16331461132c576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff8116611379576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b5f806113f284610dbc565b905073ffffffffffffffffffffffffffffffffffffffff81163314611468576040517f10c932fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015233602482015260448101859052606401610640565b5f8390036114a2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f848152600b60209081526040808320805460018082018355918552938390209093018690555185815291935085917f4d9628eae8c81a6e4982f671587b937bacf76b149b3458fb5a8aec776b4c129a910160405180910390a25092915050565b61150e858585610824565b73ffffffffffffffffffffffffffffffffffffffff84163b15611650576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a02906115879033908a90899089908990600401612251565b6020604051808303815f875af11580156115a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c7919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050505050565b60605f6116638361183b565b905060086040518060400160405280600981526020017f66303137303132323000000000000000000000000000000000000000000000008152506116a6836118d5565b6116b3608085901b6118d5565b6040516020016116c694939291906122ce565b604051602081830303815290604052915050919050565b6116e78282611abd565b73ffffffffffffffffffffffffffffffffffffffff82163b15611837576040517f150b7a02000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303815f875af115801561178a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ae919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050565b5f808211801561184d57506009548211155b156118a0575f828152600b602052604081205461186c90600190612373565b5f848152600b602052604090208054919250908290811061188f5761188f612386565b905f5260205f200154915050919050565b6040517f0ede975900000000000000000000000000000000000000000000000000000000815260048101839052602401610640565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091167fffffffff0000000000000000000000000000000000000000000000000000000084161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790611a59827f06060606060606060606060606060606060606060606060606060606060606066120a7565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f166027611a8991906123b3565b611ab3827f30303030303030303030303030303030303030303030303030303030303030306120a7565b61059391906120a7565b73ffffffffffffffffffffffffffffffffffffffff8216611b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c81575f80fd5b50565b5f60208284031215611c94575f80fd5b8135611c9f81611c54565b9392505050565b5f60208284031215611cb6575f80fd5b5035919050565b5f604082018483526020604060208501528185518084526060860191506020870193505f5b81811015611cfe57845183529383019391830191600101611ce2565b5090979650505050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cc3575f80fd5b5f8060408385031215611d92575f80fd5b611d9b83611d5e565b946020939093013593505050565b5f805f60608486031215611dbb575f80fd5b611dc484611d5e565b9250611dd260208501611d5e565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215611e1f575f80fd5b813567ffffffffffffffff80821115611e36575f80fd5b818401915084601f830112611e49575f80fd5b813581811115611e5b57611e5b611de2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ea157611ea1611de2565b81604052828152876020848701011115611eb9575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f60208284031215611ee8575f80fd5b611c9f82611d5e565b5f8060408385031215611f02575f80fd5b50508035926020909101359150565b5f8060408385031215611f22575f80fd5b611f2b83611d5e565b915060208301358015158114611f3f575f80fd5b809150509250929050565b5f805f805f60808688031215611f5e575f80fd5b611f6786611d5e565b9450611f7560208701611d5e565b935060408601359250606086013567ffffffffffffffff80821115611f98575f80fd5b818801915088601f830112611fab575f80fd5b813581811115611fb9575f80fd5b896020828501011115611fca575f80fd5b9699959850939650602001949392505050565b5f8060408385031215611fee575f80fd5b611ff783611d5e565b915061200560208401611d5e565b90509250929050565b600181811c9082168061202257607f821691505b602082108103612059577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f6020828403121561206f575f80fd5b8151611c9f81611c54565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156105935761059361207a565b601f821115610c4557805f5260205f20601f840160051c810160208510156120df5750805b601f840160051c820191505b81811015611650575f81556001016120eb565b815167ffffffffffffffff81111561211857612118611de2565b61212c81612126845461200e565b846120ba565b602080601f83116001811461217e575f84156121485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612212565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156121ca578886015182559484019460019091019084016121ab565b508582101561220657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361224a5761224a61207a565b5060010190565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b5f8086546122db8161200e565b600182811680156122f3576001811461232657612352565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612352565b8a5f526020805f205f5b858110156123495781548a820152908401908201612330565b50505082870194505b5050505085518060208801835e019384525050602082015260400192915050565b818103818111156105935761059361207a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820281158282048414176105935761059361207a56fea26469706673582212206f822548ee95abe6a6808e1d1773217cbcd3d3cd828c2295373bd8c2e304353e64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806370a08231116100f3578063a3fbbaae11610093578063b88d4fde1161006e578063b88d4fde14610426578063c87b56dd14610439578063e985e9c51461044c578063ffa1ad7414610479575f80fd5b8063a3fbbaae146103ed578063a6f9dae114610400578063b1f52e8014610413575f80fd5b80638da5cb5b116100ce5780638da5cb5b1461039f57806395d89b41146103bf578063a22cb465146103c7578063a3def923146103da575f80fd5b806370a082311461033d5780637647a90c146103505780637c5e63e014610363575f80fd5b806342842e0e1161015e5780634f6ccce7116101395780634f6ccce7146102fc57806355f804b31461030f5780636352211e146103225780636c0360eb14610335575f80fd5b806342842e0e146102b6578063481c6a75146102c95780634f558e79146102e9575f80fd5b8063081812fc11610199578063081812fc1461021d578063095ea7b31461027757806318160ddd1461028c57806323b872dd146102a3575f80fd5b806301ffc9a7146101bf57806302a8ca10146101e757806306fdde0314610208575b5f80fd5b6101d26101cd366004611c84565b6104b5565b60405190151581526020015b60405180910390f35b6101fa6101f5366004611ca6565b610599565b6040516101de929190611cbd565b610210610652565b6040516101de9190611d0b565b61025261022b366004611ca6565b60046020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b61028a610285366004611d81565b6106dd565b005b61029560095481565b6040519081526020016101de565b61028a6102b1366004611da9565b610824565b61028a6102c4366004611da9565b610ae7565b6007546102529073ffffffffffffffffffffffffffffffffffffffff1681565b6101d26102f7366004611ca6565b610c4a565b61029561030a366004611ca6565b610c6b565b61028a61031d366004611e0f565b610cc8565b610252610330366004611ca6565b610dbc565b610210610e47565b61029561034b366004611ed8565b610e54565b61029561035e366004611ef1565b610efa565b6102106040518060400160405280600981526020017f663031373031323230000000000000000000000000000000000000000000000081525081565b6006546102529073ffffffffffffffffffffffffffffffffffffffff1681565b610210610f25565b61028a6103d5366004611f11565b610f32565b6102956103e8366004611d81565b610fc8565b61028a6103fb366004611ed8565b61118b565b61028a61040e366004611ed8565b6112b9565b6101d2610421366004611ef1565b6113e7565b61028a610434366004611f4a565b611503565b610210610447366004611ca6565b611657565b6101d261045a366004611fdd565b600560209081525f928352604080842090915290825290205460ff1681565b6102106040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061054757507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061059357507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f60605f831180156105ad57506009548311155b1561060f575f838152600b60209081526040918290208054835181840281018401909452808452909183018282801561060357602002820191905f5260205f20905b8154815260200190600101908083116105ef575b50505050509050610649565b6040517f0ede9759000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b80519150915091565b5f805461065e9061200e565b80601f016020809104026020016040519081016040528092919081815260200182805461068a9061200e565b80156106d55780601f106106ac576101008083540402835291602001916106d5565b820191905f5260205f20905b8154815290600101906020018083116106b857829003601f168201915b505050505081565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061073e575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff165b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b5f8281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116146108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8216610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b3373ffffffffffffffffffffffffffffffffffffffff84161480610983575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b806109b057505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b610a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610af2838383610824565b73ffffffffffffffffffffffffffffffffffffffff82163b15610c45576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610b98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbc919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b505050565b5f80821180156105935750600954610c639060016120a7565b821092915050565b5f610c778260016120a7565b9050600954811115610cc3576009546040517f7ae59685000000000000000000000000000000000000000000000000000000008152610640918391600401918252602082015260400190565b919050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610d3b576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b80515f03610d75576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008610d8182826120fe565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf681604051610db19190611d0b565b60405180910390a150565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610640565b6008805461065e9061200e565b5f73ffffffffffffffffffffffffffffffffffffffff8216610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610640565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b600b602052815f5260405f208181548110610f13575f80fd5b905f5260205f20015f91509150505481565b6001805461065e9061200e565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f6001600a541115611006576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600a5560075473ffffffffffffffffffffffffffffffffffffffff16331461107e576007546040517f625a43fe00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff83166110cb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f829003611105576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600954806111138161221a565b5f818152600b602090815260408220805460018101825590835291200184905560098190559150611146905083826116dd565b807f17139772d2eecff1a9acaf38c64bfda7c833f94bf253bbdc6353c31e2f50712c8360405161117891815260200190565b60405180910390a26001600a5592915050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146111fe576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff811661124b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b60065473ffffffffffffffffffffffffffffffffffffffff16331461132c576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff8116611379576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b5f806113f284610dbc565b905073ffffffffffffffffffffffffffffffffffffffff81163314611468576040517f10c932fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015233602482015260448101859052606401610640565b5f8390036114a2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f848152600b60209081526040808320805460018082018355918552938390209093018690555185815291935085917f4d9628eae8c81a6e4982f671587b937bacf76b149b3458fb5a8aec776b4c129a910160405180910390a25092915050565b61150e858585610824565b73ffffffffffffffffffffffffffffffffffffffff84163b15611650576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a02906115879033908a90899089908990600401612251565b6020604051808303815f875af11580156115a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c7919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050505050565b60605f6116638361183b565b905060086040518060400160405280600981526020017f66303137303132323000000000000000000000000000000000000000000000008152506116a6836118d5565b6116b3608085901b6118d5565b6040516020016116c694939291906122ce565b604051602081830303815290604052915050919050565b6116e78282611abd565b73ffffffffffffffffffffffffffffffffffffffff82163b15611837576040517f150b7a02000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303815f875af115801561178a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ae919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050565b5f808211801561184d57506009548211155b156118a0575f828152600b602052604081205461186c90600190612373565b5f848152600b602052604090208054919250908290811061188f5761188f612386565b905f5260205f200154915050919050565b6040517f0ede975900000000000000000000000000000000000000000000000000000000815260048101839052602401610640565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091167fffffffff0000000000000000000000000000000000000000000000000000000084161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790611a59827f06060606060606060606060606060606060606060606060606060606060606066120a7565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f166027611a8991906123b3565b611ab3827f30303030303030303030303030303030303030303030303030303030303030306120a7565b61059391906120a7565b73ffffffffffffffffffffffffffffffffffffffff8216611b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c81575f80fd5b50565b5f60208284031215611c94575f80fd5b8135611c9f81611c54565b9392505050565b5f60208284031215611cb6575f80fd5b5035919050565b5f604082018483526020604060208501528185518084526060860191506020870193505f5b81811015611cfe57845183529383019391830191600101611ce2565b5090979650505050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cc3575f80fd5b5f8060408385031215611d92575f80fd5b611d9b83611d5e565b946020939093013593505050565b5f805f60608486031215611dbb575f80fd5b611dc484611d5e565b9250611dd260208501611d5e565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215611e1f575f80fd5b813567ffffffffffffffff80821115611e36575f80fd5b818401915084601f830112611e49575f80fd5b813581811115611e5b57611e5b611de2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ea157611ea1611de2565b81604052828152876020848701011115611eb9575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f60208284031215611ee8575f80fd5b611c9f82611d5e565b5f8060408385031215611f02575f80fd5b50508035926020909101359150565b5f8060408385031215611f22575f80fd5b611f2b83611d5e565b915060208301358015158114611f3f575f80fd5b809150509250929050565b5f805f805f60808688031215611f5e575f80fd5b611f6786611d5e565b9450611f7560208701611d5e565b935060408601359250606086013567ffffffffffffffff80821115611f98575f80fd5b818801915088601f830112611fab575f80fd5b813581811115611fb9575f80fd5b896020828501011115611fca575f80fd5b9699959850939650602001949392505050565b5f8060408385031215611fee575f80fd5b611ff783611d5e565b915061200560208401611d5e565b90509250929050565b600181811c9082168061202257607f821691505b602082108103612059577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f6020828403121561206f575f80fd5b8151611c9f81611c54565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156105935761059361207a565b601f821115610c4557805f5260205f20601f840160051c810160208510156120df5750805b601f840160051c820191505b81811015611650575f81556001016120eb565b815167ffffffffffffffff81111561211857612118611de2565b61212c81612126845461200e565b846120ba565b602080601f83116001811461217e575f84156121485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612212565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156121ca578886015182559484019460019091019084016121ab565b508582101561220657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361224a5761224a61207a565b5060010190565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b5f8086546122db8161200e565b600182811680156122f3576001811461232657612352565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612352565b8a5f526020805f205f5b858110156123495781548a820152908401908201612330565b50505082870194505b5050505085518060208801835e019384525050602082015260400192915050565b818103818111156105935761059361207a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820281158282048414176105935761059361207a56fea26469706673582212206f822548ee95abe6a6808e1d1773217cbcd3d3cd828c2295373bd8c2e304353e64736f6c63430008190033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.25/Karma.json b/abis/0.8.25/Karma.json new file mode 100644 index 0000000..c9c2ef6 --- /dev/null +++ b/abis/0.8.25/Karma.json @@ -0,0 +1,359 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Karma", + "sourceName": "contracts/Karma.sol", + "abi": [ + { + "inputs": [], + "name": "AlreadyInitialized", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "UnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValues1", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "numValues2", + "type": "uint256" + } + ], + "name": "WrongArrayLength", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "ImplementationUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "mech", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "karmaChange", + "type": "int256" + } + ], + "name": "MechKarmaChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "requester", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "mech", + "type": "address" + }, + { + "indexed": false, + "internalType": "int256", + "name": "karmaChange", + "type": "int256" + } + ], + "name": "RequesterMechKarmaChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "mechMarketplaces", + "type": "address[]" + }, + { + "indexed": false, + "internalType": "bool[]", + "name": "statuses", + "type": "bool[]" + } + ], + "name": "SetMechMarketplaceStatuses", + "type": "event" + }, + { + "inputs": [], + "name": "KARMA_PROXY", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "changeImplementation", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "mech", + "type": "address" + }, + { + "internalType": "int256", + "name": "karmaChange", + "type": "int256" + } + ], + "name": "changeMechKarma", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "changeOwner", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "requester", + "type": "address" + }, + { + "internalType": "address", + "name": "mech", + "type": "address" + }, + { + "internalType": "int256", + "name": "karmaChange", + "type": "int256" + } + ], + "name": "changeRequesterMechKarma", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "getImplementation", + "outputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapMechKarma", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapMechMarketplaces", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapRequesterMechKarma", + "outputs": [ + { + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "mechMarketplaces", + "type": "address[]" + }, + { + "internalType": "bool[]", + "name": "statuses", + "type": "bool[]" + } + ], + "name": "setMechMarketplaceStatuses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052348015600e575f80fd5b50610da28061001c5f395ff3fe608060405234801561000f575f80fd5b50600436106100da575f3560e01c80638129fc1c11610088578063a6f9dae111610063578063a6f9dae114610206578063aaf10f4214610219578063fc3aecd014610240578063ffa1ad7414610267575f80fd5b80638129fc1c1461019b5780638da5cb5b146101a35780639ecfd0ef146101e7575f80fd5b80634225d37a116100b85780634225d37a1461014357806355e7d04414610156578063643f28d914610169575f80fd5b80630aa4a379146100de57806317a68dd8146100f357806330a2c84314610106575b5f80fd5b6100f16100ec366004610aa3565b6102b0565b005b6100f1610101366004610b5d565b6104c8565b610130610114366004610b7d565b600360209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6100f1610151366004610bae565b6105ed565b6100f1610164366004610bd6565b6106bf565b61018b610177366004610b5d565b60016020525f908152604090205460ff1681565b604051901515815260200161013a565b6100f16107bf565b5f546101c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013a565b6101306101f5366004610b5d565b60026020525f908152604090205481565b6100f1610214366004610b5d565b610839565b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d8546101c2565b6101307f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d881565b6102a36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161013a9190610c0f565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610326575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b805182511461036e57815181516040517f8151c1100000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161031d565b5f5b825181101561048a575f73ffffffffffffffffffffffffffffffffffffffff168382815181106103a2576103a2610c62565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036103f7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81818151811061040957610409610c62565b602002602001015160015f85848151811061042657610426610c62565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610370565b507fa643ff1a5a85bb4fd8c0288e824ec47c8cd49401b14544c4bcb2f40ec8adda6982826040516104bc929190610c8f565b60405180910390a15050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610539575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116602482015260440161031d565b73ffffffffffffffffffffffffffffffffffffffff8116610586576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d881905560405173ffffffffffffffffffffffffffffffffffffffff8216907f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca03905f90a250565b335f9081526001602052604090205460ff16610637576040517f32b2baa300000000000000000000000000000000000000000000000000000000815233600482015260240161031d565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600260205260408120805483929061066b908490610d20565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316907f417740bdbf75bcc9cd063a95c8af25366c2a27f49d23d5eeafc2db269143af5f9060200160405180910390a25050565b335f9081526001602052604090205460ff16610709576040517f32b2baa300000000000000000000000000000000000000000000000000000000815233600482015260240161031d565b73ffffffffffffffffffffffffffffffffffffffff8084165f9081526003602090815260408083209386168352929052908120805483929061074c908490610d20565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3df02d68ad731eb0c4caab8f9424137610f574d333c6a00ce3e0ef6b6d032ba4836040516107b291815260200190565b60405180910390a3505050565b5f5473ffffffffffffffffffffffffffffffffffffffff161561080e576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108aa575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116602482015260440161031d565b73ffffffffffffffffffffffffffffffffffffffff81166108f7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109d7576109d7610963565b604052919050565b5f67ffffffffffffffff8211156109f8576109f8610963565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a25575f80fd5b919050565b5f82601f830112610a39575f80fd5b81356020610a4e610a49836109df565b610990565b8083825260208201915060208460051b870101935086841115610a6f575f80fd5b602086015b84811015610a985780358015158114610a8b575f80fd5b8352918301918301610a74565b509695505050505050565b5f8060408385031215610ab4575f80fd5b823567ffffffffffffffff80821115610acb575f80fd5b818501915085601f830112610ade575f80fd5b81356020610aee610a49836109df565b82815260059290921b84018101918181019089841115610b0c575f80fd5b948201945b83861015610b3157610b2286610a02565b82529482019490820190610b11565b96505086013592505080821115610b46575f80fd5b50610b5385828601610a2a565b9150509250929050565b5f60208284031215610b6d575f80fd5b610b7682610a02565b9392505050565b5f8060408385031215610b8e575f80fd5b610b9783610a02565b9150610ba560208401610a02565b90509250929050565b5f8060408385031215610bbf575f80fd5b610bc883610a02565b946020939093013593505050565b5f805f60608486031215610be8575f80fd5b610bf184610a02565b9250610bff60208501610a02565b9150604084013590509250925092565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604080825283519082018190525f906020906060840190828701845b82811015610cdd57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610cab565b505050838103828501528451808252858301918301905f5b81811015610d13578351151583529284019291840191600101610cf5565b5090979650505050505050565b8082018281125f831280158216821582161715610d64577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b50509291505056fea2646970667358221220f45805d602c723aed68b2ed0a08190c7459573dbd69bc2238ad2a8bd7249a3f264736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106100da575f3560e01c80638129fc1c11610088578063a6f9dae111610063578063a6f9dae114610206578063aaf10f4214610219578063fc3aecd014610240578063ffa1ad7414610267575f80fd5b80638129fc1c1461019b5780638da5cb5b146101a35780639ecfd0ef146101e7575f80fd5b80634225d37a116100b85780634225d37a1461014357806355e7d04414610156578063643f28d914610169575f80fd5b80630aa4a379146100de57806317a68dd8146100f357806330a2c84314610106575b5f80fd5b6100f16100ec366004610aa3565b6102b0565b005b6100f1610101366004610b5d565b6104c8565b610130610114366004610b7d565b600360209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b6100f1610151366004610bae565b6105ed565b6100f1610164366004610bd6565b6106bf565b61018b610177366004610b5d565b60016020525f908152604090205460ff1681565b604051901515815260200161013a565b6100f16107bf565b5f546101c29073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161013a565b6101306101f5366004610b5d565b60026020525f908152604090205481565b6100f1610214366004610b5d565b610839565b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d8546101c2565b6101307f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d881565b6102a36040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b60405161013a9190610c0f565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610326575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff90911660248201526044015b60405180910390fd5b805182511461036e57815181516040517f8151c1100000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161031d565b5f5b825181101561048a575f73ffffffffffffffffffffffffffffffffffffffff168382815181106103a2576103a2610c62565b602002602001015173ffffffffffffffffffffffffffffffffffffffff16036103f7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81818151811061040957610409610c62565b602002602001015160015f85848151811061042657610426610c62565b60209081029190910181015173ffffffffffffffffffffffffffffffffffffffff1682528101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055600101610370565b507fa643ff1a5a85bb4fd8c0288e824ec47c8cd49401b14544c4bcb2f40ec8adda6982826040516104bc929190610c8f565b60405180910390a15050565b5f5473ffffffffffffffffffffffffffffffffffffffff163314610539575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116602482015260440161031d565b73ffffffffffffffffffffffffffffffffffffffff8116610586576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d881905560405173ffffffffffffffffffffffffffffffffffffffff8216907f310ba5f1d2ed074b51e2eccd052a47ae9ab7c6b800d1fca3db3999d6a592ca03905f90a250565b335f9081526001602052604090205460ff16610637576040517f32b2baa300000000000000000000000000000000000000000000000000000000815233600482015260240161031d565b73ffffffffffffffffffffffffffffffffffffffff82165f908152600260205260408120805483929061066b908490610d20565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316907f417740bdbf75bcc9cd063a95c8af25366c2a27f49d23d5eeafc2db269143af5f9060200160405180910390a25050565b335f9081526001602052604090205460ff16610709576040517f32b2baa300000000000000000000000000000000000000000000000000000000815233600482015260240161031d565b73ffffffffffffffffffffffffffffffffffffffff8084165f9081526003602090815260408083209386168352929052908120805483929061074c908490610d20565b925050819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f3df02d68ad731eb0c4caab8f9424137610f574d333c6a00ce3e0ef6b6d032ba4836040516107b291815260200190565b60405180910390a3505050565b5f5473ffffffffffffffffffffffffffffffffffffffff161561080e576040517f0dc149f000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001633179055565b5f5473ffffffffffffffffffffffffffffffffffffffff1633146108aa575f546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff909116602482015260440161031d565b73ffffffffffffffffffffffffffffffffffffffff81166108f7576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8316908117825560405190917f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b91a250565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156109d7576109d7610963565b604052919050565b5f67ffffffffffffffff8211156109f8576109f8610963565b5060051b60200190565b803573ffffffffffffffffffffffffffffffffffffffff81168114610a25575f80fd5b919050565b5f82601f830112610a39575f80fd5b81356020610a4e610a49836109df565b610990565b8083825260208201915060208460051b870101935086841115610a6f575f80fd5b602086015b84811015610a985780358015158114610a8b575f80fd5b8352918301918301610a74565b509695505050505050565b5f8060408385031215610ab4575f80fd5b823567ffffffffffffffff80821115610acb575f80fd5b818501915085601f830112610ade575f80fd5b81356020610aee610a49836109df565b82815260059290921b84018101918181019089841115610b0c575f80fd5b948201945b83861015610b3157610b2286610a02565b82529482019490820190610b11565b96505086013592505080821115610b46575f80fd5b50610b5385828601610a2a565b9150509250929050565b5f60208284031215610b6d575f80fd5b610b7682610a02565b9392505050565b5f8060408385031215610b8e575f80fd5b610b9783610a02565b9150610ba560208401610a02565b90509250929050565b5f8060408385031215610bbf575f80fd5b610bc883610a02565b946020939093013593505050565b5f805f60608486031215610be8575f80fd5b610bf184610a02565b9250610bff60208501610a02565b9150604084013590509250925092565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b604080825283519082018190525f906020906060840190828701845b82811015610cdd57815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610cab565b505050838103828501528451808252858301918301905f5b81811015610d13578351151583529284019291840191600101610cf5565b5090979650505050505050565b8082018281125f831280158216821582161715610d64577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b50509291505056fea2646970667358221220f45805d602c723aed68b2ed0a08190c7459573dbd69bc2238ad2a8bd7249a3f264736f6c63430008190033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.25/KarmaProxy.json b/abis/0.8.25/KarmaProxy.json new file mode 100644 index 0000000..2e52611 --- /dev/null +++ b/abis/0.8.25/KarmaProxy.json @@ -0,0 +1,59 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "KarmaProxy", + "sourceName": "contracts/KarmaProxy.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "implementation", + "type": "address" + }, + { + "internalType": "bytes", + "name": "karmaData", + "type": "bytes" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "InitializationFailed", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroImplementationAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroKarmaData", + "type": "error" + }, + { + "stateMutability": "nonpayable", + "type": "fallback" + }, + { + "inputs": [], + "name": "KARMA_PROXY", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561000f575f80fd5b506040516102ec3803806102ec83398101604081905261002e9161012d565b6001600160a01b0382166100555760405163d02c623d60e01b815260040160405180910390fd5b80515f0361007657604051630113854b60e61b815260040160405180910390fd5b817f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d8555f826001600160a01b0316826040516100b291906101f6565b5f60405180830381855af49150503d805f81146100ea576040519150601f19603f3d011682016040523d82523d5f602084013e6100ef565b606091505b505090508061011157604051630337323560e31b815260040160405180910390fd5b50505061020c565b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561013e575f80fd5b82516001600160a01b0381168114610154575f80fd5b60208401519092506001600160401b0380821115610170575f80fd5b818501915085601f830112610183575f80fd5b81518181111561019557610195610119565b604051601f8201601f19908116603f011681019083821181831017156101bd576101bd610119565b816040528281528860208487010111156101d5575f80fd5b8260208601602083015e5f6020848301015280955050505050509250929050565b5f82518060208501845e5f920191825250919050565b60d4806102185f395ff3fe6080604052348015600e575f80fd5b50600436106026575f3560e01c8063fc3aecd0146066575b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d854365f80375f80365f845af490503d5f803e806061573d5ffd5b503d5ff35b608c7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d881565b60405190815260200160405180910390f3fea26469706673582212200ddd08f94ca7550fe4df6077c4420bbca447db261657e845c90b09d15ee4e9a564736f6c63430008190033", + "deployedBytecode": "0x6080604052348015600e575f80fd5b50600436106026575f3560e01c8063fc3aecd0146066575b7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d854365f80375f80365f845af490503d5f803e806061573d5ffd5b503d5ff35b608c7f1e4b6d67098d4183ce03b91c95f9376a98c5440ec22f2cf171d6dca04a5a29d881565b60405190815260200160405180910390f3fea26469706673582212200ddd08f94ca7550fe4df6077c4420bbca447db261657e845c90b09d15ee4e9a564736f6c63430008190033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/abis/0.8.25/MechMarketplace.json b/abis/0.8.25/MechMarketplace.json new file mode 100644 index 0000000..1f11dcb --- /dev/null +++ b/abis/0.8.25/MechMarketplace.json @@ -0,0 +1,837 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MechMarketplace", + "sourceName": "contracts/MechMarketplace.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "_stakingFactory", + "type": "address" + }, + { + "internalType": "address", + "name": "_karmaProxy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "_minResponseTimeout", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "_maxResponseTimeout", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "AlreadyDelivered", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "min", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "OutOfBounds", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "provided", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "max", + "type": "uint256" + } + ], + "name": "Overflow", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerOnly", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "expected", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "current", + "type": "uint256" + } + ], + "name": "PriorityMechResponseTimeout", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuard", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "stakingInstance", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "ServiceNotStaked", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "UnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroValue", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "factory", + "type": "address" + } + ], + "name": "FactoryUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "priorityMech", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "actualMech", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "requester", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "MarketplaceDeliver", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "requester", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "requestedMech", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "MarketplaceRequest", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "mech", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "status", + "type": "bool" + } + ], + "name": "MechRegistrationStatusChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "minResponseTimeout", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "maxResponseTimeout", + "type": "uint256" + } + ], + "name": "MinMaxResponseTimeoutUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnerUpdated", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR_TYPE_HASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "chainId", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "mech", + "type": "address" + }, + { + "internalType": "address", + "name": "mechStakingInstance", + "type": "address" + }, + { + "internalType": "uint256", + "name": "mechServiceId", + "type": "uint256" + } + ], + "name": "checkMech", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "requester", + "type": "address" + }, + { + "internalType": "address", + "name": "requesterStakingInstance", + "type": "address" + }, + { + "internalType": "uint256", + "name": "requesterServiceId", + "type": "uint256" + } + ], + "name": "checkRequester", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "stakingInstance", + "type": "address" + }, + { + "internalType": "uint256", + "name": "serviceId", + "type": "uint256" + } + ], + "name": "checkStakingInstance", + "outputs": [], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "requestData", + "type": "bytes" + }, + { + "internalType": "address", + "name": "deliveryMechStakingInstance", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deliveryMechServiceId", + "type": "uint256" + } + ], + "name": "deliverMarketplace", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "domainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getDeliveriesCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDomainSeparator", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "getMechDeliveryInfo", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "priorityMech", + "type": "address" + }, + { + "internalType": "address", + "name": "deliveryMech", + "type": "address" + }, + { + "internalType": "address", + "name": "requester", + "type": "address" + }, + { + "internalType": "uint32", + "name": "responseTimeout", + "type": "uint32" + } + ], + "internalType": "struct MechDelivery", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "mechService", + "type": "address" + } + ], + "name": "getMechServiceDeliveriesCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "uint256", + "name": "nonce", + "type": "uint256" + } + ], + "name": "getRequestId", + "outputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "name": "getRequestStatus", + "outputs": [ + { + "internalType": "enum MechMarketplace.RequestStatus", + "name": "status", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "getRequestsCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "karmaProxy", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapDeliveryCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapMechServiceDeliveryCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapNonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "mapRequestCounts", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "mapRequestIdDeliveries", + "outputs": [ + { + "internalType": "address", + "name": "priorityMech", + "type": "address" + }, + { + "internalType": "address", + "name": "deliveryMech", + "type": "address" + }, + { + "internalType": "address", + "name": "requester", + "type": "address" + }, + { + "internalType": "uint32", + "name": "responseTimeout", + "type": "uint32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxResponseTimeout", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minResponseTimeout", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numTotalRequests", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numUndeliveredRequests", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "address", + "name": "priorityMech", + "type": "address" + }, + { + "internalType": "address", + "name": "priorityMechStakingInstance", + "type": "address" + }, + { + "internalType": "uint256", + "name": "priorityMechServiceId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "requesterStakingInstance", + "type": "address" + }, + { + "internalType": "uint256", + "name": "requesterServiceId", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "responseTimeout", + "type": "uint256" + } + ], + "name": "request", + "outputs": [ + { + "internalType": "uint256", + "name": "requestId", + "type": "uint256" + } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "stakingFactory", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6101406040526001600255348015610015575f80fd5b506040516125f93803806125f983398101604081905261003491610215565b6001600160a01b038416158061005157506001600160a01b038316155b1561006f5760405163d92e233d60e01b815260040160405180910390fd5b81158061007a575080155b1561009857604051637c946ed760e01b815260040160405180910390fd5b808211156100c857604051637ae5968560e01b815260048101839052602481018290526044015b60405180910390fd5b63ffffffff8111156100fa57604051637ae5968560e01b81526004810182905263ffffffff60248201526044016100bf565b6001600160a01b038085166101205283166101005260c082905260e08190524660a052610125610132565b6080525061028a92505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7ff376b6313a0837eb351511248cfe7dcc1cd26c49b8e0a47e1eb369dd62c425db604051806040016040528060058152602001640312e302e360dc1b8152506040516020016101a39190610255565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80516001600160a01b0381168114610210575f80fd5b919050565b5f805f8060808587031215610228575f80fd5b610231856101fa565b935061023f602086016101fa565b6040860151606090960151949790965092505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b60805160a05160c05160e05161010051610120516122e26103175f395f81816102ec015261082701525f81816101f601528181610eb2015281816110c4015261189401525f81816105e7015281816115de015261165a01525f818161026f015281816115b5015261163401525f81816104600152611afd01525f818161076b0152611b3201526122e25ff3fe6080604052600436106101a3575f3560e01c80638fb847ef116100e7578063d8a4676f11610087578063f2e433bf11610062578063f2e433bf1461061d578063f5dcb7bb14610727578063f698da251461075a578063ffa1ad741461078d575f80fd5b8063d8a4676f146105aa578063ded81286146105d6578063ed24911d14610609575f80fd5b8063ad16ee73116100c2578063ad16ee73146104a1578063bdf86317146104b4578063cb261bec146104c8578063cbd6407a1461057f575f80fd5b80638fb847ef1461040e5780639a8a05921461044f5780639ec4a5bf14610482575f80fd5b8063291347681161015257806356d0819e1161012d57806356d0819e1461034e57806360b24e0a1461036d57806371db00c4146103ae5780637af73473146103cd575f80fd5b806329134768146102db57806343be96431461030e5780634ada3e6114610339575f80fd5b80630f41196a116101825780630f41196a1461025e5780631a4d8fc8146102915780631bbbeeb8146102b0575f80fd5b8062427c54146101a757806305217332146101e55780630ed8078b1461023d575b5f80fd5b3480156101b2575f80fd5b506101d26101c1366004611c76565b60046020525f908152604090205481565b6040519081526020015b60405180910390f35b3480156101f0575f80fd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dc565b348015610248575f80fd5b5061025c610257366004611c98565b6107e2565b005b348015610269575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561029c575f80fd5b5061025c6102ab366004611cc2565b6109e3565b3480156102bb575f80fd5b506101d26102ca366004611c76565b60036020525f908152604090205481565b3480156102e6575f80fd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b348015610319575f80fd5b506101d2610328366004611c76565b60056020525f908152604090205481565b348015610344575f80fd5b506101d260015481565b348015610359575f80fd5b5061025c610368366004611e2f565b610b2f565b348015610378575f80fd5b506101d2610387366004611c76565b73ffffffffffffffffffffffffffffffffffffffff165f9081526005602052604090205490565b3480156103b9575f80fd5b506102186103c8366004611cc2565b6111be565b3480156103d8575f80fd5b506101d26103e7366004611c76565b73ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b348015610419575f80fd5b506101d2610428366004611c76565b73ffffffffffffffffffffffffffffffffffffffff165f9081526004602052604090205490565b34801561045a575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561048d575f80fd5b506101d261049c366004611e8c565b611362565b6101d26104af366004611ee1565b611416565b3480156104bf575f80fd5b506101d25f5481565b3480156104d3575f80fd5b5061053c6104e2366004611f6e565b60066020525f908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff9182169282169181169074010000000000000000000000000000000000000000900463ffffffff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff95861681529385166020850152919093169082015263ffffffff90911660608201526080016101dc565b34801561058a575f80fd5b506101d2610599366004611c76565b60076020525f908152604090205481565b3480156105b5575f80fd5b506105c96105c4366004611f6e565b611a30565b6040516101dc9190611fb2565b3480156105e1575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b348015610614575f80fd5b506101d2611afa565b348015610628575f80fd5b506106d4610637366004611f6e565b604080516080810182525f808252602082018190529181018290526060810191909152505f908152600660209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548116938201939093526002909101549182169281019290925274010000000000000000000000000000000000000000900463ffffffff16606082015290565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015283830151169181019190915260609182015163ffffffff16918101919091526080016101dc565b348015610732575f80fd5b506101d27f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b348015610765575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b348015610798575f80fd5b506107d56040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dc919061203d565b6040517f479e372e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063479e372e90602401602060405180830381865afa15801561086c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610890919061204f565b6108e3576040517f32b2baa300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024015b60405180910390fd5b6040517ffd0bba8c000000000000000000000000000000000000000000000000000000008152600481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169063fd0bba8c90602401602060405180830381865afa15801561094e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610972919061206e565b9050600181600281111561098857610988611f85565b146109de576040517fcaf8924d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016108da565b505050565b6109ed82826107e2565b6040517f82a8ea58000000000000000000000000000000000000000000000000000000008152600481018290525f9073ffffffffffffffffffffffffffffffffffffffff8416906382a8ea58906024015f60405180830381865afa158015610a57573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a9c919081019061208c565b90508373ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1614610b295780516040517fa43d6ada00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015290911660248201526044016108da565b50505050565b60016002541115610b6c576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280555f610b7c3384846111be565b6040517f82a8ea58000000000000000000000000000000000000000000000000000000008152600481018490529091505f9073ffffffffffffffffffffffffffffffffffffffff8516906382a8ea58906024015f60405180830381865afa158015610be9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c2e919081019061208c565b80516040517f6d70f7ae00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201529091503390636d70f7ae90602401602060405180830381865afa158015610c9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc0919061204f565b610cf8576040517f32b2baa30000000000000000000000000000000000000000000000000000000081523360048201526024016108da565b5f868152600660205260409020805473ffffffffffffffffffffffffffffffffffffffff1680610d54576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282015473ffffffffffffffffffffffffffffffffffffffff1633819003610dab576040517f32b2baa30000000000000000000000000000000000000000000000000000000081523360048201526024016108da565b600183015473ffffffffffffffffffffffffffffffffffffffff1615610e00576040517f5b7e8301000000000000000000000000000000000000000000000000000000008152600481018a90526024016108da565b73ffffffffffffffffffffffffffffffffffffffff82163314610fe657600283015474010000000000000000000000000000000000000000900463ffffffff16421115610f89576040517f4225d37a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301527f00000000000000000000000000000000000000000000000000000000000000001690634225d37a906044015f604051808303815f87803b158015610ef3575f80fd5b505af1158015610f05573d5f803e3d5ffd5b50506040517fe7d915cf000000000000000000000000000000000000000000000000000000008152600481018c905273ffffffffffffffffffffffffffffffffffffffff8516925063e7d915cf91506024015f604051808303815f87803b158015610f6e575f80fd5b505af1158015610f80573d5f803e3d5ffd5b50505050610fe6565b60028301546040517f177d0c790000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910463ffffffff1660048201524260248201526044016108da565b6001830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555f80549080611020836121ca565b909155505073ffffffffffffffffffffffffffffffffffffffff81165f908152600460205260408120805491611055836121fe565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f90815260056020526040812080549161108a836121fe565b90915550506040517f4225d37a000000000000000000000000000000000000000000000000000000008152336004820152600160248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634225d37a906044015f604051808303815f87803b15801561111a575f80fd5b505af115801561112c573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc0ecbc77097bb637f0b6fa34f169d87906113c1c45a0227113d36cdbae936fc48c8c6040516111a6929190612235565b60405180910390a45050600160025550505050505050565b5f6111c983836107e2565b6040517f82a8ea58000000000000000000000000000000000000000000000000000000008152600481018390525f9073ffffffffffffffffffffffffffffffffffffffff8516906382a8ea58906024015f60405180830381865afa158015611233573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611278919081019061208c565b80516040517f6d70f7ae00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152919250861690636d70f7ae90602401602060405180830381865afa1580156112e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130b919061204f565b611359576040517f32b2baa300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201526024016108da565b51949350505050565b5f61136b611afa565b84848460405160200161138093929190612255565b604051602081830303815290604052805190602001206040516020016113d89291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b5f60016002541115611454576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805573ffffffffffffffffffffffffffffffffffffffff8716158061148f575073ffffffffffffffffffffffffffffffffffffffff8616155b806114ae575073ffffffffffffffffffffffffffffffffffffffff8416155b156114e5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611562576040517f32b2baa300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024016108da565b73ffffffffffffffffffffffffffffffffffffffff871633036115b3576040517f32b2baa30000000000000000000000000000000000000000000000000000000081523360048201526024016108da565b7f000000000000000000000000000000000000000000000000000000000000000082108061160057507f000000000000000000000000000000000000000000000000000000000000000082115b15611686576040517feb373cfe000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201526064016108da565b63ffffffff6116954284612293565b11156116e5576116a54283612293565b6040517f7ae59685000000000000000000000000000000000000000000000000000000008152600481019190915263ffffffff60248201526044016108da565b87515f0361171f576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61172a8787876111be565b506117363385856109e3565b335f8181526007602052604090205461175191908a90611362565b335f90815260076020526040812080549293509061176e836121fe565b90915550505f81815260066020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89161781556117c84284612293565b600282018054337fffffffffffffffff0000000000000000000000000000000000000000000000009091167401000000000000000000000000000000000000000063ffffffff94909416939093027fffffffffffffffffffffffff00000000000000000000000000000000000000001692909217821790556040517f55e7d044000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff8981166024830152600160448301527f000000000000000000000000000000000000000000000000000000000000000016906355e7d044906064015f604051808303815f87803b1580156118d5575f80fd5b505af11580156118e7573d5f803e3d5ffd5b5050335f908152600360205260408120805493509150611906836121fe565b90915550505f80549080611919836121fe565b909155505060018054905f61192d836121fe565b90915550506040517f7941251800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891690637941251890349061198a9033908e908890600401612255565b5f604051808303818588803b1580156119a1575f80fd5b505af11580156119b3573d5f803e3d5ffd5b50505050508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4827c9fc8074fe94dd4939d4228739ff43d7072a6504a6f413ffa4967c120175848c604051611a17929190612235565b60405180910390a3506001600255979650505050505050565b5f8181526006602090815260408083208151608081018352815473ffffffffffffffffffffffffffffffffffffffff90811680835260018401548216958301959095526002909201549182169281019290925274010000000000000000000000000000000000000000900463ffffffff1660608201529015611af457602081015173ffffffffffffffffffffffffffffffffffffffff16611aef57806060015163ffffffff16421115611ae65760029150611af4565b60019150611af4565b600391505b50919050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614611b2f57611b2a611b54565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7ff376b6313a0837eb351511248cfe7dcc1cd26c49b8e0a47e1eb369dd62c425db6040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250604051602001611bdd919061203d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff81168114611c73575f80fd5b50565b5f60208284031215611c86575f80fd5b8135611c9181611c52565b9392505050565b5f8060408385031215611ca9575f80fd5b8235611cb481611c52565b946020939093013593505050565b5f805f60608486031215611cd4575f80fd5b8335611cdf81611c52565b92506020840135611cef81611c52565b929592945050506040919091013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611d5057611d50611d00565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611d9d57611d9d611d00565b604052919050565b5f82601f830112611db4575f80fd5b813567ffffffffffffffff811115611dce57611dce611d00565b611dff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611d56565b818152846020838601011115611e13575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611e42575f80fd5b84359350602085013567ffffffffffffffff811115611e5f575f80fd5b611e6b87828801611da5565b9350506040850135611e7c81611c52565b9396929550929360600135925050565b5f805f60608486031215611e9e575f80fd5b8335611ea981611c52565b9250602084013567ffffffffffffffff811115611ec4575f80fd5b611ed086828701611da5565b925050604084013590509250925092565b5f805f805f805f60e0888a031215611ef7575f80fd5b873567ffffffffffffffff811115611f0d575f80fd5b611f198a828b01611da5565b9750506020880135611f2a81611c52565b95506040880135611f3a81611c52565b9450606088013593506080880135611f5181611c52565b9699959850939692959460a0840135945060c09093013592915050565b5f60208284031215611f7e575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160048310611feb577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f611c916020830184611ff1565b5f6020828403121561205f575f80fd5b81518015158114611c91575f80fd5b5f6020828403121561207e575f80fd5b815160038110611c91575f80fd5b5f602080838503121561209d575f80fd5b825167ffffffffffffffff808211156120b4575f80fd5b9084019060c082870312156120c7575f80fd5b6120cf611d2d565b82516120da81611c52565b8152828401516120e981611c52565b818501526040830151828111156120fe575f80fd5b8301601f8101881361210e575f80fd5b80518381111561212057612120611d00565b8060051b9350612131868501611d56565b818152938201860193868101908a86111561214a575f80fd5b928701925b858410156121685783518252928701929087019061214f565b80604086015250505050606083015160608201526080830151608082015260a083015160a08201528094505050505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f816121d8576121d861219d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222e5761222e61219d565b5060010190565b828152604060208201525f61224d6040830184611ff1565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f6122836060830185611ff1565b9050826040830152949350505050565b808201808211156122a6576122a661219d565b9291505056fea26469706673582212201b268d67d946fcbfb68be06571dc81fa0c6d733a38c051d9e67d27014ef8108a64736f6c63430008190033", + "deployedBytecode": "0x6080604052600436106101a3575f3560e01c80638fb847ef116100e7578063d8a4676f11610087578063f2e433bf11610062578063f2e433bf1461061d578063f5dcb7bb14610727578063f698da251461075a578063ffa1ad741461078d575f80fd5b8063d8a4676f146105aa578063ded81286146105d6578063ed24911d14610609575f80fd5b8063ad16ee73116100c2578063ad16ee73146104a1578063bdf86317146104b4578063cb261bec146104c8578063cbd6407a1461057f575f80fd5b80638fb847ef1461040e5780639a8a05921461044f5780639ec4a5bf14610482575f80fd5b8063291347681161015257806356d0819e1161012d57806356d0819e1461034e57806360b24e0a1461036d57806371db00c4146103ae5780637af73473146103cd575f80fd5b806329134768146102db57806343be96431461030e5780634ada3e6114610339575f80fd5b80630f41196a116101825780630f41196a1461025e5780631a4d8fc8146102915780631bbbeeb8146102b0575f80fd5b8062427c54146101a757806305217332146101e55780630ed8078b1461023d575b5f80fd5b3480156101b2575f80fd5b506101d26101c1366004611c76565b60046020525f908152604090205481565b6040519081526020015b60405180910390f35b3480156101f0575f80fd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101dc565b348015610248575f80fd5b5061025c610257366004611c98565b6107e2565b005b348015610269575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561029c575f80fd5b5061025c6102ab366004611cc2565b6109e3565b3480156102bb575f80fd5b506101d26102ca366004611c76565b60036020525f908152604090205481565b3480156102e6575f80fd5b506102187f000000000000000000000000000000000000000000000000000000000000000081565b348015610319575f80fd5b506101d2610328366004611c76565b60056020525f908152604090205481565b348015610344575f80fd5b506101d260015481565b348015610359575f80fd5b5061025c610368366004611e2f565b610b2f565b348015610378575f80fd5b506101d2610387366004611c76565b73ffffffffffffffffffffffffffffffffffffffff165f9081526005602052604090205490565b3480156103b9575f80fd5b506102186103c8366004611cc2565b6111be565b3480156103d8575f80fd5b506101d26103e7366004611c76565b73ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b348015610419575f80fd5b506101d2610428366004611c76565b73ffffffffffffffffffffffffffffffffffffffff165f9081526004602052604090205490565b34801561045a575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b34801561048d575f80fd5b506101d261049c366004611e8c565b611362565b6101d26104af366004611ee1565b611416565b3480156104bf575f80fd5b506101d25f5481565b3480156104d3575f80fd5b5061053c6104e2366004611f6e565b60066020525f908152604090208054600182015460029092015473ffffffffffffffffffffffffffffffffffffffff9182169282169181169074010000000000000000000000000000000000000000900463ffffffff1684565b6040805173ffffffffffffffffffffffffffffffffffffffff95861681529385166020850152919093169082015263ffffffff90911660608201526080016101dc565b34801561058a575f80fd5b506101d2610599366004611c76565b60076020525f908152604090205481565b3480156105b5575f80fd5b506105c96105c4366004611f6e565b611a30565b6040516101dc9190611fb2565b3480156105e1575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b348015610614575f80fd5b506101d2611afa565b348015610628575f80fd5b506106d4610637366004611f6e565b604080516080810182525f808252602082018190529181018290526060810191909152505f908152600660209081526040918290208251608081018452815473ffffffffffffffffffffffffffffffffffffffff908116825260018301548116938201939093526002909101549182169281019290925274010000000000000000000000000000000000000000900463ffffffff16606082015290565b60408051825173ffffffffffffffffffffffffffffffffffffffff908116825260208085015182169083015283830151169181019190915260609182015163ffffffff16918101919091526080016101dc565b348015610732575f80fd5b506101d27f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b348015610765575f80fd5b506101d27f000000000000000000000000000000000000000000000000000000000000000081565b348015610798575f80fd5b506107d56040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101dc919061203d565b6040517f479e372e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063479e372e90602401602060405180830381865afa15801561086c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610890919061204f565b6108e3576040517f32b2baa300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831660048201526024015b60405180910390fd5b6040517ffd0bba8c000000000000000000000000000000000000000000000000000000008152600481018290525f9073ffffffffffffffffffffffffffffffffffffffff84169063fd0bba8c90602401602060405180830381865afa15801561094e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610972919061206e565b9050600181600281111561098857610988611f85565b146109de576040517fcaf8924d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016108da565b505050565b6109ed82826107e2565b6040517f82a8ea58000000000000000000000000000000000000000000000000000000008152600481018290525f9073ffffffffffffffffffffffffffffffffffffffff8416906382a8ea58906024015f60405180830381865afa158015610a57573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a9c919081019061208c565b90508373ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff1614610b295780516040517fa43d6ada00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808716600483015290911660248201526044016108da565b50505050565b60016002541115610b6c576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600280555f610b7c3384846111be565b6040517f82a8ea58000000000000000000000000000000000000000000000000000000008152600481018490529091505f9073ffffffffffffffffffffffffffffffffffffffff8516906382a8ea58906024015f60405180830381865afa158015610be9573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610c2e919081019061208c565b80516040517f6d70f7ae00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911660048201529091503390636d70f7ae90602401602060405180830381865afa158015610c9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc0919061204f565b610cf8576040517f32b2baa30000000000000000000000000000000000000000000000000000000081523360048201526024016108da565b5f868152600660205260409020805473ffffffffffffffffffffffffffffffffffffffff1680610d54576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282015473ffffffffffffffffffffffffffffffffffffffff1633819003610dab576040517f32b2baa30000000000000000000000000000000000000000000000000000000081523360048201526024016108da565b600183015473ffffffffffffffffffffffffffffffffffffffff1615610e00576040517f5b7e8301000000000000000000000000000000000000000000000000000000008152600481018a90526024016108da565b73ffffffffffffffffffffffffffffffffffffffff82163314610fe657600283015474010000000000000000000000000000000000000000900463ffffffff16421115610f89576040517f4225d37a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301527f00000000000000000000000000000000000000000000000000000000000000001690634225d37a906044015f604051808303815f87803b158015610ef3575f80fd5b505af1158015610f05573d5f803e3d5ffd5b50506040517fe7d915cf000000000000000000000000000000000000000000000000000000008152600481018c905273ffffffffffffffffffffffffffffffffffffffff8516925063e7d915cf91506024015f604051808303815f87803b158015610f6e575f80fd5b505af1158015610f80573d5f803e3d5ffd5b50505050610fe6565b60028301546040517f177d0c790000000000000000000000000000000000000000000000000000000081527401000000000000000000000000000000000000000090910463ffffffff1660048201524260248201526044016108da565b6001830180547fffffffffffffffffffffffff000000000000000000000000000000000000000016331790555f80549080611020836121ca565b909155505073ffffffffffffffffffffffffffffffffffffffff81165f908152600460205260408120805491611055836121fe565b909155505073ffffffffffffffffffffffffffffffffffffffff85165f90815260056020526040812080549161108a836121fe565b90915550506040517f4225d37a000000000000000000000000000000000000000000000000000000008152336004820152600160248201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1690634225d37a906044015f604051808303815f87803b15801561111a575f80fd5b505af115801561112c573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fc0ecbc77097bb637f0b6fa34f169d87906113c1c45a0227113d36cdbae936fc48c8c6040516111a6929190612235565b60405180910390a45050600160025550505050505050565b5f6111c983836107e2565b6040517f82a8ea58000000000000000000000000000000000000000000000000000000008152600481018390525f9073ffffffffffffffffffffffffffffffffffffffff8516906382a8ea58906024015f60405180830381865afa158015611233573d5f803e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611278919081019061208c565b80516040517f6d70f7ae00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152919250861690636d70f7ae90602401602060405180830381865afa1580156112e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130b919061204f565b611359576040517f32b2baa300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff861660048201526024016108da565b51949350505050565b5f61136b611afa565b84848460405160200161138093929190612255565b604051602081830303815290604052805190602001206040516020016113d89291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b5f60016002541115611454576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002805573ffffffffffffffffffffffffffffffffffffffff8716158061148f575073ffffffffffffffffffffffffffffffffffffffff8616155b806114ae575073ffffffffffffffffffffffffffffffffffffffff8416155b156114e5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611562576040517f32b2baa300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871660048201526024016108da565b73ffffffffffffffffffffffffffffffffffffffff871633036115b3576040517f32b2baa30000000000000000000000000000000000000000000000000000000081523360048201526024016108da565b7f000000000000000000000000000000000000000000000000000000000000000082108061160057507f000000000000000000000000000000000000000000000000000000000000000082115b15611686576040517feb373cfe000000000000000000000000000000000000000000000000000000008152600481018390527f000000000000000000000000000000000000000000000000000000000000000060248201527f000000000000000000000000000000000000000000000000000000000000000060448201526064016108da565b63ffffffff6116954284612293565b11156116e5576116a54283612293565b6040517f7ae59685000000000000000000000000000000000000000000000000000000008152600481019190915263ffffffff60248201526044016108da565b87515f0361171f576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61172a8787876111be565b506117363385856109e3565b335f8181526007602052604090205461175191908a90611362565b335f90815260076020526040812080549293509061176e836121fe565b90915550505f81815260066020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff89161781556117c84284612293565b600282018054337fffffffffffffffff0000000000000000000000000000000000000000000000009091167401000000000000000000000000000000000000000063ffffffff94909416939093027fffffffffffffffffffffffff00000000000000000000000000000000000000001692909217821790556040517f55e7d044000000000000000000000000000000000000000000000000000000008152600481019190915273ffffffffffffffffffffffffffffffffffffffff8981166024830152600160448301527f000000000000000000000000000000000000000000000000000000000000000016906355e7d044906064015f604051808303815f87803b1580156118d5575f80fd5b505af11580156118e7573d5f803e3d5ffd5b5050335f908152600360205260408120805493509150611906836121fe565b90915550505f80549080611919836121fe565b909155505060018054905f61192d836121fe565b90915550506040517f7941251800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff891690637941251890349061198a9033908e908890600401612255565b5f604051808303818588803b1580156119a1575f80fd5b505af11580156119b3573d5f803e3d5ffd5b50505050508773ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f4827c9fc8074fe94dd4939d4228739ff43d7072a6504a6f413ffa4967c120175848c604051611a17929190612235565b60405180910390a3506001600255979650505050505050565b5f8181526006602090815260408083208151608081018352815473ffffffffffffffffffffffffffffffffffffffff90811680835260018401548216958301959095526002909201549182169281019290925274010000000000000000000000000000000000000000900463ffffffff1660608201529015611af457602081015173ffffffffffffffffffffffffffffffffffffffff16611aef57806060015163ffffffff16421115611ae65760029150611af4565b60019150611af4565b600391505b50919050565b5f7f00000000000000000000000000000000000000000000000000000000000000004614611b2f57611b2a611b54565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7ff376b6313a0837eb351511248cfe7dcc1cd26c49b8e0a47e1eb369dd62c425db6040518060400160405280600581526020017f312e302e30000000000000000000000000000000000000000000000000000000815250604051602001611bdd919061203d565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b73ffffffffffffffffffffffffffffffffffffffff81168114611c73575f80fd5b50565b5f60208284031215611c86575f80fd5b8135611c9181611c52565b9392505050565b5f8060408385031215611ca9575f80fd5b8235611cb481611c52565b946020939093013593505050565b5f805f60608486031215611cd4575f80fd5b8335611cdf81611c52565b92506020840135611cef81611c52565b929592945050506040919091013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff81118282101715611d5057611d50611d00565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715611d9d57611d9d611d00565b604052919050565b5f82601f830112611db4575f80fd5b813567ffffffffffffffff811115611dce57611dce611d00565b611dff60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601611d56565b818152846020838601011115611e13575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f8060808587031215611e42575f80fd5b84359350602085013567ffffffffffffffff811115611e5f575f80fd5b611e6b87828801611da5565b9350506040850135611e7c81611c52565b9396929550929360600135925050565b5f805f60608486031215611e9e575f80fd5b8335611ea981611c52565b9250602084013567ffffffffffffffff811115611ec4575f80fd5b611ed086828701611da5565b925050604084013590509250925092565b5f805f805f805f60e0888a031215611ef7575f80fd5b873567ffffffffffffffff811115611f0d575f80fd5b611f198a828b01611da5565b9750506020880135611f2a81611c52565b95506040880135611f3a81611c52565b9450606088013593506080880135611f5181611c52565b9699959850939692959460a0840135945060c09093013592915050565b5f60208284031215611f7e575f80fd5b5035919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6020810160048310611feb577f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b91905290565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f611c916020830184611ff1565b5f6020828403121561205f575f80fd5b81518015158114611c91575f80fd5b5f6020828403121561207e575f80fd5b815160038110611c91575f80fd5b5f602080838503121561209d575f80fd5b825167ffffffffffffffff808211156120b4575f80fd5b9084019060c082870312156120c7575f80fd5b6120cf611d2d565b82516120da81611c52565b8152828401516120e981611c52565b818501526040830151828111156120fe575f80fd5b8301601f8101881361210e575f80fd5b80518381111561212057612120611d00565b8060051b9350612131868501611d56565b818152938201860193868101908a86111561214a575f80fd5b928701925b858410156121685783518252928701929087019061214f565b80604086015250505050606083015160608201526080830151608082015260a083015160a08201528094505050505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f816121d8576121d861219d565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361222e5761222e61219d565b5060010190565b828152604060208201525f61224d6040830184611ff1565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff84168152606060208201525f6122836060830185611ff1565b9050826040830152949350505050565b808201808211156122a6576122a661219d565b9291505056fea26469706673582212201b268d67d946fcbfb68be06571dc81fa0c6d733a38c051d9e67d27014ef8108a64736f6c63430008190033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/contracts/AgentRegistry.sol b/contracts/AgentRegistry.sol index 5a43b15..c13b1d5 100644 --- a/contracts/AgentRegistry.sol +++ b/contracts/AgentRegistry.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.25; +pragma solidity ^0.8.21; import {GenericRegistry} from "../lib/autonolas-registries/contracts/GenericRegistry.sol"; import {ERC721} from "../lib/autonolas-registries/lib/solmate/src/tokens/ERC721.sol"; @@ -8,11 +8,11 @@ import {ERC721} from "../lib/autonolas-registries/lib/solmate/src/tokens/ERC721. /// @param sender Sender address. /// @param owner Required sender address as an owner. /// @param agentId Agent Id. -error OperatorOnly(address sender, address owner, uint256 agentId); + error OperatorOnly(address sender, address owner, uint256 agentId); /// @dev Agent does not exist. /// @param agentId Agent Id. -error AgentNotFound(uint256 agentId); + error AgentNotFound(uint256 agentId); /// @title Agent Registry - Smart contract for registering agents contract AgentRegistry is GenericRegistry { @@ -30,7 +30,7 @@ contract AgentRegistry is GenericRegistry { /// @param _symbol Agent registry contract symbol. /// @param _baseURI Agent registry token base URI. constructor(string memory _name, string memory _symbol, string memory _baseURI) - ERC721(_name, _symbol) + ERC721(_name, _symbol) { baseURI = _baseURI; owner = msg.sender; @@ -126,4 +126,4 @@ contract AgentRegistry is GenericRegistry { revert AgentNotFound(agentId); } } -} +} \ No newline at end of file From d8932ada0f8a19890917e34f2d500964b8512819 Mon Sep 17 00:00:00 2001 From: Aleksandr Kuperman Date: Wed, 28 Aug 2024 17:09:27 +0100 Subject: [PATCH 2/2] chore: reverting wrong update --- abis/0.8.25/AgentRegistry.json | 4 ++-- contracts/AgentRegistry.sol | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/abis/0.8.25/AgentRegistry.json b/abis/0.8.25/AgentRegistry.json index 4b273b8..febf06a 100644 --- a/abis/0.8.25/AgentRegistry.json +++ b/abis/0.8.25/AgentRegistry.json @@ -1039,8 +1039,8 @@ "type": "function" } ], - "bytecode": "0x60806040526001600a55348015610014575f80fd5b506040516126e73803806126e783398101604081905261003391610116565b82825f610040838261021b565b50600161004d828261021b565b506008915061005e9050828261021b565b5050600680546001600160a01b03191633179055506102da9050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261009d575f80fd5b81516001600160401b03808211156100b7576100b761007a565b604051601f8301601f19908116603f011681019082821181831017156100df576100df61007a565b816040528381528660208588010111156100f7575f80fd5b8360208701602083015e5f602085830101528094505050505092915050565b5f805f60608486031215610128575f80fd5b83516001600160401b038082111561013e575f80fd5b61014a8783880161008e565b9450602086015191508082111561015f575f80fd5b61016b8783880161008e565b93506040860151915080821115610180575f80fd5b5061018d8682870161008e565b9150509250925092565b600181811c908216806101ab57607f821691505b6020821081036101c957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561021657805f5260205f20601f840160051c810160208510156101f45750805b601f840160051c820191505b81811015610213575f8155600101610200565b50505b505050565b81516001600160401b038111156102345761023461007a565b610248816102428454610197565b846101cf565b602080601f83116001811461027b575f84156102645750858301515b5f19600386901b1c1916600185901b1785556102d2565b5f85815260208120601f198616915b828110156102a95788860151825594840194600190910190840161028a565b50858210156102c657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b612400806102e75f395ff3fe608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806370a08231116100f3578063a3fbbaae11610093578063b88d4fde1161006e578063b88d4fde14610426578063c87b56dd14610439578063e985e9c51461044c578063ffa1ad7414610479575f80fd5b8063a3fbbaae146103ed578063a6f9dae114610400578063b1f52e8014610413575f80fd5b80638da5cb5b116100ce5780638da5cb5b1461039f57806395d89b41146103bf578063a22cb465146103c7578063a3def923146103da575f80fd5b806370a082311461033d5780637647a90c146103505780637c5e63e014610363575f80fd5b806342842e0e1161015e5780634f6ccce7116101395780634f6ccce7146102fc57806355f804b31461030f5780636352211e146103225780636c0360eb14610335575f80fd5b806342842e0e146102b6578063481c6a75146102c95780634f558e79146102e9575f80fd5b8063081812fc11610199578063081812fc1461021d578063095ea7b31461027757806318160ddd1461028c57806323b872dd146102a3575f80fd5b806301ffc9a7146101bf57806302a8ca10146101e757806306fdde0314610208575b5f80fd5b6101d26101cd366004611c84565b6104b5565b60405190151581526020015b60405180910390f35b6101fa6101f5366004611ca6565b610599565b6040516101de929190611cbd565b610210610652565b6040516101de9190611d0b565b61025261022b366004611ca6565b60046020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b61028a610285366004611d81565b6106dd565b005b61029560095481565b6040519081526020016101de565b61028a6102b1366004611da9565b610824565b61028a6102c4366004611da9565b610ae7565b6007546102529073ffffffffffffffffffffffffffffffffffffffff1681565b6101d26102f7366004611ca6565b610c4a565b61029561030a366004611ca6565b610c6b565b61028a61031d366004611e0f565b610cc8565b610252610330366004611ca6565b610dbc565b610210610e47565b61029561034b366004611ed8565b610e54565b61029561035e366004611ef1565b610efa565b6102106040518060400160405280600981526020017f663031373031323230000000000000000000000000000000000000000000000081525081565b6006546102529073ffffffffffffffffffffffffffffffffffffffff1681565b610210610f25565b61028a6103d5366004611f11565b610f32565b6102956103e8366004611d81565b610fc8565b61028a6103fb366004611ed8565b61118b565b61028a61040e366004611ed8565b6112b9565b6101d2610421366004611ef1565b6113e7565b61028a610434366004611f4a565b611503565b610210610447366004611ca6565b611657565b6101d261045a366004611fdd565b600560209081525f928352604080842090915290825290205460ff1681565b6102106040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061054757507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061059357507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f60605f831180156105ad57506009548311155b1561060f575f838152600b60209081526040918290208054835181840281018401909452808452909183018282801561060357602002820191905f5260205f20905b8154815260200190600101908083116105ef575b50505050509050610649565b6040517f0ede9759000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b80519150915091565b5f805461065e9061200e565b80601f016020809104026020016040519081016040528092919081815260200182805461068a9061200e565b80156106d55780601f106106ac576101008083540402835291602001916106d5565b820191905f5260205f20905b8154815290600101906020018083116106b857829003601f168201915b505050505081565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061073e575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff165b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b5f8281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116146108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8216610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b3373ffffffffffffffffffffffffffffffffffffffff84161480610983575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b806109b057505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b610a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610af2838383610824565b73ffffffffffffffffffffffffffffffffffffffff82163b15610c45576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610b98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbc919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b505050565b5f80821180156105935750600954610c639060016120a7565b821092915050565b5f610c778260016120a7565b9050600954811115610cc3576009546040517f7ae59685000000000000000000000000000000000000000000000000000000008152610640918391600401918252602082015260400190565b919050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610d3b576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b80515f03610d75576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008610d8182826120fe565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf681604051610db19190611d0b565b60405180910390a150565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610640565b6008805461065e9061200e565b5f73ffffffffffffffffffffffffffffffffffffffff8216610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610640565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b600b602052815f5260405f208181548110610f13575f80fd5b905f5260205f20015f91509150505481565b6001805461065e9061200e565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f6001600a541115611006576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600a5560075473ffffffffffffffffffffffffffffffffffffffff16331461107e576007546040517f625a43fe00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff83166110cb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f829003611105576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600954806111138161221a565b5f818152600b602090815260408220805460018101825590835291200184905560098190559150611146905083826116dd565b807f17139772d2eecff1a9acaf38c64bfda7c833f94bf253bbdc6353c31e2f50712c8360405161117891815260200190565b60405180910390a26001600a5592915050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146111fe576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff811661124b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b60065473ffffffffffffffffffffffffffffffffffffffff16331461132c576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff8116611379576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b5f806113f284610dbc565b905073ffffffffffffffffffffffffffffffffffffffff81163314611468576040517f10c932fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015233602482015260448101859052606401610640565b5f8390036114a2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f848152600b60209081526040808320805460018082018355918552938390209093018690555185815291935085917f4d9628eae8c81a6e4982f671587b937bacf76b149b3458fb5a8aec776b4c129a910160405180910390a25092915050565b61150e858585610824565b73ffffffffffffffffffffffffffffffffffffffff84163b15611650576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a02906115879033908a90899089908990600401612251565b6020604051808303815f875af11580156115a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c7919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050505050565b60605f6116638361183b565b905060086040518060400160405280600981526020017f66303137303132323000000000000000000000000000000000000000000000008152506116a6836118d5565b6116b3608085901b6118d5565b6040516020016116c694939291906122ce565b604051602081830303815290604052915050919050565b6116e78282611abd565b73ffffffffffffffffffffffffffffffffffffffff82163b15611837576040517f150b7a02000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303815f875af115801561178a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ae919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050565b5f808211801561184d57506009548211155b156118a0575f828152600b602052604081205461186c90600190612373565b5f848152600b602052604090208054919250908290811061188f5761188f612386565b905f5260205f200154915050919050565b6040517f0ede975900000000000000000000000000000000000000000000000000000000815260048101839052602401610640565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091167fffffffff0000000000000000000000000000000000000000000000000000000084161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790611a59827f06060606060606060606060606060606060606060606060606060606060606066120a7565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f166027611a8991906123b3565b611ab3827f30303030303030303030303030303030303030303030303030303030303030306120a7565b61059391906120a7565b73ffffffffffffffffffffffffffffffffffffffff8216611b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c81575f80fd5b50565b5f60208284031215611c94575f80fd5b8135611c9f81611c54565b9392505050565b5f60208284031215611cb6575f80fd5b5035919050565b5f604082018483526020604060208501528185518084526060860191506020870193505f5b81811015611cfe57845183529383019391830191600101611ce2565b5090979650505050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cc3575f80fd5b5f8060408385031215611d92575f80fd5b611d9b83611d5e565b946020939093013593505050565b5f805f60608486031215611dbb575f80fd5b611dc484611d5e565b9250611dd260208501611d5e565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215611e1f575f80fd5b813567ffffffffffffffff80821115611e36575f80fd5b818401915084601f830112611e49575f80fd5b813581811115611e5b57611e5b611de2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ea157611ea1611de2565b81604052828152876020848701011115611eb9575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f60208284031215611ee8575f80fd5b611c9f82611d5e565b5f8060408385031215611f02575f80fd5b50508035926020909101359150565b5f8060408385031215611f22575f80fd5b611f2b83611d5e565b915060208301358015158114611f3f575f80fd5b809150509250929050565b5f805f805f60808688031215611f5e575f80fd5b611f6786611d5e565b9450611f7560208701611d5e565b935060408601359250606086013567ffffffffffffffff80821115611f98575f80fd5b818801915088601f830112611fab575f80fd5b813581811115611fb9575f80fd5b896020828501011115611fca575f80fd5b9699959850939650602001949392505050565b5f8060408385031215611fee575f80fd5b611ff783611d5e565b915061200560208401611d5e565b90509250929050565b600181811c9082168061202257607f821691505b602082108103612059577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f6020828403121561206f575f80fd5b8151611c9f81611c54565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156105935761059361207a565b601f821115610c4557805f5260205f20601f840160051c810160208510156120df5750805b601f840160051c820191505b81811015611650575f81556001016120eb565b815167ffffffffffffffff81111561211857612118611de2565b61212c81612126845461200e565b846120ba565b602080601f83116001811461217e575f84156121485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612212565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156121ca578886015182559484019460019091019084016121ab565b508582101561220657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361224a5761224a61207a565b5060010190565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b5f8086546122db8161200e565b600182811680156122f3576001811461232657612352565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612352565b8a5f526020805f205f5b858110156123495781548a820152908401908201612330565b50505082870194505b5050505085518060208801835e019384525050602082015260400192915050565b818103818111156105935761059361207a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820281158282048414176105935761059361207a56fea26469706673582212206f822548ee95abe6a6808e1d1773217cbcd3d3cd828c2295373bd8c2e304353e64736f6c63430008190033", - "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806370a08231116100f3578063a3fbbaae11610093578063b88d4fde1161006e578063b88d4fde14610426578063c87b56dd14610439578063e985e9c51461044c578063ffa1ad7414610479575f80fd5b8063a3fbbaae146103ed578063a6f9dae114610400578063b1f52e8014610413575f80fd5b80638da5cb5b116100ce5780638da5cb5b1461039f57806395d89b41146103bf578063a22cb465146103c7578063a3def923146103da575f80fd5b806370a082311461033d5780637647a90c146103505780637c5e63e014610363575f80fd5b806342842e0e1161015e5780634f6ccce7116101395780634f6ccce7146102fc57806355f804b31461030f5780636352211e146103225780636c0360eb14610335575f80fd5b806342842e0e146102b6578063481c6a75146102c95780634f558e79146102e9575f80fd5b8063081812fc11610199578063081812fc1461021d578063095ea7b31461027757806318160ddd1461028c57806323b872dd146102a3575f80fd5b806301ffc9a7146101bf57806302a8ca10146101e757806306fdde0314610208575b5f80fd5b6101d26101cd366004611c84565b6104b5565b60405190151581526020015b60405180910390f35b6101fa6101f5366004611ca6565b610599565b6040516101de929190611cbd565b610210610652565b6040516101de9190611d0b565b61025261022b366004611ca6565b60046020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b61028a610285366004611d81565b6106dd565b005b61029560095481565b6040519081526020016101de565b61028a6102b1366004611da9565b610824565b61028a6102c4366004611da9565b610ae7565b6007546102529073ffffffffffffffffffffffffffffffffffffffff1681565b6101d26102f7366004611ca6565b610c4a565b61029561030a366004611ca6565b610c6b565b61028a61031d366004611e0f565b610cc8565b610252610330366004611ca6565b610dbc565b610210610e47565b61029561034b366004611ed8565b610e54565b61029561035e366004611ef1565b610efa565b6102106040518060400160405280600981526020017f663031373031323230000000000000000000000000000000000000000000000081525081565b6006546102529073ffffffffffffffffffffffffffffffffffffffff1681565b610210610f25565b61028a6103d5366004611f11565b610f32565b6102956103e8366004611d81565b610fc8565b61028a6103fb366004611ed8565b61118b565b61028a61040e366004611ed8565b6112b9565b6101d2610421366004611ef1565b6113e7565b61028a610434366004611f4a565b611503565b610210610447366004611ca6565b611657565b6101d261045a366004611fdd565b600560209081525f928352604080842090915290825290205460ff1681565b6102106040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061054757507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061059357507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f60605f831180156105ad57506009548311155b1561060f575f838152600b60209081526040918290208054835181840281018401909452808452909183018282801561060357602002820191905f5260205f20905b8154815260200190600101908083116105ef575b50505050509050610649565b6040517f0ede9759000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b80519150915091565b5f805461065e9061200e565b80601f016020809104026020016040519081016040528092919081815260200182805461068a9061200e565b80156106d55780601f106106ac576101008083540402835291602001916106d5565b820191905f5260205f20905b8154815290600101906020018083116106b857829003601f168201915b505050505081565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061073e575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff165b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b5f8281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116146108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8216610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b3373ffffffffffffffffffffffffffffffffffffffff84161480610983575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b806109b057505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b610a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610af2838383610824565b73ffffffffffffffffffffffffffffffffffffffff82163b15610c45576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610b98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbc919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b505050565b5f80821180156105935750600954610c639060016120a7565b821092915050565b5f610c778260016120a7565b9050600954811115610cc3576009546040517f7ae59685000000000000000000000000000000000000000000000000000000008152610640918391600401918252602082015260400190565b919050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610d3b576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b80515f03610d75576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008610d8182826120fe565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf681604051610db19190611d0b565b60405180910390a150565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610640565b6008805461065e9061200e565b5f73ffffffffffffffffffffffffffffffffffffffff8216610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610640565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b600b602052815f5260405f208181548110610f13575f80fd5b905f5260205f20015f91509150505481565b6001805461065e9061200e565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f6001600a541115611006576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600a5560075473ffffffffffffffffffffffffffffffffffffffff16331461107e576007546040517f625a43fe00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff83166110cb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f829003611105576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600954806111138161221a565b5f818152600b602090815260408220805460018101825590835291200184905560098190559150611146905083826116dd565b807f17139772d2eecff1a9acaf38c64bfda7c833f94bf253bbdc6353c31e2f50712c8360405161117891815260200190565b60405180910390a26001600a5592915050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146111fe576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff811661124b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b60065473ffffffffffffffffffffffffffffffffffffffff16331461132c576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff8116611379576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b5f806113f284610dbc565b905073ffffffffffffffffffffffffffffffffffffffff81163314611468576040517f10c932fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015233602482015260448101859052606401610640565b5f8390036114a2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f848152600b60209081526040808320805460018082018355918552938390209093018690555185815291935085917f4d9628eae8c81a6e4982f671587b937bacf76b149b3458fb5a8aec776b4c129a910160405180910390a25092915050565b61150e858585610824565b73ffffffffffffffffffffffffffffffffffffffff84163b15611650576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a02906115879033908a90899089908990600401612251565b6020604051808303815f875af11580156115a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c7919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050505050565b60605f6116638361183b565b905060086040518060400160405280600981526020017f66303137303132323000000000000000000000000000000000000000000000008152506116a6836118d5565b6116b3608085901b6118d5565b6040516020016116c694939291906122ce565b604051602081830303815290604052915050919050565b6116e78282611abd565b73ffffffffffffffffffffffffffffffffffffffff82163b15611837576040517f150b7a02000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303815f875af115801561178a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ae919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050565b5f808211801561184d57506009548211155b156118a0575f828152600b602052604081205461186c90600190612373565b5f848152600b602052604090208054919250908290811061188f5761188f612386565b905f5260205f200154915050919050565b6040517f0ede975900000000000000000000000000000000000000000000000000000000815260048101839052602401610640565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091167fffffffff0000000000000000000000000000000000000000000000000000000084161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790611a59827f06060606060606060606060606060606060606060606060606060606060606066120a7565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f166027611a8991906123b3565b611ab3827f30303030303030303030303030303030303030303030303030303030303030306120a7565b61059391906120a7565b73ffffffffffffffffffffffffffffffffffffffff8216611b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c81575f80fd5b50565b5f60208284031215611c94575f80fd5b8135611c9f81611c54565b9392505050565b5f60208284031215611cb6575f80fd5b5035919050565b5f604082018483526020604060208501528185518084526060860191506020870193505f5b81811015611cfe57845183529383019391830191600101611ce2565b5090979650505050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cc3575f80fd5b5f8060408385031215611d92575f80fd5b611d9b83611d5e565b946020939093013593505050565b5f805f60608486031215611dbb575f80fd5b611dc484611d5e565b9250611dd260208501611d5e565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215611e1f575f80fd5b813567ffffffffffffffff80821115611e36575f80fd5b818401915084601f830112611e49575f80fd5b813581811115611e5b57611e5b611de2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ea157611ea1611de2565b81604052828152876020848701011115611eb9575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f60208284031215611ee8575f80fd5b611c9f82611d5e565b5f8060408385031215611f02575f80fd5b50508035926020909101359150565b5f8060408385031215611f22575f80fd5b611f2b83611d5e565b915060208301358015158114611f3f575f80fd5b809150509250929050565b5f805f805f60808688031215611f5e575f80fd5b611f6786611d5e565b9450611f7560208701611d5e565b935060408601359250606086013567ffffffffffffffff80821115611f98575f80fd5b818801915088601f830112611fab575f80fd5b813581811115611fb9575f80fd5b896020828501011115611fca575f80fd5b9699959850939650602001949392505050565b5f8060408385031215611fee575f80fd5b611ff783611d5e565b915061200560208401611d5e565b90509250929050565b600181811c9082168061202257607f821691505b602082108103612059577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f6020828403121561206f575f80fd5b8151611c9f81611c54565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156105935761059361207a565b601f821115610c4557805f5260205f20601f840160051c810160208510156120df5750805b601f840160051c820191505b81811015611650575f81556001016120eb565b815167ffffffffffffffff81111561211857612118611de2565b61212c81612126845461200e565b846120ba565b602080601f83116001811461217e575f84156121485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612212565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156121ca578886015182559484019460019091019084016121ab565b508582101561220657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361224a5761224a61207a565b5060010190565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b5f8086546122db8161200e565b600182811680156122f3576001811461232657612352565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612352565b8a5f526020805f205f5b858110156123495781548a820152908401908201612330565b50505082870194505b5050505085518060208801835e019384525050602082015260400192915050565b818103818111156105935761059361207a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820281158282048414176105935761059361207a56fea26469706673582212206f822548ee95abe6a6808e1d1773217cbcd3d3cd828c2295373bd8c2e304353e64736f6c63430008190033", + "bytecode": "0x60806040526001600a55348015610014575f80fd5b506040516126e73803806126e783398101604081905261003391610116565b82825f610040838261021b565b50600161004d828261021b565b506008915061005e9050828261021b565b5050600680546001600160a01b03191633179055506102da9050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f83011261009d575f80fd5b81516001600160401b03808211156100b7576100b761007a565b604051601f8301601f19908116603f011681019082821181831017156100df576100df61007a565b816040528381528660208588010111156100f7575f80fd5b8360208701602083015e5f602085830101528094505050505092915050565b5f805f60608486031215610128575f80fd5b83516001600160401b038082111561013e575f80fd5b61014a8783880161008e565b9450602086015191508082111561015f575f80fd5b61016b8783880161008e565b93506040860151915080821115610180575f80fd5b5061018d8682870161008e565b9150509250925092565b600181811c908216806101ab57607f821691505b6020821081036101c957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561021657805f5260205f20601f840160051c810160208510156101f45750805b601f840160051c820191505b81811015610213575f8155600101610200565b50505b505050565b81516001600160401b038111156102345761023461007a565b610248816102428454610197565b846101cf565b602080601f83116001811461027b575f84156102645750858301515b5f19600386901b1c1916600185901b1785556102d2565b5f85815260208120601f198616915b828110156102a95788860151825594840194600190910190840161028a565b50858210156102c657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b612400806102e75f395ff3fe608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806370a08231116100f3578063a3fbbaae11610093578063b88d4fde1161006e578063b88d4fde14610426578063c87b56dd14610439578063e985e9c51461044c578063ffa1ad7414610479575f80fd5b8063a3fbbaae146103ed578063a6f9dae114610400578063b1f52e8014610413575f80fd5b80638da5cb5b116100ce5780638da5cb5b1461039f57806395d89b41146103bf578063a22cb465146103c7578063a3def923146103da575f80fd5b806370a082311461033d5780637647a90c146103505780637c5e63e014610363575f80fd5b806342842e0e1161015e5780634f6ccce7116101395780634f6ccce7146102fc57806355f804b31461030f5780636352211e146103225780636c0360eb14610335575f80fd5b806342842e0e146102b6578063481c6a75146102c95780634f558e79146102e9575f80fd5b8063081812fc11610199578063081812fc1461021d578063095ea7b31461027757806318160ddd1461028c57806323b872dd146102a3575f80fd5b806301ffc9a7146101bf57806302a8ca10146101e757806306fdde0314610208575b5f80fd5b6101d26101cd366004611c84565b6104b5565b60405190151581526020015b60405180910390f35b6101fa6101f5366004611ca6565b610599565b6040516101de929190611cbd565b610210610652565b6040516101de9190611d0b565b61025261022b366004611ca6565b60046020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b61028a610285366004611d81565b6106dd565b005b61029560095481565b6040519081526020016101de565b61028a6102b1366004611da9565b610824565b61028a6102c4366004611da9565b610ae7565b6007546102529073ffffffffffffffffffffffffffffffffffffffff1681565b6101d26102f7366004611ca6565b610c4a565b61029561030a366004611ca6565b610c6b565b61028a61031d366004611e0f565b610cc8565b610252610330366004611ca6565b610dbc565b610210610e47565b61029561034b366004611ed8565b610e54565b61029561035e366004611ef1565b610efa565b6102106040518060400160405280600981526020017f663031373031323230000000000000000000000000000000000000000000000081525081565b6006546102529073ffffffffffffffffffffffffffffffffffffffff1681565b610210610f25565b61028a6103d5366004611f11565b610f32565b6102956103e8366004611d81565b610fc8565b61028a6103fb366004611ed8565b61118b565b61028a61040e366004611ed8565b6112b9565b6101d2610421366004611ef1565b6113e7565b61028a610434366004611f4a565b611503565b610210610447366004611ca6565b611657565b6101d261045a366004611fdd565b600560209081525f928352604080842090915290825290205460ff1681565b6102106040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061054757507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061059357507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f60605f831180156105ad57506009548311155b1561060f575f838152600b60209081526040918290208054835181840281018401909452808452909183018282801561060357602002820191905f5260205f20905b8154815260200190600101908083116105ef575b50505050509050610649565b6040517f0ede9759000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b80519150915091565b5f805461065e9061200e565b80601f016020809104026020016040519081016040528092919081815260200182805461068a9061200e565b80156106d55780601f106106ac576101008083540402835291602001916106d5565b820191905f5260205f20905b8154815290600101906020018083116106b857829003601f168201915b505050505081565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061073e575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff165b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b5f8281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116146108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8216610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b3373ffffffffffffffffffffffffffffffffffffffff84161480610983575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b806109b057505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b610a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610af2838383610824565b73ffffffffffffffffffffffffffffffffffffffff82163b15610c45576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610b98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbc919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b505050565b5f80821180156105935750600954610c639060016120a7565b821092915050565b5f610c778260016120a7565b9050600954811115610cc3576009546040517f7ae59685000000000000000000000000000000000000000000000000000000008152610640918391600401918252602082015260400190565b919050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610d3b576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b80515f03610d75576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008610d8182826120fe565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf681604051610db19190611d0b565b60405180910390a150565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610640565b6008805461065e9061200e565b5f73ffffffffffffffffffffffffffffffffffffffff8216610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610640565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b600b602052815f5260405f208181548110610f13575f80fd5b905f5260205f20015f91509150505481565b6001805461065e9061200e565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f6001600a541115611006576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600a5560075473ffffffffffffffffffffffffffffffffffffffff16331461107e576007546040517f625a43fe00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff83166110cb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f829003611105576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600954806111138161221a565b5f818152600b602090815260408220805460018101825590835291200184905560098190559150611146905083826116dd565b807f17139772d2eecff1a9acaf38c64bfda7c833f94bf253bbdc6353c31e2f50712c8360405161117891815260200190565b60405180910390a26001600a5592915050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146111fe576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff811661124b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b60065473ffffffffffffffffffffffffffffffffffffffff16331461132c576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff8116611379576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b5f806113f284610dbc565b905073ffffffffffffffffffffffffffffffffffffffff81163314611468576040517f10c932fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015233602482015260448101859052606401610640565b5f8390036114a2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f848152600b60209081526040808320805460018082018355918552938390209093018690555185815291935085917f4d9628eae8c81a6e4982f671587b937bacf76b149b3458fb5a8aec776b4c129a910160405180910390a25092915050565b61150e858585610824565b73ffffffffffffffffffffffffffffffffffffffff84163b15611650576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a02906115879033908a90899089908990600401612251565b6020604051808303815f875af11580156115a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c7919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050505050565b60605f6116638361183b565b905060086040518060400160405280600981526020017f66303137303132323000000000000000000000000000000000000000000000008152506116a6836118d5565b6116b3608085901b6118d5565b6040516020016116c694939291906122ce565b604051602081830303815290604052915050919050565b6116e78282611abd565b73ffffffffffffffffffffffffffffffffffffffff82163b15611837576040517f150b7a02000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303815f875af115801561178a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ae919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050565b5f808211801561184d57506009548211155b156118a0575f828152600b602052604081205461186c90600190612373565b5f848152600b602052604090208054919250908290811061188f5761188f612386565b905f5260205f200154915050919050565b6040517f0ede975900000000000000000000000000000000000000000000000000000000815260048101839052602401610640565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091167fffffffff0000000000000000000000000000000000000000000000000000000084161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790611a59827f06060606060606060606060606060606060606060606060606060606060606066120a7565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f166027611a8991906123b3565b611ab3827f30303030303030303030303030303030303030303030303030303030303030306120a7565b61059391906120a7565b73ffffffffffffffffffffffffffffffffffffffff8216611b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c81575f80fd5b50565b5f60208284031215611c94575f80fd5b8135611c9f81611c54565b9392505050565b5f60208284031215611cb6575f80fd5b5035919050565b5f604082018483526020604060208501528185518084526060860191506020870193505f5b81811015611cfe57845183529383019391830191600101611ce2565b5090979650505050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cc3575f80fd5b5f8060408385031215611d92575f80fd5b611d9b83611d5e565b946020939093013593505050565b5f805f60608486031215611dbb575f80fd5b611dc484611d5e565b9250611dd260208501611d5e565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215611e1f575f80fd5b813567ffffffffffffffff80821115611e36575f80fd5b818401915084601f830112611e49575f80fd5b813581811115611e5b57611e5b611de2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ea157611ea1611de2565b81604052828152876020848701011115611eb9575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f60208284031215611ee8575f80fd5b611c9f82611d5e565b5f8060408385031215611f02575f80fd5b50508035926020909101359150565b5f8060408385031215611f22575f80fd5b611f2b83611d5e565b915060208301358015158114611f3f575f80fd5b809150509250929050565b5f805f805f60808688031215611f5e575f80fd5b611f6786611d5e565b9450611f7560208701611d5e565b935060408601359250606086013567ffffffffffffffff80821115611f98575f80fd5b818801915088601f830112611fab575f80fd5b813581811115611fb9575f80fd5b896020828501011115611fca575f80fd5b9699959850939650602001949392505050565b5f8060408385031215611fee575f80fd5b611ff783611d5e565b915061200560208401611d5e565b90509250929050565b600181811c9082168061202257607f821691505b602082108103612059577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f6020828403121561206f575f80fd5b8151611c9f81611c54565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156105935761059361207a565b601f821115610c4557805f5260205f20601f840160051c810160208510156120df5750805b601f840160051c820191505b81811015611650575f81556001016120eb565b815167ffffffffffffffff81111561211857612118611de2565b61212c81612126845461200e565b846120ba565b602080601f83116001811461217e575f84156121485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612212565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156121ca578886015182559484019460019091019084016121ab565b508582101561220657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361224a5761224a61207a565b5060010190565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b5f8086546122db8161200e565b600182811680156122f3576001811461232657612352565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612352565b8a5f526020805f205f5b858110156123495781548a820152908401908201612330565b50505082870194505b5050505085518060208801835e019384525050602082015260400192915050565b818103818111156105935761059361207a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820281158282048414176105935761059361207a56fea264697066735822122093c35c6f2ec38494fd632ad08996d02fddbc4629eadfddfaffba3e52ce23cb6d64736f6c63430008190033", + "deployedBytecode": "0x608060405234801561000f575f80fd5b50600436106101bb575f3560e01c806370a08231116100f3578063a3fbbaae11610093578063b88d4fde1161006e578063b88d4fde14610426578063c87b56dd14610439578063e985e9c51461044c578063ffa1ad7414610479575f80fd5b8063a3fbbaae146103ed578063a6f9dae114610400578063b1f52e8014610413575f80fd5b80638da5cb5b116100ce5780638da5cb5b1461039f57806395d89b41146103bf578063a22cb465146103c7578063a3def923146103da575f80fd5b806370a082311461033d5780637647a90c146103505780637c5e63e014610363575f80fd5b806342842e0e1161015e5780634f6ccce7116101395780634f6ccce7146102fc57806355f804b31461030f5780636352211e146103225780636c0360eb14610335575f80fd5b806342842e0e146102b6578063481c6a75146102c95780634f558e79146102e9575f80fd5b8063081812fc11610199578063081812fc1461021d578063095ea7b31461027757806318160ddd1461028c57806323b872dd146102a3575f80fd5b806301ffc9a7146101bf57806302a8ca10146101e757806306fdde0314610208575b5f80fd5b6101d26101cd366004611c84565b6104b5565b60405190151581526020015b60405180910390f35b6101fa6101f5366004611ca6565b610599565b6040516101de929190611cbd565b610210610652565b6040516101de9190611d0b565b61025261022b366004611ca6565b60046020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101de565b61028a610285366004611d81565b6106dd565b005b61029560095481565b6040519081526020016101de565b61028a6102b1366004611da9565b610824565b61028a6102c4366004611da9565b610ae7565b6007546102529073ffffffffffffffffffffffffffffffffffffffff1681565b6101d26102f7366004611ca6565b610c4a565b61029561030a366004611ca6565b610c6b565b61028a61031d366004611e0f565b610cc8565b610252610330366004611ca6565b610dbc565b610210610e47565b61029561034b366004611ed8565b610e54565b61029561035e366004611ef1565b610efa565b6102106040518060400160405280600981526020017f663031373031323230000000000000000000000000000000000000000000000081525081565b6006546102529073ffffffffffffffffffffffffffffffffffffffff1681565b610210610f25565b61028a6103d5366004611f11565b610f32565b6102956103e8366004611d81565b610fc8565b61028a6103fb366004611ed8565b61118b565b61028a61040e366004611ed8565b6112b9565b6101d2610421366004611ef1565b6113e7565b61028a610434366004611f4a565b611503565b610210610447366004611ca6565b611657565b6101d261045a366004611fdd565b600560209081525f928352604080842090915290825290205460ff1681565b6102106040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316148061054757507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061059357507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b5f60605f831180156105ad57506009548311155b1561060f575f838152600b60209081526040918290208054835181840281018401909452808452909183018282801561060357602002820191905f5260205f20905b8154815260200190600101908083116105ef575b50505050509050610649565b6040517f0ede9759000000000000000000000000000000000000000000000000000000008152600481018490526024015b60405180910390fd5b80519150915091565b5f805461065e9061200e565b80601f016020809104026020016040519081016040528092919081815260200182805461068a9061200e565b80156106d55780601f106106ac576101008083540402835291602001916106d5565b820191905f5260205f20905b8154815290600101906020018083116106b857829003601f168201915b505050505081565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff163381148061073e575073ffffffffffffffffffffffffffffffffffffffff81165f90815260056020908152604080832033845290915290205460ff165b6107a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b5f8281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116146108b3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8216610930576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b3373ffffffffffffffffffffffffffffffffffffffff84161480610983575073ffffffffffffffffffffffffffffffffffffffff83165f90815260056020908152604080832033845290915290205460ff165b806109b057505f8181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b610a16576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff8084165f81815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b610af2838383610824565b73ffffffffffffffffffffffffffffffffffffffff82163b15610c45576040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401525f608484015290919084169063150b7a029060a4016020604051808303815f875af1158015610b98573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bbc919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614610c45576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b505050565b5f80821180156105935750600954610c639060016120a7565b821092915050565b5f610c778260016120a7565b9050600954811115610cc3576009546040517f7ae59685000000000000000000000000000000000000000000000000000000008152610640918391600401918252602082015260400190565b919050565b60065473ffffffffffffffffffffffffffffffffffffffff163314610d3b576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b80515f03610d75576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6008610d8182826120fe565b507f5411e8ebf1636d9e83d5fc4900bf80cbac82e8790da2a4c94db4895e889eedf681604051610db19190611d0b565b60405180910390a150565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610cc3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610640565b6008805461065e9061200e565b5f73ffffffffffffffffffffffffffffffffffffffff8216610ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610640565b5073ffffffffffffffffffffffffffffffffffffffff165f9081526003602052604090205490565b600b602052815f5260405f208181548110610f13575f80fd5b905f5260205f20015f91509150505481565b6001805461065e9061200e565b335f81815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b5f6001600a541115611006576040517f8beb9d1600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600a5560075473ffffffffffffffffffffffffffffffffffffffff16331461107e576007546040517f625a43fe00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff83166110cb576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f829003611105576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50600954806111138161221a565b5f818152600b602090815260408220805460018101825590835291200184905560098190559150611146905083826116dd565b807f17139772d2eecff1a9acaf38c64bfda7c833f94bf253bbdc6353c31e2f50712c8360405161117891815260200190565b60405180910390a26001600a5592915050565b60065473ffffffffffffffffffffffffffffffffffffffff1633146111fe576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff811661124b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f2c1c11af44aa5608f1dca38c00275c30ea091e02417d36e70e9a1538689c433d905f90a250565b60065473ffffffffffffffffffffffffffffffffffffffff16331461132c576006546040517fa43d6ada00000000000000000000000000000000000000000000000000000000815233600482015273ffffffffffffffffffffffffffffffffffffffff9091166024820152604401610640565b73ffffffffffffffffffffffffffffffffffffffff8116611379576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040517f4ffd725fc4a22075e9ec71c59edf9c38cdeb588a91b24fc5b61388c5be41282b905f90a250565b5f806113f284610dbc565b905073ffffffffffffffffffffffffffffffffffffffff81163314611468576040517f10c932fe00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015233602482015260448101859052606401610640565b5f8390036114a2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f848152600b60209081526040808320805460018082018355918552938390209093018690555185815291935085917f4d9628eae8c81a6e4982f671587b937bacf76b149b3458fb5a8aec776b4c129a910160405180910390a25092915050565b61150e858585610824565b73ffffffffffffffffffffffffffffffffffffffff84163b15611650576040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a02906115879033908a90899089908990600401612251565b6020604051808303815f875af11580156115a3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c7919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611650576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050505050565b60605f6116638361183b565b905060086040518060400160405280600981526020017f66303137303132323000000000000000000000000000000000000000000000008152506116a6836118d5565b6116b3608085901b6118d5565b6040516020016116c694939291906122ce565b604051602081830303815290604052915050919050565b6116e78282611abd565b73ffffffffffffffffffffffffffffffffffffffff82163b15611837576040517f150b7a02000000000000000000000000000000000000000000000000000000008082523360048301525f60248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303815f875af115801561178a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ae919061205f565b7fffffffff000000000000000000000000000000000000000000000000000000001614611837576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610640565b5050565b5f808211801561184d57506009548211155b156118a0575f828152600b602052604081205461186c90600190612373565b5f848152600b602052604090208054919250908290811061188f5761188f612386565b905f5260205f200154915050919050565b6040517f0ede975900000000000000000000000000000000000000000000000000000000815260048101839052602401610640565b7aff00000000000000ff00000000000000ff00000000000000ff00006bffffffff0000000000000000604083901c9081167bffffffff00000000000000000000000000000000000000000000000084161760201c6fffffffff000000000000000000000000919091167fffffffff0000000000000000000000000000000000000000000000000000000084161717601081901c9182167eff00000000000000ff00000000000000ff00000000000000ff000000000000821617600890811c7bff00000000000000ff00000000000000ff00000000000000ff000000939093167fff00000000000000ff00000000000000ff00000000000000ff000000000000009290921691909117919091179081901c7e0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f167f0f000f000f000f000f000f000f000f000f000f000f000f000f000f000f000f00600492831c161790611a59827f06060606060606060606060606060606060606060606060606060606060606066120a7565b901c7f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f166027611a8991906123b3565b611ab3827f30303030303030303030303030303030303030303030303030303030303030306120a7565b61059391906120a7565b73ffffffffffffffffffffffffffffffffffffffff8216611b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610640565b5f8181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615611bc5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610640565b73ffffffffffffffffffffffffffffffffffffffff82165f81815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff0000000000000000000000000000000000000000000000000000000081168114611c81575f80fd5b50565b5f60208284031215611c94575f80fd5b8135611c9f81611c54565b9392505050565b5f60208284031215611cb6575f80fd5b5035919050565b5f604082018483526020604060208501528185518084526060860191506020870193505f5b81811015611cfe57845183529383019391830191600101611ce2565b5090979650505050505050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610cc3575f80fd5b5f8060408385031215611d92575f80fd5b611d9b83611d5e565b946020939093013593505050565b5f805f60608486031215611dbb575f80fd5b611dc484611d5e565b9250611dd260208501611d5e565b9150604084013590509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f60208284031215611e1f575f80fd5b813567ffffffffffffffff80821115611e36575f80fd5b818401915084601f830112611e49575f80fd5b813581811115611e5b57611e5b611de2565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715611ea157611ea1611de2565b81604052828152876020848701011115611eb9575f80fd5b826020860160208301375f928101602001929092525095945050505050565b5f60208284031215611ee8575f80fd5b611c9f82611d5e565b5f8060408385031215611f02575f80fd5b50508035926020909101359150565b5f8060408385031215611f22575f80fd5b611f2b83611d5e565b915060208301358015158114611f3f575f80fd5b809150509250929050565b5f805f805f60808688031215611f5e575f80fd5b611f6786611d5e565b9450611f7560208701611d5e565b935060408601359250606086013567ffffffffffffffff80821115611f98575f80fd5b818801915088601f830112611fab575f80fd5b813581811115611fb9575f80fd5b896020828501011115611fca575f80fd5b9699959850939650602001949392505050565b5f8060408385031215611fee575f80fd5b611ff783611d5e565b915061200560208401611d5e565b90509250929050565b600181811c9082168061202257607f821691505b602082108103612059577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b5f6020828403121561206f575f80fd5b8151611c9f81611c54565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b808201808211156105935761059361207a565b601f821115610c4557805f5260205f20601f840160051c810160208510156120df5750805b601f840160051c820191505b81811015611650575f81556001016120eb565b815167ffffffffffffffff81111561211857612118611de2565b61212c81612126845461200e565b846120ba565b602080601f83116001811461217e575f84156121485750858301515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600386901b1c1916600185901b178555612212565b5f858152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08616915b828110156121ca578886015182559484019460019091019084016121ab565b508582101561220657878501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600388901b60f8161c191681555b505060018460011b0185555b505050505050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361224a5761224a61207a565b5060010190565b5f73ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a08401375f60a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f85011683010190509695505050505050565b5f8086546122db8161200e565b600182811680156122f3576001811461232657612352565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0084168752821515830287019450612352565b8a5f526020805f205f5b858110156123495781548a820152908401908201612330565b50505082870194505b5050505085518060208801835e019384525050602082015260400192915050565b818103818111156105935761059361207a565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b80820281158282048414176105935761059361207a56fea264697066735822122093c35c6f2ec38494fd632ad08996d02fddbc4629eadfddfaffba3e52ce23cb6d64736f6c63430008190033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/contracts/AgentRegistry.sol b/contracts/AgentRegistry.sol index c13b1d5..5a43b15 100644 --- a/contracts/AgentRegistry.sol +++ b/contracts/AgentRegistry.sol @@ -1,5 +1,5 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.8.21; +pragma solidity ^0.8.25; import {GenericRegistry} from "../lib/autonolas-registries/contracts/GenericRegistry.sol"; import {ERC721} from "../lib/autonolas-registries/lib/solmate/src/tokens/ERC721.sol"; @@ -8,11 +8,11 @@ import {ERC721} from "../lib/autonolas-registries/lib/solmate/src/tokens/ERC721. /// @param sender Sender address. /// @param owner Required sender address as an owner. /// @param agentId Agent Id. - error OperatorOnly(address sender, address owner, uint256 agentId); +error OperatorOnly(address sender, address owner, uint256 agentId); /// @dev Agent does not exist. /// @param agentId Agent Id. - error AgentNotFound(uint256 agentId); +error AgentNotFound(uint256 agentId); /// @title Agent Registry - Smart contract for registering agents contract AgentRegistry is GenericRegistry { @@ -30,7 +30,7 @@ contract AgentRegistry is GenericRegistry { /// @param _symbol Agent registry contract symbol. /// @param _baseURI Agent registry token base URI. constructor(string memory _name, string memory _symbol, string memory _baseURI) - ERC721(_name, _symbol) + ERC721(_name, _symbol) { baseURI = _baseURI; owner = msg.sender; @@ -126,4 +126,4 @@ contract AgentRegistry is GenericRegistry { revert AgentNotFound(agentId); } } -} \ No newline at end of file +}