-
Notifications
You must be signed in to change notification settings - Fork 0
/
StakelessGaugeCheckpointer.json
411 lines (411 loc) · 54.9 KB
/
StakelessGaugeCheckpointer.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
{
"_format": "hh-sol-artifact-1",
"contractName": "StakelessGaugeCheckpointer",
"sourceName": "contracts/gauges/StakelessGaugeCheckpointer.sol",
"abi": [
{
"inputs": [
{
"internalType": "contract IGaugeAdder",
"name": "gaugeAdder",
"type": "address"
},
{
"internalType": "contract IAuthorizerAdaptorEntrypoint",
"name": "authorizerAdaptorEntrypoint",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IStakelessGauge",
"name": "gauge",
"type": "address"
},
{
"indexed": true,
"internalType": "string",
"name": "indexedGaugeType",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "gaugeType",
"type": "string"
}
],
"name": "GaugeAdded",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract IStakelessGauge",
"name": "gauge",
"type": "address"
},
{
"indexed": true,
"internalType": "string",
"name": "indexedGaugeType",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "gaugeType",
"type": "string"
}
],
"name": "GaugeRemoved",
"type": "event"
},
{
"inputs": [
{
"internalType": "string",
"name": "gaugeType",
"type": "string"
},
{
"internalType": "contract IStakelessGauge[]",
"name": "gauges",
"type": "address[]"
}
],
"name": "addGauges",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "gaugeType",
"type": "string"
},
{
"internalType": "contract IStakelessGauge[]",
"name": "gauges",
"type": "address[]"
}
],
"name": "addGaugesWithVerifiedType",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "minRelativeWeight",
"type": "uint256"
}
],
"name": "checkpointGaugesAboveRelativeWeight",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "gaugeType",
"type": "string"
},
{
"internalType": "uint256",
"name": "minRelativeWeight",
"type": "uint256"
}
],
"name": "checkpointGaugesOfTypeAboveRelativeWeight",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string[]",
"name": "gaugeTypes",
"type": "string[]"
},
{
"internalType": "address[]",
"name": "gauges",
"type": "address[]"
}
],
"name": "checkpointMultipleGauges",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "gaugeType",
"type": "string"
},
{
"internalType": "address",
"name": "gauge",
"type": "address"
}
],
"name": "checkpointSingleGauge",
"outputs": [],
"stateMutability": "payable",
"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": "getGaugeAdder",
"outputs": [
{
"internalType": "contract IGaugeAdder",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "gaugeType",
"type": "string"
},
{
"internalType": "uint256",
"name": "index",
"type": "uint256"
}
],
"name": "getGaugeAtIndex",
"outputs": [
{
"internalType": "contract IStakelessGauge",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getGaugeTypes",
"outputs": [
{
"internalType": "string[]",
"name": "",
"type": "string[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getRoundedDownBlockTimestamp",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "gaugeType",
"type": "string"
},
{
"internalType": "address",
"name": "gauge",
"type": "address"
}
],
"name": "getSingleBridgeCost",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "minRelativeWeight",
"type": "uint256"
}
],
"name": "getTotalBridgeCost",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "gaugeType",
"type": "string"
}
],
"name": "getTotalGauges",
"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": "string",
"name": "gaugeType",
"type": "string"
},
{
"internalType": "contract IStakelessGauge",
"name": "gauge",
"type": "address"
}
],
"name": "hasGauge",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "gaugeType",
"type": "string"
}
],
"name": "isValidGaugeType",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "gaugeType",
"type": "string"
},
{
"internalType": "contract IStakelessGauge[]",
"name": "gauges",
"type": "address[]"
}
],
"name": "removeGauges",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x61014060405262000012610160620001f9565b60408051601f19818403018152919052805160209091012060c0523480156200003a57600080fd5b5060405162002fa038038062002fa08339810160408190526200005d9162000195565b806001600160a01b0316638d928af86040518163ffffffff1660e01b815260040160206040518083038186803b1580156200009757600080fd5b505afa158015620000ac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000d29190620001d3565b6001600055306080526001600160601b0319606091821b811660a05283821b8116610100529082901b1660e05260408051632c6f4d6f60e11b815290516001600160a01b038416916358de9ade916004808301926020929190829003018186803b1580156200014057600080fd5b505afa15801562000155573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200017b9190620001d3565b60601b6001600160601b0319166101205250620002269050565b60008060408385031215620001a8578182fd5b8251620001b5816200020d565b6020840151909250620001c8816200020d565b809150509250929050565b600060208284031215620001e5578081fd5b8151620001f2816200020d565b9392505050565b67417262697472756d60c01b815260080190565b6001600160a01b03811681146200022357600080fd5b50565b60805160a05160601c60c05160e05160601c6101005160601c6101205160601c612cca620002d6600039806105bf528061176c528061185652806118fd5280611b0e5250806103bd528061044d52806109145280610a305280610c5a5280610d9f5280610e445280610f33528061105e528061116152806112605280611cb45250806114665280611eeb528061208a52508061075352806116f7525080610cf2525080610ca25250612cca6000f3fe6080604052600436106101445760003560e01c80637d0a6616116100c0578063c91be04311610074578063d8dba2ce11610059578063d8dba2ce1461032a578063db5d12251461034a578063f7178b881461035d57610144565b8063c91be043146102f7578063d14cfe3b1461031757610144565b80638d928af8116100a55780638d928af8146102ab578063aaabadc5146102c0578063afcb1a86146102d557610144565b80637d0a661614610278578063851c1bb31461028b57610144565b806346583adf116101175780634db34d2a116100fc5780634db34d2a1461022357806373ebd060146102435780637c1fef511461026357610144565b806346583adf146101f95780634a3a1e111461020e57610144565b806316e772bc1461014957806327cb2a3b1461017f57806327f79107146101ac5780632adbe5ac146101d9575b600080fd5b34801561015557600080fd5b506101696101643660046125b2565b61037d565b60405161017691906128db565b60405180910390f35b34801561018b57600080fd5b5061019f61019a3660046126c8565b610448565b60405161017691906127df565b3480156101b857600080fd5b506101cc6101c736600461270b565b61054c565b60405161017691906128e6565b3480156101e557600080fd5b506101cc6101f43660046125e5565b61070a565b34801561020557600080fd5b506101cc61082d565b61022161021c366004612436565b61083c565b005b34801561022f57600080fd5b506101cc61023e3660046125b2565b61090f565b34801561024f57600080fd5b5061022161025e366004612635565b6109f1565b34801561026f57600080fd5b5061019f610c58565b6102216102863660046125e5565b610c7c565b34801561029757600080fd5b506101cc6102a6366004612507565b610c9e565b3480156102b757600080fd5b5061019f610cf0565b3480156102cc57600080fd5b5061019f610d14565b3480156102e157600080fd5b506102ea610d9b565b604051610176919061285d565b34801561030357600080fd5b506101696103123660046125e5565b610e3f565b61022161032536600461270b565b610f1b565b34801561033657600080fd5b50610221610345366004612635565b61101f565b6102216103583660046126c8565b61111a565b34801561036957600080fd5b50610221610378366004612635565b611221565b6040517f16e772bc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906103f290859060040161291b565b60206040518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044291906124e7565b92915050565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016104a4919061291b565b60206040518083038186803b1580156104bc57600080fd5b505afa1580156104d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f491906124e7565b6105195760405162461bcd60e51b815260040161051090612b10565b60405180910390fd5b6105428360018660405161052d9190612797565b9081526040519081900360200190209061130e565b91505b5092915050565b60008061055761132a565b9050600061057f600160405161056c906127b3565b908152602001604051809103902061133f565b905060006001604051610591906127b3565b90815260405190819003602001902090506000805b838110156107005760006105ba8483611343565b9050877f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9483896040518363ffffffff1660e01b8152600401610618929190612837565b60206040518083038186803b15801561063057600080fd5b505afa158015610644573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106689190612723565b101561067457506106f8565b8073ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ba57600080fd5b505afa1580156106ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f29190612723565b83019250505b6001016105a6565b5095945050505050565b6000610735826001856040516107209190612797565b9081526040519081900360200190209061137d565b6107515760405162461bcd60e51b815260040161051090612a7c565b7f0000000000000000000000000000000000000000000000000000000000000000836040516020016107839190612797565b604051602081830303815290604052805190602001201415610824578173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e557600080fd5b505afa1580156107f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081d9190612723565b9050610442565b50600092915050565b600061083761132a565b905090565b6108446113ab565b81518151600182149114806108565750805b6108725760405162461bcd60e51b8152600401610510906129c2565b60008251116108935760405162461bcd60e51b81526004016105109061298b565b815160005b818110156108f8576108f0836108c1578582815181106108b457fe5b60200260200101516108d7565b856000815181106108ce57fe5b60200260200101515b8583815181106108e357fe5b60200260200101516113c4565b600101610898565b506109016114f1565b505061090b611502565b5050565b6000817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b815260040161096b919061291b565b60206040518083038186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bb91906124e7565b6109d75760405162461bcd60e51b815260040161051090612b10565b6109ea60018460405161056c9190612797565b9392505050565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc90610a6590849060040161291b565b60206040518083038186803b158015610a7d57600080fd5b505afa158015610a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab591906124e7565b610ad15760405162461bcd60e51b815260040161051090612b10565b6000600185604051610ae39190612797565b9081526020016040518091039020905060005b83811015610c50576000858583818110610b0c57fe5b9050602002016020810190610b219190612596565b90508073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6957600080fd5b505afa158015610b7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba191906124e7565b610bbd5760405162461bcd60e51b815260040161051090612b47565b610bc78382611509565b610be35760405162461bcd60e51b815260040161051090612a7c565b86604051610bf19190612797565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fb87757e0365ca4f80cc1f429f422c0ea7ec26bbd3e5778727e77c809462aad0289604051610c3f919061291b565b60405180910390a350600101610af6565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610c846113ab565b610c8e82826113c4565b610c966114f1565b61090b611502565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610cd3929190612767565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610d1e610cf0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610d6357600080fd5b505afa158015610d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610837919061257a565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610e0357600080fd5b505afa158015610e17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083791908101906123ad565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b8152600401610e9b919061291b565b60206040518083038186803b158015610eb357600080fd5b505afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb91906124e7565b610f075760405162461bcd60e51b815260040161051090612b10565b610542836001866040516107209190612797565b610f236113ab565b6000610f2d61132a565b905060607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610f9757600080fd5b505afa158015610fab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fd391908101906123ad565b905060005b815181101561100757610fff828281518110610ff057fe5b602002602001015185856116b7565b600101610fd8565b5061101233476119b1565b505061101c611502565b50565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061109390849060040161291b565b60206040518083038186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e391906124e7565b6110ff5760405162461bcd60e51b815260040161051090612b10565b611107611a38565b6111148484846001611a7e565b50505050565b6111226113ab565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152829073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061119690849060040161291b565b60206040518083038186803b1580156111ae57600080fd5b505afa1580156111c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e691906124e7565b6112025760405162461bcd60e51b815260040161051090612b10565b600061120c61132a565b90506112198484836116b7565b6109016114f1565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061129590849060040161291b565b60206040518083038186803b1580156112ad57600080fd5b505afa1580156112c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e591906124e7565b6113015760405162461bcd60e51b815260040161051090612b10565b6111148484846000611a7e565b81546000906113209083106064611e4a565b6109ea8383611343565b6000600162093a8042040362093a8002905090565b5490565b600082600001828154811061135457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b6113bd60026000541415610190611e4a565b6002600055565b60006113d0838361070a565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a92859261149b92889201612800565b6000604051808303818588803b1580156114b457600080fd5b505af11580156114c8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526111149190810190612547565b47801561101c5761101c33826119b1565b6001600055565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156116ad5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461161257600086600001828154811061157757fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106115ad57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061161d57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061044292505050565b6000915050610442565b60006001846040516116c99190612797565b9081526020016040518091039020905060006116e48261133f565b9050806116f25750506119ac565b6122a07f0000000000000000000000000000000000000000000000000000000000000000866040516020016117279190612797565b604051602081830303815290604052805190602001201461174a57611e5861174e565b611f745b905060005b828110156119a75760006117678583611343565b9050857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250836040518263ffffffff1660e01b81526004016117c391906127df565b60206040518083038186803b1580156117db57600080fd5b505afa1580156117ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118139190612723565b10156118be576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061188b9084906004016127df565b600060405180830381600087803b1580156118a557600080fd5b505af11580156118b9573d6000803e3d6000fd5b505050505b6040517fd3078c94000000000000000000000000000000000000000000000000000000008152879073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c94906119349085908b90600401612837565b60206040518083038186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190612723565b1015611990575061199f565b61199d818463ffffffff16565b505b600101611753565b505050505b505050565b6119c0814710156101a3611e4a565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516119e6906127dc565b60006040518083038185875af1925050503d8060008114611a23576040519150601f19603f3d011682016040523d82523d6000602084013e611a28565b606091505b505090506119ac816101a4611e4a565b6000611a676000357fffffffff0000000000000000000000000000000000000000000000000000000016610c9e565b905061101c611a768233612115565b610191611e4a565b6000600185604051611a909190612797565b9081526020016040518091039020905060005b83811015610c50576000858583818110611ab957fe5b9050602002016020810190611ace9190612596565b6040517f61df1bf900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906361df1bf990611b439084906004016127df565b60206040518083038186803b158015611b5b57600080fd5b505afa158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9391906124e7565b611baf5760405162461bcd60e51b81526004016105109061292e565b8073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b158015611bf557600080fd5b505afa158015611c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2d91906124e7565b15611c4a5760405162461bcd60e51b815260040161051090612ad9565b611c5483826121ab565b611c705760405162461bcd60e51b815260040161051090612b7e565b8380611dc157506040517f572cb6a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063572cb6a590611ce9908a9060040161291b565b60206040518083038186803b158015611d0157600080fd5b505afa158015611d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d39919061257a565b73ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd826040518263ffffffff1660e01b8152600401611d7191906127df565b60206040518083038186803b158015611d8957600080fd5b505afa158015611d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc191906124e7565b611ddd5760405162461bcd60e51b815260040161051090612a1f565b86604051611deb9190612797565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fbd3a33b3738a69bcfb84219d93fb0b1b2d91efbf2e5bef206c9af4122290fb5489604051611e39919061291b565b60405180910390a350600101611aa3565b8161090b5761090b8161222b565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a92611f1e92869201612800565b600060405180830381600087803b158015611f3857600080fd5b505af1158015611f4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261090b9190810190612547565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b158015611fbc57600080fd5b505afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff49190612723565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a9285926120bf92889201612800565b6000604051808303818588803b1580156120d857600080fd5b505af11580156120ec573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526119ac9190810190612547565b600061211f610d14565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161215b939291906128ef565b60206040518083038186803b15801561217357600080fd5b505afa158015612187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea91906124e7565b60006121b7838361137d565b61082457508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610442565b62461bcd60e51b600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261101c917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5bfe5b600082601f8301126122b2578081fd5b81356122c56122c082612c02565b612bdb565b8181529150602080830190848101818402860182018710156122e657600080fd5b60005b8481101561230e5781356122fc81612c72565b845292820192908201906001016122e9565b505050505092915050565b600082601f830112612329578081fd5b81516123376122c082612c22565b915080825283602082850101111561234e57600080fd5b610545816020840160208601612c46565b600082601f83011261236f578081fd5b813561237d6122c082612c22565b915080825283602082850101111561239457600080fd5b8060208401602084013760009082016020015292915050565b600060208083850312156123bf578182fd5b825167ffffffffffffffff8111156123d5578283fd5b8301601f810185136123e5578283fd5b80516123f36122c082612c02565b81815283810190838501865b84811015612428576124168a888451890101612319565b845292860192908601906001016123ff565b509098975050505050505050565b60008060408385031215612448578081fd5b823567ffffffffffffffff8082111561245f578283fd5b818501915085601f830112612472578283fd5b81356124806122c082612c02565b81815260208082019190858101875b858110156124b8576124a68c8484358b010161235f565b8552938201939082019060010161248f565b509197508801359450505050808211156124d0578283fd5b506124dd858286016122a2565b9150509250929050565b6000602082840312156124f8578081fd5b815180151581146109ea578182fd5b600060208284031215612518578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146109ea578182fd5b600060208284031215612558578081fd5b815167ffffffffffffffff81111561256e578182fd5b61054284828501612319565b60006020828403121561258b578081fd5b81516109ea81612c72565b6000602082840312156125a7578081fd5b81356109ea81612c72565b6000602082840312156125c3578081fd5b813567ffffffffffffffff8111156125d9578182fd5b6105428482850161235f565b600080604083850312156125f7578182fd5b823567ffffffffffffffff81111561260d578283fd5b6126198582860161235f565b925050602083013561262a81612c72565b809150509250929050565b600080600060408486031215612649578081fd5b833567ffffffffffffffff80821115612660578283fd5b61266c8783880161235f565b94506020860135915080821115612681578283fd5b818601915086601f830112612694578283fd5b8135818111156126a2578384fd5b87602080830285010111156126b5578384fd5b6020830194508093505050509250925092565b600080604083850312156126da578182fd5b823567ffffffffffffffff8111156126f0578283fd5b6126fc8582860161235f565b95602094909401359450505050565b60006020828403121561271c578081fd5b5035919050565b600060208284031215612734578081fd5b5051919050565b60008151808452612753816020860160208601612c46565b601f01601f19169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b600082516127a9818460208701612c46565b9190910192915050565b7f417262697472756d000000000000000000000000000000000000000000000000815260080190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261282f604083018461273b565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156128ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526128bc85835161273b565b94509285019290850190600101612882565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602082526109ea602083018461273b565b6020808252602a908201527f476175676520776173206e6f7420616464656420746f2074686520476175676560408201527f436f6e74726f6c6c657200000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4e6f2067617567657320746f20636865636b706f696e74000000000000000000604082015260600190565b6020808252602a908201527f4d69736d61746368206265747765656e20676175676520747970657320616e6460408201527f2061646472657373657300000000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f476175676520646f6573206e6f7420636f72726573706f6e6420746f2074686560408201527f2073656c65637465642074797065000000000000000000000000000000000000606082015260800190565b60208082526027908201527f476175676520776173206e6f7420616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f476175676520776173206b696c6c656400000000000000000000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526014908201527f476175676520776173206e6f74206b696c6c6564000000000000000000000000604082015260600190565b60208082526027908201527f476175676520616c726561647920616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715612bfa57600080fd5b604052919050565b600067ffffffffffffffff821115612c18578081fd5b5060209081020190565b600067ffffffffffffffff821115612c38578081fd5b50601f01601f191660200190565b60005b83811015612c61578181015183820152602001612c49565b838111156111145750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461101c57600080fdfea2646970667358221220bd2232a8b4de30a99a8853ff26db7df658ee0bb4445ba862f5ca4bb0f779e92464736f6c63430007010033",
"deployedBytecode": "0x6080604052600436106101445760003560e01c80637d0a6616116100c0578063c91be04311610074578063d8dba2ce11610059578063d8dba2ce1461032a578063db5d12251461034a578063f7178b881461035d57610144565b8063c91be043146102f7578063d14cfe3b1461031757610144565b80638d928af8116100a55780638d928af8146102ab578063aaabadc5146102c0578063afcb1a86146102d557610144565b80637d0a661614610278578063851c1bb31461028b57610144565b806346583adf116101175780634db34d2a116100fc5780634db34d2a1461022357806373ebd060146102435780637c1fef511461026357610144565b806346583adf146101f95780634a3a1e111461020e57610144565b806316e772bc1461014957806327cb2a3b1461017f57806327f79107146101ac5780632adbe5ac146101d9575b600080fd5b34801561015557600080fd5b506101696101643660046125b2565b61037d565b60405161017691906128db565b60405180910390f35b34801561018b57600080fd5b5061019f61019a3660046126c8565b610448565b60405161017691906127df565b3480156101b857600080fd5b506101cc6101c736600461270b565b61054c565b60405161017691906128e6565b3480156101e557600080fd5b506101cc6101f43660046125e5565b61070a565b34801561020557600080fd5b506101cc61082d565b61022161021c366004612436565b61083c565b005b34801561022f57600080fd5b506101cc61023e3660046125b2565b61090f565b34801561024f57600080fd5b5061022161025e366004612635565b6109f1565b34801561026f57600080fd5b5061019f610c58565b6102216102863660046125e5565b610c7c565b34801561029757600080fd5b506101cc6102a6366004612507565b610c9e565b3480156102b757600080fd5b5061019f610cf0565b3480156102cc57600080fd5b5061019f610d14565b3480156102e157600080fd5b506102ea610d9b565b604051610176919061285d565b34801561030357600080fd5b506101696103123660046125e5565b610e3f565b61022161032536600461270b565b610f1b565b34801561033657600080fd5b50610221610345366004612635565b61101f565b6102216103583660046126c8565b61111a565b34801561036957600080fd5b50610221610378366004612635565b611221565b6040517f16e772bc00000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc906103f290859060040161291b565b60206040518083038186803b15801561040a57600080fd5b505afa15801561041e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044291906124e7565b92915050565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b81526004016104a4919061291b565b60206040518083038186803b1580156104bc57600080fd5b505afa1580156104d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f491906124e7565b6105195760405162461bcd60e51b815260040161051090612b10565b60405180910390fd5b6105428360018660405161052d9190612797565b9081526040519081900360200190209061130e565b91505b5092915050565b60008061055761132a565b9050600061057f600160405161056c906127b3565b908152602001604051809103902061133f565b905060006001604051610591906127b3565b90815260405190819003602001902090506000805b838110156107005760006105ba8483611343565b9050877f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d3078c9483896040518363ffffffff1660e01b8152600401610618929190612837565b60206040518083038186803b15801561063057600080fd5b505afa158015610644573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106689190612723565b101561067457506106f8565b8073ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b1580156106ba57600080fd5b505afa1580156106ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f29190612723565b83019250505b6001016105a6565b5095945050505050565b6000610735826001856040516107209190612797565b9081526040519081900360200190209061137d565b6107515760405162461bcd60e51b815260040161051090612a7c565b7f0000000000000000000000000000000000000000000000000000000000000000836040516020016107839190612797565b604051602081830303815290604052805190602001201415610824578173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b1580156107e557600080fd5b505afa1580156107f9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081d9190612723565b9050610442565b50600092915050565b600061083761132a565b905090565b6108446113ab565b81518151600182149114806108565750805b6108725760405162461bcd60e51b8152600401610510906129c2565b60008251116108935760405162461bcd60e51b81526004016105109061298b565b815160005b818110156108f8576108f0836108c1578582815181106108b457fe5b60200260200101516108d7565b856000815181106108ce57fe5b60200260200101515b8583815181106108e357fe5b60200260200101516113c4565b600101610898565b506109016114f1565b505061090b611502565b5050565b6000817f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b815260040161096b919061291b565b60206040518083038186803b15801561098357600080fd5b505afa158015610997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109bb91906124e7565b6109d75760405162461bcd60e51b815260040161051090612b10565b6109ea60018460405161056c9190612797565b9392505050565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc90610a6590849060040161291b565b60206040518083038186803b158015610a7d57600080fd5b505afa158015610a91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab591906124e7565b610ad15760405162461bcd60e51b815260040161051090612b10565b6000600185604051610ae39190612797565b9081526020016040518091039020905060005b83811015610c50576000858583818110610b0c57fe5b9050602002016020810190610b219190612596565b90508073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6957600080fd5b505afa158015610b7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ba191906124e7565b610bbd5760405162461bcd60e51b815260040161051090612b47565b610bc78382611509565b610be35760405162461bcd60e51b815260040161051090612a7c565b86604051610bf19190612797565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fb87757e0365ca4f80cc1f429f422c0ea7ec26bbd3e5778727e77c809462aad0289604051610c3f919061291b565b60405180910390a350600101610af6565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b610c846113ab565b610c8e82826113c4565b610c966114f1565b61090b611502565b60007f000000000000000000000000000000000000000000000000000000000000000082604051602001610cd3929190612767565b604051602081830303815290604052805190602001209050919050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000610d1e610cf0565b73ffffffffffffffffffffffffffffffffffffffff1663aaabadc56040518163ffffffff1660e01b815260040160206040518083038186803b158015610d6357600080fd5b505afa158015610d77573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610837919061257a565b60607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610e0357600080fd5b505afa158015610e17573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083791908101906123ad565b6000827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166316e772bc826040518263ffffffff1660e01b8152600401610e9b919061291b565b60206040518083038186803b158015610eb357600080fd5b505afa158015610ec7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eeb91906124e7565b610f075760405162461bcd60e51b815260040161051090612b10565b610542836001866040516107209190612797565b610f236113ab565b6000610f2d61132a565b905060607f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663afcb1a866040518163ffffffff1660e01b815260040160006040518083038186803b158015610f9757600080fd5b505afa158015610fab573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610fd391908101906123ad565b905060005b815181101561100757610fff828281518110610ff057fe5b602002602001015185856116b7565b600101610fd8565b5061101233476119b1565b505061101c611502565b50565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061109390849060040161291b565b60206040518083038186803b1580156110ab57600080fd5b505afa1580156110bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e391906124e7565b6110ff5760405162461bcd60e51b815260040161051090612b10565b611107611a38565b6111148484846001611a7e565b50505050565b6111226113ab565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152829073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061119690849060040161291b565b60206040518083038186803b1580156111ae57600080fd5b505afa1580156111c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e691906124e7565b6112025760405162461bcd60e51b815260040161051090612b10565b600061120c61132a565b90506112198484836116b7565b6109016114f1565b6040517f16e772bc000000000000000000000000000000000000000000000000000000008152839073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906316e772bc9061129590849060040161291b565b60206040518083038186803b1580156112ad57600080fd5b505afa1580156112c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e591906124e7565b6113015760405162461bcd60e51b815260040161051090612b10565b6111148484846000611a7e565b81546000906113209083106064611e4a565b6109ea8383611343565b6000600162093a8042040362093a8002905090565b5490565b600082600001828154811061135457fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff169392505050565b73ffffffffffffffffffffffffffffffffffffffff1660009081526001919091016020526040902054151590565b6113bd60026000541415610190611e4a565b6002600055565b60006113d0838361070a565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a92859261149b92889201612800565b6000604051808303818588803b1580156114b457600080fd5b505af11580156114c8573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526111149190810190612547565b47801561101c5761101c33826119b1565b6001600055565b73ffffffffffffffffffffffffffffffffffffffff8116600090815260018301602052604081205480156116ad5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808301910180821461161257600086600001828154811061157757fe5b600091825260209091200154875473ffffffffffffffffffffffffffffffffffffffff909116915081908890859081106115ad57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff94851617905592909116815260018881019092526040902090830190555b855486908061161d57fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905590920190925573ffffffffffffffffffffffffffffffffffffffff8716825260018881019091526040822091909155935061044292505050565b6000915050610442565b60006001846040516116c99190612797565b9081526020016040518091039020905060006116e48261133f565b9050806116f25750506119ac565b6122a07f0000000000000000000000000000000000000000000000000000000000000000866040516020016117279190612797565b604051602081830303815290604052805190602001201461174a57611e5861174e565b611f745b905060005b828110156119a75760006117678583611343565b9050857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a4d7a250836040518263ffffffff1660e01b81526004016117c391906127df565b60206040518083038186803b1580156117db57600080fd5b505afa1580156117ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118139190612723565b10156118be576040517f615e523700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063615e52379061188b9084906004016127df565b600060405180830381600087803b1580156118a557600080fd5b505af11580156118b9573d6000803e3d6000fd5b505050505b6040517fd3078c94000000000000000000000000000000000000000000000000000000008152879073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063d3078c94906119349085908b90600401612837565b60206040518083038186803b15801561194c57600080fd5b505afa158015611960573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119849190612723565b1015611990575061199f565b61199d818463ffffffff16565b505b600101611753565b505050505b505050565b6119c0814710156101a3611e4a565b60008273ffffffffffffffffffffffffffffffffffffffff16826040516119e6906127dc565b60006040518083038185875af1925050503d8060008114611a23576040519150601f19603f3d011682016040523d82523d6000602084013e611a28565b606091505b505090506119ac816101a4611e4a565b6000611a676000357fffffffff0000000000000000000000000000000000000000000000000000000016610c9e565b905061101c611a768233612115565b610191611e4a565b6000600185604051611a909190612797565b9081526020016040518091039020905060005b83811015610c50576000858583818110611ab957fe5b9050602002016020810190611ace9190612596565b6040517f61df1bf900000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906361df1bf990611b439084906004016127df565b60206040518083038186803b158015611b5b57600080fd5b505afa158015611b6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b9391906124e7565b611baf5760405162461bcd60e51b81526004016105109061292e565b8073ffffffffffffffffffffffffffffffffffffffff16639c868ac06040518163ffffffff1660e01b815260040160206040518083038186803b158015611bf557600080fd5b505afa158015611c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c2d91906124e7565b15611c4a5760405162461bcd60e51b815260040161051090612ad9565b611c5483826121ab565b611c705760405162461bcd60e51b815260040161051090612b7e565b8380611dc157506040517f572cb6a500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063572cb6a590611ce9908a9060040161291b565b60206040518083038186803b158015611d0157600080fd5b505afa158015611d15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d39919061257a565b73ffffffffffffffffffffffffffffffffffffffff1663ce3cc8bd826040518263ffffffff1660e01b8152600401611d7191906127df565b60206040518083038186803b158015611d8957600080fd5b505afa158015611d9d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc191906124e7565b611ddd5760405162461bcd60e51b815260040161051090612a1f565b86604051611deb9190612797565b60405180910390208173ffffffffffffffffffffffffffffffffffffffff167fbd3a33b3738a69bcfb84219d93fb0b1b2d91efbf2e5bef206c9af4122290fb5489604051611e39919061291b565b60405180910390a350600101611aa3565b8161090b5761090b8161222b565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a92611f1e92869201612800565b600060405180830381600087803b158015611f3857600080fd5b505af1158015611f4c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261090b9190810190612547565b60008173ffffffffffffffffffffffffffffffffffffffff1663b02452256040518163ffffffff1660e01b815260040160206040518083038186803b158015611fbc57600080fd5b505afa158015611fd0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ff49190612723565b6040805160048082526024820183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fc2c4c5c10000000000000000000000000000000000000000000000000000000017905291517f4036176a00000000000000000000000000000000000000000000000000000000815292935073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001692634036176a9285926120bf92889201612800565b6000604051808303818588803b1580156120d857600080fd5b505af11580156120ec573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f191682016040526119ac9190810190612547565b600061211f610d14565b73ffffffffffffffffffffffffffffffffffffffff16639be2a8848484306040518463ffffffff1660e01b815260040161215b939291906128ef565b60206040518083038186803b15801561217357600080fd5b505afa158015612187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109ea91906124e7565b60006121b7838361137d565b61082457508154600180820184556000848152602080822090930180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff861690811790915585549082528286019093526040902091909155610442565b62461bcd60e51b600090815260206004526007602452600a808304818106603090810160081b83860601918390049283060160101b016642414c230000300160c81b60445261101c917f42414c0000000000000000000000000000000000000000000000000000000000906242414c90606490fd5bfe5b600082601f8301126122b2578081fd5b81356122c56122c082612c02565b612bdb565b8181529150602080830190848101818402860182018710156122e657600080fd5b60005b8481101561230e5781356122fc81612c72565b845292820192908201906001016122e9565b505050505092915050565b600082601f830112612329578081fd5b81516123376122c082612c22565b915080825283602082850101111561234e57600080fd5b610545816020840160208601612c46565b600082601f83011261236f578081fd5b813561237d6122c082612c22565b915080825283602082850101111561239457600080fd5b8060208401602084013760009082016020015292915050565b600060208083850312156123bf578182fd5b825167ffffffffffffffff8111156123d5578283fd5b8301601f810185136123e5578283fd5b80516123f36122c082612c02565b81815283810190838501865b84811015612428576124168a888451890101612319565b845292860192908601906001016123ff565b509098975050505050505050565b60008060408385031215612448578081fd5b823567ffffffffffffffff8082111561245f578283fd5b818501915085601f830112612472578283fd5b81356124806122c082612c02565b81815260208082019190858101875b858110156124b8576124a68c8484358b010161235f565b8552938201939082019060010161248f565b509197508801359450505050808211156124d0578283fd5b506124dd858286016122a2565b9150509250929050565b6000602082840312156124f8578081fd5b815180151581146109ea578182fd5b600060208284031215612518578081fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146109ea578182fd5b600060208284031215612558578081fd5b815167ffffffffffffffff81111561256e578182fd5b61054284828501612319565b60006020828403121561258b578081fd5b81516109ea81612c72565b6000602082840312156125a7578081fd5b81356109ea81612c72565b6000602082840312156125c3578081fd5b813567ffffffffffffffff8111156125d9578182fd5b6105428482850161235f565b600080604083850312156125f7578182fd5b823567ffffffffffffffff81111561260d578283fd5b6126198582860161235f565b925050602083013561262a81612c72565b809150509250929050565b600080600060408486031215612649578081fd5b833567ffffffffffffffff80821115612660578283fd5b61266c8783880161235f565b94506020860135915080821115612681578283fd5b818601915086601f830112612694578283fd5b8135818111156126a2578384fd5b87602080830285010111156126b5578384fd5b6020830194508093505050509250925092565b600080604083850312156126da578182fd5b823567ffffffffffffffff8111156126f0578283fd5b6126fc8582860161235f565b95602094909401359450505050565b60006020828403121561271c578081fd5b5035919050565b600060208284031215612734578081fd5b5051919050565b60008151808452612753816020860160208601612c46565b601f01601f19169290920160200192915050565b9182527fffffffff0000000000000000000000000000000000000000000000000000000016602082015260240190565b600082516127a9818460208701612c46565b9190910192915050565b7f417262697472756d000000000000000000000000000000000000000000000000815260080190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b600073ffffffffffffffffffffffffffffffffffffffff841682526040602083015261282f604083018461273b565b949350505050565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6000602080830181845280855180835260408601915060408482028701019250838701855b828110156128ce577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526128bc85835161273b565b94509285019290850190600101612882565b5092979650505050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff918216602084015216604082015260600190565b6000602082526109ea602083018461273b565b6020808252602a908201527f476175676520776173206e6f7420616464656420746f2074686520476175676560408201527f436f6e74726f6c6c657200000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4e6f2067617567657320746f20636865636b706f696e74000000000000000000604082015260600190565b6020808252602a908201527f4d69736d61746368206265747765656e20676175676520747970657320616e6460408201527f2061646472657373657300000000000000000000000000000000000000000000606082015260800190565b6020808252602e908201527f476175676520646f6573206e6f7420636f72726573706f6e6420746f2074686560408201527f2073656c65637465642074797065000000000000000000000000000000000000606082015260800190565b60208082526027908201527f476175676520776173206e6f7420616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60208082526010908201527f476175676520776173206b696c6c656400000000000000000000000000000000604082015260600190565b60208082526012908201527f496e76616c696420676175676520747970650000000000000000000000000000604082015260600190565b60208082526014908201527f476175676520776173206e6f74206b696c6c6564000000000000000000000000604082015260600190565b60208082526027908201527f476175676520616c726561647920616464656420746f2074686520636865636b60408201527f706f696e74657200000000000000000000000000000000000000000000000000606082015260800190565b60405181810167ffffffffffffffff81118282101715612bfa57600080fd5b604052919050565b600067ffffffffffffffff821115612c18578081fd5b5060209081020190565b600067ffffffffffffffff821115612c38578081fd5b50601f01601f191660200190565b60005b83811015612c61578181015183820152602001612c49565b838111156111145750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461101c57600080fdfea2646970667358221220bd2232a8b4de30a99a8853ff26db7df658ee0bb4445ba862f5ca4bb0f779e92464736f6c63430007010033",
"linkReferences": {},
"deployedLinkReferences": {}
}