-
Notifications
You must be signed in to change notification settings - Fork 40
/
Copy pathL2BalancerPseudoMinter.json
501 lines (501 loc) · 34.1 KB
/
L2BalancerPseudoMinter.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
{
"_format": "hh-sol-artifact-1",
"contractName": "L2BalancerPseudoMinter",
"sourceName": "contracts/L2BalancerPseudoMinter.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IVault",
"name": "vault",
"type": "address"
},
{
"internalType": "contract IERC20",
"name": "balancerToken",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract ILiquidityGaugeFactory",
"name": "factory",
"type": "address"
}
],
"name": "GaugeFactoryAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract ILiquidityGaugeFactory",
"name": "factory",
"type": "address"
}
],
"name": "GaugeFactoryRemoved",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"indexed": false,
"internalType": "address",
"name": "gauge",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "minted",
"type": "uint256"
}
],
"name": "Minted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "minter",
"type": "address"
},
{
"indexed": false,
"internalType": "bool",
"name": "approval",
"type": "bool"
}
],
"name": "MinterApprovalSet",
"type": "event"
},
{
"inputs": [
{
"internalType": "contract ILiquidityGaugeFactory",
"name": "factory",
"type": "address"
}
],
"name": "addGaugeFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "minter",
"type": "address"
},
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "allowed_to_mint_for",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "selector",
"type": "bytes4"
}
],
"name": "getActionId",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getAuthorizer",
"outputs": [
{
"internalType": "contract IAuthorizer",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getBalancerToken",
"outputs": [
{
"internalType": "contract IERC20",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getDomainSeparator",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "minter",
"type": "address"
},
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "getMinterApproval",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "getNextNonce",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getVault",
"outputs": [
{
"internalType": "contract IVault",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ILiquidityGaugeFactory",
"name": "factory",
"type": "address"
}
],
"name": "isValidGaugeFactory",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "gauge",
"type": "address"
}
],
"name": "mint",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "gauge",
"type": "address"
},
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "mintFor",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "gauges",
"type": "address[]"
}
],
"name": "mintMany",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "gauges",
"type": "address[]"
},
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "mintManyFor",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "gauge",
"type": "address"
},
{
"internalType": "address",
"name": "user",
"type": "address"
}
],
"name": "mint_for",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[8]",
"name": "gauges",
"type": "address[8]"
}
],
"name": "mint_many",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "address",
"name": "gauge",
"type": "address"
}
],
"name": "minted",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract ILiquidityGaugeFactory",
"name": "factory",
"type": "address"
}
],
"name": "removeGaugeFactory",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "minter",
"type": "address"
},
{
"internalType": "bool",
"name": "approval",
"type": "bool"
}
],
"name": "setMinterApproval",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "minter",
"type": "address"
},
{
"internalType": "bool",
"name": "approval",
"type": "bool"
},
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "uint256",
"name": "deadline",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "setMinterApprovalWithSignature",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "minter",
"type": "address"
}
],
"name": "toggle_approve_mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x61014060405234801561001157600080fd5b5060405161186a38038061186a8339818101604052604081101561003457600080fd5b508051602091820151604080518082018252601681527f42616c616e6365722050736575646f204d696e7465720000000000000000000081860190815282518084019093526001808452603160f81b968401968752600055905190206080525190922060a0527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60c0526001600160601b0319606092831b811660e0523061010052911b166101205260805160a05160c05160e05160601c610100516101205160601c61173e61012c600039806109eb525080610953525080610b19525080610e25525080610e67525080610e46525061173e6000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c8063851c1bb3116100d8578063a51e19041161008c578063c654279411610066578063c6542794146104c1578063dd289d6014610512578063ed24911d1461053857610177565b8063a51e190414610494578063aaabadc5146104b1578063c0039699146104b957610177565b80638d928af8116100bd5780638d928af81461044a57806390193b7c1461046e578063a0990033146102fb57610177565b8063851c1bb3146103dd5780638b752bb01461041c57610177565b80633c543bc61161012f5780636c71e920116101145780636c71e920146103635780637504a15d146103895780637a60e63a146103b757610177565b80633c543bc6146102fb5780636a6278421461033d57610177565b806338f121521161016057806338f12152146101da578063397ada21146102005780633b9f73841461028257610177565b80630de54ba01461017c57806327f18ae3146101ac575b600080fd5b6101aa6004803603604081101561019257600080fd5b506001600160a01b0381351690602001351515610540565b005b6101aa600480360360408110156101c257600080fd5b506001600160a01b038135811691602001351661054f565b6101aa600480360360208110156101f057600080fd5b50356001600160a01b0316610597565b6102706004803603602081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b509092509050610691565b60408051918252519081900360200190f35b6102706004803603604081101561029857600080fd5b8101906020810181356401000000008111156102b357600080fd5b8201836020820111156102c557600080fd5b803590602001918460208302840111640100000000831117156102e757600080fd5b9193509150356001600160a01b03166106b6565b6103296004803603604081101561031157600080fd5b506001600160a01b0381358116916020013516610758565b604080519115158252519081900360200190f35b6102706004803603602081101561035357600080fd5b50356001600160a01b0316610786565b6103296004803603602081101561037957600080fd5b50356001600160a01b03166107a9565b6102706004803603604081101561039f57600080fd5b506001600160a01b03813581169160200135166107c7565b6101aa600480360360208110156103cd57600080fd5b50356001600160a01b0316610857565b610270600480360360208110156103f357600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b6102706004803603604081101561043257600080fd5b506001600160a01b03813581169160200135166109be565b6104526109e9565b604080516001600160a01b039092168252519081900360200190f35b6102706004803603602081101561048457600080fd5b50356001600160a01b0316610a0d565b6101aa60048036036101008110156104ab57600080fd5b50610a28565b610452610aa4565b610452610b17565b6101aa600480360360e08110156104d757600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610b3b565b6101aa6004803603602081101561052857600080fd5b50356001600160a01b0316610be0565b610270610c13565b61054b823383610c22565b5050565b610557610cb1565b3360009081526003602090815260408083206001600160a01b038516845290915290205460ff161561058f5761058d8282610cca565b505b61054b610ce2565b61059f610ce9565b6001600160a01b03811660009081526004602052604090205460ff161561062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464143544f52595f414c52454144595f41444445440000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f8e2924dc08a7879532dca0c2c0460bd67eb431ab342df45afd2c4f7288aab9b79190a250565b600061069b610cb1565b6106a6838333610d2f565b90506106b0610ce2565b92915050565b60006106c0610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661073c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b610747848484610d2f565b9050610751610ce2565b9392505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6000610790610cb1565b61079a8233610cca565b90506107a4610ce2565b919050565b6001600160a01b031660009081526004602052604090205460ff1690565b60006107d1610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661084d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b6106a68383610cca565b61085f610ce9565b6001600160a01b03811660009081526004602052604090205460ff166108e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f464143544f52595f4e4f545f4144444544000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fdc66290a40b716cd9557c1d6c84315e06de88697ee252b89e1a9a9b053dc307b9190a250565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031660009081526001602052604090205490565b610a30610cb1565b60005b6008811015610a98576000828260088110610a4a57fe5b60200201356001600160a01b03166001600160a01b03161415610a6c57610a98565b610a8f828260088110610a7b57fe5b60200201356001600160a01b031633610cca565b50600101610a33565b50610aa1610ce2565b50565b6000610aae6109e9565b6001600160a01b031663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae657600080fd5b505afa158015610afa573d6000803e3d6000fd5b505050506040513d6020811015610b1057600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd8153808888610b6989610a0d565b604080516020808201969096526001600160a01b03909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610bcb8682610bc2878787610d88565b886101f8610dc7565b610bd6888789610c22565b5050505050505050565b6001600160a01b0381166000908152600360209081526040808320338452909152902054610aa190829060ff1615610540565b6000610c1d610e21565b905090565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610cc360026000541415610190610edf565b6002600055565b6000610cd68383610eed565b90506106b082826111f1565b6001600055565b6000610d186000357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b9050610aa1610d278233611214565b610191610edf565b600082815b81811015610d7557610d6b610d64878784818110610d4e57fe5b905060200201356001600160a01b031686610eed565b84906112b6565b9250600101610d34565b50610d8083836111f1565b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610dd2856112c8565b9050610de8610de287838761132f565b83610edf565b610df7428410156101b8610edf565b5050506001600160a01b039092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e8e61141a565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161054b5761054b8161141e565b6000808390506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2e57600080fd5b505afa158015610f42573d6000803e3d6000fd5b505050506040513d6020811015610f5857600080fd5b50519050610f65816107a9565b610fd057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b806001600160a01b031663ce3cc8bd866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561101d57600080fd5b505afa158015611031573d6000803e3d6000fd5b505050506040513d602081101561104757600080fd5b50516110b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f474155474500000000000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316634b820093856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561110357600080fd5b505af1158015611117573d6000803e3d6000fd5b505050506040513d602081101561112d57600080fd5b5050604080517f094007070000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291516000928516916309400707916024808301926020929190829003018186803b15801561119357600080fd5b505afa1580156111a7573d6000803e3d6000fd5b505050506040513d60208110156111bd57600080fd5b505190506111d56111ce86886109be565b8290611448565b935083156111e8576111e8858783611456565b50505092915050565b801561054b5761054b8282611204610b17565b6001600160a01b031691906114c0565b600061121e610aa4565b6001600160a01b0316639be2a8848484306040518463ffffffff1660e01b815260040180848152602001836001600160a01b03168152602001826001600160a01b03168152602001935050505060206040518083038186803b15801561128357600080fd5b505afa158015611297573d6000803e3d6000fd5b505050506040513d60208110156112ad57600080fd5b50519392505050565b60008282016107518482101583610edf565b60006112d2610e21565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061134182516041146101b9610edf565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113ba573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b0381161580159061140e5750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b610aa1817f42414c0000000000000000000000000000000000000000000000000000000000611545565b6000610751838360016115c0565b6001600160a01b0380841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526115409084906115d6565b505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006115cf8484111583610edf565b5050900390565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061163257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016115f5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611694576040519150601f19603f3d011682016040523d82523d6000602084013e611699565b606091505b509150915060008214156116b1573d6000803e3d6000fd5b6116df8151600014806116d757508180602001905160208110156116d457600080fd5b50515b6101a2610edf565b5050505056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a2646970667358221220829313c7074c630cd5c81cc3d5a8b29e85b5eb5e1c82b92e22b50b5801643f8064736f6c63430007010033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101775760003560e01c8063851c1bb3116100d8578063a51e19041161008c578063c654279411610066578063c6542794146104c1578063dd289d6014610512578063ed24911d1461053857610177565b8063a51e190414610494578063aaabadc5146104b1578063c0039699146104b957610177565b80638d928af8116100bd5780638d928af81461044a57806390193b7c1461046e578063a0990033146102fb57610177565b8063851c1bb3146103dd5780638b752bb01461041c57610177565b80633c543bc61161012f5780636c71e920116101145780636c71e920146103635780637504a15d146103895780637a60e63a146103b757610177565b80633c543bc6146102fb5780636a6278421461033d57610177565b806338f121521161016057806338f12152146101da578063397ada21146102005780633b9f73841461028257610177565b80630de54ba01461017c57806327f18ae3146101ac575b600080fd5b6101aa6004803603604081101561019257600080fd5b506001600160a01b0381351690602001351515610540565b005b6101aa600480360360408110156101c257600080fd5b506001600160a01b038135811691602001351661054f565b6101aa600480360360208110156101f057600080fd5b50356001600160a01b0316610597565b6102706004803603602081101561021657600080fd5b81019060208101813564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184602083028401116401000000008311171561026557600080fd5b509092509050610691565b60408051918252519081900360200190f35b6102706004803603604081101561029857600080fd5b8101906020810181356401000000008111156102b357600080fd5b8201836020820111156102c557600080fd5b803590602001918460208302840111640100000000831117156102e757600080fd5b9193509150356001600160a01b03166106b6565b6103296004803603604081101561031157600080fd5b506001600160a01b0381358116916020013516610758565b604080519115158252519081900360200190f35b6102706004803603602081101561035357600080fd5b50356001600160a01b0316610786565b6103296004803603602081101561037957600080fd5b50356001600160a01b03166107a9565b6102706004803603604081101561039f57600080fd5b506001600160a01b03813581169160200135166107c7565b6101aa600480360360208110156103cd57600080fd5b50356001600160a01b0316610857565b610270600480360360208110156103f357600080fd5b50357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b6102706004803603604081101561043257600080fd5b506001600160a01b03813581169160200135166109be565b6104526109e9565b604080516001600160a01b039092168252519081900360200190f35b6102706004803603602081101561048457600080fd5b50356001600160a01b0316610a0d565b6101aa60048036036101008110156104ab57600080fd5b50610a28565b610452610aa4565b610452610b17565b6101aa600480360360e08110156104d757600080fd5b506001600160a01b03813581169160208101351515916040820135169060608101359060ff6080820135169060a08101359060c00135610b3b565b6101aa6004803603602081101561052857600080fd5b50356001600160a01b0316610be0565b610270610c13565b61054b823383610c22565b5050565b610557610cb1565b3360009081526003602090815260408083206001600160a01b038516845290915290205460ff161561058f5761058d8282610cca565b505b61054b610ce2565b61059f610ce9565b6001600160a01b03811660009081526004602052604090205460ff161561062757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f464143544f52595f414c52454144595f41444445440000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f8e2924dc08a7879532dca0c2c0460bd67eb431ab342df45afd2c4f7288aab9b79190a250565b600061069b610cb1565b6106a6838333610d2f565b90506106b0610ce2565b92915050565b60006106c0610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661073c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b610747848484610d2f565b9050610751610ce2565b9392505050565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6000610790610cb1565b61079a8233610cca565b90506107a4610ce2565b919050565b6001600160a01b031660009081526004602052604090205460ff1690565b60006107d1610cb1565b3360009081526003602090815260408083206001600160a01b038616845290915290205460ff1661084d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806116e66023913960400191505060405180910390fd5b6106a68383610cca565b61085f610ce9565b6001600160a01b03811660009081526004602052604090205460ff166108e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f464143544f52595f4e4f545f4144444544000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660008181526004602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517fdc66290a40b716cd9557c1d6c84315e06de88697ee252b89e1a9a9b053dc307b9190a250565b604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527fffffffff000000000000000000000000000000000000000000000000000000008416828401528251602481840301815260449092019092528051910120919050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b7f000000000000000000000000000000000000000000000000000000000000000090565b6001600160a01b031660009081526001602052604090205490565b610a30610cb1565b60005b6008811015610a98576000828260088110610a4a57fe5b60200201356001600160a01b03166001600160a01b03161415610a6c57610a98565b610a8f828260088110610a7b57fe5b60200201356001600160a01b031633610cca565b50600101610a33565b50610aa1610ce2565b50565b6000610aae6109e9565b6001600160a01b031663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610ae657600080fd5b505afa158015610afa573d6000803e3d6000fd5b505050506040513d6020811015610b1057600080fd5b5051905090565b7f000000000000000000000000000000000000000000000000000000000000000090565b60007fc87351a089bbdc3b2b9299d2ce29f08fd982826b275b3642939a2f7fdd8153808888610b6989610a0d565b604080516020808201969096526001600160a01b03909416848201529115156060840152608083015260a08083018990528151808403909101815260c0909201905280519101209050610bcb8682610bc2878787610d88565b886101f8610dc7565b610bd6888789610c22565b5050505050505050565b6001600160a01b0381166000908152600360209081526040808320338452909152902054610aa190829060ff1615610540565b6000610c1d610e21565b905090565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016861515908117909155825190815291519293927fa3ffb51320bbca4e61e7423e3c97dd7bd7e31b6ea7429eb26ef92780e84572a09281900390910190a3505050565b610cc360026000541415610190610edf565b6002600055565b6000610cd68383610eed565b90506106b082826111f1565b6001600055565b6000610d186000357fffffffff000000000000000000000000000000000000000000000000000000001661094d565b9050610aa1610d278233611214565b610191610edf565b600082815b81811015610d7557610d6b610d64878784818110610d4e57fe5b905060200201356001600160a01b031686610eed565b84906112b6565b9250600101610d34565b50610d8083836111f1565b509392505050565b60408051604180825260808201909252606091829190602082018180368337019050509050836020820152826040820152846060820153949350505050565b6000610dd2856112c8565b9050610de8610de287838761132f565b83610edf565b610df7428410156101b8610edf565b5050506001600160a01b039092166000908152600160208190526040909120805490910190555050565b60007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000610e8e61141a565b3060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120905090565b8161054b5761054b8161141e565b6000808390506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2e57600080fd5b505afa158015610f42573d6000803e3d6000fd5b505050506040513d6020811015610f5857600080fd5b50519050610f65816107a9565b610fd057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f494e56414c49445f47415547455f464143544f52590000000000000000000000604482015290519081900360640190fd5b806001600160a01b031663ce3cc8bd866040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561101d57600080fd5b505afa158015611031573d6000803e3d6000fd5b505050506040513d602081101561104757600080fd5b50516110b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f494e56414c49445f474155474500000000000000000000000000000000000000604482015290519081900360640190fd5b816001600160a01b0316634b820093856040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050602060405180830381600087803b15801561110357600080fd5b505af1158015611117573d6000803e3d6000fd5b505050506040513d602081101561112d57600080fd5b5050604080517f094007070000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291516000928516916309400707916024808301926020929190829003018186803b15801561119357600080fd5b505afa1580156111a7573d6000803e3d6000fd5b505050506040513d60208110156111bd57600080fd5b505190506111d56111ce86886109be565b8290611448565b935083156111e8576111e8858783611456565b50505092915050565b801561054b5761054b8282611204610b17565b6001600160a01b031691906114c0565b600061121e610aa4565b6001600160a01b0316639be2a8848484306040518463ffffffff1660e01b815260040180848152602001836001600160a01b03168152602001826001600160a01b03168152602001935050505060206040518083038186803b15801561128357600080fd5b505afa158015611297573d6000803e3d6000fd5b505050506040513d60208110156112ad57600080fd5b50519392505050565b60008282016107518482101583610edf565b60006112d2610e21565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050919050565b600061134182516041146101b9610edf565b60008060006020850151925060408501519150606085015160001a9050600060018783868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156113ba573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001519150506001600160a01b0381161580159061140e5750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b4690565b610aa1817f42414c0000000000000000000000000000000000000000000000000000000000611545565b6000610751838360016115c0565b6001600160a01b0380841660008181526002602090815260408083209487168084529482529182902085905581519384528301849052805191927f9d228d69b5fdb8d273a2336f8fb8612d039631024ea9bf09c424a9503aa078f0929081900390910190a2505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526115409084906115d6565b505050565b7f08c379a000000000000000000000000000000000000000000000000000000000600090815260206004526007602452600a808404818106603090810160081b958390069590950190829004918206850160101b01602363ffffff0060e086901c160160181b0190930160c81b60445260e882901c90606490fd5b60006115cf8484111583610edf565b5050900390565b60006060836001600160a01b0316836040518082805190602001908083835b6020831061163257805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016115f5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611694576040519150601f19603f3d011682016040523d82523d6000602084013e611699565b606091505b509150915060008214156116b1573d6000803e3d6000fd5b6116df8151600014806116d757508180602001905160208110156116d457600080fd5b50515b6101a2610edf565b5050505056fe43616c6c6572206e6f7420616c6c6f77656420746f206d696e7420666f722075736572a2646970667358221220829313c7074c630cd5c81cc3d5a8b29e85b5eb5e1c82b92e22b50b5801643f8064736f6c63430007010033",
"linkReferences": {},
"deployedLinkReferences": {}
}