diff --git a/broadcast/135-upgrade_faucet_id.s.sol/7887/run-1733521441.json b/broadcast/135-upgrade_faucet_id.s.sol/7887/run-1733521441.json new file mode 100644 index 00000000..07f648ee --- /dev/null +++ b/broadcast/135-upgrade_faucet_id.s.sol/7887/run-1733521441.json @@ -0,0 +1,318 @@ +{ + "transactions": [ + { + "hash": "0xd17af031c598da65cd4893e4a2b3cfd74a6451b03e196950d95d42b0d6f96232", + "transactionType": "CREATE2", + "contractName": "KintoID", + "contractAddress": "0x7cfe474936fa50181ae7c2c43eeb8806e25bc983", + "function": null, + "arguments": [ + "0x8a4720488CA32f1223ccFE5A087e250fE3BC5D75", + "0x0719D47A213149E2Ef8d3f5afDaDA8a8E22dfc03" + ], + "transaction": { + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e0604052306080523480156200001557600080fd5b5060405162004eb038038062004eb0833981016040819052620000389162000138565b620000426200005a565b6001600160a01b0391821660a0521660c05262000170565b600054610100900460ff1615620000c75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000119576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200013357600080fd5b919050565b600080604083850312156200014c57600080fd5b62000157836200011b565b915062000167602084016200011b565b90509250929050565b60805160a05160c051614ce6620001ca60003960008181610a0e0152612e1c0152600081816109780152610c2d0152600081816113da0152818161141a015281816115130152818161155301526116750152614ce66000f3fe60806040526004361061036b5760003560e01c80637ecebe00116101c6578063c5c03699116100f7578063ead1559611610095578063f36c8f5c1161006f578063f36c8f5c14610b10578063f698da2514610b44578063f72c0d8b14610b5b578063fb0b294014610b8f57600080fd5b8063ead1559614610ab0578063ef3b490314610ad0578063efdbfaee14610af057600080fd5b8063d9e1063d116100d1578063d9e1063d146109da578063de5f72fd146109fc578063e42398ad14610a30578063e985e9c514610a6757600080fd5b8063c5c0369914610966578063c87b56dd1461099a578063d547741f146109ba57600080fd5b8063a0406ce211610164578063b0a77c611161013e578063b0a77c61146108e2578063b61f5515146108f9578063b75a3e4e14610926578063b88d4fde1461094657600080fd5b8063a0406ce21461086a578063a217fddf146108ad578063a22cb465146108c257600080fd5b806386823a2c116101a057806386823a2c146107da57806391d14854146107fa57806395d89b411461081a5780639944f5181461084a57600080fd5b80637ecebe00146107695780638129fc1c14610797578063845b6b6c146107ac57600080fd5b80632f745c59116102a05780634f6ccce71161023e5780636d785f3b116102185780636d785f3b146106e95780636d7cdf6c146107095780636ed1f4a31461072957806370a082311461074957600080fd5b80634f6ccce71461069457806352d1902d146106b45780636352211e146106c957600080fd5b8063390c11ae1161027a578063390c11ae146105ff57806342842e0e1461064157806342966c68146106615780634f1ef2861461068157600080fd5b80632f745c591461059f57806336568abe146105bf5780633659cfe6146105df57600080fd5b806311c0154e1161030d57806321442ec9116102e757806321442ec9146104f857806323b872dd1461052f578063248a9ca31461054f5780632f2ff15d1461057f57600080fd5b806311c0154e1461049957806318160ddd146104b95780631fbd4041146104d857600080fd5b806306fdde031161034957806306fdde03146103e7578063081812fc14610421578063095ea7b3146104595780630add9f7f1461047957600080fd5b806301ffc9a71461037057806304a6238f146103a557806305bdaabb146103c7575b600080fd5b34801561037c57600080fd5b5061039061038b366004613ff8565b610baf565b60405190151581526020015b60405180910390f35b3480156103b157600080fd5b506103c56103c0366004614031565b610bc0565b005b3480156103d357600080fd5b506103c56103e2366004614076565b610d37565b3480156103f357600080fd5b5060408051808201909152600881526712da5b9d1bc8125160c21b60208201525b60405161039c91906140f0565b34801561042d57600080fd5b5061044161043c366004614103565b610e3f565b6040516001600160a01b03909116815260200161039c565b34801561046557600080fd5b506103c561047436600461411c565b610e66565b34801561048557600080fd5b50610390610494366004614146565b610f7b565b3480156104a557600080fd5b506103c56104b4366004614076565b611008565b3480156104c557600080fd5b506099545b60405190815260200161039c565b3480156104e457600080fd5b506103c56104f3366004614076565b611107565b34801561050457600080fd5b506104ca610513366004614146565b6001600160a01b03166000908152610193602052604090205490565b34801561053b57600080fd5b506103c561054a366004614161565b611266565b34801561055b57600080fd5b506104ca61056a366004614103565b600090815260fb602052604090206001015490565b34801561058b57600080fd5b506103c561059a36600461419d565b611297565b3480156105ab57600080fd5b506104ca6105ba36600461411c565b6112bc565b3480156105cb57600080fd5b506103c56105da36600461419d565b611352565b3480156105eb57600080fd5b506103c56105fa366004614146565b6113d0565b34801561060b57600080fd5b5061039061061a366004614146565b6001600160a01b031660009081526101936020526040902060020154610100900460ff1690565b34801561064d57600080fd5b506103c561065c366004614161565b6114af565b34801561066d57600080fd5b506103c561067c366004614103565b6114ca565b6103c561068f366004614262565b611509565b3480156106a057600080fd5b506104ca6106af366004614103565b6115d5565b3480156106c057600080fd5b506104ca611668565b3480156106d557600080fd5b506104416106e4366004614103565b61171b565b3480156106f557600080fd5b506103c561070436600461430b565b61177b565b34801561071557600080fd5b506103c561072436600461430b565b6117a2565b34801561073557600080fd5b506103c5610744366004614373565b6117c9565b34801561075557600080fd5b506104ca610764366004614146565b611ac3565b34801561077557600080fd5b506104ca610784366004614146565b6101946020526000908152604090205481565b3480156107a357600080fd5b506103c5611b49565b3480156107b857600080fd5b506104ca6107c7366004614146565b6101986020526000908152604090205481565b3480156107e657600080fd5b506103906107f5366004614076565b611e05565b34801561080657600080fd5b5061039061081536600461419d565b611ebd565b34801561082657600080fd5b5060408051808201909152600781526612d2539513d25160ca1b6020820152610414565b34801561085657600080fd5b50610390610865366004614146565b611ee8565b34801561087657600080fd5b50610390610885366004614146565b6001600160a01b031660009081526101936020526040902060020154610100900460ff161590565b3480156108b957600080fd5b506104ca600081565b3480156108ce57600080fd5b506103c56108dd3660046143ee565b611f05565b3480156108ee57600080fd5b506104ca6101925481565b34801561090557600080fd5b50610919610914366004614146565b611f10565b60405161039c9190614418565b34801561093257600080fd5b50610390610941366004614076565b611fb2565b34801561095257600080fd5b506103c561096136600461445e565b611ff5565b34801561097257600080fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b3480156109a657600080fd5b506104146109b5366004614103565b612027565b3480156109c657600080fd5b506103c56109d536600461419d565b61208d565b3480156109e657600080fd5b506104ca600080516020614c2483398151915281565b348015610a0857600080fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b348015610a3c57600080fd5b50610441610a4b366004614146565b610196602052600090815260409020546001600160a01b031681565b348015610a7357600080fd5b50610390610a82366004614031565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b348015610abc57600080fd5b50610390610acb3660046144c5565b6120b2565b348015610adc57600080fd5b506103c5610aeb366004614076565b6120dd565b348015610afc57600080fd5b506103c5610b0b3660046144eb565b612216565b348015610b1c57600080fd5b506104ca7f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb181565b348015610b5057600080fd5b506104ca6101955481565b348015610b6757600080fd5b506104ca7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b348015610b9b57600080fd5b506103c5610baa366004614146565b61253c565b6000610bba8261260a565b92915050565b6000610bcb83611ac3565b118015610bde5750610bdc81611ac3565b155b610c225760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103a3930b739b332b960811b60448201526064015b60405180910390fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610c5f5750610c5f600033611ebd565b610cc65760405162461bcd60e51b815260206004820152603260248201527f4f6e6c79207468652077616c6c657420666163746f7279206f722061646d696e604482015271732063616e2074726967676572207468697360701b6064820152608401610c19565b6001600160a01b0382811660009081526101966020526040812080546001600160a01b03191692841692909217909155610d0e9083908390610d099083906112bc565b61262f565b506001600160a01b031660009081526101966020526040902080546001600160a01b0319169055565b600080516020614c24833981519152610d4f816127a0565b610d5883611ac3565b600003610d78576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b16610e395760ff600884901c811660009081526003830160205260409020805460019286169290921b909117905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917f364b7a2e1762fd5d9cdeda6c0ea8e1be396892c015c5c917f4d164cd4968ac7691015b60405180910390a25b50505050565b6000610e4a826127aa565b506000908152606960205260409020546001600160a01b031690565b6000610e718261171b565b9050806001600160a01b0316836001600160a01b031603610ede5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c19565b336001600160a01b0382161480610efa5750610efa8133610a82565b610f6c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610c19565b610f768383612809565b505050565b6000610f8760076120b2565b8015610bba57506001600160a01b0382166000908152610193602052604090206002015460ff161580610bba57506001600160a01b0382166000908152610198602052604090205415801590610bba57506001600160a01b038216600090815261019860205260409020546203f480906110019042614535565b1192915050565b600080516020614c24833981519152611020816127a0565b61102983611ac3565b600003611049576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b1615610e395760ff600884901c811660009081526003830160205260409020805460019286169290921b19909116905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917fdaf71d6bfd7a93506c86e0e5c5725808f99fe27f13af711f321edf92511e609b9101610e30565b600080516020614c2483398151915261111f816127a0565b61112883611ac3565b600003611148576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526004820190935292205460019185169190911b16610e395760ff600884901c811660009081526004830160205260409020805460019286169290921b9091179055600281018054600191906000906111cb90849060ff16614548565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550836001600160a01b03167f87d7acad3a8fb00ded1ae0aeaed871a89b621b17d6cd6ff8fd5c00b63394f94a844260405161123e92919061ffff929092168252602082015260400190565b60405180910390a25050506001600160a01b0316600090815261019860205260409020429055565b6112703382612877565b61128c5760405162461bcd60e51b8152600401610c1990614561565b610f7683838361262f565b600082815260fb60205260409020600101546112b2816127a0565b610f7683836128f6565b60006112c783611ac3565b82106113295760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610c19565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6001600160a01b03811633146113c25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610c19565b6113cc828261297c565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114185760405162461bcd60e51b8152600401610c19906145ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611461600080516020614c6a833981519152546001600160a01b031690565b6001600160a01b0316146114875760405162461bcd60e51b8152600401610c19906145fa565b611490816129e3565b604080516000808252602082019092526114ac91839190612a0d565b50565b610f7683838360405180602001604052806000815250611ff5565b60405163015538b160e01b8152602060048201526013602482015272155cd948189d5c9b92d650c81a5b9cdd195859606a1b6044820152606401610c19565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115515760405162461bcd60e51b8152600401610c19906145ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661159a600080516020614c6a833981519152546001600160a01b031690565b6001600160a01b0316146115c05760405162461bcd60e51b8152600401610c19906145fa565b6115c9826129e3565b6113cc82826001612a0d565b60006115e060995490565b82106116435760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610c19565b6099828154811061165657611656614646565b90600052602060002001549050919050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c19565b50600080516020614c6a83398151915290565b6000818152606760205260408120546001600160a01b031680610bba5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c19565b610191805490600061178c8361465c565b9190505550610f76610191548484846001612b78565b61019180549060006117b38361465c565b9190505550610f76610191548484846000612b78565b600080516020614c248339815191526117e1816127a0565b838214611804576040516001621398b960e31b0319815260040160405180910390fd5b60c88411156118265760405163a947d77f60e01b815260040160405180910390fd5b4260005b85811015611a79576000610193600089898581811061184b5761184b614646565b90506020020160208101906118609190614146565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506118ac88888481811061189757611897614646565b90506020020160208101906107649190614146565b6000036118b95750611a67565b42600182015560005b8686848181106118d4576118d4614646565b90506020028101906118e69190614675565b9050811015611a6457600087878581811061190357611903614646565b90506020028101906119159190614675565b8381811061192557611925614646565b90506060020180360381019061193b91906146bd565b8051909150801561194d575080602001515b1561198b576119868a8a8681811061196757611967614646565b905060200201602081019061197c9190614146565b8260400151610d37565b611a51565b8051801561199b57508060200151155b156119d4576119868a8a868181106119b5576119b5614646565b90506020020160208101906119ca9190614146565b8260400151611008565b80511580156119e4575080602001515b15611a1d576119868a8a868181106119fe576119fe614646565b9050602002016020810190611a139190614146565b8260400151611107565b611a518a8a86818110611a3257611a32614646565b9050602002016020810190611a479190614146565b82604001516120dd565b50611a5d600182614728565b90506118c2565b50505b611a72600182614728565b905061182a565b50610192819055604080518681526020810183905233917f18fb8b1f79749f3894ec6b996ad0503b2dbcf19585865dba3df7683953fc450d910160405180910390a2505050505050565b60006001600160a01b038216611b2d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c19565b506001600160a01b031660009081526068602052604090205490565b600054610100900460ff1615808015611b695750600054600160ff909116105b80611b835750303b158015611b83575060005460ff166001145b611be65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c19565b6000805460ff191660011790558015611c09576000805461ff0019166101001790555b611c526040518060400160405280600881526020016712da5b9d1bc8125160c21b8152506040518060400160405280600781526020016612d2539513d25160ca1b815250612eb3565b611c5a612ee4565b611c62612ee4565b611c6a612ee4565b611c72612ee4565b611c7d6000336128f6565b611c95600080516020614c24833981519152336128f6565b611cbf7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3336128f6565b611ce97f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1336128f6565b4261019255604080518082018252600781526612da5b9d1bd25160ca1b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff2acf2bff9f153ce27ec66ef28c5d61aaa06a6eac70c4c0de4bac7cb3bec0c54818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c090910190925281519101206101955580156114ac576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000611e1160076120b2565b8015611eb657506001600160a01b038316600090815261019360205260409020611e619060040161ffff8416600881901c600090815260208390526040902054600160ff83161b16151592915050565b1580611eb657506001600160a01b0383166000908152610198602052604090205415801590611eb657506001600160a01b038316600090815261019860205260409020546203f48090611eb49042614535565b115b9392505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080611ef483611ac3565b118015610bba5750610bba82610f7b565b6113cc338383612f0d565b6001600160a01b038116600090815261019360205260408082208151610100808252612020820190935260609360039092019281602001602082028036833701905050905060005b610100811015611faa57600881901c600090815260208490526040902054600160ff83161b161515828281518110611f9257611f92614646565b91151560209283029190910190910152600101611f58565b509392505050565b6001600160a01b03821660009081526101936020908152604080832060ff600886901c81168552600390910190925282205460019184169190911b161515611eb6565b611fff3383612877565b61201b5760405162461bcd60e51b8152600401610c1990614561565b610e3984848484612fdb565b6060612032826127aa565b600061203c61300e565b9050600081511161205c5760405180602001604052806000815250611eb6565b806120668461302e565b60405160200161207792919061473b565b6040516020818303038152906040529392505050565b600082815260fb60205260409020600101546120a8816127a0565b610f76838361297c565b60006120c1826201518061476a565b63ffffffff1661019254426120d69190614535565b1092915050565b600080516020614c248339815191526120f5816127a0565b6120fe83611ac3565b60000361211e576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526004820190935292205460019185169190911b1615610e395760ff600884901c811660009081526004830160205260409020805460019286169290921b199091169055600281018054600191906000906121a390849060ff16614792565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550836001600160a01b03167fe307a82882b02537e8254556f85aa0ae942a060782f1f076028687f1fd7dba188442604051610e3092919061ffff929092168252602082015260400190565b808060400135421061223b57604051630819bdcd60e01b815260040160405180910390fd5b60208101803590610194906000906122539085614146565b6001600160a01b03166001600160a01b03168152602001908152602001600020541461229257604051633ab3447f60e11b815260040160405180910390fd5b6122aa600080516020614c2483398151915233611ebd565b6122c757604051633b136dc160e11b815260040160405180910390fd5b6000806122d76020840184614146565b803b9250905081156122fc57604051631bb5d42560e31b815260040160405180910390fd5b60006101955461237e8561230f906147ab565b805160208083015160409384015184517fce753e2ed199e3bc0c561ccacfe9f2ebd720bf99f6d0e6854d8ec36486eb18c7818501526001600160a01b039094168486015260608401919091526080808401919091528351808403909101815260a0909201909252805191012090565b60405161190160f01b60208201526022810192909252604282015260620160408051601f1981840301815291905280516020909101209050612419816123c76060870187614830565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612409925050506020880188614146565b6001600160a01b031691906130c0565b61243657604051632057875960e21b815260040160405180910390fd5b6124466107646020870187614146565b60000361246657604051634c3215c360e11b815260040160405180910390fd5b6001610194600061247a6020890189614146565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546124a99190614728565b909155506124ce90506124c96124c26020880188614146565b60006112bc565b613121565b60006124e06107646020880188614146565b11156124ff5760405163493e98f360e11b815260040160405180910390fd5b6000610193816125126020890189614146565b6001600160a01b031681526020810191909152604001600090812081815560010155505050505050565b7f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1612566816127a0565b6001600160a01b0382166000908152610193602052604081206002015460ff1690036125b057604051634d05f3e760e01b81526001600160a01b0383166004820152602401610c19565b6001600160a01b0382166000818152610198602052604080822091909155517f8e5e87839bfd57881dc0bf377cc18550ec2476ac488bb95c3aec4792077ea79f906125fe9042815260200190565b60405180910390a25050565b60006001600160e01b03198216637965db0b60e01b1480610bba5750610bba826131c4565b826001600160a01b03166126428261171b565b6001600160a01b0316146126685760405162461bcd60e51b8152600401610c1990614876565b6001600160a01b0382166126ca5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c19565b6126d783838360016131e9565b826001600160a01b03166126ea8261171b565b6001600160a01b0316146127105760405162461bcd60e51b8152600401610c1990614876565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6114ac81336132a2565b6000818152606760205260409020546001600160a01b03166114ac5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c19565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061283e8261171b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806128838361171b565b9050806001600160a01b0316846001600160a01b031614806128ca57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806128ee5750836001600160a01b03166128e384610e3f565b6001600160a01b0316145b949350505050565b6129008282611ebd565b6113cc57600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556129383390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6129868282611ebd565b156113cc57600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e36113cc816127a0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612a4057610f76836132fb565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a9a575060408051601f3d908101601f19168201909252612a97918101906148bb565b60015b612afd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c19565b600080516020614c6a8339815191528114612b6c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c19565b50610f76838383613397565b8380604001354210612b9d57604051630819bdcd60e01b815260040160405180910390fd5b6020810180359061019490600090612bb59085614146565b6001600160a01b03166001600160a01b031681526020019081526020016000205414612bf457604051633ab3447f60e11b815260040160405180910390fd5b612c0c600080516020614c2483398151915233611ebd565b612c2957604051633b136dc160e11b815260040160405180910390fd5b600080612c396020840184614146565b803b925090508115612c5e57604051631bb5d42560e31b815260040160405180910390fd5b600061019554612c718561230f906147ab565b60405161190160f01b60208201526022810192909252604282015260620160408051601f1981840301815291905280516020909101209050612cba816123c76060870187614830565b612cd757604051632057875960e21b815260040160405180910390fd5b6000612ce961076460208b018b614146565b1115612d085760405163493e98f360e11b815260040160405180910390fd5b600061019381612d1b60208c018c614146565b6001600160a01b031681526020810191909152604001600090812042808255600182015560028101805461ff0019166101008a15150217905591505b87811015612dbc57612db4898983818110612d7457612d74614646565b9050602002016020810190612d8991906148d4565b600881901c60ff9081166000908152600386016020526040902080546001939092169290921b179055565b600101612d57565b506101946000612dcf60208c018c614146565b6001600160a01b0316815260208101919091526040016000908120805491612df68361465c565b90915550612e129050612e0c60208b018b614146565b8b6133bc565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016631fa27f76612e4e60208c018c614146565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015612e8f57600080fd5b505af1158015612ea3573d6000803e3d6000fd5b5050505050505050505050505050565b600054610100900460ff16612eda5760405162461bcd60e51b8152600401610c19906148ef565b6113cc82826133d6565b600054610100900460ff16612f0b5760405162461bcd60e51b8152600401610c19906148ef565b565b816001600160a01b0316836001600160a01b031603612f6e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c19565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612fe684848461262f565b612ff284848484613416565b610e395760405162461bcd60e51b8152600401610c199061493a565b6060604051806060016040528060268152602001614c4460269139905090565b6060600061303b83613517565b60010190506000816001600160401b0381111561305a5761305a6141c0565b6040519080825280601f01601f191660200182016040528015613084576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461308e57509392505050565b60008060006130cf85856135ef565b909250905060008160048111156130e8576130e861498c565b1480156131065750856001600160a01b0316826001600160a01b0316145b806131175750613117868686613634565b9695505050505050565b600061312c8261171b565b905061313c8160008460016131e9565b6131458261171b565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006001600160e01b0319821663780e9d6360e01b1480610bba5750610bba82613720565b6001600160a01b038416158061321d57506001600160a01b0384811660009081526101966020526040902054811690841614155b8061322e575061322c84610f7b565b155b801561325357506001600160a01b03841615158061325357506001600160a01b038316155b801561327857506001600160a01b038416158061327857506001600160a01b03831615155b1561329657604051632a675c2b60e11b815260040160405180910390fd5b610e3984848484613770565b6132ac8282611ebd565b6113cc576132b9816138a4565b6132c48360206138b6565b6040516020016132d59291906149a2565b60408051601f198184030181529082905262461bcd60e51b8252610c19916004016140f0565b6001600160a01b0381163b6133685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c19565b600080516020614c6a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6133a083613a51565b6000825111806133ad5750805b15610f7657610e398383613a91565b6113cc828260405180602001604052806000815250613ab6565b600054610100900460ff166133fd5760405162461bcd60e51b8152600401610c19906148ef565b60656134098382614a9b565b506066610f768282614a9b565b60006001600160a01b0384163b1561350c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061345a903390899088908890600401614b5a565b6020604051808303816000875af1925050508015613495575060408051601f3d908101601f1916820190925261349291810190614b8d565b60015b6134f2573d8080156134c3576040519150601f19603f3d011682016040523d82523d6000602084013e6134c8565b606091505b5080516000036134ea5760405162461bcd60e51b8152600401610c199061493a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506128ee565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106135565772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613582576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106135a057662386f26fc10000830492506010015b6305f5e10083106135b8576305f5e100830492506008015b61271083106135cc57612710830492506004015b606483106135de576064830492506002015b600a8310610bba5760010192915050565b60008082516041036136255760208301516040840151606085015160001a61361987828585613ae9565b9450945050505061362d565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b868660405160240161365e929190614baa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161369c9190614bc3565b600060405180830381855afa9150503d80600081146136d7576040519150601f19603f3d011682016040523d82523d6000602084013e6136dc565b606091505b50915091508180156136f057506020815110155b801561311757508051630b135d3f60e11b9061371590830160209081019084016148bb565b149695505050505050565b60006001600160e01b031982166380ac58cd60e01b148061375157506001600160e01b03198216635b5e139f60e01b145b80610bba57506301ffc9a760e01b6001600160e01b0319831614610bba565b60018111156137df5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610c19565b816001600160a01b03851661383b5761383681609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b61385e565b836001600160a01b0316856001600160a01b03161461385e5761385e8582613bad565b6001600160a01b03841661387a5761387581613c4a565b61389d565b846001600160a01b0316846001600160a01b03161461389d5761389d8482613cf9565b5050505050565b6060610bba6001600160a01b03831660145b606060006138c5836002614bdf565b6138d0906002614728565b6001600160401b038111156138e7576138e76141c0565b6040519080825280601f01601f191660200182016040528015613911576020820181803683370190505b509050600360fc1b8160008151811061392c5761392c614646565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061395b5761395b614646565b60200101906001600160f81b031916908160001a905350600061397f846002614bdf565b61398a906001614728565b90505b6001811115613a02576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106139be576139be614646565b1a60f81b8282815181106139d4576139d4614646565b60200101906001600160f81b031916908160001a90535060049490941c936139fb81614bf6565b905061398d565b508315611eb65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c19565b613a5a816132fb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611eb68383604051806060016040528060278152602001614c8a60279139613d3d565b613ac08383613dab565b613acd6000848484613416565b610f765760405162461bcd60e51b8152600401610c199061493a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613b205750600090506003613ba4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613b74573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613b9d57600060019250925050613ba4565b9150600090505b94509492505050565b60006001613bba84611ac3565b613bc49190614535565b600083815260986020526040902054909150808214613c17576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b609954600090613c5c90600190614535565b6000838152609a602052604081205460998054939450909284908110613c8457613c84614646565b906000526020600020015490508060998381548110613ca557613ca5614646565b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480613cdd57613cdd614c0d565b6001900381819060005260206000200160009055905550505050565b6000613d0483611ac3565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6060600080856001600160a01b031685604051613d5a9190614bc3565b600060405180830381855af49150503d8060008114613d95576040519150601f19603f3d011682016040523d82523d6000602084013e613d9a565b606091505b509150915061311786838387613f44565b6001600160a01b038216613e015760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c19565b6000818152606760205260409020546001600160a01b031615613e665760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c19565b613e746000838360016131e9565b6000818152606760205260409020546001600160a01b031615613ed95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c19565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60608315613fb3578251600003613fac576001600160a01b0385163b613fac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c19565b50816128ee565b6128ee8383815115613fc85781518083602001fd5b8060405162461bcd60e51b8152600401610c1991906140f0565b6001600160e01b0319811681146114ac57600080fd5b60006020828403121561400a57600080fd5b8135611eb681613fe2565b80356001600160a01b038116811461402c57600080fd5b919050565b6000806040838503121561404457600080fd5b61404d83614015565b915061405b60208401614015565b90509250929050565b803561ffff8116811461402c57600080fd5b6000806040838503121561408957600080fd5b61409283614015565b915061405b60208401614064565b60005b838110156140bb5781810151838201526020016140a3565b50506000910152565b600081518084526140dc8160208601602086016140a0565b601f01601f19169290920160200192915050565b602081526000611eb660208301846140c4565b60006020828403121561411557600080fd5b5035919050565b6000806040838503121561412f57600080fd5b61413883614015565b946020939093013593505050565b60006020828403121561415857600080fd5b611eb682614015565b60008060006060848603121561417657600080fd5b61417f84614015565b925061418d60208501614015565b9150604084013590509250925092565b600080604083850312156141b057600080fd5b8235915061405b60208401614015565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126141e757600080fd5b81356001600160401b0380821115614201576142016141c0565b604051601f8301601f19908116603f01168101908282118183101715614229576142296141c0565b8160405283815286602085880101111561424257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561427557600080fd5b61427e83614015565b915060208301356001600160401b0381111561429957600080fd5b6142a5858286016141d6565b9150509250929050565b6000608082840312156142c157600080fd5b50919050565b60008083601f8401126142d957600080fd5b5081356001600160401b038111156142f057600080fd5b6020830191508360208260051b850101111561362d57600080fd5b60008060006040848603121561432057600080fd5b83356001600160401b038082111561433757600080fd5b614343878388016142af565b9450602086013591508082111561435957600080fd5b50614366868287016142c7565b9497909650939450505050565b6000806000806040858703121561438957600080fd5b84356001600160401b03808211156143a057600080fd5b6143ac888389016142c7565b909650945060208701359150808211156143c557600080fd5b506143d2878288016142c7565b95989497509550505050565b8035801515811461402c57600080fd5b6000806040838503121561440157600080fd5b61440a83614015565b915061405b602084016143de565b6020808252825182820181905260009190848201906040850190845b81811015614452578351151583529284019291840191600101614434565b50909695505050505050565b6000806000806080858703121561447457600080fd5b61447d85614015565b935061448b60208601614015565b92506040850135915060608501356001600160401b038111156144ad57600080fd5b6144b9878288016141d6565b91505092959194509250565b6000602082840312156144d757600080fd5b813563ffffffff81168114611eb657600080fd5b6000602082840312156144fd57600080fd5b81356001600160401b0381111561451357600080fd5b6128ee848285016142af565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bba57610bba61451f565b60ff8181168382160190811115610bba57610bba61451f565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161466e5761466e61451f565b5060010190565b6000808335601e1984360301811261468c57600080fd5b8301803591506001600160401b038211156146a657600080fd5b602001915060608102360382131561362d57600080fd5b6000606082840312156146cf57600080fd5b604051606081018181106001600160401b03821117156146f1576146f16141c0565b6040526146fd836143de565b815261470b602084016143de565b602082015261471c60408401614064565b60408201529392505050565b80820180821115610bba57610bba61451f565b6000835161474d8184602088016140a0565b8351908301906147618183602088016140a0565b01949350505050565b63ffffffff81811683821602808216919082811461478a5761478a61451f565b505092915050565b60ff8281168282160390811115610bba57610bba61451f565b6000608082360312156147bd57600080fd5b604051608081016001600160401b0382821081831117156147e0576147e06141c0565b816040526147ed85614015565b83526020850135602084015260408501356040840152606085013591508082111561481757600080fd5b50614824368286016141d6565b60608301525092915050565b6000808335601e1984360301811261484757600080fd5b8301803591506001600160401b0382111561486157600080fd5b60200191503681900382131561362d57600080fd5b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6000602082840312156148cd57600080fd5b5051919050565b6000602082840312156148e657600080fd5b611eb682614064565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516149da8160178501602088016140a0565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614a0b8160288401602088016140a0565b01602801949350505050565b600181811c90821680614a2b57607f821691505b6020821081036142c157634e487b7160e01b600052602260045260246000fd5b601f821115610f76576000816000526020600020601f850160051c81016020861015614a745750805b601f850160051c820191505b81811015614a9357828155600101614a80565b505050505050565b81516001600160401b03811115614ab457614ab46141c0565b614ac881614ac28454614a17565b84614a4b565b602080601f831160018114614afd5760008415614ae55750858301515b600019600386901b1c1916600185901b178555614a93565b600085815260208120601f198616915b82811015614b2c57888601518255948401946001909101908401614b0d565b5085821015614b4a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613117908301846140c4565b600060208284031215614b9f57600080fd5b8151611eb681613fe2565b8281526040602082015260006128ee60408301846140c4565b60008251614bd58184602087016140a0565b9190910192915050565b8082028115828204841417610bba57610bba61451f565b600081614c0557614c0561451f565b506000190190565b634e487b7160e01b600052603160045260246000fdfe6c4079fcac94e7142d8c209744c998efe53a188aadb7e55958f7ad3ea8a1d65268747470733a2f2f6b696e746f2e78797a2f6170692f76312f6e66742d6b696e746f2d69642f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220356a31e8d76a6ff7a107a0b291c0e8fded16a70b0c0fcf53177a6ed3a1d0289a64736f6c634300081800330000000000000000000000008a4720488ca32f1223ccfe5a087e250fe3bc5d750000000000000000000000000719d47a213149e2ef8d3f5afdada8a8e22dfc03", + "nonce": "0x4b86c", + "chainId": "0x1ecf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "function": "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)", + "arguments": [ + "[(0x2e2B1c42E38f5af81771e65D87729E57ABD1337a, 3858, 0x, 0xb61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe60000000000000000000000007cfe474936fa50181ae7c2c43eeb8806e25bc98300000000000000000000000000000000000000000000000000000000, 4000000, 210000, 21000, 1, 1000000000, 0x0000000000000000000000000000000000000000, 0x4d3de4ef8e2c4121e905d8628cfd62e384db3f18dd05923051acba117396094d6bec31f3355a4700ff969127f206e2240389260aa7412a335dba0f77790381a91b86133a602cbea2d28c0bfcfb891e1c69539ea98b7a55dbce714dc5a6381244f6264c7d48517c0c11388c588a7d2bcfef95365d52811b0dd59d9294b3510ece2a1b)]", + "0x660ad4B5A74130a4796B4d54BC6750Ae93C86e6c" + ], + "transaction": { + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "value": "0x0", + "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000f120000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe60000000000000000000000007cfe474936fa50181ae7c2c43eeb8806e25bc98300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000824d3de4ef8e2c4121e905d8628cfd62e384db3f18dd05923051acba117396094d6bec31f3355a4700ff969127f206e2240389260aa7412a335dba0f77790381a91b86133a602cbea2d28c0bfcfb891e1c69539ea98b7a55dbce714dc5a6381244f6264c7d48517c0c11388c588a7d2bcfef95365d52811b0dd59d9294b3510ece2a1b000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4b86d", + "chainId": "0x1ecf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "function": "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)", + "arguments": [ + "[(0x2e2B1c42E38f5af81771e65D87729E57ABD1337a, 3859, 0x, 0xb61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb10000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a00000000000000000000000000000000000000000000000000000000, 4000000, 210000, 21000, 1, 1000000000, 0x0000000000000000000000000000000000000000, 0xcc94fd3192e2c1dabd5b8609874d88a4d27be5f407c21ce9648996b757b71f9863147aa7ab9bd98a96fa5ab4bdaa8d662aafa65ebd791d1a4a2a5a7eb1099ca11c4f7d95956b5bac7423dce8146207fafcff7d1e0f1e891c6c07134cb3dbdd66646ebb8e5bc8adfa8b6e279ecd03310f546a5abde9cc9bb07d5ea6bf17317dec351c)]", + "0x660ad4B5A74130a4796B4d54BC6750Ae93C86e6c" + ], + "transaction": { + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "value": "0x0", + "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000f130000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb10000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082cc94fd3192e2c1dabd5b8609874d88a4d27be5f407c21ce9648996b757b71f9863147aa7ab9bd98a96fa5ab4bdaa8d662aafa65ebd791d1a4a2a5a7eb1099ca11c4f7d95956b5bac7423dce8146207fafcff7d1e0f1e891c6c07134cb3dbdd66646ebb8e5bc8adfa8b6e279ecd03310f546a5abde9cc9bb07d5ea6bf17317dec351c000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4b86e", + "chainId": "0x1ecf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "function": "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)", + "arguments": [ + "[(0x2e2B1c42E38f5af81771e65D87729E57ABD1337a, 3860, 0x, 0xb61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1000000000000000000000000010600ff5f36c8ef3b6aaf2a88c2de85c798594a00000000000000000000000000000000000000000000000000000000, 4000000, 210000, 21000, 1, 1000000000, 0x0000000000000000000000000000000000000000, 0xcdf1b5c5d54c1ee370e9ce0f44acbdf00d61e03a82005e786bc4153f243b28e7613c73505b805dd4d66d78b12e9a0af582652905e3547611d4453178ecbf03061b6e0d18215759d34e62650b5f7d553818392ed559e2d14e0779516fe57ca23c5b11d9719f6449b02d2bec206b2072c97bf43622153e19d86e50e47e65b94363fc1b)]", + "0x660ad4B5A74130a4796B4d54BC6750Ae93C86e6c" + ], + "transaction": { + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "value": "0x0", + "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000f140000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1000000000000000000000000010600ff5f36c8ef3b6aaf2a88c2de85c798594a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082cdf1b5c5d54c1ee370e9ce0f44acbdf00d61e03a82005e786bc4153f243b28e7613c73505b805dd4d66d78b12e9a0af582652905e3547611d4453178ecbf03061b6e0d18215759d34e62650b5f7d553818392ed559e2d14e0779516fe57ca23c5b11d9719f6449b02d2bec206b2072c97bf43622153e19d86e50e47e65b94363fc1b000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4b86f", + "chainId": "0x1ecf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x6e0942", + "logs": [ + { + "address": "0x7cfe474936fa50181ae7c2c43eeb8806e25bc983", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0xf3e9b3199aea422a64b3bc8564d3ae7ca609f1100928bec80e7dd147e0cddba7", + "blockNumber": "0x91593", + "transactionHash": "0xd17af031c598da65cd4893e4a2b3cfd74a6451b03e196950d95d42b0d6f96232", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000002000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd17af031c598da65cd4893e4a2b3cfd74a6451b03e196950d95d42b0d6f96232", + "transactionIndex": "0x1", + "blockHash": "0xf3e9b3199aea422a64b3bc8564d3ae7ca609f1100928bec80e7dd147e0cddba7", + "blockNumber": "0x91593", + "gasUsed": "0x6e0942", + "effectiveGasPrice": "0x5f5e100", + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "gasUsedForL1": "0x2bc7e5", + "l1BlockNumber": "0x145b7ac" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x4cbed", + "logs": [ + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0xbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972" + ], + "data": "0x", + "blockHash": "0x5d003beb78a1844ed54b1ffd99a06071012801b3e7fe244ffa0e80f357251a4b", + "blockNumber": "0x91594", + "transactionHash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xf369f78e3a0492cc4e96a90dae0728a38498e9c7", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000007cfe474936fa50181ae7c2c43eeb8806e25bc983" + ], + "data": "0x", + "blockHash": "0x5d003beb78a1844ed54b1ffd99a06071012801b3e7fe244ffa0e80f357251a4b", + "blockNumber": "0x91594", + "transactionHash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f", + "0x9524dba06243a217462d096b861b474032e32e7c41093d2c8c78e1643bc06e57", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000f1200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000083bae0000000000000000000000000000000000000000000000000000000000083bae", + "blockHash": "0x5d003beb78a1844ed54b1ffd99a06071012801b3e7fe244ffa0e80f357251a4b", + "blockNumber": "0x91594", + "transactionHash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", + "transactionIndex": "0x1", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000004400000000000000000004000000000000008000000000000000000010000000000000000000000000000020000000000008000000000000000000000000002000000000000000010000000000000000800000000020000000000000020000800002000000000000000000000000000800000000000000000000008000000800000000000000002000000000000000000000400000000000000400000000000000000000000000000000002000000000000000020000000100001000000000000000000000000000002000000000020000000000000010000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", + "transactionIndex": "0x1", + "blockHash": "0x5d003beb78a1844ed54b1ffd99a06071012801b3e7fe244ffa0e80f357251a4b", + "blockNumber": "0x91594", + "gasUsed": "0x4cbed", + "effectiveGasPrice": "0x5f5e100", + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "contractAddress": null, + "gasUsedForL1": "0x23723", + "l1BlockNumber": "0x145b7ac" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x526ae", + "logs": [ + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0xbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972" + ], + "data": "0x", + "blockHash": "0x0b698a3c771b13b989d37d298bdcbeedb3ade9e8a5ff1ac934430eec032c92e9", + "blockNumber": "0x91595", + "transactionHash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xf369f78e3a0492cc4e96a90dae0728a38498e9c7", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a" + ], + "data": "0x", + "blockHash": "0x0b698a3c771b13b989d37d298bdcbeedb3ade9e8a5ff1ac934430eec032c92e9", + "blockNumber": "0x91595", + "transactionHash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f", + "0xe8d37ccc129651e557c06738a29e912eb017c451583dbaff4d9225ccd98e50a8", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000f13000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000876370000000000000000000000000000000000000000000000000000000000087637", + "blockHash": "0x0b698a3c771b13b989d37d298bdcbeedb3ade9e8a5ff1ac934430eec032c92e9", + "blockNumber": "0x91595", + "transactionHash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", + "transactionIndex": "0x1", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000004000000000000000000000004800000001000000000000000000000000008000000000000000000010000000000000000000000000000020000000000008000000000000000000000000000000000000000000010000000000000000800000000020000000000000000000800002040000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000400000000000000400000000000000000000000000000001002000000000000000000000000302001000000000000000000000000000100000000000020000001000000010000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", + "transactionIndex": "0x1", + "blockHash": "0x0b698a3c771b13b989d37d298bdcbeedb3ade9e8a5ff1ac934430eec032c92e9", + "blockNumber": "0x91595", + "gasUsed": "0x526ae", + "effectiveGasPrice": "0x5f5e100", + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "contractAddress": null, + "gasUsedForL1": "0x24ecf", + "l1BlockNumber": "0x145b7ac" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x53a24", + "logs": [ + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0xbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972" + ], + "data": "0x", + "blockHash": "0xc314fcfd65e55126045c4a41beaa38a9b5633b4b0c19336061b0e182accf6ecf", + "blockNumber": "0x91596", + "transactionHash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xf369f78e3a0492cc4e96a90dae0728a38498e9c7", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1", + "0x000000000000000000000000010600ff5f36c8ef3b6aaf2a88c2de85c798594a", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a" + ], + "data": "0x", + "blockHash": "0xc314fcfd65e55126045c4a41beaa38a9b5633b4b0c19336061b0e182accf6ecf", + "blockNumber": "0x91596", + "transactionHash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + }, + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f", + "0xc24e49c960f23590b5665c7daba685679d5afc1908e5c2580b0ea6f390369406", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000f14000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000876370000000000000000000000000000000000000000000000000000000000087637", + "blockHash": "0xc314fcfd65e55126045c4a41beaa38a9b5633b4b0c19336061b0e182accf6ecf", + "blockNumber": "0x91596", + "transactionHash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", + "transactionIndex": "0x1", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00100004000000002000000000000004800000000000000000000000000000000008000000000000000000010000000000000000000000000000020000000000008000000000000000000000000000000000000000000010000000000000000800000000020000000000000000000800002040000000000000000000000000000000000000000000000000000000800000000000000080000000020000000000000400000020000000400000000000000000000000000000001002000000000000000000000000300001000000000000000000000000000100000000000020000000000000010000000000000000000000000000000000000000000000000004", + "type": "0x2", + "transactionHash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", + "transactionIndex": "0x1", + "blockHash": "0xc314fcfd65e55126045c4a41beaa38a9b5633b4b0c19336061b0e182accf6ecf", + "blockNumber": "0x91596", + "gasUsed": "0x53a24", + "effectiveGasPrice": "0x5f5e100", + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "contractAddress": null, + "gasUsedForL1": "0x2625d", + "l1BlockNumber": "0x145b7ac" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1733521441, + "chain": 7887, + "commit": "7a226c7" +} \ No newline at end of file diff --git a/broadcast/135-upgrade_faucet_id.s.sol/7887/run-latest.json b/broadcast/135-upgrade_faucet_id.s.sol/7887/run-latest.json index 8ca7f838..07f648ee 100644 --- a/broadcast/135-upgrade_faucet_id.s.sol/7887/run-latest.json +++ b/broadcast/135-upgrade_faucet_id.s.sol/7887/run-latest.json @@ -1,36 +1,84 @@ { "transactions": [ { - "hash": "0xa9f39526d2950582ab4958b2e68579d49a8a63b9781c7a7f40af3ed028d06700", + "hash": "0xd17af031c598da65cd4893e4a2b3cfd74a6451b03e196950d95d42b0d6f96232", + "transactionType": "CREATE2", + "contractName": "KintoID", + "contractAddress": "0x7cfe474936fa50181ae7c2c43eeb8806e25bc983", + "function": null, + "arguments": [ + "0x8a4720488CA32f1223ccFE5A087e250fE3BC5D75", + "0x0719D47A213149E2Ef8d3f5afDaDA8a8E22dfc03" + ], + "transaction": { + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "value": "0x0", + "input": "0x000000000000000000000000000000000000000000000000000000000000000060e0604052306080523480156200001557600080fd5b5060405162004eb038038062004eb0833981016040819052620000389162000138565b620000426200005a565b6001600160a01b0391821660a0521660c05262000170565b600054610100900460ff1615620000c75760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000119576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200013357600080fd5b919050565b600080604083850312156200014c57600080fd5b62000157836200011b565b915062000167602084016200011b565b90509250929050565b60805160a05160c051614ce6620001ca60003960008181610a0e0152612e1c0152600081816109780152610c2d0152600081816113da0152818161141a015281816115130152818161155301526116750152614ce66000f3fe60806040526004361061036b5760003560e01c80637ecebe00116101c6578063c5c03699116100f7578063ead1559611610095578063f36c8f5c1161006f578063f36c8f5c14610b10578063f698da2514610b44578063f72c0d8b14610b5b578063fb0b294014610b8f57600080fd5b8063ead1559614610ab0578063ef3b490314610ad0578063efdbfaee14610af057600080fd5b8063d9e1063d116100d1578063d9e1063d146109da578063de5f72fd146109fc578063e42398ad14610a30578063e985e9c514610a6757600080fd5b8063c5c0369914610966578063c87b56dd1461099a578063d547741f146109ba57600080fd5b8063a0406ce211610164578063b0a77c611161013e578063b0a77c61146108e2578063b61f5515146108f9578063b75a3e4e14610926578063b88d4fde1461094657600080fd5b8063a0406ce21461086a578063a217fddf146108ad578063a22cb465146108c257600080fd5b806386823a2c116101a057806386823a2c146107da57806391d14854146107fa57806395d89b411461081a5780639944f5181461084a57600080fd5b80637ecebe00146107695780638129fc1c14610797578063845b6b6c146107ac57600080fd5b80632f745c59116102a05780634f6ccce71161023e5780636d785f3b116102185780636d785f3b146106e95780636d7cdf6c146107095780636ed1f4a31461072957806370a082311461074957600080fd5b80634f6ccce71461069457806352d1902d146106b45780636352211e146106c957600080fd5b8063390c11ae1161027a578063390c11ae146105ff57806342842e0e1461064157806342966c68146106615780634f1ef2861461068157600080fd5b80632f745c591461059f57806336568abe146105bf5780633659cfe6146105df57600080fd5b806311c0154e1161030d57806321442ec9116102e757806321442ec9146104f857806323b872dd1461052f578063248a9ca31461054f5780632f2ff15d1461057f57600080fd5b806311c0154e1461049957806318160ddd146104b95780631fbd4041146104d857600080fd5b806306fdde031161034957806306fdde03146103e7578063081812fc14610421578063095ea7b3146104595780630add9f7f1461047957600080fd5b806301ffc9a71461037057806304a6238f146103a557806305bdaabb146103c7575b600080fd5b34801561037c57600080fd5b5061039061038b366004613ff8565b610baf565b60405190151581526020015b60405180910390f35b3480156103b157600080fd5b506103c56103c0366004614031565b610bc0565b005b3480156103d357600080fd5b506103c56103e2366004614076565b610d37565b3480156103f357600080fd5b5060408051808201909152600881526712da5b9d1bc8125160c21b60208201525b60405161039c91906140f0565b34801561042d57600080fd5b5061044161043c366004614103565b610e3f565b6040516001600160a01b03909116815260200161039c565b34801561046557600080fd5b506103c561047436600461411c565b610e66565b34801561048557600080fd5b50610390610494366004614146565b610f7b565b3480156104a557600080fd5b506103c56104b4366004614076565b611008565b3480156104c557600080fd5b506099545b60405190815260200161039c565b3480156104e457600080fd5b506103c56104f3366004614076565b611107565b34801561050457600080fd5b506104ca610513366004614146565b6001600160a01b03166000908152610193602052604090205490565b34801561053b57600080fd5b506103c561054a366004614161565b611266565b34801561055b57600080fd5b506104ca61056a366004614103565b600090815260fb602052604090206001015490565b34801561058b57600080fd5b506103c561059a36600461419d565b611297565b3480156105ab57600080fd5b506104ca6105ba36600461411c565b6112bc565b3480156105cb57600080fd5b506103c56105da36600461419d565b611352565b3480156105eb57600080fd5b506103c56105fa366004614146565b6113d0565b34801561060b57600080fd5b5061039061061a366004614146565b6001600160a01b031660009081526101936020526040902060020154610100900460ff1690565b34801561064d57600080fd5b506103c561065c366004614161565b6114af565b34801561066d57600080fd5b506103c561067c366004614103565b6114ca565b6103c561068f366004614262565b611509565b3480156106a057600080fd5b506104ca6106af366004614103565b6115d5565b3480156106c057600080fd5b506104ca611668565b3480156106d557600080fd5b506104416106e4366004614103565b61171b565b3480156106f557600080fd5b506103c561070436600461430b565b61177b565b34801561071557600080fd5b506103c561072436600461430b565b6117a2565b34801561073557600080fd5b506103c5610744366004614373565b6117c9565b34801561075557600080fd5b506104ca610764366004614146565b611ac3565b34801561077557600080fd5b506104ca610784366004614146565b6101946020526000908152604090205481565b3480156107a357600080fd5b506103c5611b49565b3480156107b857600080fd5b506104ca6107c7366004614146565b6101986020526000908152604090205481565b3480156107e657600080fd5b506103906107f5366004614076565b611e05565b34801561080657600080fd5b5061039061081536600461419d565b611ebd565b34801561082657600080fd5b5060408051808201909152600781526612d2539513d25160ca1b6020820152610414565b34801561085657600080fd5b50610390610865366004614146565b611ee8565b34801561087657600080fd5b50610390610885366004614146565b6001600160a01b031660009081526101936020526040902060020154610100900460ff161590565b3480156108b957600080fd5b506104ca600081565b3480156108ce57600080fd5b506103c56108dd3660046143ee565b611f05565b3480156108ee57600080fd5b506104ca6101925481565b34801561090557600080fd5b50610919610914366004614146565b611f10565b60405161039c9190614418565b34801561093257600080fd5b50610390610941366004614076565b611fb2565b34801561095257600080fd5b506103c561096136600461445e565b611ff5565b34801561097257600080fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b3480156109a657600080fd5b506104146109b5366004614103565b612027565b3480156109c657600080fd5b506103c56109d536600461419d565b61208d565b3480156109e657600080fd5b506104ca600080516020614c2483398151915281565b348015610a0857600080fd5b506104417f000000000000000000000000000000000000000000000000000000000000000081565b348015610a3c57600080fd5b50610441610a4b366004614146565b610196602052600090815260409020546001600160a01b031681565b348015610a7357600080fd5b50610390610a82366004614031565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b348015610abc57600080fd5b50610390610acb3660046144c5565b6120b2565b348015610adc57600080fd5b506103c5610aeb366004614076565b6120dd565b348015610afc57600080fd5b506103c5610b0b3660046144eb565b612216565b348015610b1c57600080fd5b506104ca7f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb181565b348015610b5057600080fd5b506104ca6101955481565b348015610b6757600080fd5b506104ca7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b348015610b9b57600080fd5b506103c5610baa366004614146565b61253c565b6000610bba8261260a565b92915050565b6000610bcb83611ac3565b118015610bde5750610bdc81611ac3565b155b610c225760405162461bcd60e51b815260206004820152601060248201526f24b73b30b634b2103a3930b739b332b960811b60448201526064015b60405180910390fd5b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610c5f5750610c5f600033611ebd565b610cc65760405162461bcd60e51b815260206004820152603260248201527f4f6e6c79207468652077616c6c657420666163746f7279206f722061646d696e604482015271732063616e2074726967676572207468697360701b6064820152608401610c19565b6001600160a01b0382811660009081526101966020526040812080546001600160a01b03191692841692909217909155610d0e9083908390610d099083906112bc565b61262f565b506001600160a01b031660009081526101966020526040902080546001600160a01b0319169055565b600080516020614c24833981519152610d4f816127a0565b610d5883611ac3565b600003610d78576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b16610e395760ff600884901c811660009081526003830160205260409020805460019286169290921b909117905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917f364b7a2e1762fd5d9cdeda6c0ea8e1be396892c015c5c917f4d164cd4968ac7691015b60405180910390a25b50505050565b6000610e4a826127aa565b506000908152606960205260409020546001600160a01b031690565b6000610e718261171b565b9050806001600160a01b0316836001600160a01b031603610ede5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610c19565b336001600160a01b0382161480610efa5750610efa8133610a82565b610f6c5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608401610c19565b610f768383612809565b505050565b6000610f8760076120b2565b8015610bba57506001600160a01b0382166000908152610193602052604090206002015460ff161580610bba57506001600160a01b0382166000908152610198602052604090205415801590610bba57506001600160a01b038216600090815261019860205260409020546203f480906110019042614535565b1192915050565b600080516020614c24833981519152611020816127a0565b61102983611ac3565b600003611049576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526003820190935292205460019185169190911b1615610e395760ff600884901c811660009081526003830160205260409020805460019286169290921b19909116905542600182018190556101928190556040805161ffff8616815260208101929092526001600160a01b038616917fdaf71d6bfd7a93506c86e0e5c5725808f99fe27f13af711f321edf92511e609b9101610e30565b600080516020614c2483398151915261111f816127a0565b61112883611ac3565b600003611148576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526004820190935292205460019185169190911b16610e395760ff600884901c811660009081526004830160205260409020805460019286169290921b9091179055600281018054600191906000906111cb90849060ff16614548565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550836001600160a01b03167f87d7acad3a8fb00ded1ae0aeaed871a89b621b17d6cd6ff8fd5c00b63394f94a844260405161123e92919061ffff929092168252602082015260400190565b60405180910390a25050506001600160a01b0316600090815261019860205260409020429055565b6112703382612877565b61128c5760405162461bcd60e51b8152600401610c1990614561565b610f7683838361262f565b600082815260fb60205260409020600101546112b2816127a0565b610f7683836128f6565b60006112c783611ac3565b82106113295760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608401610c19565b506001600160a01b03919091166000908152609760209081526040808320938352929052205490565b6001600160a01b03811633146113c25760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610c19565b6113cc828261297c565b5050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036114185760405162461bcd60e51b8152600401610c19906145ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611461600080516020614c6a833981519152546001600160a01b031690565b6001600160a01b0316146114875760405162461bcd60e51b8152600401610c19906145fa565b611490816129e3565b604080516000808252602082019092526114ac91839190612a0d565b50565b610f7683838360405180602001604052806000815250611ff5565b60405163015538b160e01b8152602060048201526013602482015272155cd948189d5c9b92d650c81a5b9cdd195859606a1b6044820152606401610c19565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036115515760405162461bcd60e51b8152600401610c19906145ae565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661159a600080516020614c6a833981519152546001600160a01b031690565b6001600160a01b0316146115c05760405162461bcd60e51b8152600401610c19906145fa565b6115c9826129e3565b6113cc82826001612a0d565b60006115e060995490565b82106116435760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608401610c19565b6099828154811061165657611656614646565b90600052602060002001549050919050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146117085760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610c19565b50600080516020614c6a83398151915290565b6000818152606760205260408120546001600160a01b031680610bba5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c19565b610191805490600061178c8361465c565b9190505550610f76610191548484846001612b78565b61019180549060006117b38361465c565b9190505550610f76610191548484846000612b78565b600080516020614c248339815191526117e1816127a0565b838214611804576040516001621398b960e31b0319815260040160405180910390fd5b60c88411156118265760405163a947d77f60e01b815260040160405180910390fd5b4260005b85811015611a79576000610193600089898581811061184b5761184b614646565b90506020020160208101906118609190614146565b6001600160a01b03166001600160a01b0316815260200190815260200160002090506118ac88888481811061189757611897614646565b90506020020160208101906107649190614146565b6000036118b95750611a67565b42600182015560005b8686848181106118d4576118d4614646565b90506020028101906118e69190614675565b9050811015611a6457600087878581811061190357611903614646565b90506020028101906119159190614675565b8381811061192557611925614646565b90506060020180360381019061193b91906146bd565b8051909150801561194d575080602001515b1561198b576119868a8a8681811061196757611967614646565b905060200201602081019061197c9190614146565b8260400151610d37565b611a51565b8051801561199b57508060200151155b156119d4576119868a8a868181106119b5576119b5614646565b90506020020160208101906119ca9190614146565b8260400151611008565b80511580156119e4575080602001515b15611a1d576119868a8a868181106119fe576119fe614646565b9050602002016020810190611a139190614146565b8260400151611107565b611a518a8a86818110611a3257611a32614646565b9050602002016020810190611a479190614146565b82604001516120dd565b50611a5d600182614728565b90506118c2565b50505b611a72600182614728565b905061182a565b50610192819055604080518681526020810183905233917f18fb8b1f79749f3894ec6b996ad0503b2dbcf19585865dba3df7683953fc450d910160405180910390a2505050505050565b60006001600160a01b038216611b2d5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608401610c19565b506001600160a01b031660009081526068602052604090205490565b600054610100900460ff1615808015611b695750600054600160ff909116105b80611b835750303b158015611b83575060005460ff166001145b611be65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610c19565b6000805460ff191660011790558015611c09576000805461ff0019166101001790555b611c526040518060400160405280600881526020016712da5b9d1bc8125160c21b8152506040518060400160405280600781526020016612d2539513d25160ca1b815250612eb3565b611c5a612ee4565b611c62612ee4565b611c6a612ee4565b611c72612ee4565b611c7d6000336128f6565b611c95600080516020614c24833981519152336128f6565b611cbf7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e3336128f6565b611ce97f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1336128f6565b4261019255604080518082018252600781526612da5b9d1bd25160ca1b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff2acf2bff9f153ce27ec66ef28c5d61aaa06a6eac70c4c0de4bac7cb3bec0c54818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c090910190925281519101206101955580156114ac576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150565b6000611e1160076120b2565b8015611eb657506001600160a01b038316600090815261019360205260409020611e619060040161ffff8416600881901c600090815260208390526040902054600160ff83161b16151592915050565b1580611eb657506001600160a01b0383166000908152610198602052604090205415801590611eb657506001600160a01b038316600090815261019860205260409020546203f48090611eb49042614535565b115b9392505050565b600091825260fb602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080611ef483611ac3565b118015610bba5750610bba82610f7b565b6113cc338383612f0d565b6001600160a01b038116600090815261019360205260408082208151610100808252612020820190935260609360039092019281602001602082028036833701905050905060005b610100811015611faa57600881901c600090815260208490526040902054600160ff83161b161515828281518110611f9257611f92614646565b91151560209283029190910190910152600101611f58565b509392505050565b6001600160a01b03821660009081526101936020908152604080832060ff600886901c81168552600390910190925282205460019184169190911b161515611eb6565b611fff3383612877565b61201b5760405162461bcd60e51b8152600401610c1990614561565b610e3984848484612fdb565b6060612032826127aa565b600061203c61300e565b9050600081511161205c5760405180602001604052806000815250611eb6565b806120668461302e565b60405160200161207792919061473b565b6040516020818303038152906040529392505050565b600082815260fb60205260409020600101546120a8816127a0565b610f76838361297c565b60006120c1826201518061476a565b63ffffffff1661019254426120d69190614535565b1092915050565b600080516020614c248339815191526120f5816127a0565b6120fe83611ac3565b60000361211e576040516320e155c960e21b815260040160405180910390fd5b6001600160a01b03831660009081526101936020908152604080832060ff600887901c811685526004820190935292205460019185169190911b1615610e395760ff600884901c811660009081526004830160205260409020805460019286169290921b199091169055600281018054600191906000906121a390849060ff16614792565b92506101000a81548160ff021916908360ff1602179055504281600101819055504261019281905550836001600160a01b03167fe307a82882b02537e8254556f85aa0ae942a060782f1f076028687f1fd7dba188442604051610e3092919061ffff929092168252602082015260400190565b808060400135421061223b57604051630819bdcd60e01b815260040160405180910390fd5b60208101803590610194906000906122539085614146565b6001600160a01b03166001600160a01b03168152602001908152602001600020541461229257604051633ab3447f60e11b815260040160405180910390fd5b6122aa600080516020614c2483398151915233611ebd565b6122c757604051633b136dc160e11b815260040160405180910390fd5b6000806122d76020840184614146565b803b9250905081156122fc57604051631bb5d42560e31b815260040160405180910390fd5b60006101955461237e8561230f906147ab565b805160208083015160409384015184517fce753e2ed199e3bc0c561ccacfe9f2ebd720bf99f6d0e6854d8ec36486eb18c7818501526001600160a01b039094168486015260608401919091526080808401919091528351808403909101815260a0909201909252805191012090565b60405161190160f01b60208201526022810192909252604282015260620160408051601f1981840301815291905280516020909101209050612419816123c76060870187614830565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612409925050506020880188614146565b6001600160a01b031691906130c0565b61243657604051632057875960e21b815260040160405180910390fd5b6124466107646020870187614146565b60000361246657604051634c3215c360e11b815260040160405180910390fd5b6001610194600061247a6020890189614146565b6001600160a01b03166001600160a01b0316815260200190815260200160002060008282546124a99190614728565b909155506124ce90506124c96124c26020880188614146565b60006112bc565b613121565b60006124e06107646020880188614146565b11156124ff5760405163493e98f360e11b815260040160405180910390fd5b6000610193816125126020890189614146565b6001600160a01b031681526020810191909152604001600090812081815560010155505050505050565b7f71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1612566816127a0565b6001600160a01b0382166000908152610193602052604081206002015460ff1690036125b057604051634d05f3e760e01b81526001600160a01b0383166004820152602401610c19565b6001600160a01b0382166000818152610198602052604080822091909155517f8e5e87839bfd57881dc0bf377cc18550ec2476ac488bb95c3aec4792077ea79f906125fe9042815260200190565b60405180910390a25050565b60006001600160e01b03198216637965db0b60e01b1480610bba5750610bba826131c4565b826001600160a01b03166126428261171b565b6001600160a01b0316146126685760405162461bcd60e51b8152600401610c1990614876565b6001600160a01b0382166126ca5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610c19565b6126d783838360016131e9565b826001600160a01b03166126ea8261171b565b6001600160a01b0316146127105760405162461bcd60e51b8152600401610c1990614876565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260688552838620805460001901905590871680865283862080546001019055868652606790945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6114ac81336132a2565b6000818152606760205260409020546001600160a01b03166114ac5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606401610c19565b600081815260696020526040902080546001600160a01b0319166001600160a01b038416908117909155819061283e8261171b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000806128838361171b565b9050806001600160a01b0316846001600160a01b031614806128ca57506001600160a01b038082166000908152606a602090815260408083209388168352929052205460ff165b806128ee5750836001600160a01b03166128e384610e3f565b6001600160a01b0316145b949350505050565b6129008282611ebd565b6113cc57600082815260fb602090815260408083206001600160a01b03851684529091529020805460ff191660011790556129383390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6129868282611ebd565b156113cc57600082815260fb602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e36113cc816127a0565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612a4057610f76836132fb565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a9a575060408051601f3d908101601f19168201909252612a97918101906148bb565b60015b612afd5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608401610c19565b600080516020614c6a8339815191528114612b6c5760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608401610c19565b50610f76838383613397565b8380604001354210612b9d57604051630819bdcd60e01b815260040160405180910390fd5b6020810180359061019490600090612bb59085614146565b6001600160a01b03166001600160a01b031681526020019081526020016000205414612bf457604051633ab3447f60e11b815260040160405180910390fd5b612c0c600080516020614c2483398151915233611ebd565b612c2957604051633b136dc160e11b815260040160405180910390fd5b600080612c396020840184614146565b803b925090508115612c5e57604051631bb5d42560e31b815260040160405180910390fd5b600061019554612c718561230f906147ab565b60405161190160f01b60208201526022810192909252604282015260620160408051601f1981840301815291905280516020909101209050612cba816123c76060870187614830565b612cd757604051632057875960e21b815260040160405180910390fd5b6000612ce961076460208b018b614146565b1115612d085760405163493e98f360e11b815260040160405180910390fd5b600061019381612d1b60208c018c614146565b6001600160a01b031681526020810191909152604001600090812042808255600182015560028101805461ff0019166101008a15150217905591505b87811015612dbc57612db4898983818110612d7457612d74614646565b9050602002016020810190612d8991906148d4565b600881901c60ff9081166000908152600386016020526040902080546001939092169290921b179055565b600101612d57565b506101946000612dcf60208c018c614146565b6001600160a01b0316815260208101919091526040016000908120805491612df68361465c565b90915550612e129050612e0c60208b018b614146565b8b6133bc565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016631fa27f76612e4e60208c018c614146565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602401600060405180830381600087803b158015612e8f57600080fd5b505af1158015612ea3573d6000803e3d6000fd5b5050505050505050505050505050565b600054610100900460ff16612eda5760405162461bcd60e51b8152600401610c19906148ef565b6113cc82826133d6565b600054610100900460ff16612f0b5760405162461bcd60e51b8152600401610c19906148ef565b565b816001600160a01b0316836001600160a01b031603612f6e5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610c19565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b612fe684848461262f565b612ff284848484613416565b610e395760405162461bcd60e51b8152600401610c199061493a565b6060604051806060016040528060268152602001614c4460269139905090565b6060600061303b83613517565b60010190506000816001600160401b0381111561305a5761305a6141c0565b6040519080825280601f01601f191660200182016040528015613084576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461308e57509392505050565b60008060006130cf85856135ef565b909250905060008160048111156130e8576130e861498c565b1480156131065750856001600160a01b0316826001600160a01b0316145b806131175750613117868686613634565b9695505050505050565b600061312c8261171b565b905061313c8160008460016131e9565b6131458261171b565b600083815260696020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526068845282852080546000190190558785526067909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b60006001600160e01b0319821663780e9d6360e01b1480610bba5750610bba82613720565b6001600160a01b038416158061321d57506001600160a01b0384811660009081526101966020526040902054811690841614155b8061322e575061322c84610f7b565b155b801561325357506001600160a01b03841615158061325357506001600160a01b038316155b801561327857506001600160a01b038416158061327857506001600160a01b03831615155b1561329657604051632a675c2b60e11b815260040160405180910390fd5b610e3984848484613770565b6132ac8282611ebd565b6113cc576132b9816138a4565b6132c48360206138b6565b6040516020016132d59291906149a2565b60408051601f198184030181529082905262461bcd60e51b8252610c19916004016140f0565b6001600160a01b0381163b6133685760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610c19565b600080516020614c6a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6133a083613a51565b6000825111806133ad5750805b15610f7657610e398383613a91565b6113cc828260405180602001604052806000815250613ab6565b600054610100900460ff166133fd5760405162461bcd60e51b8152600401610c19906148ef565b60656134098382614a9b565b506066610f768282614a9b565b60006001600160a01b0384163b1561350c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061345a903390899088908890600401614b5a565b6020604051808303816000875af1925050508015613495575060408051601f3d908101601f1916820190925261349291810190614b8d565b60015b6134f2573d8080156134c3576040519150601f19603f3d011682016040523d82523d6000602084013e6134c8565b606091505b5080516000036134ea5760405162461bcd60e51b8152600401610c199061493a565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506128ee565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106135565772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310613582576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106135a057662386f26fc10000830492506010015b6305f5e10083106135b8576305f5e100830492506008015b61271083106135cc57612710830492506004015b606483106135de576064830492506002015b600a8310610bba5760010192915050565b60008082516041036136255760208301516040840151606085015160001a61361987828585613ae9565b9450945050505061362d565b506000905060025b9250929050565b6000806000856001600160a01b0316631626ba7e60e01b868660405160240161365e929190614baa565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b031990941693909317909252905161369c9190614bc3565b600060405180830381855afa9150503d80600081146136d7576040519150601f19603f3d011682016040523d82523d6000602084013e6136dc565b606091505b50915091508180156136f057506020815110155b801561311757508051630b135d3f60e11b9061371590830160209081019084016148bb565b149695505050505050565b60006001600160e01b031982166380ac58cd60e01b148061375157506001600160e01b03198216635b5e139f60e01b145b80610bba57506301ffc9a760e01b6001600160e01b0319831614610bba565b60018111156137df5760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b6064820152608401610c19565b816001600160a01b03851661383b5761383681609980546000838152609a60205260408120829055600182018355919091527f72a152ddfb8e864297c917af52ea6c1c68aead0fee1a62673fcc7e0c94979d000155565b61385e565b836001600160a01b0316856001600160a01b03161461385e5761385e8582613bad565b6001600160a01b03841661387a5761387581613c4a565b61389d565b846001600160a01b0316846001600160a01b03161461389d5761389d8482613cf9565b5050505050565b6060610bba6001600160a01b03831660145b606060006138c5836002614bdf565b6138d0906002614728565b6001600160401b038111156138e7576138e76141c0565b6040519080825280601f01601f191660200182016040528015613911576020820181803683370190505b509050600360fc1b8160008151811061392c5761392c614646565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061395b5761395b614646565b60200101906001600160f81b031916908160001a905350600061397f846002614bdf565b61398a906001614728565b90505b6001811115613a02576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106139be576139be614646565b1a60f81b8282815181106139d4576139d4614646565b60200101906001600160f81b031916908160001a90535060049490941c936139fb81614bf6565b905061398d565b508315611eb65760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610c19565b613a5a816132fb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611eb68383604051806060016040528060278152602001614c8a60279139613d3d565b613ac08383613dab565b613acd6000848484613416565b610f765760405162461bcd60e51b8152600401610c199061493a565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115613b205750600090506003613ba4565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015613b74573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116613b9d57600060019250925050613ba4565b9150600090505b94509492505050565b60006001613bba84611ac3565b613bc49190614535565b600083815260986020526040902054909150808214613c17576001600160a01b03841660009081526097602090815260408083208584528252808320548484528184208190558352609890915290208190555b5060009182526098602090815260408084208490556001600160a01b039094168352609781528383209183525290812055565b609954600090613c5c90600190614535565b6000838152609a602052604081205460998054939450909284908110613c8457613c84614646565b906000526020600020015490508060998381548110613ca557613ca5614646565b6000918252602080832090910192909255828152609a90915260408082208490558582528120556099805480613cdd57613cdd614c0d565b6001900381819060005260206000200160009055905550505050565b6000613d0483611ac3565b6001600160a01b039093166000908152609760209081526040808320868452825280832085905593825260989052919091209190915550565b6060600080856001600160a01b031685604051613d5a9190614bc3565b600060405180830381855af49150503d8060008114613d95576040519150601f19603f3d011682016040523d82523d6000602084013e613d9a565b606091505b509150915061311786838387613f44565b6001600160a01b038216613e015760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610c19565b6000818152606760205260409020546001600160a01b031615613e665760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c19565b613e746000838360016131e9565b6000818152606760205260409020546001600160a01b031615613ed95760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e746564000000006044820152606401610c19565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b60608315613fb3578251600003613fac576001600160a01b0385163b613fac5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610c19565b50816128ee565b6128ee8383815115613fc85781518083602001fd5b8060405162461bcd60e51b8152600401610c1991906140f0565b6001600160e01b0319811681146114ac57600080fd5b60006020828403121561400a57600080fd5b8135611eb681613fe2565b80356001600160a01b038116811461402c57600080fd5b919050565b6000806040838503121561404457600080fd5b61404d83614015565b915061405b60208401614015565b90509250929050565b803561ffff8116811461402c57600080fd5b6000806040838503121561408957600080fd5b61409283614015565b915061405b60208401614064565b60005b838110156140bb5781810151838201526020016140a3565b50506000910152565b600081518084526140dc8160208601602086016140a0565b601f01601f19169290920160200192915050565b602081526000611eb660208301846140c4565b60006020828403121561411557600080fd5b5035919050565b6000806040838503121561412f57600080fd5b61413883614015565b946020939093013593505050565b60006020828403121561415857600080fd5b611eb682614015565b60008060006060848603121561417657600080fd5b61417f84614015565b925061418d60208501614015565b9150604084013590509250925092565b600080604083850312156141b057600080fd5b8235915061405b60208401614015565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126141e757600080fd5b81356001600160401b0380821115614201576142016141c0565b604051601f8301601f19908116603f01168101908282118183101715614229576142296141c0565b8160405283815286602085880101111561424257600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806040838503121561427557600080fd5b61427e83614015565b915060208301356001600160401b0381111561429957600080fd5b6142a5858286016141d6565b9150509250929050565b6000608082840312156142c157600080fd5b50919050565b60008083601f8401126142d957600080fd5b5081356001600160401b038111156142f057600080fd5b6020830191508360208260051b850101111561362d57600080fd5b60008060006040848603121561432057600080fd5b83356001600160401b038082111561433757600080fd5b614343878388016142af565b9450602086013591508082111561435957600080fd5b50614366868287016142c7565b9497909650939450505050565b6000806000806040858703121561438957600080fd5b84356001600160401b03808211156143a057600080fd5b6143ac888389016142c7565b909650945060208701359150808211156143c557600080fd5b506143d2878288016142c7565b95989497509550505050565b8035801515811461402c57600080fd5b6000806040838503121561440157600080fd5b61440a83614015565b915061405b602084016143de565b6020808252825182820181905260009190848201906040850190845b81811015614452578351151583529284019291840191600101614434565b50909695505050505050565b6000806000806080858703121561447457600080fd5b61447d85614015565b935061448b60208601614015565b92506040850135915060608501356001600160401b038111156144ad57600080fd5b6144b9878288016141d6565b91505092959194509250565b6000602082840312156144d757600080fd5b813563ffffffff81168114611eb657600080fd5b6000602082840312156144fd57600080fd5b81356001600160401b0381111561451357600080fd5b6128ee848285016142af565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bba57610bba61451f565b60ff8181168382160190811115610bba57610bba61451f565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c908201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060408201526b6163746976652070726f787960a01b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60006001820161466e5761466e61451f565b5060010190565b6000808335601e1984360301811261468c57600080fd5b8301803591506001600160401b038211156146a657600080fd5b602001915060608102360382131561362d57600080fd5b6000606082840312156146cf57600080fd5b604051606081018181106001600160401b03821117156146f1576146f16141c0565b6040526146fd836143de565b815261470b602084016143de565b602082015261471c60408401614064565b60408201529392505050565b80820180821115610bba57610bba61451f565b6000835161474d8184602088016140a0565b8351908301906147618183602088016140a0565b01949350505050565b63ffffffff81811683821602808216919082811461478a5761478a61451f565b505092915050565b60ff8281168282160390811115610bba57610bba61451f565b6000608082360312156147bd57600080fd5b604051608081016001600160401b0382821081831117156147e0576147e06141c0565b816040526147ed85614015565b83526020850135602084015260408501356040840152606085013591508082111561481757600080fd5b50614824368286016141d6565b60608301525092915050565b6000808335601e1984360301811261484757600080fd5b8301803591506001600160401b0382111561486157600080fd5b60200191503681900382131561362d57600080fd5b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b6000602082840312156148cd57600080fd5b5051919050565b6000602082840312156148e657600080fd5b611eb682614064565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516149da8160178501602088016140a0565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351614a0b8160288401602088016140a0565b01602801949350505050565b600181811c90821680614a2b57607f821691505b6020821081036142c157634e487b7160e01b600052602260045260246000fd5b601f821115610f76576000816000526020600020601f850160051c81016020861015614a745750805b601f850160051c820191505b81811015614a9357828155600101614a80565b505050505050565b81516001600160401b03811115614ab457614ab46141c0565b614ac881614ac28454614a17565b84614a4b565b602080601f831160018114614afd5760008415614ae55750858301515b600019600386901b1c1916600185901b178555614a93565b600085815260208120601f198616915b82811015614b2c57888601518255948401946001909101908401614b0d565b5085821015614b4a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090613117908301846140c4565b600060208284031215614b9f57600080fd5b8151611eb681613fe2565b8281526040602082015260006128ee60408301846140c4565b60008251614bd58184602087016140a0565b9190910192915050565b8082028115828204841417610bba57610bba61451f565b600081614c0557614c0561451f565b506000190190565b634e487b7160e01b600052603160045260246000fdfe6c4079fcac94e7142d8c209744c998efe53a188aadb7e55958f7ad3ea8a1d65268747470733a2f2f6b696e746f2e78797a2f6170692f76312f6e66742d6b696e746f2d69642f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220356a31e8d76a6ff7a107a0b291c0e8fded16a70b0c0fcf53177a6ed3a1d0289a64736f6c634300081800330000000000000000000000008a4720488ca32f1223ccfe5a087e250fe3bc5d750000000000000000000000000719d47a213149e2ef8d3f5afdada8a8e22dfc03", + "nonce": "0x4b86c", + "chainId": "0x1ecf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", "transactionType": "CALL", "contractName": null, - "contractAddress": null, - "function": null, - "arguments": null, + "contractAddress": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "function": "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)", + "arguments": [ + "[(0x2e2B1c42E38f5af81771e65D87729E57ABD1337a, 3858, 0x, 0xb61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe60000000000000000000000007cfe474936fa50181ae7c2c43eeb8806e25bc98300000000000000000000000000000000000000000000000000000000, 4000000, 210000, 21000, 1, 1000000000, 0x0000000000000000000000000000000000000000, 0x4d3de4ef8e2c4121e905d8628cfd62e384db3f18dd05923051acba117396094d6bec31f3355a4700ff969127f206e2240389260aa7412a335dba0f77790381a91b86133a602cbea2d28c0bfcfb891e1c69539ea98b7a55dbce714dc5a6381244f6264c7d48517c0c11388c588a7d2bcfef95365d52811b0dd59d9294b3510ece2a1b)]", + "0x660ad4B5A74130a4796B4d54BC6750Ae93C86e6c" + ], "transaction": { "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "value": "0x0", - "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000a440000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000320000000000000000000000000000000000000000000000000000000000000036000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000164b61d27f60000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c45f9d2301000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000821757f50e8fe774dbb7fa3929c072eba56b76db7b217e5ea14f5cbc82c0b5c41c0a28e720aae15e7ac343835eb40dfc729dfc8e07c8de14051e12801d1b85e8831c84a1fd435e7ecb03a81cb88ad798fce0334d608782941d29665b2d67e49c66493d103e82fa187403731c9ebef018346bae1f1335494d97809e51d097a3b1f73f1b000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x4c95", + "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000f120000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe60000000000000000000000007cfe474936fa50181ae7c2c43eeb8806e25bc98300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000824d3de4ef8e2c4121e905d8628cfd62e384db3f18dd05923051acba117396094d6bec31f3355a4700ff969127f206e2240389260aa7412a335dba0f77790381a91b86133a602cbea2d28c0bfcfb891e1c69539ea98b7a55dbce714dc5a6381244f6264c7d48517c0c11388c588a7d2bcfef95365d52811b0dd59d9294b3510ece2a1b000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4b86d", "chainId": "0x1ecf" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x0ee10f2c231a7703590ac0a8eff238c419203e49d1e4c8f722cfcad5d050ee71", + "hash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", "transactionType": "CALL", "contractName": null, - "contractAddress": null, - "function": null, - "arguments": null, + "contractAddress": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "function": "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)", + "arguments": [ + "[(0x2e2B1c42E38f5af81771e65D87729E57ABD1337a, 3859, 0x, 0xb61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb10000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a00000000000000000000000000000000000000000000000000000000, 4000000, 210000, 21000, 1, 1000000000, 0x0000000000000000000000000000000000000000, 0xcc94fd3192e2c1dabd5b8609874d88a4d27be5f407c21ce9648996b757b71f9863147aa7ab9bd98a96fa5ab4bdaa8d662aafa65ebd791d1a4a2a5a7eb1099ca11c4f7d95956b5bac7423dce8146207fafcff7d1e0f1e891c6c07134cb3dbdd66646ebb8e5bc8adfa8b6e279ecd03310f546a5abde9cc9bb07d5ea6bf17317dec351c)]", + "0x660ad4B5A74130a4796B4d54BC6750Ae93C86e6c" + ], + "transaction": { + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "value": "0x0", + "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000f130000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb10000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082cc94fd3192e2c1dabd5b8609874d88a4d27be5f407c21ce9648996b757b71f9863147aa7ab9bd98a96fa5ab4bdaa8d662aafa65ebd791d1a4a2a5a7eb1099ca11c4f7d95956b5bac7423dce8146207fafcff7d1e0f1e891c6c07134cb3dbdd66646ebb8e5bc8adfa8b6e279ecd03310f546a5abde9cc9bb07d5ea6bf17317dec351c000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4b86e", + "chainId": "0x1ecf" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "function": "handleOps((address,uint256,bytes,bytes,uint256,uint256,uint256,uint256,uint256,bytes,bytes)[],address)", + "arguments": [ + "[(0x2e2B1c42E38f5af81771e65D87729E57ABD1337a, 3860, 0x, 0xb61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1000000000000000000000000010600ff5f36c8ef3b6aaf2a88c2de85c798594a00000000000000000000000000000000000000000000000000000000, 4000000, 210000, 21000, 1, 1000000000, 0x0000000000000000000000000000000000000000, 0xcdf1b5c5d54c1ee370e9ce0f44acbdf00d61e03a82005e786bc4153f243b28e7613c73505b805dd4d66d78b12e9a0af582652905e3547611d4453178ecbf03061b6e0d18215759d34e62650b5f7d553818392ed559e2d14e0779516fe57ca23c5b11d9719f6449b02d2bec206b2072c97bf43622153e19d86e50e47e65b94363fc1b)]", + "0x660ad4B5A74130a4796B4d54BC6750Ae93C86e6c" + ], "transaction": { "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "value": "0x0", - "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000a450000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca00000000000000000000000000000000000000000000000000000000000000028000000000000000000000000000000000000000000000000000000000000002c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000243659cfe6000000000000000000000000d3642f5cf57a5090f173294f68df66583521fea000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000822e3eb2924e79e907ad9118f92c30ff9078f7fd340c3893c508b64893966c113444d601a9de3e426a101bc858b4863f56108388cb1f3cb4f10f858641a61002571cb2432b6b9a8d7fd54e9f6248c41f5bdefa76a1e8f9876c45670229a0ae99fe375d471974acb6750dea5d12d62ab595e5d84ce446c633ae160bc6c876ee4294bc1c000000000000000000000000000000000000000000000000000000000000", - "nonce": "0x4c96", + "input": "0x1fad948c0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000660ad4b5a74130a4796b4d54bc6750ae93c86e6c000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a0000000000000000000000000000000000000000000000000000000000000f140000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000003d0900000000000000000000000000000000000000000000000000000000000003345000000000000000000000000000000000000000000000000000000000000052080000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000003b9aca0000000000000000000000000000000000000000000000000000000000000002a000000000000000000000000000000000000000000000000000000000000002e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e4b61d27f6000000000000000000000000f369f78e3a0492cc4e96a90dae0728a38498e9c70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000442f2ff15d71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1000000000000000000000000010600ff5f36c8ef3b6aaf2a88c2de85c798594a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000082cdf1b5c5d54c1ee370e9ce0f44acbdf00d61e03a82005e786bc4153f243b28e7613c73505b805dd4d66d78b12e9a0af582652905e3547611d4453178ecbf03061b6e0d18215759d34e62650b5f7d553818392ed559e2d14e0779516fe57ca23c5b11d9719f6449b02d2bec206b2072c97bf43622153e19d86e50e47e65b94363fc1b000000000000000000000000000000000000000000000000000000000000", + "nonce": "0x4b86f", "chainId": "0x1ecf" }, "additionalContracts": [], @@ -40,7 +88,39 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x112efc", + "cumulativeGasUsed": "0x6e0942", + "logs": [ + { + "address": "0x7cfe474936fa50181ae7c2c43eeb8806e25bc983", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000ff", + "blockHash": "0xf3e9b3199aea422a64b3bc8564d3ae7ca609f1100928bec80e7dd147e0cddba7", + "blockNumber": "0x91593", + "transactionHash": "0xd17af031c598da65cd4893e4a2b3cfd74a6451b03e196950d95d42b0d6f96232", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000002000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000040000000400000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xd17af031c598da65cd4893e4a2b3cfd74a6451b03e196950d95d42b0d6f96232", + "transactionIndex": "0x1", + "blockHash": "0xf3e9b3199aea422a64b3bc8564d3ae7ca609f1100928bec80e7dd147e0cddba7", + "blockNumber": "0x91593", + "gasUsed": "0x6e0942", + "effectiveGasPrice": "0x5f5e100", + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c", + "contractAddress": null, + "gasUsedForL1": "0x2bc7e5", + "l1BlockNumber": "0x145b7ac" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x4cbed", "logs": [ { "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", @@ -48,47 +128,125 @@ "0xbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972" ], "data": "0x", - "blockHash": "0xd560a03e12f1d6c9c3ec796c0fe8bd4502b0ec06f8af9ce15566b548cc1bae09", - "blockNumber": "0x38c17", - "transactionHash": "0xa9f39526d2950582ab4958b2e68579d49a8a63b9781c7a7f40af3ed028d06700", + "blockHash": "0x5d003beb78a1844ed54b1ffd99a06071012801b3e7fe244ffa0e80f357251a4b", + "blockNumber": "0x91594", + "transactionHash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", "transactionIndex": "0x1", "logIndex": "0x0", "removed": false }, + { + "address": "0xf369f78e3a0492cc4e96a90dae0728a38498e9c7", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000007cfe474936fa50181ae7c2c43eeb8806e25bc983" + ], + "data": "0x", + "blockHash": "0x5d003beb78a1844ed54b1ffd99a06071012801b3e7fe244ffa0e80f357251a4b", + "blockNumber": "0x91594", + "transactionHash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", + "transactionIndex": "0x1", + "logIndex": "0x1", + "removed": false + }, { "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "topics": [ "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f", - "0xbd215ebb4e3152c5e3bea660ee4e432716193a6ae39d3986b5bc066efe40ecce", + "0x9524dba06243a217462d096b861b474032e32e7c41093d2c8c78e1643bc06e57", "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", "0x0000000000000000000000000000000000000000000000000000000000000000" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000a4400000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000084ec70000000000000000000000000000000000000000000000000000000000084ec7", - "blockHash": "0xd560a03e12f1d6c9c3ec796c0fe8bd4502b0ec06f8af9ce15566b548cc1bae09", - "blockNumber": "0x38c17", - "transactionHash": "0xa9f39526d2950582ab4958b2e68579d49a8a63b9781c7a7f40af3ed028d06700", + "data": "0x0000000000000000000000000000000000000000000000000000000000000f1200000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000083bae0000000000000000000000000000000000000000000000000000000000083bae", + "blockHash": "0x5d003beb78a1844ed54b1ffd99a06071012801b3e7fe244ffa0e80f357251a4b", + "blockNumber": "0x91594", + "transactionHash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", + "transactionIndex": "0x1", + "logIndex": "0x2", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000004400000000000000000004000000000000008000000000000000000010000000000000000000000000000020000000000008000000000000000000000000002000000000000000010000000000000000800000000020000000000000020000800002000000000000000000000000000800000000000000000000008000000800000000000000002000000000000000000000400000000000000400000000000000000000000000000000002000000000000000020000000100001000000000000000000000000000002000000000020000000000000010000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x393717142a85ed552e3d455cd886d11abe37095fa7f7be1dd1db7214a65a74dd", + "transactionIndex": "0x1", + "blockHash": "0x5d003beb78a1844ed54b1ffd99a06071012801b3e7fe244ffa0e80f357251a4b", + "blockNumber": "0x91594", + "gasUsed": "0x4cbed", + "effectiveGasPrice": "0x5f5e100", + "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", + "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "contractAddress": null, + "gasUsedForL1": "0x23723", + "l1BlockNumber": "0x145b7ac" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x526ae", + "logs": [ + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0xbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972" + ], + "data": "0x", + "blockHash": "0x0b698a3c771b13b989d37d298bdcbeedb3ade9e8a5ff1ac934430eec032c92e9", + "blockNumber": "0x91595", + "transactionHash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", + "transactionIndex": "0x1", + "logIndex": "0x0", + "removed": false + }, + { + "address": "0xf369f78e3a0492cc4e96a90dae0728a38498e9c7", + "topics": [ + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a" + ], + "data": "0x", + "blockHash": "0x0b698a3c771b13b989d37d298bdcbeedb3ade9e8a5ff1ac934430eec032c92e9", + "blockNumber": "0x91595", + "transactionHash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", "transactionIndex": "0x1", "logIndex": "0x1", "removed": false + }, + { + "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", + "topics": [ + "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f", + "0xe8d37ccc129651e557c06738a29e912eb017c451583dbaff4d9225ccd98e50a8", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", + "0x0000000000000000000000000000000000000000000000000000000000000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000f13000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000876370000000000000000000000000000000000000000000000000000000000087637", + "blockHash": "0x0b698a3c771b13b989d37d298bdcbeedb3ade9e8a5ff1ac934430eec032c92e9", + "blockNumber": "0x91595", + "transactionHash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", + "transactionIndex": "0x1", + "logIndex": "0x2", + "removed": false } ], - "logsBloom": "0x00000000000800000000000000000000000000000000000000000000000000000008000000000000000000010000000000000000000000000000020000000000000000000000100000000000000000000000000000000000000000000000000800000000020000000000000000000800002000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000400000000000000400000000000000000000000000000000002000000000000000000000000100001000000000000400000000000000000000000000020000000000000010000000000000000000000000000000000000000000000000000", + "logsBloom": "0x00000004000000000000000000000004800000001000000000000000000000000008000000000000000000010000000000000000000000000000020000000000008000000000000000000000000000000000000000000010000000000000000800000000020000000000000000000800002040000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000400000000000000400000000000000000000000000000001002000000000000000000000000302001000000000000000000000000000100000000000020000001000000010000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0xa9f39526d2950582ab4958b2e68579d49a8a63b9781c7a7f40af3ed028d06700", + "transactionHash": "0x200714fcd3cb67959d38bb4125381e014f2f27883cb8154b927eaaea97b82f18", "transactionIndex": "0x1", - "blockHash": "0xd560a03e12f1d6c9c3ec796c0fe8bd4502b0ec06f8af9ce15566b548cc1bae09", - "blockNumber": "0x38c17", - "gasUsed": "0x112efc", + "blockHash": "0x0b698a3c771b13b989d37d298bdcbeedb3ade9e8a5ff1ac934430eec032c92e9", + "blockNumber": "0x91595", + "gasUsed": "0x526ae", "effectiveGasPrice": "0x5f5e100", "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "contractAddress": null, - "gasUsedForL1": "0xe80e8", - "l1BlockNumber": "0x1400964" + "gasUsedForL1": "0x24ecf", + "l1BlockNumber": "0x145b7ac" }, { "status": "0x1", - "cumulativeGasUsed": "0x110503", + "cumulativeGasUsed": "0x53a24", "logs": [ { "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", @@ -96,9 +254,9 @@ "0xbb47ee3e183a558b1a2ff0874b079f3fc5478b7454eacf2bfc5af2ff5878f972" ], "data": "0x", - "blockHash": "0x90138ec2e8b3c1a51794568fbd9b4a6e31b3e7145be0ef4309fb1211106f2eb5", - "blockNumber": "0x38c18", - "transactionHash": "0x0ee10f2c231a7703590ac0a8eff238c419203e49d1e4c8f722cfcad5d050ee71", + "blockHash": "0xc314fcfd65e55126045c4a41beaa38a9b5633b4b0c19336061b0e182accf6ecf", + "blockNumber": "0x91596", + "transactionHash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", "transactionIndex": "0x1", "logIndex": "0x0", "removed": false @@ -106,13 +264,15 @@ { "address": "0xf369f78e3a0492cc4e96a90dae0728a38498e9c7", "topics": [ - "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000d3642f5cf57a5090f173294f68df66583521fea0" + "0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d", + "0x71840dc4906352362b0cdaf79870196c8e42acafade72d5d5a6d59291253ceb1", + "0x000000000000000000000000010600ff5f36c8ef3b6aaf2a88c2de85c798594a", + "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a" ], "data": "0x", - "blockHash": "0x90138ec2e8b3c1a51794568fbd9b4a6e31b3e7145be0ef4309fb1211106f2eb5", - "blockNumber": "0x38c18", - "transactionHash": "0x0ee10f2c231a7703590ac0a8eff238c419203e49d1e4c8f722cfcad5d050ee71", + "blockHash": "0xc314fcfd65e55126045c4a41beaa38a9b5633b4b0c19336061b0e182accf6ecf", + "blockNumber": "0x91596", + "transactionHash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", "transactionIndex": "0x1", "logIndex": "0x1", "removed": false @@ -121,38 +281,38 @@ "address": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "topics": [ "0x49628fd1471006c1482da88028e9ce4dbb080b815c9b0344d39e5a8e6ec1419f", - "0x9ef16c31858ed8306e1ccf4ff1be8a4aba759b0d1ef5ebddd3967e9a1e1c0d86", + "0xc24e49c960f23590b5665c7daba685679d5afc1908e5c2580b0ea6f390369406", "0x0000000000000000000000002e2b1c42e38f5af81771e65d87729e57abd1337a", "0x0000000000000000000000000000000000000000000000000000000000000000" ], - "data": "0x0000000000000000000000000000000000000000000000000000000000000a450000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000008319d000000000000000000000000000000000000000000000000000000000008319d", - "blockHash": "0x90138ec2e8b3c1a51794568fbd9b4a6e31b3e7145be0ef4309fb1211106f2eb5", - "blockNumber": "0x38c18", - "transactionHash": "0x0ee10f2c231a7703590ac0a8eff238c419203e49d1e4c8f722cfcad5d050ee71", + "data": "0x0000000000000000000000000000000000000000000000000000000000000f14000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000876370000000000000000000000000000000000000000000000000000000000087637", + "blockHash": "0xc314fcfd65e55126045c4a41beaa38a9b5633b4b0c19336061b0e182accf6ecf", + "blockNumber": "0x91596", + "transactionHash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", "transactionIndex": "0x1", "logIndex": "0x2", "removed": false } ], - "logsBloom": "0x00000000000000000000000000000004400000000000000000040000000000000008000000000000000000010200000000000000000000000000020000000000008000000000000000000000010002000000000000000010000000000000000800000000020000000000000000000800002000000000000000000000000008000000000000000000000000000000800000000000000000000000000000000000000400000010000000400000000000000000000000000000000002000000000000000020000000100001000000000000000000000000000000000000000020000000000000010000000000000000000000000000000020000000000000000000", + "logsBloom": "0x00100004000000002000000000000004800000000000000000000000000000000008000000000000000000010000000000000000000000000000020000000000008000000000000000000000000000000000000000000010000000000000000800000000020000000000000000000800002040000000000000000000000000000000000000000000000000000000800000000000000080000000020000000000000400000020000000400000000000000000000000000000001002000000000000000000000000300001000000000000000000000000000100000000000020000000000000010000000000000000000000000000000000000000000000000004", "type": "0x2", - "transactionHash": "0x0ee10f2c231a7703590ac0a8eff238c419203e49d1e4c8f722cfcad5d050ee71", + "transactionHash": "0xb92881b33f7b8c3a043216dc0ddde353fe43d3d2a105c13e80c16da52a6a23ec", "transactionIndex": "0x1", - "blockHash": "0x90138ec2e8b3c1a51794568fbd9b4a6e31b3e7145be0ef4309fb1211106f2eb5", - "blockNumber": "0x38c18", - "gasUsed": "0x110503", + "blockHash": "0xc314fcfd65e55126045c4a41beaa38a9b5633b4b0c19336061b0e182accf6ecf", + "blockNumber": "0x91596", + "gasUsed": "0x53a24", "effectiveGasPrice": "0x5f5e100", "from": "0x660ad4b5a74130a4796b4d54bc6750ae93c86e6c", "to": "0x2843c269d2a64ecfa63548e8b3fc0fd23b7f70cb", "contractAddress": null, - "gasUsedForL1": "0xe7a3e", - "l1BlockNumber": "0x1400964" + "gasUsedForL1": "0x2625d", + "l1BlockNumber": "0x145b7ac" } ], "libraries": [], "pending": [], "returns": {}, - "timestamp": 1729031049, + "timestamp": 1733521441, "chain": 7887, - "commit": "a14044d6" + "commit": "7a226c7" } \ No newline at end of file diff --git a/script/migrations/135-upgrade_faucet_id.s.sol b/script/migrations/135-upgrade_faucet_id.s.sol index a5112086..ebc07725 100644 --- a/script/migrations/135-upgrade_faucet_id.s.sol +++ b/script/migrations/135-upgrade_faucet_id.s.sol @@ -1,36 +1,43 @@ // SPDX-License-Identifier: MIT pragma solidity ^0.8.18; -import {Faucet} from "../../src/Faucet.sol"; import {KintoID} from "../../src/KintoID.sol"; import {MigrationHelper} from "@kinto-core-script/utils/MigrationHelper.sol"; +import "@openzeppelin/contracts/access/IAccessControl.sol"; -contract UpgradeKintoIDFaucetDeployScript is MigrationHelper { +contract UpgradeKintoIDScript is MigrationHelper { function run() public override { super.run(); - // bytes memory bytecode = abi.encodePacked( - // type(KintoID).creationCode, - // abi.encode( - // _getChainDeployment("KintoWalletFactory"), - // _getChainDeployment("Faucet") - // ) - // ); + bytes memory bytecode = abi.encodePacked( + type(KintoID).creationCode, + abi.encode( + _getChainDeployment("KintoWalletFactory"), + _getChainDeployment("Faucet") + ) + ); - // address impl = _deployImplementationAndUpgrade("KintoID", "V8", bytecode); - // saveContractAddress("KintoIDV8-impl", impl); + address impl = _deployImplementationAndUpgrade("KintoID", "V9", bytecode); + saveContractAddress("KintoIDV9-impl", impl); - // bytecode = abi.encodePacked( - // type(Faucet).creationCode, - // abi.encode(_getChainDeployment("KintoWalletFactory")) - // ); + KintoID kintoID = KintoID(_getChainDeployment("KintoID")); + address nioGovernor = _getChainDeployment("NioGovernor"); + bytes32 governanceRole = kintoID.GOVERNANCE_ROLE(); - // impl = _deployImplementationAndUpgrade("Faucet", "V9", bytecode); - // saveContractAddress("FaucetV9-impl", impl); + assertFalse(kintoID.hasRole(governanceRole, kintoAdminWallet)); + assertFalse(kintoID.hasRole(governanceRole, nioGovernor)); - // vm.broadcast(deployerPrivateKey); - KintoID kintoID = KintoID(_getChainDeployment("KintoID")); - _whitelistApp(address(kintoID)); - _upgradeTo(address(kintoID), _getChainDeployment("KintoIDV8-impl"), deployerPrivateKey); + _handleOps( + abi.encodeWithSelector(IAccessControl.grantRole.selector, governanceRole, kintoAdminWallet), address(kintoID) + ); + + _handleOps( + abi.encodeWithSelector(IAccessControl.grantRole.selector, governanceRole, nioGovernor), address(kintoID) + ); + + assertTrue(kintoID.hasRole(kintoID.GOVERNANCE_ROLE(), kintoAdminWallet)); + assertTrue(kintoID.hasRole(kintoID.GOVERNANCE_ROLE(), nioGovernor)); + + assertTrue(kintoID.isKYC(deployer)); } } diff --git a/src/KintoID.sol b/src/KintoID.sol index 436f12f6..e0f3dd20 100644 --- a/src/KintoID.sol +++ b/src/KintoID.sol @@ -33,47 +33,114 @@ contract KintoID is using SignatureChecker for address; /* ============ Events ============ */ + + /** + * @notice Emitted when a trait is added to an account + * @param _to Address receiving the trait + * @param _traitIndex Index of the trait being added + * @param _timestamp Time when the trait was added + */ event TraitAdded(address indexed _to, uint16 _traitIndex, uint256 _timestamp); + + /** + * @notice Emitted when a trait is removed from an account + * @param _to Address losing the trait + * @param _traitIndex Index of the trait being removed + * @param _timestamp Time when the trait was removed + */ event TraitRemoved(address indexed _to, uint16 _traitIndex, uint256 _timestamp); + + /** + * @notice Emitted when a sanction is added to an account + * @param _to Address receiving the sanction + * @param _sanctionIndex Index of the sanction being added + * @param _timestamp Time when the sanction was added + */ event SanctionAdded(address indexed _to, uint16 _sanctionIndex, uint256 _timestamp); + + /** + * @notice Emitted when a sanction is removed from an account + * @param _to Address losing the sanction + * @param _sanctionIndex Index of the sanction being removed + * @param _timestamp Time when the sanction was removed + */ event SanctionRemoved(address indexed _to, uint16 _sanctionIndex, uint256 _timestamp); + + /** + * @notice Emitted when accounts are monitored for sanctions + * @param _signer Address that performed the monitoring + * @param _accountsCount Number of accounts monitored + * @param _timestamp Time when monitoring was performed + */ event AccountsMonitoredAt(address indexed _signer, uint256 _accountsCount, uint256 _timestamp); + /** + * @notice Emitted when a sanction is confirmed by governance + * @param account Address whose sanction was confirmed + * @param timestamp Time when the sanction was confirmed + */ + event SanctionConfirmed(address indexed account, uint256 timestamp); + /* ============ Constants & Immutables ============ */ + /// @notice Role identifier for KYC providers bytes32 public constant override KYC_PROVIDER_ROLE = keccak256("KYC_PROVIDER_ROLE"); + + /// @notice Role identifier for contract upgraders bytes32 public constant override UPGRADER_ROLE = keccak256("UPGRADER_ROLE"); + /// @notice Role identifier for governance actions + bytes32 public constant override GOVERNANCE_ROLE = keccak256("GOVERNANCE_ROLE"); + + /// @notice Address of the wallet factory contract + address public immutable override walletFactory; + + /// @notice Address of the faucet contract + address public immutable override faucet; + /* ============ State Variables ============ */ + /// @notice Counter for the next token ID to be minted uint256 private _nextTokenId; - // We'll monitor the whole list every single day and update it + /// @notice Timestamp of the last sanction monitoring update uint256 public override lastMonitoredAt; - // Metadata for each minted token + /// @notice Mapping of addresses to their KYC metadata mapping(address => IKintoID.Metadata) internal _kycmetas; - /// @dev We include a nonce in every hashed message, and increment the nonce as part of a - /// state-changing operation, so as to prevent replay attacks, i.e. the reuse of a signature. + /// @notice Mapping of addresses to their current nonce for signature verification mapping(address => uint256) public override nonces; + /// @notice EIP-712 domain separator bytes32 public override domainSeparator; - // Indicates which accounts are allowed to transfer their Kinto ID to another account + /// @notice Mapping of accounts to their approved recovery target addresses mapping(address => address) public override recoveryTargets; - address public immutable override walletFactory; - address public immutable override faucet; + /// @notice DEPRECATED: Previous wallet factory address + address private __walletFactory; + + /// @notice Mapping of addresses to their last sanction application timestamp + mapping(address => uint256) public sanctionedAt; + /* ============ Constructor & Initializers ============ */ - /// @custom:oz-upgrades-unsafe-allow constructor + /** + * @notice Creates a new instance of the KintoID contract + * @param _walletFactory Address of the KintoWalletFactory contract + * @param _faucet Address of the Faucet contract + */ constructor(address _walletFactory, address _faucet) { _disableInitializers(); walletFactory = _walletFactory; faucet = _faucet; } + /** + * @notice Initializes the contract with initial admin and role settings + * @dev Sets up ERC721 metadata, grants initial roles, and initializes monitoring timestamp + */ function initialize() external initializer { __ERC721_init("Kinto ID", "KINTOID"); __ERC721Enumerable_init(); @@ -84,6 +151,7 @@ contract KintoID is _grantRole(DEFAULT_ADMIN_ROLE, msg.sender); _grantRole(KYC_PROVIDER_ROLE, msg.sender); _grantRole(UPGRADER_ROLE, msg.sender); + _grantRole(GOVERNANCE_ROLE, msg.sender); lastMonitoredAt = block.timestamp; domainSeparator = _domainSeparator(); @@ -125,9 +193,10 @@ contract KintoID is /* ============ Mint & Burn ============ */ /** - * @dev Mints a new individual KYC token. - * @param _signatureData Signature data - * @param _traits Traits to be added to the account. + * @notice Mints a new KYC token for an individual + * @dev Can only be called by an approved KYC provider with valid signature + * @param _signatureData The signature data for verification + * @param _traits Array of trait IDs to assign to the account */ function mintIndividualKyc(IKintoID.SignatureData calldata _signatureData, uint16[] calldata _traits) external @@ -138,9 +207,10 @@ contract KintoID is } /** - * @dev Mints a new company KYC token. - * @param _signatureData Signature data - * @param _traits Traits to be added to the account. + * @notice Mints a new KYC token for a company + * @dev Can only be called by an approved KYC provider with valid signature + * @param _signatureData The signature data for verification + * @param _traits Array of trait IDs to assign to the account */ function mintCompanyKyc(IKintoID.SignatureData calldata _signatureData, uint16[] calldata _traits) external @@ -182,9 +252,10 @@ contract KintoID is /* ============ Burn ============ */ /** - * @dev Transfers the NFT from the old account to the new account - * @param _from Old address - * @param _to New address + * @notice Transfers KYC credentials during account recovery + * @dev Only callable by wallet factory or admin role + * @param _from Address to transfer from + * @param _to Address to transfer to */ function transferOnRecovery(address _from, address _to) external override { require(balanceOf(_from) > 0 && balanceOf(_to) == 0, "Invalid transfer"); @@ -205,8 +276,9 @@ contract KintoID is } /** - * @dev Burns a KYC token. - * @param _signatureData Signature data + * @notice Burns a KYC token + * @dev Can only be called by an approved KYC provider with valid signature + * @param _signatureData The signature data for verification */ function burnKYC(SignatureData calldata _signatureData) external override onlySignerVerified(_signatureData) { if (balanceOf(_signatureData.signer) == 0) revert NothingToBurn(); @@ -224,13 +296,14 @@ contract KintoID is /* ============ Sanctions & traits ============ */ /** + * @notice Updates sanctions and traits for multiple accounts * @dev Updates the accounts that have flags or sanctions. Only by the KYC provider role. * This method will be called with empty accounts if there are not traits/sanctions to add. * Realistically only 1% of the accounts will ever be flagged and a small % of this will happen in the same day. * As a consequence, 200 accounts should be enough even when we have 100k users. * 200 accounts should fit in the 8M gas limit. - * @param _accounts accounts to be updated. - * @param _traitsAndSanctions traits and sanctions to be updated. + * @param _accounts Array of account addresses to update + * @param _traitsAndSanctions Array of trait and sanction updates for each account */ function monitor(address[] calldata _accounts, IKintoID.MonitorUpdateData[][] calldata _traitsAndSanctions) external @@ -268,9 +341,10 @@ contract KintoID is } /** - * @dev Adds a trait to the account. Only by the KYC provider role. - * @param _account account to be added the trait to. - * @param _traitId trait id to be added. + * @notice Adds a trait to an account + * @dev Only callable by KYC provider role + * @param _account Address of the account + * @param _traitId ID of the trait to add */ function addTrait(address _account, uint16 _traitId) public override onlyRole(KYC_PROVIDER_ROLE) { if (balanceOf(_account) == 0) revert KYCRequired(); @@ -285,9 +359,10 @@ contract KintoID is } /** - * @dev Removes a trait from the account. Only by the KYC provider role. - * @param _account account to be removed the trait from. - * @param _traitId trait id to be removed. + * @notice Removes a trait from an account + * @dev Only callable by KYC provider role + * @param _account Address of the account + * @param _traitId ID of the trait to remove */ function removeTrait(address _account, uint16 _traitId) public override onlyRole(KYC_PROVIDER_ROLE) { if (balanceOf(_account) == 0) revert KYCRequired(); @@ -302,9 +377,10 @@ contract KintoID is } /** - * @dev Adds a sanction to the account. Only by the KYC provider role. - * @param _account account to be added the sanction to. - * @param _countryId country id to be added. + * @notice Adds a sanction to an account + * @dev Only callable by KYC provider role. Initiates a 3-day confirmation period. + * @param _account Address of the account + * @param _countryId ID of the country issuing the sanction */ function addSanction(address _account, uint16 _countryId) public override onlyRole(KYC_PROVIDER_ROLE) { if (balanceOf(_account) == 0) revert KYCRequired(); @@ -315,13 +391,17 @@ contract KintoID is meta.updatedAt = block.timestamp; lastMonitoredAt = block.timestamp; emit SanctionAdded(_account, _countryId, block.timestamp); + + // Set the timestamp when the sanction was added + sanctionedAt[_account] = block.timestamp; } } /** - * @dev Removes a sanction from the account. Only by the KYC provider role. - * @param _account account to be removed the sanction from. - * @param _countryId country id to be removed. + * @notice Removes a sanction from an account + * @dev Only callable by KYC provider role + * @param _account Address of the account + * @param _countryId ID of the country whose sanction is being removed */ function removeSanction(address _account, uint16 _countryId) public override onlyRole(KYC_PROVIDER_ROLE) { if (balanceOf(_account) == 0) revert KYCRequired(); @@ -338,83 +418,112 @@ contract KintoID is /* ============ View Functions ============ */ /** - * @dev Returns whether the account holder is KYCd - * @param _account account to be checked. - * @return true if the account has KYC token. + * @notice Checks if an account has passed KYC + * @dev Returns false if the account has no token or has active sanctions + * @param _account Address to check + * @return bool True if the account is KYC verified and has no active sanctions */ function isKYC(address _account) external view override returns (bool) { return balanceOf(_account) > 0 && isSanctionsSafe(_account); } /** - * @dev Returns whether the account was monitored in the last x days. - * @param _days Days to be checked. - * @return true if the account was monitored in the last x days. + * @notice Checks if sanctions monitoring is up to date + * @param _days Number of days to consider for monitoring freshness + * @return bool True if sanctions were monitored within the specified period */ function isSanctionsMonitored(uint32 _days) public view virtual override returns (bool) { return block.timestamp - lastMonitoredAt < _days * (1 days); } /** - * @dev Returns whether the account is sanctions safe. - * @param _account account to be checked. - * @return true if the account is sanctions safe. + * @notice Checks if an account has active sanctions + * @dev Account is considered safe if sanctions are not confirmed within 3 days + * @param _account Address to check + * @return bool True if the account has no active sanctions */ function isSanctionsSafe(address _account) public view virtual override returns (bool) { - return isSanctionsMonitored(7) && _kycmetas[_account].sanctionsCount == 0; + // If the sanction is not confirmed within 3 days, consider the account sanctions safe + return isSanctionsMonitored(7) + && ( + _kycmetas[_account].sanctionsCount == 0 + || (sanctionedAt[_account] != 0 && (block.timestamp - sanctionedAt[_account]) > 3 days) + ); } /** - * @dev Returns whether the account is sanctions safe in a given country. - * @param _account account to be checked. - * @param _countryId country id to be checked. - * @return true if the account is sanctions safe in a given country. + * @notice Checks if an account is sanctioned in a specific country + * @dev Account is considered safe if sanction is not confirmed within 3 days + * @param _account Address to check + * @param _countryId ID of the country to check sanctions for + * @return bool True if the account is not sanctioned in the specified country */ function isSanctionsSafeIn(address _account, uint16 _countryId) external view virtual override returns (bool) { - return isSanctionsMonitored(7) && !_kycmetas[_account].sanctions.get(_countryId); + // If the sanction is not confirmed within 3 days, consider the account sanctions safe + return isSanctionsMonitored(7) + && ( + !_kycmetas[_account].sanctions.get(_countryId) + || (sanctionedAt[_account] != 0 && (block.timestamp - sanctionedAt[_account]) > 3 days) + ); + } + + /** + * @notice Confirms a sanction, making it permanent + * @dev Only callable by governance role. Reverts if no active sanction exists. + * @param _account Address of the account whose sanction is being confirmed + */ + function confirmSanction(address _account) external onlyRole(GOVERNANCE_ROLE) { + // Check that there's an active sanction + if (_kycmetas[_account].sanctionsCount == 0) { + revert NoActiveSanction(_account); + } + + // Reset sanction timestamp to make the sanction indefinite + sanctionedAt[_account] = 0; + emit SanctionConfirmed(_account, block.timestamp); } /** - * @dev Returns whether the KYC account is a company - * @param _account account to be checked. - * @return true if the account is a company. + * @notice Checks if an account is registered as a company + * @param _account Address to check + * @return bool True if the account is registered as a company */ function isCompany(address _account) external view override returns (bool) { return !_kycmetas[_account].individual; } /** - * @dev Returns whether the KYC account is an individual - * @param _account account to be checked. - * @return true if the account is an indivdual. + * @notice Checks if an account is registered as an individual + * @param _account Address to check + * @return bool True if the account is registered as an individual */ function isIndividual(address _account) external view override returns (bool) { return _kycmetas[_account].individual; } /** - * @dev Returns the timestamp when the KYC token was minted - * @param _account account to be checked. - * @return timestamp when the KYC token was minted. + * @notice Gets the timestamp when an account's KYC was minted + * @param _account Address to check + * @return uint256 Timestamp when the KYC token was minted */ function mintedAt(address _account) external view override returns (uint256) { return _kycmetas[_account].mintedAt; } /** - * @dev Returns whether the account has a given trait. - * @param _account account to be checked. - * @param index index of the trait to be checked. - * @return true if the account has the trait. + * @notice Checks if an account has a specific trait + * @param _account Address to check + * @param index ID of the trait to check + * @return bool True if the account has the specified trait */ function hasTrait(address _account, uint16 index) external view override returns (bool) { return _kycmetas[_account].traits.get(index); } /** - * @dev Returns an array of 256 booleans representing the traits of the account. - * @param _account account to be checked. - * @return array of 256 booleans representing the traits of the account. + * @notice Gets all traits for an account + * @param _account Address to check + * @return bool[] Array of traits where true indicates the trait is present */ function traits(address _account) external view override returns (bool[] memory) { BitMapsUpgradeable.BitMap storage tokenTraits = _kycmetas[_account].traits; @@ -520,6 +629,6 @@ contract KintoID is } } -contract KintoIDV8 is KintoID { +contract KintoIDV9 is KintoID { constructor(address _walletFactory, address _faucet) KintoID(_walletFactory, _faucet) {} } diff --git a/src/interfaces/IKintoID.sol b/src/interfaces/IKintoID.sol index c362af9b..51239875 100644 --- a/src/interfaces/IKintoID.sol +++ b/src/interfaces/IKintoID.sol @@ -5,18 +5,45 @@ import "@openzeppelin/contracts-upgradeable/utils/structs/BitMapsUpgradeable.sol interface IKintoID { /* ============ Errors ============ */ + + /// @notice Thrown when trying to interact with an account that has a positive balance error BalanceNotZero(); - error MethodNotAllowed(string reason); + + /// @notice Thrown when trying to burn a non-existent token error NothingToBurn(); + + /// @notice Thrown when arrays have mismatched lengths error LengthMismatch(); + + /// @notice Thrown when monitoring update exceeds maximum allowed accounts error AccountsAmountExceeded(); + + /// @notice Thrown when trying to confirm a sanction for an account with no active sanctions + error NoActiveSanction(address account); + + /// @notice Thrown when an account lacks required KYC verification error KYCRequired(); + + /// @notice Thrown when signature verification fails + error InvalidSigner(); + + /// @notice Thrown when the signature has expired error SignatureExpired(); + + /// @notice Thrown when the nonce is invalid error InvalidNonce(); + + /// @notice Thrown when the sender is not an authorized KYC provider error InvalidProvider(); + + /// @notice Thrown when the signer is a contract instead of an EOA error SignerNotEOA(); + + /// @notice Thrown when a disallowed method is called + error MethodNotAllowed(string message); + + /// @notice Thrown when attempting unauthorized token transfers error OnlyMintBurnOrTransfer(); - error InvalidSigner(); /* ============ Structs ============ */ @@ -92,6 +119,8 @@ interface IKintoID { function UPGRADER_ROLE() external view returns (bytes32); + function GOVERNANCE_ROLE() external view returns (bytes32); + function lastMonitoredAt() external view returns (uint256); function nonces(address _account) external view returns (uint256); diff --git a/test/artifacts/7887/addresses.json b/test/artifacts/7887/addresses.json index ab3408d5..62f05a93 100644 --- a/test/artifacts/7887/addresses.json +++ b/test/artifacts/7887/addresses.json @@ -243,5 +243,6 @@ "AAVE-impl": "0x87a0D1c12f83ce5aB21C88f7459891586C32B875", "AAVE": "0xaa0e00F095Eb986CB65FD3FA328782c7Fe4ceFD9", "KintoAppRegistryV22": "0xb9cE6BC89b79c713f34fd15D82a70900fEFD0de1", + "KintoIDV9-impl": "0x7CFe474936fA50181ae7c2C43EeB8806e25bc983", "SponsorPaymasterV15-impl": "0x2A10b80bE8Ee546C52Fde9b58d65D089C6B929BB" -} \ No newline at end of file +} diff --git a/test/unit/KintoID.t.sol b/test/unit/KintoID.t.sol index 339b7653..d4ad9e2f 100644 --- a/test/unit/KintoID.t.sol +++ b/test/unit/KintoID.t.sol @@ -381,11 +381,35 @@ contract KintoIDTest is SharedSetup { traits[0] = 1; _kintoID.mintIndividualKyc(sigdata, traits); _kintoID.addSanction(_user, 1); + assertEq(_kintoID.isSanctionsSafeIn(_user, 1), false); assertEq(_kintoID.isSanctionsSafe(_user), false); assertEq(_kintoID.lastMonitoredAt(), block.timestamp); } + function testAddSanction_WhenNotConfirmed() public { + vm.startPrank(_kycProvider); + IKintoID.SignatureData memory sigdata = _auxCreateSignature(_kintoID, _user, _userPk, block.timestamp + 1000); + uint16[] memory traits = new uint16[](1); + traits[0] = 1; + _kintoID.mintIndividualKyc(sigdata, traits); + _kintoID.addSanction(_user, 1); + + assertEq(_kintoID.isSanctionsSafeIn(_user, 1), false); + assertEq(_kintoID.isSanctionsSafe(_user), false); + assertEq(_kintoID.lastMonitoredAt(), block.timestamp); + assertEq(_kintoID.sanctionedAt(_user), block.timestamp); + + uint256 sanctionTime = block.timestamp; + + vm.warp(block.timestamp + 3 days + 1); + + assertEq(_kintoID.isSanctionsSafeIn(_user, 1), true); + assertEq(_kintoID.isSanctionsSafe(_user), true); + assertEq(_kintoID.lastMonitoredAt(), sanctionTime); + assertEq(_kintoID.sanctionedAt(_user), sanctionTime); + } + function testRemoveSancion() public { vm.startPrank(_kycProvider); IKintoID.SignatureData memory sigdata = _auxCreateSignature(_kintoID, _user, _userPk, block.timestamp + 1000); @@ -444,6 +468,60 @@ contract KintoIDTest is SharedSetup { _kintoID.removeSanction(_user, 1); } + function testConfirmSanction() public { + // First approve KYC and add a sanction + approveKYC(_kycProvider, _user, _userPk); + + vm.startPrank(_kycProvider); + _kintoID.addSanction(_user, 1); + vm.stopPrank(); + + // Confirm the sanction + vm.expectEmit(true, false, false, true); + emit KintoID.SanctionConfirmed(_user, block.timestamp); + + vm.prank(_owner); + _kintoID.confirmSanction(_user); + + // Verify sanction remains active even after 3 days + vm.warp(block.timestamp + 4 days); + + assertEq(_kintoID.isSanctionsSafeIn(_user, 1), false); + assertEq(_kintoID.isSanctionsSafe(_user), false); + assertEq(_kintoID.sanctionedAt(_user), 0); // Timestamp should be reset to 0 + } + + function testConfirmSanction_RevertWhen_CallerNotGovernance() public { + // First approve KYC and add a sanction + approveKYC(_kycProvider, _user, _userPk); + + vm.prank(_kycProvider); + _kintoID.addSanction(_user, 1); + + // Try to confirm sanction from non-governance address + bytes memory err = abi.encodePacked( + "AccessControl: account ", + Strings.toHexString(_user), + " is missing role ", + Strings.toHexString(uint256(_kintoID.GOVERNANCE_ROLE()), 32) + ); + + vm.expectRevert(err); + vm.prank(_user); + _kintoID.confirmSanction(_user); + } + + function testConfirmSanction_RevertWhen_NoSanctionExists() public { + // Try to confirm non-existent sanction + vm.prank(_owner); + vm.expectRevert(abi.encodeWithSelector(IKintoID.NoActiveSanction.selector, _user)); + _kintoID.confirmSanction(_user); + + // Verify no changes occurred + assertEq(_kintoID.sanctionedAt(_user), 0); + assertEq(_kintoID.isSanctionsSafe(_user), true); + } + /* ============ Transfer tests ============ */ function test_RevertWhen_TransfersAreDisabled() public {