@ensuro/core 2.0.0-beta8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/README.md +31 -14
  2. package/build/contracts/AccessManager.sol/AccessManager.json +7 -2
  3. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +28 -3
  4. package/build/contracts/EToken.sol/EToken.json +21 -15
  5. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +21 -2
  6. package/build/contracts/LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json +26 -1
  7. package/build/contracts/Policy.sol/Policy.json +2 -2
  8. package/build/contracts/PolicyPool.sol/PolicyPool.json +40 -2
  9. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +19 -0
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +21 -15
  11. package/build/contracts/Reserve.sol/Reserve.json +19 -13
  12. package/build/contracts/RiskModule.sol/RiskModule.json +19 -0
  13. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +1110 -0
  14. package/build/contracts/TimeScaled.sol/TimeScaled.json +3 -17
  15. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +137 -2
  16. package/build/contracts/{WadRayMath.sol → dependencies/WadRayMath.sol}/WadRayMath.json +3 -3
  17. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +26 -1
  18. package/build/contracts/interfaces/IPolicyPool.sol/IPolicyPool.json +38 -0
  19. package/build/contracts/interfaces/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +19 -0
  20. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +2 -2
  21. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +2 -2
  22. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +180 -0
  23. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +28 -2
  24. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +21 -2
  25. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +115 -2
  26. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +2 -2
  27. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +111 -2
  28. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +2 -2
  29. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +2 -2
  30. package/contracts/AccessManager.sol +31 -2
  31. package/contracts/ERC4626AssetManager.sol +8 -2
  32. package/contracts/EToken.sol +129 -60
  33. package/contracts/LPManualWhitelist.sol +18 -2
  34. package/contracts/LiquidityThresholdAssetManager.sol +28 -12
  35. package/contracts/Policy.sol +5 -3
  36. package/contracts/PolicyPool.sol +221 -29
  37. package/contracts/PolicyPoolComponent.sol +36 -25
  38. package/contracts/PremiumsAccount.sol +220 -32
  39. package/contracts/Reserve.sol +130 -19
  40. package/contracts/RiskModule.sol +53 -20
  41. package/contracts/SignedQuoteRiskModule.sol +310 -0
  42. package/contracts/TimeScaled.sol +19 -15
  43. package/contracts/TrustfulRiskModule.sol +107 -6
  44. package/contracts/dependencies/WadRayMath.sol +126 -0
  45. package/contracts/interfaces/IAccessManager.sol +68 -13
  46. package/contracts/interfaces/IAssetManager.sol +69 -2
  47. package/contracts/interfaces/IEToken.sol +4 -1
  48. package/contracts/interfaces/ILPWhitelist.sol +17 -0
  49. package/contracts/interfaces/IPolicyPool.sol +19 -1
  50. package/contracts/interfaces/IPolicyPoolComponent.sol +5 -1
  51. package/contracts/interfaces/IRiskModule.sol +67 -4
  52. package/contracts/mocks/InterfaceIdCalculator.sol +32 -0
  53. package/contracts/mocks/PolicyHolderMock.sol +21 -0
  54. package/contracts/mocks/PolicyPoolComponentMock.sol +10 -0
  55. package/contracts/mocks/PolicyPoolMock.sol +31 -0
  56. package/contracts/mocks/RiskModuleMock.sol +7 -1
  57. package/js/deploy.js +734 -0
  58. package/js/test-utils.js +184 -69
  59. package/package.json +4 -2
  60. package/scripts/change-pragma.sh +19 -0
  61. package/scripts/deploySmokeTest-fork.sh +53 -0
  62. package/scripts/deploySmokeTest.sh +51 -0
  63. package/scripts/storageLayout.js +33 -0
  64. package/scripts/utils.sh +65 -0
  65. package/contracts/WadRayMath.sol +0 -135
@@ -277,6 +277,119 @@
277
277
  "stateMutability": "nonpayable",
278
278
  "type": "function"
279
279
  },
