@cofhe/mock-contracts 0.1.1 → 0.2.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.
@@ -1,1026 +1,1028 @@
1
1
  // This file is auto-generated by build-artifacts.ts
2
- import { type MocksArtifact } from './index';
2
+ import { type MockArtifact } from './types';
3
3
 
4
4
  export const MockTaskManagerArtifact = {
5
- "contractName": "MockTaskManager",
6
- "fixedAddress": "0xeA30c4B8b44078Bbf8a6ef5b9f1eC1626C7848D9",
7
- "abi": [
5
+ contractName: 'MockTaskManager',
6
+ isFixed: true,
7
+ fixedAddress: '0xeA30c4B8b44078Bbf8a6ef5b9f1eC1626C7848D9',
8
+ abi: [
8
9
  {
9
- "type": "constructor",
10
- "inputs": [],
11
- "stateMutability": "nonpayable"
10
+ type: 'constructor',
11
+ inputs: [],
12
+ stateMutability: 'nonpayable',
12
13
  },
13
14
  {
14
- "type": "function",
15
- "name": "MOCK_logAllow",
16
- "inputs": [
15
+ type: 'function',
16
+ name: 'MOCK_logAllow',
17
+ inputs: [
17
18
  {
18
- "name": "operation",
19
- "type": "string",
20
- "internalType": "string"
19
+ name: 'operation',
20
+ type: 'string',
21
+ internalType: 'string',
21
22
  },
22
23
  {
23
- "name": "ctHash",
24
- "type": "uint256",
25
- "internalType": "uint256"
24
+ name: 'ctHash',
25
+ type: 'uint256',
26
+ internalType: 'uint256',
26
27
  },
27
28
  {
28
- "name": "account",
29
- "type": "address",
30
- "internalType": "address"
31
- }
29
+ name: 'account',
30
+ type: 'address',
31
+ internalType: 'address',
32
+ },
32
33
  ],
33
- "outputs": [],
34
- "stateMutability": "view"
34
+ outputs: [],
35
+ stateMutability: 'view',
35
36
  },
36
37
  {
37
- "type": "function",
38
- "name": "MOCK_setInEuintKey",
39
- "inputs": [
38
+ type: 'function',
39
+ name: 'MOCK_setInEuintKey',
40
+ inputs: [
40
41
  {
41
- "name": "ctHash",
42
- "type": "uint256",
43
- "internalType": "uint256"
42
+ name: 'ctHash',
43
+ type: 'uint256',
44
+ internalType: 'uint256',
44
45
  },
45
46
  {
46
- "name": "value",
47
- "type": "uint256",
48
- "internalType": "uint256"
49
- }
47
+ name: 'value',
48
+ type: 'uint256',
49
+ internalType: 'uint256',
50
+ },
50
51
  ],
51
- "outputs": [],
52
- "stateMutability": "nonpayable"
52
+ outputs: [],
53
+ stateMutability: 'nonpayable',
53
54
  },
54
55
  {
55
- "type": "function",
56
- "name": "acl",
57
- "inputs": [],
58
- "outputs": [
59
- {
60
- "name": "",
61
- "type": "address",
62
- "internalType": "contract MockACL"
63
- }
56
+ type: 'function',
57
+ name: 'acl',
58
+ inputs: [],
59
+ outputs: [
60
+ {
61
+ name: '',
62
+ type: 'address',
63
+ internalType: 'contract MockACL',
64
+ },
64
65
  ],
65
- "stateMutability": "view"
66
+ stateMutability: 'view',
66
67
  },
67
68
  {
68
- "type": "function",
69
- "name": "aggregator",
70
- "inputs": [],
71
- "outputs": [
72
- {
73
- "name": "",
74
- "type": "address",
75
- "internalType": "address"
76
- }
69
+ type: 'function',
70
+ name: 'aggregator',
71
+ inputs: [],
72
+ outputs: [
73
+ {
74
+ name: '',
75
+ type: 'address',
76
+ internalType: 'address',
77
+ },
77
78
  ],
78
- "stateMutability": "view"
79
+ stateMutability: 'view',
79
80
  },
80
81
  {
81
- "type": "function",
82
- "name": "allow",
83
- "inputs": [
82
+ type: 'function',
83
+ name: 'allow',
84
+ inputs: [
84
85
  {
85
- "name": "ctHash",
86
- "type": "uint256",
87
- "internalType": "uint256"
86
+ name: 'ctHash',
87
+ type: 'uint256',
88
+ internalType: 'uint256',
88
89
  },
89
90
  {
90
- "name": "account",
91
- "type": "address",
92
- "internalType": "address"
93
- }
91
+ name: 'account',
92
+ type: 'address',
93
+ internalType: 'address',
94
+ },
94
95
  ],
95
- "outputs": [],
96
- "stateMutability": "nonpayable"
96
+ outputs: [],
97
+ stateMutability: 'nonpayable',
97
98
  },
98
99
  {
99
- "type": "function",
100
- "name": "allowForDecryption",
101
- "inputs": [
100
+ type: 'function',
101
+ name: 'allowForDecryption',
102
+ inputs: [
102
103
  {
103
- "name": "ctHash",
104
- "type": "uint256",
105
- "internalType": "uint256"
106
- }
104
+ name: 'ctHash',
105
+ type: 'uint256',
106
+ internalType: 'uint256',
107
+ },
107
108
  ],
108
- "outputs": [],
109
- "stateMutability": "nonpayable"
109
+ outputs: [],
110
+ stateMutability: 'nonpayable',
110
111
  },
111
112
  {
112
- "type": "function",
113
- "name": "allowGlobal",
114
- "inputs": [
113
+ type: 'function',
114
+ name: 'allowGlobal',
115
+ inputs: [
115
116
  {
116
- "name": "ctHash",
117
- "type": "uint256",
118
- "internalType": "uint256"
119
- }
117
+ name: 'ctHash',
118
+ type: 'uint256',
119
+ internalType: 'uint256',
120
+ },
120
121
  ],
121
- "outputs": [],
122
- "stateMutability": "nonpayable"
122
+ outputs: [],
123
+ stateMutability: 'nonpayable',
123
124
  },
124
125
  {
125
- "type": "function",
126
- "name": "allowTransient",
127
- "inputs": [
126
+ type: 'function',
127
+ name: 'allowTransient',
128
+ inputs: [
128
129
  {
129
- "name": "ctHash",
130
- "type": "uint256",
131
- "internalType": "uint256"
130
+ name: 'ctHash',
131
+ type: 'uint256',
132
+ internalType: 'uint256',
132
133
  },
133
134
  {
134
- "name": "account",
135
- "type": "address",
136
- "internalType": "address"
137
- }
135
+ name: 'account',
136
+ type: 'address',
137
+ internalType: 'address',
138
+ },
138
139
  ],
139
- "outputs": [],
140
- "stateMutability": "nonpayable"
140
+ outputs: [],
141
+ stateMutability: 'nonpayable',
141
142
  },
142
143
  {
143
- "type": "function",
144
- "name": "createDecryptTask",
145
- "inputs": [
144
+ type: 'function',
145
+ name: 'createDecryptTask',
146
+ inputs: [
146
147
  {
147
- "name": "ctHash",
148
- "type": "uint256",
149
- "internalType": "uint256"
148
+ name: 'ctHash',
149
+ type: 'uint256',
150
+ internalType: 'uint256',
150
151
  },
151
152
  {
152
- "name": "",
153
- "type": "address",
154
- "internalType": "address"
155
- }
153
+ name: '',
154
+ type: 'address',
155
+ internalType: 'address',
156
+ },
156
157
  ],
157
- "outputs": [],
158
- "stateMutability": "nonpayable"
158
+ outputs: [],
159
+ stateMutability: 'nonpayable',
159
160
  },
160
161
  {
161
- "type": "function",
162
- "name": "createTask",
163
- "inputs": [
162
+ type: 'function',
163
+ name: 'createTask',
164
+ inputs: [
164
165
  {
165
- "name": "returnType",
166
- "type": "uint8",
167
- "internalType": "uint8"
166
+ name: 'returnType',
167
+ type: 'uint8',
168
+ internalType: 'uint8',
168
169
  },
169
170
  {
170
- "name": "funcId",
171
- "type": "uint8",
172
- "internalType": "enum FunctionId"
171
+ name: 'funcId',
172
+ type: 'uint8',
173
+ internalType: 'enum FunctionId',
173
174
  },
174
175
  {
175
- "name": "encryptedHashes",
176
- "type": "uint256[]",
177
- "internalType": "uint256[]"
176
+ name: 'encryptedHashes',
177
+ type: 'uint256[]',
178
+ internalType: 'uint256[]',
178
179
  },
179
180
  {
180
- "name": "extraInputs",
181
- "type": "uint256[]",
182
- "internalType": "uint256[]"
183
- }
181
+ name: 'extraInputs',
182
+ type: 'uint256[]',
183
+ internalType: 'uint256[]',
184
+ },
184
185
  ],
185
- "outputs": [
186
+ outputs: [
186
187
  {
187
- "name": "",
188
- "type": "uint256",
189
- "internalType": "uint256"
190
- }
188
+ name: '',
189
+ type: 'uint256',
190
+ internalType: 'uint256',
191
+ },
191
192
  ],
192
- "stateMutability": "nonpayable"
193
+ stateMutability: 'nonpayable',
193
194
  },
194
195
  {
195
- "type": "function",
196
- "name": "exists",
197
- "inputs": [],
198
- "outputs": [
199
- {
200
- "name": "",
201
- "type": "bool",
202
- "internalType": "bool"
203
- }
196
+ type: 'function',
197
+ name: 'exists',
198
+ inputs: [],
199
+ outputs: [
200
+ {
201
+ name: '',
202
+ type: 'bool',
203
+ internalType: 'bool',
204
+ },
204
205
  ],
205
- "stateMutability": "pure"
206
+ stateMutability: 'pure',
206
207
  },
207
208
  {
208
- "type": "function",
209
- "name": "getDecryptResult",
210
- "inputs": [
209
+ type: 'function',
210
+ name: 'getDecryptResult',
211
+ inputs: [
211
212
  {
212
- "name": "ctHash",
213
- "type": "uint256",
214
- "internalType": "uint256"
215
- }
213
+ name: 'ctHash',
214
+ type: 'uint256',
215
+ internalType: 'uint256',
216
+ },
216
217
  ],
217
- "outputs": [
218
+ outputs: [
218
219
  {
219
- "name": "",
220
- "type": "uint256",
221
- "internalType": "uint256"
222
- }
220
+ name: '',
221
+ type: 'uint256',
222
+ internalType: 'uint256',
223
+ },
223
224
  ],
224
- "stateMutability": "view"
225
+ stateMutability: 'view',
225
226
  },
226
227
  {
227
- "type": "function",
228
- "name": "getDecryptResultSafe",
229
- "inputs": [
228
+ type: 'function',
229
+ name: 'getDecryptResultSafe',
230
+ inputs: [
230
231
  {
231
- "name": "ctHash",
232
- "type": "uint256",
233
- "internalType": "uint256"
234
- }
232
+ name: 'ctHash',
233
+ type: 'uint256',
234
+ internalType: 'uint256',
235
+ },
235
236
  ],
236
- "outputs": [
237
+ outputs: [
237
238
  {
238
- "name": "result",
239
- "type": "uint256",
240
- "internalType": "uint256"
239
+ name: 'result',
240
+ type: 'uint256',
241
+ internalType: 'uint256',
241
242
  },
242
243
  {
243
- "name": "decrypted",
244
- "type": "bool",
245
- "internalType": "bool"
246
- }
244
+ name: 'decrypted',
245
+ type: 'bool',
246
+ internalType: 'bool',
247
+ },
247
248
  ],
248
- "stateMutability": "view"
249
+ stateMutability: 'view',
249
250
  },
250
251
  {
251
- "type": "function",
252
- "name": "handleDecryptResult",
253
- "inputs": [
252
+ type: 'function',
253
+ name: 'handleDecryptResult',
254
+ inputs: [
254
255
  {
255
- "name": "ctHash",
256
- "type": "uint256",
257
- "internalType": "uint256"
256
+ name: 'ctHash',
257
+ type: 'uint256',
258
+ internalType: 'uint256',
258
259
  },
259
260
  {
260
- "name": "result",
261
- "type": "uint256",
262
- "internalType": "uint256"
261
+ name: 'result',
262
+ type: 'uint256',
263
+ internalType: 'uint256',
263
264
  },
264
265
  {
265
- "name": "",
266
- "type": "address[]",
267
- "internalType": "address[]"
268
- }
266
+ name: '',
267
+ type: 'address[]',
268
+ internalType: 'address[]',
269
+ },
269
270
  ],
270
- "outputs": [],
271
- "stateMutability": "nonpayable"
271
+ outputs: [],
272
+ stateMutability: 'nonpayable',
272
273
  },
273
274
  {
274
- "type": "function",
275
- "name": "handleError",
276
- "inputs": [
275
+ type: 'function',
276
+ name: 'handleError',
277
+ inputs: [
277
278
  {
278
- "name": "ctHash",
279
- "type": "uint256",
280
- "internalType": "uint256"
279
+ name: 'ctHash',
280
+ type: 'uint256',
281
+ internalType: 'uint256',
281
282
  },
282
283
  {
283
- "name": "operation",
284
- "type": "string",
285
- "internalType": "string"
284
+ name: 'operation',
285
+ type: 'string',
286
+ internalType: 'string',
286
287
  },
287
288
  {
288
- "name": "errorMessage",
289
- "type": "string",
290
- "internalType": "string"
291
- }
289
+ name: 'errorMessage',
290
+ type: 'string',
291
+ internalType: 'string',
292
+ },
292
293
  ],
293
- "outputs": [],
294
- "stateMutability": "nonpayable"
294
+ outputs: [],
295
+ stateMutability: 'nonpayable',
295
296
  },
296
297
  {
297
- "type": "function",
298
- "name": "inMockStorage",
299
- "inputs": [
298
+ type: 'function',
299
+ name: 'inMockStorage',
300
+ inputs: [
300
301
  {
301
- "name": "",
302
- "type": "uint256",
303
- "internalType": "uint256"
304
- }
302
+ name: '',
303
+ type: 'uint256',
304
+ internalType: 'uint256',
305
+ },
305
306
  ],
306
- "outputs": [
307
+ outputs: [
307
308
  {
308
- "name": "",
309
- "type": "bool",
310
- "internalType": "bool"
311
- }
309
+ name: '',
310
+ type: 'bool',
311
+ internalType: 'bool',
312
+ },
312
313
  ],
313
- "stateMutability": "view"
314
+ stateMutability: 'view',
314
315
  },
315
316
  {
316
- "type": "function",
317
- "name": "initialize",
318
- "inputs": [
317
+ type: 'function',
318
+ name: 'initialize',
319
+ inputs: [
319
320
  {
320
- "name": "initialOwner",
321
- "type": "address",
322
- "internalType": "address"
323
- }
321
+ name: 'initialOwner',
322
+ type: 'address',
323
+ internalType: 'address',
324
+ },
324
325
  ],
325
- "outputs": [],
326
- "stateMutability": "nonpayable"
326
+ outputs: [],
327
+ stateMutability: 'nonpayable',
327
328
  },
328
329
  {
329
- "type": "function",
330
- "name": "isAllowed",
331
- "inputs": [
330
+ type: 'function',
331
+ name: 'isAllowed',
332
+ inputs: [
332
333
  {
333
- "name": "ctHash",
334
- "type": "uint256",
335
- "internalType": "uint256"
334
+ name: 'ctHash',
335
+ type: 'uint256',
336
+ internalType: 'uint256',
336
337
  },
337
338
  {
338
- "name": "account",
339
- "type": "address",
340
- "internalType": "address"
341
- }
339
+ name: 'account',
340
+ type: 'address',
341
+ internalType: 'address',
342
+ },
342
343
  ],
343
- "outputs": [
344
+ outputs: [
344
345
  {
345
- "name": "",
346
- "type": "bool",
347
- "internalType": "bool"
348
- }
346
+ name: '',
347
+ type: 'bool',
348
+ internalType: 'bool',
349
+ },
349
350
  ],
350
- "stateMutability": "view"
351
+ stateMutability: 'view',
351
352
  },
352
353
  {
353
- "type": "function",
354
- "name": "isAllowedWithPermission",
355
- "inputs": [
356
- {
357
- "name": "permission",
358
- "type": "tuple",
359
- "internalType": "struct Permission",
360
- "components": [
354
+ type: 'function',
355
+ name: 'isAllowedWithPermission',
356
+ inputs: [
357
+ {
358
+ name: 'permission',
359
+ type: 'tuple',
360
+ internalType: 'struct Permission',
361
+ components: [
361
362
  {
362
- "name": "issuer",
363
- "type": "address",
364
- "internalType": "address"
363
+ name: 'issuer',
364
+ type: 'address',
365
+ internalType: 'address',
365
366
  },
366
367
  {
367
- "name": "expiration",
368
- "type": "uint64",
369
- "internalType": "uint64"
368
+ name: 'expiration',
369
+ type: 'uint64',
370
+ internalType: 'uint64',
370
371
  },
371
372
  {
372
- "name": "recipient",
373
- "type": "address",
374
- "internalType": "address"
373
+ name: 'recipient',
374
+ type: 'address',
375
+ internalType: 'address',
375
376
  },
376
377
  {
377
- "name": "validatorId",
378
- "type": "uint256",
379
- "internalType": "uint256"
378
+ name: 'validatorId',
379
+ type: 'uint256',
380
+ internalType: 'uint256',
380
381
  },
381
382
  {
382
- "name": "validatorContract",
383
- "type": "address",
384
- "internalType": "address"
383
+ name: 'validatorContract',
384
+ type: 'address',
385
+ internalType: 'address',
385
386
  },
386
387
  {
387
- "name": "sealingKey",
388
- "type": "bytes32",
389
- "internalType": "bytes32"
388
+ name: 'sealingKey',
389
+ type: 'bytes32',
390
+ internalType: 'bytes32',
390
391
  },
391
392
  {
392
- "name": "issuerSignature",
393
- "type": "bytes",
394
- "internalType": "bytes"
393
+ name: 'issuerSignature',
394
+ type: 'bytes',
395
+ internalType: 'bytes',
395
396
  },
396
397
  {
397
- "name": "recipientSignature",
398
- "type": "bytes",
399
- "internalType": "bytes"
400
- }
401
- ]
398
+ name: 'recipientSignature',
399
+ type: 'bytes',
400
+ internalType: 'bytes',
401
+ },
402
+ ],
402
403
  },
403
404
  {
404
- "name": "handle",
405
- "type": "uint256",
406
- "internalType": "uint256"
407
- }
405
+ name: 'handle',
406
+ type: 'uint256',
407
+ internalType: 'uint256',
408
+ },
408
409
  ],
409
- "outputs": [
410
+ outputs: [
410
411
  {
411
- "name": "",
412
- "type": "bool",
413
- "internalType": "bool"
414
- }
412
+ name: '',
413
+ type: 'bool',
414
+ internalType: 'bool',
415
+ },
415
416
  ],
416
- "stateMutability": "view"
417
+ stateMutability: 'view',
417
418
  },
418
419
  {
419
- "type": "function",
420
- "name": "isInitialized",
421
- "inputs": [],
422
- "outputs": [
423
- {
424
- "name": "",
425
- "type": "bool",
426
- "internalType": "bool"
427
- }
420
+ type: 'function',
421
+ name: 'isInitialized',
422
+ inputs: [],
423
+ outputs: [
424
+ {
425
+ name: '',
426
+ type: 'bool',
427
+ internalType: 'bool',
428
+ },
428
429
  ],
429
- "stateMutability": "view"
430
+ stateMutability: 'view',
430
431
  },
431
432
  {
432
- "type": "function",
433
- "name": "logOps",
434
- "inputs": [],
435
- "outputs": [
436
- {
437
- "name": "",
438
- "type": "bool",
439
- "internalType": "bool"
440
- }
433
+ type: 'function',
434
+ name: 'logOps',
435
+ inputs: [],
436
+ outputs: [
437
+ {
438
+ name: '',
439
+ type: 'bool',
440
+ internalType: 'bool',
441
+ },
441
442
  ],
442
- "stateMutability": "view"
443
+ stateMutability: 'view',
443
444
  },
444
445
  {
445
- "type": "function",
446
- "name": "mockStorage",
447
- "inputs": [
446
+ type: 'function',
447
+ name: 'mockStorage',
448
+ inputs: [
448
449
  {
449
- "name": "",
450
- "type": "uint256",
451
- "internalType": "uint256"
452
- }
450
+ name: '',
451
+ type: 'uint256',
452
+ internalType: 'uint256',
453
+ },
453
454
  ],
454
- "outputs": [
455
+ outputs: [
455
456
  {
456
- "name": "",
457
- "type": "uint256",
458
- "internalType": "uint256"
459
- }
457
+ name: '',
458
+ type: 'uint256',
459
+ internalType: 'uint256',
460
+ },
460
461
  ],
461
- "stateMutability": "view"
462
+ stateMutability: 'view',
462
463
  },
463
464
  {
464
- "type": "function",
465
- "name": "removeFirstLetter",
466
- "inputs": [
465
+ type: 'function',
466
+ name: 'removeFirstLetter',
467
+ inputs: [
467
468
  {
468
- "name": "str",
469
- "type": "string",
470
- "internalType": "string"
471
- }
469
+ name: 'str',
470
+ type: 'string',
471
+ internalType: 'string',
472
+ },
472
473
  ],
473
- "outputs": [
474
+ outputs: [
474
475
  {
475
- "name": "",
476
- "type": "string",
477
- "internalType": "string"
478
- }
476
+ name: '',
477
+ type: 'string',
478
+ internalType: 'string',
479
+ },
479
480
  ],
480
- "stateMutability": "pure"
481
+ stateMutability: 'pure',
481
482
  },
482
483
  {
483
- "type": "function",
484
- "name": "setACLContract",
485
- "inputs": [
484
+ type: 'function',
485
+ name: 'setACLContract',
486
+ inputs: [
486
487
  {
487
- "name": "_aclAddress",
488
- "type": "address",
489
- "internalType": "address"
490
- }
488
+ name: '_aclAddress',
489
+ type: 'address',
490
+ internalType: 'address',
491
+ },
491
492
  ],
492
- "outputs": [],
493
- "stateMutability": "nonpayable"
493
+ outputs: [],
494
+ stateMutability: 'nonpayable',
494
495
  },
495
496
  {
496
- "type": "function",
497
- "name": "setAggregator",
498
- "inputs": [
497
+ type: 'function',
498
+ name: 'setAggregator',
499
+ inputs: [
499
500
  {
500
- "name": "_aggregatorAddress",
501
- "type": "address",
502
- "internalType": "address"
503
- }
501
+ name: '_aggregatorAddress',
502
+ type: 'address',
503
+ internalType: 'address',
504
+ },
504
505
  ],
505
- "outputs": [],
506
- "stateMutability": "nonpayable"
506
+ outputs: [],
507
+ stateMutability: 'nonpayable',
507
508
  },
508
509
  {
509
- "type": "function",
510
- "name": "setLogOps",
511
- "inputs": [
510
+ type: 'function',
511
+ name: 'setLogOps',
512
+ inputs: [
512
513
  {
513
- "name": "_logOps",
514
- "type": "bool",
515
- "internalType": "bool"
516
- }
514
+ name: '_logOps',
515
+ type: 'bool',
516
+ internalType: 'bool',
517
+ },
517
518
  ],
518
- "outputs": [],
519
- "stateMutability": "nonpayable"
519
+ outputs: [],
520
+ stateMutability: 'nonpayable',
520
521
  },
521
522
  {
522
- "type": "function",
523
- "name": "setSecurityZoneMax",
524
- "inputs": [
523
+ type: 'function',
524
+ name: 'setSecurityZoneMax',
525
+ inputs: [
525
526
  {
526
- "name": "securityZone",
527
- "type": "int32",
528
- "internalType": "int32"
529
- }
527
+ name: 'securityZone',
528
+ type: 'int32',
529
+ internalType: 'int32',
530
+ },
530
531
  ],
531
- "outputs": [],
532
- "stateMutability": "nonpayable"
532
+ outputs: [],
533
+ stateMutability: 'nonpayable',
533
534
  },
534
535
  {
535
- "type": "function",
536
- "name": "setSecurityZoneMin",
537
- "inputs": [
536
+ type: 'function',
537
+ name: 'setSecurityZoneMin',
538
+ inputs: [
538
539
  {
539
- "name": "securityZone",
540
- "type": "int32",
541
- "internalType": "int32"
542
- }
540
+ name: 'securityZone',
541
+ type: 'int32',
542
+ internalType: 'int32',
543
+ },
543
544
  ],
544
- "outputs": [],
545
- "stateMutability": "nonpayable"
545
+ outputs: [],
546
+ stateMutability: 'nonpayable',
546
547
  },
547
548
  {
548
- "type": "function",
549
- "name": "setSecurityZones",
550
- "inputs": [
549
+ type: 'function',
550
+ name: 'setSecurityZones',
551
+ inputs: [
551
552
  {
552
- "name": "minSZ",
553
- "type": "int32",
554
- "internalType": "int32"
553
+ name: 'minSZ',
554
+ type: 'int32',
555
+ internalType: 'int32',
555
556
  },
556
557
  {
557
- "name": "maxSZ",
558
- "type": "int32",
559
- "internalType": "int32"
560
- }
558
+ name: 'maxSZ',
559
+ type: 'int32',
560
+ internalType: 'int32',
561
+ },
561
562
  ],
562
- "outputs": [],
563
- "stateMutability": "nonpayable"
563
+ outputs: [],
564
+ stateMutability: 'nonpayable',
564
565
  },
565
566
  {
566
- "type": "function",
567
- "name": "setVerifierSigner",
568
- "inputs": [
567
+ type: 'function',
568
+ name: 'setVerifierSigner',
569
+ inputs: [
569
570
  {
570
- "name": "signer",
571
- "type": "address",
572
- "internalType": "address"
573
- }
571
+ name: 'signer',
572
+ type: 'address',
573
+ internalType: 'address',
574
+ },
574
575
  ],
575
- "outputs": [],
576
- "stateMutability": "nonpayable"
576
+ outputs: [],
577
+ stateMutability: 'nonpayable',
577
578
  },
578
579
  {
579
- "type": "function",
580
- "name": "sliceString",
581
- "inputs": [
580
+ type: 'function',
581
+ name: 'sliceString',
582
+ inputs: [
582
583
  {
583
- "name": "str",
584
- "type": "string",
585
- "internalType": "string"
584
+ name: 'str',
585
+ type: 'string',
586
+ internalType: 'string',
586
587
  },
587
588
  {
588
- "name": "start",
589
- "type": "uint256",
590
- "internalType": "uint256"
589
+ name: 'start',
590
+ type: 'uint256',
591
+ internalType: 'uint256',
591
592
  },
592
593
  {
593
- "name": "length",
594
- "type": "uint256",
595
- "internalType": "uint256"
596
- }
594
+ name: 'length',
595
+ type: 'uint256',
596
+ internalType: 'uint256',
597
+ },
597
598
  ],
598
- "outputs": [
599
+ outputs: [
599
600
  {
600
- "name": "",
601
- "type": "string",
602
- "internalType": "string"
603
- }
601
+ name: '',
602
+ type: 'string',
603
+ internalType: 'string',
604
+ },
604
605
  ],
605
- "stateMutability": "pure"
606
+ stateMutability: 'pure',
606
607
  },
607
608
  {
608
- "type": "function",
609
- "name": "verifyInput",
610
- "inputs": [
611
- {
612
- "name": "input",
613
- "type": "tuple",
614
- "internalType": "struct EncryptedInput",
615
- "components": [
609
+ type: 'function',
610
+ name: 'verifyInput',
611
+ inputs: [
612
+ {
613
+ name: 'input',
614
+ type: 'tuple',
615
+ internalType: 'struct EncryptedInput',
616
+ components: [
616
617
  {
617
- "name": "ctHash",
618
- "type": "uint256",
619
- "internalType": "uint256"
618
+ name: 'ctHash',
619
+ type: 'uint256',
620
+ internalType: 'uint256',
620
621
  },
621
622
  {
622
- "name": "securityZone",
623
- "type": "uint8",
624
- "internalType": "uint8"
623
+ name: 'securityZone',
624
+ type: 'uint8',
625
+ internalType: 'uint8',
625
626
  },
626
627
  {
627
- "name": "utype",
628
- "type": "uint8",
629
- "internalType": "uint8"
628
+ name: 'utype',
629
+ type: 'uint8',
630
+ internalType: 'uint8',
630
631
  },
631
632
  {
632
- "name": "signature",
633
- "type": "bytes",
634
- "internalType": "bytes"
635
- }
636
- ]
633
+ name: 'signature',
634
+ type: 'bytes',
635
+ internalType: 'bytes',
636
+ },
637
+ ],
637
638
  },
638
639
  {
639
- "name": "sender",
640
- "type": "address",
641
- "internalType": "address"
642
- }
640
+ name: 'sender',
641
+ type: 'address',
642
+ internalType: 'address',
643
+ },
643
644
  ],
644
- "outputs": [
645
+ outputs: [
645
646
  {
646
- "name": "",
647
- "type": "uint256",
648
- "internalType": "uint256"
649
- }
647
+ name: '',
648
+ type: 'uint256',
649
+ internalType: 'uint256',
650
+ },
650
651
  ],
651
- "stateMutability": "nonpayable"
652
+ stateMutability: 'nonpayable',
652
653
  },
653
654
  {
654
- "type": "event",
655
- "name": "DecryptionResult",
656
- "inputs": [
657
- {
658
- "name": "ctHash",
659
- "type": "uint256",
660
- "indexed": false,
661
- "internalType": "uint256"
655
+ type: 'event',
656
+ name: 'DecryptionResult',
657
+ inputs: [
658
+ {
659
+ name: 'ctHash',
660
+ type: 'uint256',
661
+ indexed: false,
662
+ internalType: 'uint256',
662
663
  },
663
664
  {
664
- "name": "result",
665
- "type": "uint256",
666
- "indexed": false,
667
- "internalType": "uint256"
665
+ name: 'result',
666
+ type: 'uint256',
667
+ indexed: false,
668
+ internalType: 'uint256',
668
669
  },
669
670
  {
670
- "name": "requestor",
671
- "type": "address",
672
- "indexed": true,
673
- "internalType": "address"
674
- }
671
+ name: 'requestor',
672
+ type: 'address',
673
+ indexed: true,
674
+ internalType: 'address',
675
+ },
675
676
  ],
676
- "anonymous": false
677
+ anonymous: false,
677
678
  },
678
679
  {
679
- "type": "event",
680
- "name": "ProtocolNotification",
681
- "inputs": [
682
- {
683
- "name": "ctHash",
684
- "type": "uint256",
685
- "indexed": false,
686
- "internalType": "uint256"
680
+ type: 'event',
681
+ name: 'ProtocolNotification',
682
+ inputs: [
683
+ {
684
+ name: 'ctHash',
685
+ type: 'uint256',
686
+ indexed: false,
687
+ internalType: 'uint256',
687
688
  },
688
689
  {
689
- "name": "operation",
690
- "type": "string",
691
- "indexed": false,
692
- "internalType": "string"
690
+ name: 'operation',
691
+ type: 'string',
692
+ indexed: false,
693
+ internalType: 'string',
693
694
  },
694
695
  {
695
- "name": "errorMessage",
696
- "type": "string",
697
- "indexed": false,
698
- "internalType": "string"
699
- }
696
+ name: 'errorMessage',
697
+ type: 'string',
698
+ indexed: false,
699
+ internalType: 'string',
700
+ },
700
701
  ],
701
- "anonymous": false
702
+ anonymous: false,
702
703
  },
703
704
  {
704
- "type": "event",
705
- "name": "TaskCreated",
706
- "inputs": [
707
- {
708
- "name": "ctHash",
709
- "type": "uint256",
710
- "indexed": false,
711
- "internalType": "uint256"
705
+ type: 'event',
706
+ name: 'TaskCreated',
707
+ inputs: [
708
+ {
709
+ name: 'ctHash',
710
+ type: 'uint256',
711
+ indexed: false,
712
+ internalType: 'uint256',
712
713
  },
713
714
  {
714
- "name": "operation",
715
- "type": "string",
716
- "indexed": false,
717
- "internalType": "string"
715
+ name: 'operation',
716
+ type: 'string',
717
+ indexed: false,
718
+ internalType: 'string',
718
719
  },
719
720
  {
720
- "name": "input1",
721
- "type": "uint256",
722
- "indexed": false,
723
- "internalType": "uint256"
721
+ name: 'input1',
722
+ type: 'uint256',
723
+ indexed: false,
724
+ internalType: 'uint256',
724
725
  },
725
726
  {
726
- "name": "input2",
727
- "type": "uint256",
728
- "indexed": false,
729
- "internalType": "uint256"
727
+ name: 'input2',
728
+ type: 'uint256',
729
+ indexed: false,
730
+ internalType: 'uint256',
730
731
  },
731
732
  {
732
- "name": "input3",
733
- "type": "uint256",
734
- "indexed": false,
735
- "internalType": "uint256"
736
- }
733
+ name: 'input3',
734
+ type: 'uint256',
735
+ indexed: false,
736
+ internalType: 'uint256',
737
+ },
737
738
  ],
738
- "anonymous": false
739
+ anonymous: false,
739
740
  },
740
741
  {
741
- "type": "error",
742
- "name": "ACLNotAllowed",
743
- "inputs": [
742
+ type: 'error',
743
+ name: 'ACLNotAllowed',
744
+ inputs: [
744
745
  {
745
- "name": "handle",
746
- "type": "uint256",
747
- "internalType": "uint256"
746
+ name: 'handle',
747
+ type: 'uint256',
748
+ internalType: 'uint256',
748
749
  },
749
750
  {
750
- "name": "account",
751
- "type": "address",
752
- "internalType": "address"
753
- }
754
- ]
751
+ name: 'account',
752
+ type: 'address',
753
+ internalType: 'address',
754
+ },
755
+ ],
755
756
  },
756
757
  {
757
- "type": "error",
758
- "name": "DecryptionResultNotReady",
759
- "inputs": [
760
- {
761
- "name": "ctHash",
762
- "type": "uint256",
763
- "internalType": "uint256"
764
- }
765
- ]
758
+ type: 'error',
759
+ name: 'DecryptionResultNotReady',
760
+ inputs: [
761
+ {
762
+ name: 'ctHash',
763
+ type: 'uint256',
764
+ internalType: 'uint256',
765
+ },
766
+ ],
766
767
  },
767
768
  {
768
- "type": "error",
769
- "name": "ECDSAInvalidSignature",
770
- "inputs": []
769
+ type: 'error',
770
+ name: 'ECDSAInvalidSignature',
771
+ inputs: [],
771
772
  },
772
773
  {
773
- "type": "error",
774
- "name": "ECDSAInvalidSignatureLength",
775
- "inputs": [
776
- {
777
- "name": "length",
778
- "type": "uint256",
779
- "internalType": "uint256"
780
- }
781
- ]
774
+ type: 'error',
775
+ name: 'ECDSAInvalidSignatureLength',
776
+ inputs: [
777
+ {
778
+ name: 'length',
779
+ type: 'uint256',
780
+ internalType: 'uint256',
781
+ },
782
+ ],
782
783
  },
783
784
  {
784
- "type": "error",
785
- "name": "ECDSAInvalidSignatureS",
786
- "inputs": [
787
- {
788
- "name": "s",
789
- "type": "bytes32",
790
- "internalType": "bytes32"
791
- }
792
- ]
785
+ type: 'error',
786
+ name: 'ECDSAInvalidSignatureS',
787
+ inputs: [
788
+ {
789
+ name: 's',
790
+ type: 'bytes32',
791
+ internalType: 'bytes32',
792
+ },
793
+ ],
793
794
  },
794
795
  {
795
- "type": "error",
796
- "name": "InputNotInMockStorage",
797
- "inputs": [
798
- {
799
- "name": "ctHash",
800
- "type": "uint256",
801
- "internalType": "uint256"
802
- }
803
- ]
796
+ type: 'error',
797
+ name: 'InputNotInMockStorage',
798
+ inputs: [
799
+ {
800
+ name: 'ctHash',
801
+ type: 'uint256',
802
+ internalType: 'uint256',
803
+ },
804
+ ],
804
805
  },
805
806
  {
806
- "type": "error",
807
- "name": "InvalidAddress",
808
- "inputs": []
807
+ type: 'error',
808
+ name: 'InvalidAddress',
809
+ inputs: [],
809
810
  },
810
811
  {
811
- "type": "error",
812
- "name": "InvalidInputForFunction",
813
- "inputs": [
812
+ type: 'error',
813
+ name: 'InvalidInputForFunction',
814
+ inputs: [
814
815
  {
815
- "name": "functionName",
816
- "type": "string",
817
- "internalType": "string"
816
+ name: 'functionName',
817
+ type: 'string',
818
+ internalType: 'string',
818
819
  },
819
820
  {
820
- "name": "inputType",
821
- "type": "uint8",
822
- "internalType": "uint8"
823
- }
824
- ]
821
+ name: 'inputType',
822
+ type: 'uint8',
823
+ internalType: 'uint8',
824
+ },
825
+ ],
825
826
  },
826
827
  {
827
- "type": "error",
828
- "name": "InvalidInputType",
829
- "inputs": [
828
+ type: 'error',
829
+ name: 'InvalidInputType',
830
+ inputs: [
830
831
  {
831
- "name": "actual",
832
- "type": "uint8",
833
- "internalType": "uint8"
832
+ name: 'actual',
833
+ type: 'uint8',
834
+ internalType: 'uint8',
834
835
  },
835
836
  {
836
- "name": "expected",
837
- "type": "uint8",
838
- "internalType": "uint8"
839
- }
840
- ]
837
+ name: 'expected',
838
+ type: 'uint8',
839
+ internalType: 'uint8',
840
+ },
841
+ ],
841
842
  },
842
843
  {
843
- "type": "error",
844
- "name": "InvalidInputsAmount",
845
- "inputs": [
844
+ type: 'error',
845
+ name: 'InvalidInputsAmount',
846
+ inputs: [
846
847
  {
847
- "name": "operation",
848
- "type": "string",
849
- "internalType": "string"
848
+ name: 'operation',
849
+ type: 'string',
850
+ internalType: 'string',
850
851
  },
851
852
  {
852
- "name": "got",
853
- "type": "uint256",
854
- "internalType": "uint256"
853
+ name: 'got',
854
+ type: 'uint256',
855
+ internalType: 'uint256',
855
856
  },
856
857
  {
857
- "name": "expected",
858
- "type": "uint256",
859
- "internalType": "uint256"
860
- }
861
- ]
858
+ name: 'expected',
859
+ type: 'uint256',
860
+ internalType: 'uint256',
861
+ },
862
+ ],
862
863
  },
863
864
  {
864
- "type": "error",
865
- "name": "InvalidOperationInputs",
866
- "inputs": [
867
- {
868
- "name": "operation",
869
- "type": "string",
870
- "internalType": "string"
871
- }
872
- ]
865
+ type: 'error',
866
+ name: 'InvalidOperationInputs',
867
+ inputs: [
868
+ {
869
+ name: 'operation',
870
+ type: 'string',
871
+ internalType: 'string',
872
+ },
873
+ ],
873
874
  },
874
875
  {
875
- "type": "error",
876
- "name": "InvalidSecurityZone",
877
- "inputs": [
876
+ type: 'error',
877
+ name: 'InvalidSecurityZone',
878
+ inputs: [
878
879
  {
879
- "name": "zone",
880
- "type": "int32",
881
- "internalType": "int32"
880
+ name: 'zone',
881
+ type: 'int32',
882
+ internalType: 'int32',
882
883
  },
883
884
  {
884
- "name": "min",
885
- "type": "int32",
886
- "internalType": "int32"
885
+ name: 'min',
886
+ type: 'int32',
887
+ internalType: 'int32',
887
888
  },
888
889
  {
889
- "name": "max",
890
- "type": "int32",
891
- "internalType": "int32"
892
- }
893
- ]
890
+ name: 'max',
891
+ type: 'int32',
892
+ internalType: 'int32',
893
+ },
894
+ ],
894
895
  },
895
896
  {
896
- "type": "error",
897
- "name": "InvalidSignature",
898
- "inputs": []
897
+ type: 'error',
898
+ name: 'InvalidSignature',
899
+ inputs: [],
899
900
  },
900
901
  {
901
- "type": "error",
902
- "name": "InvalidSigner",
903
- "inputs": [
902
+ type: 'error',
903
+ name: 'InvalidSigner',
904
+ inputs: [
904
905
  {
905
- "name": "signer",
906
- "type": "address",
907
- "internalType": "address"
906
+ name: 'signer',
907
+ type: 'address',
908
+ internalType: 'address',
908
909
  },
909
910
  {
910
- "name": "expectedSigner",
911
- "type": "address",
912
- "internalType": "address"
913
- }
914
- ]
911
+ name: 'expectedSigner',
912
+ type: 'address',
913
+ internalType: 'address',
914
+ },
915
+ ],
915
916
  },
916
917
  {
917
- "type": "error",
918
- "name": "InvalidThreeInputOperation",
919
- "inputs": [
920
- {
921
- "name": "operation",
922
- "type": "string",
923
- "internalType": "string"
924
- }
925
- ]
918
+ type: 'error',
919
+ name: 'InvalidThreeInputOperation',
920
+ inputs: [
921
+ {
922
+ name: 'operation',
923
+ type: 'string',
924
+ internalType: 'string',
925
+ },
926
+ ],
926
927
  },
927
928
  {
928
- "type": "error",
929
- "name": "InvalidTwoInputOperation",
930
- "inputs": [
931
- {
932
- "name": "operation",
933
- "type": "string",
934
- "internalType": "string"
935
- }
936
- ]
929
+ type: 'error',
930
+ name: 'InvalidTwoInputOperation',
931
+ inputs: [
932
+ {
933
+ name: 'operation',
934
+ type: 'string',
935
+ internalType: 'string',
936
+ },
937
+ ],
937
938
  },
938
939
  {
939
- "type": "error",
940
- "name": "InvalidTypeOrSecurityZone",
941
- "inputs": [
942
- {
943
- "name": "operation",
944
- "type": "string",
945
- "internalType": "string"
946
- }
947
- ]
940
+ type: 'error',
941
+ name: 'InvalidTypeOrSecurityZone',
942
+ inputs: [
943
+ {
944
+ name: 'operation',
945
+ type: 'string',
946
+ internalType: 'string',
947
+ },
948
+ ],
948
949
  },
949
950
  {
950
- "type": "error",
951
- "name": "InvalidUnaryOperation",
952
- "inputs": [
953
- {
954
- "name": "operation",
955
- "type": "string",
956
- "internalType": "string"
957
- }
958
- ]
951
+ type: 'error',
952
+ name: 'InvalidUnaryOperation',
953
+ inputs: [
954
+ {
955
+ name: 'operation',
956
+ type: 'string',
957
+ internalType: 'string',
958
+ },
959
+ ],
959
960
  },
960
961
  {
961
- "type": "error",
962
- "name": "OnlyAggregatorAllowed",
963
- "inputs": [
964
- {
965
- "name": "caller",
966
- "type": "address",
967
- "internalType": "address"
968
- }
969
- ]
962
+ type: 'error',
963
+ name: 'OnlyAggregatorAllowed',
964
+ inputs: [
965
+ {
966
+ name: 'caller',
967
+ type: 'address',
968
+ internalType: 'address',
969
+ },
970
+ ],
970
971
  },
971
972
  {
972
- "type": "error",
973
- "name": "OnlyOwnerAllowed",
974
- "inputs": [
975
- {
976
- "name": "caller",
977
- "type": "address",
978
- "internalType": "address"
979
- }
980
- ]
973
+ type: 'error',
974
+ name: 'OnlyOwnerAllowed',
975
+ inputs: [
976
+ {
977
+ name: 'caller',
978
+ type: 'address',
979
+ internalType: 'address',
980
+ },
981
+ ],
981
982
  },
982
983
  {
983
- "type": "error",
984
- "name": "RandomFunctionNotSupported",
985
- "inputs": []
984
+ type: 'error',
985
+ name: 'RandomFunctionNotSupported',
986
+ inputs: [],
986
987
  },
987
988
  {
988
- "type": "error",
989
- "name": "StringsInsufficientHexLength",
990
- "inputs": [
989
+ type: 'error',
990
+ name: 'StringsInsufficientHexLength',
991
+ inputs: [
991
992
  {
992
- "name": "value",
993
- "type": "uint256",
994
- "internalType": "uint256"
993
+ name: 'value',
994
+ type: 'uint256',
995
+ internalType: 'uint256',
995
996
  },
996
997
  {
997
- "name": "length",
998
- "type": "uint256",
999
- "internalType": "uint256"
1000
- }
1001
- ]
998
+ name: 'length',
999
+ type: 'uint256',
1000
+ internalType: 'uint256',
1001
+ },
1002
+ ],
1002
1003
  },
1003
1004
  {
1004
- "type": "error",
1005
- "name": "TooManyInputs",
1006
- "inputs": [
1005
+ type: 'error',
1006
+ name: 'TooManyInputs',
1007
+ inputs: [
1007
1008
  {
1008
- "name": "operation",
1009
- "type": "string",
1010
- "internalType": "string"
1009
+ name: 'operation',
1010
+ type: 'string',
1011
+ internalType: 'string',
1011
1012
  },
1012
1013
  {
1013
- "name": "got",
1014
- "type": "uint256",
1015
- "internalType": "uint256"
1014
+ name: 'got',
1015
+ type: 'uint256',
1016
+ internalType: 'uint256',
1016
1017
  },
1017
1018
  {
1018
- "name": "maxAllowed",
1019
- "type": "uint256",
1020
- "internalType": "uint256"
1021
- }
1022
- ]
1023
- }
1019
+ name: 'maxAllowed',
1020
+ type: 'uint256',
1021
+ internalType: 'uint256',
1022
+ },
1023
+ ],
1024
+ },
1024
1025
  ],
1025
- "deployedBytecode": "0x608060405234801561000f575f5ffd5b50600436106101ee575f3560e01c8063642b3f191161010d578063a307d21d116100a0578063de2873591161006f578063de287359146105bd578063e68d826f146105db578063f6bc7f3f146105f9578063f9120af614610629576101ee565b8063a307d21d14610525578063ae79f04a14610541578063c4d66de814610571578063d521ed4b1461058d576101ee565b80638b2b9c23116100dc5780638b2b9c23146104b55780638d9c9c92146104d15780638db39c8d146104ed57806392bd6c9514610509576101ee565b8063642b3f191461043157806365d0509c1461044d5780637e5cf5191461046957806381ba098614610499576101ee565b806327f9c762116101855780634bc98263116101545780634bc98263146103ad578063591363c7146103c95780635faa299a146103e55780635fb0bf9114610415576101ee565b806327f9c7621461031257806334ef1e5a14610342578063392e53cd1461035e578063458693c91461037c576101ee565b80631d031931116101c15780631d0319311461028a578063245a7bfc146102ba57806326594a0c146102d8578063267c4ae4146102f4576101ee565b806308289827146101f257806315a486fe1461020e5780631888debd1461022a5780631c76642b1461025a575b5f5ffd5b61020c6004803603810190610207919061609e565b610645565b005b610228600480360381019061022391906160dc565b6106f8565b005b610244600480360381019061023f91906162c3565b610706565b604051610251919061636e565b60405180910390f35b610274600480360381019061026f9190616387565b6108aa565b604051610281919061636e565b60405180910390f35b6102a4600480360381019061029f9190616387565b6108bf565b6040516102b191906163cc565b60405180910390f35b6102c26108dc565b6040516102cf91906163f4565b60405180910390f35b6102f260048036038101906102ed9190616443565b610902565b005b6102fc6109de565b60405161030991906163cc565b60405180910390f35b61032c600480360381019061032791906165ca565b6109e6565b604051610339919061636e565b60405180910390f35b61035c60048036038101906103579190616387565b610c20565b005b610366610cfa565b60405161037391906163cc565b60405180910390f35b61039660048036038101906103919190616387565b610d10565b6040516103a4929190616624565b60405180910390f35b6103c760048036038101906103c291906166e9565b610d95565b005b6103e360048036038101906103de9190616771565b610e67565b005b6103ff60048036038101906103fa919061609e565b610f99565b60405161040c91906163cc565b60405180910390f35b61042f600480360381019061042a9190616771565b611055565b005b61044b600480360381019061044691906167c6565b611187565b005b6104676004803603810190610462919061609e565b6111a2565b005b610483600480360381019061047e91906167f1565b6112ee565b60405161049091906168bd565b60405180910390f35b6104b360048036038101906104ae9190616936565b611424565b005b6104cf60048036038101906104ca91906169a7565b611532565b005b6104eb60048036038101906104e6919061609e565b611542565b005b61050760048036038101906105029190616a13565b61161f565b005b610523600480360381019061051e9190616a13565b6116f3565b005b61053f600480360381019061053a9190616387565b61182c565b005b61055b60048036038101906105569190616bad565b611974565b60405161056891906163cc565b60405180910390f35b61058b60048036038101906105869190616a13565b611a18565b005b6105a760048036038101906105a29190616c07565b611ab6565b6040516105b491906168bd565b60405180910390f35b6105c5611bcb565b6040516105d29190616ca9565b60405180910390f35b6105e3611bf0565b6040516105f091906163cc565b60405180910390f35b610613600480360381019061060e9190616387565b611c01565b604051610620919061636e565b60405180910390f35b610643600480360381019061063e9190616a13565b611c5d565b005b61064e82611d97565b600160055f8481526020019081526020015f205f6101000a81548160ff02191690831515021790555061068082611e86565b60045f8481526020019081526020015f20819055505f6001600a426106a59190616cef565b6106af9190616d4c565b905080426106bd9190616d7f565b60065f8581526020019081526020015f205f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b6107028282611f0e565b5050565b5f601b601f81111561071b5761071a616dba565b5b84601f81111561072e5761072d616dba565b5b03610765576040517f98e08ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825184516107749190616d4c565b905060038111156107c95761078885611f2c565b8160036040517f2b0399d50000000000000000000000000000000000000000000000000000000081526004016107c093929190616e20565b60405180910390fd5b6107d38486612ac1565b5f6107de8585612d3b565b90505f6107ec878787612e7d565b90505f6107fb8983858b612ee8565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663484de8228233306040518463ffffffff1660e01b815260040161085b93929190616e5c565b5f604051808303815f87803b158015610872575f5ffd5b505af1158015610884573d5f5f3e3d5ffd5b5050505061089b816108958a611f2c565b8561306d565b80945050505050949350505050565b6001602052805f5260405f205f915090505481565b6002602052805f5260405f205f915054906101000a900460ff1681565b600760089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099357336040517f7238ea5600000000000000000000000000000000000000000000000000000000815260040161098a91906163f4565b60405180910390fd5b81600760046101000a81548163ffffffff021916908360030b63ffffffff1602179055508060075f6101000a81548163ffffffff021916908360030b63ffffffff1602179055505050565b5f6001905090565b5f5f836020015160ff1690505f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7457610a4f816132c2565b610ab15780600760049054906101000a900460030b60075f9054906101000a900460030b6040517f24cbcf36000000000000000000000000000000000000000000000000000000008152600401610aa893929190616ea0565b60405180910390fd5b5f610abc8585613303565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b72578060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f7ba5ffb5000000000000000000000000000000000000000000000000000000008152600401610b69929190616ed5565b60405180910390fd5b505b5f610b88855f01518387604001515f6133c7565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663484de8228233306040518463ffffffff1660e01b8152600401610be893929190616e5c565b5f604051808303815f87803b158015610bff575f5ffd5b505af1158015610c11573d5f5f3e3d5ffd5b50505050809250505092915050565b610c2981613420565b610cf75760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663846cd43382336040518363ffffffff1660e01b8152600401610c89929190616efc565b5f604051808303815f87803b158015610ca0575f5ffd5b505af1158015610cb2573d5f5f3e3d5ffd5b50505050610cf66040518060400160405280600f81526020017f4648452e616c6c6f77476c6f62616c00000000000000000000000000000000008152508233611532565b5b50565b5f600360149054906101000a900460ff16905090565b5f5f60055f8481526020019081526020015f205f9054906101000a900460ff16610d3f575f5f91509150610d90565b60065f8481526020019081526020015f205f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16421015610d80575f5f91509150610d90565b610d8983611e86565b6001915091505b915091565b600760089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e2757336040517fa974a0fe000000000000000000000000000000000000000000000000000000008152600401610e1e91906163f4565b60405180910390fd5b7f66d3f531abdf188fde59b6d2b282dc7c725ef2bb1c6c93954054721a13c1a3fa838383604051610e5a93929190616f23565b60405180910390a1505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef857336040517f7238ea56000000000000000000000000000000000000000000000000000000008152600401610eef91906163f4565b60405180910390fd5b600760049054906101000a900460030b60030b8160030b1215610f735780600760049054906101000a900460030b60075f9054906101000a900460030b6040517f24cbcf36000000000000000000000000000000000000000000000000000000008152600401610f6a93929190616ea0565b60405180910390fd5b8060075f6101000a81548163ffffffff021916908360030b63ffffffff16021790555050565b5f610fa383613420565b15610fb1576001905061104f565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635faa299a84846040518363ffffffff1660e01b815260040161100d929190616efc565b602060405180830381865afa158015611028573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104c9190616f7a565b90505b92915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e657336040517f7238ea560000000000000000000000000000000000000000000000000000000081526004016110dd91906163f4565b60405180910390fd5b60075f9054906101000a900460030b60030b8160030b13156111605780600760049054906101000a900460030b60075f9054906101000a900460030b6040517f24cbcf3600000000000000000000000000000000000000000000000000000000815260040161115793929190616ea0565b60405180910390fd5b80600760046101000a81548163ffffffff021916908360030b63ffffffff16021790555050565b805f5f6101000a81548160ff02191690831515021790555050565b6111ab82613420565b6112ea5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166379a3a7fb8383336040518463ffffffff1660e01b815260040161120d93929190616e5c565b5f604051808303815f87803b158015611224575f5ffd5b505af1158015611236573d5f5f3e3d5ffd5b505050506112e93373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112ab576040518060400160405280600981526020017f4648452e616c6c6f7700000000000000000000000000000000000000000000008152506112e2565b6040518060400160405280600d81526020017f4648452e616c6c6f7754686973000000000000000000000000000000000000008152505b8383611532565b5b5050565b60605f849050805183856113029190616d4c565b1115611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90616fef565b60405180910390fd5b5f8367ffffffffffffffff81111561135e5761135d616187565b5b6040519080825280601f01601f1916602001820160405280156113905781602001600182028036833780820191505090505b5090505f5f90505b84811015611417578281876113ad9190616d4c565b815181106113be576113bd61700d565b5b602001015160f81c60f81b8282815181106113dc576113db61700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050611398565b5080925050509392505050565b600760089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114b657336040517fa974a0fe0000000000000000000000000000000000000000000000000000000081526004016114ad91906163f4565b60405180910390fd5b600160055f8681526020019081526020015f205f6101000a81548160ff0219169083151502179055508260045f8681526020019081526020015f20819055504260065f8681526020019081526020015f205f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b61153d83838361345d565b505050565b61154b82613420565b61161b5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663484de8228383336040518463ffffffff1660e01b81526004016115ad93929190616e5c565b5f604051808303815f87803b1580156115c4575f5ffd5b505af11580156115d6573d5f5f3e3d5ffd5b5050505061161a6040518060400160405280601281526020017f4648452e616c6c6f775472616e7369656e7400000000000000000000000000008152508383611532565b5b5050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116b057336040517f7238ea560000000000000000000000000000000000000000000000000000000081526004016116a791906163f4565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461178457336040517f7238ea5600000000000000000000000000000000000000000000000000000000815260040161177b91906163f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117e9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61183581613420565b611971575f600167ffffffffffffffff81111561185557611854616187565b5b6040519080825280602002602001820160405280156118835781602001602082028036833780820191505090505b50905081815f8151811061189a5761189961700d565b5b60200260200101818152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633c3839ba82336040518363ffffffff1660e01b81526004016119029291906170f1565b5f604051808303815f87803b158015611919575f5ffd5b505af115801561192b573d5f5f3e3d5ffd5b5050505061196f6040518060400160405280601681526020017f4648452e616c6c6f77466f7244656372797074696f6e000000000000000000008152508333611532565b505b50565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae79f04a84846040518363ffffffff1660e01b81526004016119d1929190617252565b602060405180830381865afa1580156119ec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a109190616f7a565b905092915050565b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360146101000a81548160ff0219169083151502179055505f60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f8290505f815103611adb5760405180602001604052805f815250915050611bc6565b5f60018251611aea9190617280565b67ffffffffffffffff811115611b0357611b02616187565b5b6040519080825280601f01601f191660200182016040528015611b355781602001600182028036833780820191505090505b5090505f600190505b8251811015611bbf57828181518110611b5a57611b5961700d565b5b602001015160f81c60f81b82600183611b739190617280565b81518110611b8457611b8361700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050611b3e565b5080925050505b919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900460ff1681565b5f5f5f611c0d84610d10565b9150915080611c5357836040517f70cf6554000000000000000000000000000000000000000000000000000000008152600401611c4a919061636e565b60405180910390fd5b8192505050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cee57336040517f7238ea56000000000000000000000000000000000000000000000000000000008152600401611ce591906163f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d53576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611da081613420565b611e835760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635faa299a82336040518363ffffffff1660e01b8152600401611e00929190616efc565b602060405180830381865afa158015611e1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3f9190616f7a565b611e825780336040517f4d13139e000000000000000000000000000000000000000000000000000000008152600401611e79929190616efc565b60405180910390fd5b5b50565b5f60025f8381526020019081526020015f205f9054906101000a900460ff16611ee657816040517f850a796d000000000000000000000000000000000000000000000000000000008152600401611edd919061636e565b60405180910390fd5b5f611ef08361354b565b90508060015f8581526020019081526020015f205416915050919050565b5f611f188361354b565b9050611f27838284165f613568565b505050565b60606002601f811115611f4257611f41616dba565b5b82601f811115611f5557611f54616dba565b5b03611f97576040518060400160405280600481526020017f63617374000000000000000000000000000000000000000000000000000000008152509050612abc565b6003601f811115611fab57611faa616dba565b5b82601f811115611fbe57611fbd616dba565b5b03612000576040518060400160405280600a81526020017f7365616c4f7574707574000000000000000000000000000000000000000000008152509050612abc565b6004601f81111561201457612013616dba565b5b82601f81111561202757612026616dba565b5b03612069576040518060400160405280600681526020017f73656c65637400000000000000000000000000000000000000000000000000008152509050612abc565b6006601f81111561207d5761207c616dba565b5b82601f8111156120905761208f616dba565b5b036120d2576040518060400160405280600781526020017f64656372797074000000000000000000000000000000000000000000000000008152509050612abc565b6007601f8111156120e6576120e5616dba565b5b82601f8111156120f9576120f8616dba565b5b0361213b576040518060400160405280600381526020017f73756200000000000000000000000000000000000000000000000000000000008152509050612abc565b6008601f81111561214f5761214e616dba565b5b82601f81111561216257612161616dba565b5b036121a4576040518060400160405280600381526020017f61646400000000000000000000000000000000000000000000000000000000008152509050612abc565b6009601f8111156121b8576121b7616dba565b5b82601f8111156121cb576121ca616dba565b5b0361220d576040518060400160405280600381526020017f786f7200000000000000000000000000000000000000000000000000000000008152509050612abc565b600a601f81111561222157612220616dba565b5b82601f81111561223457612233616dba565b5b03612276576040518060400160405280600381526020017f616e6400000000000000000000000000000000000000000000000000000000008152509050612abc565b600b601f81111561228a57612289616dba565b5b82601f81111561229d5761229c616dba565b5b036122df576040518060400160405280600281526020017f6f720000000000000000000000000000000000000000000000000000000000008152509050612abc565b600c601f8111156122f3576122f2616dba565b5b82601f81111561230657612305616dba565b5b03612348576040518060400160405280600381526020017f6e6f7400000000000000000000000000000000000000000000000000000000008152509050612abc565b600d601f81111561235c5761235b616dba565b5b82601f81111561236f5761236e616dba565b5b036123b1576040518060400160405280600381526020017f64697600000000000000000000000000000000000000000000000000000000008152509050612abc565b600e601f8111156123c5576123c4616dba565b5b82601f8111156123d8576123d7616dba565b5b0361241a576040518060400160405280600381526020017f72656d00000000000000000000000000000000000000000000000000000000008152509050612abc565b600f601f81111561242e5761242d616dba565b5b82601f81111561244157612440616dba565b5b03612483576040518060400160405280600381526020017f6d756c00000000000000000000000000000000000000000000000000000000008152509050612abc565b6010601f81111561249757612496616dba565b5b82601f8111156124aa576124a9616dba565b5b036124ec576040518060400160405280600381526020017f73686c00000000000000000000000000000000000000000000000000000000008152509050612abc565b6011601f811115612500576124ff616dba565b5b82601f81111561251357612512616dba565b5b03612555576040518060400160405280600381526020017f73687200000000000000000000000000000000000000000000000000000000008152509050612abc565b6012601f81111561256957612568616dba565b5b82601f81111561257c5761257b616dba565b5b036125be576040518060400160405280600381526020017f67746500000000000000000000000000000000000000000000000000000000008152509050612abc565b6013601f8111156125d2576125d1616dba565b5b82601f8111156125e5576125e4616dba565b5b03612627576040518060400160405280600381526020017f6c746500000000000000000000000000000000000000000000000000000000008152509050612abc565b6014601f81111561263b5761263a616dba565b5b82601f81111561264e5761264d616dba565b5b03612690576040518060400160405280600281526020017f6c740000000000000000000000000000000000000000000000000000000000008152509050612abc565b6015601f8111156126a4576126a3616dba565b5b82601f8111156126b7576126b6616dba565b5b036126f9576040518060400160405280600281526020017f67740000000000000000000000000000000000000000000000000000000000008152509050612abc565b6016601f81111561270d5761270c616dba565b5b82601f8111156127205761271f616dba565b5b03612762576040518060400160405280600381526020017f6d696e00000000000000000000000000000000000000000000000000000000008152509050612abc565b6017601f81111561277657612775616dba565b5b82601f81111561278957612788616dba565b5b036127cb576040518060400160405280600381526020017f6d617800000000000000000000000000000000000000000000000000000000008152509050612abc565b6018601f8111156127df576127de616dba565b5b82601f8111156127f2576127f1616dba565b5b03612834576040518060400160405280600281526020017f65710000000000000000000000000000000000000000000000000000000000008152509050612abc565b6019601f81111561284857612847616dba565b5b82601f81111561285b5761285a616dba565b5b0361289d576040518060400160405280600281526020017f6e650000000000000000000000000000000000000000000000000000000000008152509050612abc565b601a601f8111156128b1576128b0616dba565b5b82601f8111156128c4576128c3616dba565b5b03612906576040518060400160405280600e81526020017f7472697669616c456e63727970740000000000000000000000000000000000008152509050612abc565b601b601f81111561291a57612919616dba565b5b82601f81111561292d5761292c616dba565b5b0361296f576040518060400160405280600681526020017f72616e646f6d00000000000000000000000000000000000000000000000000008152509050612abc565b601c601f81111561298357612982616dba565b5b82601f81111561299657612995616dba565b5b036129d8576040518060400160405280600381526020017f726f6c00000000000000000000000000000000000000000000000000000000008152509050612abc565b601d601f8111156129ec576129eb616dba565b5b82601f8111156129ff576129fe616dba565b5b03612a41576040518060400160405280600381526020017f726f7200000000000000000000000000000000000000000000000000000000008152509050612abc565b601e601f811115612a5557612a54616dba565b5b82601f811115612a6857612a67616dba565b5b03612aaa576040518060400160405280600681526020017f73717561726500000000000000000000000000000000000000000000000000008152509050612abc565b60405180602001604052805f81525090505b919050565b5f612acb82611f2c565b90505f835103612b2557612ade82613609565b612b1f57806040517fb31612aa000000000000000000000000000000000000000000000000000000008152600401612b1691906168bd565b60405180910390fd5b50612d37565b6004601f811115612b3957612b38616dba565b5b82601f811115612b4c57612b4b616dba565b5b03612b5f57612b5a83613668565b612c8f565b612b68826137a9565b15612bbe576001835114612bb95780835160016040517f9a84351c000000000000000000000000000000000000000000000000000000008152600401612bb0939291906172ec565b60405180910390fd5b612c8e565b6002835114612c0a5780835160026040517f9a84351c000000000000000000000000000000000000000000000000000000008152600401612c0193929190617361565b60405180910390fd5b5f612c4b84600181518110612c2257612c2161700d565b5b6020026020010151855f81518110612c3d57612c3c61700d565b5b602002602001015118613837565b14612c8d57806040517f52b50ae1000000000000000000000000000000000000000000000000000000008152600401612c8491906168bd565b60405180910390fd5b5b5b5f612cb3845f81518110612ca657612ca561700d565b5b6020026020010151613855565b9050612cbe816132c2565b612d205780600760049054906101000a900460030b60075f9054906101000a900460030b6040517f24cbcf36000000000000000000000000000000000000000000000000000000008152600401612d1793929190616ea0565b60405180910390fd5b612d2984613865565b612d348383866138b3565b50505b5050565b60605f82518451612d4c9190616d4c565b67ffffffffffffffff811115612d6557612d64616187565b5b604051908082528060200260200182016040528015612d935781602001602082028036833780820191505090505b5090505f5f90505b84518160ff161015612dfa57848160ff1681518110612dbd57612dbc61700d565b5b6020026020010151828260ff1681518110612ddb57612dda61700d565b5b6020026020010181815250508080612df29061739d565b915050612d9b565b5b83518551612e099190616d4c565b8160ff161015612e72578385518260ff16612e249190617280565b81518110612e3557612e3461700d565b5b6020026020010151828260ff1681518110612e5357612e5261700d565b5b6020026020010181815250508080612e6a9061739d565b915050612dfb565b819250505092915050565b5f612e8784613609565b15612ebb578160018351612e9b9190617280565b81518110612eac57612eab61700d565b5b60200260200101519050612ee1565b612ede835f81518110612ed157612ed061700d565b5b6020026020010151613855565b90505b9392505050565b5f60605f601a601f811115612f0057612eff616dba565b5b84601f811115612f1357612f12616dba565b5b1490505f5f90505b85518160ff161015612f835782612f4e878360ff1681518110612f4157612f4061700d565b5b6020026020010151613a21565b604051602001612f5f9291906173ff565b60405160208183030381529060405292508080612f7b9061739d565b915050612f1b565b50601e601f811115612f9857612f97616dba565b5b84601f811115612fab57612faa616dba565b5b03612ffb57600f935081612fd8865f81518110612fcb57612fca61700d565b5b6020026020010151613a21565b604051602001612fe99291906173ff565b60405160208183030381529060405291505b5f84601f81111561300f5761300e616dba565b5b60f81b9050828160405160200161302792919061746d565b60405160208183030381529060405292505f838051906020012090505f61305b825f1c8a6130558a8e613a83565b876133c7565b90508095505050505050949350505050565b6001815114806130845750613083826002613bae565b5b1561310c577fe9de54a3e7ddf0c48cc6e1134185300d5a71acbf2d8c21fcdefa9d9dd9e20ac18383835f815181106130bf576130be61700d565b5b60200260200101515f5f6040516130da9594939291906174cd565b60405180910390a16131078383835f815181106130fa576130f961700d565b5b6020026020010151613bc9565b6132bd565b60028151036131cf577fe9de54a3e7ddf0c48cc6e1134185300d5a71acbf2d8c21fcdefa9d9dd9e20ac18383835f8151811061314b5761314a61700d565b5b6020026020010151846001815181106131675761316661700d565b5b60200260200101515f604051613181959493929190617525565b60405180910390a16131ca8383835f815181106131a1576131a061700d565b5b6020026020010151846001815181106131bd576131bc61700d565b5b6020026020010151613e30565b6132bc565b7fe9de54a3e7ddf0c48cc6e1134185300d5a71acbf2d8c21fcdefa9d9dd9e20ac18383835f815181106132055761320461700d565b5b6020026020010151846001815181106132215761322061700d565b5b60200260200101518560028151811061323d5761323c61700d565b5b602002602001015160405161325695949392919061757d565b60405180910390a16132bb8383835f815181106132765761327561700d565b5b6020026020010151846001815181106132925761329161700d565b5b6020026020010151856002815181106132ae576132ad61700d565b5b6020026020010151614c5c565b5b5b505050565b5f600760049054906101000a900460030b60030b8260030b121580156132fc575060075f9054906101000a900460030b60030b8260030b13155b9050919050565b5f5f835f015184604001518560200151854660405160200161332995949392919061766e565b60405160208183030381529060405290505f818051906020012090505f613354828760600151614e03565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036133bb576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80935050505092915050565b5f61ffff80167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6133f89190617280565b851690505f8460ff16600861340d8587614e2d565b901b179050808217915050949350505050565b5f600160ff8016901c60ff1660ff801661343a9190617280565b600160ff8016901c60ff1660ff80166134539190617280565b8316149050919050565b5f5f9054906101000a900460ff1615613546576135456040518060400160405280600481526020017fe2949c20000000000000000000000000000000000000000000000000000000008152506134d58560107f2000000000000000000000000000000000000000000000000000000000000000614e6c565b6040518060400160405280600381526020017f207c20000000000000000000000000000000000000000000000000000000000081525061351486614fb3565b61351d8661514f565b60405160200161353195949392919061772c565b60405160208183030381529060405261517c565b5b505050565b5f5f61355683615215565b90506001816001901b03915050919050565b8160015f8581526020019081526020015f2081905550600160025f8581526020019081526020015f205f6101000a81548160ff0219169083151502179055508015613604576136036040518060400160405280600381526020017f736574000000000000000000000000000000000000000000000000000000000081525060405180602001604052805f8152506135fe86614fb3565b6152ec565b5b505050565b5f601b601f81111561361e5761361d616dba565b5b82601f81111561363157613630616dba565b5b14806136615750601a601f81111561364c5761364b616dba565b5b82601f81111561365f5761365e616dba565b5b145b9050919050565b60038151146136b257805160036040517f9a84351c0000000000000000000000000000000000000000000000000000000081526004016136a99291906177cf565b60405180910390fd5b5f6136f4826002815181106136ca576136c961700d565b5b6020026020010151836001815181106136e6576136e561700d565b5b602002602001015118613837565b14613734576040517f52b50ae100000000000000000000000000000000000000000000000000000000815260040161372b90617809565b60405180910390fd5b5f613758825f8151811061374b5761374a61700d565b5b60200260200101516153ca565b90505f5f821860ff16146137a557805f6040517f884a0e9d00000000000000000000000000000000000000000000000000000000815260040161379c929190617836565b60405180910390fd5b5050565b5f600c601f8111156137be576137bd616dba565b5b82601f8111156137d1576137d0616dba565b5b14806138015750601e601f8111156137ec576137eb616dba565b5b82601f8111156137ff576137fe616dba565b5b145b8061383057506002601f81111561381b5761381a616dba565b5b82601f81111561382e5761382d616dba565b5b145b9050919050565b5f8160ff80166008600160ff8016901c60ff16901b17169050919050565b5f60ff801682165f0b9050919050565b5f5f90505b81518160ff1610156138af5761389c828260ff168151811061388f5761388e61700d565b5b6020026020010151611d97565b80806138a79061739d565b91505061386a565b5050565b6138bc836153e6565b613a1c576138c9836154a3565b1561396f575f5f90505b81518160ff161015613969575f613906838360ff16815181106138f9576138f861700d565b5b60200260200101516153ca565b90505f6007821860ff1603613955578360076040517f91b4b37800000000000000000000000000000000000000000000000000000000815260040161394c92919061785d565b60405180910390fd5b5080806139619061739d565b9150506138d3565b50613a1b565b5f5f90505b81518160ff161015613a19575f6139a7838360ff168151811061399a5761399961700d565b5b60200260200101516153ca565b90505f6007821860ff1614806139c157505f5f821860ff16145b15613a055783816040517f91b4b3780000000000000000000000000000000000000000000000000000000081526004016139fc92919061785d565b60405180910390fd5b508080613a119061739d565b915050613974565b505b5b505050565b60605f602067ffffffffffffffff811115613a3f57613a3e616187565b5b6040519080825280601f01601f191660200182016040528015613a715781602001600182028036833780820191505090505b50905082602082015280915050919050565b5f6013601f811115613a9857613a97616dba565b5b83601f811115613aab57613aaa616dba565b5b1480613adb57506014601f811115613ac657613ac5616dba565b5b83601f811115613ad957613ad8616dba565b5b145b80613b0a57506012601f811115613af557613af4616dba565b5b83601f811115613b0857613b07616dba565b5b145b80613b3957506015601f811115613b2457613b23616dba565b5b83601f811115613b3757613b36616dba565b5b145b80613b6857506018601f811115613b5357613b52616dba565b5b83601f811115613b6657613b65616dba565b5b145b80613b9757506019601f811115613b8257613b81616dba565b5b83601f811115613b9557613b94616dba565b5b145b15613ba4575f9050613ba8565b8190505b92915050565b5f613bc183613bbc84611f2c565b615560565b905092915050565b613bd482601b613bae565b15613c4d57613bf283600143613bea9190617280565b405f1c611f0e565b613c486040518060400160405280600a81526020017f4648452e72616e646f6d0000000000000000000000000000000000000000000081525060405180602001604052805f815250613c4386614fb3565b6152ec565b613e2b565b613c58826002613bae565b15613cc457613c6f83613c6a83611e86565b611f0e565b613cbf6040518060400160405280600881526020017f4648452e63617374000000000000000000000000000000000000000000000000815250613cb183614fb3565b613cba86614fb3565b6152ec565b613e2b565b613ccf82600c613bae565b15613d44575f6001613ce083611e86565b149050613cee8482156155b8565b613d3e6040518060400160405280600781526020017f4648452e6e6f7400000000000000000000000000000000000000000000000000815250613d3084614fb3565b613d3987614fb3565b6152ec565b50613e2b565b613d4f82601e613bae565b15613dee57613d7083613d6183611e86565b613d6a84611e86565b02611f0e565b613de96040518060400160405280600a81526020017f4648452e73717561726500000000000000000000000000000000000000000000815250613db283614fb3565b613dbb84614fb3565b604051602001613dcc9291906178b1565b604051602081830303815290604052613de486614fb3565b6152ec565b613e2b565b816040517fd952ce7c000000000000000000000000000000000000000000000000000000008152600401613e2291906168bd565b60405180910390fd5b505050565b613e3b836007613bae565b15613eda57613e5c84613e4d83611e86565b613e5685611e86565b03611f0e565b613ed56040518060400160405280600781526020017f4648452e73756200000000000000000000000000000000000000000000000000815250613e9e84614fb3565b613ea784614fb3565b604051602001613eb8929190617909565b604051602081830303815290604052613ed087614fb3565b6152ec565b614c56565b613ee5836008613bae565b15613f8457613f0684613ef783611e86565b613f0085611e86565b01611f0e565b613f7f6040518060400160405280600781526020017f4648452e61646400000000000000000000000000000000000000000000000000815250613f4884614fb3565b613f5184614fb3565b604051602001613f62929190617961565b604051602081830303815290604052613f7a87614fb3565b6152ec565b614c56565b613f8f836009613bae565b1561402e57613fb084613fa183611e86565b613faa85611e86565b18611f0e565b6140296040518060400160405280600781526020017f4648452e786f7200000000000000000000000000000000000000000000000000815250613ff284614fb3565b613ffb84614fb3565b60405160200161400c9291906179b9565b60405160208183030381529060405261402487614fb3565b6152ec565b614c56565b61403983600a613bae565b156140d85761405a8461404b83611e86565b61405485611e86565b16611f0e565b6140d36040518060400160405280600781526020017f4648452e616e640000000000000000000000000000000000000000000000000081525061409c84614fb3565b6140a584614fb3565b6040516020016140b6929190617a11565b6040516020818303038152906040526140ce87614fb3565b6152ec565b614c56565b6140e383600b613bae565b1561418257614104846140f583611e86565b6140fe85611e86565b17611f0e565b61417d6040518060400160405280600681526020017f4648452e6f72000000000000000000000000000000000000000000000000000081525061414684614fb3565b61414f84614fb3565b604051602001614160929190617a69565b60405160208183030381529060405261417887614fb3565b6152ec565b614c56565b61418d83600d613bae565b15614276575f61419c82611e86565b90505f81036141d4576141cf857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611f0e565b6141f7565b6141f685826141e286611e86565b816141f0576141ef616cc2565b5b04611f0e565b5b6142706040518060400160405280600781526020017f4648452e6469760000000000000000000000000000000000000000000000000081525061423985614fb3565b61424285614fb3565b604051602001614253929190617ac1565b60405160208183030381529060405261426b88614fb3565b6152ec565b50614c56565b61428183600e613bae565b1561432e576142b08461429383611e86565b61429c85611e86565b816142aa576142a9616cc2565b5b06611f0e565b6143296040518060400160405280600781526020017f4648452e72656d000000000000000000000000000000000000000000000000008152506142f284614fb3565b6142fb84614fb3565b60405160200161430c929190617b19565b60405160208183030381529060405261432487614fb3565b6152ec565b614c56565b61433983600f613bae565b156143d85761435a8461434b83611e86565b61435485611e86565b02611f0e565b6143d36040518060400160405280600781526020017f4648452e6d756c0000000000000000000000000000000000000000000000000081525061439c84614fb3565b6143a584614fb3565b6040516020016143b69291906178b1565b6040516020818303038152906040526143ce87614fb3565b6152ec565b614c56565b6143e3836010613bae565b1561448357614405846143f583611e86565b6143fe85611e86565b901b611f0e565b61447e6040518060400160405280600781526020017f4648452e73686c0000000000000000000000000000000000000000000000000081525061444784614fb3565b61445084614fb3565b604051602001614461929190617b71565b60405160208183030381529060405261447987614fb3565b6152ec565b614c56565b61448e836011613bae565b1561452e576144b0846144a083611e86565b6144a985611e86565b901c611f0e565b6145296040518060400160405280600781526020017f4648452e736872000000000000000000000000000000000000000000000000008152506144f284614fb3565b6144fb84614fb3565b60405160200161450c929190617bc9565b60405160208183030381529060405261452487614fb3565b6152ec565b614c56565b614539836012613bae565b156145d95761455b8461454b83611e86565b61455485611e86565b10156155b8565b6145d46040518060400160405280600781526020017f4648452e6774650000000000000000000000000000000000000000000000000081525061459d84614fb3565b6145a684614fb3565b6040516020016145b7929190617c21565b6040516020818303038152906040526145cf87614fb3565b6152ec565b614c56565b6145e4836013613bae565b1561468457614606846145f683611e86565b6145ff85611e86565b11156155b8565b61467f6040518060400160405280600781526020017f4648452e6c74650000000000000000000000000000000000000000000000000081525061464884614fb3565b61465184614fb3565b604051602001614662929190617c79565b60405160208183030381529060405261467a87614fb3565b6152ec565b614c56565b61468f836014613bae565b1561472e576146b0846146a183611e86565b6146aa85611e86565b106155b8565b6147296040518060400160405280600681526020017f4648452e6c7400000000000000000000000000000000000000000000000000008152506146f284614fb3565b6146fb84614fb3565b60405160200161470c929190617cd1565b60405160208183030381529060405261472487614fb3565b6152ec565b614c56565b614739836015613bae565b156147d85761475a8461474b83611e86565b61475485611e86565b116155b8565b6147d36040518060400160405280600681526020017f4648452e6774000000000000000000000000000000000000000000000000000081525061479c84614fb3565b6147a584614fb3565b6040516020016147b6929190617d29565b6040516020818303038152906040526147ce87614fb3565b6152ec565b614c56565b6147e3836016613bae565b156148a3575f6147f282611e86565b6147fb84611e86565b1061480e5761480982611e86565b614818565b61481783611e86565b5b90506148248582611f0e565b61489d6040518060400160405280600781526020017f4648452e6d696e0000000000000000000000000000000000000000000000000081525061486685614fb3565b61486f85614fb3565b604051602001614880929190617dcd565b60405160208183030381529060405261489888614fb3565b6152ec565b50614c56565b6148ae836017613bae565b1561496e575f6148bd82611e86565b6148c684611e86565b116148d9576148d482611e86565b6148e3565b6148e283611e86565b5b90506148ef8582611f0e565b6149686040518060400160405280600781526020017f4648452e6d61780000000000000000000000000000000000000000000000000081525061493185614fb3565b61493a85614fb3565b60405160200161494b929190617e43565b60405160208183030381529060405261496388614fb3565b6152ec565b50614c56565b614979836018613bae565b15614a185761499a8461498b83611e86565b61499485611e86565b146155b8565b614a136040518060400160405280600681526020017f4648452e657100000000000000000000000000000000000000000000000000008152506149dc84614fb3565b6149e584614fb3565b6040516020016149f6929190617eb9565b604051602081830303815290604052614a0e87614fb3565b6152ec565b614c56565b614a23836019613bae565b15614ac357614a4584614a3583611e86565b614a3e85611e86565b14156155b8565b614abe6040518060400160405280600681526020017f4648452e6e650000000000000000000000000000000000000000000000000000815250614a8784614fb3565b614a9084614fb3565b604051602001614aa1929190617f11565b604051602081830303815290604052614ab987614fb3565b6152ec565b614c56565b614ace83601c613bae565b15614b6e57614af084614ae083611e86565b614ae985611e86565b901b611f0e565b614b696040518060400160405280600781526020017f4648452e726f6c00000000000000000000000000000000000000000000000000815250614b3284614fb3565b614b3b84614fb3565b604051602001614b4c929190617b71565b604051602081830303815290604052614b6487614fb3565b6152ec565b614c56565b614b7983601d613bae565b15614c1957614b9b84614b8b83611e86565b614b9485611e86565b901c611f0e565b614c146040518060400160405280600781526020017f4648452e726f7200000000000000000000000000000000000000000000000000815250614bdd84614fb3565b614be684614fb3565b604051602001614bf7929190617bc9565b604051602081830303815290604052614c0f87614fb3565b6152ec565b614c56565b826040517fcef60885000000000000000000000000000000000000000000000000000000008152600401614c4d91906168bd565b60405180910390fd5b50505050565b614c6784601a613bae565b15614cf657614c768584611f0e565b614cf1614c8a614c85876155d6565b611ab6565b604051602001614c9a9190617f69565b604051602081830303815290604052614cba614cb5886155d6565b611ab6565b614cc386615882565b604051602001614cd4929190617fb4565b604051602081830303815290604052614cec88614fb3565b6152ec565b614dfc565b614d01846004613bae565b15614dbf57614d37856001614d1586611e86565b14614d2857614d2383611e86565b614d32565b614d3184611e86565b5b611f0e565b614dba6040518060400160405280600a81526020017f4648452e73656c65637400000000000000000000000000000000000000000000815250614d7985614fb3565b614d8285614fb3565b614d8b85614fb3565b604051602001614d9d93929190618041565b604051602081830303815290604052614db588614fb3565b6152ec565b614dfc565b836040517f5e45fa01000000000000000000000000000000000000000000000000000000008152600401614df391906168bd565b60405180910390fd5b5050505050565b5f5f5f5f614e11868661594c565b925092509250614e2182826159a1565b82935050505092915050565b5f600160ff8016901c60ff168260ff161683614e49575f614e63565b600160ff8016901c60ff1660ff8016614e629190617280565b5b17905092915050565b60605f84905083815110614e835784915050614fac565b5f8467ffffffffffffffff811115614e9e57614e9d616187565b5b6040519080825280601f01601f191660200182016040528015614ed05781602001600182028036833780820191505090505b5090505f5f90505b8251811015614f4d57828181518110614ef457614ef361700d565b5b602001015160f81c60f81b828281518110614f1257614f1161700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050614ed8565b5b85811015614fa55784828281518110614f6a57614f6961700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050614f4e565b8193505050505b9392505050565b60605f614fbf83615882565b90505f8151905060068111614fd857819250505061514a565b5f60025f8681526020019081526020015f205f9054906101000a900460ff1690505f60015f8781526020019081526020015f205490505f61501887615b03565b90505f8161502e5761502983615882565b6150a9565b60018314615071576040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152506150a8565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b5b90505f6150b5896155d6565b6150c1885f60046112ee565b6150d98960048a6150d29190617280565b60046112ee565b87615119576040518060400160405280600581526020017f454d50545900000000000000000000000000000000000000000000000000000081525061511b565b845b60405160200161512e9493929190618101565b6040516020818303038152906040529050809750505050505050505b919050565b60606151758273ffffffffffffffffffffffffffffffffffffffff16601460ff16615b20565b9050919050565b6152128160405160240161519091906168bd565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615d5e565b50565b5f5f61522083615d78565b90505f60ff168160ff16036152395760089150506152e7565b600260ff168160ff16036152515760089150506152e7565b600360ff168160ff16036152695760109150506152e7565b600460ff168160ff16036152815760209150506152e7565b600560ff168160ff16036152995760409150506152e7565b600660ff168160ff16036152b15760809150506152e7565b600860ff168160ff16036152ca576101009150506152e7565b600760ff168160ff16036152e25760a09150506152e7565b5f9150505b919050565b5f5f9054906101000a900460ff16156153c5576153c46040518060400160405280600481526020017fe2949c20000000000000000000000000000000000000000000000000000000008152506153648560107f2000000000000000000000000000000000000000000000000000000000000000614e6c565b6040518060400160405280600381526020017f207c20000000000000000000000000000000000000000000000000000000000081525085856040516020016153b09594939291906181a0565b60405160208183030381529060405261517c565b5b505050565b5f600880600160ff8016901c60ff16901b8316901c9050919050565b5f6004601f8111156153fb576153fa616dba565b5b82601f81111561540e5761540d616dba565b5b148061543e57506018601f81111561542957615428616dba565b5b82601f81111561543c5761543b616dba565b5b145b8061546d57506019601f81111561545857615457616dba565b5b82601f81111561546b5761546a616dba565b5b145b8061549c57506002601f81111561548757615486616dba565b5b82601f81111561549a57615499616dba565b5b145b9050919050565b5f6009601f8111156154b8576154b7616dba565b5b82601f8111156154cb576154ca616dba565b5b14806154fb5750600a601f8111156154e6576154e5616dba565b5b82601f8111156154f9576154f8616dba565b5b145b8061552a5750600b601f81111561551557615514616dba565b5b82601f81111561552857615527616dba565b5b145b806155595750600c601f81111561554457615543616dba565b5b82601f81111561555757615556616dba565b5b145b9050919050565b5f8160405160200161557291906181f9565b604051602081830303815290604052805190602001208360405160200161559991906181f9565b6040516020818303038152906040528051906020012014905092915050565b6155d282826155c7575f6155ca565b60015b60ff16611f0e565b5050565b60605f6155e283615d78565b90505f60ff168160ff160361562f576040518060400160405280600581526020017f65626f6f6c00000000000000000000000000000000000000000000000000000081525091505061587d565b600260ff168160ff160361567b576040518060400160405280600681526020017f6575696e7438000000000000000000000000000000000000000000000000000081525091505061587d565b600360ff168160ff16036156c7576040518060400160405280600781526020017f6575696e7431360000000000000000000000000000000000000000000000000081525091505061587d565b600460ff168160ff1603615713576040518060400160405280600781526020017f6575696e7433320000000000000000000000000000000000000000000000000081525091505061587d565b600560ff168160ff160361575f576040518060400160405280600781526020017f6575696e7436340000000000000000000000000000000000000000000000000081525091505061587d565b600660ff168160ff16036157ab576040518060400160405280600881526020017f6575696e7431323800000000000000000000000000000000000000000000000081525091505061587d565b600860ff168160ff16036157f7576040518060400160405280600881526020017f6575696e7432353600000000000000000000000000000000000000000000000081525091505061587d565b600760ff168160ff1603615843576040518060400160405280600881526020017f656164647265737300000000000000000000000000000000000000000000000081525091505061587d565b6040518060400160405280600781526020017f756e6b6e6f776e000000000000000000000000000000000000000000000000008152509150505b919050565b60605f600161589084615d94565b0190505f8167ffffffffffffffff8111156158ae576158ad616187565b5b6040519080825280601f01601f1916602001820160405280156158e05781602001600182028036833780820191505090505b5090505f82602083010190505b600115615941578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161593657615935616cc2565b5b0494505f85036158ed575b819350505050919050565b5f5f5f604184510361598c575f5f5f602087015192506040870151915060608701515f1a905061597e88828585615ee5565b95509550955050505061599a565b5f600285515f1b9250925092505b9250925092565b5f60038111156159b4576159b3616dba565b5b8260038111156159c7576159c6616dba565b5b0315615aff57600160038111156159e1576159e0616dba565b5b8260038111156159f4576159f3616dba565b5b03615a2b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115615a3f57615a3e616dba565b5b826003811115615a5257615a51616dba565b5b03615a9657805f1c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401615a8d919061636e565b60405180910390fd5b600380811115615aa957615aa8616dba565b5b826003811115615abc57615abb616dba565b5b03615afe57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401615af5919061821e565b60405180910390fd5b5b5050565b5f5f615b0e83615d78565b90505f5f821860ff1614915050919050565b60605f8390505f6002846002615b369190618237565b615b409190616d4c565b67ffffffffffffffff811115615b5957615b58616187565b5b6040519080825280601f01601f191660200182016040528015615b8b5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110615bc257615bc161700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110615c2557615c2461700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001856002615c639190618237565b615c6d9190616d4c565b90505b6001811115615d0c577f3031323334353637383961626364656600000000000000000000000000000000600f841660108110615caf57615cae61700d565b5b1a60f81b828281518110615cc657615cc561700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c925080615d0590618278565b9050615c70565b505f8214615d535784846040517fe22e27eb000000000000000000000000000000000000000000000000000000008152600401615d4a92919061829f565b60405180910390fd5b809250505092915050565b615d7581615d6d615fcc615feb565b63ffffffff16565b50565b5f600880600160ff8016901c60ff16901b8316901c9050919050565b5f5f5f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615df0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381615de657615de5616cc2565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310615e2d576d04ee2d6d415b85acef81000000008381615e2357615e22616cc2565b5b0492506020810190505b662386f26fc100008310615e5c57662386f26fc100008381615e5257615e51616cc2565b5b0492506010810190505b6305f5e1008310615e85576305f5e1008381615e7b57615e7a616cc2565b5b0492506008810190505b6127108310615eaa576127108381615ea057615e9f616cc2565b5b0492506004810190505b60648310615ecd5760648381615ec357615ec2616cc2565b5b0492506002810190505b600a8310615edc576001810190505b80915050919050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115615f21575f600385925092509250615fc2565b5f6001888888886040515f8152602001604052604051615f4494939291906182c6565b6020604051602081039080840390855afa158015615f64573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603615fb5575f60015f5f1b93509350935050615fc2565b805f5f5f1b935093509350505b9450945094915050565b5f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b615ff6819050919050565b615ffe618309565b565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b61602381616011565b811461602d575f5ffd5b50565b5f8135905061603e8161601a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61606d82616044565b9050919050565b61607d81616063565b8114616087575f5ffd5b50565b5f8135905061609881616074565b92915050565b5f5f604083850312156160b4576160b3616009565b5b5f6160c185828601616030565b92505060206160d28582860161608a565b9150509250929050565b5f5f604083850312156160f2576160f1616009565b5b5f6160ff85828601616030565b925050602061611085828601616030565b9150509250929050565b5f60ff82169050919050565b61612f8161611a565b8114616139575f5ffd5b50565b5f8135905061614a81616126565b92915050565b6020811061615c575f5ffd5b50565b5f8135905061616d81616150565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6161bd82616177565b810181811067ffffffffffffffff821117156161dc576161db616187565b5b80604052505050565b5f6161ee616000565b90506161fa82826161b4565b919050565b5f67ffffffffffffffff82111561621957616218616187565b5b602082029050602081019050919050565b5f5ffd5b5f61624061623b846161ff565b6161e5565b905080838252602082019050602084028301858111156162635761626261622a565b5b835b8181101561628c57806162788882616030565b845260208401935050602081019050616265565b5050509392505050565b5f82601f8301126162aa576162a9616173565b5b81356162ba84826020860161622e565b91505092915050565b5f5f5f5f608085870312156162db576162da616009565b5b5f6162e88782880161613c565b94505060206162f98782880161615f565b935050604085013567ffffffffffffffff81111561631a5761631961600d565b5b61632687828801616296565b925050606085013567ffffffffffffffff8111156163475761634661600d565b5b61635387828801616296565b91505092959194509250565b61636881616011565b82525050565b5f6020820190506163815f83018461635f565b92915050565b5f6020828403121561639c5761639b616009565b5b5f6163a984828501616030565b91505092915050565b5f8115159050919050565b6163c6816163b2565b82525050565b5f6020820190506163df5f8301846163bd565b92915050565b6163ee81616063565b82525050565b5f6020820190506164075f8301846163e5565b92915050565b5f8160030b9050919050565b6164228161640d565b811461642c575f5ffd5b50565b5f8135905061643d81616419565b92915050565b5f5f6040838503121561645957616458616009565b5b5f6164668582860161642f565b92505060206164778582860161642f565b9150509250929050565b5f5ffd5b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156164a7576164a6616187565b5b6164b082616177565b9050602081019050919050565b828183375f83830152505050565b5f6164dd6164d88461648d565b6161e5565b9050828152602081018484840111156164f9576164f8616489565b5b6165048482856164bd565b509392505050565b5f82601f8301126165205761651f616173565b5b81356165308482602086016164cb565b91505092915050565b5f6080828403121561654e5761654d616481565b5b61655860806161e5565b90505f61656784828501616030565b5f83015250602061657a8482850161613c565b602083015250604061658e8482850161613c565b604083015250606082013567ffffffffffffffff8111156165b2576165b1616485565b5b6165be8482850161650c565b60608301525092915050565b5f5f604083850312156165e0576165df616009565b5b5f83013567ffffffffffffffff8111156165fd576165fc61600d565b5b61660985828601616539565b925050602061661a8582860161608a565b9150509250929050565b5f6040820190506166375f83018561635f565b61664460208301846163bd565b9392505050565b5f67ffffffffffffffff82111561666557616664616187565b5b61666e82616177565b9050602081019050919050565b5f61668d6166888461664b565b6161e5565b9050828152602081018484840111156166a9576166a8616489565b5b6166b48482856164bd565b509392505050565b5f82601f8301126166d0576166cf616173565b5b81356166e084826020860161667b565b91505092915050565b5f5f5f60608486031215616700576166ff616009565b5b5f61670d86828701616030565b935050602084013567ffffffffffffffff81111561672e5761672d61600d565b5b61673a868287016166bc565b925050604084013567ffffffffffffffff81111561675b5761675a61600d565b5b616767868287016166bc565b9150509250925092565b5f6020828403121561678657616785616009565b5b5f6167938482850161642f565b91505092915050565b6167a5816163b2565b81146167af575f5ffd5b50565b5f813590506167c08161679c565b92915050565b5f602082840312156167db576167da616009565b5b5f6167e8848285016167b2565b91505092915050565b5f5f5f6060848603121561680857616807616009565b5b5f84013567ffffffffffffffff8111156168255761682461600d565b5b616831868287016166bc565b935050602061684286828701616030565b925050604061685386828701616030565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61688f8261685d565b6168998185616867565b93506168a9818560208601616877565b6168b281616177565b840191505092915050565b5f6020820190508181035f8301526168d58184616885565b905092915050565b5f5ffd5b5f5f83601f8401126168f6576168f5616173565b5b8235905067ffffffffffffffff811115616913576169126168dd565b5b60208301915083602082028301111561692f5761692e61622a565b5b9250929050565b5f5f5f5f6060858703121561694e5761694d616009565b5b5f61695b87828801616030565b945050602061696c87828801616030565b935050604085013567ffffffffffffffff81111561698d5761698c61600d565b5b616999878288016168e1565b925092505092959194509250565b5f5f5f606084860312156169be576169bd616009565b5b5f84013567ffffffffffffffff8111156169db576169da61600d565b5b6169e7868287016166bc565b93505060206169f886828701616030565b9250506040616a098682870161608a565b9150509250925092565b5f60208284031215616a2857616a27616009565b5b5f616a358482850161608a565b91505092915050565b5f67ffffffffffffffff82169050919050565b616a5a81616a3e565b8114616a64575f5ffd5b50565b5f81359050616a7581616a51565b92915050565b5f819050919050565b616a8d81616a7b565b8114616a97575f5ffd5b50565b5f81359050616aa881616a84565b92915050565b5f6101008284031215616ac457616ac3616481565b5b616acf6101006161e5565b90505f616ade8482850161608a565b5f830152506020616af184828501616a67565b6020830152506040616b058482850161608a565b6040830152506060616b1984828501616030565b6060830152506080616b2d8482850161608a565b60808301525060a0616b4184828501616a9a565b60a08301525060c082013567ffffffffffffffff811115616b6557616b64616485565b5b616b718482850161650c565b60c08301525060e082013567ffffffffffffffff811115616b9557616b94616485565b5b616ba18482850161650c565b60e08301525092915050565b5f5f60408385031215616bc357616bc2616009565b5b5f83013567ffffffffffffffff811115616be057616bdf61600d565b5b616bec85828601616aae565b9250506020616bfd85828601616030565b9150509250929050565b5f60208284031215616c1c57616c1b616009565b5b5f82013567ffffffffffffffff811115616c3957616c3861600d565b5b616c45848285016166bc565b91505092915050565b5f819050919050565b5f616c71616c6c616c6784616044565b616c4e565b616044565b9050919050565b5f616c8282616c57565b9050919050565b5f616c9382616c78565b9050919050565b616ca381616c89565b82525050565b5f602082019050616cbc5f830184616c9a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f616cf982616011565b9150616d0483616011565b925082616d1457616d13616cc2565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f616d5682616011565b9150616d6183616011565b9250828201905080821115616d7957616d78616d1f565b5b92915050565b5f616d8982616a3e565b9150616d9483616a3e565b9250828201905067ffffffffffffffff811115616db457616db3616d1f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b5f616e0a616e05616e0084616de7565b616c4e565b616011565b9050919050565b616e1a81616df0565b82525050565b5f6060820190508181035f830152616e388186616885565b9050616e47602083018561635f565b616e546040830184616e11565b949350505050565b5f606082019050616e6f5f83018661635f565b616e7c60208301856163e5565b616e8960408301846163e5565b949350505050565b616e9a8161640d565b82525050565b5f606082019050616eb35f830186616e91565b616ec06020830185616e91565b616ecd6040830184616e91565b949350505050565b5f604082019050616ee85f8301856163e5565b616ef560208301846163e5565b9392505050565b5f604082019050616f0f5f83018561635f565b616f1c60208301846163e5565b9392505050565b5f606082019050616f365f83018661635f565b8181036020830152616f488185616885565b90508181036040830152616f5c8184616885565b9050949350505050565b5f81519050616f748161679c565b92915050565b5f60208284031215616f8f57616f8e616009565b5b5f616f9c84828501616f66565b91505092915050565b7f4f7574206f6620626f756e6473000000000000000000000000000000000000005f82015250565b5f616fd9600d83616867565b9150616fe482616fa5565b602082019050919050565b5f6020820190508181035f83015261700681616fcd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61706c81616011565b82525050565b5f61707d8383617063565b60208301905092915050565b5f602082019050919050565b5f61709f8261703a565b6170a98185617044565b93506170b483617054565b805f5b838110156170e45781516170cb8882617072565b97506170d683617089565b9250506001810190506170b7565b5085935050505092915050565b5f6040820190508181035f8301526171098185617095565b905061711860208301846163e5565b9392505050565b61712881616063565b82525050565b61713781616a3e565b82525050565b61714681616a7b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f6171708261714c565b61717a8185617156565b935061718a818560208601616877565b61719381616177565b840191505092915050565b5f61010083015f8301516171b45f86018261711f565b5060208301516171c7602086018261712e565b5060408301516171da604086018261711f565b5060608301516171ed6060860182617063565b506080830151617200608086018261711f565b5060a083015161721360a086018261713d565b5060c083015184820360c086015261722b8282617166565b91505060e083015184820360e08601526172458282617166565b9150508091505092915050565b5f6040820190508181035f83015261726a818561719e565b9050617279602083018461635f565b9392505050565b5f61728a82616011565b915061729583616011565b92508282039050818111156172ad576172ac616d1f565b5b92915050565b5f819050919050565b5f6172d66172d16172cc846172b3565b616c4e565b616011565b9050919050565b6172e6816172bc565b82525050565b5f6060820190508181035f8301526173048186616885565b9050617313602083018561635f565b61732060408301846172dd565b949350505050565b5f819050919050565b5f61734b61734661734184617328565b616c4e565b616011565b9050919050565b61735b81617331565b82525050565b5f6060820190508181035f8301526173798186616885565b9050617388602083018561635f565b6173956040830184617352565b949350505050565b5f6173a78261611a565b915060ff82036173ba576173b9616d1f565b5b600182019050919050565b5f81905092915050565b5f6173d98261714c565b6173e381856173c5565b93506173f3818560208601616877565b80840191505092915050565b5f61740a82856173cf565b915061741682846173cf565b91508190509392505050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b5f819050919050565b61746761746282617422565b61744d565b82525050565b5f61747882856173cf565b91506174848284617456565b6001820191508190509392505050565b5f819050919050565b5f6174b76174b26174ad84617494565b616c4e565b616011565b9050919050565b6174c78161749d565b82525050565b5f60a0820190506174e05f83018861635f565b81810360208301526174f28187616885565b9050617501604083018661635f565b61750e60608301856174be565b61751b60808301846174be565b9695505050505050565b5f60a0820190506175385f83018861635f565b818103602083015261754a8187616885565b9050617559604083018661635f565b617566606083018561635f565b61757360808301846174be565b9695505050505050565b5f60a0820190506175905f83018861635f565b81810360208301526175a28187616885565b90506175b1604083018661635f565b6175be606083018561635f565b6175cb608083018461635f565b9695505050505050565b5f819050919050565b6175ef6175ea82616011565b6175d5565b82525050565b5f8160f81b9050919050565b5f61760b826175f5565b9050919050565b61762361761e8261611a565b617601565b82525050565b5f8160601b9050919050565b5f61763f82617629565b9050919050565b5f61765082617635565b9050919050565b61766861766382616063565b617646565b82525050565b5f61767982886175de565b6020820191506176898287617612565b6001820191506176998286617612565b6001820191506176a98285617657565b6014820191506176b982846175de565b6020820191508190509695505050505050565b5f81905092915050565b5f6176e08261685d565b6176ea81856176cc565b93506176fa818560208601616877565b80840191505092915050565b7f202d3e2000000000000000000000000000000000000000000000000000000000815250565b5f61773782886176d6565b915061774382876176d6565b915061774f82866176d6565b915061775b82856176d6565b915061776682617706565b60048201915061777682846176d6565b91508190509695505050505050565b7f73656c65637400000000000000000000000000000000000000000000000000005f82015250565b5f6177b9600683616867565b91506177c482617785565b602082019050919050565b5f6060820190508181035f8301526177e6816177ad565b90506177f5602083018561635f565b6178026040830184616e11565b9392505050565b5f6020820190508181035f830152617820816177ad565b9050919050565b6178308161611a565b82525050565b5f6040820190506178495f830185617827565b6178566020830184617827565b9392505050565b5f6040820190508181035f8301526178758185616885565b90506178846020830184617827565b9392505050565b7f202a200000000000000000000000000000000000000000000000000000000000815250565b5f6178bc82856176d6565b91506178c78261788b565b6003820191506178d782846176d6565b91508190509392505050565b7f202d200000000000000000000000000000000000000000000000000000000000815250565b5f61791482856176d6565b915061791f826178e3565b60038201915061792f82846176d6565b91508190509392505050565b7f202b200000000000000000000000000000000000000000000000000000000000815250565b5f61796c82856176d6565b91506179778261793b565b60038201915061798782846176d6565b91508190509392505050565b7f205e200000000000000000000000000000000000000000000000000000000000815250565b5f6179c482856176d6565b91506179cf82617993565b6003820191506179df82846176d6565b91508190509392505050565b7f2026200000000000000000000000000000000000000000000000000000000000815250565b5f617a1c82856176d6565b9150617a27826179eb565b600382019150617a3782846176d6565b91508190509392505050565b7f207c200000000000000000000000000000000000000000000000000000000000815250565b5f617a7482856176d6565b9150617a7f82617a43565b600382019150617a8f82846176d6565b91508190509392505050565b7f202f200000000000000000000000000000000000000000000000000000000000815250565b5f617acc82856176d6565b9150617ad782617a9b565b600382019150617ae782846176d6565b91508190509392505050565b7f2025200000000000000000000000000000000000000000000000000000000000815250565b5f617b2482856176d6565b9150617b2f82617af3565b600382019150617b3f82846176d6565b91508190509392505050565b7f203c3c2000000000000000000000000000000000000000000000000000000000815250565b5f617b7c82856176d6565b9150617b8782617b4b565b600482019150617b9782846176d6565b91508190509392505050565b7f203e3e2000000000000000000000000000000000000000000000000000000000815250565b5f617bd482856176d6565b9150617bdf82617ba3565b600482019150617bef82846176d6565b91508190509392505050565b7f203e3d2000000000000000000000000000000000000000000000000000000000815250565b5f617c2c82856176d6565b9150617c3782617bfb565b600482019150617c4782846176d6565b91508190509392505050565b7f203c3d2000000000000000000000000000000000000000000000000000000000815250565b5f617c8482856176d6565b9150617c8f82617c53565b600482019150617c9f82846176d6565b91508190509392505050565b7f203c200000000000000000000000000000000000000000000000000000000000815250565b5f617cdc82856176d6565b9150617ce782617cab565b600382019150617cf782846176d6565b91508190509392505050565b7f203e200000000000000000000000000000000000000000000000000000000000815250565b5f617d3482856176d6565b9150617d3f82617d03565b600382019150617d4f82846176d6565b91508190509392505050565b7f6d696e2800000000000000000000000000000000000000000000000000000000815250565b7f2c20000000000000000000000000000000000000000000000000000000000000815250565b7f2900000000000000000000000000000000000000000000000000000000000000815250565b5f617dd782617d5b565b600482019150617de782856176d6565b9150617df282617d81565b600282019150617e0282846176d6565b9150617e0d82617da7565b6001820191508190509392505050565b7f6d61782800000000000000000000000000000000000000000000000000000000815250565b5f617e4d82617e1d565b600482019150617e5d82856176d6565b9150617e6882617d81565b600282019150617e7882846176d6565b9150617e8382617da7565b6001820191508190509392505050565b7f203d3d2000000000000000000000000000000000000000000000000000000000815250565b5f617ec482856176d6565b9150617ecf82617e93565b600482019150617edf82846176d6565b91508190509392505050565b7f20213d2000000000000000000000000000000000000000000000000000000000815250565b5f617f1c82856176d6565b9150617f2782617eeb565b600482019150617f3782846176d6565b91508190509392505050565b7f4648452e61734500000000000000000000000000000000000000000000000000815250565b5f617f7382617f43565b600782019150617f8382846176d6565b915081905092915050565b7f2800000000000000000000000000000000000000000000000000000000000000815250565b5f617fbf82856176d6565b9150617fca82617f8e565b600182019150617fda82846176d6565b9150617fe582617da7565b6001820191508190509392505050565b7f203f200000000000000000000000000000000000000000000000000000000000815250565b7f203a200000000000000000000000000000000000000000000000000000000000815250565b5f61804c82866176d6565b915061805782617ff5565b60038201915061806782856176d6565b91506180728261801b565b60038201915061808282846176d6565b9150819050949350505050565b7f2e2e000000000000000000000000000000000000000000000000000000000000815250565b7f295b000000000000000000000000000000000000000000000000000000000000815250565b7f5d00000000000000000000000000000000000000000000000000000000000000815250565b5f61810c82876176d6565b915061811782617f8e565b60018201915061812782866176d6565b91506181328261808f565b60028201915061814282856176d6565b915061814d826180b5565b60028201915061815d82846176d6565b9150618168826180db565b60018201915081905095945050505050565b7f20203d3e20200000000000000000000000000000000000000000000000000000815250565b5f6181ab82886176d6565b91506181b782876176d6565b91506181c382866176d6565b91506181cf82856176d6565b91506181da8261817a565b6006820191506181ea82846176d6565b91508190509695505050505050565b5f61820482846176d6565b915081905092915050565b61821881616a7b565b82525050565b5f6020820190506182315f83018461820f565b92915050565b5f61824182616011565b915061824c83616011565b925082820261825a81616011565b9150828204841483151761827157618270616d1f565b5b5092915050565b5f61828282616011565b91505f820361829457618293616d1f565b5b600182039050919050565b5f6040820190506182b25f83018561635f565b6182bf602083018461635f565b9392505050565b5f6080820190506182d95f83018761820f565b6182e66020830186617827565b6182f3604083018561820f565b618300606083018461820f565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffdfea264697066735822122071ac1303d0c1324d889b8a884aa303077229a93e54ec681287901cda33b6681d64736f6c634300081e0033"
1026
- } satisfies MocksArtifact;
1026
+ deployedBytecode:
1027
+ '0x608060405234801561000f575f5ffd5b50600436106101ee575f3560e01c8063642b3f191161010d578063a307d21d116100a0578063de2873591161006f578063de287359146105bd578063e68d826f146105db578063f6bc7f3f146105f9578063f9120af614610629576101ee565b8063a307d21d14610525578063ae79f04a14610541578063c4d66de814610571578063d521ed4b1461058d576101ee565b80638b2b9c23116100dc5780638b2b9c23146104b55780638d9c9c92146104d15780638db39c8d146104ed57806392bd6c9514610509576101ee565b8063642b3f191461043157806365d0509c1461044d5780637e5cf5191461046957806381ba098614610499576101ee565b806327f9c762116101855780634bc98263116101545780634bc98263146103ad578063591363c7146103c95780635faa299a146103e55780635fb0bf9114610415576101ee565b806327f9c7621461031257806334ef1e5a14610342578063392e53cd1461035e578063458693c91461037c576101ee565b80631d031931116101c15780631d0319311461028a578063245a7bfc146102ba57806326594a0c146102d8578063267c4ae4146102f4576101ee565b806308289827146101f257806315a486fe1461020e5780631888debd1461022a5780631c76642b1461025a575b5f5ffd5b61020c6004803603810190610207919061609e565b610645565b005b610228600480360381019061022391906160dc565b6106f8565b005b610244600480360381019061023f91906162c3565b610706565b604051610251919061636e565b60405180910390f35b610274600480360381019061026f9190616387565b6108aa565b604051610281919061636e565b60405180910390f35b6102a4600480360381019061029f9190616387565b6108bf565b6040516102b191906163cc565b60405180910390f35b6102c26108dc565b6040516102cf91906163f4565b60405180910390f35b6102f260048036038101906102ed9190616443565b610902565b005b6102fc6109de565b60405161030991906163cc565b60405180910390f35b61032c600480360381019061032791906165ca565b6109e6565b604051610339919061636e565b60405180910390f35b61035c60048036038101906103579190616387565b610c20565b005b610366610cfa565b60405161037391906163cc565b60405180910390f35b61039660048036038101906103919190616387565b610d10565b6040516103a4929190616624565b60405180910390f35b6103c760048036038101906103c291906166e9565b610d95565b005b6103e360048036038101906103de9190616771565b610e67565b005b6103ff60048036038101906103fa919061609e565b610f99565b60405161040c91906163cc565b60405180910390f35b61042f600480360381019061042a9190616771565b611055565b005b61044b600480360381019061044691906167c6565b611187565b005b6104676004803603810190610462919061609e565b6111a2565b005b610483600480360381019061047e91906167f1565b6112ee565b60405161049091906168bd565b60405180910390f35b6104b360048036038101906104ae9190616936565b611424565b005b6104cf60048036038101906104ca91906169a7565b611532565b005b6104eb60048036038101906104e6919061609e565b611542565b005b61050760048036038101906105029190616a13565b61161f565b005b610523600480360381019061051e9190616a13565b6116f3565b005b61053f600480360381019061053a9190616387565b61182c565b005b61055b60048036038101906105569190616bad565b611974565b60405161056891906163cc565b60405180910390f35b61058b60048036038101906105869190616a13565b611a18565b005b6105a760048036038101906105a29190616c07565b611ab6565b6040516105b491906168bd565b60405180910390f35b6105c5611bcb565b6040516105d29190616ca9565b60405180910390f35b6105e3611bf0565b6040516105f091906163cc565b60405180910390f35b610613600480360381019061060e9190616387565b611c01565b604051610620919061636e565b60405180910390f35b610643600480360381019061063e9190616a13565b611c5d565b005b61064e82611d97565b600160055f8481526020019081526020015f205f6101000a81548160ff02191690831515021790555061068082611e86565b60045f8481526020019081526020015f20819055505f6001600a426106a59190616cef565b6106af9190616d4c565b905080426106bd9190616d7f565b60065f8581526020019081526020015f205f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505050565b6107028282611f0e565b5050565b5f601b601f81111561071b5761071a616dba565b5b84601f81111561072e5761072d616dba565b5b03610765576040517f98e08ab000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f825184516107749190616d4c565b905060038111156107c95761078885611f2c565b8160036040517f2b0399d50000000000000000000000000000000000000000000000000000000081526004016107c093929190616e20565b60405180910390fd5b6107d38486612ac1565b5f6107de8585612d3b565b90505f6107ec878787612e7d565b90505f6107fb8983858b612ee8565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663484de8228233306040518463ffffffff1660e01b815260040161085b93929190616e5c565b5f604051808303815f87803b158015610872575f5ffd5b505af1158015610884573d5f5f3e3d5ffd5b5050505061089b816108958a611f2c565b8561306d565b80945050505050949350505050565b6001602052805f5260405f205f915090505481565b6002602052805f5260405f205f915054906101000a900460ff1681565b600760089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099357336040517f7238ea5600000000000000000000000000000000000000000000000000000000815260040161098a91906163f4565b60405180910390fd5b81600760046101000a81548163ffffffff021916908360030b63ffffffff1602179055508060075f6101000a81548163ffffffff021916908360030b63ffffffff1602179055505050565b5f6001905090565b5f5f836020015160ff1690505f73ffffffffffffffffffffffffffffffffffffffff1660095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b7457610a4f816132c2565b610ab15780600760049054906101000a900460030b60075f9054906101000a900460030b6040517f24cbcf36000000000000000000000000000000000000000000000000000000008152600401610aa893929190616ea0565b60405180910390fd5b5f610abc8585613303565b905060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b72578060095f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040517f7ba5ffb5000000000000000000000000000000000000000000000000000000008152600401610b69929190616ed5565b60405180910390fd5b505b5f610b88855f01518387604001515f6133c7565b905060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663484de8228233306040518463ffffffff1660e01b8152600401610be893929190616e5c565b5f604051808303815f87803b158015610bff575f5ffd5b505af1158015610c11573d5f5f3e3d5ffd5b50505050809250505092915050565b610c2981613420565b610cf75760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663846cd43382336040518363ffffffff1660e01b8152600401610c89929190616efc565b5f604051808303815f87803b158015610ca0575f5ffd5b505af1158015610cb2573d5f5f3e3d5ffd5b50505050610cf66040518060400160405280600f81526020017f4648452e616c6c6f77476c6f62616c00000000000000000000000000000000008152508233611532565b5b50565b5f600360149054906101000a900460ff16905090565b5f5f60055f8481526020019081526020015f205f9054906101000a900460ff16610d3f575f5f91509150610d90565b60065f8481526020019081526020015f205f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16421015610d80575f5f91509150610d90565b610d8983611e86565b6001915091505b915091565b600760089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e2757336040517fa974a0fe000000000000000000000000000000000000000000000000000000008152600401610e1e91906163f4565b60405180910390fd5b7f66d3f531abdf188fde59b6d2b282dc7c725ef2bb1c6c93954054721a13c1a3fa838383604051610e5a93929190616f23565b60405180910390a1505050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ef857336040517f7238ea56000000000000000000000000000000000000000000000000000000008152600401610eef91906163f4565b60405180910390fd5b600760049054906101000a900460030b60030b8160030b1215610f735780600760049054906101000a900460030b60075f9054906101000a900460030b6040517f24cbcf36000000000000000000000000000000000000000000000000000000008152600401610f6a93929190616ea0565b60405180910390fd5b8060075f6101000a81548163ffffffff021916908360030b63ffffffff16021790555050565b5f610fa383613420565b15610fb1576001905061104f565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635faa299a84846040518363ffffffff1660e01b815260040161100d929190616efc565b602060405180830381865afa158015611028573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104c9190616f7a565b90505b92915050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110e657336040517f7238ea560000000000000000000000000000000000000000000000000000000081526004016110dd91906163f4565b60405180910390fd5b60075f9054906101000a900460030b60030b8160030b13156111605780600760049054906101000a900460030b60075f9054906101000a900460030b6040517f24cbcf3600000000000000000000000000000000000000000000000000000000815260040161115793929190616ea0565b60405180910390fd5b80600760046101000a81548163ffffffff021916908360030b63ffffffff16021790555050565b805f5f6101000a81548160ff02191690831515021790555050565b6111ab82613420565b6112ea5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166379a3a7fb8383336040518463ffffffff1660e01b815260040161120d93929190616e5c565b5f604051808303815f87803b158015611224575f5ffd5b505af1158015611236573d5f5f3e3d5ffd5b505050506112e93373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112ab576040518060400160405280600981526020017f4648452e616c6c6f7700000000000000000000000000000000000000000000008152506112e2565b6040518060400160405280600d81526020017f4648452e616c6c6f7754686973000000000000000000000000000000000000008152505b8383611532565b5b5050565b60605f849050805183856113029190616d4c565b1115611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90616fef565b60405180910390fd5b5f8367ffffffffffffffff81111561135e5761135d616187565b5b6040519080825280601f01601f1916602001820160405280156113905781602001600182028036833780820191505090505b5090505f5f90505b84811015611417578281876113ad9190616d4c565b815181106113be576113bd61700d565b5b602001015160f81c60f81b8282815181106113dc576113db61700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050611398565b5080925050509392505050565b600760089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114b657336040517fa974a0fe0000000000000000000000000000000000000000000000000000000081526004016114ad91906163f4565b60405180910390fd5b600160055f8681526020019081526020015f205f6101000a81548160ff0219169083151502179055508260045f8681526020019081526020015f20819055504260065f8681526020019081526020015f205f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050505050565b61153d83838361345d565b505050565b61154b82613420565b61161b5760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663484de8228383336040518463ffffffff1660e01b81526004016115ad93929190616e5c565b5f604051808303815f87803b1580156115c4575f5ffd5b505af11580156115d6573d5f5f3e3d5ffd5b5050505061161a6040518060400160405280601281526020017f4648452e616c6c6f775472616e7369656e7400000000000000000000000000008152508383611532565b5b5050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116b057336040517f7238ea560000000000000000000000000000000000000000000000000000000081526004016116a791906163f4565b60405180910390fd5b8060095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461178457336040517f7238ea5600000000000000000000000000000000000000000000000000000000815260040161177b91906163f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036117e9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61183581613420565b611971575f600167ffffffffffffffff81111561185557611854616187565b5b6040519080825280602002602001820160405280156118835781602001602082028036833780820191505090505b50905081815f8151811061189a5761189961700d565b5b60200260200101818152505060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633c3839ba82336040518363ffffffff1660e01b81526004016119029291906170f1565b5f604051808303815f87803b158015611919575f5ffd5b505af115801561192b573d5f5f3e3d5ffd5b5050505061196f6040518060400160405280601681526020017f4648452e616c6c6f77466f7244656372797074696f6e000000000000000000008152508333611532565b505b50565b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ae79f04a84846040518363ffffffff1660e01b81526004016119d1929190617252565b602060405180830381865afa1580156119ec573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a109190616f7a565b905092915050565b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600360146101000a81548160ff0219169083151502179055505f60095f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f8290505f815103611adb5760405180602001604052805f815250915050611bc6565b5f60018251611aea9190617280565b67ffffffffffffffff811115611b0357611b02616187565b5b6040519080825280601f01601f191660200182016040528015611b355781602001600182028036833780820191505090505b5090505f600190505b8251811015611bbf57828181518110611b5a57611b5961700d565b5b602001015160f81c60f81b82600183611b739190617280565b81518110611b8457611b8361700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050611b3e565b5080925050505b919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f9054906101000a900460ff1681565b5f5f5f611c0d84610d10565b9150915080611c5357836040517f70cf6554000000000000000000000000000000000000000000000000000000008152600401611c4a919061636e565b60405180910390fd5b8192505050919050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cee57336040517f7238ea56000000000000000000000000000000000000000000000000000000008152600401611ce591906163f4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d53576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611da081613420565b611e835760085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635faa299a82336040518363ffffffff1660e01b8152600401611e00929190616efc565b602060405180830381865afa158015611e1b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3f9190616f7a565b611e825780336040517f4d13139e000000000000000000000000000000000000000000000000000000008152600401611e79929190616efc565b60405180910390fd5b5b50565b5f60025f8381526020019081526020015f205f9054906101000a900460ff16611ee657816040517f850a796d000000000000000000000000000000000000000000000000000000008152600401611edd919061636e565b60405180910390fd5b5f611ef08361354b565b90508060015f8581526020019081526020015f205416915050919050565b5f611f188361354b565b9050611f27838284165f613568565b505050565b60606002601f811115611f4257611f41616dba565b5b82601f811115611f5557611f54616dba565b5b03611f97576040518060400160405280600481526020017f63617374000000000000000000000000000000000000000000000000000000008152509050612abc565b6003601f811115611fab57611faa616dba565b5b82601f811115611fbe57611fbd616dba565b5b03612000576040518060400160405280600a81526020017f7365616c4f7574707574000000000000000000000000000000000000000000008152509050612abc565b6004601f81111561201457612013616dba565b5b82601f81111561202757612026616dba565b5b03612069576040518060400160405280600681526020017f73656c65637400000000000000000000000000000000000000000000000000008152509050612abc565b6006601f81111561207d5761207c616dba565b5b82601f8111156120905761208f616dba565b5b036120d2576040518060400160405280600781526020017f64656372797074000000000000000000000000000000000000000000000000008152509050612abc565b6007601f8111156120e6576120e5616dba565b5b82601f8111156120f9576120f8616dba565b5b0361213b576040518060400160405280600381526020017f73756200000000000000000000000000000000000000000000000000000000008152509050612abc565b6008601f81111561214f5761214e616dba565b5b82601f81111561216257612161616dba565b5b036121a4576040518060400160405280600381526020017f61646400000000000000000000000000000000000000000000000000000000008152509050612abc565b6009601f8111156121b8576121b7616dba565b5b82601f8111156121cb576121ca616dba565b5b0361220d576040518060400160405280600381526020017f786f7200000000000000000000000000000000000000000000000000000000008152509050612abc565b600a601f81111561222157612220616dba565b5b82601f81111561223457612233616dba565b5b03612276576040518060400160405280600381526020017f616e6400000000000000000000000000000000000000000000000000000000008152509050612abc565b600b601f81111561228a57612289616dba565b5b82601f81111561229d5761229c616dba565b5b036122df576040518060400160405280600281526020017f6f720000000000000000000000000000000000000000000000000000000000008152509050612abc565b600c601f8111156122f3576122f2616dba565b5b82601f81111561230657612305616dba565b5b03612348576040518060400160405280600381526020017f6e6f7400000000000000000000000000000000000000000000000000000000008152509050612abc565b600d601f81111561235c5761235b616dba565b5b82601f81111561236f5761236e616dba565b5b036123b1576040518060400160405280600381526020017f64697600000000000000000000000000000000000000000000000000000000008152509050612abc565b600e601f8111156123c5576123c4616dba565b5b82601f8111156123d8576123d7616dba565b5b0361241a576040518060400160405280600381526020017f72656d00000000000000000000000000000000000000000000000000000000008152509050612abc565b600f601f81111561242e5761242d616dba565b5b82601f81111561244157612440616dba565b5b03612483576040518060400160405280600381526020017f6d756c00000000000000000000000000000000000000000000000000000000008152509050612abc565b6010601f81111561249757612496616dba565b5b82601f8111156124aa576124a9616dba565b5b036124ec576040518060400160405280600381526020017f73686c00000000000000000000000000000000000000000000000000000000008152509050612abc565b6011601f811115612500576124ff616dba565b5b82601f81111561251357612512616dba565b5b03612555576040518060400160405280600381526020017f73687200000000000000000000000000000000000000000000000000000000008152509050612abc565b6012601f81111561256957612568616dba565b5b82601f81111561257c5761257b616dba565b5b036125be576040518060400160405280600381526020017f67746500000000000000000000000000000000000000000000000000000000008152509050612abc565b6013601f8111156125d2576125d1616dba565b5b82601f8111156125e5576125e4616dba565b5b03612627576040518060400160405280600381526020017f6c746500000000000000000000000000000000000000000000000000000000008152509050612abc565b6014601f81111561263b5761263a616dba565b5b82601f81111561264e5761264d616dba565b5b03612690576040518060400160405280600281526020017f6c740000000000000000000000000000000000000000000000000000000000008152509050612abc565b6015601f8111156126a4576126a3616dba565b5b82601f8111156126b7576126b6616dba565b5b036126f9576040518060400160405280600281526020017f67740000000000000000000000000000000000000000000000000000000000008152509050612abc565b6016601f81111561270d5761270c616dba565b5b82601f8111156127205761271f616dba565b5b03612762576040518060400160405280600381526020017f6d696e00000000000000000000000000000000000000000000000000000000008152509050612abc565b6017601f81111561277657612775616dba565b5b82601f81111561278957612788616dba565b5b036127cb576040518060400160405280600381526020017f6d617800000000000000000000000000000000000000000000000000000000008152509050612abc565b6018601f8111156127df576127de616dba565b5b82601f8111156127f2576127f1616dba565b5b03612834576040518060400160405280600281526020017f65710000000000000000000000000000000000000000000000000000000000008152509050612abc565b6019601f81111561284857612847616dba565b5b82601f81111561285b5761285a616dba565b5b0361289d576040518060400160405280600281526020017f6e650000000000000000000000000000000000000000000000000000000000008152509050612abc565b601a601f8111156128b1576128b0616dba565b5b82601f8111156128c4576128c3616dba565b5b03612906576040518060400160405280600e81526020017f7472697669616c456e63727970740000000000000000000000000000000000008152509050612abc565b601b601f81111561291a57612919616dba565b5b82601f81111561292d5761292c616dba565b5b0361296f576040518060400160405280600681526020017f72616e646f6d00000000000000000000000000000000000000000000000000008152509050612abc565b601c601f81111561298357612982616dba565b5b82601f81111561299657612995616dba565b5b036129d8576040518060400160405280600381526020017f726f6c00000000000000000000000000000000000000000000000000000000008152509050612abc565b601d601f8111156129ec576129eb616dba565b5b82601f8111156129ff576129fe616dba565b5b03612a41576040518060400160405280600381526020017f726f7200000000000000000000000000000000000000000000000000000000008152509050612abc565b601e601f811115612a5557612a54616dba565b5b82601f811115612a6857612a67616dba565b5b03612aaa576040518060400160405280600681526020017f73717561726500000000000000000000000000000000000000000000000000008152509050612abc565b60405180602001604052805f81525090505b919050565b5f612acb82611f2c565b90505f835103612b2557612ade82613609565b612b1f57806040517fb31612aa000000000000000000000000000000000000000000000000000000008152600401612b1691906168bd565b60405180910390fd5b50612d37565b6004601f811115612b3957612b38616dba565b5b82601f811115612b4c57612b4b616dba565b5b03612b5f57612b5a83613668565b612c8f565b612b68826137a9565b15612bbe576001835114612bb95780835160016040517f9a84351c000000000000000000000000000000000000000000000000000000008152600401612bb0939291906172ec565b60405180910390fd5b612c8e565b6002835114612c0a5780835160026040517f9a84351c000000000000000000000000000000000000000000000000000000008152600401612c0193929190617361565b60405180910390fd5b5f612c4b84600181518110612c2257612c2161700d565b5b6020026020010151855f81518110612c3d57612c3c61700d565b5b602002602001015118613837565b14612c8d57806040517f52b50ae1000000000000000000000000000000000000000000000000000000008152600401612c8491906168bd565b60405180910390fd5b5b5b5f612cb3845f81518110612ca657612ca561700d565b5b6020026020010151613855565b9050612cbe816132c2565b612d205780600760049054906101000a900460030b60075f9054906101000a900460030b6040517f24cbcf36000000000000000000000000000000000000000000000000000000008152600401612d1793929190616ea0565b60405180910390fd5b612d2984613865565b612d348383866138b3565b50505b5050565b60605f82518451612d4c9190616d4c565b67ffffffffffffffff811115612d6557612d64616187565b5b604051908082528060200260200182016040528015612d935781602001602082028036833780820191505090505b5090505f5f90505b84518160ff161015612dfa57848160ff1681518110612dbd57612dbc61700d565b5b6020026020010151828260ff1681518110612ddb57612dda61700d565b5b6020026020010181815250508080612df29061739d565b915050612d9b565b5b83518551612e099190616d4c565b8160ff161015612e72578385518260ff16612e249190617280565b81518110612e3557612e3461700d565b5b6020026020010151828260ff1681518110612e5357612e5261700d565b5b6020026020010181815250508080612e6a9061739d565b915050612dfb565b819250505092915050565b5f612e8784613609565b15612ebb578160018351612e9b9190617280565b81518110612eac57612eab61700d565b5b60200260200101519050612ee1565b612ede835f81518110612ed157612ed061700d565b5b6020026020010151613855565b90505b9392505050565b5f60605f601a601f811115612f0057612eff616dba565b5b84601f811115612f1357612f12616dba565b5b1490505f5f90505b85518160ff161015612f835782612f4e878360ff1681518110612f4157612f4061700d565b5b6020026020010151613a21565b604051602001612f5f9291906173ff565b60405160208183030381529060405292508080612f7b9061739d565b915050612f1b565b50601e601f811115612f9857612f97616dba565b5b84601f811115612fab57612faa616dba565b5b03612ffb57600f935081612fd8865f81518110612fcb57612fca61700d565b5b6020026020010151613a21565b604051602001612fe99291906173ff565b60405160208183030381529060405291505b5f84601f81111561300f5761300e616dba565b5b60f81b9050828160405160200161302792919061746d565b60405160208183030381529060405292505f838051906020012090505f61305b825f1c8a6130558a8e613a83565b876133c7565b90508095505050505050949350505050565b6001815114806130845750613083826002613bae565b5b1561310c577fe9de54a3e7ddf0c48cc6e1134185300d5a71acbf2d8c21fcdefa9d9dd9e20ac18383835f815181106130bf576130be61700d565b5b60200260200101515f5f6040516130da9594939291906174cd565b60405180910390a16131078383835f815181106130fa576130f961700d565b5b6020026020010151613bc9565b6132bd565b60028151036131cf577fe9de54a3e7ddf0c48cc6e1134185300d5a71acbf2d8c21fcdefa9d9dd9e20ac18383835f8151811061314b5761314a61700d565b5b6020026020010151846001815181106131675761316661700d565b5b60200260200101515f604051613181959493929190617525565b60405180910390a16131ca8383835f815181106131a1576131a061700d565b5b6020026020010151846001815181106131bd576131bc61700d565b5b6020026020010151613e30565b6132bc565b7fe9de54a3e7ddf0c48cc6e1134185300d5a71acbf2d8c21fcdefa9d9dd9e20ac18383835f815181106132055761320461700d565b5b6020026020010151846001815181106132215761322061700d565b5b60200260200101518560028151811061323d5761323c61700d565b5b602002602001015160405161325695949392919061757d565b60405180910390a16132bb8383835f815181106132765761327561700d565b5b6020026020010151846001815181106132925761329161700d565b5b6020026020010151856002815181106132ae576132ad61700d565b5b6020026020010151614c5c565b5b5b505050565b5f600760049054906101000a900460030b60030b8260030b121580156132fc575060075f9054906101000a900460030b60030b8260030b13155b9050919050565b5f5f835f015184604001518560200151854660405160200161332995949392919061766e565b60405160208183030381529060405290505f818051906020012090505f613354828760600151614e03565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036133bb576040517f8baa579f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80935050505092915050565b5f61ffff80167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6133f89190617280565b851690505f8460ff16600861340d8587614e2d565b901b179050808217915050949350505050565b5f600160ff8016901c60ff1660ff801661343a9190617280565b600160ff8016901c60ff1660ff80166134539190617280565b8316149050919050565b5f5f9054906101000a900460ff1615613546576135456040518060400160405280600481526020017fe2949c20000000000000000000000000000000000000000000000000000000008152506134d58560107f2000000000000000000000000000000000000000000000000000000000000000614e6c565b6040518060400160405280600381526020017f207c20000000000000000000000000000000000000000000000000000000000081525061351486614fb3565b61351d8661514f565b60405160200161353195949392919061772c565b60405160208183030381529060405261517c565b5b505050565b5f5f61355683615215565b90506001816001901b03915050919050565b8160015f8581526020019081526020015f2081905550600160025f8581526020019081526020015f205f6101000a81548160ff0219169083151502179055508015613604576136036040518060400160405280600381526020017f736574000000000000000000000000000000000000000000000000000000000081525060405180602001604052805f8152506135fe86614fb3565b6152ec565b5b505050565b5f601b601f81111561361e5761361d616dba565b5b82601f81111561363157613630616dba565b5b14806136615750601a601f81111561364c5761364b616dba565b5b82601f81111561365f5761365e616dba565b5b145b9050919050565b60038151146136b257805160036040517f9a84351c0000000000000000000000000000000000000000000000000000000081526004016136a99291906177cf565b60405180910390fd5b5f6136f4826002815181106136ca576136c961700d565b5b6020026020010151836001815181106136e6576136e561700d565b5b602002602001015118613837565b14613734576040517f52b50ae100000000000000000000000000000000000000000000000000000000815260040161372b90617809565b60405180910390fd5b5f613758825f8151811061374b5761374a61700d565b5b60200260200101516153ca565b90505f5f821860ff16146137a557805f6040517f884a0e9d00000000000000000000000000000000000000000000000000000000815260040161379c929190617836565b60405180910390fd5b5050565b5f600c601f8111156137be576137bd616dba565b5b82601f8111156137d1576137d0616dba565b5b14806138015750601e601f8111156137ec576137eb616dba565b5b82601f8111156137ff576137fe616dba565b5b145b8061383057506002601f81111561381b5761381a616dba565b5b82601f81111561382e5761382d616dba565b5b145b9050919050565b5f8160ff80166008600160ff8016901c60ff16901b17169050919050565b5f60ff801682165f0b9050919050565b5f5f90505b81518160ff1610156138af5761389c828260ff168151811061388f5761388e61700d565b5b6020026020010151611d97565b80806138a79061739d565b91505061386a565b5050565b6138bc836153e6565b613a1c576138c9836154a3565b1561396f575f5f90505b81518160ff161015613969575f613906838360ff16815181106138f9576138f861700d565b5b60200260200101516153ca565b90505f6007821860ff1603613955578360076040517f91b4b37800000000000000000000000000000000000000000000000000000000815260040161394c92919061785d565b60405180910390fd5b5080806139619061739d565b9150506138d3565b50613a1b565b5f5f90505b81518160ff161015613a19575f6139a7838360ff168151811061399a5761399961700d565b5b60200260200101516153ca565b90505f6007821860ff1614806139c157505f5f821860ff16145b15613a055783816040517f91b4b3780000000000000000000000000000000000000000000000000000000081526004016139fc92919061785d565b60405180910390fd5b508080613a119061739d565b915050613974565b505b5b505050565b60605f602067ffffffffffffffff811115613a3f57613a3e616187565b5b6040519080825280601f01601f191660200182016040528015613a715781602001600182028036833780820191505090505b50905082602082015280915050919050565b5f6013601f811115613a9857613a97616dba565b5b83601f811115613aab57613aaa616dba565b5b1480613adb57506014601f811115613ac657613ac5616dba565b5b83601f811115613ad957613ad8616dba565b5b145b80613b0a57506012601f811115613af557613af4616dba565b5b83601f811115613b0857613b07616dba565b5b145b80613b3957506015601f811115613b2457613b23616dba565b5b83601f811115613b3757613b36616dba565b5b145b80613b6857506018601f811115613b5357613b52616dba565b5b83601f811115613b6657613b65616dba565b5b145b80613b9757506019601f811115613b8257613b81616dba565b5b83601f811115613b9557613b94616dba565b5b145b15613ba4575f9050613ba8565b8190505b92915050565b5f613bc183613bbc84611f2c565b615560565b905092915050565b613bd482601b613bae565b15613c4d57613bf283600143613bea9190617280565b405f1c611f0e565b613c486040518060400160405280600a81526020017f4648452e72616e646f6d0000000000000000000000000000000000000000000081525060405180602001604052805f815250613c4386614fb3565b6152ec565b613e2b565b613c58826002613bae565b15613cc457613c6f83613c6a83611e86565b611f0e565b613cbf6040518060400160405280600881526020017f4648452e63617374000000000000000000000000000000000000000000000000815250613cb183614fb3565b613cba86614fb3565b6152ec565b613e2b565b613ccf82600c613bae565b15613d44575f6001613ce083611e86565b149050613cee8482156155b8565b613d3e6040518060400160405280600781526020017f4648452e6e6f7400000000000000000000000000000000000000000000000000815250613d3084614fb3565b613d3987614fb3565b6152ec565b50613e2b565b613d4f82601e613bae565b15613dee57613d7083613d6183611e86565b613d6a84611e86565b02611f0e565b613de96040518060400160405280600a81526020017f4648452e73717561726500000000000000000000000000000000000000000000815250613db283614fb3565b613dbb84614fb3565b604051602001613dcc9291906178b1565b604051602081830303815290604052613de486614fb3565b6152ec565b613e2b565b816040517fd952ce7c000000000000000000000000000000000000000000000000000000008152600401613e2291906168bd565b60405180910390fd5b505050565b613e3b836007613bae565b15613eda57613e5c84613e4d83611e86565b613e5685611e86565b03611f0e565b613ed56040518060400160405280600781526020017f4648452e73756200000000000000000000000000000000000000000000000000815250613e9e84614fb3565b613ea784614fb3565b604051602001613eb8929190617909565b604051602081830303815290604052613ed087614fb3565b6152ec565b614c56565b613ee5836008613bae565b15613f8457613f0684613ef783611e86565b613f0085611e86565b01611f0e565b613f7f6040518060400160405280600781526020017f4648452e61646400000000000000000000000000000000000000000000000000815250613f4884614fb3565b613f5184614fb3565b604051602001613f62929190617961565b604051602081830303815290604052613f7a87614fb3565b6152ec565b614c56565b613f8f836009613bae565b1561402e57613fb084613fa183611e86565b613faa85611e86565b18611f0e565b6140296040518060400160405280600781526020017f4648452e786f7200000000000000000000000000000000000000000000000000815250613ff284614fb3565b613ffb84614fb3565b60405160200161400c9291906179b9565b60405160208183030381529060405261402487614fb3565b6152ec565b614c56565b61403983600a613bae565b156140d85761405a8461404b83611e86565b61405485611e86565b16611f0e565b6140d36040518060400160405280600781526020017f4648452e616e640000000000000000000000000000000000000000000000000081525061409c84614fb3565b6140a584614fb3565b6040516020016140b6929190617a11565b6040516020818303038152906040526140ce87614fb3565b6152ec565b614c56565b6140e383600b613bae565b1561418257614104846140f583611e86565b6140fe85611e86565b17611f0e565b61417d6040518060400160405280600681526020017f4648452e6f72000000000000000000000000000000000000000000000000000081525061414684614fb3565b61414f84614fb3565b604051602001614160929190617a69565b60405160208183030381529060405261417887614fb3565b6152ec565b614c56565b61418d83600d613bae565b15614276575f61419c82611e86565b90505f81036141d4576141cf857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611f0e565b6141f7565b6141f685826141e286611e86565b816141f0576141ef616cc2565b5b04611f0e565b5b6142706040518060400160405280600781526020017f4648452e6469760000000000000000000000000000000000000000000000000081525061423985614fb3565b61424285614fb3565b604051602001614253929190617ac1565b60405160208183030381529060405261426b88614fb3565b6152ec565b50614c56565b61428183600e613bae565b1561432e576142b08461429383611e86565b61429c85611e86565b816142aa576142a9616cc2565b5b06611f0e565b6143296040518060400160405280600781526020017f4648452e72656d000000000000000000000000000000000000000000000000008152506142f284614fb3565b6142fb84614fb3565b60405160200161430c929190617b19565b60405160208183030381529060405261432487614fb3565b6152ec565b614c56565b61433983600f613bae565b156143d85761435a8461434b83611e86565b61435485611e86565b02611f0e565b6143d36040518060400160405280600781526020017f4648452e6d756c0000000000000000000000000000000000000000000000000081525061439c84614fb3565b6143a584614fb3565b6040516020016143b69291906178b1565b6040516020818303038152906040526143ce87614fb3565b6152ec565b614c56565b6143e3836010613bae565b1561448357614405846143f583611e86565b6143fe85611e86565b901b611f0e565b61447e6040518060400160405280600781526020017f4648452e73686c0000000000000000000000000000000000000000000000000081525061444784614fb3565b61445084614fb3565b604051602001614461929190617b71565b60405160208183030381529060405261447987614fb3565b6152ec565b614c56565b61448e836011613bae565b1561452e576144b0846144a083611e86565b6144a985611e86565b901c611f0e565b6145296040518060400160405280600781526020017f4648452e736872000000000000000000000000000000000000000000000000008152506144f284614fb3565b6144fb84614fb3565b60405160200161450c929190617bc9565b60405160208183030381529060405261452487614fb3565b6152ec565b614c56565b614539836012613bae565b156145d95761455b8461454b83611e86565b61455485611e86565b10156155b8565b6145d46040518060400160405280600781526020017f4648452e6774650000000000000000000000000000000000000000000000000081525061459d84614fb3565b6145a684614fb3565b6040516020016145b7929190617c21565b6040516020818303038152906040526145cf87614fb3565b6152ec565b614c56565b6145e4836013613bae565b1561468457614606846145f683611e86565b6145ff85611e86565b11156155b8565b61467f6040518060400160405280600781526020017f4648452e6c74650000000000000000000000000000000000000000000000000081525061464884614fb3565b61465184614fb3565b604051602001614662929190617c79565b60405160208183030381529060405261467a87614fb3565b6152ec565b614c56565b61468f836014613bae565b1561472e576146b0846146a183611e86565b6146aa85611e86565b106155b8565b6147296040518060400160405280600681526020017f4648452e6c7400000000000000000000000000000000000000000000000000008152506146f284614fb3565b6146fb84614fb3565b60405160200161470c929190617cd1565b60405160208183030381529060405261472487614fb3565b6152ec565b614c56565b614739836015613bae565b156147d85761475a8461474b83611e86565b61475485611e86565b116155b8565b6147d36040518060400160405280600681526020017f4648452e6774000000000000000000000000000000000000000000000000000081525061479c84614fb3565b6147a584614fb3565b6040516020016147b6929190617d29565b6040516020818303038152906040526147ce87614fb3565b6152ec565b614c56565b6147e3836016613bae565b156148a3575f6147f282611e86565b6147fb84611e86565b1061480e5761480982611e86565b614818565b61481783611e86565b5b90506148248582611f0e565b61489d6040518060400160405280600781526020017f4648452e6d696e0000000000000000000000000000000000000000000000000081525061486685614fb3565b61486f85614fb3565b604051602001614880929190617dcd565b60405160208183030381529060405261489888614fb3565b6152ec565b50614c56565b6148ae836017613bae565b1561496e575f6148bd82611e86565b6148c684611e86565b116148d9576148d482611e86565b6148e3565b6148e283611e86565b5b90506148ef8582611f0e565b6149686040518060400160405280600781526020017f4648452e6d61780000000000000000000000000000000000000000000000000081525061493185614fb3565b61493a85614fb3565b60405160200161494b929190617e43565b60405160208183030381529060405261496388614fb3565b6152ec565b50614c56565b614979836018613bae565b15614a185761499a8461498b83611e86565b61499485611e86565b146155b8565b614a136040518060400160405280600681526020017f4648452e657100000000000000000000000000000000000000000000000000008152506149dc84614fb3565b6149e584614fb3565b6040516020016149f6929190617eb9565b604051602081830303815290604052614a0e87614fb3565b6152ec565b614c56565b614a23836019613bae565b15614ac357614a4584614a3583611e86565b614a3e85611e86565b14156155b8565b614abe6040518060400160405280600681526020017f4648452e6e650000000000000000000000000000000000000000000000000000815250614a8784614fb3565b614a9084614fb3565b604051602001614aa1929190617f11565b604051602081830303815290604052614ab987614fb3565b6152ec565b614c56565b614ace83601c613bae565b15614b6e57614af084614ae083611e86565b614ae985611e86565b901b611f0e565b614b696040518060400160405280600781526020017f4648452e726f6c00000000000000000000000000000000000000000000000000815250614b3284614fb3565b614b3b84614fb3565b604051602001614b4c929190617b71565b604051602081830303815290604052614b6487614fb3565b6152ec565b614c56565b614b7983601d613bae565b15614c1957614b9b84614b8b83611e86565b614b9485611e86565b901c611f0e565b614c146040518060400160405280600781526020017f4648452e726f7200000000000000000000000000000000000000000000000000815250614bdd84614fb3565b614be684614fb3565b604051602001614bf7929190617bc9565b604051602081830303815290604052614c0f87614fb3565b6152ec565b614c56565b826040517fcef60885000000000000000000000000000000000000000000000000000000008152600401614c4d91906168bd565b60405180910390fd5b50505050565b614c6784601a613bae565b15614cf657614c768584611f0e565b614cf1614c8a614c85876155d6565b611ab6565b604051602001614c9a9190617f69565b604051602081830303815290604052614cba614cb5886155d6565b611ab6565b614cc386615882565b604051602001614cd4929190617fb4565b604051602081830303815290604052614cec88614fb3565b6152ec565b614dfc565b614d01846004613bae565b15614dbf57614d37856001614d1586611e86565b14614d2857614d2383611e86565b614d32565b614d3184611e86565b5b611f0e565b614dba6040518060400160405280600a81526020017f4648452e73656c65637400000000000000000000000000000000000000000000815250614d7985614fb3565b614d8285614fb3565b614d8b85614fb3565b604051602001614d9d93929190618041565b604051602081830303815290604052614db588614fb3565b6152ec565b614dfc565b836040517f5e45fa01000000000000000000000000000000000000000000000000000000008152600401614df391906168bd565b60405180910390fd5b5050505050565b5f5f5f5f614e11868661594c565b925092509250614e2182826159a1565b82935050505092915050565b5f600160ff8016901c60ff168260ff161683614e49575f614e63565b600160ff8016901c60ff1660ff8016614e629190617280565b5b17905092915050565b60605f84905083815110614e835784915050614fac565b5f8467ffffffffffffffff811115614e9e57614e9d616187565b5b6040519080825280601f01601f191660200182016040528015614ed05781602001600182028036833780820191505090505b5090505f5f90505b8251811015614f4d57828181518110614ef457614ef361700d565b5b602001015160f81c60f81b828281518110614f1257614f1161700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050614ed8565b5b85811015614fa55784828281518110614f6a57614f6961700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053508080600101915050614f4e565b8193505050505b9392505050565b60605f614fbf83615882565b90505f8151905060068111614fd857819250505061514a565b5f60025f8681526020019081526020015f205f9054906101000a900460ff1690505f60015f8781526020019081526020015f205490505f61501887615b03565b90505f8161502e5761502983615882565b6150a9565b60018314615071576040518060400160405280600581526020017f66616c73650000000000000000000000000000000000000000000000000000008152506150a8565b6040518060400160405280600481526020017f74727565000000000000000000000000000000000000000000000000000000008152505b5b90505f6150b5896155d6565b6150c1885f60046112ee565b6150d98960048a6150d29190617280565b60046112ee565b87615119576040518060400160405280600581526020017f454d50545900000000000000000000000000000000000000000000000000000081525061511b565b845b60405160200161512e9493929190618101565b6040516020818303038152906040529050809750505050505050505b919050565b60606151758273ffffffffffffffffffffffffffffffffffffffff16601460ff16615b20565b9050919050565b6152128160405160240161519091906168bd565b6040516020818303038152906040527f41304fac000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050615d5e565b50565b5f5f61522083615d78565b90505f60ff168160ff16036152395760089150506152e7565b600260ff168160ff16036152515760089150506152e7565b600360ff168160ff16036152695760109150506152e7565b600460ff168160ff16036152815760209150506152e7565b600560ff168160ff16036152995760409150506152e7565b600660ff168160ff16036152b15760809150506152e7565b600860ff168160ff16036152ca576101009150506152e7565b600760ff168160ff16036152e25760a09150506152e7565b5f9150505b919050565b5f5f9054906101000a900460ff16156153c5576153c46040518060400160405280600481526020017fe2949c20000000000000000000000000000000000000000000000000000000008152506153648560107f2000000000000000000000000000000000000000000000000000000000000000614e6c565b6040518060400160405280600381526020017f207c20000000000000000000000000000000000000000000000000000000000081525085856040516020016153b09594939291906181a0565b60405160208183030381529060405261517c565b5b505050565b5f600880600160ff8016901c60ff16901b8316901c9050919050565b5f6004601f8111156153fb576153fa616dba565b5b82601f81111561540e5761540d616dba565b5b148061543e57506018601f81111561542957615428616dba565b5b82601f81111561543c5761543b616dba565b5b145b8061546d57506019601f81111561545857615457616dba565b5b82601f81111561546b5761546a616dba565b5b145b8061549c57506002601f81111561548757615486616dba565b5b82601f81111561549a57615499616dba565b5b145b9050919050565b5f6009601f8111156154b8576154b7616dba565b5b82601f8111156154cb576154ca616dba565b5b14806154fb5750600a601f8111156154e6576154e5616dba565b5b82601f8111156154f9576154f8616dba565b5b145b8061552a5750600b601f81111561551557615514616dba565b5b82601f81111561552857615527616dba565b5b145b806155595750600c601f81111561554457615543616dba565b5b82601f81111561555757615556616dba565b5b145b9050919050565b5f8160405160200161557291906181f9565b604051602081830303815290604052805190602001208360405160200161559991906181f9565b6040516020818303038152906040528051906020012014905092915050565b6155d282826155c7575f6155ca565b60015b60ff16611f0e565b5050565b60605f6155e283615d78565b90505f60ff168160ff160361562f576040518060400160405280600581526020017f65626f6f6c00000000000000000000000000000000000000000000000000000081525091505061587d565b600260ff168160ff160361567b576040518060400160405280600681526020017f6575696e7438000000000000000000000000000000000000000000000000000081525091505061587d565b600360ff168160ff16036156c7576040518060400160405280600781526020017f6575696e7431360000000000000000000000000000000000000000000000000081525091505061587d565b600460ff168160ff1603615713576040518060400160405280600781526020017f6575696e7433320000000000000000000000000000000000000000000000000081525091505061587d565b600560ff168160ff160361575f576040518060400160405280600781526020017f6575696e7436340000000000000000000000000000000000000000000000000081525091505061587d565b600660ff168160ff16036157ab576040518060400160405280600881526020017f6575696e7431323800000000000000000000000000000000000000000000000081525091505061587d565b600860ff168160ff16036157f7576040518060400160405280600881526020017f6575696e7432353600000000000000000000000000000000000000000000000081525091505061587d565b600760ff168160ff1603615843576040518060400160405280600881526020017f656164647265737300000000000000000000000000000000000000000000000081525091505061587d565b6040518060400160405280600781526020017f756e6b6e6f776e000000000000000000000000000000000000000000000000008152509150505b919050565b60605f600161589084615d94565b0190505f8167ffffffffffffffff8111156158ae576158ad616187565b5b6040519080825280601f01601f1916602001820160405280156158e05781602001600182028036833780820191505090505b5090505f82602083010190505b600115615941578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161593657615935616cc2565b5b0494505f85036158ed575b819350505050919050565b5f5f5f604184510361598c575f5f5f602087015192506040870151915060608701515f1a905061597e88828585615ee5565b95509550955050505061599a565b5f600285515f1b9250925092505b9250925092565b5f60038111156159b4576159b3616dba565b5b8260038111156159c7576159c6616dba565b5b0315615aff57600160038111156159e1576159e0616dba565b5b8260038111156159f4576159f3616dba565b5b03615a2b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60026003811115615a3f57615a3e616dba565b5b826003811115615a5257615a51616dba565b5b03615a9657805f1c6040517ffce698f7000000000000000000000000000000000000000000000000000000008152600401615a8d919061636e565b60405180910390fd5b600380811115615aa957615aa8616dba565b5b826003811115615abc57615abb616dba565b5b03615afe57806040517fd78bce0c000000000000000000000000000000000000000000000000000000008152600401615af5919061821e565b60405180910390fd5b5b5050565b5f5f615b0e83615d78565b90505f5f821860ff1614915050919050565b60605f8390505f6002846002615b369190618237565b615b409190616d4c565b67ffffffffffffffff811115615b5957615b58616187565b5b6040519080825280601f01601f191660200182016040528015615b8b5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110615bc257615bc161700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110615c2557615c2461700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001856002615c639190618237565b615c6d9190616d4c565b90505b6001811115615d0c577f3031323334353637383961626364656600000000000000000000000000000000600f841660108110615caf57615cae61700d565b5b1a60f81b828281518110615cc657615cc561700d565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600483901c925080615d0590618278565b9050615c70565b505f8214615d535784846040517fe22e27eb000000000000000000000000000000000000000000000000000000008152600401615d4a92919061829f565b60405180910390fd5b809250505092915050565b615d7581615d6d615fcc615feb565b63ffffffff16565b50565b5f600880600160ff8016901c60ff16901b8316901c9050919050565b5f5f5f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615df0577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381615de657615de5616cc2565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310615e2d576d04ee2d6d415b85acef81000000008381615e2357615e22616cc2565b5b0492506020810190505b662386f26fc100008310615e5c57662386f26fc100008381615e5257615e51616cc2565b5b0492506010810190505b6305f5e1008310615e85576305f5e1008381615e7b57615e7a616cc2565b5b0492506008810190505b6127108310615eaa576127108381615ea057615e9f616cc2565b5b0492506004810190505b60648310615ecd5760648381615ec357615ec2616cc2565b5b0492506002810190505b600a8310615edc576001810190505b80915050919050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115615f21575f600385925092509250615fc2565b5f6001888888886040515f8152602001604052604051615f4494939291906182c6565b6020604051602081039080840390855afa158015615f64573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603615fb5575f60015f5f1b93509350935050615fc2565b805f5f5f1b935093509350505b9450945094915050565b5f6a636f6e736f6c652e6c6f6790505f5f835160208501845afa505050565b615ff6819050919050565b615ffe618309565b565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b61602381616011565b811461602d575f5ffd5b50565b5f8135905061603e8161601a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61606d82616044565b9050919050565b61607d81616063565b8114616087575f5ffd5b50565b5f8135905061609881616074565b92915050565b5f5f604083850312156160b4576160b3616009565b5b5f6160c185828601616030565b92505060206160d28582860161608a565b9150509250929050565b5f5f604083850312156160f2576160f1616009565b5b5f6160ff85828601616030565b925050602061611085828601616030565b9150509250929050565b5f60ff82169050919050565b61612f8161611a565b8114616139575f5ffd5b50565b5f8135905061614a81616126565b92915050565b6020811061615c575f5ffd5b50565b5f8135905061616d81616150565b92915050565b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6161bd82616177565b810181811067ffffffffffffffff821117156161dc576161db616187565b5b80604052505050565b5f6161ee616000565b90506161fa82826161b4565b919050565b5f67ffffffffffffffff82111561621957616218616187565b5b602082029050602081019050919050565b5f5ffd5b5f61624061623b846161ff565b6161e5565b905080838252602082019050602084028301858111156162635761626261622a565b5b835b8181101561628c57806162788882616030565b845260208401935050602081019050616265565b5050509392505050565b5f82601f8301126162aa576162a9616173565b5b81356162ba84826020860161622e565b91505092915050565b5f5f5f5f608085870312156162db576162da616009565b5b5f6162e88782880161613c565b94505060206162f98782880161615f565b935050604085013567ffffffffffffffff81111561631a5761631961600d565b5b61632687828801616296565b925050606085013567ffffffffffffffff8111156163475761634661600d565b5b61635387828801616296565b91505092959194509250565b61636881616011565b82525050565b5f6020820190506163815f83018461635f565b92915050565b5f6020828403121561639c5761639b616009565b5b5f6163a984828501616030565b91505092915050565b5f8115159050919050565b6163c6816163b2565b82525050565b5f6020820190506163df5f8301846163bd565b92915050565b6163ee81616063565b82525050565b5f6020820190506164075f8301846163e5565b92915050565b5f8160030b9050919050565b6164228161640d565b811461642c575f5ffd5b50565b5f8135905061643d81616419565b92915050565b5f5f6040838503121561645957616458616009565b5b5f6164668582860161642f565b92505060206164778582860161642f565b9150509250929050565b5f5ffd5b5f5ffd5b5f5ffd5b5f67ffffffffffffffff8211156164a7576164a6616187565b5b6164b082616177565b9050602081019050919050565b828183375f83830152505050565b5f6164dd6164d88461648d565b6161e5565b9050828152602081018484840111156164f9576164f8616489565b5b6165048482856164bd565b509392505050565b5f82601f8301126165205761651f616173565b5b81356165308482602086016164cb565b91505092915050565b5f6080828403121561654e5761654d616481565b5b61655860806161e5565b90505f61656784828501616030565b5f83015250602061657a8482850161613c565b602083015250604061658e8482850161613c565b604083015250606082013567ffffffffffffffff8111156165b2576165b1616485565b5b6165be8482850161650c565b60608301525092915050565b5f5f604083850312156165e0576165df616009565b5b5f83013567ffffffffffffffff8111156165fd576165fc61600d565b5b61660985828601616539565b925050602061661a8582860161608a565b9150509250929050565b5f6040820190506166375f83018561635f565b61664460208301846163bd565b9392505050565b5f67ffffffffffffffff82111561666557616664616187565b5b61666e82616177565b9050602081019050919050565b5f61668d6166888461664b565b6161e5565b9050828152602081018484840111156166a9576166a8616489565b5b6166b48482856164bd565b509392505050565b5f82601f8301126166d0576166cf616173565b5b81356166e084826020860161667b565b91505092915050565b5f5f5f60608486031215616700576166ff616009565b5b5f61670d86828701616030565b935050602084013567ffffffffffffffff81111561672e5761672d61600d565b5b61673a868287016166bc565b925050604084013567ffffffffffffffff81111561675b5761675a61600d565b5b616767868287016166bc565b9150509250925092565b5f6020828403121561678657616785616009565b5b5f6167938482850161642f565b91505092915050565b6167a5816163b2565b81146167af575f5ffd5b50565b5f813590506167c08161679c565b92915050565b5f602082840312156167db576167da616009565b5b5f6167e8848285016167b2565b91505092915050565b5f5f5f6060848603121561680857616807616009565b5b5f84013567ffffffffffffffff8111156168255761682461600d565b5b616831868287016166bc565b935050602061684286828701616030565b925050604061685386828701616030565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61688f8261685d565b6168998185616867565b93506168a9818560208601616877565b6168b281616177565b840191505092915050565b5f6020820190508181035f8301526168d58184616885565b905092915050565b5f5ffd5b5f5f83601f8401126168f6576168f5616173565b5b8235905067ffffffffffffffff811115616913576169126168dd565b5b60208301915083602082028301111561692f5761692e61622a565b5b9250929050565b5f5f5f5f6060858703121561694e5761694d616009565b5b5f61695b87828801616030565b945050602061696c87828801616030565b935050604085013567ffffffffffffffff81111561698d5761698c61600d565b5b616999878288016168e1565b925092505092959194509250565b5f5f5f606084860312156169be576169bd616009565b5b5f84013567ffffffffffffffff8111156169db576169da61600d565b5b6169e7868287016166bc565b93505060206169f886828701616030565b9250506040616a098682870161608a565b9150509250925092565b5f60208284031215616a2857616a27616009565b5b5f616a358482850161608a565b91505092915050565b5f67ffffffffffffffff82169050919050565b616a5a81616a3e565b8114616a64575f5ffd5b50565b5f81359050616a7581616a51565b92915050565b5f819050919050565b616a8d81616a7b565b8114616a97575f5ffd5b50565b5f81359050616aa881616a84565b92915050565b5f6101008284031215616ac457616ac3616481565b5b616acf6101006161e5565b90505f616ade8482850161608a565b5f830152506020616af184828501616a67565b6020830152506040616b058482850161608a565b6040830152506060616b1984828501616030565b6060830152506080616b2d8482850161608a565b60808301525060a0616b4184828501616a9a565b60a08301525060c082013567ffffffffffffffff811115616b6557616b64616485565b5b616b718482850161650c565b60c08301525060e082013567ffffffffffffffff811115616b9557616b94616485565b5b616ba18482850161650c565b60e08301525092915050565b5f5f60408385031215616bc357616bc2616009565b5b5f83013567ffffffffffffffff811115616be057616bdf61600d565b5b616bec85828601616aae565b9250506020616bfd85828601616030565b9150509250929050565b5f60208284031215616c1c57616c1b616009565b5b5f82013567ffffffffffffffff811115616c3957616c3861600d565b5b616c45848285016166bc565b91505092915050565b5f819050919050565b5f616c71616c6c616c6784616044565b616c4e565b616044565b9050919050565b5f616c8282616c57565b9050919050565b5f616c9382616c78565b9050919050565b616ca381616c89565b82525050565b5f602082019050616cbc5f830184616c9a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f616cf982616011565b9150616d0483616011565b925082616d1457616d13616cc2565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f616d5682616011565b9150616d6183616011565b9250828201905080821115616d7957616d78616d1f565b5b92915050565b5f616d8982616a3e565b9150616d9483616a3e565b9250828201905067ffffffffffffffff811115616db457616db3616d1f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f819050919050565b5f616e0a616e05616e0084616de7565b616c4e565b616011565b9050919050565b616e1a81616df0565b82525050565b5f6060820190508181035f830152616e388186616885565b9050616e47602083018561635f565b616e546040830184616e11565b949350505050565b5f606082019050616e6f5f83018661635f565b616e7c60208301856163e5565b616e8960408301846163e5565b949350505050565b616e9a8161640d565b82525050565b5f606082019050616eb35f830186616e91565b616ec06020830185616e91565b616ecd6040830184616e91565b949350505050565b5f604082019050616ee85f8301856163e5565b616ef560208301846163e5565b9392505050565b5f604082019050616f0f5f83018561635f565b616f1c60208301846163e5565b9392505050565b5f606082019050616f365f83018661635f565b8181036020830152616f488185616885565b90508181036040830152616f5c8184616885565b9050949350505050565b5f81519050616f748161679c565b92915050565b5f60208284031215616f8f57616f8e616009565b5b5f616f9c84828501616f66565b91505092915050565b7f4f7574206f6620626f756e6473000000000000000000000000000000000000005f82015250565b5f616fd9600d83616867565b9150616fe482616fa5565b602082019050919050565b5f6020820190508181035f83015261700681616fcd565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61706c81616011565b82525050565b5f61707d8383617063565b60208301905092915050565b5f602082019050919050565b5f61709f8261703a565b6170a98185617044565b93506170b483617054565b805f5b838110156170e45781516170cb8882617072565b97506170d683617089565b9250506001810190506170b7565b5085935050505092915050565b5f6040820190508181035f8301526171098185617095565b905061711860208301846163e5565b9392505050565b61712881616063565b82525050565b61713781616a3e565b82525050565b61714681616a7b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f6171708261714c565b61717a8185617156565b935061718a818560208601616877565b61719381616177565b840191505092915050565b5f61010083015f8301516171b45f86018261711f565b5060208301516171c7602086018261712e565b5060408301516171da604086018261711f565b5060608301516171ed6060860182617063565b506080830151617200608086018261711f565b5060a083015161721360a086018261713d565b5060c083015184820360c086015261722b8282617166565b91505060e083015184820360e08601526172458282617166565b9150508091505092915050565b5f6040820190508181035f83015261726a818561719e565b9050617279602083018461635f565b9392505050565b5f61728a82616011565b915061729583616011565b92508282039050818111156172ad576172ac616d1f565b5b92915050565b5f819050919050565b5f6172d66172d16172cc846172b3565b616c4e565b616011565b9050919050565b6172e6816172bc565b82525050565b5f6060820190508181035f8301526173048186616885565b9050617313602083018561635f565b61732060408301846172dd565b949350505050565b5f819050919050565b5f61734b61734661734184617328565b616c4e565b616011565b9050919050565b61735b81617331565b82525050565b5f6060820190508181035f8301526173798186616885565b9050617388602083018561635f565b6173956040830184617352565b949350505050565b5f6173a78261611a565b915060ff82036173ba576173b9616d1f565b5b600182019050919050565b5f81905092915050565b5f6173d98261714c565b6173e381856173c5565b93506173f3818560208601616877565b80840191505092915050565b5f61740a82856173cf565b915061741682846173cf565b91508190509392505050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b5f819050919050565b61746761746282617422565b61744d565b82525050565b5f61747882856173cf565b91506174848284617456565b6001820191508190509392505050565b5f819050919050565b5f6174b76174b26174ad84617494565b616c4e565b616011565b9050919050565b6174c78161749d565b82525050565b5f60a0820190506174e05f83018861635f565b81810360208301526174f28187616885565b9050617501604083018661635f565b61750e60608301856174be565b61751b60808301846174be565b9695505050505050565b5f60a0820190506175385f83018861635f565b818103602083015261754a8187616885565b9050617559604083018661635f565b617566606083018561635f565b61757360808301846174be565b9695505050505050565b5f60a0820190506175905f83018861635f565b81810360208301526175a28187616885565b90506175b1604083018661635f565b6175be606083018561635f565b6175cb608083018461635f565b9695505050505050565b5f819050919050565b6175ef6175ea82616011565b6175d5565b82525050565b5f8160f81b9050919050565b5f61760b826175f5565b9050919050565b61762361761e8261611a565b617601565b82525050565b5f8160601b9050919050565b5f61763f82617629565b9050919050565b5f61765082617635565b9050919050565b61766861766382616063565b617646565b82525050565b5f61767982886175de565b6020820191506176898287617612565b6001820191506176998286617612565b6001820191506176a98285617657565b6014820191506176b982846175de565b6020820191508190509695505050505050565b5f81905092915050565b5f6176e08261685d565b6176ea81856176cc565b93506176fa818560208601616877565b80840191505092915050565b7f202d3e2000000000000000000000000000000000000000000000000000000000815250565b5f61773782886176d6565b915061774382876176d6565b915061774f82866176d6565b915061775b82856176d6565b915061776682617706565b60048201915061777682846176d6565b91508190509695505050505050565b7f73656c65637400000000000000000000000000000000000000000000000000005f82015250565b5f6177b9600683616867565b91506177c482617785565b602082019050919050565b5f6060820190508181035f8301526177e6816177ad565b90506177f5602083018561635f565b6178026040830184616e11565b9392505050565b5f6020820190508181035f830152617820816177ad565b9050919050565b6178308161611a565b82525050565b5f6040820190506178495f830185617827565b6178566020830184617827565b9392505050565b5f6040820190508181035f8301526178758185616885565b90506178846020830184617827565b9392505050565b7f202a200000000000000000000000000000000000000000000000000000000000815250565b5f6178bc82856176d6565b91506178c78261788b565b6003820191506178d782846176d6565b91508190509392505050565b7f202d200000000000000000000000000000000000000000000000000000000000815250565b5f61791482856176d6565b915061791f826178e3565b60038201915061792f82846176d6565b91508190509392505050565b7f202b200000000000000000000000000000000000000000000000000000000000815250565b5f61796c82856176d6565b91506179778261793b565b60038201915061798782846176d6565b91508190509392505050565b7f205e200000000000000000000000000000000000000000000000000000000000815250565b5f6179c482856176d6565b91506179cf82617993565b6003820191506179df82846176d6565b91508190509392505050565b7f2026200000000000000000000000000000000000000000000000000000000000815250565b5f617a1c82856176d6565b9150617a27826179eb565b600382019150617a3782846176d6565b91508190509392505050565b7f207c200000000000000000000000000000000000000000000000000000000000815250565b5f617a7482856176d6565b9150617a7f82617a43565b600382019150617a8f82846176d6565b91508190509392505050565b7f202f200000000000000000000000000000000000000000000000000000000000815250565b5f617acc82856176d6565b9150617ad782617a9b565b600382019150617ae782846176d6565b91508190509392505050565b7f2025200000000000000000000000000000000000000000000000000000000000815250565b5f617b2482856176d6565b9150617b2f82617af3565b600382019150617b3f82846176d6565b91508190509392505050565b7f203c3c2000000000000000000000000000000000000000000000000000000000815250565b5f617b7c82856176d6565b9150617b8782617b4b565b600482019150617b9782846176d6565b91508190509392505050565b7f203e3e2000000000000000000000000000000000000000000000000000000000815250565b5f617bd482856176d6565b9150617bdf82617ba3565b600482019150617bef82846176d6565b91508190509392505050565b7f203e3d2000000000000000000000000000000000000000000000000000000000815250565b5f617c2c82856176d6565b9150617c3782617bfb565b600482019150617c4782846176d6565b91508190509392505050565b7f203c3d2000000000000000000000000000000000000000000000000000000000815250565b5f617c8482856176d6565b9150617c8f82617c53565b600482019150617c9f82846176d6565b91508190509392505050565b7f203c200000000000000000000000000000000000000000000000000000000000815250565b5f617cdc82856176d6565b9150617ce782617cab565b600382019150617cf782846176d6565b91508190509392505050565b7f203e200000000000000000000000000000000000000000000000000000000000815250565b5f617d3482856176d6565b9150617d3f82617d03565b600382019150617d4f82846176d6565b91508190509392505050565b7f6d696e2800000000000000000000000000000000000000000000000000000000815250565b7f2c20000000000000000000000000000000000000000000000000000000000000815250565b7f2900000000000000000000000000000000000000000000000000000000000000815250565b5f617dd782617d5b565b600482019150617de782856176d6565b9150617df282617d81565b600282019150617e0282846176d6565b9150617e0d82617da7565b6001820191508190509392505050565b7f6d61782800000000000000000000000000000000000000000000000000000000815250565b5f617e4d82617e1d565b600482019150617e5d82856176d6565b9150617e6882617d81565b600282019150617e7882846176d6565b9150617e8382617da7565b6001820191508190509392505050565b7f203d3d2000000000000000000000000000000000000000000000000000000000815250565b5f617ec482856176d6565b9150617ecf82617e93565b600482019150617edf82846176d6565b91508190509392505050565b7f20213d2000000000000000000000000000000000000000000000000000000000815250565b5f617f1c82856176d6565b9150617f2782617eeb565b600482019150617f3782846176d6565b91508190509392505050565b7f4648452e61734500000000000000000000000000000000000000000000000000815250565b5f617f7382617f43565b600782019150617f8382846176d6565b915081905092915050565b7f2800000000000000000000000000000000000000000000000000000000000000815250565b5f617fbf82856176d6565b9150617fca82617f8e565b600182019150617fda82846176d6565b9150617fe582617da7565b6001820191508190509392505050565b7f203f200000000000000000000000000000000000000000000000000000000000815250565b7f203a200000000000000000000000000000000000000000000000000000000000815250565b5f61804c82866176d6565b915061805782617ff5565b60038201915061806782856176d6565b91506180728261801b565b60038201915061808282846176d6565b9150819050949350505050565b7f2e2e000000000000000000000000000000000000000000000000000000000000815250565b7f295b000000000000000000000000000000000000000000000000000000000000815250565b7f5d00000000000000000000000000000000000000000000000000000000000000815250565b5f61810c82876176d6565b915061811782617f8e565b60018201915061812782866176d6565b91506181328261808f565b60028201915061814282856176d6565b915061814d826180b5565b60028201915061815d82846176d6565b9150618168826180db565b60018201915081905095945050505050565b7f20203d3e20200000000000000000000000000000000000000000000000000000815250565b5f6181ab82886176d6565b91506181b782876176d6565b91506181c382866176d6565b91506181cf82856176d6565b91506181da8261817a565b6006820191506181ea82846176d6565b91508190509695505050505050565b5f61820482846176d6565b915081905092915050565b61821881616a7b565b82525050565b5f6020820190506182315f83018461820f565b92915050565b5f61824182616011565b915061824c83616011565b925082820261825a81616011565b9150828204841483151761827157618270616d1f565b5b5092915050565b5f61828282616011565b91505f820361829457618293616d1f565b5b600182039050919050565b5f6040820190506182b25f83018561635f565b6182bf602083018461635f565b9392505050565b5f6080820190506182d95f83018761820f565b6182e66020830186617827565b6182f3604083018561820f565b618300606083018461820f565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52605160045260245ffdfea2646970667358221220f1a21e362fdc96cf080b052bd034de2e509393b30b09196917450b9a297c45fe64736f6c63430008210033',
1028
+ } satisfies MockArtifact;