@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.
@@ -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
+ }