280
+ {
281
+ "inputs": [
282
+ {
283
+ "internalType": "uint256",
284
+ "name": "policyId",
285
+ "type": "uint256"
286
+ }
287
+ ],
288
+ "name": "getPolicyHash",
289
+ "outputs": [
290
+ {
291
+ "internalType": "bytes32",
292
+ "name": "",
293
+ "type": "bytes32"
294
+ }
295
+ ],
296
+ "stateMutability": "view",
297
+ "type": "function"
298
+ },
299
+ {
300
+ "inputs": [
301
+ {
302
+ "internalType": "contract IRiskModule",
303
+ "name": "riskModule",
304
+ "type": "address"
305
+ },
306
+ {
307
+ "components": [
308
+ {
309
+ "internalType": "uint256",
310
+ "name": "moc",
311
+ "type": "uint256"
312
+ },
313
+ {
314
+ "internalType": "uint256",
315
+ "name": "jrCollRatio",
316
+ "type": "uint256"
317
+ },
318
+ {
319
+ "internalType": "uint256",
320
+ "name": "collRatio",
321
+ "type": "uint256"
322
+ },
323
+ {
324
+ "internalType": "uint256",
325
+ "name": "ensuroPpFee",
326
+ "type": "uint256"
327
+ },
328
+ {
329
+ "internalType": "uint256",
330
+ "name": "ensuroCocFee",
331
+ "type": "uint256"
332
+ },
333
+ {
334
+ "internalType": "uint256",
335
+ "name": "jrRoc",
336
+ "type": "uint256"
337
+ },
338
+ {
339
+ "internalType": "uint256",
340
+ "name": "srRoc",
341
+ "type": "uint256"
342
+ }
343
+ ],
344
+ "internalType": "struct IRiskModule.Params",
345
+ "name": "rmParams",
346
+ "type": "tuple"
347
+ },
348
+ {
349
+ "internalType": "uint256",
350
+ "name": "premium",
351
+ "type": "uint256"
352
+ },
353
+ {
354
+ "internalType": "uint256",
355
+ "name": "payout",
356
+ "type": "uint256"
357
+ },
358
+ {
359
+ "internalType": "uint256",
360
+ "name": "lossProb",
361
+ "type": "uint256"
362
+ },
363
+ {
364
+ "internalType": "uint40",
365
+ "name": "expiration",
366
+ "type": "uint40"
367
+ }
368
+ ],
369
+ "name": "initializeAndEmitPolicy",
370
+ "outputs": [],
371
+ "stateMutability": "nonpayable",
372
+ "type": "function"
373
+ },
374
+ {
375
+ "inputs": [
376
+ {
377
+ "internalType": "uint256",
378
+ "name": "policyId",
379
+ "type": "uint256"
380
+ }
381
+ ],
382
+ "name": "isActive",
383
+ "outputs": [
384
+ {
385
+ "internalType": "bool",
386
+ "name": "",
387
+ "type": "bool"
388
+ }
389
+ ],
390
+ "stateMutability": "view",
391
+ "type": "function"
392
+ },
280
393
  {
281
394
  "inputs": [
282
395
  {
@@ -601,8 +714,8 @@
601
714
  "type": "function"
602
715
  }
603
716
  ],
604
- "bytecode": "0x608060405234801561001057600080fd5b5060405161097538038061097583398101604081905261002f91610060565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100b2565b6000806040838503121561007357600080fd5b825161007e8161009a565b602084015190925061008f8161009a565b809150509250929050565b6001600160a01b03811681146100af57600080fd5b50565b6108b4806100c16000396000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806371907f171161006657806371907f17146101155780637a702b3c14610126578063e5a6b10f14610139578063f3fef3a31461014a578063ffa600e31461015d57600080fd5b8063098d3228146100a357806347e7ef24146100bf57806361d027b3146100d45780636769a76f146100ef5780636af6f1ef14610102575b600080fd5b6100ac60001981565b6040519081526020015b60405180910390f35b6100d26100cd366004610604565b610170565b005b60005b6040516001600160a01b0390911681526020016100b6565b6100ac6100fd3660046106dd565b6101bd565b6100d2610110366004610630565b61024e565b6001546001600160a01b03166100d7565b6100d2610134366004610693565b61026a565b6000546001600160a01b03166100d7565b6100ac610158366004610604565b610286565b6100d261016b366004610654565b6102d1565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420496d706c656d656e746564206465706f73697400000000000000000060448201526064015b60405180910390fd5b6000816bffffffffffffffffffffffff1660608661016001516001600160a01b0316901b6101eb9190610843565b85526101f6856102f9565b855160009081526003602052604090819020919091555133907f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b9061023c90889061074d565b60405180910390a25050915192915050565b610267610260368390038301836106c0565b6000610329565b50565b61028261027c368490038401846106c0565b82610329565b5050565b60405162461bcd60e51b815260206004820152601860248201527f4e6f7420496d706c656d656e746564207769746864726177000000000000000060448201526000906064016101b4565b6102826102e3368490038401846106c0565b826102ef576000610329565b8360200135610329565b60008160405160200161030c919061074d565b604051602081830303815290604052805190602001209050919050565b815161036a5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b60448201526064016101b4565b8151600090815260036020526040902054610384836102f9565b146103c65760405162461bcd60e51b8152602060048201526012602482015271090c2e6d040c8decae6dc4ee840dac2e8c6d60731b60448201526064016101b4565b8161016001516001600160a01b0316336001600160a01b0316146104485760405162461bcd60e51b815260206004820152603360248201527f4f6e6c79207269736b4d6f64756c6520697320617574686f72697a656420746f604482015272207265736f6c76652074686520706f6c69637960681b60648201526084016101b4565b81516000908152600260208181526040808420848155600181018590559283018490556003808401859055600484018590556005840185905560068401859055600784018590556008840185905560098401859055600a8401859055600b90930180546001600160f01b0319169055855184529181528183209290925583519051838152909133917f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e910160405180910390a35050565b803561050a81610869565b919050565b60006101c0828403121561052257600080fd5b50919050565b60006101c0828403121561053b57600080fd5b61054361080b565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013581830152506101606105c18184016104ff565b908201526101806105d38382016105ef565b908201526101a06105e58382016105ef565b9082015292915050565b803564ffffffffff8116811461050a57600080fd5b6000806040838503121561061757600080fd5b823561062281610869565b946020939093013593505050565b60006101c0828403121561064357600080fd5b61064d838361050f565b9392505050565b6000806101e0838503121561066857600080fd5b610672848461050f565b91506101c0830135801515811461068857600080fd5b809150509250929050565b6000806101e083850312156106a757600080fd5b6106b1848461050f565b946101c0939093013593505050565b60006101c082840312156106d357600080fd5b61064d8383610528565b60008060008061022085870312156106f457600080fd5b6106fe8686610528565b93506101c085013561070f81610869565b92506101e085013561072081610869565b91506102008501356bffffffffffffffffffffffff8116811461074257600080fd5b939692955090935050565b60006101c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401518184015250610160808401516107df828501826001600160a01b03169052565b50506101808381015164ffffffffff908116918401919091526101a09384015116929091019190915290565b6040516101c0810167ffffffffffffffff8111828210171561083d57634e487b7160e01b600052604160045260246000fd5b60405290565b6000821982111561086457634e487b7160e01b600052601160045260246000fd5b500190565b6001600160a01b038116811461026757600080fdfea264697066735822122087e53ba7f496c491734d91cabe3924fb2605842ee25f1f3edf2ca294d27cd33b64736f6c63430008060033",
605
- "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c806371907f171161006657806371907f17146101155780637a702b3c14610126578063e5a6b10f14610139578063f3fef3a31461014a578063ffa600e31461015d57600080fd5b8063098d3228146100a357806347e7ef24146100bf57806361d027b3146100d45780636769a76f146100ef5780636af6f1ef14610102575b600080fd5b6100ac60001981565b6040519081526020015b60405180910390f35b6100d26100cd366004610604565b610170565b005b60005b6040516001600160a01b0390911681526020016100b6565b6100ac6100fd3660046106dd565b6101bd565b6100d2610110366004610630565b61024e565b6001546001600160a01b03166100d7565b6100d2610134366004610693565b61026a565b6000546001600160a01b03166100d7565b6100ac610158366004610604565b610286565b6100d261016b366004610654565b6102d1565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420496d706c656d656e746564206465706f73697400000000000000000060448201526064015b60405180910390fd5b6000816bffffffffffffffffffffffff1660608661016001516001600160a01b0316901b6101eb9190610843565b85526101f6856102f9565b855160009081526003602052604090819020919091555133907f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b9061023c90889061074d565b60405180910390a25050915192915050565b610267610260368390038301836106c0565b6000610329565b50565b61028261027c368490038401846106c0565b82610329565b5050565b60405162461bcd60e51b815260206004820152601860248201527f4e6f7420496d706c656d656e746564207769746864726177000000000000000060448201526000906064016101b4565b6102826102e3368490038401846106c0565b826102ef576000610329565b8360200135610329565b60008160405160200161030c919061074d565b604051602081830303815290604052805190602001209050919050565b815161036a5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b60448201526064016101b4565b8151600090815260036020526040902054610384836102f9565b146103c65760405162461bcd60e51b8152602060048201526012602482015271090c2e6d040c8decae6dc4ee840dac2e8c6d60731b60448201526064016101b4565b8161016001516001600160a01b0316336001600160a01b0316146104485760405162461bcd60e51b815260206004820152603360248201527f4f6e6c79207269736b4d6f64756c6520697320617574686f72697a656420746f604482015272207265736f6c76652074686520706f6c69637960681b60648201526084016101b4565b81516000908152600260208181526040808420848155600181018590559283018490556003808401859055600484018590556005840185905560068401859055600784018590556008840185905560098401859055600a8401859055600b90930180546001600160f01b0319169055855184529181528183209290925583519051838152909133917f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e910160405180910390a35050565b803561050a81610869565b919050565b60006101c0828403121561052257600080fd5b50919050565b60006101c0828403121561053b57600080fd5b61054361080b565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e08201526101008083013581830152506101208083013581830152506101408083013581830152506101606105c18184016104ff565b908201526101806105d38382016105ef565b908201526101a06105e58382016105ef565b9082015292915050565b803564ffffffffff8116811461050a57600080fd5b6000806040838503121561061757600080fd5b823561062281610869565b946020939093013593505050565b60006101c0828403121561064357600080fd5b61064d838361050f565b9392505050565b6000806101e0838503121561066857600080fd5b610672848461050f565b91506101c0830135801515811461068857600080fd5b809150509250929050565b6000806101e083850312156106a757600080fd5b6106b1848461050f565b946101c0939093013593505050565b60006101c082840312156106d357600080fd5b61064d8383610528565b60008060008061022085870312156106f457600080fd5b6106fe8686610528565b93506101c085013561070f81610869565b92506101e085013561072081610869565b91506102008501356bffffffffffffffffffffffff8116811461074257600080fd5b939692955090935050565b60006101c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e0830152610100808401518184015250610120808401518184015250610140808401518184015250610160808401516107df828501826001600160a01b03169052565b50506101808381015164ffffffffff908116918401919091526101a09384015116929091019190915290565b6040516101c0810167ffffffffffffffff8111828210171561083d57634e487b7160e01b600052604160045260246000fd5b60405290565b6000821982111561086457634e487b7160e01b600052601160045260246000fd5b500190565b6001600160a01b038116811461026757600080fdfea264697066735822122087e53ba7f496c491734d91cabe3924fb2605842ee25f1f3edf2ca294d27cd33b64736f6c63430008060033",
717
+ "bytecode": "0x608060405234801561001057600080fd5b5060405161100638038061100683398101604081905261002f91610078565b600080546001600160a01b039384166001600160a01b031991821617909155600180549290931691161790556100b2565b6001600160a01b038116811461007557600080fd5b50565b6000806040838503121561008b57600080fd5b825161009681610060565b60208401519092506100a781610060565b809150509250929050565b610f45806100c16000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063792da09e1161008c57806392be29701161006657806392be2970146101bc578063e5a6b10f146101cf578063f3fef3a3146101e0578063ffa600e3146101f357600080fd5b8063792da09e146101575780637a702b3c1461017757806382afd23b1461018a57600080fd5b8063098d3228146100d457806347e7ef24146100f057806361d027b3146101055780636769a76f146101205780636af6f1ef1461013357806371907f1714610146575b600080fd5b6100dd60001981565b6040519081526020015b60405180910390f35b6101036100fe366004610a23565b610206565b005b60005b6040516001600160a01b0390911681526020016100e7565b6100dd61012e366004610b9f565b610253565b610103610141366004610c28565b6102e4565b6001546001600160a01b0316610108565b6100dd610165366004610c4c565b60009081526003602052604090205490565b610103610185366004610c65565b610300565b6101ac610198366004610c4c565b600090815260036020526040902054151590565b60405190151581526020016100e7565b6101036101ca366004610c92565b61031c565b6000546001600160a01b0316610108565b6100dd6101ee366004610a23565b610378565b610103610201366004610d4d565b6103c3565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420496d706c656d656e746564206465706f73697400000000000000000060448201526064015b60405180910390fd5b6000816bffffffffffffffffffffffff1660608661016001516001600160a01b0316901b6102819190610da2565b855261028c856103eb565b855160009081526003602052604090819020919091555133907f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b906102d2908890610dbb565b60405180910390a25050915192915050565b6102fd6102f636839003830183610e79565b600061046a565b50565b61031861031236849003840184610e79565b8261046a565b5050565b600061032c878787878787610643565b9050866001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b826040516103679190610dbb565b60405180910390a250505050505050565b60405162461bcd60e51b815260206004820152601860248201527f4e6f7420496d706c656d656e7465642077697468647261770000000000000000604482015260009060640161024a565b6103186103d536849003840184610e79565b826103e157600061046a565b836020013561046a565b6000816040516020016103fe9190610dbb565b60408051601f1981840301815291905280516020909101209050806104655760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f7420626520300000000000000000604482015260640161024a565b919050565b81516000036104ae5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b604482015260640161024a565b81516000908152600360205260409020546104c8836103eb565b1461050a5760405162461bcd60e51b8152602060048201526012602482015271090c2e6d040c8decae6dc4ee840dac2e8c6d60731b604482015260640161024a565b8161016001516001600160a01b0316336001600160a01b03161461058c5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c79207269736b4d6f64756c6520697320617574686f72697a656420746f604482015272207265736f6c76652074686520706f6c69637960681b606482015260840161024a565b81516000908152600260208181526040808420848155600181018590559283018490556003808401859055600484018590556005840185905560068401859055600784018590556008840185905560098401859055600a8401859055600b90930180546001600160f01b0319169055855184529181528183209290925583519051838152909133917f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e910160405180910390a35050565b61064b610988565b838511156106a65760405162461bcd60e51b815260206004820152602260248201527f5072656d69756d2063616e6e6f74206265206d6f7265207468616e207061796f6044820152611d5d60f21b606482015260840161024a565b6106ae610988565b6001600160a01b038816610160820152604081018690526020810185905260a0810184905264ffffffffff42811661018083015283166101a08201528651610702906106fb908690610950565b8690610950565b60c08201526020870151610717908690610950565b6060820181905260c08201511015610747578060c001518160600181815161073f9190610e96565b90525061074f565b600060608201525b604087015161075f908690610950565b6080820152606081015160c08201516107789190610da2565b816080015111156107b05780606001518160c001516107979190610da2565b816080018181516107a89190610e96565b9052506107b8565b600060808201525b6108016301e13380826101800151836101a001516107d69190610ea9565b64ffffffffff168960a001516107ec9190610ece565b6107f69190610eed565b606083015190610950565b6101208201526101808101516101a0820151610852916301e13380916108279190610ea9565b64ffffffffff168960c0015161083d9190610ece565b6108479190610eed565b608083015190610950565b610140820181905261012082015160009161086c91610da2565b905061088588608001518261095090919063ffffffff16565b606089015160c084015161089891610950565b6108a29190610da2565b60e0830181905260c0830151889183916108bc9190610da2565b6108c69190610da2565b11156109145760405162461bcd60e51b815260206004820152601960248201527f5072656d69756d206c657373207468616e206d696e696d756d00000000000000604482015260640161024a565b8160e00151818360c001518961092a9190610e96565b6109349190610e96565b61093e9190610e96565b61010083015250979650505050505050565b600081156706f05b59d3b20000198390048411151761096e57600080fd5b50670de0b6b3a764000091026706f05b59d3b20000010490565b604051806101c00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600064ffffffffff168152602001600064ffffffffff1681525090565b6001600160a01b03811681146102fd57600080fd5b60008060408385031215610a3657600080fd5b8235610a4181610a0e565b946020939093013593505050565b6040516101c0810167ffffffffffffffff81118282101715610a8157634e487b7160e01b600052604160045260246000fd5b60405290565b60405160e0810167ffffffffffffffff81118282101715610a8157634e487b7160e01b600052604160045260246000fd5b803561046581610a0e565b803564ffffffffff8116811461046557600080fd5b60006101c08284031215610aeb57600080fd5b610af3610a4f565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160610b71818401610ab8565b90820152610180610b83838201610ac3565b908201526101a0610b95838201610ac3565b9082015292915050565b6000806000806102208587031215610bb657600080fd5b610bc08686610ad8565b93506101c0850135610bd181610a0e565b92506101e0850135610be281610a0e565b91506102008501356bffffffffffffffffffffffff81168114610c0457600080fd5b939692955090935050565b60006101c08284031215610c2257600080fd5b50919050565b60006101c08284031215610c3b57600080fd5b610c458383610c0f565b9392505050565b600060208284031215610c5e57600080fd5b5035919050565b6000806101e08385031215610c7957600080fd5b610c838484610c0f565b946101c0939093013593505050565b600080600080600080868803610180811215610cad57600080fd5b8735610cb881610a0e565b965060e0601f1982011215610ccc57600080fd5b50610cd5610a87565b6020880135815260408801356020820152606088013560408201526080880135606082015260a0880135608082015260c088013560a082015260e088013560c082015280955050610100870135935061012087013592506101408701359150610d416101608801610ac3565b90509295509295509295565b6000806101e08385031215610d6157600080fd5b610d6b8484610c0f565b91506101c08301358015158114610d8157600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610db557610db5610d8c565b92915050565b60006101c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151610e4d828501826001600160a01b03169052565b50506101808381015164ffffffffff908116918401919091526101a09384015116929091019190915290565b60006101c08284031215610e8c57600080fd5b610c458383610ad8565b81810381811115610db557610db5610d8c565b64ffffffffff828116828216039080821115610ec757610ec7610d8c565b5092915050565b6000816000190483118215151615610ee857610ee8610d8c565b500290565b600082610f0a57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220d5af0533a3b5d9ed792db60ee57b0c3821d55b3d3682c2b6761810a28241f41c64736f6c63430008100033",
718
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c8063792da09e1161008c57806392be29701161006657806392be2970146101bc578063e5a6b10f146101cf578063f3fef3a3146101e0578063ffa600e3146101f357600080fd5b8063792da09e146101575780637a702b3c1461017757806382afd23b1461018a57600080fd5b8063098d3228146100d457806347e7ef24146100f057806361d027b3146101055780636769a76f146101205780636af6f1ef1461013357806371907f1714610146575b600080fd5b6100dd60001981565b6040519081526020015b60405180910390f35b6101036100fe366004610a23565b610206565b005b60005b6040516001600160a01b0390911681526020016100e7565b6100dd61012e366004610b9f565b610253565b610103610141366004610c28565b6102e4565b6001546001600160a01b0316610108565b6100dd610165366004610c4c565b60009081526003602052604090205490565b610103610185366004610c65565b610300565b6101ac610198366004610c4c565b600090815260036020526040902054151590565b60405190151581526020016100e7565b6101036101ca366004610c92565b61031c565b6000546001600160a01b0316610108565b6100dd6101ee366004610a23565b610378565b610103610201366004610d4d565b6103c3565b60405162461bcd60e51b815260206004820152601760248201527f4e6f7420496d706c656d656e746564206465706f73697400000000000000000060448201526064015b60405180910390fd5b6000816bffffffffffffffffffffffff1660608661016001516001600160a01b0316901b6102819190610da2565b855261028c856103eb565b855160009081526003602052604090819020919091555133907f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b906102d2908890610dbb565b60405180910390a25050915192915050565b6102fd6102f636839003830183610e79565b600061046a565b50565b61031861031236849003840184610e79565b8261046a565b5050565b600061032c878787878787610643565b9050866001600160a01b03167f38f420e3792044ba61536a1f83956eefc878b3fb09a7d4a28790f05b6a3eaf3b826040516103679190610dbb565b60405180910390a250505050505050565b60405162461bcd60e51b815260206004820152601860248201527f4e6f7420496d706c656d656e7465642077697468647261770000000000000000604482015260009060640161024a565b6103186103d536849003840184610e79565b826103e157600061046a565b836020013561046a565b6000816040516020016103fe9190610dbb565b60408051601f1981840301815291905280516020909101209050806104655760405162461bcd60e51b815260206004820152601860248201527f506f6c6963793a20686173682063616e6e6f7420626520300000000000000000604482015260640161024a565b919050565b81516000036104ae5760405162461bcd60e51b815260206004820152601060248201526f141bdb1a58de481b9bdd08199bdd5b9960821b604482015260640161024a565b81516000908152600360205260409020546104c8836103eb565b1461050a5760405162461bcd60e51b8152602060048201526012602482015271090c2e6d040c8decae6dc4ee840dac2e8c6d60731b604482015260640161024a565b8161016001516001600160a01b0316336001600160a01b03161461058c5760405162461bcd60e51b815260206004820152603360248201527f4f6e6c79207269736b4d6f64756c6520697320617574686f72697a656420746f604482015272207265736f6c76652074686520706f6c69637960681b606482015260840161024a565b81516000908152600260208181526040808420848155600181018590559283018490556003808401859055600484018590556005840185905560068401859055600784018590556008840185905560098401859055600a8401859055600b90930180546001600160f01b0319169055855184529181528183209290925583519051838152909133917f54f4a270ea08f88dc23b2520d6b063fecb24d956c4496f447926d736338f545e910160405180910390a35050565b61064b610988565b838511156106a65760405162461bcd60e51b815260206004820152602260248201527f5072656d69756d2063616e6e6f74206265206d6f7265207468616e207061796f6044820152611d5d60f21b606482015260840161024a565b6106ae610988565b6001600160a01b038816610160820152604081018690526020810185905260a0810184905264ffffffffff42811661018083015283166101a08201528651610702906106fb908690610950565b8690610950565b60c08201526020870151610717908690610950565b6060820181905260c08201511015610747578060c001518160600181815161073f9190610e96565b90525061074f565b600060608201525b604087015161075f908690610950565b6080820152606081015160c08201516107789190610da2565b816080015111156107b05780606001518160c001516107979190610da2565b816080018181516107a89190610e96565b9052506107b8565b600060808201525b6108016301e13380826101800151836101a001516107d69190610ea9565b64ffffffffff168960a001516107ec9190610ece565b6107f69190610eed565b606083015190610950565b6101208201526101808101516101a0820151610852916301e13380916108279190610ea9565b64ffffffffff168960c0015161083d9190610ece565b6108479190610eed565b608083015190610950565b610140820181905261012082015160009161086c91610da2565b905061088588608001518261095090919063ffffffff16565b606089015160c084015161089891610950565b6108a29190610da2565b60e0830181905260c0830151889183916108bc9190610da2565b6108c69190610da2565b11156109145760405162461bcd60e51b815260206004820152601960248201527f5072656d69756d206c657373207468616e206d696e696d756d00000000000000604482015260640161024a565b8160e00151818360c001518961092a9190610e96565b6109349190610e96565b61093e9190610e96565b61010083015250979650505050505050565b600081156706f05b59d3b20000198390048411151761096e57600080fd5b50670de0b6b3a764000091026706f05b59d3b20000010490565b604051806101c00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006001600160a01b03168152602001600064ffffffffff168152602001600064ffffffffff1681525090565b6001600160a01b03811681146102fd57600080fd5b60008060408385031215610a3657600080fd5b8235610a4181610a0e565b946020939093013593505050565b6040516101c0810167ffffffffffffffff81118282101715610a8157634e487b7160e01b600052604160045260246000fd5b60405290565b60405160e0810167ffffffffffffffff81118282101715610a8157634e487b7160e01b600052604160045260246000fd5b803561046581610a0e565b803564ffffffffff8116811461046557600080fd5b60006101c08284031215610aeb57600080fd5b610af3610a4f565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e0820152610100808301358183015250610120808301358183015250610140808301358183015250610160610b71818401610ab8565b90820152610180610b83838201610ac3565b908201526101a0610b95838201610ac3565b9082015292915050565b6000806000806102208587031215610bb657600080fd5b610bc08686610ad8565b93506101c0850135610bd181610a0e565b92506101e0850135610be281610a0e565b91506102008501356bffffffffffffffffffffffff81168114610c0457600080fd5b939692955090935050565b60006101c08284031215610c2257600080fd5b50919050565b60006101c08284031215610c3b57600080fd5b610c458383610c0f565b9392505050565b600060208284031215610c5e57600080fd5b5035919050565b6000806101e08385031215610c7957600080fd5b610c838484610c0f565b946101c0939093013593505050565b600080600080600080868803610180811215610cad57600080fd5b8735610cb881610a0e565b965060e0601f1982011215610ccc57600080fd5b50610cd5610a87565b6020880135815260408801356020820152606088013560408201526080880135606082015260a0880135608082015260c088013560a082015260e088013560c082015280955050610100870135935061012087013592506101408701359150610d416101608801610ac3565b90509295509295509295565b6000806101e08385031215610d6157600080fd5b610d6b8484610c0f565b91506101c08301358015158114610d8157600080fd5b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610db557610db5610d8c565b92915050565b60006101c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015260c083015160c083015260e083015160e083015261010080840151818401525061012080840151818401525061014080840151818401525061016080840151610e4d828501826001600160a01b03169052565b50506101808381015164ffffffffff908116918401919091526101a09384015116929091019190915290565b60006101c08284031215610e8c57600080fd5b610c458383610ad8565b81810381811115610db557610db5610d8c565b64ffffffffff828116828216039080821115610ec757610ec7610d8c565b5092915050565b6000816000190483118215151615610ee857610ee8610d8c565b500290565b600082610f0a57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220d5af0533a3b5d9ed792db60ee57b0c3821d55b3d3682c2b6761810a28241f41c64736f6c63430008100033",
606
719
  "linkReferences": {},
607
720
  "deployedLinkReferences": {}
608
721
  }
