@ensuro/core 1.2.7 → 2.0.0-beta10

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 (109) hide show
  1. package/README.md +63 -27
  2. package/build/contracts/AccessManager.sol/AccessManager.json +559 -0
  3. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +219 -0
  4. package/build/contracts/EToken.sol/EToken.json +217 -190
  5. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +17 -4
  6. package/build/contracts/{extras/IPriceRiskModule.sol/IPriceRiskModule.json → LiquidityThresholdAssetManager.sol/LiquidityThresholdAssetManager.json} +81 -131
  7. package/build/contracts/Policy.sol/Policy.json +2 -2
  8. package/build/contracts/PolicyPool.sol/PolicyPool.json +425 -295
  9. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +15 -2
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +868 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +37 -166
  12. package/build/contracts/RiskModule.sol/RiskModule.json +85 -312
  13. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +960 -0
  14. package/build/contracts/{DataTypes.sol/DataTypes.json → TimeScaled.sol/TimeScaled.json} +4 -4
  15. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +134 -336
  16. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +64 -0
  17. package/build/{interfaces/IExchange.sol/IExchange.json → contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json} +83 -79
  18. package/build/contracts/{WadRayMath.sol → dependencies/WadRayMath.sol}/WadRayMath.json +3 -3
  19. package/build/{interfaces/IPolicyPoolConfig.sol/IPolicyPoolConfig.json → contracts/interfaces/IAccessManager.sol/IAccessManager.json} +79 -77
  20. package/build/contracts/interfaces/IAssetManager.sol/IAssetManager.json +109 -0
  21. package/build/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +39 -91
  22. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  23. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +137 -100
  25. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  26. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +315 -0
  27. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  28. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +736 -0
  29. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  30. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  31. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +228 -0
  32. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +702 -0
  34. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  35. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +764 -0
  36. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  37. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  38. package/contracts/AccessManager.sol +103 -0
  39. package/contracts/ERC4626AssetManager.sol +52 -0
  40. package/contracts/EToken.sol +254 -299
  41. package/contracts/LPManualWhitelist.sol +4 -4
  42. package/contracts/LiquidityThresholdAssetManager.sol +160 -0
  43. package/contracts/Policy.sol +49 -45
  44. package/contracts/PolicyPool.sol +379 -514
  45. package/contracts/PolicyPoolComponent.sol +41 -41
  46. package/contracts/PremiumsAccount.sol +480 -0
  47. package/contracts/Reserve.sol +213 -0
  48. package/contracts/RiskModule.sol +233 -174
  49. package/contracts/SignedQuoteRiskModule.sol +241 -0
  50. package/contracts/TimeScaled.sol +138 -0
  51. package/contracts/TrustfulRiskModule.sol +85 -23
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/dependencies/WadRayMath.sol +126 -0
  55. package/contracts/interfaces/IAccessManager.sol +148 -0
  56. package/contracts/interfaces/IAssetManager.sol +84 -0
  57. package/contracts/interfaces/IEToken.sol +195 -0
  58. package/contracts/interfaces/ILPWhitelist.sol +40 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  60. package/contracts/interfaces/IPolicyPool.sol +145 -0
  61. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +3 -0
  62. package/contracts/interfaces/IPremiumsAccount.sol +76 -0
  63. package/contracts/interfaces/IRiskModule.sol +123 -0
  64. package/contracts/mocks/FixedRateVault.sol +85 -0
  65. package/contracts/mocks/ForwardProxy.sol +66 -0
  66. package/contracts/mocks/IMintableERC20.sol +13 -0
  67. package/contracts/mocks/PolicyHolderMock.sol +89 -0
  68. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  69. package/contracts/mocks/PolicyPoolMock.sol +148 -0
  70. package/contracts/mocks/RiskModuleMock.sol +75 -0
  71. package/contracts/mocks/TestCurrency.sol +35 -0
  72. package/contracts/mocks/TestNFT.sol +23 -0
  73. package/js/test-utils.js +356 -0
  74. package/package.json +2 -2
  75. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -742
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -591
  77. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +0 -1112
  78. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +0 -570
  79. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +0 -686
  80. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +0 -50
  81. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1055
  82. package/build/contracts/upgraded/IPolicyNFTv1.sol/IPolicyNFTv1.json +0 -322
  83. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +0 -571
  84. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +0 -602
  85. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  86. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  87. package/build/interfaces/IPolicyNFT.sol/IPolicyNFT.json +0 -321
  88. package/contracts/AaveAssetManager.sol +0 -298
  89. package/contracts/BaseAssetManager.sol +0 -301
  90. package/contracts/DataTypes.sol +0 -287
  91. package/contracts/Exchange.sol +0 -189
  92. package/contracts/FlightDelayRiskModule.sol +0 -208
  93. package/contracts/PolicyNFT.sol +0 -96
  94. package/contracts/PolicyPoolConfig.sol +0 -247
  95. package/contracts/WadRayMath.sol +0 -135
  96. package/contracts/dependencies/ChainlinkClientUpgradeable.sol +0 -371
  97. package/contracts/extras/IPriceRiskModule.sol +0 -41
  98. package/contracts/extras/PriceRiskModule.sol +0 -243
  99. package/contracts/upgraded/IPolicyNFTv1.sol +0 -15
  100. package/contracts/upgraded/PolicyNFTv1.sol +0 -126
  101. package/interfaces/IAssetManager.sol +0 -23
  102. package/interfaces/IEToken.sol +0 -48
  103. package/interfaces/IExchange.sol +0 -59
  104. package/interfaces/IInsolvencyHook.sol +0 -27
  105. package/interfaces/ILPWhitelist.sol +0 -23
  106. package/interfaces/IPolicyNFT.sol +0 -15
  107. package/interfaces/IPolicyPool.sol +0 -44
  108. package/interfaces/IPolicyPoolConfig.sol +0 -87
  109. package/interfaces/IRiskModule.sol +0 -29
