@venusprotocol/governance-contracts 2.2.0-dev.1 → 2.3.0-dev.1
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.
- package/deployments/zksyncsepolia/.chainId +1 -0
- package/deployments/zksyncsepolia/AccessControlManager.json +630 -0
- package/deployments/zksyncsepolia/solcInputs/bbb815e123a08a26954984beb0f34bc0.json +139 -0
- package/deployments/zksyncsepolia.json +369 -0
- package/deployments/zksyncsepolia_addresses.json +7 -0
- package/dist/hardhat.config.d.ts.map +1 -1
- package/dist/hardhat.config.js +0 -1
- package/dist/hardhat.config.js.map +1 -1
- package/dist/helpers/deploy/constants.d.ts +1 -0
- package/dist/helpers/deploy/constants.d.ts.map +1 -1
- package/dist/helpers/deploy/constants.js +3 -0
- package/dist/helpers/deploy/constants.js.map +1 -1
- package/dist/helpers/deploy/deploymentConfig.d.ts.map +1 -1
- package/dist/helpers/deploy/deploymentConfig.js +6 -0
- package/dist/helpers/deploy/deploymentConfig.js.map +1 -1
- package/dist/helpers/deploy/deploymentUtils.d.ts.map +1 -1
- package/dist/helpers/deploy/deploymentUtils.js +7 -1
- package/dist/helpers/deploy/deploymentUtils.js.map +1 -1
- package/package.json +14 -6
|
@@ -0,0 +1,630 @@
|
|
|
1
|
+
{
|
|
2
|
+
"address": "0xD07f543d47c3a8997D6079958308e981AC14CD01",
|
|
3
|
+
"abi": [
|
|
4
|
+
{
|
|
5
|
+
"inputs": [],
|
|
6
|
+
"stateMutability": "nonpayable",
|
|
7
|
+
"type": "constructor"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"anonymous": false,
|
|
11
|
+
"inputs": [
|
|
12
|
+
{
|
|
13
|
+
"indexed": false,
|
|
14
|
+
"internalType": "address",
|
|
15
|
+
"name": "account",
|
|
16
|
+
"type": "address"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"indexed": false,
|
|
20
|
+
"internalType": "address",
|
|
21
|
+
"name": "contractAddress",
|
|
22
|
+
"type": "address"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"indexed": false,
|
|
26
|
+
"internalType": "string",
|
|
27
|
+
"name": "functionSig",
|
|
28
|
+
"type": "string"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"name": "PermissionGranted",
|
|
32
|
+
"type": "event"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"anonymous": false,
|
|
36
|
+
"inputs": [
|
|
37
|
+
{
|
|
38
|
+
"indexed": false,
|
|
39
|
+
"internalType": "address",
|
|
40
|
+
"name": "account",
|
|
41
|
+
"type": "address"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
"indexed": false,
|
|
45
|
+
"internalType": "address",
|
|
46
|
+
"name": "contractAddress",
|
|
47
|
+
"type": "address"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"indexed": false,
|
|
51
|
+
"internalType": "string",
|
|
52
|
+
"name": "functionSig",
|
|
53
|
+
"type": "string"
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"name": "PermissionRevoked",
|
|
57
|
+
"type": "event"
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"anonymous": false,
|
|
61
|
+
"inputs": [
|
|
62
|
+
{
|
|
63
|
+
"indexed": true,
|
|
64
|
+
"internalType": "bytes32",
|
|
65
|
+
"name": "role",
|
|
66
|
+
"type": "bytes32"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"indexed": true,
|
|
70
|
+
"internalType": "bytes32",
|
|
71
|
+
"name": "previousAdminRole",
|
|
72
|
+
"type": "bytes32"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"indexed": true,
|
|
76
|
+
"internalType": "bytes32",
|
|
77
|
+
"name": "newAdminRole",
|
|
78
|
+
"type": "bytes32"
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
"name": "RoleAdminChanged",
|
|
82
|
+
"type": "event"
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"anonymous": false,
|
|
86
|
+
"inputs": [
|
|
87
|
+
{
|
|
88
|
+
"indexed": true,
|
|
89
|
+
"internalType": "bytes32",
|
|
90
|
+
"name": "role",
|
|
91
|
+
"type": "bytes32"
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"indexed": true,
|
|
95
|
+
"internalType": "address",
|
|
96
|
+
"name": "account",
|
|
97
|
+
"type": "address"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"indexed": true,
|
|
101
|
+
"internalType": "address",
|
|
102
|
+
"name": "sender",
|
|
103
|
+
"type": "address"
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"name": "RoleGranted",
|
|
107
|
+
"type": "event"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"anonymous": false,
|
|
111
|
+
"inputs": [
|
|
112
|
+
{
|
|
113
|
+
"indexed": true,
|
|
114
|
+
"internalType": "bytes32",
|
|
115
|
+
"name": "role",
|
|
116
|
+
"type": "bytes32"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"indexed": true,
|
|
120
|
+
"internalType": "address",
|
|
121
|
+
"name": "account",
|
|
122
|
+
"type": "address"
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"indexed": true,
|
|
126
|
+
"internalType": "address",
|
|
127
|
+
"name": "sender",
|
|
128
|
+
"type": "address"
|
|
129
|
+
}
|
|
130
|
+
],
|
|
131
|
+
"name": "RoleRevoked",
|
|
132
|
+
"type": "event"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"inputs": [],
|
|
136
|
+
"name": "DEFAULT_ADMIN_ROLE",
|
|
137
|
+
"outputs": [
|
|
138
|
+
{
|
|
139
|
+
"internalType": "bytes32",
|
|
140
|
+
"name": "",
|
|
141
|
+
"type": "bytes32"
|
|
142
|
+
}
|
|
143
|
+
],
|
|
144
|
+
"stateMutability": "view",
|
|
145
|
+
"type": "function"
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"inputs": [
|
|
149
|
+
{
|
|
150
|
+
"internalType": "bytes32",
|
|
151
|
+
"name": "role",
|
|
152
|
+
"type": "bytes32"
|
|
153
|
+
}
|
|
154
|
+
],
|
|
155
|
+
"name": "getRoleAdmin",
|
|
156
|
+
"outputs": [
|
|
157
|
+
{
|
|
158
|
+
"internalType": "bytes32",
|
|
159
|
+
"name": "",
|
|
160
|
+
"type": "bytes32"
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"stateMutability": "view",
|
|
164
|
+
"type": "function"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"inputs": [
|
|
168
|
+
{
|
|
169
|
+
"internalType": "address",
|
|
170
|
+
"name": "contractAddress",
|
|
171
|
+
"type": "address"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"internalType": "string",
|
|
175
|
+
"name": "functionSig",
|
|
176
|
+
"type": "string"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"internalType": "address",
|
|
180
|
+
"name": "accountToPermit",
|
|
181
|
+
"type": "address"
|
|
182
|
+
}
|
|
183
|
+
],
|
|
184
|
+
"name": "giveCallPermission",
|
|
185
|
+
"outputs": [],
|
|
186
|
+
"stateMutability": "nonpayable",
|
|
187
|
+
"type": "function"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"inputs": [
|
|
191
|
+
{
|
|
192
|
+
"internalType": "bytes32",
|
|
193
|
+
"name": "role",
|
|
194
|
+
"type": "bytes32"
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
"internalType": "address",
|
|
198
|
+
"name": "account",
|
|
199
|
+
"type": "address"
|
|
200
|
+
}
|
|
201
|
+
],
|
|
202
|
+
"name": "grantRole",
|
|
203
|
+
"outputs": [],
|
|
204
|
+
"stateMutability": "nonpayable",
|
|
205
|
+
"type": "function"
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
"inputs": [
|
|
209
|
+
{
|
|
210
|
+
"internalType": "address",
|
|
211
|
+
"name": "account",
|
|
212
|
+
"type": "address"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"internalType": "address",
|
|
216
|
+
"name": "contractAddress",
|
|
217
|
+
"type": "address"
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"internalType": "string",
|
|
221
|
+
"name": "functionSig",
|
|
222
|
+
"type": "string"
|
|
223
|
+
}
|
|
224
|
+
],
|
|
225
|
+
"name": "hasPermission",
|
|
226
|
+
"outputs": [
|
|
227
|
+
{
|
|
228
|
+
"internalType": "bool",
|
|
229
|
+
"name": "",
|
|
230
|
+
"type": "bool"
|
|
231
|
+
}
|
|
232
|
+
],
|
|
233
|
+
"stateMutability": "view",
|
|
234
|
+
"type": "function"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"inputs": [
|
|
238
|
+
{
|
|
239
|
+
"internalType": "bytes32",
|
|
240
|
+
"name": "role",
|
|
241
|
+
"type": "bytes32"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"internalType": "address",
|
|
245
|
+
"name": "account",
|
|
246
|
+
"type": "address"
|
|
247
|
+
}
|
|
248
|
+
],
|
|
249
|
+
"name": "hasRole",
|
|
250
|
+
"outputs": [
|
|
251
|
+
{
|
|
252
|
+
"internalType": "bool",
|
|
253
|
+
"name": "",
|
|
254
|
+
"type": "bool"
|
|
255
|
+
}
|
|
256
|
+
],
|
|
257
|
+
"stateMutability": "view",
|
|
258
|
+
"type": "function"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"inputs": [
|
|
262
|
+
{
|
|
263
|
+
"internalType": "address",
|
|
264
|
+
"name": "account",
|
|
265
|
+
"type": "address"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"internalType": "string",
|
|
269
|
+
"name": "functionSig",
|
|
270
|
+
"type": "string"
|
|
271
|
+
}
|
|
272
|
+
],
|
|
273
|
+
"name": "isAllowedToCall",
|
|
274
|
+
"outputs": [
|
|
275
|
+
{
|
|
276
|
+
"internalType": "bool",
|
|
277
|
+
"name": "",
|
|
278
|
+
"type": "bool"
|
|
279
|
+
}
|
|
280
|
+
],
|
|
281
|
+
"stateMutability": "view",
|
|
282
|
+
"type": "function"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"inputs": [
|
|
286
|
+
{
|
|
287
|
+
"internalType": "bytes32",
|
|
288
|
+
"name": "role",
|
|
289
|
+
"type": "bytes32"
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"internalType": "address",
|
|
293
|
+
"name": "account",
|
|
294
|
+
"type": "address"
|
|
295
|
+
}
|
|
296
|
+
],
|
|
297
|
+
"name": "renounceRole",
|
|
298
|
+
"outputs": [],
|
|
299
|
+
"stateMutability": "nonpayable",
|
|
300
|
+
"type": "function"
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"inputs": [
|
|
304
|
+
{
|
|
305
|
+
"internalType": "address",
|
|
306
|
+
"name": "contractAddress",
|
|
307
|
+
"type": "address"
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
"internalType": "string",
|
|
311
|
+
"name": "functionSig",
|
|
312
|
+
"type": "string"
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"internalType": "address",
|
|
316
|
+
"name": "accountToRevoke",
|
|
317
|
+
"type": "address"
|
|
318
|
+
}
|
|
319
|
+
],
|
|
320
|
+
"name": "revokeCallPermission",
|
|
321
|
+
"outputs": [],
|
|
322
|
+
"stateMutability": "nonpayable",
|
|
323
|
+
"type": "function"
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"inputs": [
|
|
327
|
+
{
|
|
328
|
+
"internalType": "bytes32",
|
|
329
|
+
"name": "role",
|
|
330
|
+
"type": "bytes32"
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"internalType": "address",
|
|
334
|
+
"name": "account",
|
|
335
|
+
"type": "address"
|
|
336
|
+
}
|
|
337
|
+
],
|
|
338
|
+
"name": "revokeRole",
|
|
339
|
+
"outputs": [],
|
|
340
|
+
"stateMutability": "nonpayable",
|
|
341
|
+
"type": "function"
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
"inputs": [
|
|
345
|
+
{
|
|
346
|
+
"internalType": "bytes4",
|
|
347
|
+
"name": "interfaceId",
|
|
348
|
+
"type": "bytes4"
|
|
349
|
+
}
|
|
350
|
+
],
|
|
351
|
+
"name": "supportsInterface",
|
|
352
|
+
"outputs": [
|
|
353
|
+
{
|
|
354
|
+
"internalType": "bool",
|
|
355
|
+
"name": "",
|
|
356
|
+
"type": "bool"
|
|
357
|
+
}
|
|
358
|
+
],
|
|
359
|
+
"stateMutability": "view",
|
|
360
|
+
"type": "function"
|
|
361
|
+
}
|
|
362
|
+
],
|
|
363
|
+
"transactionHash": "0x8e075d16880005bb6c418dd2c5fdb3474f9c43373e143afa0fc66a94c5bd972e",
|
|
364
|
+
"receipt": {
|
|
365
|
+
"to": "0x0000000000000000000000000000000000008006",
|
|
366
|
+
"from": "0xE8C6Cf867CF962d289305ECE9b139a4116674541",
|
|
367
|
+
"contractAddress": "0xD07f543d47c3a8997D6079958308e981AC14CD01",
|
|
368
|
+
"transactionIndex": 0,
|
|
369
|
+
"gasUsed": "267838",
|
|
370
|
+
"logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
|
|
371
|
+
"blockHash": "0x16786704247cfc34a6a14d6f51401ebc53772888078b02ea31cc073923fa2c98",
|
|
372
|
+
"transactionHash": "0x8e075d16880005bb6c418dd2c5fdb3474f9c43373e143afa0fc66a94c5bd972e",
|
|
373
|
+
"logs": [
|
|
374
|
+
{
|
|
375
|
+
"transactionIndex": 0,
|
|
376
|
+
"blockNumber": 3445364,
|
|
377
|
+
"transactionHash": "0x8e075d16880005bb6c418dd2c5fdb3474f9c43373e143afa0fc66a94c5bd972e",
|
|
378
|
+
"address": "0x000000000000000000000000000000000000800A",
|
|
379
|
+
"topics": [
|
|
380
|
+
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
|
|
381
|
+
"0x000000000000000000000000e8c6cf867cf962d289305ece9b139a4116674541",
|
|
382
|
+
"0x0000000000000000000000000000000000000000000000000000000000008001"
|
|
383
|
+
],
|
|
384
|
+
"data": "0x00000000000000000000000000000000000000000000000000000bb5928250c0",
|
|
385
|
+
"logIndex": 0,
|
|
386
|
+
"blockHash": "0x16786704247cfc34a6a14d6f51401ebc53772888078b02ea31cc073923fa2c98"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"transactionIndex": 0,
|
|
390
|
+
"blockNumber": 3445364,
|
|
391
|
+
"transactionHash": "0x8e075d16880005bb6c418dd2c5fdb3474f9c43373e143afa0fc66a94c5bd972e",
|
|
392
|
+
"address": "0xD07f543d47c3a8997D6079958308e981AC14CD01",
|
|
393
|
+
"topics": [
|
|
394
|
+
"0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
|
|
395
|
+
"0x0000000000000000000000000000000000000000000000000000000000000000",
|
|
396
|
+
"0x000000000000000000000000e8c6cf867cf962d289305ece9b139a4116674541",
|
|
397
|
+
"0x000000000000000000000000e8c6cf867cf962d289305ece9b139a4116674541"
|
|
398
|
+
],
|
|
399
|
+
"data": "0x",
|
|
400
|
+
"logIndex": 1,
|
|
401
|
+
"blockHash": "0x16786704247cfc34a6a14d6f51401ebc53772888078b02ea31cc073923fa2c98"
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"transactionIndex": 0,
|
|
405
|
+
"blockNumber": 3445364,
|
|
406
|
+
"transactionHash": "0x8e075d16880005bb6c418dd2c5fdb3474f9c43373e143afa0fc66a94c5bd972e",
|
|
407
|
+
"address": "0x0000000000000000000000000000000000008006",
|
|
408
|
+
"topics": [
|
|
409
|
+
"0x290afdae231a3fc0bbae8b1af63698b0a1d79b21ad17df0342dfb952fe74f8e5",
|
|
410
|
+
"0x000000000000000000000000e8c6cf867cf962d289305ece9b139a4116674541",
|
|
411
|
+
"0x0100020b39784512b369ad87d7344a9e54360b289dc34eaf6ae47947347101ad",
|
|
412
|
+
"0x000000000000000000000000d07f543d47c3a8997d6079958308e981ac14cd01"
|
|
413
|
+
],
|
|
414
|
+
"data": "0x",
|
|
415
|
+
"logIndex": 2,
|
|
416
|
+
"blockHash": "0x16786704247cfc34a6a14d6f51401ebc53772888078b02ea31cc073923fa2c98"
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
"transactionIndex": 0,
|
|
420
|
+
"blockNumber": 3445364,
|
|
421
|
+
"transactionHash": "0x8e075d16880005bb6c418dd2c5fdb3474f9c43373e143afa0fc66a94c5bd972e",
|
|
422
|
+
"address": "0x000000000000000000000000000000000000800A",
|
|
423
|
+
"topics": [
|
|
424
|
+
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
|
|
425
|
+
"0x0000000000000000000000000000000000000000000000000000000000008001",
|
|
426
|
+
"0x000000000000000000000000e8c6cf867cf962d289305ece9b139a4116674541"
|
|
427
|
+
],
|
|
428
|
+
"data": "0x0000000000000000000000000000000000000000000000000000059e8cc9b140",
|
|
429
|
+
"logIndex": 3,
|
|
430
|
+
"blockHash": "0x16786704247cfc34a6a14d6f51401ebc53772888078b02ea31cc073923fa2c98"
|
|
431
|
+
}
|
|
432
|
+
],
|
|
433
|
+
"blockNumber": 3445364,
|
|
434
|
+
"cumulativeGasUsed": "0",
|
|
435
|
+
"status": 1,
|
|
436
|
+
"byzantium": true
|
|
437
|
+
},
|
|
438
|
+
"args": [],
|
|
439
|
+
"numDeployments": 1,
|
|
440
|
+
"solcInputHash": "bbb815e123a08a26954984beb0f34bc0",
|
|
441
|
+
"metadata": {
|
|
442
|
+
"llvm_options": [],
|
|
443
|
+
"optimizer_settings": {
|
|
444
|
+
"is_debug_logging_enabled": false,
|
|
445
|
+
"is_fallback_to_size_enabled": false,
|
|
446
|
+
"is_verify_each_enabled": false,
|
|
447
|
+
"level_back_end": "Aggressive",
|
|
448
|
+
"level_middle_end": "Aggressive",
|
|
449
|
+
"level_middle_end_size": "Zero"
|
|
450
|
+
},
|
|
451
|
+
"solc_metadata": "{\"compiler\":{\"version\":\"0.8.25+commit.47b979f3\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"}],\"name\":\"PermissionGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"}],\"name\":\"PermissionRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"accountToPermit\",\"type\":\"address\"}],\"name\":\"giveCallPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"}],\"name\":\"hasPermission\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"}],\"name\":\"isAllowedToCall\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"functionSig\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"accountToRevoke\",\"type\":\"address\"}],\"name\":\"revokeCallPermission\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Venus\",\"details\":\"This contract is a wrapper of OpenZeppelin AccessControl extending it in a way to standartize access control within Venus Smart Contract Ecosystem.\",\"events\":{\"PermissionGranted(address,address,string)\":{\"details\":\"If contract address is 0x000..0 this means that the account is a default admin of this function and can call any contract function with this signature\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"giveCallPermission(address,string,address)\":{\"custom:event\":\"Emits a {RoleGranted} and {PermissionGranted} events.\",\"details\":\"this function can be called only from Role Admin or DEFAULT_ADMIN_ROLEif contractAddress is zero address, the account can access the specified function on **any** contract managed by this ACL\",\"params\":{\"accountToPermit\":\"account that will be given access to the contract function\",\"contractAddress\":\"address of contract for which call permissions will be granted\",\"functionSig\":\"signature e.g. \\\"functionName(uint256,bool)\\\"\"}},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasPermission(address,address,string)\":{\"details\":\"This function is used as a view function to check permissions rather than contract hook for access restriction check.\",\"params\":{\"account\":\"for which call permissions will be checked against\",\"contractAddress\":\"address of the restricted contract\",\"functionSig\":\"signature of the restricted function e.g. \\\"functionName(uint256,bool)\\\"\"},\"returns\":{\"_0\":\"false if the user account cannot call the particular contract function\"}},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isAllowedToCall(address,string)\":{\"details\":\"Since restricted contracts using this function as a permission hook, we can get contracts address with msg.sender\",\"params\":{\"account\":\"for which call permissions will be checked\",\"functionSig\":\"restricted function signature e.g. \\\"functionName(uint256,bool)\\\"\"},\"returns\":{\"_0\":\"false if the user account cannot call the particular contract function\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event.\"},\"revokeCallPermission(address,string,address)\":{\"custom:event\":\"Emits {RoleRevoked} and {PermissionRevoked} events.\",\"details\":\"this function can be called only from Role Admin or DEFAULT_ADMIN_ROLE \\t\\tMay emit a {RoleRevoked} event.\",\"params\":{\"contractAddress\":\"address of contract for which call permissions will be revoked\",\"functionSig\":\"signature e.g. \\\"functionName(uint256,bool)\\\"\"}},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"}},\"title\":\"AccessControlManager\",\"version\":1},\"userdoc\":{\"events\":{\"PermissionGranted(address,address,string)\":{\"notice\":\"Emitted when an account is given a permission to a certain contract function\"},\"PermissionRevoked(address,address,string)\":{\"notice\":\"Emitted when an account is revoked a permission to a certain contract function\"}},\"kind\":\"user\",\"methods\":{\"giveCallPermission(address,string,address)\":{\"notice\":\"Gives a function call permission to one single account\"},\"hasPermission(address,address,string)\":{\"notice\":\"Verifies if the given account can call a contract's guarded function\"},\"isAllowedToCall(address,string)\":{\"notice\":\"Verifies if the given account can call a contract's guarded function\"},\"revokeCallPermission(address,string,address)\":{\"notice\":\"Revokes an account's permission to a particular function call\"}},\"notice\":\"Access control plays a crucial role in the Venus governance model. It is used to restrict functions so that they can only be called from one account or list of accounts (EOA or Contract Accounts). The implementation of `AccessControlManager`(https://github.com/VenusProtocol/governance-contracts/blob/main/contracts/Governance/AccessControlManager.sol) inherits the [Open Zeppelin AccessControl](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/AccessControl.sol) contract as a base for role management logic. There are two role types: admin and granular permissions. ## Granular Roles Granular roles are built by hashing the contract address and its function signature. For example, given contract `Foo` with function `Foo.bar()` which is guarded by ACM, calling `giveRolePermission` for account B do the following: 1. Compute `keccak256(contractFooAddress,functionSignatureBar)` 1. Add the computed role to the roles of account B 1. Account B now can call `ContractFoo.bar()` ## Admin Roles Admin roles allow for an address to call a function signature on any contract guarded by the `AccessControlManager`. This is particularly useful for contracts created by factories. For Admin roles a null address is hashed in place of the contract address (`keccak256(0x0000000000000000000000000000000000000000,functionSignatureBar)`. In the previous example, giving account B the admin role, account B will have permissions to call the `bar()` function on any contract that is guarded by ACM, not only contract A. ## Protocol Integration All restricted functions in Venus Protocol use a hook to ACM in order to check if the caller has the right permission to call the guarded function. `AccessControlledV5` and `AccessControlledV8` abstract contract makes this integration easier. They call ACM's external method `isAllowedToCall(address caller, string functionSig)`. Here is an example of how `setCollateralFactor` function in `Comptroller` is integrated with ACM: ``` contract Comptroller is [...] AccessControlledV8 { [...] function setCollateralFactor(VToken vToken, uint256 newCollateralFactorMantissa, uint256 newLiquidationThresholdMantissa) external { _checkAccessAllowed(\\\"setCollateralFactor(address,uint256,uint256)\\\"); [...] } } ```\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/Governance/AccessControlManager.sol\":\"AccessControlManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":false,\"deduplicate\":false,\"inliner\":false,\"jumpdestRemover\":false,\"orderLiterals\":false,\"peephole\":false,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoDgvulfnTUtnIf[xa[r]EscLMcCTUtTOntnfDIulLculVcul [j]Tpeulxa[rul]xa[r]cLgvifCTUca[r]LSsTFOtfDnca[r]Iulc]jmul[jul] VcTOcul jmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0x67e3daf189111d6d5b0464ed09cf9f0605a22c4b965a7fcecd707101faff008a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbbb1a75e4064d564bf69e74970eef35064e51fcc09cbf3589aee7faa60d6afe\",\"dweb:/ipfs/QmYfAtQwFSGmxomnyAV3tpBDbfDwiFXV61osWW2zzQVg5Q\"]},\"@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x59ce320a585d7e1f163cd70390a0ef2ff9cec832e2aa544293a00692465a7a57\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb2c137c343ef0c4c7ce7b18c1d108afdc9d315a04e48307288d2d05adcbde3a\",\"dweb:/ipfs/QmUxhrAQM3MM3FF5j7AtcXLXguWCJBHJ14BRdVtuoQc8Fh\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"@openzeppelin/contracts/utils/Strings.sol\":{\"keccak256\":\"0xa4d1d62251f8574deb032a35fc948386a9b4de74b812d4f545a1ac120486b48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8c969013129ba9e651a20735ef659fef6d8a1139ea3607bd4b26ddea2d645634\",\"dweb:/ipfs/QmVhVa6LGuzAcB8qgDtVHRkucn4ihj5UZr8xBLcJkP6ucb\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"@openzeppelin/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa1e8e83cd0087785df04ac79fb395d9f3684caeaf973d9e2c71caef723a3a5d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33bbf48cc069be677705037ba7520c22b1b622c23b33e1a71495f2d36549d40b\",\"dweb:/ipfs/Qmct36zWXv3j7LZB83uwbg7TXwnZSN1fqHNDZ93GG98bGz\"]},\"contracts/Governance/AccessControlManager.sol\":{\"keccak256\":\"0x9cf1fe49aecbf49434d4a04c3bd25c1a103356c999d335774216da17a3a152a8\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://b69251cb559a7924a14449362b36cd97953f47266bba6a380f9fae0954c04e0b\",\"dweb:/ipfs/QmZXTzxnPpp4AuaLZCuhvVhebzrznrCUhuzN25redsk83T\"]},\"contracts/Governance/IAccessControlManagerV8.sol\":{\"keccak256\":\"0xaa29b098440d0b3a131c5ecdf25ce548790c1b5ac7bf9b5c0264b6af6f7a1e0b\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://8120bda3990193388d0cc5f551510ef1eab685387a58a88ab607b5149e51acde\",\"dweb:/ipfs/QmNSX9ai6GbN4wQukM29rFkcWDFhqStUTtKe6XtreTvRcN\"]}},\"version\":1}",
|
|
452
|
+
"solc_version": "0.8.25",
|
|
453
|
+
"solc_zkvm_edition": "1.0.1",
|
|
454
|
+
"zk_version": "1.5.1"
|
|
455
|
+
},
|
|
456
|
+
"bytecode": "0x00020000000000020008000000000002000100000001035500000000030100190000006003300270000001d50030019d0000008004000039000000400040043f00000001002001900000004c0000c13d000001d502300197000000040020008c000005940000413d000000000301043b000000e003300270000001da0030009c0000009b0000a13d000001db0030009c000000b40000213d000001df0030009c000001ac0000613d000001e00030009c0000028e0000613d000001e10030009c000005940000c13d000000640020008c000005940000413d0000000003000416000000000003004b000005940000c13d0000000403100370000000000303043b000800000003001d000001e80030009c000005940000213d0000002403100370000000000303043b000700000003001d000001e80030009c000005940000213d0000004401100370000000000101043b000001ea0010009c000005940000213d0000000401100039074e05960000040f00000000030100190000000004020019000000400100043d000600000001001d0000002001100039000500000001001d0000000702000029074e05b00000040f00000006030000290000000002310049000000200120008a00000000001304350000000001030019074e05d00000040f000000060100002900000000020104330000000501000029074e072f0000040f0000000802000029074e05e20000040f000000000001004b0000000001000019000000010100c039000000400200043d0000000000120435000001d50020009c000001d5020080410000004001200210000001eb011001c70000074f0001042e0000000001000416000000000001004b000005940000c13d0000000000000435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000000960000c13d0000000000000435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000201041a000002070220019700000001022001bf000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d020000390000000403000039000001d804000041000000000500001900000000060004110000000007060019074e07440000040f0000000100200190000005940000613d000000200100003900000100001004430000012000000443000001d9010000410000074f0001042e000001e20030009c000000d40000a13d000001e30030009c000002de0000613d000001e40030009c000002ef0000613d000001e50030009c000005940000c13d000000440020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000002402100370000000000302043b000001e80030009c000005940000213d0000000002000411000000000023004b0000038c0000c13d0000000401100370000000000101043b074e06d30000040f00000000010000190000074f0001042e000001dc0030009c000003570000613d000001dd0030009c000003750000613d000001de0030009c000005940000c13d000000440020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000002402100370000000000202043b000800000002001d000001e80020009c000005940000213d0000000401100370000000000101043b000700000001001d0000000000100435000000200000043f00000040020000390000000001000019074e072f0000040f0000000101100039000000000101041a074e06030000040f00000007010000290000000802000029074e06d30000040f00000000010000190000074f0001042e000001e60030009c0000037b0000613d000001e70030009c000005940000c13d000000440020008c000005940000413d0000000003000416000000000003004b000005940000c13d0000000403100370000000000303043b000800000003001d000001e80030009c000005940000213d0000002403100370000000000303043b000001ea0030009c000005940000213d0000002304300039000000000024004b000005940000813d0000000404300039000000000541034f000000000505043b000700000005001d000001ea0050009c000005940000213d00000007033000290000002403300039000000000023004b000005940000213d00000000020004110000006002200210000000a00020043f00000007020000290000001f0620018f0000002007400039000000000171034f0000000508200272000001040000613d000000b4020000390000000503800210000000b403300039000000000401034f000000004504043c0000000002520436000000000032004b000001000000c13d000000000006004b000001130000613d0000000502800210000000000121034f0000000303600210000000b402200039000000000402043300000000043401cf000000000434022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f00000000001204350000000703000029000000b4013000390000000000010435000000530130003900000208011001970000001402300039000000800020043f000002030010009c000002d80000813d000400000008001d000500000007001d000600000006001d000300000001001d0000008001100039000000400010043f000001d50020009c000200000002001d000001d501000041000000000102401900000060011002100000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ed011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000008020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000004690000c13d000000400100043d000000340310003900000020021000390000000000020435000000050400002900000001044003670000000405000029000000000005004b00000005055002100000015f0000613d0000000006530019000000000704034f0000000008030019000000007907043c0000000008980436000000000068004b0000015b0000c13d000000060000006b0000016e0000613d000000000454034f000000000553001900000006060000290000000306600210000000000705043300000000076701cf000000000767022f000000000404043b0000010006600089000000000464022f00000000046401cf000000000474019f000000000045043500000007033000290000000000030435000000020300002900000000003104350000000303100029000000000013004b00000000040000190000000104004039000001ea0030009c000002d80000213d0000000100400190000002d80000c13d000000400030043f000001d50020009c000001d50200804100000040022002100000000001010433000001d50010009c000001d5010080410000006001100210000000000121019f0000000002000414000001d50020009c000001d502008041000000c002200210000000000112019f000001d7011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000008020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff001001900000000001000019000000010100c0390000046a0000013d000000640020008c000005940000413d0000000003000416000000000003004b000005940000c13d0000000403100370000000000303043b000800000003001d000001e80030009c000005940000213d0000002403100370000000000403043b000001ea0040009c000005940000213d0000002303400039000000000023004b000005940000813d0000000403400039000000000531034f000000000505043b000700000005001d000001ea0050009c000005940000213d0000002405400039000600000005001d0000000704500029000000000024004b000005940000213d0000004402100370000000000202043b000500000002001d000001e80020009c000005940000213d00000008020000290000006002200210000000a00020043f0000002002300039000000000121034f00000007020000290000001f0620018f0000000507200272000001de0000613d000000b4020000390000000503700210000000b403300039000000000401034f000000004504043c0000000002520436000000000032004b000001da0000c13d000000000006004b000001ed0000613d0000000502700210000000000121034f0000000303600210000000b402200039000000000402043300000000043401cf000000000434022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f00000000001204350000000703000029000000b4013000390000000000010435000000530130003900000208021001970000001401300039000000800010043f000001ec0020009c000002d80000213d000300000007001d000400000006001d0000008002200039000000400020043f000001d50010009c000001d50100804100000060011002100000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ed011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000200000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000101100039000000000101041a000100000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff001001900000046c0000c13d000000400200043d000001f10020009c000002d80000213d0000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000103300367000000000503034f0000000006010019000000005705043c0000000006760436000000000046004b0000023f0000c13d0000000004010433000001f204400197000001f3044001c7000000000041043500000021042000390000000005040433000001f205500197000001f4055001c700000000005404350000002904000039000000000600041100000000050600190000000006020433000000000046004b000005530000a13d00000000061400190000000007060433000001f2077001970000000308500210000000780880018f000001f50880021f000001f608800197000000000787019f00000000007604350000000406500270000000010440008a000000010040008c0000024e0000213d000000100050008c000005590000813d000000400400043d000800000004001d000001ec0040009c000002d80000213d00000008060000290000008004600039000000400040043f00000042050000390000000005560436000700000005001d000000003603043c0000000005650436000000000045004b0000026b0000c13d00000007090000290000000003090433000001f203300197000001f3033001c70000000000390435000000080800002900000021038000390000000004030433000001f204400197000001f4044001c700000000004304350000004103000039000000010500002900000000040500190000000005080433000000000035004b000005530000a13d00000000059300190000000006050433000001f2066001970000000307400210000000780770018f000001f50770021f000001f607700197000000000676019f00000000006504350000000405400270000000010330008a000000010030008c0000027c0000213d0000042f0000013d000000640020008c000005940000413d0000000003000416000000000003004b000005940000c13d0000000403100370000000000303043b000800000003001d000001e80030009c000005940000213d0000002403100370000000000403043b000001ea0040009c000005940000213d0000002303400039000000000023004b000005940000813d0000000403400039000000000531034f000000000505043b000700000005001d000001ea0050009c000005940000213d0000002405400039000600000005001d0000000704500029000000000024004b000005940000213d0000004402100370000000000202043b000500000002001d000001e80020009c000005940000213d00000008020000290000006002200210000000a00020043f0000002002300039000000000121034f00000007020000290000001f0620018f0000000507200272000002c00000613d000000b4020000390000000503700210000000b403300039000000000401034f000000004504043c0000000002520436000000000032004b000002bc0000c13d000000000006004b000002cf0000613d0000000502700210000000000121034f0000000303600210000000b402200039000000000402043300000000043401cf000000000434022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f00000000001204350000000703000029000000b4013000390000000000010435000000530130003900000208021001970000001401300039000000800010043f000001ec0020009c000003980000a13d000001fc0100004100000000001004350000004101000039000000040010043f000001fd010000410000075000010430000000240020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000000401100370000000000101043b0000000000100435000000200000043f00000040020000390000000001000019074e072f0000040f0000000101100039000000000101041a000000800010043f000001e9010000410000074f0001042e000000440020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000000402100370000000000202043b000800000002001d0000002401100370000000000101043b000700000001001d000001e80010009c000005940000213d00000008010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000101100039000000000101041a074e06030000040f00000008010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000003550000c13d00000008010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000201041a000002070220019700000001022001bf000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d0200003900000004030000390000000007000411000001d80400004100000008050000290000000706000029074e07440000040f0000000100200190000005940000613d00000000010000190000074f0001042e000000440020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000002402100370000000000202043b000800000002001d000001e80020009c000005940000213d0000000401100370000000000101043b0000000000100435000000200000043f00000040020000390000000001000019074e072f0000040f00000008020000290000000000200435000000200010043f00000000010000190000004002000039074e072f0000040f000000000101041a000000ff001001900000000001000019000000010100c039000000800010043f000001e9010000410000074f0001042e0000000001000416000000000001004b000005940000c13d000000800000043f000001e9010000410000074f0001042e000000240020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000000401100370000000000101043b0000020400100198000005940000c13d000002050010009c00000000020000190000000102006039000002060010009c00000001022061bf000000800020043f000001e9010000410000074f0001042e000001f901000041000000800010043f0000002001000039000000840010043f0000002f01000039000000a40010043f0000020001000041000000c40010043f0000020101000041000000e40010043f00000202010000410000075000010430000300000007001d000400000006001d0000008002200039000000400020043f000001d50010009c000001d50100804100000060011002100000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ed011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000200000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000101100039000000000101041a000100000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000004c80000c13d000000400200043d000001f10020009c000002d80000213d0000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000103300367000000000503034f0000000006010019000000005705043c0000000006760436000000000046004b000003e10000c13d0000000004010433000001f204400197000001f3044001c7000000000041043500000021042000390000000005040433000001f205500197000001f4055001c700000000005404350000002904000039000000000600041100000000050600190000000006020433000000000046004b000005530000a13d00000000061400190000000007060433000001f2077001970000000308500210000000780880018f000001f50880021f000001f608800197000000000787019f00000000007604350000000406500270000000010440008a000000010040008c000003f00000213d000000100050008c000005590000813d000000400400043d000800000004001d000001ec0040009c000002d80000213d00000008060000290000008004600039000000400040043f00000042050000390000000005560436000700000005001d000000003603043c0000000005650436000000000045004b0000040d0000c13d00000007090000290000000003090433000001f203300197000001f3033001c70000000000390435000000080800002900000021038000390000000004030433000001f204400197000001f4044001c700000000004304350000004103000039000000010500002900000000040500190000000005080433000000000035004b000005530000a13d00000000059300190000000006050433000001f2066001970000000307400210000000780770018f000001f50770021f000001f607700197000000000676019f00000000006504350000000405400270000000010330008a000000010030008c0000041e0000213d000000100040008c000005590000813d000000400500043d000600000005001d0000002004500039000400000004001d000001f70300004100000000003404350000000003020433000500000003001d0000003702500039074e07220000040f000000050200002900000006012000290000003702100039000001f8030000410000000000320435000000480210003900000008010000290000000003010433000800000003001d0000000701000029074e07220000040f000000080200002900000005032000290000002802300039000000060100002900000000002104350000004802300039074e05d00000040f000001f901000041000000400400043d000800000004001d000000000014043500000020010000390000000402400039000000000012043500000006010000290000000003010433000700000003001d0000002401400039000000000031043500000044024000390000000401000029074e07220000040f00000007010000290000001f0110003900000208011001970000004401100039000001d50010009c000001d5010080410000000802000029000001d50020009c000001d50200804100000060011002100000004002200210000000000121019f00000750000104300000000101000039000000010110018f000000450000013d00000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000005020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000005690000c13d000000400100043d000000600210003900000007030000290000000000320435000000400210003900000060030000390000000000320435000000200210003900000008030000290000000000320435000000050200002900000000002104350000008002100039000000060300002900000001033003670000000304000029000000000004004b0000000504400210000004a30000613d0000000005420019000000000603034f0000000007020019000000006806043c0000000007870436000000000057004b0000049f0000c13d000000040000006b000004b20000613d000000000343034f000000000442001900000004050000290000000305500210000000000604043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f00000000003404350000000703000029000000000232001900000000000204350000001f023000390000020802200197000001ee0020009c000001ee020080410000006002200210000001d50010009c000001d5010080410000004001100210000000000112019f0000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ef0110009a0000800d020000390000000103000039000001fb040000410000054f0000013d00000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000005020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000005110000c13d00000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000005020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000201041a000002070220019700000001022001bf000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d020000390000000403000039000001d804000041000000020500002900000005060000290000000007000411074e07440000040f0000000100200190000005940000613d000000400100043d000000600210003900000007030000290000000000320435000000400210003900000060030000390000000000320435000000200210003900000008030000290000000000320435000000050200002900000000002104350000008002100039000000060300002900000001033003670000000304000029000000000004004b00000005044002100000052b0000613d0000000005420019000000000603034f0000000007020019000000006806043c0000000007870436000000000057004b000005270000c13d000000040000006b0000053a0000613d000000000343034f000000000442001900000004050000290000000305500210000000000604043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f00000000003404350000000703000029000000000232001900000000000204350000001f023000390000020802200197000001ee0020009c000001ee020080410000006002200210000001d50010009c000001d5010080410000004001100210000000000112019f0000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ef0110009a0000800d020000390000000103000039000001f004000041074e07440000040f0000000100200190000003550000c13d000005940000013d000001fc0100004100000000001004350000003201000039000000040010043f000001fd010000410000075000010430000000400100043d0000004402100039000001fe030000410000000000320435000001f902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001d50010009c000001d5010080410000004001100210000001ff011001c7000007500001043000000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000005020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000201041a0000020702200197000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d020000390000000403000039000001fa04000041000000020500002900000005060000290000000007000411074e07440000040f0000000100200190000004890000c13d000000000100001900000750000104300000001f03100039000000000023004b0000000004000019000002090400404100000209052001970000020903300197000000000653013f000000000053004b00000000030000190000020903002041000002090060009c000000000304c019000000000003004b000005ae0000613d0000000103100367000000000303043b000001ea0030009c000005ae0000213d00000020011000390000000004310019000000000024004b000005ae0000213d0000000002030019000000000001042d00000000010000190000075000010430000000600220021000000000002104350000001f0240018f0000001401100039000000010330036700000005054002720000000505500210000005bf0000613d0000000006510019000000000703034f0000000008010019000000007907043c0000000008980436000000000068004b000005bb0000c13d000000000002004b000005cd0000613d000000000353034f00000000055100190000000302200210000000000605043300000000062601cf000000000626022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000262019f000000000025043500000000014100190000000000010435000000000001042d0000001f0220003900000208022001970000000001120019000000000021004b00000000020000190000000102004039000001ea0010009c000005dc0000213d0000000100200190000005dc0000c13d000000400010043f000000000001042d000001fc0100004100000000001004350000004101000039000000040010043f000001fd0100004100000750000104300001000000000002000100000002001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000006010000613d000000000101043b0000000102000029000001e8022001970000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000006010000613d000000000101043b000000000101041a000000ff0110018f000000000001042d000000000100001900000750000104300005000000000002000500000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000006220000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000006220000613d000000000101043b000000000101041a000000ff00100190000006240000613d000000000001042d00000000010000190000075000010430000000400200043d000001f10020009c0000062d0000a13d000001fc0100004100000000001004350000004101000039000000040010043f000001fd0100004100000750000104300000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000103300367000000000503034f0000000006010019000000005705043c0000000006760436000000000046004b000006350000c13d0000000004010433000001f204400197000001f3044001c7000000000041043500000021042000390000000005040433000001f205500197000001f4055001c700000000005404350000002904000039000000000600041100000000050600190000000006020433000000000046004b000006bd0000a13d00000000061400190000000007060433000001f2077001970000000308500210000000780880018f000001f50880021f000001f608800197000000000778019f00000000007604350000000406500270000000010440008a000000010040008c000006440000213d000000100050008c000006c30000813d000000400400043d000400000004001d000001ec0040009c000006270000213d00000004060000290000008004600039000000400040043f00000042050000390000000005560436000300000005001d000000003603043c0000000005650436000000000045004b000006610000c13d00000003090000290000000003090433000001f203300197000001f3033001c70000000000390435000000040800002900000021038000390000000004030433000001f204400197000001f4044001c700000000004304350000004103000039000000050500002900000000040500190000000005080433000000000035004b000006bd0000a13d00000000059300190000000006050433000001f2066001970000000307400210000000780770018f000001f50770021f000001f607700197000000000667019f00000000006504350000000405400270000000010330008a000000010030008c000006720000213d000000100040008c000006c30000813d000000400500043d000500000005001d0000002004500039000100000004001d000001f70300004100000000003404350000000003020433000200000003001d0000003702500039074e07220000040f000000020200002900000005012000290000003702100039000001f8030000410000000000320435000000480210003900000004010000290000000003010433000400000003001d0000000301000029074e07220000040f000000040200002900000002032000290000002802300039000000050100002900000000002104350000004802300039074e05d00000040f000001f901000041000000400400043d000400000004001d000000000014043500000020010000390000000402400039000000000012043500000005010000290000000003010433000500000003001d0000002401400039000000000031043500000044024000390000000101000029074e07220000040f00000005010000290000001f0110003900000208011001970000004401100039000001d50010009c000001d5010080410000000402000029000001d50020009c000001d50200804100000060011002100000004002200210000000000121019f0000075000010430000001fc0100004100000000001004350000003201000039000000040010043f000001fd010000410000075000010430000000400100043d0000004402100039000001fe030000410000000000320435000001f902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001d50010009c000001d5010080410000004001100210000001ff011001c700000750000104300002000000000002000100000002001d000200000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000007200000613d000000000101043b0000000102000029000001e802200197000100000002001d0000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000007200000613d000000000101043b000000000101041a000000ff001001900000071f0000613d00000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000007200000613d000000000101043b00000001020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000007200000613d000000000101043b000000000201041a0000020702200197000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d0200003900000004030000390000000007000411000001fa0400004100000002050000290000000106000029074e07440000040f0000000100200190000007200000613d000000000001042d00000000010000190000075000010430000000000003004b0000072c0000613d000000000400001900000000052400190000000006140019000000000606043300000000006504350000002004400039000000000034004b000007250000413d00000000012300190000000000010435000000000001042d000001d50010009c000001d5010080410000004001100210000001d50020009c000001d5020080410000006002200210000000000112019f0000000002000414000001d50020009c000001d502008041000000c002200210000000000112019f000001d7011001c70000801002000039074e07490000040f0000000100200190000007420000613d000000000101043b000000000001042d0000000001000019000007500001043000000747002104210000000102000039000000000001042d0000000002000019000000000001042d0000074c002104230000000102000039000000000001042d0000000002000019000000000001042d0000074e000004320000074f0001042e000007500001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff020000000000000000000000000000000000004000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000545f7a310000000000000000000000000000000000000000000000000000000091d148530000000000000000000000000000000000000000000000000000000091d1485400000000000000000000000000000000000000000000000000000000a217fddf00000000000000000000000000000000000000000000000000000000d547741f00000000000000000000000000000000000000000000000000000000545f7a3200000000000000000000000000000000000000000000000000000000584f6b600000000000000000000000000000000000000000000000000000000082bfd0f000000000000000000000000000000000000000000000000000000000248a9ca200000000000000000000000000000000000000000000000000000000248a9ca3000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000036568abe0000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000018c5e8ab000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f0200000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff8000000000000000000000000069c5ce2d658fea352a2464f87ffbe1f09746c918a91da0994044c3767d641b3f000000000000000000000000000000000000000000000000ffffffffffffff9f00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3000000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000000030313233343536373839616263646566000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000416363657373436f6e74726f6c3a206163636f756e7420000000000000000000206973206d697373696e6720726f6c652000000000000000000000000000000008c379a000000000000000000000000000000000000000000000000000000000f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b55426a61e90ac7d7d1fc886b67b420ade8c8b535e68d655394bc271e3a12b8e24e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000537472696e67733a20686578206c656e67746820696e73756666696369656e740000000000000000000000000000000000000064000000000000000000000000416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6600000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffff8000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a7000000000000000000000000000000000000000000000000000000007965db0b00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08000000000000000000000000000000000000000000000000000000000000000fd1ee08c1179665610b8d2598fa455dcea55b9c7917831dc5034ac67d54116f6",
|
|
457
|
+
"deployedBytecode": "0x00020000000000020008000000000002000100000001035500000000030100190000006003300270000001d50030019d0000008004000039000000400040043f00000001002001900000004c0000c13d000001d502300197000000040020008c000005940000413d000000000301043b000000e003300270000001da0030009c0000009b0000a13d000001db0030009c000000b40000213d000001df0030009c000001ac0000613d000001e00030009c0000028e0000613d000001e10030009c000005940000c13d000000640020008c000005940000413d0000000003000416000000000003004b000005940000c13d0000000403100370000000000303043b000800000003001d000001e80030009c000005940000213d0000002403100370000000000303043b000700000003001d000001e80030009c000005940000213d0000004401100370000000000101043b000001ea0010009c000005940000213d0000000401100039074e05960000040f00000000030100190000000004020019000000400100043d000600000001001d0000002001100039000500000001001d0000000702000029074e05b00000040f00000006030000290000000002310049000000200120008a00000000001304350000000001030019074e05d00000040f000000060100002900000000020104330000000501000029074e072f0000040f0000000802000029074e05e20000040f000000000001004b0000000001000019000000010100c039000000400200043d0000000000120435000001d50020009c000001d5020080410000004001200210000001eb011001c70000074f0001042e0000000001000416000000000001004b000005940000c13d0000000000000435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000000960000c13d0000000000000435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000201041a000002070220019700000001022001bf000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d020000390000000403000039000001d804000041000000000500001900000000060004110000000007060019074e07440000040f0000000100200190000005940000613d000000200100003900000100001004430000012000000443000001d9010000410000074f0001042e000001e20030009c000000d40000a13d000001e30030009c000002de0000613d000001e40030009c000002ef0000613d000001e50030009c000005940000c13d000000440020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000002402100370000000000302043b000001e80030009c000005940000213d0000000002000411000000000023004b0000038c0000c13d0000000401100370000000000101043b074e06d30000040f00000000010000190000074f0001042e000001dc0030009c000003570000613d000001dd0030009c000003750000613d000001de0030009c000005940000c13d000000440020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000002402100370000000000202043b000800000002001d000001e80020009c000005940000213d0000000401100370000000000101043b000700000001001d0000000000100435000000200000043f00000040020000390000000001000019074e072f0000040f0000000101100039000000000101041a074e06030000040f00000007010000290000000802000029074e06d30000040f00000000010000190000074f0001042e000001e60030009c0000037b0000613d000001e70030009c000005940000c13d000000440020008c000005940000413d0000000003000416000000000003004b000005940000c13d0000000403100370000000000303043b000800000003001d000001e80030009c000005940000213d0000002403100370000000000303043b000001ea0030009c000005940000213d0000002304300039000000000024004b000005940000813d0000000404300039000000000541034f000000000505043b000700000005001d000001ea0050009c000005940000213d00000007033000290000002403300039000000000023004b000005940000213d00000000020004110000006002200210000000a00020043f00000007020000290000001f0620018f0000002007400039000000000171034f0000000508200272000001040000613d000000b4020000390000000503800210000000b403300039000000000401034f000000004504043c0000000002520436000000000032004b000001000000c13d000000000006004b000001130000613d0000000502800210000000000121034f0000000303600210000000b402200039000000000402043300000000043401cf000000000434022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f00000000001204350000000703000029000000b4013000390000000000010435000000530130003900000208011001970000001402300039000000800020043f000002030010009c000002d80000813d000400000008001d000500000007001d000600000006001d000300000001001d0000008001100039000000400010043f000001d50020009c000200000002001d000001d501000041000000000102401900000060011002100000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ed011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000008020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000004690000c13d000000400100043d000000340310003900000020021000390000000000020435000000050400002900000001044003670000000405000029000000000005004b00000005055002100000015f0000613d0000000006530019000000000704034f0000000008030019000000007907043c0000000008980436000000000068004b0000015b0000c13d000000060000006b0000016e0000613d000000000454034f000000000553001900000006060000290000000306600210000000000705043300000000076701cf000000000767022f000000000404043b0000010006600089000000000464022f00000000046401cf000000000474019f000000000045043500000007033000290000000000030435000000020300002900000000003104350000000303100029000000000013004b00000000040000190000000104004039000001ea0030009c000002d80000213d0000000100400190000002d80000c13d000000400030043f000001d50020009c000001d50200804100000040022002100000000001010433000001d50010009c000001d5010080410000006001100210000000000121019f0000000002000414000001d50020009c000001d502008041000000c002200210000000000112019f000001d7011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000008020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff001001900000000001000019000000010100c0390000046a0000013d000000640020008c000005940000413d0000000003000416000000000003004b000005940000c13d0000000403100370000000000303043b000800000003001d000001e80030009c000005940000213d0000002403100370000000000403043b000001ea0040009c000005940000213d0000002303400039000000000023004b000005940000813d0000000403400039000000000531034f000000000505043b000700000005001d000001ea0050009c000005940000213d0000002405400039000600000005001d0000000704500029000000000024004b000005940000213d0000004402100370000000000202043b000500000002001d000001e80020009c000005940000213d00000008020000290000006002200210000000a00020043f0000002002300039000000000121034f00000007020000290000001f0620018f0000000507200272000001de0000613d000000b4020000390000000503700210000000b403300039000000000401034f000000004504043c0000000002520436000000000032004b000001da0000c13d000000000006004b000001ed0000613d0000000502700210000000000121034f0000000303600210000000b402200039000000000402043300000000043401cf000000000434022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f00000000001204350000000703000029000000b4013000390000000000010435000000530130003900000208021001970000001401300039000000800010043f000001ec0020009c000002d80000213d000300000007001d000400000006001d0000008002200039000000400020043f000001d50010009c000001d50100804100000060011002100000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ed011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000200000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000101100039000000000101041a000100000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff001001900000046c0000c13d000000400200043d000001f10020009c000002d80000213d0000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000103300367000000000503034f0000000006010019000000005705043c0000000006760436000000000046004b0000023f0000c13d0000000004010433000001f204400197000001f3044001c7000000000041043500000021042000390000000005040433000001f205500197000001f4055001c700000000005404350000002904000039000000000600041100000000050600190000000006020433000000000046004b000005530000a13d00000000061400190000000007060433000001f2077001970000000308500210000000780880018f000001f50880021f000001f608800197000000000787019f00000000007604350000000406500270000000010440008a000000010040008c0000024e0000213d000000100050008c000005590000813d000000400400043d000800000004001d000001ec0040009c000002d80000213d00000008060000290000008004600039000000400040043f00000042050000390000000005560436000700000005001d000000003603043c0000000005650436000000000045004b0000026b0000c13d00000007090000290000000003090433000001f203300197000001f3033001c70000000000390435000000080800002900000021038000390000000004030433000001f204400197000001f4044001c700000000004304350000004103000039000000010500002900000000040500190000000005080433000000000035004b000005530000a13d00000000059300190000000006050433000001f2066001970000000307400210000000780770018f000001f50770021f000001f607700197000000000676019f00000000006504350000000405400270000000010330008a000000010030008c0000027c0000213d0000042f0000013d000000640020008c000005940000413d0000000003000416000000000003004b000005940000c13d0000000403100370000000000303043b000800000003001d000001e80030009c000005940000213d0000002403100370000000000403043b000001ea0040009c000005940000213d0000002303400039000000000023004b000005940000813d0000000403400039000000000531034f000000000505043b000700000005001d000001ea0050009c000005940000213d0000002405400039000600000005001d0000000704500029000000000024004b000005940000213d0000004402100370000000000202043b000500000002001d000001e80020009c000005940000213d00000008020000290000006002200210000000a00020043f0000002002300039000000000121034f00000007020000290000001f0620018f0000000507200272000002c00000613d000000b4020000390000000503700210000000b403300039000000000401034f000000004504043c0000000002520436000000000032004b000002bc0000c13d000000000006004b000002cf0000613d0000000502700210000000000121034f0000000303600210000000b402200039000000000402043300000000043401cf000000000434022f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f00000000001204350000000703000029000000b4013000390000000000010435000000530130003900000208021001970000001401300039000000800010043f000001ec0020009c000003980000a13d000001fc0100004100000000001004350000004101000039000000040010043f000001fd010000410000075000010430000000240020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000000401100370000000000101043b0000000000100435000000200000043f00000040020000390000000001000019074e072f0000040f0000000101100039000000000101041a000000800010043f000001e9010000410000074f0001042e000000440020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000000402100370000000000202043b000800000002001d0000002401100370000000000101043b000700000001001d000001e80010009c000005940000213d00000008010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000101100039000000000101041a074e06030000040f00000008010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000003550000c13d00000008010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000007020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000201041a000002070220019700000001022001bf000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d0200003900000004030000390000000007000411000001d80400004100000008050000290000000706000029074e07440000040f0000000100200190000005940000613d00000000010000190000074f0001042e000000440020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000002402100370000000000202043b000800000002001d000001e80020009c000005940000213d0000000401100370000000000101043b0000000000100435000000200000043f00000040020000390000000001000019074e072f0000040f00000008020000290000000000200435000000200010043f00000000010000190000004002000039074e072f0000040f000000000101041a000000ff001001900000000001000019000000010100c039000000800010043f000001e9010000410000074f0001042e0000000001000416000000000001004b000005940000c13d000000800000043f000001e9010000410000074f0001042e000000240020008c000005940000413d0000000002000416000000000002004b000005940000c13d0000000401100370000000000101043b0000020400100198000005940000c13d000002050010009c00000000020000190000000102006039000002060010009c00000001022061bf000000800020043f000001e9010000410000074f0001042e000001f901000041000000800010043f0000002001000039000000840010043f0000002f01000039000000a40010043f0000020001000041000000c40010043f0000020101000041000000e40010043f00000202010000410000075000010430000300000007001d000400000006001d0000008002200039000000400020043f000001d50010009c000001d50100804100000060011002100000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ed011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000200000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b0000000101100039000000000101041a000100000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000004c80000c13d000000400200043d000001f10020009c000002d80000213d0000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000103300367000000000503034f0000000006010019000000005705043c0000000006760436000000000046004b000003e10000c13d0000000004010433000001f204400197000001f3044001c7000000000041043500000021042000390000000005040433000001f205500197000001f4055001c700000000005404350000002904000039000000000600041100000000050600190000000006020433000000000046004b000005530000a13d00000000061400190000000007060433000001f2077001970000000308500210000000780880018f000001f50880021f000001f608800197000000000787019f00000000007604350000000406500270000000010440008a000000010040008c000003f00000213d000000100050008c000005590000813d000000400400043d000800000004001d000001ec0040009c000002d80000213d00000008060000290000008004600039000000400040043f00000042050000390000000005560436000700000005001d000000003603043c0000000005650436000000000045004b0000040d0000c13d00000007090000290000000003090433000001f203300197000001f3033001c70000000000390435000000080800002900000021038000390000000004030433000001f204400197000001f4044001c700000000004304350000004103000039000000010500002900000000040500190000000005080433000000000035004b000005530000a13d00000000059300190000000006050433000001f2066001970000000307400210000000780770018f000001f50770021f000001f607700197000000000676019f00000000006504350000000405400270000000010330008a000000010030008c0000041e0000213d000000100040008c000005590000813d000000400500043d000600000005001d0000002004500039000400000004001d000001f70300004100000000003404350000000003020433000500000003001d0000003702500039074e07220000040f000000050200002900000006012000290000003702100039000001f8030000410000000000320435000000480210003900000008010000290000000003010433000800000003001d0000000701000029074e07220000040f000000080200002900000005032000290000002802300039000000060100002900000000002104350000004802300039074e05d00000040f000001f901000041000000400400043d000800000004001d000000000014043500000020010000390000000402400039000000000012043500000006010000290000000003010433000700000003001d0000002401400039000000000031043500000044024000390000000401000029074e07220000040f00000007010000290000001f0110003900000208011001970000004401100039000001d50010009c000001d5010080410000000802000029000001d50020009c000001d50200804100000060011002100000004002200210000000000121019f00000750000104300000000101000039000000010110018f000000450000013d00000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000005020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000005690000c13d000000400100043d000000600210003900000007030000290000000000320435000000400210003900000060030000390000000000320435000000200210003900000008030000290000000000320435000000050200002900000000002104350000008002100039000000060300002900000001033003670000000304000029000000000004004b0000000504400210000004a30000613d0000000005420019000000000603034f0000000007020019000000006806043c0000000007870436000000000057004b0000049f0000c13d000000040000006b000004b20000613d000000000343034f000000000442001900000004050000290000000305500210000000000604043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f00000000003404350000000703000029000000000232001900000000000204350000001f023000390000020802200197000001ee0020009c000001ee020080410000006002200210000001d50010009c000001d5010080410000004001100210000000000112019f0000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ef0110009a0000800d020000390000000103000039000001fb040000410000054f0000013d00000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000005020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000101041a000000ff00100190000005110000c13d00000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000005020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000201041a000002070220019700000001022001bf000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d020000390000000403000039000001d804000041000000020500002900000005060000290000000007000411074e07440000040f0000000100200190000005940000613d000000400100043d000000600210003900000007030000290000000000320435000000400210003900000060030000390000000000320435000000200210003900000008030000290000000000320435000000050200002900000000002104350000008002100039000000060300002900000001033003670000000304000029000000000004004b00000005044002100000052b0000613d0000000005420019000000000603034f0000000007020019000000006806043c0000000007870436000000000057004b000005270000c13d000000040000006b0000053a0000613d000000000343034f000000000442001900000004050000290000000305500210000000000604043300000000065601cf000000000656022f000000000303043b0000010005500089000000000353022f00000000035301cf000000000363019f00000000003404350000000703000029000000000232001900000000000204350000001f023000390000020802200197000001ee0020009c000001ee020080410000006002200210000001d50010009c000001d5010080410000004001100210000000000112019f0000000002000414000001d50020009c000001d502008041000000c002200210000000000121019f000001ef0110009a0000800d020000390000000103000039000001f004000041074e07440000040f0000000100200190000003550000c13d000005940000013d000001fc0100004100000000001004350000003201000039000000040010043f000001fd010000410000075000010430000000400100043d0000004402100039000001fe030000410000000000320435000001f902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001d50010009c000001d5010080410000004001100210000001ff011001c7000007500001043000000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b00000005020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000005940000613d000000000101043b000000000201041a0000020702200197000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d020000390000000403000039000001fa04000041000000020500002900000005060000290000000007000411074e07440000040f0000000100200190000004890000c13d000000000100001900000750000104300000001f03100039000000000023004b0000000004000019000002090400404100000209052001970000020903300197000000000653013f000000000053004b00000000030000190000020903002041000002090060009c000000000304c019000000000003004b000005ae0000613d0000000103100367000000000303043b000001ea0030009c000005ae0000213d00000020011000390000000004310019000000000024004b000005ae0000213d0000000002030019000000000001042d00000000010000190000075000010430000000600220021000000000002104350000001f0240018f0000001401100039000000010330036700000005054002720000000505500210000005bf0000613d0000000006510019000000000703034f0000000008010019000000007907043c0000000008980436000000000068004b000005bb0000c13d000000000002004b000005cd0000613d000000000353034f00000000055100190000000302200210000000000605043300000000062601cf000000000626022f000000000303043b0000010002200089000000000323022f00000000022301cf000000000262019f000000000025043500000000014100190000000000010435000000000001042d0000001f0220003900000208022001970000000001120019000000000021004b00000000020000190000000102004039000001ea0010009c000005dc0000213d0000000100200190000005dc0000c13d000000400010043f000000000001042d000001fc0100004100000000001004350000004101000039000000040010043f000001fd0100004100000750000104300001000000000002000100000002001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000006010000613d000000000101043b0000000102000029000001e8022001970000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000006010000613d000000000101043b000000000101041a000000ff0110018f000000000001042d000000000100001900000750000104300005000000000002000500000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000006220000613d000000000101043b00000000020004110000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000006220000613d000000000101043b000000000101041a000000ff00100190000006240000613d000000000001042d00000000010000190000075000010430000000400200043d000001f10020009c0000062d0000a13d000001fc0100004100000000001004350000004101000039000000040010043f000001fd0100004100000750000104300000006004200039000000400040043f0000002a01000039000000000112043600000000030000310000000103300367000000000503034f0000000006010019000000005705043c0000000006760436000000000046004b000006350000c13d0000000004010433000001f204400197000001f3044001c7000000000041043500000021042000390000000005040433000001f205500197000001f4055001c700000000005404350000002904000039000000000600041100000000050600190000000006020433000000000046004b000006bd0000a13d00000000061400190000000007060433000001f2077001970000000308500210000000780880018f000001f50880021f000001f608800197000000000778019f00000000007604350000000406500270000000010440008a000000010040008c000006440000213d000000100050008c000006c30000813d000000400400043d000400000004001d000001ec0040009c000006270000213d00000004060000290000008004600039000000400040043f00000042050000390000000005560436000300000005001d000000003603043c0000000005650436000000000045004b000006610000c13d00000003090000290000000003090433000001f203300197000001f3033001c70000000000390435000000040800002900000021038000390000000004030433000001f204400197000001f4044001c700000000004304350000004103000039000000050500002900000000040500190000000005080433000000000035004b000006bd0000a13d00000000059300190000000006050433000001f2066001970000000307400210000000780770018f000001f50770021f000001f607700197000000000667019f00000000006504350000000405400270000000010330008a000000010030008c000006720000213d000000100040008c000006c30000813d000000400500043d000500000005001d0000002004500039000100000004001d000001f70300004100000000003404350000000003020433000200000003001d0000003702500039074e07220000040f000000020200002900000005012000290000003702100039000001f8030000410000000000320435000000480210003900000004010000290000000003010433000400000003001d0000000301000029074e07220000040f000000040200002900000002032000290000002802300039000000050100002900000000002104350000004802300039074e05d00000040f000001f901000041000000400400043d000400000004001d000000000014043500000020010000390000000402400039000000000012043500000005010000290000000003010433000500000003001d0000002401400039000000000031043500000044024000390000000101000029074e07220000040f00000005010000290000001f0110003900000208011001970000004401100039000001d50010009c000001d5010080410000000402000029000001d50020009c000001d50200804100000060011002100000004002200210000000000121019f0000075000010430000001fc0100004100000000001004350000003201000039000000040010043f000001fd010000410000075000010430000000400100043d0000004402100039000001fe030000410000000000320435000001f902000041000000000021043500000024021000390000002003000039000000000032043500000004021000390000000000320435000001d50010009c000001d5010080410000004001100210000001ff011001c700000750000104300002000000000002000100000002001d000200000001001d0000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000007200000613d000000000101043b0000000102000029000001e802200197000100000002001d0000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000007200000613d000000000101043b000000000101041a000000ff001001900000071f0000613d00000002010000290000000000100435000000200000043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000007200000613d000000000101043b00000001020000290000000000200435000000200010043f0000000001000414000001d50010009c000001d501008041000000c001100210000001d6011001c70000801002000039074e07490000040f0000000100200190000007200000613d000000000101043b000000000201041a0000020702200197000000000021041b0000000001000414000001d50010009c000001d501008041000000c001100210000001d7011001c70000800d0200003900000004030000390000000007000411000001fa0400004100000002050000290000000106000029074e07440000040f0000000100200190000007200000613d000000000001042d00000000010000190000075000010430000000000003004b0000072c0000613d000000000400001900000000052400190000000006140019000000000606043300000000006504350000002004400039000000000034004b000007250000413d00000000012300190000000000010435000000000001042d000001d50010009c000001d5010080410000004001100210000001d50020009c000001d5020080410000006002200210000000000112019f0000000002000414000001d50020009c000001d502008041000000c002200210000000000112019f000001d7011001c70000801002000039074e07490000040f0000000100200190000007420000613d000000000101043b000000000001042d0000000001000019000007500001043000000747002104210000000102000039000000000001042d0000000002000019000000000001042d0000074c002104230000000102000039000000000001042d0000000002000019000000000001042d0000074e000004320000074f0001042e000007500001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff020000000000000000000000000000000000004000000000000000000000000002000000000000000000000000000000000000000000000000000000000000002f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d000000020000000000000000000000000000004000000100000000000000000000000000000000000000000000000000000000000000000000000000545f7a310000000000000000000000000000000000000000000000000000000091d148530000000000000000000000000000000000000000000000000000000091d1485400000000000000000000000000000000000000000000000000000000a217fddf00000000000000000000000000000000000000000000000000000000d547741f00000000000000000000000000000000000000000000000000000000545f7a3200000000000000000000000000000000000000000000000000000000584f6b600000000000000000000000000000000000000000000000000000000082bfd0f000000000000000000000000000000000000000000000000000000000248a9ca200000000000000000000000000000000000000000000000000000000248a9ca3000000000000000000000000000000000000000000000000000000002f2ff15d0000000000000000000000000000000000000000000000000000000036568abe0000000000000000000000000000000000000000000000000000000001ffc9a70000000000000000000000000000000000000000000000000000000018c5e8ab000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000000000000000000020000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffff7f0200000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000ffffff7ffdffffffffffffffffffffffffffffffffffff8000000000000000000000000069c5ce2d658fea352a2464f87ffbe1f09746c918a91da0994044c3767d641b3f000000000000000000000000000000000000000000000000ffffffffffffff9f00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3000000000000000000000000000000000000000000000000000000000000000780000000000000000000000000000000000000000000000000000000000000030313233343536373839616263646566000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000416363657373436f6e74726f6c3a206163636f756e7420000000000000000000206973206d697373696e6720726f6c652000000000000000000000000000000008c379a000000000000000000000000000000000000000000000000000000000f6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b55426a61e90ac7d7d1fc886b67b420ade8c8b535e68d655394bc271e3a12b8e24e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000537472696e67733a20686578206c656e67746820696e73756666696369656e740000000000000000000000000000000000000064000000000000000000000000416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636520726f6c657320666f722073656c6600000000000000000000000000000000000000000000000000000000000000000000000084000000800000000000000000000000000000000000000000000000000000000000000000ffffffffffffff8000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff01ffc9a7000000000000000000000000000000000000000000000000000000007965db0b00000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08000000000000000000000000000000000000000000000000000000000000000fd1ee08c1179665610b8d2598fa455dcea55b9c7917831dc5034ac67d54116f6",
|
|
458
|
+
"devdoc": {
|
|
459
|
+
"author": "Venus",
|
|
460
|
+
"details": "This contract is a wrapper of OpenZeppelin AccessControl extending it in a way to standartize access control within Venus Smart Contract Ecosystem.",
|
|
461
|
+
"events": {
|
|
462
|
+
"PermissionGranted(address,address,string)": {
|
|
463
|
+
"details": "If contract address is 0x000..0 this means that the account is a default admin of this function and can call any contract function with this signature"
|
|
464
|
+
},
|
|
465
|
+
"RoleAdminChanged(bytes32,bytes32,bytes32)": {
|
|
466
|
+
"details": "Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this. _Available since v3.1._"
|
|
467
|
+
},
|
|
468
|
+
"RoleGranted(bytes32,address,address)": {
|
|
469
|
+
"details": "Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}."
|
|
470
|
+
},
|
|
471
|
+
"RoleRevoked(bytes32,address,address)": {
|
|
472
|
+
"details": "Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)"
|
|
473
|
+
}
|
|
474
|
+
},
|
|
475
|
+
"kind": "dev",
|
|
476
|
+
"methods": {
|
|
477
|
+
"getRoleAdmin(bytes32)": {
|
|
478
|
+
"details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
|
|
479
|
+
},
|
|
480
|
+
"giveCallPermission(address,string,address)": {
|
|
481
|
+
"custom:event": "Emits a {RoleGranted} and {PermissionGranted} events.",
|
|
482
|
+
"details": "this function can be called only from Role Admin or DEFAULT_ADMIN_ROLEif contractAddress is zero address, the account can access the specified function on **any** contract managed by this ACL",
|
|
483
|
+
"params": {
|
|
484
|
+
"accountToPermit": "account that will be given access to the contract function",
|
|
485
|
+
"contractAddress": "address of contract for which call permissions will be granted",
|
|
486
|
+
"functionSig": "signature e.g. \"functionName(uint256,bool)\""
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
"grantRole(bytes32,address)": {
|
|
490
|
+
"details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."
|
|
491
|
+
},
|
|
492
|
+
"hasPermission(address,address,string)": {
|
|
493
|
+
"details": "This function is used as a view function to check permissions rather than contract hook for access restriction check.",
|
|
494
|
+
"params": {
|
|
495
|
+
"account": "for which call permissions will be checked against",
|
|
496
|
+
"contractAddress": "address of the restricted contract",
|
|
497
|
+
"functionSig": "signature of the restricted function e.g. \"functionName(uint256,bool)\""
|
|
498
|
+
},
|
|
499
|
+
"returns": {
|
|
500
|
+
"_0": "false if the user account cannot call the particular contract function"
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
"hasRole(bytes32,address)": {
|
|
504
|
+
"details": "Returns `true` if `account` has been granted `role`."
|
|
505
|
+
},
|
|
506
|
+
"isAllowedToCall(address,string)": {
|
|
507
|
+
"details": "Since restricted contracts using this function as a permission hook, we can get contracts address with msg.sender",
|
|
508
|
+
"params": {
|
|
509
|
+
"account": "for which call permissions will be checked",
|
|
510
|
+
"functionSig": "restricted function signature e.g. \"functionName(uint256,bool)\""
|
|
511
|
+
},
|
|
512
|
+
"returns": {
|
|
513
|
+
"_0": "false if the user account cannot call the particular contract function"
|
|
514
|
+
}
|
|
515
|
+
},
|
|
516
|
+
"renounceRole(bytes32,address)": {
|
|
517
|
+
"details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`. May emit a {RoleRevoked} event."
|
|
518
|
+
},
|
|
519
|
+
"revokeCallPermission(address,string,address)": {
|
|
520
|
+
"custom:event": "Emits {RoleRevoked} and {PermissionRevoked} events.",
|
|
521
|
+
"details": "this function can be called only from Role Admin or DEFAULT_ADMIN_ROLE \t\tMay emit a {RoleRevoked} event.",
|
|
522
|
+
"params": {
|
|
523
|
+
"contractAddress": "address of contract for which call permissions will be revoked",
|
|
524
|
+
"functionSig": "signature e.g. \"functionName(uint256,bool)\""
|
|
525
|
+
}
|
|
526
|
+
},
|
|
527
|
+
"revokeRole(bytes32,address)": {
|
|
528
|
+
"details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."
|
|
529
|
+
},
|
|
530
|
+
"supportsInterface(bytes4)": {
|
|
531
|
+
"details": "See {IERC165-supportsInterface}."
|
|
532
|
+
}
|
|
533
|
+
},
|
|
534
|
+
"title": "AccessControlManager",
|
|
535
|
+
"version": 1
|
|
536
|
+
},
|
|
537
|
+
"userdoc": {
|
|
538
|
+
"events": {
|
|
539
|
+
"PermissionGranted(address,address,string)": {
|
|
540
|
+
"notice": "Emitted when an account is given a permission to a certain contract function"
|
|
541
|
+
},
|
|
542
|
+
"PermissionRevoked(address,address,string)": {
|
|
543
|
+
"notice": "Emitted when an account is revoked a permission to a certain contract function"
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
"kind": "user",
|
|
547
|
+
"methods": {
|
|
548
|
+
"giveCallPermission(address,string,address)": {
|
|
549
|
+
"notice": "Gives a function call permission to one single account"
|
|
550
|
+
},
|
|
551
|
+
"hasPermission(address,address,string)": {
|
|
552
|
+
"notice": "Verifies if the given account can call a contract's guarded function"
|
|
553
|
+
},
|
|
554
|
+
"isAllowedToCall(address,string)": {
|
|
555
|
+
"notice": "Verifies if the given account can call a contract's guarded function"
|
|
556
|
+
},
|
|
557
|
+
"revokeCallPermission(address,string,address)": {
|
|
558
|
+
"notice": "Revokes an account's permission to a particular function call"
|
|
559
|
+
}
|
|
560
|
+
},
|
|
561
|
+
"notice": "Access control plays a crucial role in the Venus governance model. It is used to restrict functions so that they can only be called from one account or list of accounts (EOA or Contract Accounts). The implementation of `AccessControlManager`(https://github.com/VenusProtocol/governance-contracts/blob/main/contracts/Governance/AccessControlManager.sol) inherits the [Open Zeppelin AccessControl](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/AccessControl.sol) contract as a base for role management logic. There are two role types: admin and granular permissions. ## Granular Roles Granular roles are built by hashing the contract address and its function signature. For example, given contract `Foo` with function `Foo.bar()` which is guarded by ACM, calling `giveRolePermission` for account B do the following: 1. Compute `keccak256(contractFooAddress,functionSignatureBar)` 1. Add the computed role to the roles of account B 1. Account B now can call `ContractFoo.bar()` ## Admin Roles Admin roles allow for an address to call a function signature on any contract guarded by the `AccessControlManager`. This is particularly useful for contracts created by factories. For Admin roles a null address is hashed in place of the contract address (`keccak256(0x0000000000000000000000000000000000000000,functionSignatureBar)`. In the previous example, giving account B the admin role, account B will have permissions to call the `bar()` function on any contract that is guarded by ACM, not only contract A. ## Protocol Integration All restricted functions in Venus Protocol use a hook to ACM in order to check if the caller has the right permission to call the guarded function. `AccessControlledV5` and `AccessControlledV8` abstract contract makes this integration easier. They call ACM's external method `isAllowedToCall(address caller, string functionSig)`. Here is an example of how `setCollateralFactor` function in `Comptroller` is integrated with ACM: ``` contract Comptroller is [...] AccessControlledV8 { [...] function setCollateralFactor(VToken vToken, uint256 newCollateralFactorMantissa, uint256 newLiquidationThresholdMantissa) external { _checkAccessAllowed(\"setCollateralFactor(address,uint256,uint256)\"); [...] } } ```",
|
|
562
|
+
"version": 1
|
|
563
|
+
},
|
|
564
|
+
"storageLayout": {
|
|
565
|
+
"storage": [
|
|
566
|
+
{
|
|
567
|
+
"astId": 3703,
|
|
568
|
+
"contract": "contracts/Governance/AccessControlManager.sol:AccessControlManager",
|
|
569
|
+
"label": "_roles",
|
|
570
|
+
"offset": 0,
|
|
571
|
+
"slot": "0",
|
|
572
|
+
"type": "t_mapping(t_bytes32,t_struct(RoleData)3698_storage)"
|
|
573
|
+
}
|
|
574
|
+
],
|
|
575
|
+
"types": {
|
|
576
|
+
"t_address": {
|
|
577
|
+
"encoding": "inplace",
|
|
578
|
+
"label": "address",
|
|
579
|
+
"numberOfBytes": "20"
|
|
580
|
+
},
|
|
581
|
+
"t_bool": {
|
|
582
|
+
"encoding": "inplace",
|
|
583
|
+
"label": "bool",
|
|
584
|
+
"numberOfBytes": "1"
|
|
585
|
+
},
|
|
586
|
+
"t_bytes32": {
|
|
587
|
+
"encoding": "inplace",
|
|
588
|
+
"label": "bytes32",
|
|
589
|
+
"numberOfBytes": "32"
|
|
590
|
+
},
|
|
591
|
+
"t_mapping(t_address,t_bool)": {
|
|
592
|
+
"encoding": "mapping",
|
|
593
|
+
"key": "t_address",
|
|
594
|
+
"label": "mapping(address => bool)",
|
|
595
|
+
"numberOfBytes": "32",
|
|
596
|
+
"value": "t_bool"
|
|
597
|
+
},
|
|
598
|
+
"t_mapping(t_bytes32,t_struct(RoleData)3698_storage)": {
|
|
599
|
+
"encoding": "mapping",
|
|
600
|
+
"key": "t_bytes32",
|
|
601
|
+
"label": "mapping(bytes32 => struct AccessControl.RoleData)",
|
|
602
|
+
"numberOfBytes": "32",
|
|
603
|
+
"value": "t_struct(RoleData)3698_storage"
|
|
604
|
+
},
|
|
605
|
+
"t_struct(RoleData)3698_storage": {
|
|
606
|
+
"encoding": "inplace",
|
|
607
|
+
"label": "struct AccessControl.RoleData",
|
|
608
|
+
"members": [
|
|
609
|
+
{
|
|
610
|
+
"astId": 3695,
|
|
611
|
+
"contract": "contracts/Governance/AccessControlManager.sol:AccessControlManager",
|
|
612
|
+
"label": "members",
|
|
613
|
+
"offset": 0,
|
|
614
|
+
"slot": "0",
|
|
615
|
+
"type": "t_mapping(t_address,t_bool)"
|
|
616
|
+
},
|
|
617
|
+
{
|
|
618
|
+
"astId": 3697,
|
|
619
|
+
"contract": "contracts/Governance/AccessControlManager.sol:AccessControlManager",
|
|
620
|
+
"label": "adminRole",
|
|
621
|
+
"offset": 0,
|
|
622
|
+
"slot": "1",
|
|
623
|
+
"type": "t_bytes32"
|
|
624
|
+
}
|
|
625
|
+
],
|
|
626
|
+
"numberOfBytes": "64"
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}
|
|
630
|
+
}
|