@@ -85,8 +85,8 @@
85
85
  "type": "receive"
86
86
  }
87
87
  ],
88
- "bytecode": "0x608060405234801561001057600080fd5b5060405161029c38038061029c83398101604081905261002f91610071565b600080546001600160a01b039485166001600160a01b0319918216179091556001805493851693821693909317909255600280549190931691161790556100d6565b60008060006060848603121561008657600080fd5b8351610091816100be565b60208501519093506100a2816100be565b60408501519092506100b3816100be565b809150509250925092565b6001600160a01b03811681146100d357600080fd5b50565b6101b7806100e56000396000f3fe6080604052600436106100435760003560e01c8063098d32281461005a57806371907f1714610083578063d4b27001146100b5578063e5a6b10f146100f257610052565b3661005257610050610110565b005b610050610110565b34801561006657600080fd5b5061007060001981565b6040519081526020015b60405180910390f35b34801561008f57600080fd5b506002546001600160a01b03165b6040516001600160a01b03909116815260200161007a565b3480156100c157600080fd5b506100506100d0366004610151565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156100fe57600080fd5b506001546001600160a01b031661009d565b61012a6101256000546001600160a01b031690565b61012c565b565b366000803760008036600080855af13d6000803e80801561014c573d6000f35b3d6000fd5b60006020828403121561016357600080fd5b81356001600160a01b038116811461017a57600080fd5b939250505056fea2646970667358221220cdf0688bb91b05f1cf739ead78d32663ba21d7b5e2e3b2ab116cc505461d7a3864736f6c63430008060033",
89
- "deployedBytecode": "0x6080604052600436106100435760003560e01c8063098d32281461005a57806371907f1714610083578063d4b27001146100b5578063e5a6b10f146100f257610052565b3661005257610050610110565b005b610050610110565b34801561006657600080fd5b5061007060001981565b6040519081526020015b60405180910390f35b34801561008f57600080fd5b506002546001600160a01b03165b6040516001600160a01b03909116815260200161007a565b3480156100c157600080fd5b506100506100d0366004610151565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156100fe57600080fd5b506001546001600160a01b031661009d565b61012a6101256000546001600160a01b031690565b61012c565b565b366000803760008036600080855af13d6000803e80801561014c573d6000f35b3d6000fd5b60006020828403121561016357600080fd5b81356001600160a01b038116811461017a57600080fd5b939250505056fea2646970667358221220cdf0688bb91b05f1cf739ead78d32663ba21d7b5e2e3b2ab116cc505461d7a3864736f6c63430008060033",
88
+ "bytecode": "0x608060405234801561001057600080fd5b5060405161029c38038061029c83398101604081905261002f91610089565b600080546001600160a01b039485166001600160a01b0319918216179091556001805493851693821693909317909255600280549190931691161790556100d6565b6001600160a01b038116811461008657600080fd5b50565b60008060006060848603121561009e57600080fd5b83516100a981610071565b60208501519093506100ba81610071565b60408501519092506100cb81610071565b809150509250925092565b6101b7806100e56000396000f3fe6080604052600436106100435760003560e01c8063098d32281461005a57806371907f1714610083578063d4b27001146100b5578063e5a6b10f146100f257610052565b3661005257610050610110565b005b610050610110565b34801561006657600080fd5b5061007060001981565b6040519081526020015b60405180910390f35b34801561008f57600080fd5b506002546001600160a01b03165b6040516001600160a01b03909116815260200161007a565b3480156100c157600080fd5b506100506100d0366004610151565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156100fe57600080fd5b506001546001600160a01b031661009d565b61012a6101256000546001600160a01b031690565b61012c565b565b366000803760008036600080855af13d6000803e80801561014c573d6000f35b3d6000fd5b60006020828403121561016357600080fd5b81356001600160a01b038116811461017a57600080fd5b939250505056fea264697066735822122074fb30a192cfcf0719faaa15c3aec9ed07298feb6ea22fe70fdfa25b552911a664736f6c63430008100033",
89
+ "deployedBytecode": "0x6080604052600436106100435760003560e01c8063098d32281461005a57806371907f1714610083578063d4b27001146100b5578063e5a6b10f146100f257610052565b3661005257610050610110565b005b610050610110565b34801561006657600080fd5b5061007060001981565b6040519081526020015b60405180910390f35b34801561008f57600080fd5b506002546001600160a01b03165b6040516001600160a01b03909116815260200161007a565b3480156100c157600080fd5b506100506100d0366004610151565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b3480156100fe57600080fd5b506001546001600160a01b031661009d565b61012a6101256000546001600160a01b031690565b61012c565b565b366000803760008036600080855af13d6000803e80801561014c573d6000f35b3d6000fd5b60006020828403121561016357600080fd5b81356001600160a01b038116811461017a57600080fd5b939250505056fea264697066735822122074fb30a192cfcf0719faaa15c3aec9ed07298feb6ea22fe70fdfa25b552911a664736f6c63430008100033",
90
90
  "linkReferences": {},
91
91
  "deployedLinkReferences": {}
92
92
  }