@cofhe/mock-contracts 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/index.mjs.map +1 -1
- package/package.json +9 -2
- package/src/MockACL.ts +558 -0
- package/src/MockQueryDecrypter.ts +350 -0
- package/src/MockTaskManager.ts +1026 -0
- package/src/MockZkVerifier.ts +264 -0
- package/src/TestBed.ts +286 -0
- package/src/index.ts +6 -0
- package/src/types.ts +6 -0
package/package.json
CHANGED
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cofhe/mock-contracts",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Mock smart contracts for testing CoFHE with FHE primitives locally",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"license": "MIT",
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/FhenixProtocol/cofhesdk.git",
|
|
13
|
+
"directory": "packages/mock-contracts"
|
|
14
|
+
},
|
|
10
15
|
"files": [
|
|
11
16
|
"dist/**",
|
|
17
|
+
"src/**",
|
|
12
18
|
"contracts/**/*.sol",
|
|
13
19
|
"foundry/**/*.sol",
|
|
14
20
|
"test/**/*.sol",
|
|
15
21
|
"foundry.toml",
|
|
16
|
-
"remappings.txt"
|
|
22
|
+
"remappings.txt",
|
|
23
|
+
"CHANGELOG.md"
|
|
17
24
|
],
|
|
18
25
|
"keywords": [
|
|
19
26
|
"blockchain",
|
package/src/MockACL.ts
ADDED
|
@@ -0,0 +1,558 @@
|
|
|
1
|
+
// This file is auto-generated by build-artifacts.ts
|
|
2
|
+
import { type MocksArtifact } from './index';
|
|
3
|
+
|
|
4
|
+
export const MockACLArtifact = {
|
|
5
|
+
"contractName": "MockACL",
|
|
6
|
+
"fixedAddress": "0x0000000000000000000000000000000000000400",
|
|
7
|
+
"abi": [
|
|
8
|
+
{
|
|
9
|
+
"type": "constructor",
|
|
10
|
+
"inputs": [],
|
|
11
|
+
"stateMutability": "nonpayable"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"type": "function",
|
|
15
|
+
"name": "TASK_MANAGER_ADDRESS_",
|
|
16
|
+
"inputs": [],
|
|
17
|
+
"outputs": [
|
|
18
|
+
{
|
|
19
|
+
"name": "",
|
|
20
|
+
"type": "address",
|
|
21
|
+
"internalType": "address"
|
|
22
|
+
}
|
|
23
|
+
],
|
|
24
|
+
"stateMutability": "view"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"type": "function",
|
|
28
|
+
"name": "allow",
|
|
29
|
+
"inputs": [
|
|
30
|
+
{
|
|
31
|
+
"name": "handle",
|
|
32
|
+
"type": "uint256",
|
|
33
|
+
"internalType": "uint256"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"name": "account",
|
|
37
|
+
"type": "address",
|
|
38
|
+
"internalType": "address"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "requester",
|
|
42
|
+
"type": "address",
|
|
43
|
+
"internalType": "address"
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"outputs": [],
|
|
47
|
+
"stateMutability": "nonpayable"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"type": "function",
|
|
51
|
+
"name": "allowForDecryption",
|
|
52
|
+
"inputs": [
|
|
53
|
+
{
|
|
54
|
+
"name": "handlesList",
|
|
55
|
+
"type": "uint256[]",
|
|
56
|
+
"internalType": "uint256[]"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "requester",
|
|
60
|
+
"type": "address",
|
|
61
|
+
"internalType": "address"
|
|
62
|
+
}
|
|
63
|
+
],
|
|
64
|
+
"outputs": [],
|
|
65
|
+
"stateMutability": "nonpayable"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"type": "function",
|
|
69
|
+
"name": "allowGlobal",
|
|
70
|
+
"inputs": [
|
|
71
|
+
{
|
|
72
|
+
"name": "handle",
|
|
73
|
+
"type": "uint256",
|
|
74
|
+
"internalType": "uint256"
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
"name": "requester",
|
|
78
|
+
"type": "address",
|
|
79
|
+
"internalType": "address"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
"outputs": [],
|
|
83
|
+
"stateMutability": "nonpayable"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"type": "function",
|
|
87
|
+
"name": "allowTransient",
|
|
88
|
+
"inputs": [
|
|
89
|
+
{
|
|
90
|
+
"name": "handle",
|
|
91
|
+
"type": "uint256",
|
|
92
|
+
"internalType": "uint256"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "account",
|
|
96
|
+
"type": "address",
|
|
97
|
+
"internalType": "address"
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
"name": "requester",
|
|
101
|
+
"type": "address",
|
|
102
|
+
"internalType": "address"
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"outputs": [],
|
|
106
|
+
"stateMutability": "nonpayable"
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"type": "function",
|
|
110
|
+
"name": "allowedOnBehalf",
|
|
111
|
+
"inputs": [
|
|
112
|
+
{
|
|
113
|
+
"name": "delegatee",
|
|
114
|
+
"type": "address",
|
|
115
|
+
"internalType": "address"
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "handle",
|
|
119
|
+
"type": "uint256",
|
|
120
|
+
"internalType": "uint256"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "contractAddress",
|
|
124
|
+
"type": "address",
|
|
125
|
+
"internalType": "address"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "account",
|
|
129
|
+
"type": "address",
|
|
130
|
+
"internalType": "address"
|
|
131
|
+
}
|
|
132
|
+
],
|
|
133
|
+
"outputs": [
|
|
134
|
+
{
|
|
135
|
+
"name": "",
|
|
136
|
+
"type": "bool",
|
|
137
|
+
"internalType": "bool"
|
|
138
|
+
}
|
|
139
|
+
],
|
|
140
|
+
"stateMutability": "view"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"type": "function",
|
|
144
|
+
"name": "allowedTransient",
|
|
145
|
+
"inputs": [
|
|
146
|
+
{
|
|
147
|
+
"name": "handle",
|
|
148
|
+
"type": "uint256",
|
|
149
|
+
"internalType": "uint256"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"name": "account",
|
|
153
|
+
"type": "address",
|
|
154
|
+
"internalType": "address"
|
|
155
|
+
}
|
|
156
|
+
],
|
|
157
|
+
"outputs": [
|
|
158
|
+
{
|
|
159
|
+
"name": "",
|
|
160
|
+
"type": "bool",
|
|
161
|
+
"internalType": "bool"
|
|
162
|
+
}
|
|
163
|
+
],
|
|
164
|
+
"stateMutability": "view"
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"type": "function",
|
|
168
|
+
"name": "cleanTransientStorage",
|
|
169
|
+
"inputs": [],
|
|
170
|
+
"outputs": [],
|
|
171
|
+
"stateMutability": "nonpayable"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"type": "function",
|
|
175
|
+
"name": "delegateAccount",
|
|
176
|
+
"inputs": [
|
|
177
|
+
{
|
|
178
|
+
"name": "delegatee",
|
|
179
|
+
"type": "address",
|
|
180
|
+
"internalType": "address"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"name": "delegateeContract",
|
|
184
|
+
"type": "address",
|
|
185
|
+
"internalType": "address"
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
"outputs": [],
|
|
189
|
+
"stateMutability": "nonpayable"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"type": "function",
|
|
193
|
+
"name": "eip712Domain",
|
|
194
|
+
"inputs": [],
|
|
195
|
+
"outputs": [
|
|
196
|
+
{
|
|
197
|
+
"name": "fields",
|
|
198
|
+
"type": "bytes1",
|
|
199
|
+
"internalType": "bytes1"
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "name",
|
|
203
|
+
"type": "string",
|
|
204
|
+
"internalType": "string"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"name": "version",
|
|
208
|
+
"type": "string",
|
|
209
|
+
"internalType": "string"
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
"name": "chainId",
|
|
213
|
+
"type": "uint256",
|
|
214
|
+
"internalType": "uint256"
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"name": "verifyingContract",
|
|
218
|
+
"type": "address",
|
|
219
|
+
"internalType": "address"
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"name": "salt",
|
|
223
|
+
"type": "bytes32",
|
|
224
|
+
"internalType": "bytes32"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"name": "extensions",
|
|
228
|
+
"type": "uint256[]",
|
|
229
|
+
"internalType": "uint256[]"
|
|
230
|
+
}
|
|
231
|
+
],
|
|
232
|
+
"stateMutability": "view"
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"type": "function",
|
|
236
|
+
"name": "exists",
|
|
237
|
+
"inputs": [],
|
|
238
|
+
"outputs": [
|
|
239
|
+
{
|
|
240
|
+
"name": "",
|
|
241
|
+
"type": "bool",
|
|
242
|
+
"internalType": "bool"
|
|
243
|
+
}
|
|
244
|
+
],
|
|
245
|
+
"stateMutability": "pure"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"type": "function",
|
|
249
|
+
"name": "getTaskManagerAddress",
|
|
250
|
+
"inputs": [],
|
|
251
|
+
"outputs": [
|
|
252
|
+
{
|
|
253
|
+
"name": "",
|
|
254
|
+
"type": "address",
|
|
255
|
+
"internalType": "address"
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"stateMutability": "view"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"type": "function",
|
|
262
|
+
"name": "getVersion",
|
|
263
|
+
"inputs": [],
|
|
264
|
+
"outputs": [
|
|
265
|
+
{
|
|
266
|
+
"name": "",
|
|
267
|
+
"type": "string",
|
|
268
|
+
"internalType": "string"
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"stateMutability": "pure"
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"type": "function",
|
|
275
|
+
"name": "globalAllowed",
|
|
276
|
+
"inputs": [
|
|
277
|
+
{
|
|
278
|
+
"name": "handle",
|
|
279
|
+
"type": "uint256",
|
|
280
|
+
"internalType": "uint256"
|
|
281
|
+
}
|
|
282
|
+
],
|
|
283
|
+
"outputs": [
|
|
284
|
+
{
|
|
285
|
+
"name": "",
|
|
286
|
+
"type": "bool",
|
|
287
|
+
"internalType": "bool"
|
|
288
|
+
}
|
|
289
|
+
],
|
|
290
|
+
"stateMutability": "view"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"type": "function",
|
|
294
|
+
"name": "hashTypedDataV4",
|
|
295
|
+
"inputs": [
|
|
296
|
+
{
|
|
297
|
+
"name": "structHash",
|
|
298
|
+
"type": "bytes32",
|
|
299
|
+
"internalType": "bytes32"
|
|
300
|
+
}
|
|
301
|
+
],
|
|
302
|
+
"outputs": [
|
|
303
|
+
{
|
|
304
|
+
"name": "",
|
|
305
|
+
"type": "bytes32",
|
|
306
|
+
"internalType": "bytes32"
|
|
307
|
+
}
|
|
308
|
+
],
|
|
309
|
+
"stateMutability": "view"
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"type": "function",
|
|
313
|
+
"name": "isAllowed",
|
|
314
|
+
"inputs": [
|
|
315
|
+
{
|
|
316
|
+
"name": "handle",
|
|
317
|
+
"type": "uint256",
|
|
318
|
+
"internalType": "uint256"
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"name": "account",
|
|
322
|
+
"type": "address",
|
|
323
|
+
"internalType": "address"
|
|
324
|
+
}
|
|
325
|
+
],
|
|
326
|
+
"outputs": [
|
|
327
|
+
{
|
|
328
|
+
"name": "",
|
|
329
|
+
"type": "bool",
|
|
330
|
+
"internalType": "bool"
|
|
331
|
+
}
|
|
332
|
+
],
|
|
333
|
+
"stateMutability": "view"
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"type": "function",
|
|
337
|
+
"name": "isAllowedForDecryption",
|
|
338
|
+
"inputs": [
|
|
339
|
+
{
|
|
340
|
+
"name": "handle",
|
|
341
|
+
"type": "uint256",
|
|
342
|
+
"internalType": "uint256"
|
|
343
|
+
}
|
|
344
|
+
],
|
|
345
|
+
"outputs": [
|
|
346
|
+
{
|
|
347
|
+
"name": "",
|
|
348
|
+
"type": "bool",
|
|
349
|
+
"internalType": "bool"
|
|
350
|
+
}
|
|
351
|
+
],
|
|
352
|
+
"stateMutability": "view"
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
"type": "function",
|
|
356
|
+
"name": "isAllowedWithPermission",
|
|
357
|
+
"inputs": [
|
|
358
|
+
{
|
|
359
|
+
"name": "permission",
|
|
360
|
+
"type": "tuple",
|
|
361
|
+
"internalType": "struct Permission",
|
|
362
|
+
"components": [
|
|
363
|
+
{
|
|
364
|
+
"name": "issuer",
|
|
365
|
+
"type": "address",
|
|
366
|
+
"internalType": "address"
|
|
367
|
+
},
|
|
368
|
+
{
|
|
369
|
+
"name": "expiration",
|
|
370
|
+
"type": "uint64",
|
|
371
|
+
"internalType": "uint64"
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
"name": "recipient",
|
|
375
|
+
"type": "address",
|
|
376
|
+
"internalType": "address"
|
|
377
|
+
},
|
|
378
|
+
{
|
|
379
|
+
"name": "validatorId",
|
|
380
|
+
"type": "uint256",
|
|
381
|
+
"internalType": "uint256"
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
"name": "validatorContract",
|
|
385
|
+
"type": "address",
|
|
386
|
+
"internalType": "address"
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"name": "sealingKey",
|
|
390
|
+
"type": "bytes32",
|
|
391
|
+
"internalType": "bytes32"
|
|
392
|
+
},
|
|
393
|
+
{
|
|
394
|
+
"name": "issuerSignature",
|
|
395
|
+
"type": "bytes",
|
|
396
|
+
"internalType": "bytes"
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"name": "recipientSignature",
|
|
400
|
+
"type": "bytes",
|
|
401
|
+
"internalType": "bytes"
|
|
402
|
+
}
|
|
403
|
+
]
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
"name": "handle",
|
|
407
|
+
"type": "uint256",
|
|
408
|
+
"internalType": "uint256"
|
|
409
|
+
}
|
|
410
|
+
],
|
|
411
|
+
"outputs": [
|
|
412
|
+
{
|
|
413
|
+
"name": "",
|
|
414
|
+
"type": "bool",
|
|
415
|
+
"internalType": "bool"
|
|
416
|
+
}
|
|
417
|
+
],
|
|
418
|
+
"stateMutability": "view"
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
"type": "function",
|
|
422
|
+
"name": "persistAllowed",
|
|
423
|
+
"inputs": [
|
|
424
|
+
{
|
|
425
|
+
"name": "handle",
|
|
426
|
+
"type": "uint256",
|
|
427
|
+
"internalType": "uint256"
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
"name": "account",
|
|
431
|
+
"type": "address",
|
|
432
|
+
"internalType": "address"
|
|
433
|
+
}
|
|
434
|
+
],
|
|
435
|
+
"outputs": [
|
|
436
|
+
{
|
|
437
|
+
"name": "",
|
|
438
|
+
"type": "bool",
|
|
439
|
+
"internalType": "bool"
|
|
440
|
+
}
|
|
441
|
+
],
|
|
442
|
+
"stateMutability": "view"
|
|
443
|
+
},
|
|
444
|
+
{
|
|
445
|
+
"type": "event",
|
|
446
|
+
"name": "AllowedForDecryption",
|
|
447
|
+
"inputs": [
|
|
448
|
+
{
|
|
449
|
+
"name": "handlesList",
|
|
450
|
+
"type": "uint256[]",
|
|
451
|
+
"indexed": false,
|
|
452
|
+
"internalType": "uint256[]"
|
|
453
|
+
}
|
|
454
|
+
],
|
|
455
|
+
"anonymous": false
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
"type": "event",
|
|
459
|
+
"name": "EIP712DomainChanged",
|
|
460
|
+
"inputs": [],
|
|
461
|
+
"anonymous": false
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
"type": "event",
|
|
465
|
+
"name": "NewDelegation",
|
|
466
|
+
"inputs": [
|
|
467
|
+
{
|
|
468
|
+
"name": "sender",
|
|
469
|
+
"type": "address",
|
|
470
|
+
"indexed": true,
|
|
471
|
+
"internalType": "address"
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"name": "delegatee",
|
|
475
|
+
"type": "address",
|
|
476
|
+
"indexed": true,
|
|
477
|
+
"internalType": "address"
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"name": "contractAddress",
|
|
481
|
+
"type": "address",
|
|
482
|
+
"indexed": true,
|
|
483
|
+
"internalType": "address"
|
|
484
|
+
}
|
|
485
|
+
],
|
|
486
|
+
"anonymous": false
|
|
487
|
+
},
|
|
488
|
+
{
|
|
489
|
+
"type": "error",
|
|
490
|
+
"name": "AlreadyDelegated",
|
|
491
|
+
"inputs": []
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"type": "error",
|
|
495
|
+
"name": "DirectAllowForbidden",
|
|
496
|
+
"inputs": [
|
|
497
|
+
{
|
|
498
|
+
"name": "sender",
|
|
499
|
+
"type": "address",
|
|
500
|
+
"internalType": "address"
|
|
501
|
+
}
|
|
502
|
+
]
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
"type": "error",
|
|
506
|
+
"name": "InvalidShortString",
|
|
507
|
+
"inputs": []
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"type": "error",
|
|
511
|
+
"name": "PermissionInvalid_Disabled",
|
|
512
|
+
"inputs": []
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"type": "error",
|
|
516
|
+
"name": "PermissionInvalid_Expired",
|
|
517
|
+
"inputs": []
|
|
518
|
+
},
|
|
519
|
+
{
|
|
520
|
+
"type": "error",
|
|
521
|
+
"name": "PermissionInvalid_IssuerSignature",
|
|
522
|
+
"inputs": []
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
"type": "error",
|
|
526
|
+
"name": "PermissionInvalid_RecipientSignature",
|
|
527
|
+
"inputs": []
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"type": "error",
|
|
531
|
+
"name": "SenderCannotBeDelegateeAddress",
|
|
532
|
+
"inputs": []
|
|
533
|
+
},
|
|
534
|
+
{
|
|
535
|
+
"type": "error",
|
|
536
|
+
"name": "SenderNotAllowed",
|
|
537
|
+
"inputs": [
|
|
538
|
+
{
|
|
539
|
+
"name": "sender",
|
|
540
|
+
"type": "address",
|
|
541
|
+
"internalType": "address"
|
|
542
|
+
}
|
|
543
|
+
]
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"type": "error",
|
|
547
|
+
"name": "StringTooLong",
|
|
548
|
+
"inputs": [
|
|
549
|
+
{
|
|
550
|
+
"name": "str",
|
|
551
|
+
"type": "string",
|
|
552
|
+
"internalType": "string"
|
|
553
|
+
}
|
|
554
|
+
]
|
|
555
|
+
}
|
|
556
|
+
],
|
|
557
|
+
"deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061011f575f3560e01c80636330a709116100ab57806384b0196e1161006f57806384b0196e1461030557806394d9184c14610329578063a8b7010014610359578063ae79f04a14610375578063ccd9a7cd146103a55761011f565b80636330a7091461024f57806365ce8df71461027f57806379a3a7fb1461029d5780637a9a598e146102b9578063846cd433146102e95761011f565b80633c3839ba116100f25780633c3839ba14610199578063484de822146101b55780634980f288146101d157806351b8fd20146102015780635faa299a1461021f5761011f565b80630d8e6e2c14610123578063267c4ae41461014157806335334c231461015f57806337e6b44f14610169575b5f5ffd5b61012b6103d5565b6040516101389190611ea8565b60405180910390f35b610149610450565b6040516101569190611ee2565b60405180910390f35b610167610458565b005b610183600480360381019061017e9190611f99565b610509565b6040516101909190611ee2565b60405180910390f35b6101b360048036038101906101ae9190612117565b610579565b005b6101cf60048036038101906101ca9190612171565b6106fa565b005b6101eb60048036038101906101e691906121f4565b61085b565b6040516101f8919061222e565b60405180910390f35b61020961086c565b6040516102169190612256565b60405180910390f35b61023960048036038101906102349190611f99565b610884565b6040516102469190611ee2565b60405180910390f35b6102696004803603810190610264919061226f565b6108b8565b6040516102769190611ee2565b60405180910390f35b6102876108ec565b6040516102949190612256565b60405180910390f35b6102b760048036038101906102b29190612171565b610907565b005b6102d360048036038101906102ce9190611f99565b610a4d565b6040516102e09190611ee2565b60405180910390f35b61030360048036038101906102fe9190611f99565b610a8a565b005b61030d610b93565b604051610320979695949392919061239a565b60405180910390f35b610343600480360381019061033e919061226f565b610c38565b6040516103509190611ee2565b60405180910390f35b610373600480360381019061036e919061241c565b610c6b565b005b61038f600480360381019061038a919061264e565b610f9b565b60405161039c9190611ee2565b60405180910390f35b6103bf60048036038101906103ba91906126a8565b6111f2565b6040516103cc9190611ee2565b60405180910390f35b60606040518060400160405280600381526020017f41434c00000000000000000000000000000000000000000000000000000000008152506104165f611391565b6104206001611391565b6104295f611391565b60405160200161043c94939291906127da565b604051602081830303815290604052905090565b5f6001905090565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104dc57336040517f3809a2430000000000000000000000000000000000000000000000000000000081526004016104d39190612256565b60405180910390fd5b5f5c5f5f5d6001810160015b8181101561050457805c5f825d5f815d506001810190506104e8565b505050565b5f5f61051361145b565b9050806001015f8581526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105fd57336040517f3809a2430000000000000000000000000000000000000000000000000000000081526004016105f49190612256565b60405180910390fd5b5f825190505f61060b61145b565b90505f5f90505b828110156106bc575f85828151811061062e5761062d612838565b5b602002602001015190506106428186610884565b61068357846040517fd0d2597600000000000000000000000000000000000000000000000000000000815260040161067a9190612256565b60405180910390fd5b6001836002015f8381526020019081526020015f205f6101000a81548160ff021916908315150217905550508080600101915050610612565b507f2fd616621b8415a2efb27b224024340ac767797553ce6fdf4c1adefd160504c6846040516106ec9190612865565b60405180910390a150505050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461077e57336040517f3809a2430000000000000000000000000000000000000000000000000000000081526004016107759190612256565b60405180910390fd5b6107888382610884565b1580156107d5575073ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1561081757806040517fd0d2597600000000000000000000000000000000000000000000000000000000815260040161080e9190612256565b60405180910390fd5b5f838360405160200161082b9291906128ea565b6040516020818303038152906040528051906020012090506001815d5f5c6001810182815d805f5d505050505050565b5f610865826114c1565b9050919050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d981565b5f61088f8383610a4d565b806108a0575061089f8383610509565b5b806108b057506108af83610c38565b5b905092915050565b5f5f6108c261145b565b9050806002015f8481526020019081526020015f205f9054906101000a900460ff16915050919050565b5f73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d9905090565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461098b57336040517f3809a2430000000000000000000000000000000000000000000000000000000081526004016109829190612256565b60405180910390fd5b6109958382610884565b6109d657806040517fd0d259760000000000000000000000000000000000000000000000000000000081526004016109cd9190612256565b60405180910390fd5b5f6109df61145b565b90506001816001015f8681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050505050565b5f5f5f8484604051602001610a639291906128ea565b604051602081830303815290604052805190602001209050805c9150819250505092915050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b0e57336040517f3809a243000000000000000000000000000000000000000000000000000000008152600401610b059190612256565b60405180910390fd5b610b188282610884565b610b5957806040517fd0d25976000000000000000000000000000000000000000000000000000000008152600401610b509190612256565b60405180910390fd5b5f610b6261145b565b90506001815f015f8581526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f6060805f5f5f6060610ba46114da565b610bac611514565b46305f5f1b5f67ffffffffffffffff811115610bcb57610bca611fdb565b5b604051908082528060200260200182016040528015610bf95781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f5f610c4261145b565b9050805f015f8481526020019081526020015f205f9054906101000a900460ff16915050919050565b73ea30c4b8b44078bbf8a6ef5b9f1ec1626c7848d973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cef57336040517f3809a243000000000000000000000000000000000000000000000000000000008152600401610ce69190612256565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d54576040517f30dc920300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610d5d61145b565b9050806003015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610e58576040517fd186046800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001816003015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ff03b7c0d4879b0bcbbf440794871f139c96fd13a145a8172b33b9cab5fa2830a60405160405180910390a4505050565b5f8242816020015167ffffffffffffffff161015610fe5576040517fed0764a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611007815f0151610ffd610ff88461154f565b6114c1565b8360c001516115a8565b61103d576040517f4c40eccb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff16816040015173ffffffffffffffffffffffffffffffffffffffff161415801561109d575061109b816040015161109161108c84611654565b6114c1565b8360e001516115a8565b155b156110d4576040517f8e143bf700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81606001511415801561111857505f73ffffffffffffffffffffffffffffffffffffffff16816080015173ffffffffffffffffffffffffffffffffffffffff1614155b80156111a55750806080015173ffffffffffffffffffffffffffffffffffffffff1663b63391e8825f015183606001516040518363ffffffff1660e01b8152600401611165929190612915565b602060405180830381865afa158015611180573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111a49190612966565b5b156111dc576040517fcbd3a96600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111e983855f0151610884565b91505092915050565b5f5f6111fc61145b565b9050806001015f8681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156112bc5750806001015f8681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156113865750806003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b915050949350505050565b60605f600161139f846116b6565b0190505f8167ffffffffffffffff8111156113bd576113bc611fdb565b5b6040519080825280601f01601f1916602001820160405280156113ef5781602001600182028036833780820191505090505b5090505f82602083010190505b600115611450578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161144557611444612991565b5b0494505f85036113fc575b819350505050919050565b5f5f60ff5f1b1960017fc4eb438ffad04c606bb4f9c3576c0f142d5dc3782731029ea1ab95b6483220115f1c61149191906129eb565b6040516020016114a19190612a1e565b604051602081830303815290604052805190602001201690508091505090565b5f6114d36114cd611807565b836118bd565b9050919050565b606061150f5f7f00000000000000000000000000000000000000000000000000000000000000006118fd90919063ffffffff16565b905090565b606061154a60017f00000000000000000000000000000000000000000000000000000000000000006118fd90919063ffffffff16565b905090565b5f5f73ffffffffffffffffffffffffffffffffffffffff16826040015173ffffffffffffffffffffffffffffffffffffffff160361159757611590826119aa565b90506115a3565b6115a082611a1c565b90505b919050565b5f5f8473ffffffffffffffffffffffffffffffffffffffff163b0361163f575f5f6115d38585611a88565b50915091505f60038111156115eb576115ea612a37565b5b8160038111156115fe576115fd612a37565b5b14801561163657508573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b9250505061164d565b61164a848484611add565b90505b9392505050565b5f7f82af07a6c9eb6bb31a0c86f7f5cad0039589750ad5b4b925ed5741f7ad4e8d4b8260a001518360c001518051906020012060405160200161169993929190612a64565b604051602081830303815290604052805190602001209050919050565b5f5f5f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611712577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161170857611707612991565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061174f576d04ee2d6d415b85acef8100000000838161174557611744612991565b5b0492506020810190505b662386f26fc10000831061177e57662386f26fc10000838161177457611773612991565b5b0492506010810190505b6305f5e10083106117a7576305f5e100838161179d5761179c612991565b5b0492506008810190505b61271083106117cc5761271083816117c2576117c1612991565b5b0492506004810190505b606483106117ef57606483816117e5576117e4612991565b5b0492506002810190505b600a83106117fe576001810190505b80915050919050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614801561188257507f000000000000000000000000000000000000000000000000000000000000000046145b156118af577f000000000000000000000000000000000000000000000000000000000000000090506118ba565b6118b7611bfc565b90505b90565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b606060ff5f1b83146119195761191283611c91565b90506119a4565b81805461192590612ac6565b80601f016020809104026020016040519081016040528092919081815260200182805461195190612ac6565b801561199c5780601f106119735761010080835404028352916020019161199c565b820191905f5260205f20905b81548152906001019060200180831161197f57829003601f168201915b505050505090505b92915050565b5f7f0ce0d938c38f948b8f9cf16098cd15ec62de132c8d422719ad270c5e2a101102825f015183602001518460400151856060015186608001518760a001516040516020016119ff9796959493929190612b05565b604051602081830303815290604052805190602001209050919050565b5f7f8549e986c64faf9b741179c61561f9d39f337cf9739f86178d84dabc6ca4cad5825f01518360200151846040015185606001518660800151604051602001611a6b96959493929190612b72565b604051602081830303815290604052805190602001209050919050565b5f5f5f6041845103611ac8575f5f5f602087015192506040870151915060608701515f1a9050611aba88828585611d03565b955095509550505050611ad6565b5f600285515f1b9250925092505b9250925092565b5f5f5f8573ffffffffffffffffffffffffffffffffffffffff168585604051602401611b0a929190612c23565b604051602081830303815290604052631626ba7e60e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051611b5c9190612c8b565b5f60405180830381855afa9150503d805f8114611b94576040519150601f19603f3d011682016040523d82523d5f602084013e611b99565b606091505b5091509150818015611bad57506020815110155b8015611bf15750631626ba7e60e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681806020019051810190611bef9190612cb5565b145b925050509392505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000004630604051602001611c76959493929190612ce0565b60405160208183030381529060405280519060200120905090565b60605f611c9d83611dea565b90505f602067ffffffffffffffff811115611cbb57611cba611fdb565b5b6040519080825280601f01601f191660200182016040528015611ced5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f5f5f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c1115611d3f575f600385925092509250611de0565b5f6001888888886040515f8152602001604052604051611d629493929190612d4c565b6020604051602081039080840390855afa158015611d82573d5f5f3e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dd3575f60015f5f1b93509350935050611de0565b805f5f5f1b935093509350505b9450945094915050565b5f5f60ff835f1c169050601f811115611e2f576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611e7a82611e38565b611e848185611e42565b9350611e94818560208601611e52565b611e9d81611e60565b840191505092915050565b5f6020820190508181035f830152611ec08184611e70565b905092915050565b5f8115159050919050565b611edc81611ec8565b82525050565b5f602082019050611ef55f830184611ed3565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b611f1e81611f0c565b8114611f28575f5ffd5b50565b5f81359050611f3981611f15565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611f6882611f3f565b9050919050565b611f7881611f5e565b8114611f82575f5ffd5b50565b5f81359050611f9381611f6f565b92915050565b5f5f60408385031215611faf57611fae611f04565b5b5f611fbc85828601611f2b565b9250506020611fcd85828601611f85565b9150509250929050565b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61201182611e60565b810181811067ffffffffffffffff821117156120305761202f611fdb565b5b80604052505050565b5f612042611efb565b905061204e8282612008565b919050565b5f67ffffffffffffffff82111561206d5761206c611fdb565b5b602082029050602081019050919050565b5f5ffd5b5f61209461208f84612053565b612039565b905080838252602082019050602084028301858111156120b7576120b661207e565b5b835b818110156120e057806120cc8882611f2b565b8452602084019350506020810190506120b9565b5050509392505050565b5f82601f8301126120fe576120fd611fd7565b5b813561210e848260208601612082565b91505092915050565b5f5f6040838503121561212d5761212c611f04565b5b5f83013567ffffffffffffffff81111561214a57612149611f08565b5b612156858286016120ea565b925050602061216785828601611f85565b9150509250929050565b5f5f5f6060848603121561218857612187611f04565b5b5f61219586828701611f2b565b93505060206121a686828701611f85565b92505060406121b786828701611f85565b9150509250925092565b5f819050919050565b6121d3816121c1565b81146121dd575f5ffd5b50565b5f813590506121ee816121ca565b92915050565b5f6020828403121561220957612208611f04565b5b5f612216848285016121e0565b91505092915050565b612228816121c1565b82525050565b5f6020820190506122415f83018461221f565b92915050565b61225081611f5e565b82525050565b5f6020820190506122695f830184612247565b92915050565b5f6020828403121561228457612283611f04565b5b5f61229184828501611f2b565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b6122ce8161229a565b82525050565b6122dd81611f0c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61231581611f0c565b82525050565b5f612326838361230c565b60208301905092915050565b5f602082019050919050565b5f612348826122e3565b61235281856122ed565b935061235d836122fd565b805f5b8381101561238d578151612374888261231b565b975061237f83612332565b925050600181019050612360565b5085935050505092915050565b5f60e0820190506123ad5f83018a6122c5565b81810360208301526123bf8189611e70565b905081810360408301526123d38188611e70565b90506123e260608301876122d4565b6123ef6080830186612247565b6123fc60a083018561221f565b81810360c083015261240e818461233e565b905098975050505050505050565b5f5f6040838503121561243257612431611f04565b5b5f61243f85828601611f85565b925050602061245085828601611f85565b9150509250929050565b5f5ffd5b5f5ffd5b5f67ffffffffffffffff82169050919050565b61247e81612462565b8114612488575f5ffd5b50565b5f8135905061249981612475565b92915050565b5f5ffd5b5f67ffffffffffffffff8211156124bd576124bc611fdb565b5b6124c682611e60565b9050602081019050919050565b828183375f83830152505050565b5f6124f36124ee846124a3565b612039565b90508281526020810184848401111561250f5761250e61249f565b5b61251a8482856124d3565b509392505050565b5f82601f83011261253657612535611fd7565b5b81356125468482602086016124e1565b91505092915050565b5f61010082840312156125655761256461245a565b5b612570610100612039565b90505f61257f84828501611f85565b5f8301525060206125928482850161248b565b60208301525060406125a684828501611f85565b60408301525060606125ba84828501611f2b565b60608301525060806125ce84828501611f85565b60808301525060a06125e2848285016121e0565b60a08301525060c082013567ffffffffffffffff8111156126065761260561245e565b5b61261284828501612522565b60c08301525060e082013567ffffffffffffffff8111156126365761263561245e565b5b61264284828501612522565b60e08301525092915050565b5f5f6040838503121561266457612663611f04565b5b5f83013567ffffffffffffffff81111561268157612680611f08565b5b61268d8582860161254f565b925050602061269e85828601611f2b565b9150509250929050565b5f5f5f5f608085870312156126c0576126bf611f04565b5b5f6126cd87828801611f85565b94505060206126de87828801611f2b565b93505060406126ef87828801611f85565b925050606061270087828801611f85565b91505092959194509250565b5f81905092915050565b5f61272082611e38565b61272a818561270c565b935061273a818560208601611e52565b80840191505092915050565b7f20760000000000000000000000000000000000000000000000000000000000005f82015250565b5f61277a60028361270c565b915061278582612746565b600282019050919050565b7f2e000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6127c460018361270c565b91506127cf82612790565b600182019050919050565b5f6127e58287612716565b91506127f08261276e565b91506127fc8286612716565b9150612807826127b8565b91506128138285612716565b915061281e826127b8565b915061282a8284612716565b915081905095945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6020820190508181035f83015261287d818461233e565b905092915050565b5f819050919050565b61289f61289a82611f0c565b612885565b82525050565b5f8160601b9050919050565b5f6128bb826128a5565b9050919050565b5f6128cc826128b1565b9050919050565b6128e46128df82611f5e565b6128c2565b82525050565b5f6128f5828561288e565b60208201915061290582846128d3565b6014820191508190509392505050565b5f6040820190506129285f830185612247565b61293560208301846122d4565b9392505050565b61294581611ec8565b811461294f575f5ffd5b50565b5f815190506129608161293c565b92915050565b5f6020828403121561297b5761297a611f04565b5b5f61298884828501612952565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6129f582611f0c565b9150612a0083611f0c565b9250828203905081811115612a1857612a176129be565b5b92915050565b5f602082019050612a315f8301846122d4565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f606082019050612a775f83018661221f565b612a84602083018561221f565b612a91604083018461221f565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612add57607f821691505b602082108103612af057612aef612a99565b5b50919050565b612aff81612462565b82525050565b5f60e082019050612b185f83018a61221f565b612b256020830189612247565b612b326040830188612af6565b612b3f6060830187612247565b612b4c60808301866122d4565b612b5960a0830185612247565b612b6660c083018461221f565b98975050505050505050565b5f60c082019050612b855f83018961221f565b612b926020830188612247565b612b9f6040830187612af6565b612bac6060830186612247565b612bb960808301856122d4565b612bc660a0830184612247565b979650505050505050565b5f81519050919050565b5f82825260208201905092915050565b5f612bf582612bd1565b612bff8185612bdb565b9350612c0f818560208601611e52565b612c1881611e60565b840191505092915050565b5f604082019050612c365f83018561221f565b8181036020830152612c488184612beb565b90509392505050565b5f81905092915050565b5f612c6582612bd1565b612c6f8185612c51565b9350612c7f818560208601611e52565b80840191505092915050565b5f612c968284612c5b565b915081905092915050565b5f81519050612caf816121ca565b92915050565b5f60208284031215612cca57612cc9611f04565b5b5f612cd784828501612ca1565b91505092915050565b5f60a082019050612cf35f83018861221f565b612d00602083018761221f565b612d0d604083018661221f565b612d1a60608301856122d4565b612d276080830184612247565b9695505050505050565b5f60ff82169050919050565b612d4681612d31565b82525050565b5f608082019050612d5f5f83018761221f565b612d6c6020830186612d3d565b612d79604083018561221f565b612d86606083018461221f565b9594505050505056fea2646970667358221220aabe60cb83f239e66cce420fafc236c0945f92dd788733f22fb30e71f86082d964736f6c634300081e0033"
|
|
558
|
+
} satisfies MocksArtifact;
|