diff --git a/ProjectPlugins/CodexClient/openapi.yaml b/ProjectPlugins/CodexClient/openapi.yaml index f7cb4ec9..b6259012 100644 --- a/ProjectPlugins/CodexClient/openapi.yaml +++ b/ProjectPlugins/CodexClient/openapi.yaml @@ -163,6 +163,14 @@ components: totalCollateral: type: string description: Total collateral (in amount of tokens) that can be used for matching requests + enabled: + type: boolean + description: Enable the ability to receive sales on this availability. + default: true + until: + type: integer + description: Specifies the latest timestamp, after which the availability will no longer host any slots. If set to 0, there will be no restrictions. + default: 0 SalesAvailabilityREAD: allOf: @@ -239,6 +247,9 @@ components: slotIndex: type: string description: Slot Index as decimal string + validUntil: + type: integer + description: Timestamp after which the reservation will no longer be valid. StorageRequestCreation: type: object @@ -704,7 +715,7 @@ paths: "400": description: Invalid data input "422": - description: Not enough node's storage quota available + description: Not enough node's storage quota available or the provided parameters did not pass validation "500": description: Error reserving availability "503": @@ -737,7 +748,7 @@ paths: "404": description: Availability not found "422": - description: Not enough node's storage quota available + description: The provided parameters did not pass validation "500": description: Error reserving availability "503": @@ -800,6 +811,8 @@ paths: type: string "400": description: Invalid or missing Request ID + "422": + description: The storage request parameters are not valid "404": description: Request ID not found "503": diff --git a/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs b/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs index 545372f4..e46bbdd9 100644 --- a/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs +++ b/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs @@ -15,7 +15,7 @@ namespace CodexContractsPlugin.Marketplace public class MarketplaceDeploymentBase : ContractDeploymentMessage { - public static string BYTECODE = "0x60c060405234801561001057600080fd5b50604051614eb5380380614eb583398101604081905261002f9161053b565b602083015180516040850151516001805460ff191660ff90921691909117905582906001600160401b03811660000361007b5760405163015536c760e51b815260040160405180910390fd5b6001600160401b031660805261010043116100a9576040516338f5f66160e11b815260040160405180910390fd5b8151600280546020850151604086015160608701516001600160401b039586166001600160801b0319909416939093176801000000000000000095909216949094021761ffff60801b1916600160801b60ff9485160260ff60881b191617600160881b9390911692909202919091178155608083015183919060039061012f90826106d9565b5050600480546001600160a01b0319166001600160a01b0393841617905550831660a05250825151606460ff909116111561017d576040516302bd816360e41b815260040160405180910390fd5b606483600001516040015160ff1611156101aa576040516354e5e0ab60e11b815260040160405180910390fd5b825160408101516020909101516064916101c391610797565b60ff1611156101e5576040516317ff9d0f60e21b815260040160405180910390fd5b82518051600b805460208085015160408087015160609788015160ff90811663010000000263ff0000001992821662010000029290921663ffff0000199482166101000261ffff1990971698821698909817959095179290921695909517178355808801518051600c80549383015196830151978301518516600160881b0260ff60881b1998909516600160801b029790971661ffff60801b196001600160401b0397881668010000000000000000026001600160801b031990951697909216969096179290921791909116939093171783556080820151869391929190600d906102d090826106d9565b50505060408201515160038201805460ff191660ff909216919091179055606090910151600490910180546001600160401b0319166001600160401b03909216919091179055506107c8915050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156103575761035761031f565b60405290565b604051608081016001600160401b03811182821017156103575761035761031f565b604051601f8201601f191681016001600160401b03811182821017156103a7576103a761031f565b604052919050565b805160ff811681146103c057600080fd5b919050565b80516001600160401b03811681146103c057600080fd5b600060a082840312156103ee57600080fd5b6103f6610335565b9050610401826103c5565b815261040f602083016103c5565b6020820152610420604083016103af565b6040820152610431606083016103af565b606082015260808201516001600160401b0381111561044f57600080fd5b8201601f8101841361046057600080fd5b80516001600160401b038111156104795761047961031f565b61048c601f8201601f191660200161037f565b8181528560208385010111156104a157600080fd5b60005b828110156104c0576020818501810151838301820152016104a4565b5060006020838301015280608085015250505092915050565b6000602082840312156104eb57600080fd5b604051602081016001600160401b038111828210171561050d5761050d61031f565b60405290508061051c836103af565b905292915050565b80516001600160a01b03811681146103c057600080fd5b60008060006060848603121561055057600080fd5b83516001600160401b0381111561056657600080fd5b840180860360e081121561057957600080fd5b61058161035d565b608082121561058f57600080fd5b61059761035d565b91506105a2836103af565b82526105b0602084016103af565b60208301526105c1604084016103af565b60408301526105d2606084016103af565b60608301529081526080820151906001600160401b038211156105f457600080fd5b610600888385016103dc565b60208201526106128860a085016104d9565b604082015261062360c084016103c5565b6060820152945061063991505060208501610524565b915061064760408501610524565b90509250925092565b600181811c9082168061066457607f821691505b60208210810361068457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156106d457806000526020600020601f840160051c810160208510156106b15750805b601f840160051c820191505b818110156106d157600081556001016106bd565b50505b505050565b81516001600160401b038111156106f2576106f261031f565b610706816107008454610650565b8461068a565b6020601f82116001811461073a57600083156107225750848201515b600019600385901b1c1916600184901b1784556106d1565b600084815260208120601f198516915b8281101561076a578785015182556020948501946001909201910161074a565b50848210156107885786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60ff81811683821602908116908181146107c157634e487b7160e01b600052601160045260246000fd5b5092915050565b60805160a051614690610825600039600081816104bf01528181610f640152818161200d0152818161257e0152818161262e015281816127bd0152818161286d0152612c97015260008181613501015261379101526146906000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636e2b54ee116100f9578063c0cc4add11610097578063e8aa0a0711610071578063e8aa0a0714610461578063f752196b14610474578063fb1e61ca1461049d578063fc0c546a146104bd57600080fd5b8063c0cc4add14610428578063c5d433511461043b578063d02bbe331461044e57600080fd5b8063a29c29a4116100d3578063a29c29a4146103b2578063a3a0807e146103c5578063b396dc79146103e8578063be5cdc481461040857600080fd5b80636e2b54ee146103845780639777b72c1461039757806399b6da0c1461039f57600080fd5b8063329b5a0b1161016657806351a766421161014057806351a76642146103035780635da73835146103165780636b00c8cf1461032b5780636c70bee91461036f57600080fd5b8063329b5a0b14610298578063458d2bf1146102cb5780634641dce6146102de57600080fd5b806312827602116101a2578063128276021461022e5780631d873c1b14610241578063237d84821461025457806326d6f8341461026757600080fd5b806302fa8e65146101c957806305b90773146101f95780630aefaabe14610219575b600080fd5b6101dc6101d736600461385e565b6104e3565b6040516001600160401b0390911681526020015b60405180910390f35b61020c61020736600461385e565b6105c1565b6040516101f0919061388d565b61022c6102273660046138bc565b6106e4565b005b61022c61023c366004613923565b610877565b61022c61024f366004613966565b610948565b61022c610262366004613923565b610dee565b61028a61027536600461385e565b60009081526012602052604090206003015490565b6040519081526020016101f0565b6101dc6102a636600461385e565b600090815260116020526040902060020154600160c01b90046001600160401b031690565b61028a6102d936600461385e565b61103a565b6102f16102ec36600461385e565b611053565b60405160ff90911681526020016101f0565b61028a61031136600461385e565b611066565b61031e6110c5565b6040516101f091906139a6565b61035761033936600461385e565b6000908152601260205260409020600401546001600160a01b031690565b6040516001600160a01b0390911681526020016101f0565b6103776110ec565b6040516101f09190613a84565b61022c61039236600461385e565b611263565b61031e611270565b61022c6103ad366004613b0c565b61128f565b61022c6103c036600461385e565b6117d5565b6103d86103d336600461385e565b611827565b60405190151581526020016101f0565b6103fb6103f636600461385e565b611863565b6040516101f09190613c3b565b61041b61041636600461385e565b611b45565b6040516101f09190613c76565b6103d861043636600461385e565b611c13565b61022c610449366004613c8a565b611c26565b6103d861045c366004613923565b6120a7565b61022c61046f366004613caf565b612113565b6101dc61048236600461385e565b6000908152600660205260409020546001600160401b031690565b6104b06104ab36600461385e565b612243565b6040516101f09190613cdd565b7f0000000000000000000000000000000000000000000000000000000000000000610357565b6000806104ef836105c1565b9050600081600481111561050557610505613877565b14806105225750600181600481111561052057610520613877565b145b1561054e575050600090815260116020526040902060020154600160801b90046001600160401b031690565b600281600481111561056257610562613877565b0361058e575050600090815260116020526040902060020154600160c01b90046001600160401b031690565b6000838152601160205260409020600201546105ba90600160801b90046001600160401b031642612459565b9392505050565b60008181526010602052604081205482906001600160a01b03166105f857604051635eeb253d60e11b815260040160405180910390fd5b600083815260116020526040812090815460ff16600481111561061d5761061d613877565b14801561065c5750600084815260116020526040902060020154600160c01b90046001600160401b03166001600160401b0316426001600160401b0316115b1561066b5760029250506106de565b6001815460ff16600481111561068357610683613877565b14806106a457506000815460ff1660048111156106a2576106a2613877565b145b80156106c8575060028101546001600160401b03600160801b909104811642909116115b156106d75760039250506106de565b5460ff1691505b50919050565b826000808281526012602052604090205460ff16600681111561070957610709613877565b0361072757604051638b41ec7f60e01b815260040160405180910390fd5b600084815260126020526040902060048101546001600160a01b0316331461077b576040517f57a6f4e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061078686611b45565b9050600481600681111561079c5761079c613877565b036107d3576040517fc2cbf77700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160068111156107e7576107e7613877565b03610801576107fc826001015487878761246f565b61086f565b600581600681111561081557610815613877565b0361082a576107fc82600101548787876126b8565b600381600681111561083e5761083e613877565b0361084d576107fc3387612901565b600181600681111561086157610861613877565b0361086f5761086f86612923565b505050505050565b61088182826120a7565b6108b7576040517f424a04ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108c38383612b7b565b60008181526020819052604090209091506108de9033612bc0565b50600154600082815260208190526040902060ff909116906108ff90612bd5565b03610943576040516001600160401b038316815283907fc8e6c955744189a19222ec226b72ac1435d88d5745252dac56e6f679f64c037a9060200160405180910390a25b505050565b60008381526010602052604090205483906001600160a01b031661097f57604051635eeb253d60e11b815260040160405180910390fd5b600084815260106020526040902060048101546001600160401b03908116908516106109d7576040517f3b920b8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109e38686612b7b565b60008181526020819052604090209091506109fe9033612bdf565b610a34576040517fd651ce1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152601260209081526040808320600181018a90556002810180546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1602179055898452601190925282209091610a8d84611b45565b6006811115610a9e57610a9e613877565b14158015610ac657506006610ab284611b45565b6006811115610ac357610ac3613877565b14155b15610afd576040517fff556acf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600560205260409020805467ffffffffffffffff1916426001600160401b0316179055610b2f8387612113565b60048201805473ffffffffffffffffffffffffffffffffffffffff191633179055600280830180546001600160401b0342811667ffffffffffffffff19909216919091179091559082018054600192600091610b8d91859116613d06565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610bd2888360020160009054906101000a90046001600160401b0316612c01565b816001016000828254610be59190613d25565b90915550506040805160e081018252600186015481526002860154602082015260038601549181019190915260048501546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c08201526000908190610c5e90612c30565b90506006610c6b86611b45565b6006811115610c7c57610c7c613877565b03610caf57600b54606490610c949060ff1683613d38565b610c9e9190613d65565b610ca89082613d25565b9150610cb3565b8091505b610cbd3383612c4f565b8160136000016000828254610cd29190613d79565b9091555050600384018190556004840154610cf6906001600160a01b031686612d23565b835460ff191660011784556040516001600160401b038a1681528a907f8f301470a994578b52323d625dfbf827ca5208c81747d3459be7b8867baec3ec9060200160405180910390a2600486015460028401546001600160401b039081169116148015610d7857506000835460ff166004811115610d7657610d76613877565b145b15610de257825460ff191660011783556002830180546001600160401b034216600160401b026fffffffffffffffff0000000000000000199091161790556040518a907f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e690600090a25b50505050505050505050565b6001610df983611b45565b6006811115610e0a57610e0a613877565b14610e41576040517fae9dcffd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e4b8282612d45565b6000828152601260209081526040808320600180820154855260108452828520600b54845160e08101865292820154835260028201549583019590955260038101549382019390935260048301546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0820152909391926064916201000090910460ff1690610eee90612c30565b610ef89190613d38565b610f029190613d65565b600b54909150600090606490610f22906301000000900460ff1684613d38565b610f2c9190613d65565b90508060136001016000828254610f439190613d79565b909155505060405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd99190613d8c565b610fe557610fe5613dae565b81846003016000828254610ff99190613d25565b9091555050600b5460008781526006602052604090205461010090910460ff16906001600160401b03166001600160401b03161061086f5761086f86612923565b600061104d82611048612f5c565b612f67565b92915050565b600061104d82611061612f5c565b612f7b565b60008181526012602090815260408083206001810154845260109092528220600c54610100906110a090600160801b900460ff1682613dc4565b60018301546110b39161ffff1690613d38565b6110bd9190613d65565b949350505050565b336000908152600a602052604090206060906110e7906110e49061300d565b90565b905090565b6110f46137b6565b604080516101008082018352600b805460ff8082166080808701918252948304821660a080880191909152620100008404831660c08801526301000000909304821660e0870152855285519182018652600c80546001600160401b038082168552600160401b820416602085810191909152600160801b82048416988501989098527101000000000000000000000000000000000090049091166060830152600d80549596939593870194929391928401916111af90613dde565b80601f01602080910402602001604051908101604052809291908181526020018280546111db90613dde565b80156112285780601f106111fd57610100808354040283529160200191611228565b820191906000526020600020905b81548152906001019060200180831161120b57829003601f168201915b5050509190925250505081526040805160208181018352600385015460ff1682528301526004909201546001600160401b0316910152919050565b61126d8133611c26565b50565b3360009081526009602052604090206060906110e7906110e49061300d565b60006112a261129d83613f6f565b61301a565b9050336112b26020840184614078565b6001600160a01b0316146112d9576040516334c69e3160e11b815260040160405180910390fd5b6000818152601060205260409020546001600160a01b031615611328576040517ffc7d069000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133a61014083016101208401614095565b6001600160401b03161580611381575061135a60e0830160c08401614095565b6001600160401b031661137561014084016101208501614095565b6001600160401b031610155b156113b8576040517fdf63f61a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113c860a0830160808401614095565b6001600160401b031660000361140a576040517f535ed2be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61141a60a0830160808401614095565b6001600160401b0316611434610100840160e08501614095565b6001600160401b03161115611475576040517fb9551ab100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61148560e0830160c08401614095565b6001600160401b03166000036114c7576040517f090a5ecd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020820135600003611505576040517f6aba7aae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060820135600003611543576040517ffb7df0c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040820135600003611581576040517f47ba51c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61158f6101008301836140b2565b61159990806140d2565b90506000036115d4576040517f86f8cf9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f546001600160401b03166115f060e0840160c08501614095565b6001600160401b03161115611631576040517f1267b3f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152601060205260409020829061164b8282614272565b5061165e905060e0830160c08401614095565b6116689042613d06565b600082815260116020526040902060020180546001600160401b0392909216600160801b0267ffffffffffffffff60801b199092169190911790556116b561014083016101208401614095565b6116bf9042613d06565b600082815260116020908152604090912060020180546001600160401b0393909316600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff909316929092179091556117209061171a90840184614078565b8261304a565b600061173361172e84613f6f565b61306c565b600083815260116020526040812060010182905560138054929350839290919061175e908490613d79565b9091555061176e90503382612c4f565b6000828152601160209081526040918290206002015491517f1bf9c457accf8703dbf7cdf1b58c2f74ddf2e525f98155c70b3d318d74609bd8926117c892869290880191600160c01b90046001600160401b031690614426565b60405180910390a1505050565b806000808281526012602052604090205460ff1660068111156117fa576117fa613877565b0361181857604051638b41ec7f60e01b815260040160405180910390fd5b6118238233336106e4565b5050565b600080600061183d84611838612f5c565b6130a8565b90925090508180156110bd5750600254600160801b900460ff9081169116109392505050565b6118e6604051806040016040528061381f6040805160a080820183526000808352835160e081018552818152602080820183905281860183905260608083018490526080830184905293820183905260c0820183905280850191909152845180860186529283528201529091820190815260006020820181905260409091015290565b816000808281526012602052604090205460ff16600681111561190b5761190b613877565b0361192957604051638b41ec7f60e01b815260040160405180910390fd5b60008381526012602052604090206119ba604051806040016040528061381f6040805160a080820183526000808352835160e081018552818152602080820183905281860183905260608083018490526080830184905293820183905260c0820183905280850191909152845180860186529283528201529091820190815260006020820181905260409091015290565b600180830154600090815260106020908152604091829020825160a0808201855282546001600160a01b03168252845160e08101865295830154865260028301548685015260038301548686015260048301546001600160401b038082166060890152600160401b820481166080890152600160801b8204811692880192909252600160c01b90041660c0860152918201939093528151808301835260058401805492949385019282908290611a6f90613dde565b80601f0160208091040260200160405190810160405280929190818152602001828054611a9b90613dde565b8015611ae85780601f10611abd57610100808354040283529160200191611ae8565b820191906000526020600020905b815481529060010190602001808311611acb57829003601f168201915b50505091835250506001919091015460209182015290825260078301546001600160401b0390811683830152600890930154604090920191909152918352600290930154600160401b900490921691810191909152915050919050565b600081815260126020526040812060018101548203611b675750600092915050565b6000611b7682600101546105c1565b90506004825460ff166006811115611b9057611b90613877565b03611b9f575060049392505050565b6002816004811115611bb357611bb3613877565b03611bc2575060059392505050565b6003816004811115611bd657611bd6613877565b03611be5575060029392505050565b6004816004811115611bf957611bf9613877565b03611c08575060039392505050565b505460ff1692915050565b600061104d82611c21612f5c565b613160565b60008281526010602052604090205482906001600160a01b0316611c5d57604051635eeb253d60e11b815260040160405180910390fd5b6000838152601060209081526040808320601190925290912081546001600160a01b03163314611ca0576040516334c69e3160e11b815260040160405180910390fd5b6000611cab866105c1565b90506002816004811115611cc157611cc1613877565b14158015611ce157506004816004811115611cde57611cde613877565b14155b8015611cff57506003816004811115611cfc57611cfc613877565b14155b15611d36576040517fc00b5b5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160010154600003611d74576040517fbd8bdd9400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816004811115611d8857611d88613877565b03611e2657815460ff1916600217825560405186907ff903f4774c7bd27355f9d7fcbc382b079b164a697a44ac5d95267a4c3cb3bb2290600090a2600086815260116020526040902060020154611df0908790600160c01b90046001600160401b0316612c01565b6002830154611e0891906001600160401b0316613d38565b826001016000828254611e1b9190613d79565b90915550611fb39050565b6004816004811115611e3a57611e3a613877565b03611fa7576040805160a0808201835285546001600160a01b03168252825160e08101845260018701548152600287015460208281019190915260038801548286015260048801546001600160401b038082166060850152600160401b820481166080850152600160801b8204811694840194909452600160c01b900490921660c08201529082015281518083018352600586018054611f9d94889390850192909182908290611ee990613dde565b80601f0160208091040260200160405190810160405280929190818152602001828054611f1590613dde565b8015611f625780601f10611f3757610100808354040283529160200191611f62565b820191906000526020600020905b815481529060010190602001808311611f4557829003601f168201915b50505091835250506001919091015460209182015290825260078301546001600160401b03169082015260089091015460409091015261306c565b6001830155611fb3565b815460ff191660031782555b8254611fc8906001600160a01b031687613197565b600182015460148054829190600090611fe2908490613d79565b909155505060405163a9059cbb60e01b81526001600160a01b038781166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612056573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061207a9190613d8c565b61209757604051637c2ccffd60e11b815260040160405180910390fd5b5050600060019091015550505050565b600033816120b58585612b7b565b90506120c0816131b9565b80156120e95750600154600082815260208190526040902060ff909116906120e790612bd5565b105b801561210a575060008181526020819052604090206121089083612bdf565b155b95945050505050565b6000828152601260209081526040808320600101548084526010909252909120546001600160a01b031661215a57604051635eeb253d60e11b815260040160405180910390fd5b6000838152601260209081526040808320600181015484526010835281842082516003808252608082019094529194909390929082016060803683370190505090506121ad6121a88761103a565b6131e6565b816000815181106121c0576121c06144d3565b602090810291909101015260068201546121d9906131f7565b816001815181106121ec576121ec6144d3565b6020026020010181815250508260020160089054906101000a90046001600160401b03166001600160401b03168160028151811061222c5761222c6144d3565b60200260200101818152505061086f868683613203565b6122b86040805160a080820183526000808352835160e081018552818152602080820183905281860183905260608083018490526080830184905293820183905260c0820183905280850191909152845180860186529283528201529091820190815260006020820181905260409091015290565b60008281526010602052604090205482906001600160a01b03166122ef57604051635eeb253d60e11b815260040160405180910390fd5b600083815260106020908152604091829020825160a0808201855282546001600160a01b03168252845160e0810186526001840154815260028401548186015260038401548187015260048401546001600160401b038082166060840152600160401b820481166080840152600160801b8204811693830193909352600160c01b900490911660c082015292810192909252825180840184526005820180549394929392850192829082906123a390613dde565b80601f01602080910402602001604051908101604052809291908181526020018280546123cf90613dde565b801561241c5780601f106123f15761010080835404028352916020019161241c565b820191906000526020600020905b8154815290600101906020018083116123ff57829003601f168201915b50505091835250506001919091015460209182015290825260078301546001600160401b0316908201526008909101546040909101529392505050565b600081831061246857816105ba565b5090919050565b60008481526010602052604090205484906001600160a01b03166124a657604051635eeb253d60e11b815260040160405180910390fd5b600085815260116020908152604080832060108352818420815460ff191660031782558885526012909352922081546124e8906001600160a01b031689613197565b6004810154612500906001600160a01b031688612901565b600281015460009061251c908a906001600160401b0316612c01565b600383015490915061252e8183613d79565b60148054600090612540908490613d79565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038981166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156125c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125eb9190613d8c565b61260857604051637c2ccffd60e11b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038881166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612677573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061269b9190613d8c565b610de257604051637c2ccffd60e11b815260040160405180910390fd5b60008481526010602052604090205484906001600160a01b03166126ef57604051635eeb253d60e11b815260040160405180910390fd5b60008481526012602052604090206004810154612715906001600160a01b031686612901565b600281015460009061275b9088906001600160401b0316612756826000908152601160205260409020600201546001600160401b03600160c01b9091041690565b6133a1565b600383015490915061276d8183613d79565b6014805460009061277f908490613d79565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038781166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282a9190613d8c565b61284757604051637c2ccffd60e11b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156128b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128da9190613d8c565b6128f757604051637c2ccffd60e11b815260040160405180910390fd5b5050505050505050565b6001600160a01b0382166000908152600a602052604090206109439082613480565b6000818152601260209081526040808320600181015480855260119093529220600283015461295c9083906001600160401b0316612c01565b81600101600082825461296f9190613d79565b9091555050600483015461298c906001600160a01b031685612901565b60008481526020819052604081209081816129a7828261382c565b5050845460ff1916600617855550506002808401805467ffffffffffffffff1916905560006003850181905560048501805473ffffffffffffffffffffffffffffffffffffffff19169055908201805460019290612a0f9084906001600160401b03166144e9565b82546101009290920a6001600160401b038181021990931691831602179091556002850154604051600160401b90910490911681528391507f33ba8f7627565d89f7ada2a6b81ea532b7aa9b11e91a78312d6e1fca0bfcd1dc9060200160405180910390a26000848152600660205260409020805467ffffffffffffffff19169055600082815260106020526040812060028301546004820154919291612ac2916001600160401b0390811691166144e9565b60048301546001600160401b039182169250600160c01b90041681118015612aff57506001835460ff166004811115612afd57612afd613877565b145b1561086f57825460ff19166004178355612b1a6001426144e9565b6002840180546001600160401b0392909216600160801b0267ffffffffffffffff60801b1990921691909117905560405184907f4769361a442504ecaf038f35e119bcccdd5e42096b24c09e3c17fd17c6684c0290600090a2505050505050565b60008282604051602001612ba29291909182526001600160401b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b60006105ba836001600160a01b03841661348c565b600061104d825490565b6001600160a01b038116600090815260018301602052604081205415156105ba565b6000828152601160205260408120600201546105ba9084908490600160801b90046001600160401b03166133a1565b600081608001516001600160401b0316826040015161104d9190613d38565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152306024830181905260448301849052917f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303816000875af1158015612ce2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d069190613d8c565b61094357604051637c2ccffd60e11b815260040160405180910390fd5b6001600160a01b0382166000908152600a6020526040902061094390826134db565b6000612d50826134e7565b6001600160401b03169050428110612d94576040517f6b4b1a4e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254612db190600160401b90046001600160401b031682613d79565b4210612de9576040517fde55698e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526007602090815260408083206001600160401b038616845290915290205460ff1615612e45576040517efab7d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e4f8383613160565b612e85576040517fd3ffa66b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526008602090815260408083206001600160401b038616845290915290205460ff1615612ee2576040517f98e7e55100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526008602090815260408083206001600160401b038087168552908352818420805460ff1916600190811790915587855260069093529083208054929390929091612f3391859116613d06565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550505050565b60006110e7426134fa565b60006105ba612f768484612f7b565b613526565b600080612f8a61010043614508565b60025490915060009061010090612fb99071010000000000000000000000000000000000900460ff168661451c565b612fc3919061453e565b6001600160401b031690506000612fdc61010087614508565b9050600061010082612fee8587613d79565b612ff89190613d79565b6130029190614508565b979650505050505050565b606060006105ba83613580565b60008160405160200161302d9190613cdd565b604051602081830303815290604052805190602001209050919050565b6001600160a01b038216600090815260096020526040902061094390826134db565b600061307b82602001516135dc565b602083015160a0810151606090910151613095919061451c565b6001600160401b031661104d9190613d38565b60008060006130b685611b45565b600086815260056020526040812054919250906130db906001600160401b03166134fa565b905060018260068111156130f1576130f1613877565b141580613105575061310385826135fb565b155b1561311857600080935093505050613159565b6131228686612f7b565b9250600061312f84613526565b9050600061313c88611066565b905080158061315257506131508183614508565b155b9550505050505b9250929050565b600080600061316f85856130a8565b909250905081801561210a5750600254600160801b900460ff90811691161015949350505050565b6001600160a01b03821660009081526009602052604090206109439082613480565b60008060008381526012602052604090205460ff1660068111156131df576131df613877565b1492915050565b600060ff198216816110bd82613611565b6000806105ba83613611565b60008381526007602052604081209061321a612f5c565b6001600160401b0316815260208101919091526040016000205460ff161561326e576040517f3edef7db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480546040517f94c8919d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116916394c8919d916132b891869186910161456c565b602060405180830381865afa1580156132d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132f99190613d8c565b61332f576040517ffcd03a4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600760205260408120600191613348612f5c565b6001600160401b031681526020808201929092526040908101600020805460ff19169315159390931790925590518481527f3b989d183b84b02259d7c14b34a9c9eb0fccb4c355a920d25e581e25aef4993d91016117c8565b60008381526010602052604081206001600160401b03808416908516106133f4576040517f56607cb000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160e081018252600183015481526002830154602082015260038301549181019190915260048201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0820152613463906135dc565b61346d85856144e9565b6001600160401b031661210a9190613d38565b60006105ba8383613683565b60008181526001830160205260408120546134d35750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561104d565b50600061104d565b60006105ba838361348c565b600061104d6134f58361377d565b61378a565b600061104d7f000000000000000000000000000000000000000000000000000000000000000083614616565b60008060ff8316613538600143613d25565b6135429190613d25565b409050600081900361355657613556613dae565b60408051602081018390520160405160208183030381529060405280519060200120915050919050565b6060816000018054806020026020016040519081016040528092919081815260200182805480156135d057602002820191906000526020600020905b8154815260200190600101908083116135bc575b50505050509050919050565b600081608001516001600160401b0316826020015161104d9190613d38565b60006001600160401b03808416908316106105ba565b7fff00000000000000000000000000000000000000000000000000000000000000811660015b60208110156106de57600891821c91613651908290613d38565b83901b7fff00000000000000000000000000000000000000000000000000000000000000169190911790600101613637565b6000818152600183016020526040812054801561376c5760006136a7600183613d25565b85549091506000906136bb90600190613d25565b90508181146137205760008660000182815481106136db576136db6144d3565b90600052602060002001549050808760000184815481106136fe576136fe6144d3565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061373157613731614644565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061104d565b600091505061104d565b5092915050565b600061104d826001613d06565b600061104d7f00000000000000000000000000000000000000000000000000000000000000008361451c565b60408051610100810182526000608080830182815260a080850184905260c0850184905260e08501849052908452845190810185528281526020808201849052818601849052606080830185905292820192909252818401528351908101845290815290918201905b8152600060209091015290565b508054600082559060005260206000209081019061126d91905b8082111561385a5760008155600101613846565b5090565b60006020828403121561387057600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600583106138a1576138a1613877565b91905290565b6001600160a01b038116811461126d57600080fd5b6000806000606084860312156138d157600080fd5b8335925060208401356138e3816138a7565b915060408401356138f3816138a7565b809150509250925092565b6001600160401b038116811461126d57600080fd5b803561391e816138fe565b919050565b6000806040838503121561393657600080fd5b823591506020830135613948816138fe565b809150509250929050565b600061010082840312156106de57600080fd5b6000806000610140848603121561397c57600080fd5b83359250602084013561398e816138fe565b915061399d8560408601613953565b90509250925092565b602080825282518282018190526000918401906040840190835b818110156139de5783518352602093840193909201916001016139c0565b509095945050505050565b6000815180845260005b81811015613a0f576020818501810151868301820152016139f3565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160401b0381511682526001600160401b03602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160a060808501526110bd60a08501826139e9565b602081526000825160ff815116602084015260ff602082015116604084015260ff604082015116606084015260ff606082015116608084015250602083015160e060a0840152613ad8610100840182613a2f565b90506040840151613aef60c08501825160ff169052565b5060608401516001600160401b03811660e0850152509392505050565b600060208284031215613b1e57600080fd5b81356001600160401b03811115613b3457600080fd5b820161016081850312156105ba57600080fd5b6000815160408452613b5c60408501826139e9565b602093840151949093019390935250919050565b6001600160a01b038151168252600060208201518051602085015260208101516040850152604081015160608501526001600160401b0360608201511660808501526001600160401b0360808201511660a08501526001600160401b0360a08201511660c08501526001600160401b0360c08201511660e0850152506040820151610160610100850152613c08610160850182613b47565b90506060830151613c256101208601826001600160401b03169052565b5060808301516101408501528091505092915050565b602081526000825160406020840152613c576060840182613b70565b90506001600160401b0360208501511660408401528091505092915050565b60208101600783106138a1576138a1613877565b60008060408385031215613c9d57600080fd5b823591506020830135613948816138a7565b6000806101208385031215613cc357600080fd5b82359150613cd48460208501613953565b90509250929050565b6020815260006105ba6020830184613b70565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019081111561104d5761104d613cf0565b8181038181111561104d5761104d613cf0565b808202811582820484141761104d5761104d613cf0565b634e487b7160e01b600052601260045260246000fd5b600082613d7457613d74613d4f565b500490565b8082018082111561104d5761104d613cf0565b600060208284031215613d9e57600080fd5b815180151581146105ba57600080fd5b634e487b7160e01b600052600160045260246000fd5b61ffff828116828216039081111561104d5761104d613cf0565b600181811c90821680613df257607f821691505b6020821081036106de57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613e4a57613e4a613e12565b60405290565b60405160a081016001600160401b0381118282101715613e4a57613e4a613e12565b60405160e081016001600160401b0381118282101715613e4a57613e4a613e12565b604051601f8201601f191681016001600160401b0381118282101715613ebc57613ebc613e12565b604052919050565b600060408284031215613ed657600080fd5b613ede613e28565b905081356001600160401b03811115613ef657600080fd5b8201601f81018413613f0757600080fd5b80356001600160401b03811115613f2057613f20613e12565b613f33601f8201601f1916602001613e94565b818152856020838501011115613f4857600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b6000813603610160811215613f8357600080fd5b613f8b613e50565b8335613f96816138a7565b815260e0601f1983011215613faa57600080fd5b613fb2613e72565b60208581013582526040808701359183019190915260608601359082015291506080840135613fe0816138fe565b606083015260a0840135613ff3816138fe565b608083015260c0840135614006816138fe565b60a083015260e0840135614019816138fe565b60c08301526020810191909152610100830135906001600160401b0382111561404157600080fd5b61404d36838601613ec4565b604082015261405f6101208501613913565b6060820152610140939093013560808401525090919050565b60006020828403121561408a57600080fd5b81356105ba816138a7565b6000602082840312156140a757600080fd5b81356105ba816138fe565b60008235603e198336030181126140c857600080fd5b9190910192915050565b6000808335601e198436030181126140e957600080fd5b8301803591506001600160401b0382111561410357600080fd5b60200191503681900382131561315957600080fd5b6000813561104d816138fe565b601f82111561094357806000526020600020601f840160051c8101602085101561414c5750805b601f840160051c820191505b8181101561416c5760008155600101614158565b5050505050565b8135601e1983360301811261418757600080fd5b820180356001600160401b03811180156141a057600080fd5b8136036020840113156141b257600080fd5b600090506141ca826141c48654613dde565b86614125565b80601f8311600181146141ff578284156141e75750848201602001355b600019600386901b1c1916600185901b17865561425e565b600086815260209020601f19851690845b8281101561423257602085890181013583559485019460019092019101614210565b50858210156142525760001960f88760031b161c19602085890101351681555b505060018460011b0186555b505050505060209190910135600190910155565b813561427d816138a7565b815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03919091161781556020820135600182015560408201356002820155606082013560038201556004810160808301356142d5816138fe565b815467ffffffffffffffff19166001600160401b0382161782555060a08301356142fe816138fe565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff00000000000000001617815561437261433d60c08501614118565b825467ffffffffffffffff60801b191660809190911b77ffffffffffffffff0000000000000000000000000000000016178255565b6143ca61438160e08501614118565b825477ffffffffffffffffffffffffffffffffffffffffffffffff1660c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016178255565b506143e56143dc6101008401846140b2565b60058301614173565b6144166143f56101208401614118565b600783016001600160401b0382166001600160401b03198254161781555050565b6101409190910135600890910155565b838152823560208083019190915283013560408083019190915283013560608083019190915261012082019084013561445e816138fe565b6001600160401b038116608084015250608084013561447c816138fe565b6001600160401b03811660a08401525060a084013561449a816138fe565b6001600160401b03811660c0840152506144b660c08501613913565b6001600160401b0390811660e084015283166101008301526110bd565b634e487b7160e01b600052603260045260246000fd5b6001600160401b03828116828216039081111561104d5761104d613cf0565b60008261451757614517613d4f565b500690565b6001600160401b03818116838216029081169081811461377657613776613cf0565b60006001600160401b0383168061455757614557613d4f565b806001600160401b0384160691505092915050565b82358152602080840135908201526000610120820161459b604084016040870180358252602090810135910152565b6145b5608084016080870180358252602090810135910152565b6145cf60c0840160c0870180358252602090810135910152565b610120610100840152835190819052602084019061014084019060005b8181101561460a5783518352602093840193909201916001016145ec565b50909695505050505050565b60006001600160401b0383168061462f5761462f613d4f565b806001600160401b0384160491505092915050565b634e487b7160e01b600052603160045260246000fdfea264697066735822122022d1585d4a2549e539759684fb5042b4c2cc27b217dc5dff9d79f66b7f62b36964736f6c634300081c0033"; + public static string BYTECODE = "0x60c060405234801561001057600080fd5b50604051614f0a380380614f0a83398101604081905261002f9161053b565b602083015180516040850151516001805460ff191660ff90921691909117905582906001600160401b03811660000361007b5760405163015536c760e51b815260040160405180910390fd5b6001600160401b031660805261010043116100a9576040516338f5f66160e11b815260040160405180910390fd5b8151600280546020850151604086015160608701516001600160401b039586166001600160801b0319909416939093176801000000000000000095909216949094021761ffff60801b1916600160801b60ff9485160260ff60881b191617600160881b9390911692909202919091178155608083015183919060039061012f90826106d9565b5050600480546001600160a01b0319166001600160a01b0393841617905550831660a05250825151606460ff909116111561017d576040516302bd816360e41b815260040160405180910390fd5b606483600001516040015160ff1611156101aa576040516354e5e0ab60e11b815260040160405180910390fd5b825160408101516020909101516064916101c391610797565b60ff1611156101e5576040516317ff9d0f60e21b815260040160405180910390fd5b82518051600b805460208085015160408087015160609788015160ff90811663010000000263ff0000001992821662010000029290921663ffff0000199482166101000261ffff1990971698821698909817959095179290921695909517178355808801518051600c80549383015196830151978301518516600160881b0260ff60881b1998909516600160801b029790971661ffff60801b196001600160401b0397881668010000000000000000026001600160801b031990951697909216969096179290921791909116939093171783556080820151869391929190600d906102d090826106d9565b50505060408201515160038201805460ff191660ff909216919091179055606090910151600490910180546001600160401b0319166001600160401b03909216919091179055506107c8915050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156103575761035761031f565b60405290565b604051608081016001600160401b03811182821017156103575761035761031f565b604051601f8201601f191681016001600160401b03811182821017156103a7576103a761031f565b604052919050565b805160ff811681146103c057600080fd5b919050565b80516001600160401b03811681146103c057600080fd5b600060a082840312156103ee57600080fd5b6103f6610335565b9050610401826103c5565b815261040f602083016103c5565b6020820152610420604083016103af565b6040820152610431606083016103af565b606082015260808201516001600160401b0381111561044f57600080fd5b8201601f8101841361046057600080fd5b80516001600160401b038111156104795761047961031f565b61048c601f8201601f191660200161037f565b8181528560208385010111156104a157600080fd5b60005b828110156104c0576020818501810151838301820152016104a4565b5060006020838301015280608085015250505092915050565b6000602082840312156104eb57600080fd5b604051602081016001600160401b038111828210171561050d5761050d61031f565b60405290508061051c836103af565b905292915050565b80516001600160a01b03811681146103c057600080fd5b60008060006060848603121561055057600080fd5b83516001600160401b0381111561056657600080fd5b840180860360e081121561057957600080fd5b61058161035d565b608082121561058f57600080fd5b61059761035d565b91506105a2836103af565b82526105b0602084016103af565b60208301526105c1604084016103af565b60408301526105d2606084016103af565b60608301529081526080820151906001600160401b038211156105f457600080fd5b610600888385016103dc565b60208201526106128860a085016104d9565b604082015261062360c084016103c5565b6060820152945061063991505060208501610524565b915061064760408501610524565b90509250925092565b600181811c9082168061066457607f821691505b60208210810361068457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156106d457806000526020600020601f840160051c810160208510156106b15750805b601f840160051c820191505b818110156106d157600081556001016106bd565b50505b505050565b81516001600160401b038111156106f2576106f261031f565b610706816107008454610650565b8461068a565b6020601f82116001811461073a57600083156107225750848201515b600019600385901b1c1916600184901b1784556106d1565b600084815260208120601f198516915b8281101561076a578785015182556020948501946001909201910161074a565b50848210156107885786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b60ff81811683821602908116908181146107c157634e487b7160e01b600052601160045260246000fd5b5092915050565b60805160a0516146e5610825600039600081816104bf01528181610f7001528181612019015281816125d30152818161268301528181612812015281816128c20152612cec01526000818161355601526137e601526146e56000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636e2b54ee116100f9578063c0cc4add11610097578063e8aa0a0711610071578063e8aa0a0714610461578063f752196b14610474578063fb1e61ca1461049d578063fc0c546a146104bd57600080fd5b8063c0cc4add14610428578063c5d433511461043b578063d02bbe331461044e57600080fd5b8063a29c29a4116100d3578063a29c29a4146103b2578063a3a0807e146103c5578063b396dc79146103e8578063be5cdc481461040857600080fd5b80636e2b54ee146103845780639777b72c1461039757806399b6da0c1461039f57600080fd5b8063329b5a0b1161016657806351a766421161014057806351a76642146103035780635da73835146103165780636b00c8cf1461032b5780636c70bee91461036f57600080fd5b8063329b5a0b14610298578063458d2bf1146102cb5780634641dce6146102de57600080fd5b806312827602116101a2578063128276021461022e5780631d873c1b14610241578063237d84821461025457806326d6f8341461026757600080fd5b806302fa8e65146101c957806305b90773146101f95780630aefaabe14610219575b600080fd5b6101dc6101d73660046138b3565b6104e3565b6040516001600160401b0390911681526020015b60405180910390f35b61020c6102073660046138b3565b6105c1565b6040516101f091906138e2565b61022c610227366004613911565b6106e4565b005b61022c61023c366004613978565b610877565b61022c61024f3660046139bb565b610948565b61022c610262366004613978565b610dfa565b61028a6102753660046138b3565b60009081526012602052604090206003015490565b6040519081526020016101f0565b6101dc6102a63660046138b3565b600090815260116020526040902060020154600160c01b90046001600160401b031690565b61028a6102d93660046138b3565b611046565b6102f16102ec3660046138b3565b61105f565b60405160ff90911681526020016101f0565b61028a6103113660046138b3565b611072565b61031e6110d1565b6040516101f091906139fb565b6103576103393660046138b3565b6000908152601260205260409020600401546001600160a01b031690565b6040516001600160a01b0390911681526020016101f0565b6103776110f8565b6040516101f09190613ad9565b61022c6103923660046138b3565b61126f565b61031e61127c565b61022c6103ad366004613b61565b61129b565b61022c6103c03660046138b3565b6117e1565b6103d86103d33660046138b3565b611833565b60405190151581526020016101f0565b6103fb6103f63660046138b3565b61186f565b6040516101f09190613c90565b61041b6104163660046138b3565b611b51565b6040516101f09190613ccb565b6103d86104363660046138b3565b611c1f565b61022c610449366004613cdf565b611c32565b6103d861045c366004613978565b6120b3565b61022c61046f366004613d04565b61211f565b6101dc6104823660046138b3565b6000908152600660205260409020546001600160401b031690565b6104b06104ab3660046138b3565b612298565b6040516101f09190613d32565b7f0000000000000000000000000000000000000000000000000000000000000000610357565b6000806104ef836105c1565b90506000816004811115610505576105056138cc565b148061052257506001816004811115610520576105206138cc565b145b1561054e575050600090815260116020526040902060020154600160801b90046001600160401b031690565b6002816004811115610562576105626138cc565b0361058e575050600090815260116020526040902060020154600160c01b90046001600160401b031690565b6000838152601160205260409020600201546105ba90600160801b90046001600160401b0316426124ae565b9392505050565b60008181526010602052604081205482906001600160a01b03166105f857604051635eeb253d60e11b815260040160405180910390fd5b600083815260116020526040812090815460ff16600481111561061d5761061d6138cc565b14801561065c5750600084815260116020526040902060020154600160c01b90046001600160401b03166001600160401b0316426001600160401b0316115b1561066b5760029250506106de565b6001815460ff166004811115610683576106836138cc565b14806106a457506000815460ff1660048111156106a2576106a26138cc565b145b80156106c8575060028101546001600160401b03600160801b909104811642909116115b156106d75760039250506106de565b5460ff1691505b50919050565b826000808281526012602052604090205460ff166006811115610709576107096138cc565b0361072757604051638b41ec7f60e01b815260040160405180910390fd5b600084815260126020526040902060048101546001600160a01b0316331461077b576040517f57a6f4e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061078686611b51565b9050600481600681111561079c5761079c6138cc565b036107d3576040517fc2cbf77700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160068111156107e7576107e76138cc565b03610801576107fc82600101548787876124c4565b61086f565b6005816006811115610815576108156138cc565b0361082a576107fc826001015487878761270d565b600381600681111561083e5761083e6138cc565b0361084d576107fc3387612956565b6001816006811115610861576108616138cc565b0361086f5761086f86612978565b505050505050565b61088182826120b3565b6108b7576040517f424a04ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108c38383612bd0565b60008181526020819052604090209091506108de9033612c15565b50600154600082815260208190526040902060ff909116906108ff90612c2a565b03610943576040516001600160401b038316815283907fc8e6c955744189a19222ec226b72ac1435d88d5745252dac56e6f679f64c037a9060200160405180910390a25b505050565b60008381526010602052604090205483906001600160a01b031661097f57604051635eeb253d60e11b815260040160405180910390fd5b600084815260106020526040902060048101546001600160401b03908116908516106109d7576040517f3b920b8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006109e38686612bd0565b60008181526020819052604090209091506109fe9033612c34565b610a34576040517fd651ce1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152601260209081526040808320600181018a90556002810180546fffffffffffffffff00000000000000001916600160401b6001600160401b038c1602179055898452601190925282209091610a8d84611b51565b6006811115610a9e57610a9e6138cc565b14158015610ac657506006610ab284611b51565b6006811115610ac357610ac36138cc565b14155b15610afd576040517fff556acf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60048201805473ffffffffffffffffffffffffffffffffffffffff1916331790556002820180546001600160401b03421667ffffffffffffffff19909116179055610b6e83600090815260056020526040902080546001600160401b03421667ffffffffffffffff19909116179055565b610b78838761211f565b60028101805460019190600090610b999084906001600160401b0316613d5b565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550610bde888360020160009054906101000a90046001600160401b0316612c56565b816001016000828254610bf19190613d7a565b90915550506040805160e081018252600186015481526002860154602082015260038601549181019190915260048501546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c08201526000908190610c6a90612c85565b90506006610c7786611b51565b6006811115610c8857610c886138cc565b03610cbb57600b54606490610ca09060ff1683613d8d565b610caa9190613dba565b610cb49082613d7a565b9150610cbf565b8091505b610cc93383612ca4565b8160136000016000828254610cde9190613dce565b9091555050600384018190556004840154610d02906001600160a01b031686612d78565b835460ff191660011784556040516001600160401b038a1681528a907f8f301470a994578b52323d625dfbf827ca5208c81747d3459be7b8867baec3ec9060200160405180910390a2600486015460028401546001600160401b039081169116148015610d8457506000835460ff166004811115610d8257610d826138cc565b145b15610dee57825460ff191660011783556002830180546001600160401b034216600160401b026fffffffffffffffff0000000000000000199091161790556040518a907f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e690600090a25b50505050505050505050565b6001610e0583611b51565b6006811115610e1657610e166138cc565b14610e4d576040517fae9dcffd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610e578282612d9a565b6000828152601260209081526040808320600180820154855260108452828520600b54845160e08101865292820154835260028201549583019590955260038101549382019390935260048301546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c0820152909391926064916201000090910460ff1690610efa90612c85565b610f049190613d8d565b610f0e9190613dba565b600b54909150600090606490610f2e906301000000900460ff1684613d8d565b610f389190613dba565b90508060136001016000828254610f4f9190613dce565b909155505060405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610fc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe59190613de1565b610ff157610ff1613e03565b818460030160008282546110059190613d7a565b9091555050600b5460008781526006602052604090205461010090910460ff16906001600160401b03166001600160401b03161061086f5761086f86612978565b600061105982611054612fb1565b612fbc565b92915050565b60006110598261106d612fb1565b612fd0565b60008181526012602090815260408083206001810154845260109092528220600c54610100906110ac90600160801b900460ff1682613e19565b60018301546110bf9161ffff1690613d8d565b6110c99190613dba565b949350505050565b336000908152600a602052604090206060906110f3906110f090613062565b90565b905090565b61110061380b565b604080516101008082018352600b805460ff8082166080808701918252948304821660a080880191909152620100008404831660c08801526301000000909304821660e0870152855285519182018652600c80546001600160401b038082168552600160401b820416602085810191909152600160801b82048416988501989098527101000000000000000000000000000000000090049091166060830152600d80549596939593870194929391928401916111bb90613e33565b80601f01602080910402602001604051908101604052809291908181526020018280546111e790613e33565b80156112345780601f1061120957610100808354040283529160200191611234565b820191906000526020600020905b81548152906001019060200180831161121757829003601f168201915b5050509190925250505081526040805160208181018352600385015460ff1682528301526004909201546001600160401b0316910152919050565b6112798133611c32565b50565b3360009081526009602052604090206060906110f3906110f090613062565b60006112ae6112a983613fc4565b61306f565b9050336112be60208401846140cd565b6001600160a01b0316146112e5576040516334c69e3160e11b815260040160405180910390fd5b6000818152601060205260409020546001600160a01b031615611334576040517ffc7d069000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611346610140830161012084016140ea565b6001600160401b0316158061138d575061136660e0830160c084016140ea565b6001600160401b0316611381610140840161012085016140ea565b6001600160401b031610155b156113c4576040517fdf63f61a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113d460a08301608084016140ea565b6001600160401b0316600003611416576040517f535ed2be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61142660a08301608084016140ea565b6001600160401b0316611440610100840160e085016140ea565b6001600160401b03161115611481576040517fb9551ab100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61149160e0830160c084016140ea565b6001600160401b03166000036114d3576040517f090a5ecd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6020820135600003611511576040517f6aba7aae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082013560000361154f576040517ffb7df0c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604082013560000361158d576040517f47ba51c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61159b610100830183614107565b6115a59080614127565b90506000036115e0576040517f86f8cf9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600f546001600160401b03166115fc60e0840160c085016140ea565b6001600160401b0316111561163d576040517f1267b3f200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152601060205260409020829061165782826142c7565b5061166a905060e0830160c084016140ea565b6116749042613d5b565b600082815260116020526040902060020180546001600160401b0392909216600160801b0267ffffffffffffffff60801b199092169190911790556116c1610140830161012084016140ea565b6116cb9042613d5b565b600082815260116020908152604090912060020180546001600160401b0393909316600160c01b0277ffffffffffffffffffffffffffffffffffffffffffffffff9093169290921790915561172c90611726908401846140cd565b8261309f565b600061173f61173a84613fc4565b6130c1565b600083815260116020526040812060010182905560138054929350839290919061176a908490613dce565b9091555061177a90503382612ca4565b6000828152601160209081526040918290206002015491517f1bf9c457accf8703dbf7cdf1b58c2f74ddf2e525f98155c70b3d318d74609bd8926117d492869290880191600160c01b90046001600160401b03169061447b565b60405180910390a1505050565b806000808281526012602052604090205460ff166006811115611806576118066138cc565b0361182457604051638b41ec7f60e01b815260040160405180910390fd5b61182f8233336106e4565b5050565b600080600061184984611844612fb1565b6130fd565b90925090508180156110c95750600254600160801b900460ff9081169116109392505050565b6118f260405180604001604052806138746040805160a080820183526000808352835160e081018552818152602080820183905281860183905260608083018490526080830184905293820183905260c0820183905280850191909152845180860186529283528201529091820190815260006020820181905260409091015290565b816000808281526012602052604090205460ff166006811115611917576119176138cc565b0361193557604051638b41ec7f60e01b815260040160405180910390fd5b60008381526012602052604090206119c660405180604001604052806138746040805160a080820183526000808352835160e081018552818152602080820183905281860183905260608083018490526080830184905293820183905260c0820183905280850191909152845180860186529283528201529091820190815260006020820181905260409091015290565b600180830154600090815260106020908152604091829020825160a0808201855282546001600160a01b03168252845160e08101865295830154865260028301548685015260038301548686015260048301546001600160401b038082166060890152600160401b820481166080890152600160801b8204811692880192909252600160c01b90041660c0860152918201939093528151808301835260058401805492949385019282908290611a7b90613e33565b80601f0160208091040260200160405190810160405280929190818152602001828054611aa790613e33565b8015611af45780601f10611ac957610100808354040283529160200191611af4565b820191906000526020600020905b815481529060010190602001808311611ad757829003601f168201915b50505091835250506001919091015460209182015290825260078301546001600160401b0390811683830152600890930154604090920191909152918352600290930154600160401b900490921691810191909152915050919050565b600081815260126020526040812060018101548203611b735750600092915050565b6000611b8282600101546105c1565b90506004825460ff166006811115611b9c57611b9c6138cc565b03611bab575060049392505050565b6002816004811115611bbf57611bbf6138cc565b03611bce575060059392505050565b6003816004811115611be257611be26138cc565b03611bf1575060029392505050565b6004816004811115611c0557611c056138cc565b03611c14575060039392505050565b505460ff1692915050565b600061105982611c2d612fb1565b6131b5565b60008281526010602052604090205482906001600160a01b0316611c6957604051635eeb253d60e11b815260040160405180910390fd5b6000838152601060209081526040808320601190925290912081546001600160a01b03163314611cac576040516334c69e3160e11b815260040160405180910390fd5b6000611cb7866105c1565b90506002816004811115611ccd57611ccd6138cc565b14158015611ced57506004816004811115611cea57611cea6138cc565b14155b8015611d0b57506003816004811115611d0857611d086138cc565b14155b15611d42576040517fc00b5b5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160010154600003611d80576040517fbd8bdd9400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816004811115611d9457611d946138cc565b03611e3257815460ff1916600217825560405186907ff903f4774c7bd27355f9d7fcbc382b079b164a697a44ac5d95267a4c3cb3bb2290600090a2600086815260116020526040902060020154611dfc908790600160c01b90046001600160401b0316612c56565b6002830154611e1491906001600160401b0316613d8d565b826001016000828254611e279190613dce565b90915550611fbf9050565b6004816004811115611e4657611e466138cc565b03611fb3576040805160a0808201835285546001600160a01b03168252825160e08101845260018701548152600287015460208281019190915260038801548286015260048801546001600160401b038082166060850152600160401b820481166080850152600160801b8204811694840194909452600160c01b900490921660c08201529082015281518083018352600586018054611fa994889390850192909182908290611ef590613e33565b80601f0160208091040260200160405190810160405280929190818152602001828054611f2190613e33565b8015611f6e5780601f10611f4357610100808354040283529160200191611f6e565b820191906000526020600020905b815481529060010190602001808311611f5157829003601f168201915b50505091835250506001919091015460209182015290825260078301546001600160401b0316908201526008909101546040909101526130c1565b6001830155611fbf565b815460ff191660031782555b8254611fd4906001600160a01b0316876131ec565b600182015460148054829190600090611fee908490613dce565b909155505060405163a9059cbb60e01b81526001600160a01b038781166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120869190613de1565b6120a357604051637c2ccffd60e11b815260040160405180910390fd5b5050600060019091015550505050565b600033816120c18585612bd0565b90506120cc8161320e565b80156120f55750600154600082815260208190526040902060ff909116906120f390612c2a565b105b8015612116575060008181526020819052604090206121149083612c34565b155b95945050505050565b6000828152601260209081526040808320600101548084526010909252909120546001600160a01b031661216657604051635eeb253d60e11b815260040160405180910390fd5b600083815260126020526040902060048101546001600160a01b031633146121ba576040517fce351b9400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600181015460009081526010602052604080822081516003808252608082019093529092918160200160208202803683370190505090506122026121fd87611046565b61323b565b8160008151811061221557612215614528565b6020908102919091010152600682015461222e9061324c565b8160018151811061224157612241614528565b6020026020010181815250508260020160089054906101000a90046001600160401b03166001600160401b03168160028151811061228157612281614528565b60200260200101818152505061086f868683613258565b61230d6040805160a080820183526000808352835160e081018552818152602080820183905281860183905260608083018490526080830184905293820183905260c0820183905280850191909152845180860186529283528201529091820190815260006020820181905260409091015290565b60008281526010602052604090205482906001600160a01b031661234457604051635eeb253d60e11b815260040160405180910390fd5b600083815260106020908152604091829020825160a0808201855282546001600160a01b03168252845160e0810186526001840154815260028401548186015260038401548187015260048401546001600160401b038082166060840152600160401b820481166080840152600160801b8204811693830193909352600160c01b900490911660c082015292810192909252825180840184526005820180549394929392850192829082906123f890613e33565b80601f016020809104026020016040519081016040528092919081815260200182805461242490613e33565b80156124715780601f1061244657610100808354040283529160200191612471565b820191906000526020600020905b81548152906001019060200180831161245457829003601f168201915b50505091835250506001919091015460209182015290825260078301546001600160401b0316908201526008909101546040909101529392505050565b60008183106124bd57816105ba565b5090919050565b60008481526010602052604090205484906001600160a01b03166124fb57604051635eeb253d60e11b815260040160405180910390fd5b600085815260116020908152604080832060108352818420815460ff1916600317825588855260129093529220815461253d906001600160a01b0316896131ec565b6004810154612555906001600160a01b031688612956565b6002810154600090612571908a906001600160401b0316612c56565b60038301549091506125838183613dce565b60148054600090612595908490613dce565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038981166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af115801561261c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126409190613de1565b61265d57604051637c2ccffd60e11b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038881166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156126cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f09190613de1565b610dee57604051637c2ccffd60e11b815260040160405180910390fd5b60008481526010602052604090205484906001600160a01b031661274457604051635eeb253d60e11b815260040160405180910390fd5b6000848152601260205260409020600481015461276a906001600160a01b031686612956565b60028101546000906127b09088906001600160401b03166127ab826000908152601160205260409020600201546001600160401b03600160c01b9091041690565b6133f6565b60038301549091506127c28183613dce565b601480546000906127d4908490613dce565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038781166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af115801561285b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061287f9190613de1565b61289c57604051637c2ccffd60e11b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af115801561290b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292f9190613de1565b61294c57604051637c2ccffd60e11b815260040160405180910390fd5b5050505050505050565b6001600160a01b0382166000908152600a6020526040902061094390826134d5565b600081815260126020908152604080832060018101548085526011909352922060028301546129b19083906001600160401b0316612c56565b8160010160008282546129c49190613dce565b909155505060048301546129e1906001600160a01b031685612956565b60008481526020819052604081209081816129fc8282613881565b5050845460ff1916600617855550506002808401805467ffffffffffffffff1916905560006003850181905560048501805473ffffffffffffffffffffffffffffffffffffffff19169055908201805460019290612a649084906001600160401b031661453e565b82546101009290920a6001600160401b038181021990931691831602179091556002850154604051600160401b90910490911681528391507f33ba8f7627565d89f7ada2a6b81ea532b7aa9b11e91a78312d6e1fca0bfcd1dc9060200160405180910390a26000848152600660205260409020805467ffffffffffffffff19169055600082815260106020526040812060028301546004820154919291612b17916001600160401b03908116911661453e565b60048301546001600160401b039182169250600160c01b90041681118015612b5457506001835460ff166004811115612b5257612b526138cc565b145b1561086f57825460ff19166004178355612b6f60014261453e565b6002840180546001600160401b0392909216600160801b0267ffffffffffffffff60801b1990921691909117905560405184907f4769361a442504ecaf038f35e119bcccdd5e42096b24c09e3c17fd17c6684c0290600090a2505050505050565b60008282604051602001612bf79291909182526001600160401b0316602082015260400190565b60405160208183030381529060405280519060200120905092915050565b60006105ba836001600160a01b0384166134e1565b6000611059825490565b6001600160a01b038116600090815260018301602052604081205415156105ba565b6000828152601160205260408120600201546105ba9084908490600160801b90046001600160401b03166133f6565b600081608001516001600160401b031682604001516110599190613d8d565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152306024830181905260448301849052917f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303816000875af1158015612d37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d5b9190613de1565b61094357604051637c2ccffd60e11b815260040160405180910390fd5b6001600160a01b0382166000908152600a602052604090206109439082613530565b6000612da58261353c565b6001600160401b03169050428110612de9576040517f6b4b1a4e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600254612e0690600160401b90046001600160401b031682613dce565b4210612e3e576040517fde55698e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526007602090815260408083206001600160401b038616845290915290205460ff1615612e9a576040517efab7d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612ea483836131b5565b612eda576040517fd3ffa66b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526008602090815260408083206001600160401b038616845290915290205460ff1615612f37576040517f98e7e55100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008381526008602090815260408083206001600160401b038087168552908352818420805460ff1916600190811790915587855260069093529083208054929390929091612f8891859116613d5b565b92506101000a8154816001600160401b0302191690836001600160401b03160217905550505050565b60006110f34261354f565b60006105ba612fcb8484612fd0565b61357b565b600080612fdf6101004361455d565b6002549091506000906101009061300e9071010000000000000000000000000000000000900460ff1686614571565b6130189190614593565b6001600160401b0316905060006130316101008761455d565b90506000610100826130438587613dce565b61304d9190613dce565b613057919061455d565b979650505050505050565b606060006105ba836135d5565b6000816040516020016130829190613d32565b604051602081830303815290604052805190602001209050919050565b6001600160a01b03821660009081526009602052604090206109439082613530565b60006130d08260200151613631565b602083015160a08101516060909101516130ea9190614571565b6001600160401b03166110599190613d8d565b600080600061310b85611b51565b60008681526005602052604081205491925090613130906001600160401b031661354f565b90506001826006811115613146576131466138cc565b14158061315a57506131588582613650565b155b1561316d576000809350935050506131ae565b6131778686612fd0565b925060006131848461357b565b9050600061319188611072565b90508015806131a757506131a5818361455d565b155b9550505050505b9250929050565b60008060006131c485856130fd565b90925090508180156121165750600254600160801b900460ff90811691161015949350505050565b6001600160a01b038216600090815260096020526040902061094390826134d5565b60008060008381526012602052604090205460ff166006811115613234576132346138cc565b1492915050565b600060ff198216816110c982613666565b6000806105ba83613666565b60008381526007602052604081209061326f612fb1565b6001600160401b0316815260208101919091526040016000205460ff16156132c3576040517f3edef7db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600480546040517f94c8919d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116916394c8919d9161330d9186918691016145c1565b602060405180830381865afa15801561332a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061334e9190613de1565b613384576040517ffcd03a4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260076020526040812060019161339d612fb1565b6001600160401b031681526020808201929092526040908101600020805460ff19169315159390931790925590518481527f3b989d183b84b02259d7c14b34a9c9eb0fccb4c355a920d25e581e25aef4993d91016117d4565b60008381526010602052604081206001600160401b0380841690851610613449576040517f56607cb000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160e081018252600183015481526002830154602082015260038301549181019190915260048201546001600160401b038082166060840152600160401b820481166080840152600160801b8204811660a0840152600160c01b9091041660c08201526134b890613631565b6134c2858561453e565b6001600160401b03166121169190613d8d565b60006105ba83836136d8565b600081815260018301602052604081205461352857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611059565b506000611059565b60006105ba83836134e1565b600061105961354a836137d2565b6137df565b60006110597f00000000000000000000000000000000000000000000000000000000000000008361466b565b60008060ff831661358d600143613d7a565b6135979190613d7a565b40905060008190036135ab576135ab613e03565b60408051602081018390520160405160208183030381529060405280519060200120915050919050565b60608160000180548060200260200160405190810160405280929190818152602001828054801561362557602002820191906000526020600020905b815481526020019060010190808311613611575b50505050509050919050565b600081608001516001600160401b031682602001516110599190613d8d565b60006001600160401b03808416908316106105ba565b7fff00000000000000000000000000000000000000000000000000000000000000811660015b60208110156106de57600891821c916136a6908290613d8d565b83901b7fff0000000000000000000000000000000000000000000000000000000000000016919091179060010161368c565b600081815260018301602052604081205480156137c15760006136fc600183613d7a565b855490915060009061371090600190613d7a565b905081811461377557600086600001828154811061373057613730614528565b906000526020600020015490508087600001848154811061375357613753614528565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061378657613786614699565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611059565b6000915050611059565b5092915050565b6000611059826001613d5b565b60006110597f000000000000000000000000000000000000000000000000000000000000000083614571565b60408051610100810182526000608080830182815260a080850184905260c0850184905260e08501849052908452845190810185528281526020808201849052818601849052606080830185905292820192909252818401528351908101845290815290918201905b8152600060209091015290565b508054600082559060005260206000209081019061127991905b808211156138af576000815560010161389b565b5090565b6000602082840312156138c557600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600583106138f6576138f66138cc565b91905290565b6001600160a01b038116811461127957600080fd5b60008060006060848603121561392657600080fd5b833592506020840135613938816138fc565b91506040840135613948816138fc565b809150509250925092565b6001600160401b038116811461127957600080fd5b803561397381613953565b919050565b6000806040838503121561398b57600080fd5b82359150602083013561399d81613953565b809150509250929050565b600061010082840312156106de57600080fd5b600080600061014084860312156139d157600080fd5b8335925060208401356139e381613953565b91506139f285604086016139a8565b90509250925092565b602080825282518282018190526000918401906040840190835b81811015613a33578351835260209384019390920191600101613a15565b509095945050505050565b6000815180845260005b81811015613a6457602081850181015186830182015201613a48565b506000602082860101526020601f19601f83011685010191505092915050565b6001600160401b0381511682526001600160401b03602082015116602083015260ff604082015116604083015260ff60608201511660608301526000608082015160a060808501526110c960a0850182613a3e565b602081526000825160ff815116602084015260ff602082015116604084015260ff604082015116606084015260ff606082015116608084015250602083015160e060a0840152613b2d610100840182613a84565b90506040840151613b4460c08501825160ff169052565b5060608401516001600160401b03811660e0850152509392505050565b600060208284031215613b7357600080fd5b81356001600160401b03811115613b8957600080fd5b820161016081850312156105ba57600080fd5b6000815160408452613bb16040850182613a3e565b602093840151949093019390935250919050565b6001600160a01b038151168252600060208201518051602085015260208101516040850152604081015160608501526001600160401b0360608201511660808501526001600160401b0360808201511660a08501526001600160401b0360a08201511660c08501526001600160401b0360c08201511660e0850152506040820151610160610100850152613c5d610160850182613b9c565b90506060830151613c7a6101208601826001600160401b03169052565b5060808301516101408501528091505092915050565b602081526000825160406020840152613cac6060840182613bc5565b90506001600160401b0360208501511660408401528091505092915050565b60208101600783106138f6576138f66138cc565b60008060408385031215613cf257600080fd5b82359150602083013561399d816138fc565b6000806101208385031215613d1857600080fd5b82359150613d2984602085016139a8565b90509250929050565b6020815260006105ba6020830184613bc5565b634e487b7160e01b600052601160045260246000fd5b6001600160401b03818116838216019081111561105957611059613d45565b8181038181111561105957611059613d45565b808202811582820484141761105957611059613d45565b634e487b7160e01b600052601260045260246000fd5b600082613dc957613dc9613da4565b500490565b8082018082111561105957611059613d45565b600060208284031215613df357600080fd5b815180151581146105ba57600080fd5b634e487b7160e01b600052600160045260246000fd5b61ffff828116828216039081111561105957611059613d45565b600181811c90821680613e4757607f821691505b6020821081036106de57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715613e9f57613e9f613e67565b60405290565b60405160a081016001600160401b0381118282101715613e9f57613e9f613e67565b60405160e081016001600160401b0381118282101715613e9f57613e9f613e67565b604051601f8201601f191681016001600160401b0381118282101715613f1157613f11613e67565b604052919050565b600060408284031215613f2b57600080fd5b613f33613e7d565b905081356001600160401b03811115613f4b57600080fd5b8201601f81018413613f5c57600080fd5b80356001600160401b03811115613f7557613f75613e67565b613f88601f8201601f1916602001613ee9565b818152856020838501011115613f9d57600080fd5b81602084016020830137600060209282018301528352928301359282019290925292915050565b6000813603610160811215613fd857600080fd5b613fe0613ea5565b8335613feb816138fc565b815260e0601f1983011215613fff57600080fd5b614007613ec7565b6020858101358252604080870135918301919091526060860135908201529150608084013561403581613953565b606083015260a084013561404881613953565b608083015260c084013561405b81613953565b60a083015260e084013561406e81613953565b60c08301526020810191909152610100830135906001600160401b0382111561409657600080fd5b6140a236838601613f19565b60408201526140b46101208501613968565b6060820152610140939093013560808401525090919050565b6000602082840312156140df57600080fd5b81356105ba816138fc565b6000602082840312156140fc57600080fd5b81356105ba81613953565b60008235603e1983360301811261411d57600080fd5b9190910192915050565b6000808335601e1984360301811261413e57600080fd5b8301803591506001600160401b0382111561415857600080fd5b6020019150368190038213156131ae57600080fd5b6000813561105981613953565b601f82111561094357806000526020600020601f840160051c810160208510156141a15750805b601f840160051c820191505b818110156141c157600081556001016141ad565b5050505050565b8135601e198336030181126141dc57600080fd5b820180356001600160401b03811180156141f557600080fd5b81360360208401131561420757600080fd5b6000905061421f826142198654613e33565b8661417a565b80601f8311600181146142545782841561423c5750848201602001355b600019600386901b1c1916600185901b1786556142b3565b600086815260209020601f19851690845b8281101561428757602085890181013583559485019460019092019101614265565b50858210156142a75760001960f88760031b161c19602085890101351681555b505060018460011b0186555b505050505060209190910135600190910155565b81356142d2816138fc565b815473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039190911617815560208201356001820155604082013560028201556060820135600382015560048101608083013561432a81613953565b815467ffffffffffffffff19166001600160401b0382161782555060a083013561435381613953565b81546fffffffffffffffff0000000000000000191660409190911b6fffffffffffffffff0000000000000000161781556143c761439260c0850161416d565b825467ffffffffffffffff60801b191660809190911b77ffffffffffffffff0000000000000000000000000000000016178255565b61441f6143d660e0850161416d565b825477ffffffffffffffffffffffffffffffffffffffffffffffff1660c09190911b7fffffffffffffffff00000000000000000000000000000000000000000000000016178255565b5061443a614431610100840184614107565b600583016141c8565b61446b61444a610120840161416d565b600783016001600160401b0382166001600160401b03198254161781555050565b6101409190910135600890910155565b83815282356020808301919091528301356040808301919091528301356060808301919091526101208201908401356144b381613953565b6001600160401b03811660808401525060808401356144d181613953565b6001600160401b03811660a08401525060a08401356144ef81613953565b6001600160401b03811660c08401525061450b60c08501613968565b6001600160401b0390811660e084015283166101008301526110c9565b634e487b7160e01b600052603260045260246000fd5b6001600160401b03828116828216039081111561105957611059613d45565b60008261456c5761456c613da4565b500690565b6001600160401b0381811683821602908116908181146137cb576137cb613d45565b60006001600160401b038316806145ac576145ac613da4565b806001600160401b0384160691505092915050565b8235815260208084013590820152600061012082016145f0604084016040870180358252602090810135910152565b61460a608084016080870180358252602090810135910152565b61462460c0840160c0870180358252602090810135910152565b610120610100840152835190819052602084019061014084019060005b8181101561465f578351835260209384019390920191600101614641565b50909695505050505050565b60006001600160401b0383168061468457614684613da4565b806001600160401b0384160491505092915050565b634e487b7160e01b600052603160045260246000fdfea26469706673582212206e940e8cb5c54ce6f6606e3b8f89e55d51c501d4017adbc3ac7b30357327730d64736f6c634300081c0033"; public MarketplaceDeploymentBase() : base(BYTECODE) { } public MarketplaceDeploymentBase(string byteCode) : base(byteCode) { } [Parameter("tuple", "config", 1)] @@ -179,6 +179,11 @@ namespace CodexContractsPlugin.Marketplace public class MarketplaceNothingtowithdrawErrorBase : IErrorDTO { } + public partial class MarketplaceProofnotsubmittedbyhostError : MarketplaceProofnotsubmittedbyhostErrorBase { } + [Error("Marketplace_ProofNotSubmittedByHost")] + public class MarketplaceProofnotsubmittedbyhostErrorBase : IErrorDTO + { + } public partial class MarketplaceRepairrewardpercentagetoohighError : MarketplaceRepairrewardpercentagetoohighErrorBase { } [Error("Marketplace_RepairRewardPercentageTooHigh")] public class MarketplaceRepairrewardpercentagetoohighErrorBase : IErrorDTO diff --git a/ProjectPlugins/CodexPlugin/ApiChecker.cs b/ProjectPlugins/CodexPlugin/ApiChecker.cs index eeb81734..2580e492 100644 --- a/ProjectPlugins/CodexPlugin/ApiChecker.cs +++ b/ProjectPlugins/CodexPlugin/ApiChecker.cs @@ -10,7 +10,7 @@ namespace CodexPlugin public class ApiChecker { // - private const string OpenApiYamlHash = "00-7D-C3-0B-D2-23-D6-6C-CA-C2-43-D0-9B-B4-63-FC-4F-FE-23-9F-B8-82-5F-3B-3F-6B-4F-1F-11-E9-48-16"; + private const string OpenApiYamlHash = "9D-AB-49-BC-50-D3-ED-3D-EE-F3-5B-CC-74-F2-26-CD-74-1B-19-FF-25-F0-3F-05-37-71-1C-D7-C2-EF-AD-0A"; private const string OpenApiFilePath = "/codex/openapi.yaml"; private const string DisableEnvironmentVariable = "CODEXPLUGIN_DISABLE_APICHECK";