@@ -0,0 +1,343 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TestCurrency",
4
+ "sourceName": "contracts/mocks/TestCurrency.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "string",
10
+ "name": "name_",
11
+ "type": "string"
12
+ },
13
+ {
14
+ "internalType": "string",
15
+ "name": "symbol_",
16
+ "type": "string"
17
+ },
18
+ {
19
+ "internalType": "uint256",
20
+ "name": "initialSupply",
21
+ "type": "uint256"
22
+ },
23
+ {
24
+ "internalType": "uint8",
25
+ "name": "decimals_",
26
+ "type": "uint8"
27
+ }
28
+ ],
29
+ "stateMutability": "nonpayable",
30
+ "type": "constructor"
31
+ },
32
+ {
33
+ "anonymous": false,
34
+ "inputs": [
35
+ {
36
+ "indexed": true,
37
+ "internalType": "address",
38
+ "name": "owner",
39
+ "type": "address"
40
+ },
41
+ {
42
+ "indexed": true,
43
+ "internalType": "address",
44
+ "name": "spender",
45
+ "type": "address"
46
+ },
47
+ {
48
+ "indexed": false,
49
+ "internalType": "uint256",
50
+ "name": "value",
51
+ "type": "uint256"
52
+ }
53
+ ],
54
+ "name": "Approval",
55
+ "type": "event"
56
+ },
57
+ {
58
+ "anonymous": false,
59
+ "inputs": [
60
+ {
61
+ "indexed": true,
62
+ "internalType": "address",
63
+ "name": "from",
64
+ "type": "address"
65
+ },
66
+ {
67
+ "indexed": true,
68
+ "internalType": "address",
69
+ "name": "to",
70
+ "type": "address"
71
+ },
72
+ {
73
+ "indexed": false,
74
+ "internalType": "uint256",
75
+ "name": "value",
76
+ "type": "uint256"
77
+ }
78
+ ],
79
+ "name": "Transfer",
80
+ "type": "event"
81
+ },
82
+ {
83
+ "inputs": [
84
+ {
85
+ "internalType": "address",
86
+ "name": "owner",
87
+ "type": "address"
88
+ },
89
+ {
90
+ "internalType": "address",
91
+ "name": "spender",
92
+ "type": "address"
93
+ }
94
+ ],
95
+ "name": "allowance",
96
+ "outputs": [
97
+ {
98
+ "internalType": "uint256",
99
+ "name": "",
100
+ "type": "uint256"
101
+ }
102
+ ],
103
+ "stateMutability": "view",
104
+ "type": "function"
105
+ },
106
+ {
107
+ "inputs": [
108
+ {
109
+ "internalType": "address",
110
+ "name": "spender",
111
+ "type": "address"
112
+ },
113
+ {
114
+ "internalType": "uint256",
115
+ "name": "amount",
116
+ "type": "uint256"
117
+ }
118
+ ],
119
+ "name": "approve",
120
+ "outputs": [
121
+ {
122
+ "internalType": "bool",
123
+ "name": "",
124
+ "type": "bool"
125
+ }
126
+ ],
127
+ "stateMutability": "nonpayable",
128
+ "type": "function"
129
+ },
130
+ {
131
+ "inputs": [
132
+ {
133
+ "internalType": "address",
134
+ "name": "account",
135
+ "type": "address"
136
+ }
137
+ ],
138
+ "name": "balanceOf",
139
+ "outputs": [
140
+ {
141
+ "internalType": "uint256",
142
+ "name": "",
143
+ "type": "uint256"
144
+ }
145
+ ],
146
+ "stateMutability": "view",
147
+ "type": "function"
148
+ },
149
+ {
150
+ "inputs": [
151
+ {
152
+ "internalType": "address",
153
+ "name": "recipient",
154
+ "type": "address"
155
+ },
156
+ {
157
+ "internalType": "uint256",
158
+ "name": "amount",
159
+ "type": "uint256"
160
+ }
161
+ ],
162
+ "name": "burn",
163
+ "outputs": [],
164
+ "stateMutability": "nonpayable",
165
+ "type": "function"
166
+ },
167
+ {
168
+ "inputs": [],
169
+ "name": "decimals",
170
+ "outputs": [
171
+ {
172
+ "internalType": "uint8",
173
+ "name": "",
174
+ "type": "uint8"
175
+ }
176
+ ],
177
+ "stateMutability": "view",
178
+ "type": "function"
179
+ },
180
+ {
181
+ "inputs": [
182
+ {
183
+ "internalType": "address",
184
+ "name": "spender",
185
+ "type": "address"
186
+ },
187
+ {
188
+ "internalType": "uint256",
189
+ "name": "subtractedValue",
190
+ "type": "uint256"
191
+ }
192
+ ],
193
+ "name": "decreaseAllowance",
194
+ "outputs": [
195
+ {
196
+ "internalType": "bool",
197
+ "name": "",
198
+ "type": "bool"
199
+ }
200
+ ],
201
+ "stateMutability": "nonpayable",
202
+ "type": "function"
203
+ },
204
+ {
205
+ "inputs": [
206
+ {
207
+ "internalType": "address",
208
+ "name": "spender",
209
+ "type": "address"
210
+ },
211
+ {
212
+ "internalType": "uint256",
213
+ "name": "addedValue",
214
+ "type": "uint256"
215
+ }
216
+ ],
217
+ "name": "increaseAllowance",
218
+ "outputs": [
219
+ {
220
+ "internalType": "bool",
221
+ "name": "",
222
+ "type": "bool"
223
+ }
224
+ ],
225
+ "stateMutability": "nonpayable",
226
+ "type": "function"
227
+ },
228
+ {
229
+ "inputs": [
230
+ {
231
+ "internalType": "address",
232
+ "name": "recipient",
233
+ "type": "address"
234
+ },
235
+ {
236
+ "internalType": "uint256",
237
+ "name": "amount",
238
+ "type": "uint256"
239
+ }
240
+ ],
241
+ "name": "mint",
242
+ "outputs": [],
243
+ "stateMutability": "nonpayable",
244
+ "type": "function"
245
+ },
246
+ {
247
+ "inputs": [],
248
+ "name": "name",
249
+ "outputs": [
250
+ {
251
+ "internalType": "string",
252
+ "name": "",
253
+ "type": "string"
254
+ }
255
+ ],
256
+ "stateMutability": "view",
257
+ "type": "function"
258
+ },
259
+ {
260
+ "inputs": [],
261
+ "name": "symbol",
262
+ "outputs": [
263
+ {
264
+ "internalType": "string",
265
+ "name": "",
266
+ "type": "string"
267
+ }
268
+ ],
269
+ "stateMutability": "view",
270
+ "type": "function"
271
+ },
272
+ {
273
+ "inputs": [],
274
+ "name": "totalSupply",
275
+ "outputs": [
276
+ {
277
+ "internalType": "uint256",
278
+ "name": "",
279
+ "type": "uint256"
280
+ }
281
+ ],
282
+ "stateMutability": "view",
283
+ "type": "function"
284
+ },
285
+ {
286
+ "inputs": [
287
+ {
288
+ "internalType": "address",
289
+ "name": "to",
290
+ "type": "address"
291
+ },
292
+ {
293
+ "internalType": "uint256",
294
+ "name": "amount",
295
+ "type": "uint256"
296
+ }
297
+ ],
298
+ "name": "transfer",
299
+ "outputs": [
300
+ {
301
+ "internalType": "bool",
302
+ "name": "",
303
+ "type": "bool"
304
+ }
305
+ ],
306
+ "stateMutability": "nonpayable",
307
+ "type": "function"
308
+ },
309
+ {
310
+ "inputs": [
311
+ {
312
+ "internalType": "address",
313
+ "name": "from",
314
+ "type": "address"
315
+ },
316
+ {
317
+ "internalType": "address",
318
+ "name": "to",
319
+ "type": "address"
320
+ },
321
+ {
322
+ "internalType": "uint256",
323
+ "name": "amount",
324
+ "type": "uint256"
325
+ }
326
+ ],
327
+ "name": "transferFrom",
328
+ "outputs": [
329
+ {
330
+ "internalType": "bool",
331
+ "name": "",
332
+ "type": "bool"
333
+ }
334
+ ],
335
+ "stateMutability": "nonpayable",
336
+ "type": "function"
337
+ }
338
+ ],
339
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162000faa38038062000faa83398101604081905262000034916200023a565b8383600362000044838262000355565b50600462000053828262000355565b5050600580546001600160a01b0319163390811790915560ff83166080526200007e91508362000088565b5050505062000449565b6001600160a01b038216620000e35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f7919062000421565b90915550506001600160a01b038216600090815260208190526040812080548392906200012690849062000421565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200019d57600080fd5b81516001600160401b0380821115620001ba57620001ba62000175565b604051601f8301601f19908116603f01168101908282118183101715620001e557620001e562000175565b816040528381526020925086838588010111156200020257600080fd5b600091505b8382101562000226578582018301518183018401529082019062000207565b600093810190920192909252949350505050565b600080600080608085870312156200025157600080fd5b84516001600160401b03808211156200026957600080fd5b62000277888389016200018b565b955060208701519150808211156200028e57600080fd5b506200029d878288016200018b565b93505060408501519150606085015160ff81168114620002bc57600080fd5b939692955090935050565b600181811c90821680620002dc57607f821691505b602082108103620002fd57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200017057600081815260208120601f850160051c810160208610156200032c5750805b601f850160051c820191505b818110156200034d5782815560010162000338565b505050505050565b81516001600160401b0381111562000371576200037162000175565b6200038981620003828454620002c7565b8462000303565b602080601f831160018114620003c15760008415620003a85750858301515b600019600386901b1c1916600185901b1785556200034d565b600085815260208120601f198616915b82811015620003f257888601518255948401946001909101908401620003d1565b5085821015620004115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b808201808211156200044357634e487b7160e01b600052601160045260246000fd5b92915050565b608051610b456200046560003960006101410152610b456000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146101c4578063a457c2d7146101d7578063a9059cbb146101ea578063dd62ed3e146101fd57600080fd5b806340c10f191461017e57806370a082311461019357806395d89b41146101bc57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a578063395093511461016b575b600080fd5b6100dc610210565b6040516100e99190610974565b60405180910390f35b6101056101003660046109de565b6102a2565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b610105610135366004610a08565b6102bc565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100e9565b6101056101793660046109de565b6102e0565b61019161018c3660046109de565b610302565b005b6101196101a1366004610a44565b6001600160a01b031660009081526020819052604090205490565b6100dc610310565b6101916101d23660046109de565b61031f565b6101056101e53660046109de565b610329565b6101056101f83660046109de565b6103a9565b61011961020b366004610a66565b6103b7565b60606003805461021f90610a99565b80601f016020809104026020016040519081016040528092919081815260200182805461024b90610a99565b80156102985780601f1061026d57610100808354040283529160200191610298565b820191906000526020600020905b81548152906001019060200180831161027b57829003601f168201915b5050505050905090565b6000336102b08185856103e2565b60019150505b92915050565b6000336102ca858285610507565b6102d5858585610581565b506001949350505050565b6000336102b08185856102f383836103b7565b6102fd9190610ae9565b6103e2565b61030c828261074f565b5050565b60606004805461021f90610a99565b61030c828261082e565b6000338161033782866103b7565b90508381101561039c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102d582868684036103e2565b6000336102b0818585610581565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104445760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610393565b6001600160a01b0382166104a55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610393565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061051384846103b7565b9050600019811461057b578181101561056e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610393565b61057b84848484036103e2565b50505050565b6001600160a01b0383166105e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610393565b6001600160a01b0382166106475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610393565b6001600160a01b038316600090815260208190526040902054818110156106bf5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610393565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106f6908490610ae9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161074291815260200190565b60405180910390a361057b565b6001600160a01b0382166107a55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610393565b80600260008282546107b79190610ae9565b90915550506001600160a01b038216600090815260208190526040812080548392906107e4908490610ae9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661088e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610393565b6001600160a01b038216600090815260208190526040902054818110156109025760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610393565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610931908490610afc565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104fa565b600060208083528351808285015260005b818110156109a157858101830151858201604001528201610985565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109d957600080fd5b919050565b600080604083850312156109f157600080fd5b6109fa836109c2565b946020939093013593505050565b600080600060608486031215610a1d57600080fd5b610a26846109c2565b9250610a34602085016109c2565b9150604084013590509250925092565b600060208284031215610a5657600080fd5b610a5f826109c2565b9392505050565b60008060408385031215610a7957600080fd5b610a82836109c2565b9150610a90602084016109c2565b90509250929050565b600181811c90821680610aad57607f821691505b602082108103610acd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102b6576102b6610ad3565b818103818111156102b6576102b6610ad356fea26469706673582212208a2cc443b16dc06c57f6100602639aabaa17f9df41bcaba306b5ca9e9686a08564736f6c63430008100033",
340
+ "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c5780639dc29fac116100665780639dc29fac146101c4578063a457c2d7146101d7578063a9059cbb146101ea578063dd62ed3e146101fd57600080fd5b806340c10f191461017e57806370a082311461019357806395d89b41146101bc57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a578063395093511461016b575b600080fd5b6100dc610210565b6040516100e99190610974565b60405180910390f35b6101056101003660046109de565b6102a2565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b610105610135366004610a08565b6102bc565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100e9565b6101056101793660046109de565b6102e0565b61019161018c3660046109de565b610302565b005b6101196101a1366004610a44565b6001600160a01b031660009081526020819052604090205490565b6100dc610310565b6101916101d23660046109de565b61031f565b6101056101e53660046109de565b610329565b6101056101f83660046109de565b6103a9565b61011961020b366004610a66565b6103b7565b60606003805461021f90610a99565b80601f016020809104026020016040519081016040528092919081815260200182805461024b90610a99565b80156102985780601f1061026d57610100808354040283529160200191610298565b820191906000526020600020905b81548152906001019060200180831161027b57829003601f168201915b5050505050905090565b6000336102b08185856103e2565b60019150505b92915050565b6000336102ca858285610507565b6102d5858585610581565b506001949350505050565b6000336102b08185856102f383836103b7565b6102fd9190610ae9565b6103e2565b61030c828261074f565b5050565b60606004805461021f90610a99565b61030c828261082e565b6000338161033782866103b7565b90508381101561039c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102d582868684036103e2565b6000336102b0818585610581565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166104445760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610393565b6001600160a01b0382166104a55760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610393565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061051384846103b7565b9050600019811461057b578181101561056e5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610393565b61057b84848484036103e2565b50505050565b6001600160a01b0383166105e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610393565b6001600160a01b0382166106475760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610393565b6001600160a01b038316600090815260208190526040902054818110156106bf5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610393565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106f6908490610ae9565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161074291815260200190565b60405180910390a361057b565b6001600160a01b0382166107a55760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610393565b80600260008282546107b79190610ae9565b90915550506001600160a01b038216600090815260208190526040812080548392906107e4908490610ae9565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b03821661088e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610393565b6001600160a01b038216600090815260208190526040902054818110156109025760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610393565b6001600160a01b0383166000908152602081905260408120838303905560028054849290610931908490610afc565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906020016104fa565b600060208083528351808285015260005b818110156109a157858101830151858201604001528201610985565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146109d957600080fd5b919050565b600080604083850312156109f157600080fd5b6109fa836109c2565b946020939093013593505050565b600080600060608486031215610a1d57600080fd5b610a26846109c2565b9250610a34602085016109c2565b9150604084013590509250925092565b600060208284031215610a5657600080fd5b610a5f826109c2565b9392505050565b60008060408385031215610a7957600080fd5b610a82836109c2565b9150610a90602084016109c2565b90509250929050565b600181811c90821680610aad57607f821691505b602082108103610acd57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156102b6576102b6610ad3565b818103818111156102b6576102b6610ad356fea26469706673582212208a2cc443b16dc06c57f6100602639aabaa17f9df41bcaba306b5ca9e9686a08564736f6c63430008100033",
341
+ "linkReferences": {},
342
+ "deployedLinkReferences": {}
343
+ }