From 02d1292acc1dbb4608e2f6d80be569e5ae616b8d Mon Sep 17 00:00:00 2001 From: Ben Date: Tue, 4 Feb 2025 09:39:38 +0100 Subject: [PATCH] Updates contract --- .../Marketplace/Marketplace.cs | 223 +++++++++++++++++- .../MarketTests/ContractFailedTest.cs | 5 +- Tools/MarketInsights/ContributionBuilder.cs | 4 +- Tools/MarketInsights/Model.cs | 4 +- Tools/MarketInsights/Tracker.cs | 4 +- Tools/TestNetRewarder/EventsFormatter.cs | 4 +- 6 files changed, 224 insertions(+), 20 deletions(-) diff --git a/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs b/ProjectPlugins/CodexContractsPlugin/Marketplace/Marketplace.cs index 11a901a..d6a4d15 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 = "0x60c06040523480156200001157600080fd5b506040516200462638038062004626833981016040819052620000349162000571565b602083015180516040850151516001805460ff191660ff909216919091179055608052816101004311620000af5760405162461bcd60e51b815260206004820152601960248201527f496e73756666696369656e7420626c6f636b206865696768740000000000000060448201526064015b60405180910390fd5b81516002908155602083015160035560408301516004805460ff191660ff9092169190911790556060830151839190600590620000ed908262000724565b50608091909101516004909101805460ff191660ff928316179055600780546001600160a01b0319166001600160a01b0393841617905590841660a0528451516064911611159050620001835760405162461bcd60e51b815260206004820152601560248201527f4d757374206265206c657373207468616e2031303000000000000000000000006044820152606401620000a6565b606483600001516060015160ff161115620001e15760405162461bcd60e51b815260206004820152601560248201527f4d757374206265206c657373207468616e2031303000000000000000000000006044820152606401620000a6565b82516060810151602090910151606491620001fc91620007f0565b60ff1611156200024f5760405162461bcd60e51b815260206004820152601d60248201527f4d6178696d756d20736c617368696e67206578636565647320313030250000006044820152606401620000a6565b82518051600f805460208085015160408087015160609788015160ff9081166401000000000260ff60201b1961ffff90931662010000029290921664ffffff0000199482166101000261ffff199097169882169890981795909517929092169590951717835580880151805160109081559181015160115593840151601280549190931660ff19919091161790915592820151869391929190601390620002f7908262000724565b50608091909101516004909101805460ff1990811660ff938416179091556040939093015151600692909201805490931691161790555062000822915050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171562000372576200037262000337565b60405290565b604051606081016001600160401b038111828210171562000372576200037262000337565b604051608081016001600160401b038111828210171562000372576200037262000337565b604051601f8201601f191681016001600160401b0381118282101715620003ed57620003ed62000337565b604052919050565b805160ff811681146200040757600080fd5b919050565b600060a082840312156200041f57600080fd5b620004296200034d565b905081518152602080830151818301526200044760408401620003f5565b604083015260608301516001600160401b03808211156200046757600080fd5b818501915085601f8301126200047c57600080fd5b81518181111562000491576200049162000337565b620004a5601f8201601f19168501620003c2565b91508082528684828501011115620004bc57600080fd5b60005b81811015620004dc578381018501518382018601528401620004bf565b50600084828401015250806060850152505050620004fd60808301620003f5565b608082015292915050565b6000602082840312156200051b57600080fd5b604051602081016001600160401b038111828210171562000540576200054062000337565b6040529050806200055183620003f5565b905292915050565b80516001600160a01b03811681146200040757600080fd5b6000806000606084860312156200058757600080fd5b83516001600160401b03808211156200059f57600080fd5b9085019081870360c0811215620005b557600080fd5b620005bf62000378565b6080821215620005ce57600080fd5b620005d86200039d565b9150620005e584620003f5565b8252620005f560208501620003f5565b6020830152604084015161ffff811681146200061057600080fd5b60408301526200062360608501620003f5565b6060830152908152608083015190828211156200063f57600080fd5b6200064d898386016200040c565b6020820152620006618960a0860162000508565b604082015295506200067a925050506020850162000559565b91506200068a6040850162000559565b90509250925092565b600181811c90821680620006a857607f821691505b602082108103620006c957634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200071f576000816000526020600020601f850160051c81016020861015620006fa5750805b601f850160051c820191505b818110156200071b5782815560010162000706565b5050505b505050565b81516001600160401b0381111562000740576200074062000337565b620007588162000751845462000693565b84620006cf565b602080601f831160018114620007905760008415620007775750858301515b600019600386901b1c1916600185901b1785556200071b565b600085815260208120601f198616915b82811015620007c157888601518255948401946001909101908401620007a0565b5085821015620007e05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60ff81811683821602908116908181146200081b57634e487b7160e01b600052601160045260246000fd5b5092915050565b60805160a051613dad620008796000396000818161044201528181611b8601528181612437015281816124d6015281816126640152818161270301526128fb015260008181612e2a0152612ff00152613dad6000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c80636e2b54ee116100ee578063be5cdc4811610097578063e8aa0a0711610071578063e8aa0a07146103ed578063f752196b14610400578063fb1e61ca14610420578063fc0c546a1461044057600080fd5b8063be5cdc48146103a7578063c0cc4add146103c7578063c5d43351146103da57600080fd5b8063a3a0807e116100c8578063a3a0807e14610361578063a6af384b14610374578063b396dc791461038757600080fd5b80636e2b54ee146103335780639777b72c14610346578063a29c29a41461034e57600080fd5b80634641dce61161015b5780635da73835116101355780635da73835146102b257806362d48e13146102c75780636b00c8cf146102da5780636c70bee91461031e57600080fd5b80634641dce6146102575780634802f44b1461027c57806359cc89ed1461029f57600080fd5b80630aefaabe1161018c5780630aefaabe1461020e578063329b5a0b14610221578063458d2bf11461024457600080fd5b806302fa8e65146101b357806305b90773146101d957806308695fcd146101f9575b600080fd5b6101c66101c1366004613209565b610466565b6040519081526020015b60405180910390f35b6101ec6101e7366004613209565b6104dd565b6040516101d09190613238565b61020c610207366004613252565b6105ef565b005b61020c61021c366004613289565b610745565b6101c661022f366004613209565b60009081526017602052604090206005015490565b6101c6610252366004613209565b610922565b61026a610265366004613209565b61093b565b60405160ff90911681526020016101d0565b61028f61028a366004613252565b61094e565b60405190151581526020016101d0565b61020c6102ad3660046132de565b6109d7565b6102ba610de1565b6040516101d09190613315565b61020c6102d5366004613252565b610e08565b6103066102e8366004613209565b6000908152601860205260409020600501546001600160a01b031690565b6040516001600160a01b0390911681526020016101d0565b610326610f05565b6040516101d0919061339f565b61020c610341366004613209565b6110b9565b6102ba6110c6565b61020c61035c366004613209565b6110e5565b61028f61036f366004613209565b611155565b61020c610382366004613448565b61118a565b61039a610395366004613209565b6114df565b6040516101d09190613551565b6103ba6103b5366004613209565b6116c8565b6040516101d09190613583565b61028f6103d5366004613209565b611796565b61020c6103e8366004613597565b6117a9565b61020c6103fb3660046135c7565b611c0e565b6101c661040e366004613209565b6000908152600a602052604090205490565b61043361042e366004613209565b611d43565b6040516101d091906135f5565b7f0000000000000000000000000000000000000000000000000000000000000000610306565b60008181526017602052604081206004015481610482846104dd565b9050600081600481111561049857610498613222565b14806104b5575060018160048111156104b3576104b3613222565b145b156104c1575092915050565b6104d5826104d060014261361e565b611efa565b949350505050565b60008181526016602052604081205482906001600160a01b031661053a5760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b60448201526064015b60405180910390fd5b600083815260176020526040812090815460ff16600481111561055f5761055f613222565b14801561057c575060008481526017602052604090206005015442115b1561058b5760029250506105e9565b6001815460ff1660048111156105a3576105a3613222565b14806105c457506000815460ff1660048111156105c2576105c2613222565b145b80156105d35750806004015442115b156105e25760039250506105e9565b5460ff1691505b50919050565b60016105fa836116c8565b600681111561060b5761060b613222565b146106585760405162461bcd60e51b815260206004820152601960248201527f536c6f74206e6f7420616363657074696e672070726f6f6673000000000000006044820152606401610531565b6106628282611f12565b6000828152601860209081526040808320600181015484526016909252909120600f5461ffff62010000909104166106a6856000908152600a602052604090205490565b6106b09190613647565b60000361073f57600f5460068201546000916064916106da91640100000000900460ff169061365b565b6106e49190613672565b9050808360040160008282546106fa919061361e565b9091555050600f546000868152600a6020526040902054610100820460ff169162010000900461ffff169061072f9190613672565b1061073d5761073d8561213f565b505b50505050565b826000808281526018602052604090205460ff16600681111561076a5761076a613222565b036107a65760405162461bcd60e51b815260206004820152600c60248201526b536c6f74206973206672656560a01b6044820152606401610531565b600084815260186020526040902060058101546001600160a01b031633146108105760405162461bcd60e51b815260206004820152601960248201527f536c6f742066696c6c6564206279206f7468657220686f7374000000000000006044820152606401610531565b600061081b866116c8565b9050600481600681111561083157610831613222565b0361087e5760405162461bcd60e51b815260206004820152600c60248201527f416c7265616479207061696400000000000000000000000000000000000000006044820152606401610531565b600281600681111561089257610892613222565b036108ac576108a78260010154878787612313565b61091a565b60058160068111156108c0576108c0613222565b036108d5576108a7826001015487878761255b565b60038160068111156108e9576108e9613222565b036108f8576108a73387612786565b600181600681111561090c5761090c613222565b0361091a5761091a8661213f565b505050505050565b6000610935826109306127a8565b6127b3565b92915050565b6000610935826109496127a8565b6127c7565b6040805160208082018590528183018490528251808303840181526060909201909252805191012060009033906109848161283b565b80156109ad5750600154600082815260208190526040902060ff909116906109ab90612868565b105b80156109ce575060008181526020819052604090206109cc9083612872565b155b95945050505050565b60008381526016602052604090205483906001600160a01b0316610a2f5760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b6000848152601660205260409020600181015467ffffffffffffffff168410610a9a5760405162461bcd60e51b815260206004820152600c60248201527f496e76616c696420736c6f7400000000000000000000000000000000000000006044820152606401610531565b60408051602080820188905281830187905282518083038401815260609092018352815191810191909120600081815291829052919020610adb9033612872565b610b275760405162461bcd60e51b815260206004820152601460248201527f5265736572766174696f6e2072657175697265640000000000000000000000006044820152606401610531565b6000818152601860209081526040808320600181018a905560038101899055898452601790925282209091610b5b846116c8565b6006811115610b6c57610b6c613222565b1480610b9157506006610b7e846116c8565b6006811115610b8f57610b8f613222565b145b610bdd5760405162461bcd60e51b815260206004820152601060248201527f536c6f74206973206e6f742066726565000000000000000000000000000000006044820152606401610531565b600484015460008481526008602090815260408083204290556009909152902055610c088387611c0e565b60058201805473ffffffffffffffffffffffffffffffffffffffff19163317905542600283015560018181018054600090610c44908490613686565b92505081905550610c59888360020154612894565b816002016000828254610c6c919061361e565b90915550600090506006610c7f856116c8565b6006811115610c9057610c90613222565b03610ccf57600f546006860154606491610caf9160ff9091169061365b565b610cb99190613672565b6006860154610cc8919061361e565b9050610cd6565b5060068401545b610ce033826128b3565b8060196000016000828254610cf59190613686565b9091555050600685015460048401556005830154610d1c906001600160a01b0316856129b6565b825460ff1916600117835560405188815289907ff530852268993f91008f1a1e0b09b5c813acd4188481f1fa83c33c7182e814b49060200160405180910390a26001808601549083015467ffffffffffffffff909116148015610d9457506000825460ff166004811115610d9257610d92613222565b145b15610dd657815460ff1916600117825542600383015560405189907f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e690600090a25b505050505050505050565b336000908152600e60205260409020606090610e0390610e00906129d8565b90565b905090565b610e12828261094e565b610e5e5760405162461bcd60e51b815260206004820152601760248201527f5265736572766174696f6e206e6f7420616c6c6f7765640000000000000000006044820152606401610531565b60408051602080820185905281830184905282518083038401815260609092018352815191810191909120600081815291829052919020610e9f90336129e5565b50600154600082815260208190526040902060ff90911690610ec090612868565b03610f0057827f3bef2ebab8cc92e0edda5decf18232f0606a18405ef674b51ea9d1e0e3839b4183604051610ef791815260200190565b60405180910390a25b505050565b610f796040805160e081019091526000606082018181526080830182905260a0830182905260c0830191909152819081526040805160a08101825260008082526020828101829052928201819052606080830152608082015291019081526040805160208181019092526000815291015290565b6040805160e081018252600f805460ff808216606080860191825261010084048316608087015261ffff6201000085041660a080880191909152640100000000909404831660c08701529085528551928301865260108054845260115460208581019190915260125490931696840196909652601380549596949592870194929184019161100690613699565b80601f016020809104026020016040519081016040528092919081815260200182805461103290613699565b801561107f5780601f106110545761010080835404028352916020019161107f565b820191906000526020600020905b81548152906001019060200180831161106257829003601f168201915b50505091835250506004919091015460ff908116602092830152918352604080518083019091526006949094015490911683520152919050565b6110c381336117a9565b50565b336000908152600d60205260409020606090610e0390610e00906129d8565b806000808281526018602052604090205460ff16600681111561110a5761110a613222565b036111465760405162461bcd60e51b815260206004820152600c60248201526b536c6f74206973206672656560a01b6044820152606401610531565b611151823333610745565b5050565b600080600061116b846111666127a8565b6129fa565b90925090508180156104d5575060045460ff9081169116109392505050565b3361119860208301836136cd565b6001600160a01b0316146111ee5760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420636c69656e742061646472657373000000000000000000006044820152606401610531565b60006112016111fc8361385f565b612add565b6000818152601660205260409020549091506001600160a01b0316156112695760405162461bcd60e51b815260206004820152601660248201527f5265717565737420616c726561647920657869737473000000000000000000006044820152606401610531565b600082610120013511801561128657506060820135610120830135105b6112d25760405162461bcd60e51b815260206004820152601360248201527f457870697279206e6f7420696e2072616e6765000000000000000000000000006044820152606401610531565b60006112e4604084016020850161394e565b67ffffffffffffffff161161133b5760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e7420736c6f747300000000000000000000000000006044820152606401610531565b61134b604083016020840161394e565b67ffffffffffffffff16611366610100840160e0850161394e565b67ffffffffffffffff1611156113be5760405162461bcd60e51b815260206004820152601960248201527f6d6178536c6f744c6f7373206578636565647320736c6f7473000000000000006044820152606401610531565b600081815260166020526040902082906113d88282613ad9565b506113e99050606083013542613686565b60008281526017602052604090206004015561140a61012083013542613686565b60008281526017602090815260409091206005019190915561143890611432908401846136cd565b82612b0d565b600061144b6114468461385f565b612b2f565b6000838152601760205260408120600201829055601980549293508392909190611476908490613686565b90915550611486905033826128b3565b7f5fdb86c365a247a4d97dcbcc5c3abde9d6e3e2de26273f3fda8eef5073b9a96c828460200160176000868152602001908152602001600020600501546040516114d293929190613bd1565b60405180910390a1505050565b6114e761310f565b816000808281526018602052604090205460ff16600681111561150c5761150c613222565b036115485760405162461bcd60e51b815260206004820152600c60248201526b536c6f74206973206672656560a01b6044820152606401610531565b600083815260186020526040902061155e61310f565b600180830154600090815260166020908152604091829020825160a0808201855282546001600160a01b03168252845160e0810186529583015467ffffffffffffffff9081168752600284015487860152600384015487870152600484015460608801526005840154608088015260068401549187019190915260078301541660c086015291820193909352815180830183526008840180549294938501928290829061160a90613699565b80601f016020809104026020016040519081016040528092919081815260200182805461163690613699565b80156116835780601f1061165857610100808354040283529160200191611683565b820191906000526020600020905b81548152906001019060200180831161166657829003601f168201915b505050918352505060019190910154602091820152908252600a83015482820152600b9092015460409091015290825260039092015491810191909152915050919050565b6000818152601860205260408120600181015482036116ea5750600092915050565b60006116f982600101546104dd565b90506004825460ff16600681111561171357611713613222565b03611722575060049392505050565b600281600481111561173657611736613222565b03611745575060059392505050565b600381600481111561175957611759613222565b03611768575060029392505050565b600481600481111561177c5761177c613222565b0361178b575060039392505050565b505460ff1692915050565b6000610935826117a46127a8565b612b60565b600082815260166020526040902080546001600160a01b031633146118105760405162461bcd60e51b815260206004820152601660248201527f496e76616c696420636c69656e742061646472657373000000000000000000006044820152606401610531565b600083815260176020526040812090611828856104dd565b9050600281600481111561183e5761183e613222565b148061185b5750600481600481111561185957611859613222565b145b806118775750600381600481111561187557611875613222565b145b6118c35760405162461bcd60e51b815260206004820152600d60248201527f496e76616c6964207374617465000000000000000000000000000000000000006044820152606401610531565b81600201546000036119175760405162461bcd60e51b815260206004820152601360248201527f4e6f7468696e6720746f207769746864726177000000000000000000000000006044820152606401610531565b600281600481111561192b5761192b613222565b036119b557815460ff1916600217825560405185907ff903f4774c7bd27355f9d7fcbc382b079b164a697a44ac5d95267a4c3cb3bb2290600090a2611988856119838760009081526017602052604090206005015490565b612894565b8260010154611997919061365b565b8260020160008282546119aa9190613686565b90915550611b2c9050565b60048160048111156119c9576119c9613222565b03611b20576040805160a0808201835285546001600160a01b03168252825160e081018452600187015467ffffffffffffffff90811682526002880154602083810191909152600389015483870152600489015460608401526005890154608084015260068901549383019390935260078801541660c08201529082015281518083018352600886018054611b1694889390850192909182908290611a6d90613699565b80601f0160208091040260200160405190810160405280929190818152602001828054611a9990613699565b8015611ae65780601f10611abb57610100808354040283529160200191611ae6565b820191906000526020600020905b815481529060010190602001808311611ac957829003601f168201915b505050505081526020016001820154815250508152602001600a8201548152602001600b82015481525050612b2f565b6002830155611b2c565b815460ff191660031782555b8254611b41906001600160a01b031686612b90565b6002820154601a8054829190600090611b5b908490613686565b909155505060405163a9059cbb60e01b81526001600160a01b038681166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611bcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf39190613c4d565b611bff57611bff613c6f565b50506000600290910155505050565b6000828152601860209081526040808320600101548084526016909252909120546001600160a01b0316611c765760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b600083815260186020908152604080832060018101548452601683528184208251600380825260808201909452919490939092908201606080368337019050509050611cc9611cc487610922565b612bb2565b81600081518110611cdc57611cdc613c85565b60209081029190910101526009820154611cf590612bc3565b81600181518110611d0857611d08613c85565b602002602001018181525050826003015481600281518110611d2c57611d2c613c85565b60200260200101818152505061091a868683612bcf565b611d4b61312f565b60008281526016602052604090205482906001600160a01b0316611da35760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b600083815260166020908152604091829020825160a0808201855282546001600160a01b03168252845160e081018652600184015467ffffffffffffffff90811682526002850154828701526003850154828801526004850154606083015260058501546080830152600685015492820192909252600784015490911660c08201529281019290925282518084018452600882018054939492939285019282908290611e4e90613699565b80601f0160208091040260200160405190810160405280929190818152602001828054611e7a90613699565b8015611ec75780601f10611e9c57610100808354040283529160200191611ec7565b820191906000526020600020905b815481529060010190602001808311611eaa57829003601f168201915b505050505081526020016001820154815250508152602001600a8201548152602001600b82015481525050915050919050565b6000818310611f095781611f0b565b825b9392505050565b6000611f1d82612d8e565b9050428110611f6e5760405162461bcd60e51b815260206004820152601860248201527f506572696f6420686173206e6f7420656e6465642079657400000000000000006044820152606401610531565b600354611f7b9082613686565b4210611fc95760405162461bcd60e51b815260206004820152601460248201527f56616c69646174696f6e2074696d6564206f75740000000000000000000000006044820152606401610531565b6000838152600b6020908152604080832085845290915290205460ff16156120335760405162461bcd60e51b815260206004820181905260248201527f50726f6f6620776173207375626d69747465642c206e6f74206d697373696e676044820152606401610531565b61203d8383612b60565b6120895760405162461bcd60e51b815260206004820152601660248201527f50726f6f6620776173206e6f74207265717569726564000000000000000000006044820152606401610531565b6000838152600c6020908152604080832085845290915290205460ff16156120f35760405162461bcd60e51b815260206004820152601f60248201527f50726f6f6620616c7265616479206d61726b6564206173206d697373696e67006044820152606401610531565b6000838152600c602090815260408083208584528252808320805460ff19166001908117909155868452600a9092528220805491929091612135908490613686565b9091555050505050565b6000818152601860209081526040808320600181015480855260179093529220600283015461216f908390612894565b8160020160008282546121829190613686565b9091555050600583015461219f906001600160a01b031685612786565b60008481526020819052604081209081816121ba82826131d7565b5050845460ff1916600617855550506000600284018190556004840181905560058401805473ffffffffffffffffffffffffffffffffffffffff19169055600182810180549192909161220e90849061361e565b9091555050600383015460405190815282907f1d31c9f8dea6e179f6a050db117595feea8937029ea51f5168a4780be7e8f5529060200160405180910390a26000848152600a602052604081205560008281526016602052604081206001808401549082015491929161228b919067ffffffffffffffff1661361e565b600783015490915067ffffffffffffffff16811180156122c057506001835460ff1660048111156122be576122be613222565b145b1561091a57825460ff191660041783556122db60014261361e565b600484015560405184907f4769361a442504ecaf038f35e119bcccdd5e42096b24c09e3c17fd17c6684c0290600090a2505050505050565b60008481526016602052604090205484906001600160a01b031661236b5760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b600085815260176020908152604080832060168352818420815460ff191660031782558885526018909352922081546123ad906001600160a01b031689612b90565b60058101546123c5906001600160a01b031688612786565b60006123d5898360020154612894565b60048301549091506123e78183613686565b601a80546000906123f9908490613686565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038981166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a49190613c4d565b6124b0576124b0613c6f565b60405163a9059cbb60e01b81526001600160a01b038881166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af115801561251f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125439190613c4d565b61254f5761254f613c6f565b50505050505050505050565b60008481526016602052604090205484906001600160a01b03166125b35760405162461bcd60e51b815260206004820152600f60248201526e155b9adb9bdddb881c995c5d595cdd608a1b6044820152606401610531565b600084815260186020526040902060058101546125d9906001600160a01b031686612786565b60006126028783600201546125fd8a60009081526017602052604090206005015490565b612da1565b60048301549091506126148183613686565b601a8054600090612626908490613686565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038781166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156126ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126d19190613c4d565b6126dd576126dd613c6f565b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af115801561274c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127709190613c4d565b61277c5761277c613c6f565b5050505050505050565b6001600160a01b0382166000908152600e60205260409020610f009082612e17565b6000610e0342612e23565b6000611f0b6127c284846127c7565b612e4f565b6000806127d661010043613647565b600654909150600090610100906127f09060ff168661365b565b6127fa9190613647565b9050600061280a61010087613647565b905060006101008261281c8587613686565b6128269190613686565b6128309190613647565b979650505050505050565b60008060008381526018602052604090205460ff16600681111561286157612861613222565b1492915050565b6000610935825490565b6001600160a01b03811660009081526001830160205260408120541515611f0b565b600082815260176020526040812060040154611f0b9084908490612da1565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152306024830181905260448301849052917f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303816000875af1158015612946573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061296a9190613c4d565b610f005760405162461bcd60e51b815260206004820152600f60248201527f5472616e73666572206661696c656400000000000000000000000000000000006044820152606401610531565b6001600160a01b0382166000908152600e60205260409020610f009082612ea9565b60606000611f0b83612eb5565b6000611f0b836001600160a01b038416612f11565b6000806000612a08856116c8565b60008681526008602052604081205491925090612a2490612e23565b90506001826006811115612a3a57612a3a613222565b141580612a4e5750612a4c8582612f60565b155b15612a6157600080935093505050612ad6565b612a6b86866127c7565b92506000612a7884612e4f565b60045490915060009061010090612a929060ff1682613c9b565b60008a815260096020526040902054612aaf9161ffff169061365b565b612ab99190613672565b9050801580612acf5750612acd8183613647565b155b9550505050505b9250929050565b600081604051602001612af091906135f5565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0382166000908152600d60205260409020610f009082612ea9565b6020810151608081015160408201519151600092612b569167ffffffffffffffff1661365b565b610935919061365b565b6000806000612b6f85856129fa565b90925090508180156109ce575060045460ff90811691161015949350505050565b6001600160a01b0382166000908152600d60205260409020610f009082612e17565b600060ff198216816104d582612f6a565b600080611f0b83612f6a565b6000838152600b6020526040812090612be66127a8565b815260208101919091526040016000205460ff1615612c475760405162461bcd60e51b815260206004820152601760248201527f50726f6f6620616c7265616479207375626d69747465640000000000000000006044820152606401610531565b6007546040517f94c8919d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906394c8919d90612c929085908590600401613cb6565b602060405180830381865afa158015612caf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd39190613c4d565b612d1f5760405162461bcd60e51b815260206004820152600d60248201527f496e76616c69642070726f6f66000000000000000000000000000000000000006044820152606401610531565b6000838152600b60205260408120600191612d386127a8565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3b989d183b84b02259d7c14b34a9c9eb0fccb4c355a920d25e581e25aef4993d836040516114d291815260200190565b6000610935612d9c83612fdc565b612fe9565b6000838152601660205260408120828410612dfe5760405162461bcd60e51b815260206004820152601760248201527f5374617274206e6f74206265666f7265206578706972790000000000000000006044820152606401610531565b6005810154612e0d858561361e565b6109ce919061365b565b6000611f0b8383613015565b60006109357f000000000000000000000000000000000000000000000000000000000000000083613672565b60008060ff8316612e6160014361361e565b612e6b919061361e565b4090506000819003612e7f57612e7f613c6f565b60408051602081018390520160405160208183030381529060405280519060200120915050919050565b6000611f0b8383612f11565b606081600001805480602002602001604051908101604052809291908181526020018280548015612f0557602002820191906000526020600020905b815481526020019060010190808311612ef1575b50505050509050919050565b6000818152600183016020526040812054612f5857508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610935565b506000610935565b6000818311611f0b565b7fff00000000000000000000000000000000000000000000000000000000000000811660015b60208110156105e957600891821c91612faa90829061365b565b83901b7fff00000000000000000000000000000000000000000000000000000000000000169190911790600101612f90565b6000610935826001613686565b60006109357f00000000000000000000000000000000000000000000000000000000000000008361365b565b600081815260018301602052604081205480156130fe57600061303960018361361e565b855490915060009061304d9060019061361e565b90508181146130b257600086600001828154811061306d5761306d613c85565b906000526020600020015490508087600001848154811061309057613090613c85565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806130c3576130c3613d61565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610935565b6000915050610935565b5092915050565b604051806040016040528061312261312f565b8152602001600081525090565b6040518060a0016040528060006001600160a01b0316815260200161319e6040518060e00160405280600067ffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600067ffffffffffffffff1681525090565b81526020016131c3604051806040016040528060608152602001600080191681525090565b815260006020820181905260409091015290565b50805460008255906000526020600020908101906110c391905b8082111561320557600081556001016131f1565b5090565b60006020828403121561321b57600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b602081016005831061324c5761324c613222565b91905290565b6000806040838503121561326557600080fd5b50508035926020909101359150565b6001600160a01b03811681146110c357600080fd5b60008060006060848603121561329e57600080fd5b8335925060208401356132b081613274565b915060408401356132c081613274565b809150509250925092565b600061010082840312156105e957600080fd5b600080600061014084860312156132f457600080fd5b833592506020840135915061330c85604086016132cb565b90509250925092565b6020808252825182820181905260009190848201906040850190845b8181101561334d57835183529284019291840191600101613331565b50909695505050505050565b6000815180845260005b8181101561337f57602081850181015186830182015201613363565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000825160ff815116602084015260ff602082015116604084015261ffff604082015116606084015260ff606082015116608084015250602083015160c060a0840152805160e0840152602081015161010084015260ff604082015116610120840152606081015160a0610140850152613421610180850182613359565b905060ff608083015116610160850152604085015191506104d560c08501835160ff169052565b60006020828403121561345a57600080fd5b813567ffffffffffffffff81111561347157600080fd5b82016101608185031215611f0b57600080fd5b60008151604084526134996040850182613359565b602093840151949093019390935250919050565b60006101606001600160a01b038351168452602083015167ffffffffffffffff808251166020870152602082015160408701526040820151606087015260608201516080870152608082015160a087015260a082015160c08701528060c08301511660e0870152505060408301518161010086015261352e82860182613484565b915050606083015161012085015260808301516101408501528091505092915050565b60208152600082516040602084015261356d60608401826134ad565b9050602084015160408401528091505092915050565b602081016007831061324c5761324c613222565b600080604083850312156135aa57600080fd5b8235915060208301356135bc81613274565b809150509250929050565b60008061012083850312156135db57600080fd5b823591506135ec84602085016132cb565b90509250929050565b602081526000611f0b60208301846134ad565b634e487b7160e01b600052601160045260246000fd5b8181038181111561093557610935613608565b634e487b7160e01b600052601260045260246000fd5b60008261365657613656613631565b500690565b808202811582820484141761093557610935613608565b60008261368157613681613631565b500490565b8082018082111561093557610935613608565b600181811c908216806136ad57607f821691505b6020821081036105e957634e487b7160e01b600052602260045260246000fd5b6000602082840312156136df57600080fd5b8135611f0b81613274565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613723576137236136ea565b60405290565b60405160a0810167ffffffffffffffff81118282101715613723576137236136ea565b60405160e0810167ffffffffffffffff81118282101715613723576137236136ea565b604051601f8201601f1916810167ffffffffffffffff81118282101715613798576137986136ea565b604052919050565b67ffffffffffffffff811681146110c357600080fd5b6000604082840312156137c857600080fd5b6137d0613700565b9050813567ffffffffffffffff808211156137ea57600080fd5b818401915084601f8301126137fe57600080fd5b8135602082821115613812576138126136ea565b613824601f8301601f1916820161376f565b9250818352868183860101111561383a57600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600081360361016081121561387357600080fd5b61387b613729565b833561388681613274565b815260e0601f198301121561389a57600080fd5b6138a261374c565b915060208401356138b2816137a0565b8083525060408401356020830152606084013560408301526080840135606083015260a0840135608083015260c084013560a083015260e08401356138f6816137a0565b60c083015260208101919091526101008301359067ffffffffffffffff82111561391f57600080fd5b61392b368386016137b6565b604082015261012084013560608201526101409093013560808401525090919050565b60006020828403121561396057600080fd5b8135611f0b816137a0565b60008135610935816137a0565b60008235603e1983360301811261398e57600080fd5b9190910192915050565b601f821115610f00576000816000526020600020601f850160051c810160208610156139c15750805b601f850160051c820191505b8181101561091a578281556001016139cd565b8135601e198336030181126139f457600080fd5b8201803567ffffffffffffffff811115613a0d57600080fd5b60208136038184011315613a2057600080fd5b613a3482613a2e8654613699565b86613998565b6000601f831160018114613a6a5760008415613a5257508482018301355b600019600386901b1c1916600185901b178655613ac7565b600086815260209020601f19851690835b82811015613a9c578785018601358255938501936001909101908501613a7b565b5085821015613abb5760001960f88760031b161c198585890101351681555b505060018460011b0186555b50508085013560018501555050505050565b8135613ae481613274565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff19835416178255506020820135613b19816137a0565b60018201805467ffffffffffffffff191667ffffffffffffffff83161790555060408201356002820155606082013560038201556080820135600482015560a0820135600582015560c08201356006820155613b9d613b7a60e0840161396b565b6007830167ffffffffffffffff821667ffffffffffffffff198254161781555050565b613bb7613bae610100840184613978565b600883016139e0565b610120820135600a820155610140820135600b8201555050565b83815261012081018335613be4816137a0565b67ffffffffffffffff8082166020850152602086013560408501526040860135606085015260608601356080850152608086013560a085015260a086013560c085015260c08601359150613c37826137a0565b1660e08301526101009091019190915292915050565b600060208284031215613c5f57600080fd5b81518015158114611f0b57600080fd5b634e487b7160e01b600052600160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b61ffff82811682821603908082111561310857613108613608565b82358152602080840135908201526000610120828101613ce6604085016040880180358252602090810135910152565b613d00608085016080880180358252602090810135910152565b613d1a60c0850160c0880180358252602090810135910152565b61010084019190915283519081905261014083019060209081860160005b82811015613d5457815185529383019390830190600101613d38565b5092979650505050505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220adf13a77310e7a9cc327b34aae5b7af9b905461380c25ac8eff43a37e42c2db364736f6c63430008170033"; + public static string BYTECODE = "0x60c06040523480156200001157600080fd5b506040516200464c3803806200464c8339810160408190526200003491620004cc565b602083015180516040850151516001805460ff191660ff90921691909117905582906000819003620000795760405163015536c760e51b815260040160405180910390fd5b60805261010043116200009f576040516338f5f66160e11b815260040160405180910390fd5b81516002908155602083015160035560408301516004805460ff191660ff9092169190911790556060830151839190600590620000dd908262000677565b50608091909101516004909101805460ff191660ff928316179055600780546001600160a01b0319166001600160a01b0393841617905590841660a052845151606491161115905062000143576040516302bd816360e41b815260040160405180910390fd5b606483600001516040015160ff16111562000171576040516354e5e0ab60e11b815260040160405180910390fd5b825160408101516020909101516064916200018c9162000743565b60ff161115620001af576040516317ff9d0f60e21b815260040160405180910390fd5b82518051600e805460208085015160408087015160609788015160ff90811663010000000263ff0000001992821662010000029290921663ffff0000199482166101000261ffff1990971698821698909817959095179290921695909517178355808801518051600f9081559181015160105593840151601180549190931660ff1991909116179091559282015186939192919060129062000252908262000677565b50608091909101516004909101805460ff1990811660ff938416179091556040939093015151600692909201805490931691161790555062000775915050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b0381118282101715620002cd57620002cd62000292565b60405290565b604051606081016001600160401b0381118282101715620002cd57620002cd62000292565b604051608081016001600160401b0381118282101715620002cd57620002cd62000292565b604051601f8201601f191681016001600160401b038111828210171562000348576200034862000292565b604052919050565b805160ff811681146200036257600080fd5b919050565b600060a082840312156200037a57600080fd5b62000384620002a8565b90508151815260208083015181830152620003a26040840162000350565b604083015260608301516001600160401b0380821115620003c257600080fd5b818501915085601f830112620003d757600080fd5b815181811115620003ec57620003ec62000292565b62000400601f8201601f191685016200031d565b915080825286848285010111156200041757600080fd5b60005b81811015620004375783810185015183820186015284016200041a565b50600084828401015250806060850152505050620004586080830162000350565b608082015292915050565b6000602082840312156200047657600080fd5b604051602081016001600160401b03811182821017156200049b576200049b62000292565b604052905080620004ac8362000350565b905292915050565b80516001600160a01b03811681146200036257600080fd5b600080600060608486031215620004e257600080fd5b83516001600160401b0380821115620004fa57600080fd5b9085019081870360c08112156200051057600080fd5b6200051a620002d3565b60808212156200052957600080fd5b62000533620002f8565b9150620005408462000350565b8252620005506020850162000350565b6020830152620005636040850162000350565b6040830152620005766060850162000350565b6060830152908152608083015190828211156200059257600080fd5b620005a08983860162000367565b6020820152620005b48960a0860162000463565b60408201529550620005cd9250505060208501620004b4565b9150620005dd60408501620004b4565b90509250925092565b600181811c90821680620005fb57607f821691505b6020821081036200061c57634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000672576000816000526020600020601f850160051c810160208610156200064d5750805b601f850160051c820191505b818110156200066e5782815560010162000659565b5050505b505050565b81516001600160401b0381111562000693576200069362000292565b620006ab81620006a48454620005e6565b8462000622565b602080601f831160018114620006e35760008415620006ca5750858301515b600019600386901b1c1916600185901b1785556200066e565b600085815260208120601f198616915b828110156200071457888601518255948401946001909101908401620006f3565b5085821015620007335787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60ff81811683821602908116908181146200076e57634e487b7160e01b600052601160045260246000fd5b5092915050565b60805160a051613e79620007d36000396000818161048e0152818161078201528181611cc4015281816124cb0152818161257b015281816126ed0152818161279d01526129a6015260008181612e9a01526130760152613e796000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636c70bee9116100f9578063be5cdc4811610097578063e8aa0a0711610071578063e8aa0a0714610439578063f752196b1461044c578063fb1e61ca1461046c578063fc0c546a1461048c57600080fd5b8063be5cdc48146103f3578063c0cc4add14610413578063c5d433511461042657600080fd5b8063a29c29a4116100d3578063a29c29a41461039a578063a3a0807e146103ad578063a6af384b146103c0578063b396dc79146103d357600080fd5b80636c70bee91461036a5780636e2b54ee1461037f5780639777b72c1461039257600080fd5b80634641dce61161016657806359cc89ed1161014057806359cc89ed146102eb5780635da73835146102fe57806362d48e13146103135780636b00c8cf1461032657600080fd5b80634641dce6146102905780634802f44b146102b557806351a76642146102d857600080fd5b80630aefaabe116101a25780630aefaabe1461022457806326d6f83414610237578063329b5a0b1461025a578063458d2bf11461027d57600080fd5b806302fa8e65146101c957806305b90773146101ef57806308695fcd1461020f575b600080fd5b6101dc6101d736600461328f565b6104b2565b6040519081526020015b60405180910390f35b6102026101fd36600461328f565b610529565b6040516101e691906132be565b61022261021d3660046132d8565b610615565b005b61022261023236600461330f565b61084d565b6101dc61024536600461328f565b60009081526017602052604090206004015490565b6101dc61026836600461328f565b60009081526016602052604090206005015490565b6101dc61028b36600461328f565b6109d8565b6102a361029e36600461328f565b6109f1565b60405160ff90911681526020016101e6565b6102c86102c33660046132d8565b610a04565b60405190151581526020016101e6565b6101dc6102e636600461328f565b610a8d565b6102226102f9366004613364565b610add565b610306610ed2565b6040516101e6919061339b565b6102226103213660046132d8565b610ef9565b61035261033436600461328f565b6000908152601760205260409020600501546001600160a01b031690565b6040516001600160a01b0390911681526020016101e6565b610372610fe0565b6040516101e69190613425565b61022261038d36600461328f565b611191565b61030661119e565b6102226103a836600461328f565b6111bd565b6102c86103bb36600461328f565b61120f565b6102226103ce3660046134cd565b611244565b6103e66103e136600461328f565b61165b565b6040516101e691906135d6565b61040661040136600461328f565b611826565b6040516101e69190613608565b6102c861042136600461328f565b6118f4565b61022261043436600461361c565b611907565b61022261044736600461364c565b611d5e565b6101dc61045a36600461328f565b60009081526009602052604090205490565b61047f61047a36600461328f565b611e72565b6040516101e6919061367a565b7f0000000000000000000000000000000000000000000000000000000000000000610352565b600081815260166020526040812060040154816104ce84610529565b905060008160048111156104e4576104e46132a8565b1480610501575060018160048111156104ff576104ff6132a8565b145b1561050d575092915050565b6105218261051c6001426136a3565b612008565b949350505050565b60008181526015602052604081205482906001600160a01b031661056057604051635eeb253d60e11b815260040160405180910390fd5b600083815260166020526040812090815460ff166004811115610585576105856132a8565b1480156105a2575060008481526016602052604090206005015442115b156105b157600292505061060f565b6001815460ff1660048111156105c9576105c96132a8565b14806105ea57506000815460ff1660048111156105e8576105e86132a8565b145b80156105f95750806004015442115b1561060857600392505061060f565b5460ff1691505b50919050565b600161062083611826565b6006811115610631576106316132a8565b14610668576040517fae9dcffd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106728282612020565b6000828152601760209081526040808320600180820154855260158452828520600e54845160e0810186529282015467ffffffffffffffff90811684526002830154968401969096526003820154948301949094526004810154606083015260058101546080830152600681015460a0830152600781015490941660c08201529093916064916201000090910460ff169061070c906121de565b61071691906136b6565b61072091906136e3565b600e54909150600090606490610740906301000000900460ff16846136b6565b61074a91906136e3565b9050806018600101600082825461076191906136f7565b909155505060405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af11580156107d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107f7919061370a565b6108035761080361372c565b8184600401600082825461081791906136a3565b9091555050600e5460008781526009602052604090205461010090910460ff161161084557610845866121f4565b505050505050565b826000808281526017602052604090205460ff166006811115610872576108726132a8565b0361089057604051638b41ec7f60e01b815260040160405180910390fd5b600084815260176020526040902060058101546001600160a01b031633146108e4576040517f57a6f4e900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006108ef86611826565b90506004816006811115610905576109056132a8565b0361093c576040517fc2cbf77700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816006811115610950576109506132a8565b0361096a5761096582600101548787876123c8565b610845565b600581600681111561097e5761097e6132a8565b03610993576109658260010154878787612605565b60038160068111156109a7576109a76132a8565b036109b6576109653387612831565b60018160068111156109ca576109ca6132a8565b0361084557610845866121f4565b60006109eb826109e6612853565b61285e565b92915050565b60006109eb826109ff612853565b612872565b604080516020808201859052818301849052825180830384018152606090920190925280519101206000903390610a3a816128e6565b8015610a635750600154600082815260208190526040902060ff90911690610a6190612913565b105b8015610a8457506000818152602081905260409020610a82908361291d565b155b95945050505050565b6000818152601760209081526040808320600181015484526015909252822060115461010090610ac09060ff1682613742565b6004830154610ad39161ffff16906136b6565b61052191906136e3565b60008381526015602052604090205483906001600160a01b0316610b1457604051635eeb253d60e11b815260040160405180910390fd5b6000848152601560205260409020600181015467ffffffffffffffff168410610b69576040517f3b920b8800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051602080820188905281830187905282518083038401815260609092018352815191810191909120600081815291829052919020610baa903361291d565b610be0576040517fd651ce1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000818152601760209081526040808320600181018a905560038101899055898452601690925282209091610c1484611826565b6006811115610c2557610c256132a8565b14158015610c4d57506006610c3984611826565b6006811115610c4a57610c4a6132a8565b14155b15610c84576040517fff556acf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600860205260409020429055610c9f8387611d5e565b60058201805473ffffffffffffffffffffffffffffffffffffffff19163317905542600283015560018181018054600090610cdb9084906136f7565b92505081905550610cf088836002015461293f565b816002016000828254610d0391906136a3565b90915550506040805160e081018252600186015467ffffffffffffffff9081168252600287015460208301526003870154928201929092526004860154606082015260058601546080820152600686015460a0820152600786015490911660c08201526000908190610d74906121de565b90506006610d8186611826565b6006811115610d9257610d926132a8565b03610dc557600e54606490610daa9060ff16836136b6565b610db491906136e3565b610dbe90826136a3565b9150610dc9565b8091505b610dd3338361295e565b8160186000016000828254610de891906136f7565b9091555050600484018190556005840154610e0c906001600160a01b031686612a32565b835460ff191660011784556040518981528a907ff530852268993f91008f1a1e0b09b5c813acd4188481f1fa83c33c7182e814b49060200160405180910390a26001808701549084015467ffffffffffffffff909116148015610e8457506000835460ff166004811115610e8257610e826132a8565b145b15610ec657825460ff191660011783554260038401556040518a907f85e1543bf2f84fe80c6badbce3648c8539ad1df4d2b3d822938ca0538be727e690600090a25b50505050505050505050565b336000908152600d60205260409020606090610ef490610ef190612a54565b90565b905090565b610f038282610a04565b610f39576040517f424a04ab00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051602080820185905281830184905282518083038401815260609092018352815191810191909120600081815291829052919020610f7a9033612a61565b50600154600082815260208190526040902060ff90911690610f9b90612913565b03610fdb57827f3bef2ebab8cc92e0edda5decf18232f0606a18405ef674b51ea9d1e0e3839b4183604051610fd291815260200190565b60405180910390a25b505050565b6110546040805160e081019091526000606082018181526080830182905260a0830182905260c0830191909152819081526040805160a08101825260008082526020828101829052928201819052606080830152608082015291019081526040805160208181019092526000815291015290565b6040805160e081018252600e805460ff8082166060808601918252610100840483166080870152620100008404831660a0808801919091526301000000909404831660c087015290855285519283018652600f805484526010546020858101919091526011549093169684019690965260128054959694959287019492918401916110de9061375d565b80601f016020809104026020016040519081016040528092919081815260200182805461110a9061375d565b80156111575780601f1061112c57610100808354040283529160200191611157565b820191906000526020600020905b81548152906001019060200180831161113a57829003601f168201915b50505091835250506004919091015460ff908116602092830152918352604080518083019091526006949094015490911683520152919050565b61119b8133611907565b50565b336000908152600c60205260409020606090610ef490610ef190612a54565b806000808281526017602052604090205460ff1660068111156111e2576111e26132a8565b0361120057604051638b41ec7f60e01b815260040160405180910390fd5b61120b82333361084d565b5050565b600080600061122584611220612853565b612a76565b9092509050818015610521575060045460ff9081169116109392505050565b600061125761125283613906565b612b25565b90503361126760208401846139f5565b6001600160a01b03161461128e576040516334c69e3160e11b815260040160405180910390fd5b6000818152601560205260409020546001600160a01b0316156112dd576040517ffc7d069000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61012082013515806112f85750606082013561012083013510155b1561132f576040517fdf63f61a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61133f6040830160208401613a12565b67ffffffffffffffff16600003611382576040517f535ed2be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113926040830160208401613a12565b67ffffffffffffffff166113ad610100840160e08501613a12565b67ffffffffffffffff1611156113ef576040517fb9551ab100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606082013560000361142d576040517f090a5ecd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b608082013560000361146b576040517f6aba7aae00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60c08201356000036114a9576040517ffb7df0c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60a08201356000036114e7576040517f47ba51c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114f5610100830183613a2f565b6114ff9080613a4f565b905060000361153a576040517f86f8cf9b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600081815260156020526040902082906115548282613be4565b5061156590506060830135426136f7565b600082815260166020526040902060040155611586610120830135426136f7565b6000828152601660209081526040909120600501919091556115b4906115ae908401846139f5565b82612b55565b60006115c76115c284613906565b612b77565b60008381526016602052604081206002018290556018805492935083929091906115f29084906136f7565b909155506116029050338261295e565b7f5fdb86c365a247a4d97dcbcc5c3abde9d6e3e2de26273f3fda8eef5073b9a96c8284602001601660008681526020019081526020016000206005015460405161164e93929190613cdc565b60405180910390a1505050565b611663613195565b816000808281526017602052604090205460ff166006811115611688576116886132a8565b036116a657604051638b41ec7f60e01b815260040160405180910390fd5b60008381526017602052604090206116bc613195565b600180830154600090815260156020908152604091829020825160a0808201855282546001600160a01b03168252845160e0810186529583015467ffffffffffffffff9081168752600284015487860152600384015487870152600484015460608801526005840154608088015260068401549187019190915260078301541660c08601529182019390935281518083018352600884018054929493850192829082906117689061375d565b80601f01602080910402602001604051908101604052809291908181526020018280546117949061375d565b80156117e15780601f106117b6576101008083540402835291602001916117e1565b820191906000526020600020905b8154815290600101906020018083116117c457829003601f168201915b505050918352505060019190910154602091820152908252600a83015482820152600b9092015460409091015290825260039092015491810191909152915050919050565b6000818152601760205260408120600181015482036118485750600092915050565b60006118578260010154610529565b90506004825460ff166006811115611871576118716132a8565b03611880575060049392505050565b6002816004811115611894576118946132a8565b036118a3575060059392505050565b60038160048111156118b7576118b76132a8565b036118c6575060029392505050565b60048160048111156118da576118da6132a8565b036118e9575060039392505050565b505460ff1692915050565b60006109eb82611902612853565b612bb0565b60008281526015602052604090205482906001600160a01b031661193e57604051635eeb253d60e11b815260040160405180910390fd5b6000838152601560209081526040808320601690925290912081546001600160a01b03163314611981576040516334c69e3160e11b815260040160405180910390fd5b600061198c86610529565b905060028160048111156119a2576119a26132a8565b141580156119c2575060048160048111156119bf576119bf6132a8565b14155b80156119e0575060038160048111156119dd576119dd6132a8565b14155b15611a17576040517fc00b5b5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160020154600003611a55576040517fbd8bdd9400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002816004811115611a6957611a696132a8565b03611af357815460ff1916600217825560405186907ff903f4774c7bd27355f9d7fcbc382b079b164a697a44ac5d95267a4c3cb3bb2290600090a2611ac686611ac18860009081526016602052604090206005015490565b61293f565b8260010154611ad591906136b6565b826002016000828254611ae891906136f7565b90915550611c6a9050565b6004816004811115611b0757611b076132a8565b03611c5e576040805160a0808201835285546001600160a01b03168252825160e081018452600187015467ffffffffffffffff90811682526002880154602083810191909152600389015483870152600489015460608401526005890154608084015260068901549383019390935260078801541660c08201529082015281518083018352600886018054611c5494889390850192909182908290611bab9061375d565b80601f0160208091040260200160405190810160405280929190818152602001828054611bd79061375d565b8015611c245780601f10611bf957610100808354040283529160200191611c24565b820191906000526020600020905b815481529060010190602001808311611c0757829003601f168201915b505050505081526020016001820154815250508152602001600a8201548152602001600b82015481525050612b77565b6002830155611c6a565b815460ff191660031782555b8254611c7f906001600160a01b031687612be0565b600282015460198054829190600090611c999084906136f7565b909155505060405163a9059cbb60e01b81526001600160a01b038781166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015611d0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d31919061370a565b611d4e57604051637c2ccffd60e11b815260040160405180910390fd5b5050600060029091015550505050565b6000828152601760209081526040808320600101548084526015909252909120546001600160a01b0316611da557604051635eeb253d60e11b815260040160405180910390fd5b600083815260176020908152604080832060018101548452601583528184208251600380825260808201909452919490939092908201606080368337019050509050611df8611df3876109d8565b612c02565b81600081518110611e0b57611e0b613d58565b60209081029190910101526009820154611e2490612c13565b81600181518110611e3757611e37613d58565b602002602001018181525050826003015481600281518110611e5b57611e5b613d58565b602002602001018181525050610845868683612c1f565b611e7a6131b5565b60008281526015602052604090205482906001600160a01b0316611eb157604051635eeb253d60e11b815260040160405180910390fd5b600083815260156020908152604091829020825160a0808201855282546001600160a01b03168252845160e081018652600184015467ffffffffffffffff90811682526002850154828701526003850154828801526004850154606083015260058501546080830152600685015492820192909252600784015490911660c08201529281019290925282518084018452600882018054939492939285019282908290611f5c9061375d565b80601f0160208091040260200160405190810160405280929190818152602001828054611f889061375d565b8015611fd55780601f10611faa57610100808354040283529160200191611fd5565b820191906000526020600020905b815481529060010190602001808311611fb857829003601f168201915b505050505081526020016001820154815250508152602001600a8201548152602001600b82015481525050915050919050565b60008183106120175781612019565b825b9392505050565b600061202b82612db2565b9050428110612066576040517f6b4b1a4e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60035461207390826136f7565b42106120ab576040517fde55698e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a6020908152604080832085845290915290205460ff16156120fe576040517efab7d900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121088383612bb0565b61213e576040517fd3ffa66b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600b6020908152604080832085845290915290205460ff1615612192576040517f98e7e55100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600b602090815260408083208584528252808320805460ff19166001908117909155868452600990925282208054919290916121d49084906136f7565b9091555050505050565b600081602001518260a001516109eb91906136b6565b6000818152601760209081526040808320600181015480855260169093529220600283015461222490839061293f565b81600201600082825461223791906136f7565b90915550506005830154612254906001600160a01b031685612831565b600084815260208190526040812090818161226f828261325d565b5050845460ff1916600617855550506000600284018190556004840181905560058401805473ffffffffffffffffffffffffffffffffffffffff1916905560018281018054919290916122c39084906136a3565b9091555050600383015460405190815282907f1d31c9f8dea6e179f6a050db117595feea8937029ea51f5168a4780be7e8f5529060200160405180910390a2600084815260096020526040812055600082815260156020526040812060018084015490820154919291612340919067ffffffffffffffff166136a3565b600783015490915067ffffffffffffffff168111801561237557506001835460ff166004811115612373576123736132a8565b145b1561084557825460ff191660041783556123906001426136a3565b600484015560405184907f4769361a442504ecaf038f35e119bcccdd5e42096b24c09e3c17fd17c6684c0290600090a2505050505050565b60008481526015602052604090205484906001600160a01b03166123ff57604051635eeb253d60e11b815260040160405180910390fd5b600085815260166020908152604080832060158352818420815460ff19166003178255888552601790935292208154612441906001600160a01b031689612be0565b6005810154612459906001600160a01b031688612831565b600061246989836002015461293f565b600483015490915061247b81836136f7565b6019805460009061248d9084906136f7565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038981166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612514573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612538919061370a565b61255557604051637c2ccffd60e11b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038881166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156125c4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125e8919061370a565b610ec657604051637c2ccffd60e11b815260040160405180910390fd5b60008481526015602052604090205484906001600160a01b031661263c57604051635eeb253d60e11b815260040160405180910390fd5b60008481526017602052604090206005810154612662906001600160a01b031686612831565b600061268b8783600201546126868a60009081526016602052604090206005015490565b612dc5565b600483015490915061269d81836136f7565b601980546000906126af9084906136f7565b90915550508254600490849060ff1916600183021790555060405163a9059cbb60e01b81526001600160a01b038781166004830152602482018490527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015612736573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061275a919061370a565b61277757604051637c2ccffd60e11b815260040160405180910390fd5b60405163a9059cbb60e01b81526001600160a01b038681166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af11580156127e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061280a919061370a565b61282757604051637c2ccffd60e11b815260040160405180910390fd5b5050505050505050565b6001600160a01b0382166000908152600d60205260409020610fdb9082612e87565b6000610ef442612e93565b600061201961286d8484612872565b612ebf565b60008061288161010043613d6e565b6006549091506000906101009061289b9060ff16866136b6565b6128a59190613d6e565b905060006128b561010087613d6e565b90506000610100826128c785876136f7565b6128d191906136f7565b6128db9190613d6e565b979650505050505050565b60008060008381526017602052604090205460ff16600681111561290c5761290c6132a8565b1492915050565b60006109eb825490565b6001600160a01b03811660009081526001830160205260408120541515612019565b6000828152601660205260408120600401546120199084908490612dc5565b6040517f23b872dd0000000000000000000000000000000000000000000000000000000081526001600160a01b038381166004830152306024830181905260448301849052917f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303816000875af11580156129f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a15919061370a565b610fdb57604051637c2ccffd60e11b815260040160405180910390fd5b6001600160a01b0382166000908152600d60205260409020610fdb9082612f19565b6060600061201983612f25565b6000612019836001600160a01b038416612f81565b6000806000612a8485611826565b60008681526008602052604081205491925090612aa090612e93565b90506001826006811115612ab657612ab66132a8565b141580612aca5750612ac88582612fd0565b155b15612add57600080935093505050612b1e565b612ae78686612872565b92506000612af484612ebf565b90506000612b0188610a8d565b9050801580612b175750612b158183613d6e565b155b9550505050505b9250929050565b600081604051602001612b38919061367a565b604051602081830303815290604052805190602001209050919050565b6001600160a01b0382166000908152600c60205260409020610fdb9082612f19565b6000612b868260200151612fda565b602083015160408101519051612ba6919067ffffffffffffffff166136b6565b6109eb91906136b6565b6000806000612bbf8585612a76565b9092509050818015610a84575060045460ff90811691161015949350505050565b6001600160a01b0382166000908152600c60205260409020610fdb9082612e87565b600060ff1982168161052182612ff0565b60008061201983612ff0565b6000838152600a6020526040812090612c36612853565b815260208101919091526040016000205460ff1615612c81576040517f3edef7db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6007546040517f94c8919d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116906394c8919d90612ccc9085908590600401613d82565b602060405180830381865afa158015612ce9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d0d919061370a565b612d43576040517ffcd03a4700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152600a60205260408120600191612d5c612853565b815260200190815260200160002060006101000a81548160ff0219169083151502179055507f3b989d183b84b02259d7c14b34a9c9eb0fccb4c355a920d25e581e25aef4993d8360405161164e91815260200190565b60006109eb612dc083613062565b61306f565b6000838152601560205260408120828410612e0c576040517f56607cb000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160e081018252600183015467ffffffffffffffff9081168252600284015460208301526003840154928201929092526004830154606082015260058301546080820152600683015460a0820152600783015490911660c0820152612e7390612fda565b612e7d85856136a3565b610a8491906136b6565b6000612019838361309b565b60006109eb7f0000000000000000000000000000000000000000000000000000000000000000836136e3565b60008060ff8316612ed16001436136a3565b612edb91906136a3565b4090506000819003612eef57612eef61372c565b60408051602081018390520160405160208183030381529060405280519060200120915050919050565b60006120198383612f81565b606081600001805480602002602001604051908101604052809291908181526020018280548015612f7557602002820191906000526020600020905b815481526020019060010190808311612f61575b50505050509050919050565b6000818152600183016020526040812054612fc8575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109eb565b5060006109eb565b6000818311612019565b6000816020015182608001516109eb91906136b6565b7fff00000000000000000000000000000000000000000000000000000000000000811660015b602081101561060f57600891821c916130309082906136b6565b83901b7fff00000000000000000000000000000000000000000000000000000000000000169190911790600101613016565b60006109eb8260016136f7565b60006109eb7f0000000000000000000000000000000000000000000000000000000000000000836136b6565b600081815260018301602052604081205480156131845760006130bf6001836136a3565b85549091506000906130d3906001906136a3565b90508181146131385760008660000182815481106130f3576130f3613d58565b906000526020600020015490508087600001848154811061311657613116613d58565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061314957613149613e2d565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506109eb565b60009150506109eb565b5092915050565b60405180604001604052806131a86131b5565b8152602001600081525090565b6040518060a0016040528060006001600160a01b031681526020016132246040518060e00160405280600067ffffffffffffffff1681526020016000815260200160008152602001600081526020016000815260200160008152602001600067ffffffffffffffff1681525090565b8152602001613249604051806040016040528060608152602001600080191681525090565b815260006020820181905260409091015290565b508054600082559060005260206000209081019061119b91905b8082111561328b5760008155600101613277565b5090565b6000602082840312156132a157600080fd5b5035919050565b634e487b7160e01b600052602160045260246000fd5b60208101600583106132d2576132d26132a8565b91905290565b600080604083850312156132eb57600080fd5b50508035926020909101359150565b6001600160a01b038116811461119b57600080fd5b60008060006060848603121561332457600080fd5b833592506020840135613336816132fa565b91506040840135613346816132fa565b809150509250925092565b6000610100828403121561060f57600080fd5b6000806000610140848603121561337a57600080fd5b83359250602084013591506133928560408601613351565b90509250925092565b6020808252825182820181905260009190848201906040850190845b818110156133d3578351835292840192918401916001016133b7565b50909695505050505050565b6000815180845260005b81811015613405576020818501810151868301820152016133e9565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000825160ff8082511660208501528060208301511660408501528060408301511660608501528060608301511660808501526020850151915060c060a0850152815160e0850152602082015161010085015280604083015116610120850152606082015160a06101408601526134a46101808601826133df565b608093909301518216610160860152506040850151805160ff1660c08601529195945050505050565b6000602082840312156134df57600080fd5b813567ffffffffffffffff8111156134f657600080fd5b8201610160818503121561201957600080fd5b600081516040845261351e60408501826133df565b602093840151949093019390935250919050565b60006101606001600160a01b038351168452602083015167ffffffffffffffff808251166020870152602082015160408701526040820151606087015260608201516080870152608082015160a087015260a082015160c08701528060c08301511660e087015250506040830151816101008601526135b382860182613509565b915050606083015161012085015260808301516101408501528091505092915050565b6020815260008251604060208401526135f26060840182613532565b9050602084015160408401528091505092915050565b60208101600783106132d2576132d26132a8565b6000806040838503121561362f57600080fd5b823591506020830135613641816132fa565b809150509250929050565b600080610120838503121561366057600080fd5b823591506136718460208501613351565b90509250929050565b6020815260006120196020830184613532565b634e487b7160e01b600052601160045260246000fd5b818103818111156109eb576109eb61368d565b80820281158282048414176109eb576109eb61368d565b634e487b7160e01b600052601260045260246000fd5b6000826136f2576136f26136cd565b500490565b808201808211156109eb576109eb61368d565b60006020828403121561371c57600080fd5b8151801515811461201957600080fd5b634e487b7160e01b600052600160045260246000fd5b61ffff82811682821603908082111561318e5761318e61368d565b600181811c9082168061377157607f821691505b60208210810361060f57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff811182821017156137ca576137ca613791565b60405290565b60405160a0810167ffffffffffffffff811182821017156137ca576137ca613791565b60405160e0810167ffffffffffffffff811182821017156137ca576137ca613791565b604051601f8201601f1916810167ffffffffffffffff8111828210171561383f5761383f613791565b604052919050565b67ffffffffffffffff8116811461119b57600080fd5b60006040828403121561386f57600080fd5b6138776137a7565b9050813567ffffffffffffffff8082111561389157600080fd5b818401915084601f8301126138a557600080fd5b81356020828211156138b9576138b9613791565b6138cb601f8301601f19168201613816565b925081835286818386010111156138e157600080fd5b8181850182850137600081838501015282855280860135818601525050505092915050565b600081360361016081121561391a57600080fd5b6139226137d0565b833561392d816132fa565b815260e0601f198301121561394157600080fd5b6139496137f3565b9150602084013561395981613847565b8083525060408401356020830152606084013560408301526080840135606083015260a0840135608083015260c084013560a083015260e084013561399d81613847565b60c083015260208101919091526101008301359067ffffffffffffffff8211156139c657600080fd5b6139d23683860161385d565b604082015261012084013560608201526101409093013560808401525090919050565b600060208284031215613a0757600080fd5b8135612019816132fa565b600060208284031215613a2457600080fd5b813561201981613847565b60008235603e19833603018112613a4557600080fd5b9190910192915050565b6000808335601e19843603018112613a6657600080fd5b83018035915067ffffffffffffffff821115613a8157600080fd5b602001915036819003821315612b1e57600080fd5b600081356109eb81613847565b601f821115610fdb576000816000526020600020601f850160051c81016020861015613acc5750805b601f850160051c820191505b8181101561084557828155600101613ad8565b8135601e19833603018112613aff57600080fd5b8201803567ffffffffffffffff811115613b1857600080fd5b60208136038184011315613b2b57600080fd5b613b3f82613b39865461375d565b86613aa3565b6000601f831160018114613b755760008415613b5d57508482018301355b600019600386901b1c1916600185901b178655613bd2565b600086815260209020601f19851690835b82811015613ba7578785018601358255938501936001909101908501613b86565b5085821015613bc65760001960f88760031b161c198585890101351681555b505060018460011b0186555b50508085013560018501555050505050565b8135613bef816132fa565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff19835416178255506020820135613c2481613847565b60018201805467ffffffffffffffff191667ffffffffffffffff83161790555060408201356002820155606082013560038201556080820135600482015560a0820135600582015560c08201356006820155613ca8613c8560e08401613a96565b6007830167ffffffffffffffff821667ffffffffffffffff198254161781555050565b613cc2613cb9610100840184613a2f565b60088301613aeb565b610120820135600a820155610140820135600b8201555050565b83815261012081018335613cef81613847565b67ffffffffffffffff8082166020850152602086013560408501526040860135606085015260608601356080850152608086013560a085015260a086013560c085015260c08601359150613d4282613847565b1660e08301526101009091019190915292915050565b634e487b7160e01b600052603260045260246000fd5b600082613d7d57613d7d6136cd565b500690565b82358152602080840135908201526000610120828101613db2604085016040880180358252602090810135910152565b613dcc608085016080880180358252602090810135910152565b613de660c0850160c0880180358252602090810135910152565b61010084019190915283519081905261014083019060209081860160005b82811015613e2057815185529383019390830190600101613e04565b5092979650505050505050565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220dd9e1020342047f119016d64ee31bae35e18f24b24fde9b5fe7c84cd6c595bae64736f6c63430008170033"; public MarketplaceDeploymentBase() : base(BYTECODE) { } public MarketplaceDeploymentBase(string byteCode) : base(byteCode) { } [Parameter("tuple", "configuration", 1)] @@ -99,6 +99,181 @@ namespace CodexContractsPlugin.Marketplace [Parameter("uint256", "expiry", 3, false )] public virtual BigInteger Expiry { get; set; } } + public partial class MarketplaceAlreadypaidError : MarketplaceAlreadypaidErrorBase { } + [Error("Marketplace_AlreadyPaid")] + public class MarketplaceAlreadypaidErrorBase : IErrorDTO + { + } + public partial class MarketplaceInsufficientcollateralError : MarketplaceInsufficientcollateralErrorBase { } + [Error("Marketplace_InsufficientCollateral")] + public class MarketplaceInsufficientcollateralErrorBase : IErrorDTO + { + } + public partial class MarketplaceInsufficientdurationError : MarketplaceInsufficientdurationErrorBase { } + [Error("Marketplace_InsufficientDuration")] + public class MarketplaceInsufficientdurationErrorBase : IErrorDTO + { + } + public partial class MarketplaceInsufficientproofprobabilityError : MarketplaceInsufficientproofprobabilityErrorBase { } + [Error("Marketplace_InsufficientProofProbability")] + public class MarketplaceInsufficientproofprobabilityErrorBase : IErrorDTO + { + } + public partial class MarketplaceInsufficientrewardError : MarketplaceInsufficientrewardErrorBase { } + [Error("Marketplace_InsufficientReward")] + public class MarketplaceInsufficientrewardErrorBase : IErrorDTO + { + } + public partial class MarketplaceInsufficientslotsError : MarketplaceInsufficientslotsErrorBase { } + [Error("Marketplace_InsufficientSlots")] + public class MarketplaceInsufficientslotsErrorBase : IErrorDTO + { + } + public partial class MarketplaceInvalidcidError : MarketplaceInvalidcidErrorBase { } + [Error("Marketplace_InvalidCid")] + public class MarketplaceInvalidcidErrorBase : IErrorDTO + { + } + public partial class MarketplaceInvalidclientaddressError : MarketplaceInvalidclientaddressErrorBase { } + [Error("Marketplace_InvalidClientAddress")] + public class MarketplaceInvalidclientaddressErrorBase : IErrorDTO + { + } + public partial class MarketplaceInvalidexpiryError : MarketplaceInvalidexpiryErrorBase { } + [Error("Marketplace_InvalidExpiry")] + public class MarketplaceInvalidexpiryErrorBase : IErrorDTO + { + } + public partial class MarketplaceInvalidmaxslotlossError : MarketplaceInvalidmaxslotlossErrorBase { } + [Error("Marketplace_InvalidMaxSlotLoss")] + public class MarketplaceInvalidmaxslotlossErrorBase : IErrorDTO + { + } + public partial class MarketplaceInvalidslotError : MarketplaceInvalidslotErrorBase { } + [Error("Marketplace_InvalidSlot")] + public class MarketplaceInvalidslotErrorBase : IErrorDTO + { + } + public partial class MarketplaceInvalidslothostError : MarketplaceInvalidslothostErrorBase { } + [Error("Marketplace_InvalidSlotHost")] + public class MarketplaceInvalidslothostErrorBase : IErrorDTO + { + } + public partial class MarketplaceInvalidstateError : MarketplaceInvalidstateErrorBase { } + [Error("Marketplace_InvalidState")] + public class MarketplaceInvalidstateErrorBase : IErrorDTO + { + } + public partial class MarketplaceMaximumslashingtoohighError : MarketplaceMaximumslashingtoohighErrorBase { } + [Error("Marketplace_MaximumSlashingTooHigh")] + public class MarketplaceMaximumslashingtoohighErrorBase : IErrorDTO + { + } + public partial class MarketplaceNothingtowithdrawError : MarketplaceNothingtowithdrawErrorBase { } + [Error("Marketplace_NothingToWithdraw")] + public class MarketplaceNothingtowithdrawErrorBase : IErrorDTO + { + } + public partial class MarketplaceRepairrewardpercentagetoohighError : MarketplaceRepairrewardpercentagetoohighErrorBase { } + [Error("Marketplace_RepairRewardPercentageTooHigh")] + public class MarketplaceRepairrewardpercentagetoohighErrorBase : IErrorDTO + { + } + public partial class MarketplaceRequestalreadyexistsError : MarketplaceRequestalreadyexistsErrorBase { } + [Error("Marketplace_RequestAlreadyExists")] + public class MarketplaceRequestalreadyexistsErrorBase : IErrorDTO + { + } + public partial class MarketplaceReservationrequiredError : MarketplaceReservationrequiredErrorBase { } + [Error("Marketplace_ReservationRequired")] + public class MarketplaceReservationrequiredErrorBase : IErrorDTO + { + } + public partial class MarketplaceSlashpercentagetoohighError : MarketplaceSlashpercentagetoohighErrorBase { } + [Error("Marketplace_SlashPercentageTooHigh")] + public class MarketplaceSlashpercentagetoohighErrorBase : IErrorDTO + { + } + public partial class MarketplaceSlotisfreeError : MarketplaceSlotisfreeErrorBase { } + [Error("Marketplace_SlotIsFree")] + public class MarketplaceSlotisfreeErrorBase : IErrorDTO + { + } + public partial class MarketplaceSlotnotacceptingproofsError : MarketplaceSlotnotacceptingproofsErrorBase { } + [Error("Marketplace_SlotNotAcceptingProofs")] + public class MarketplaceSlotnotacceptingproofsErrorBase : IErrorDTO + { + } + public partial class MarketplaceSlotnotfreeError : MarketplaceSlotnotfreeErrorBase { } + [Error("Marketplace_SlotNotFree")] + public class MarketplaceSlotnotfreeErrorBase : IErrorDTO + { + } + public partial class MarketplaceStartnotbeforeexpiryError : MarketplaceStartnotbeforeexpiryErrorBase { } + [Error("Marketplace_StartNotBeforeExpiry")] + public class MarketplaceStartnotbeforeexpiryErrorBase : IErrorDTO + { + } + public partial class MarketplaceTransferfailedError : MarketplaceTransferfailedErrorBase { } + [Error("Marketplace_TransferFailed")] + public class MarketplaceTransferfailedErrorBase : IErrorDTO + { + } + public partial class MarketplaceUnknownrequestError : MarketplaceUnknownrequestErrorBase { } + [Error("Marketplace_UnknownRequest")] + public class MarketplaceUnknownrequestErrorBase : IErrorDTO + { + } + public partial class PeriodsInvalidsecondsperperiodError : PeriodsInvalidsecondsperperiodErrorBase { } + [Error("Periods_InvalidSecondsPerPeriod")] + public class PeriodsInvalidsecondsperperiodErrorBase : IErrorDTO + { + } + public partial class ProofsInsufficientblockheightError : ProofsInsufficientblockheightErrorBase { } + [Error("Proofs_InsufficientBlockHeight")] + public class ProofsInsufficientblockheightErrorBase : IErrorDTO + { + } + public partial class ProofsInvalidproofError : ProofsInvalidproofErrorBase { } + [Error("Proofs_InvalidProof")] + public class ProofsInvalidproofErrorBase : IErrorDTO + { + } + public partial class ProofsPeriodnotendedError : ProofsPeriodnotendedErrorBase { } + [Error("Proofs_PeriodNotEnded")] + public class ProofsPeriodnotendedErrorBase : IErrorDTO + { + } + public partial class ProofsProofalreadymarkedmissingError : ProofsProofalreadymarkedmissingErrorBase { } + [Error("Proofs_ProofAlreadyMarkedMissing")] + public class ProofsProofalreadymarkedmissingErrorBase : IErrorDTO + { + } + public partial class ProofsProofalreadysubmittedError : ProofsProofalreadysubmittedErrorBase { } + [Error("Proofs_ProofAlreadySubmitted")] + public class ProofsProofalreadysubmittedErrorBase : IErrorDTO + { + } + public partial class ProofsProofnotmissingError : ProofsProofnotmissingErrorBase { } + [Error("Proofs_ProofNotMissing")] + public class ProofsProofnotmissingErrorBase : IErrorDTO + { + } + public partial class ProofsProofnotrequiredError : ProofsProofnotrequiredErrorBase { } + [Error("Proofs_ProofNotRequired")] + public class ProofsProofnotrequiredErrorBase : IErrorDTO + { + } + public partial class ProofsValidationtimedoutError : ProofsValidationtimedoutErrorBase { } + [Error("Proofs_ValidationTimedOut")] + public class ProofsValidationtimedoutErrorBase : IErrorDTO + { + } + public partial class SlotreservationsReservationnotallowedError : SlotreservationsReservationnotallowedErrorBase { } + [Error("SlotReservations_ReservationNotAllowed")] + public class SlotreservationsReservationnotallowedErrorBase : IErrorDTO + { + } public partial class CanReserveSlotOutputDTO : CanReserveSlotOutputDTOBase { } [FunctionOutput] @@ -132,6 +307,22 @@ namespace CodexContractsPlugin.Marketplace { } + public partial class CurrentCollateralOutputDTO : CurrentCollateralOutputDTOBase { } + + [FunctionOutput] + public class CurrentCollateralOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + public partial class CurrentCollateralFunction : CurrentCollateralFunctionBase { } + + [Function("currentCollateral", "uint256")] + public class CurrentCollateralFunctionBase : FunctionMessage + { + [Parameter("bytes32", "slotId", 1)] + public virtual byte[] SlotId { get; set; } + } public partial class FillSlotFunction : FillSlotFunctionBase { } @@ -388,6 +579,22 @@ namespace CodexContractsPlugin.Marketplace [Parameter("uint256", "slotIndex", 2)] public virtual BigInteger SlotIndex { get; set; } } + public partial class SlotProbabilityOutputDTO : SlotProbabilityOutputDTOBase { } + + [FunctionOutput] + public class SlotProbabilityOutputDTOBase : IFunctionOutputDTO + { + [Parameter("uint256", "", 1)] + public virtual BigInteger ReturnValue1 { get; set; } + } + public partial class SlotProbabilityFunction : SlotProbabilityFunctionBase { } + + [Function("slotProbability", "uint256")] + public class SlotProbabilityFunctionBase : FunctionMessage + { + [Parameter("bytes32", "slotId", 1)] + public virtual byte[] SlotId { get; set; } + } public partial class SlotStateOutputDTO : SlotStateOutputDTOBase { } [FunctionOutput] @@ -474,10 +681,10 @@ namespace CodexContractsPlugin.Marketplace public virtual byte RepairRewardPercentage { get; set; } [Parameter("uint8", "maxNumberOfSlashes", 2)] public virtual byte MaxNumberOfSlashes { get; set; } - [Parameter("uint16", "slashCriterion", 3)] - public virtual ushort SlashCriterion { get; set; } - [Parameter("uint8", "slashPercentage", 4)] + [Parameter("uint8", "slashPercentage", 3)] public virtual byte SlashPercentage { get; set; } + [Parameter("uint8", "validatorRewardPercentage", 4)] + public virtual byte ValidatorRewardPercentage { get; set; } } public partial class ProofConfig : ProofConfigBase { } @@ -524,10 +731,10 @@ namespace CodexContractsPlugin.Marketplace public virtual BigInteger Duration { get; set; } [Parameter("uint256", "proofProbability", 4)] public virtual BigInteger ProofProbability { get; set; } - [Parameter("uint256", "reward", 5)] - public virtual BigInteger Reward { get; set; } - [Parameter("uint256", "collateral", 6)] - public virtual BigInteger Collateral { get; set; } + [Parameter("uint256", "pricePerBytePerSecond", 5)] + public virtual BigInteger PricePerBytePerSecond { get; set; } + [Parameter("uint256", "collateralPerByte", 6)] + public virtual BigInteger CollateralPerByte { get; set; } [Parameter("uint64", "maxSlotLoss", 7)] public virtual ulong MaxSlotLoss { get; set; } } diff --git a/Tests/CodexReleaseTests/MarketTests/ContractFailedTest.cs b/Tests/CodexReleaseTests/MarketTests/ContractFailedTest.cs index 82a3aab..cecfbe0 100644 --- a/Tests/CodexReleaseTests/MarketTests/ContractFailedTest.cs +++ b/Tests/CodexReleaseTests/MarketTests/ContractFailedTest.cs @@ -67,11 +67,8 @@ namespace CodexReleaseTests.MarketTests private TimeSpan CalculateContractFailTimespan() { var config = GetContracts().Deployment.Config; - var maxSlashesBeforeSlotFreed = Convert.ToInt32(config.Collateral.MaxNumberOfSlashes); - var numProofsMissedBeforeSlash = Convert.ToInt32(config.Collateral.SlashCriterion); - + var requiredNumMissedProofs = Convert.ToInt32(config.Collateral.MaxNumberOfSlashes); var periodDuration = GetPeriodDuration(); - var requiredNumMissedProofs = maxSlashesBeforeSlotFreed * numProofsMissedBeforeSlash; // Each host could miss 1 proof per period, // so the time we should wait is period time * requiredNum of missed proofs. diff --git a/Tools/MarketInsights/ContributionBuilder.cs b/Tools/MarketInsights/ContributionBuilder.cs index 5d1c4f7..f3b6cb4 100644 --- a/Tools/MarketInsights/ContributionBuilder.cs +++ b/Tools/MarketInsights/ContributionBuilder.cs @@ -71,10 +71,10 @@ namespace MarketInsights private void AddRequestToAverage(ContractAverages average, RequestEvent requestEvent) { average.Number++; - average.Price = GetNewAverage(average.Price, average.Number, requestEvent.Request.Request.Ask.Reward); + average.PricePerBytePerSecond = GetNewAverage(average.PricePerBytePerSecond, average.Number, requestEvent.Request.Request.Ask.PricePerBytePerSecond); average.Size = GetNewAverage(average.Size, average.Number, requestEvent.Request.Request.Ask.SlotSize); average.Duration = GetNewAverage(average.Duration, average.Number, requestEvent.Request.Request.Ask.Duration); - average.Collateral = GetNewAverage(average.Collateral, average.Number, requestEvent.Request.Request.Ask.Collateral); + average.CollateralPerByte = GetNewAverage(average.CollateralPerByte, average.Number, requestEvent.Request.Request.Ask.CollateralPerByte); average.ProofProbability = GetNewAverage(average.ProofProbability, average.Number, requestEvent.Request.Request.Ask.ProofProbability); } diff --git a/Tools/MarketInsights/Model.cs b/Tools/MarketInsights/Model.cs index 65a82f7..b844fc8 100644 --- a/Tools/MarketInsights/Model.cs +++ b/Tools/MarketInsights/Model.cs @@ -66,7 +66,7 @@ /// /// Average price of contracts. (TSTWEI) /// - public float Price { get; set; } + public float PricePerBytePerSecond { get; set; } /// /// Average size of slots in contracts. (bytes) @@ -81,7 +81,7 @@ /// /// Average collateral of contracts. (TSTWEI) /// - public float Collateral { get; set; } + public float CollateralPerByte { get; set; } /// /// Average proof probability of contracts. diff --git a/Tools/MarketInsights/Tracker.cs b/Tools/MarketInsights/Tracker.cs index 3e4354d..94f4e87 100644 --- a/Tools/MarketInsights/Tracker.cs +++ b/Tools/MarketInsights/Tracker.cs @@ -47,10 +47,10 @@ namespace MarketInsights float weight1 = result.Number; float weight2 = toAdd.Number; - result.Price = RollingAverage.GetWeightedAverage(result.Price, weight1, toAdd.Price, weight2); + result.PricePerBytePerSecond = RollingAverage.GetWeightedAverage(result.PricePerBytePerSecond, weight1, toAdd.PricePerBytePerSecond, weight2); result.Size = RollingAverage.GetWeightedAverage(result.Size, weight1, toAdd.Size, weight2); result.Duration = RollingAverage.GetWeightedAverage(result.Duration, weight1, toAdd.Duration, weight2); - result.Collateral = RollingAverage.GetWeightedAverage(result.Collateral, weight1, toAdd.Collateral, weight2); + result.CollateralPerByte = RollingAverage.GetWeightedAverage(result.CollateralPerByte, weight1, toAdd.CollateralPerByte, weight2); result.ProofProbability = RollingAverage.GetWeightedAverage(result.ProofProbability, weight1, toAdd.ProofProbability, weight2); } diff --git a/Tools/TestNetRewarder/EventsFormatter.cs b/Tools/TestNetRewarder/EventsFormatter.cs index ff54ebc..0446e25 100644 --- a/Tools/TestNetRewarder/EventsFormatter.cs +++ b/Tools/TestNetRewarder/EventsFormatter.cs @@ -47,8 +47,8 @@ namespace TestNetRewarder $"Content: {request.Request.Content.Cid}", $"Duration: {BigIntToDuration(request.Request.Ask.Duration)}", $"Expiry: {BigIntToDuration(request.Request.Expiry)}", - $"Collateral: {BitIntToTestTokens(request.Request.Ask.Collateral)}", - $"Reward: {BitIntToTestTokens(request.Request.Ask.Reward)}", + $"CollateralPerByte: {BitIntToTestTokens(request.Request.Ask.CollateralPerByte)}", + $"PricePerBytePerSecond: {BitIntToTestTokens(request.Request.Ask.PricePerBytePerSecond)}", $"Number of Slots: {request.Request.Ask.Slots}", $"Slot Tolerance: {request.Request.Ask.MaxSlotLoss}", $"Slot Size: {BigIntToByteSize(request.Request.Ask.SlotSize)}"