@layerzerolabs/lz-evm-oapp-v2 2.0.2

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.
Files changed (51) hide show
  1. package/artifacts/contracts/oapp/OApp.sol/OApp.json +332 -0
  2. package/artifacts/contracts/oapp/OAppCore.sol/OAppCore.json +195 -0
  3. package/artifacts/contracts/oapp/OAppReceiver.sol/OAppReceiver.json +316 -0
  4. package/artifacts/contracts/oapp/OAppSender.sol/OAppSender.json +211 -0
  5. package/artifacts/contracts/oapp/examples/OmniCounter.sol/MsgCodec.json +10 -0
  6. package/artifacts/contracts/oapp/examples/OmniCounter.sol/OmniCounter.json +874 -0
  7. package/artifacts/contracts/oapp/examples/OmniCounterPreCrime.sol/OmniCounterPreCrime.json +373 -0
  8. package/artifacts/contracts/oapp/interfaces/IOAppComposer.sol/IOAppComposer.json +44 -0
  9. package/artifacts/contracts/oapp/interfaces/IOAppCore.sol/IOAppCore.json +143 -0
  10. package/artifacts/contracts/oapp/interfaces/IOAppMsgInspector.sol/IOAppMsgInspector.json +51 -0
  11. package/artifacts/contracts/oapp/interfaces/IOAppOptionsType3.sol/IOAppOptionsType3.json +111 -0
  12. package/artifacts/contracts/oapp/libs/OAppOptionsType3.sol/OAppOptionsType3.json +187 -0
  13. package/artifacts/contracts/oapp/libs/OptionsBuilder.sol/OptionsBuilder.json +38 -0
  14. package/artifacts/contracts/oft/OFT.sol/OFT.json +1466 -0
  15. package/artifacts/contracts/oft/OFTAdapter.sol/OFTAdapter.json +1204 -0
  16. package/artifacts/contracts/oft/OFTCore.sol/OFTCore.json +1170 -0
  17. package/artifacts/contracts/oft/interfaces/IOFT.sol/IOFT.json +472 -0
  18. package/artifacts/contracts/oft/libs/OFTComposeMsgCodec.sol/OFTComposeMsgCodec.json +10 -0
  19. package/artifacts/contracts/oft/libs/OFTMsgCodec.sol/OFTMsgCodec.json +10 -0
  20. package/artifacts/contracts/precrime/OAppPreCrimeSimulator.sol/OAppPreCrimeSimulator.json +277 -0
  21. package/artifacts/contracts/precrime/PreCrime.sol/PreCrime.json +352 -0
  22. package/artifacts/contracts/precrime/extensions/PreCrimeE1.sol/PreCrimeE1.json +352 -0
  23. package/artifacts/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol/IOAppPreCrimeSimulator.json +175 -0
  24. package/artifacts/contracts/precrime/interfaces/IPreCrime.sol/IPreCrime.json +188 -0
  25. package/artifacts/contracts/precrime/libs/Packet.sol/PacketDecoder.json +10 -0
  26. package/contracts/oapp/OApp.sol +39 -0
  27. package/contracts/oapp/OAppCore.sol +68 -0
  28. package/contracts/oapp/OAppReceiver.sol +101 -0
  29. package/contracts/oapp/OAppSender.sol +124 -0
  30. package/contracts/oapp/examples/OmniCounter.sol +283 -0
  31. package/contracts/oapp/examples/OmniCounterPreCrime.sol +102 -0
  32. package/contracts/oapp/interfaces/IOAppComposer.sol +12 -0
  33. package/contracts/oapp/interfaces/IOAppCore.sol +51 -0
  34. package/contracts/oapp/interfaces/IOAppMsgInspector.sol +22 -0
  35. package/contracts/oapp/interfaces/IOAppOptionsType3.sol +43 -0
  36. package/contracts/oapp/libs/OAppOptionsType3.sol +82 -0
  37. package/contracts/oapp/libs/OptionsBuilder.sol +200 -0
  38. package/contracts/oft/OFT.sol +116 -0
  39. package/contracts/oft/OFTAdapter.sol +131 -0
  40. package/contracts/oft/OFTCore.sol +456 -0
  41. package/contracts/oft/OFTPrecrime.sol +99 -0
  42. package/contracts/oft/interfaces/IOFT.sol +168 -0
  43. package/contracts/oft/libs/OFTComposeMsgCodec.sol +91 -0
  44. package/contracts/oft/libs/OFTMsgCodec.sol +83 -0
  45. package/contracts/precrime/OAppPreCrimeSimulator.sol +125 -0
  46. package/contracts/precrime/PreCrime.sol +208 -0
  47. package/contracts/precrime/extensions/PreCrimeE1.sol +30 -0
  48. package/contracts/precrime/interfaces/IOAppPreCrimeSimulator.sol +55 -0
  49. package/contracts/precrime/interfaces/IPreCrime.sol +40 -0
  50. package/contracts/precrime/libs/Packet.sol +61 -0
  51. package/package.json +35 -0
@@ -0,0 +1,874 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "OmniCounter",
4
+ "sourceName": "contracts/oapp/examples/OmniCounter.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [
8
+ {
9
+ "internalType": "address",
10
+ "name": "_endpoint",
11
+ "type": "address"
12
+ },
13
+ {
14
+ "internalType": "address",
15
+ "name": "_owner",
16
+ "type": "address"
17
+ }
18
+ ],
19
+ "stateMutability": "nonpayable",
20
+ "type": "constructor"
21
+ },
22
+ {
23
+ "inputs": [],
24
+ "name": "InvalidEndpointCall",
25
+ "type": "error"
26
+ },
27
+ {
28
+ "inputs": [
29
+ {
30
+ "internalType": "uint16",
31
+ "name": "optionType",
32
+ "type": "uint16"
33
+ }
34
+ ],
35
+ "name": "InvalidOptionType",
36
+ "type": "error"
37
+ },
38
+ {
39
+ "inputs": [],
40
+ "name": "LzTokenUnavailable",
41
+ "type": "error"
42
+ },
43
+ {
44
+ "inputs": [
45
+ {
46
+ "internalType": "uint32",
47
+ "name": "eid",
48
+ "type": "uint32"
49
+ }
50
+ ],
51
+ "name": "NoPeer",
52
+ "type": "error"
53
+ },
54
+ {
55
+ "inputs": [
56
+ {
57
+ "internalType": "uint256",
58
+ "name": "msgValue",
59
+ "type": "uint256"
60
+ }
61
+ ],
62
+ "name": "NotEnoughNative",
63
+ "type": "error"
64
+ },
65
+ {
66
+ "inputs": [
67
+ {
68
+ "internalType": "address",
69
+ "name": "addr",
70
+ "type": "address"
71
+ }
72
+ ],
73
+ "name": "OnlyEndpoint",
74
+ "type": "error"
75
+ },
76
+ {
77
+ "inputs": [
78
+ {
79
+ "internalType": "uint32",
80
+ "name": "eid",
81
+ "type": "uint32"
82
+ },
83
+ {
84
+ "internalType": "bytes32",
85
+ "name": "sender",
86
+ "type": "bytes32"
87
+ }
88
+ ],
89
+ "name": "OnlyPeer",
90
+ "type": "error"
91
+ },
92
+ {
93
+ "inputs": [],
94
+ "name": "OnlySelf",
95
+ "type": "error"
96
+ },
97
+ {
98
+ "inputs": [
99
+ {
100
+ "internalType": "bytes",
101
+ "name": "result",
102
+ "type": "bytes"
103
+ }
104
+ ],
105
+ "name": "SimulationResult",
106
+ "type": "error"
107
+ },
108
+ {
109
+ "anonymous": false,
110
+ "inputs": [
111
+ {
112
+ "indexed": true,
113
+ "internalType": "address",
114
+ "name": "previousOwner",
115
+ "type": "address"
116
+ },
117
+ {
118
+ "indexed": true,
119
+ "internalType": "address",
120
+ "name": "newOwner",
121
+ "type": "address"
122
+ }
123
+ ],
124
+ "name": "OwnershipTransferred",
125
+ "type": "event"
126
+ },
127
+ {
128
+ "anonymous": false,
129
+ "inputs": [
130
+ {
131
+ "indexed": false,
132
+ "internalType": "uint32",
133
+ "name": "eid",
134
+ "type": "uint32"
135
+ },
136
+ {
137
+ "indexed": false,
138
+ "internalType": "bytes32",
139
+ "name": "peer",
140
+ "type": "bytes32"
141
+ }
142
+ ],
143
+ "name": "PeerSet",
144
+ "type": "event"
145
+ },
146
+ {
147
+ "anonymous": false,
148
+ "inputs": [
149
+ {
150
+ "indexed": false,
151
+ "internalType": "address",
152
+ "name": "preCrimeAddress",
153
+ "type": "address"
154
+ }
155
+ ],
156
+ "name": "PreCrimeSet",
157
+ "type": "event"
158
+ },
159
+ {
160
+ "stateMutability": "payable",
161
+ "type": "fallback"
162
+ },
163
+ {
164
+ "inputs": [],
165
+ "name": "admin",
166
+ "outputs": [
167
+ {
168
+ "internalType": "address",
169
+ "name": "",
170
+ "type": "address"
171
+ }
172
+ ],
173
+ "stateMutability": "view",
174
+ "type": "function"
175
+ },
176
+ {
177
+ "inputs": [
178
+ {
179
+ "components": [
180
+ {
181
+ "internalType": "uint32",
182
+ "name": "srcEid",
183
+ "type": "uint32"
184
+ },
185
+ {
186
+ "internalType": "bytes32",
187
+ "name": "sender",
188
+ "type": "bytes32"
189
+ },
190
+ {
191
+ "internalType": "uint64",
192
+ "name": "nonce",
193
+ "type": "uint64"
194
+ }
195
+ ],
196
+ "internalType": "struct Origin",
197
+ "name": "origin",
198
+ "type": "tuple"
199
+ }
200
+ ],
201
+ "name": "allowInitializePath",
202
+ "outputs": [
203
+ {
204
+ "internalType": "bool",
205
+ "name": "",
206
+ "type": "bool"
207
+ }
208
+ ],
209
+ "stateMutability": "view",
210
+ "type": "function"
211
+ },
212
+ {
213
+ "inputs": [
214
+ {
215
+ "internalType": "uint32[]",
216
+ "name": "_eids",
217
+ "type": "uint32[]"
218
+ },
219
+ {
220
+ "internalType": "uint8[]",
221
+ "name": "_types",
222
+ "type": "uint8[]"
223
+ },
224
+ {
225
+ "internalType": "bytes[]",
226
+ "name": "_options",
227
+ "type": "bytes[]"
228
+ }
229
+ ],
230
+ "name": "batchIncrement",
231
+ "outputs": [],
232
+ "stateMutability": "payable",
233
+ "type": "function"
234
+ },
235
+ {
236
+ "inputs": [
237
+ {
238
+ "internalType": "uint32",
239
+ "name": "_eid",
240
+ "type": "uint32"
241
+ },
242
+ {
243
+ "internalType": "uint8",
244
+ "name": "_type",
245
+ "type": "uint8"
246
+ },
247
+ {
248
+ "internalType": "bytes",
249
+ "name": "_options",
250
+ "type": "bytes"
251
+ }
252
+ ],
253
+ "name": "brokenIncrement",
254
+ "outputs": [],
255
+ "stateMutability": "payable",
256
+ "type": "function"
257
+ },
258
+ {
259
+ "inputs": [],
260
+ "name": "composedCount",
261
+ "outputs": [
262
+ {
263
+ "internalType": "uint256",
264
+ "name": "",
265
+ "type": "uint256"
266
+ }
267
+ ],
268
+ "stateMutability": "view",
269
+ "type": "function"
270
+ },
271
+ {
272
+ "inputs": [],
273
+ "name": "count",
274
+ "outputs": [
275
+ {
276
+ "internalType": "uint256",
277
+ "name": "",
278
+ "type": "uint256"
279
+ }
280
+ ],
281
+ "stateMutability": "view",
282
+ "type": "function"
283
+ },
284
+ {
285
+ "inputs": [],
286
+ "name": "eid",
287
+ "outputs": [
288
+ {
289
+ "internalType": "uint32",
290
+ "name": "",
291
+ "type": "uint32"
292
+ }
293
+ ],
294
+ "stateMutability": "view",
295
+ "type": "function"
296
+ },
297
+ {
298
+ "inputs": [],
299
+ "name": "endpoint",
300
+ "outputs": [
301
+ {
302
+ "internalType": "contract ILayerZeroEndpointV2",
303
+ "name": "",
304
+ "type": "address"
305
+ }
306
+ ],
307
+ "stateMutability": "view",
308
+ "type": "function"
309
+ },
310
+ {
311
+ "inputs": [
312
+ {
313
+ "internalType": "uint32",
314
+ "name": "srcEid",
315
+ "type": "uint32"
316
+ }
317
+ ],
318
+ "name": "inboundCount",
319
+ "outputs": [
320
+ {
321
+ "internalType": "uint256",
322
+ "name": "count",
323
+ "type": "uint256"
324
+ }
325
+ ],
326
+ "stateMutability": "view",
327
+ "type": "function"
328
+ },
329
+ {
330
+ "inputs": [
331
+ {
332
+ "internalType": "uint32",
333
+ "name": "_eid",
334
+ "type": "uint32"
335
+ },
336
+ {
337
+ "internalType": "uint8",
338
+ "name": "_type",
339
+ "type": "uint8"
340
+ },
341
+ {
342
+ "internalType": "bytes",
343
+ "name": "_options",
344
+ "type": "bytes"
345
+ }
346
+ ],
347
+ "name": "increment",
348
+ "outputs": [],
349
+ "stateMutability": "payable",
350
+ "type": "function"
351
+ },
352
+ {
353
+ "inputs": [
354
+ {
355
+ "internalType": "uint32",
356
+ "name": "_eid",
357
+ "type": "uint32"
358
+ },
359
+ {
360
+ "internalType": "bytes32",
361
+ "name": "_peer",
362
+ "type": "bytes32"
363
+ }
364
+ ],
365
+ "name": "isPeer",
366
+ "outputs": [
367
+ {
368
+ "internalType": "bool",
369
+ "name": "",
370
+ "type": "bool"
371
+ }
372
+ ],
373
+ "stateMutability": "view",
374
+ "type": "function"
375
+ },
376
+ {
377
+ "inputs": [
378
+ {
379
+ "internalType": "address",
380
+ "name": "_oApp",
381
+ "type": "address"
382
+ },
383
+ {
384
+ "internalType": "bytes32",
385
+ "name": "",
386
+ "type": "bytes32"
387
+ },
388
+ {
389
+ "internalType": "bytes",
390
+ "name": "_message",
391
+ "type": "bytes"
392
+ },
393
+ {
394
+ "internalType": "address",
395
+ "name": "",
396
+ "type": "address"
397
+ },
398
+ {
399
+ "internalType": "bytes",
400
+ "name": "",
401
+ "type": "bytes"
402
+ }
403
+ ],
404
+ "name": "lzCompose",
405
+ "outputs": [],
406
+ "stateMutability": "payable",
407
+ "type": "function"
408
+ },
409
+ {
410
+ "inputs": [
411
+ {
412
+ "components": [
413
+ {
414
+ "internalType": "uint32",
415
+ "name": "srcEid",
416
+ "type": "uint32"
417
+ },
418
+ {
419
+ "internalType": "bytes32",
420
+ "name": "sender",
421
+ "type": "bytes32"
422
+ },
423
+ {
424
+ "internalType": "uint64",
425
+ "name": "nonce",
426
+ "type": "uint64"
427
+ }
428
+ ],
429
+ "internalType": "struct Origin",
430
+ "name": "_origin",
431
+ "type": "tuple"
432
+ },
433
+ {
434
+ "internalType": "bytes32",
435
+ "name": "_guid",
436
+ "type": "bytes32"
437
+ },
438
+ {
439
+ "internalType": "bytes",
440
+ "name": "_message",
441
+ "type": "bytes"
442
+ },
443
+ {
444
+ "internalType": "address",
445
+ "name": "_executor",
446
+ "type": "address"
447
+ },
448
+ {
449
+ "internalType": "bytes",
450
+ "name": "_extraData",
451
+ "type": "bytes"
452
+ }
453
+ ],
454
+ "name": "lzReceive",
455
+ "outputs": [],
456
+ "stateMutability": "payable",
457
+ "type": "function"
458
+ },
459
+ {
460
+ "inputs": [
461
+ {
462
+ "components": [
463
+ {
464
+ "components": [
465
+ {
466
+ "internalType": "uint32",
467
+ "name": "srcEid",
468
+ "type": "uint32"
469
+ },
470
+ {
471
+ "internalType": "bytes32",
472
+ "name": "sender",
473
+ "type": "bytes32"
474
+ },
475
+ {
476
+ "internalType": "uint64",
477
+ "name": "nonce",
478
+ "type": "uint64"
479
+ }
480
+ ],
481
+ "internalType": "struct Origin",
482
+ "name": "origin",
483
+ "type": "tuple"
484
+ },
485
+ {
486
+ "internalType": "uint32",
487
+ "name": "dstEid",
488
+ "type": "uint32"
489
+ },
490
+ {
491
+ "internalType": "address",
492
+ "name": "receiver",
493
+ "type": "address"
494
+ },
495
+ {
496
+ "internalType": "bytes32",
497
+ "name": "guid",
498
+ "type": "bytes32"
499
+ },
500
+ {
501
+ "internalType": "uint256",
502
+ "name": "value",
503
+ "type": "uint256"
504
+ },
505
+ {
506
+ "internalType": "address",
507
+ "name": "executor",
508
+ "type": "address"
509
+ },
510
+ {
511
+ "internalType": "bytes",
512
+ "name": "message",
513
+ "type": "bytes"
514
+ },
515
+ {
516
+ "internalType": "bytes",
517
+ "name": "extraData",
518
+ "type": "bytes"
519
+ }
520
+ ],
521
+ "internalType": "struct InboundPacket[]",
522
+ "name": "_packets",
523
+ "type": "tuple[]"
524
+ }
525
+ ],
526
+ "name": "lzReceiveAndRevert",
527
+ "outputs": [],
528
+ "stateMutability": "payable",
529
+ "type": "function"
530
+ },
531
+ {
532
+ "inputs": [
533
+ {
534
+ "components": [
535
+ {
536
+ "internalType": "uint32",
537
+ "name": "srcEid",
538
+ "type": "uint32"
539
+ },
540
+ {
541
+ "internalType": "bytes32",
542
+ "name": "sender",
543
+ "type": "bytes32"
544
+ },
545
+ {
546
+ "internalType": "uint64",
547
+ "name": "nonce",
548
+ "type": "uint64"
549
+ }
550
+ ],
551
+ "internalType": "struct Origin",
552
+ "name": "_origin",
553
+ "type": "tuple"
554
+ },
555
+ {
556
+ "internalType": "bytes32",
557
+ "name": "_guid",
558
+ "type": "bytes32"
559
+ },
560
+ {
561
+ "internalType": "bytes",
562
+ "name": "_message",
563
+ "type": "bytes"
564
+ },
565
+ {
566
+ "internalType": "address",
567
+ "name": "_executor",
568
+ "type": "address"
569
+ },
570
+ {
571
+ "internalType": "bytes",
572
+ "name": "_extraData",
573
+ "type": "bytes"
574
+ }
575
+ ],
576
+ "name": "lzReceiveSimulate",
577
+ "outputs": [],
578
+ "stateMutability": "payable",
579
+ "type": "function"
580
+ },
581
+ {
582
+ "inputs": [
583
+ {
584
+ "internalType": "uint32",
585
+ "name": "_srcEid",
586
+ "type": "uint32"
587
+ },
588
+ {
589
+ "internalType": "bytes32",
590
+ "name": "_sender",
591
+ "type": "bytes32"
592
+ }
593
+ ],
594
+ "name": "nextNonce",
595
+ "outputs": [
596
+ {
597
+ "internalType": "uint64",
598
+ "name": "",
599
+ "type": "uint64"
600
+ }
601
+ ],
602
+ "stateMutability": "view",
603
+ "type": "function"
604
+ },
605
+ {
606
+ "inputs": [],
607
+ "name": "oApp",
608
+ "outputs": [
609
+ {
610
+ "internalType": "address",
611
+ "name": "",
612
+ "type": "address"
613
+ }
614
+ ],
615
+ "stateMutability": "view",
616
+ "type": "function"
617
+ },
618
+ {
619
+ "inputs": [],
620
+ "name": "oAppVersion",
621
+ "outputs": [
622
+ {
623
+ "internalType": "uint64",
624
+ "name": "senderVersion",
625
+ "type": "uint64"
626
+ },
627
+ {
628
+ "internalType": "uint64",
629
+ "name": "receiverVersion",
630
+ "type": "uint64"
631
+ }
632
+ ],
633
+ "stateMutability": "pure",
634
+ "type": "function"
635
+ },
636
+ {
637
+ "inputs": [
638
+ {
639
+ "internalType": "uint32",
640
+ "name": "dstEid",
641
+ "type": "uint32"
642
+ }
643
+ ],
644
+ "name": "outboundCount",
645
+ "outputs": [
646
+ {
647
+ "internalType": "uint256",
648
+ "name": "count",
649
+ "type": "uint256"
650
+ }
651
+ ],
652
+ "stateMutability": "view",
653
+ "type": "function"
654
+ },
655
+ {
656
+ "inputs": [],
657
+ "name": "owner",
658
+ "outputs": [
659
+ {
660
+ "internalType": "address",
661
+ "name": "",
662
+ "type": "address"
663
+ }
664
+ ],
665
+ "stateMutability": "view",
666
+ "type": "function"
667
+ },
668
+ {
669
+ "inputs": [
670
+ {
671
+ "internalType": "uint32",
672
+ "name": "eid",
673
+ "type": "uint32"
674
+ }
675
+ ],
676
+ "name": "peers",
677
+ "outputs": [
678
+ {
679
+ "internalType": "bytes32",
680
+ "name": "peer",
681
+ "type": "bytes32"
682
+ }
683
+ ],
684
+ "stateMutability": "view",
685
+ "type": "function"
686
+ },
687
+ {
688
+ "inputs": [],
689
+ "name": "preCrime",
690
+ "outputs": [
691
+ {
692
+ "internalType": "address",
693
+ "name": "",
694
+ "type": "address"
695
+ }
696
+ ],
697
+ "stateMutability": "view",
698
+ "type": "function"
699
+ },
700
+ {
701
+ "inputs": [
702
+ {
703
+ "internalType": "uint32",
704
+ "name": "_eid",
705
+ "type": "uint32"
706
+ },
707
+ {
708
+ "internalType": "uint8",
709
+ "name": "_type",
710
+ "type": "uint8"
711
+ },
712
+ {
713
+ "internalType": "bytes",
714
+ "name": "_options",
715
+ "type": "bytes"
716
+ }
717
+ ],
718
+ "name": "quote",
719
+ "outputs": [
720
+ {
721
+ "internalType": "uint256",
722
+ "name": "nativeFee",
723
+ "type": "uint256"
724
+ },
725
+ {
726
+ "internalType": "uint256",
727
+ "name": "lzTokenFee",
728
+ "type": "uint256"
729
+ }
730
+ ],
731
+ "stateMutability": "view",
732
+ "type": "function"
733
+ },
734
+ {
735
+ "inputs": [],
736
+ "name": "renounceOwnership",
737
+ "outputs": [],
738
+ "stateMutability": "nonpayable",
739
+ "type": "function"
740
+ },
741
+ {
742
+ "inputs": [
743
+ {
744
+ "internalType": "address",
745
+ "name": "_admin",
746
+ "type": "address"
747
+ }
748
+ ],
749
+ "name": "setAdmin",
750
+ "outputs": [],
751
+ "stateMutability": "nonpayable",
752
+ "type": "function"
753
+ },
754
+ {
755
+ "inputs": [
756
+ {
757
+ "internalType": "address",
758
+ "name": "_delegate",
759
+ "type": "address"
760
+ }
761
+ ],
762
+ "name": "setDelegate",
763
+ "outputs": [],
764
+ "stateMutability": "nonpayable",
765
+ "type": "function"
766
+ },
767
+ {
768
+ "inputs": [
769
+ {
770
+ "internalType": "bool",
771
+ "name": "_orderedNonce",
772
+ "type": "bool"
773
+ }
774
+ ],
775
+ "name": "setOrderedNonce",
776
+ "outputs": [],
777
+ "stateMutability": "nonpayable",
778
+ "type": "function"
779
+ },
780
+ {
781
+ "inputs": [
782
+ {
783
+ "internalType": "uint32",
784
+ "name": "_eid",
785
+ "type": "uint32"
786
+ },
787
+ {
788
+ "internalType": "bytes32",
789
+ "name": "_peer",
790
+ "type": "bytes32"
791
+ }
792
+ ],
793
+ "name": "setPeer",
794
+ "outputs": [],
795
+ "stateMutability": "nonpayable",
796
+ "type": "function"
797
+ },
798
+ {
799
+ "inputs": [
800
+ {
801
+ "internalType": "address",
802
+ "name": "_preCrime",
803
+ "type": "address"
804
+ }
805
+ ],
806
+ "name": "setPreCrime",
807
+ "outputs": [],
808
+ "stateMutability": "nonpayable",
809
+ "type": "function"
810
+ },
811
+ {
812
+ "inputs": [
813
+ {
814
+ "internalType": "uint32",
815
+ "name": "_srcEid",
816
+ "type": "uint32"
817
+ },
818
+ {
819
+ "internalType": "bytes32",
820
+ "name": "_sender",
821
+ "type": "bytes32"
822
+ },
823
+ {
824
+ "internalType": "uint64",
825
+ "name": "_nonce",
826
+ "type": "uint64"
827
+ }
828
+ ],
829
+ "name": "skipInboundNonce",
830
+ "outputs": [],
831
+ "stateMutability": "nonpayable",
832
+ "type": "function"
833
+ },
834
+ {
835
+ "inputs": [
836
+ {
837
+ "internalType": "address",
838
+ "name": "newOwner",
839
+ "type": "address"
840
+ }
841
+ ],
842
+ "name": "transferOwnership",
843
+ "outputs": [],
844
+ "stateMutability": "nonpayable",
845
+ "type": "function"
846
+ },
847
+ {
848
+ "inputs": [
849
+ {
850
+ "internalType": "address payable",
851
+ "name": "_to",
852
+ "type": "address"
853
+ },
854
+ {
855
+ "internalType": "uint256",
856
+ "name": "_amount",
857
+ "type": "uint256"
858
+ }
859
+ ],
860
+ "name": "withdraw",
861
+ "outputs": [],
862
+ "stateMutability": "nonpayable",
863
+ "type": "function"
864
+ },
865
+ {
866
+ "stateMutability": "payable",
867
+ "type": "receive"
868
+ }
869
+ ],
870
+ "bytecode": "0x60a06040523480156200001157600080fd5b5060405162003567380380620035678339810160408190526200003491620001c8565b8181818162000043336200015b565b6200004e816200015b565b6001600160a01b03828116608081905260405163ca5eb5e160e01b815291831660048301529063ca5eb5e190602401600060405180830381600087803b1580156200009857600080fd5b505af1158015620000ad573d6000803e3d6000fd5b5050600580546001600160a01b0319163317905550506040805163416ecebf60e01b815290516001600160a01b038816955063416ecebf9450600480830194506020935090918290030181865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000200565b600560146101000a81548163ffffffff021916908363ffffffff16021790555050506200022f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b0381168114620001c357600080fd5b919050565b60008060408385031215620001dc57600080fd5b620001e783620001ab565b9150620001f760208401620001ab565b90509250929050565b6000602082840312156200021357600080fd5b815163ffffffff811681146200022857600080fd5b9392505050565b6080516132dd6200028a6000396000818161038b0152818161065001528181610aea01528181610f6101528181611098015281816117dc01528181611ad901528181611d3801528181611fce01526120c701526132dd6000f3fe6080604052600436106101cf5760003560e01c80637d25a05e116100f6578063d045a0dc1161008f578063f2fde38b11610061578063f2fde38b146105c1578063f3fef3a3146105e1578063f851a44014610601578063ff7bd03d1461062e57005b8063d045a0dc14610546578063d0a1026014610559578063d22446ce1461056c578063d4243885146105a157005b8063bb0b6a53116100c8578063bb0b6a53146104d3578063bd815db014610500578063c95c55be14610513578063ca5eb5e11461052657005b80637d25a05e1461042f5780638da5cb5b14610468578063b731ea0a14610493578063b7abbb5d146104c057005b806356a4728911610168578063622f17f61161013a578063622f17f6146103ad578063704b6c02146103da5780637112f86f146103fa578063715018a61461041a57005b806356a47289146102fc5780635a0dfe4d146103295780635b849af6146103595780635e280f111461037957005b80633400288b116101a15780633400288b1461024b578063416ecebf1461026b57806352ae2879146102b5578063542e7b56146102e957005b806306661abd146101d857806313137d651461020157806317442b7014610214578063257f4e051461023557005b366101d657005b005b3480156101e457600080fd5b506101ee60035481565b6040519081526020015b60405180910390f35b6101d661020f3660046126df565b61064e565b34801561022057600080fd5b506040805160018082526020820152016101f8565b34801561024157600080fd5b506101ee60045481565b34801561025757600080fd5b506101d6610266366004612798565b61074d565b34801561027757600080fd5b506005546102a09074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101f8565b3480156102c157600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f8565b6101d66102f7366004612807565b6107aa565b34801561030857600080fd5b506101ee6103173660046128a1565b60086020526000908152604090205481565b34801561033557600080fd5b50610349610344366004612798565b610971565b60405190151581526020016101f8565b34801561036557600080fd5b506101d66103743660046128ca565b610990565b34801561038557600080fd5b506102c47f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b957600080fd5b506101ee6103c83660046128a1565b60096020526000908152604090205481565b3480156103e657600080fd5b506101d66103f53660046128e7565b6109c9565b34801561040657600080fd5b506101d661041536600461291a565b610a91565b34801561042657600080fd5b506101d6610bcb565b34801561043b57600080fd5b5061044f61044a366004612798565b610bdf565b60405167ffffffffffffffff90911681526020016101f8565b34801561047457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102c4565b34801561049f57600080fd5b506002546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b6101d66104ce36600461296b565b610c32565b3480156104df57600080fd5b506101ee6104ee3660046128a1565b60016020526000908152604090205481565b6101d661050e3660046129cc565b610cb5565b6101d661052136600461296b565b610e6c565b34801561053257600080fd5b506101d66105413660046128e7565b610f14565b6101d66105543660046126df565b610fb9565b6101d6610567366004612a0e565b611001565b34801561057857600080fd5b5061058c61058736600461296b565b6112d6565b604080519283526020830191909152016101f8565b3480156105ad57600080fd5b506101d66105bc3660046128e7565b61134d565b3480156105cd57600080fd5b506101d66105dc3660046128e7565b6113ce565b3480156105ed57600080fd5b506101d66105fc366004612a8f565b611485565b34801561060d57600080fd5b506005546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b34801561063a57600080fd5b50610349610649366004612aad565b6115d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146106c4576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906106de906106d9908a6128a1565b611606565b14610735576106f060208801886128a1565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016106bb565b6107448787878787878761165b565b50505050505050565b6107556119ac565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b84811480156107b857508483145b61081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106bb565b610826612614565b3460005b8781101561096657600061083f60018a612af8565b821461084b573061084d565b335b905060008a8a8481811061086357610863612b0b565b905060200201602081019061087891906128a1565b9050600089898581811061088e5761088e612b0b565b90506020020160208101906108a39190612b3a565b905061093a826108c583600560149054906101000a900463ffffffff16611a2d565b8a8a888181106108d7576108d7612b0b565b90506020028101906108e99190612b55565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d815260208101919091529250899150611aa69050565b955061094582611bbe565b6040860151516109559086612af8565b9450506001909201915061082a9050565b505050505050505050565b63ffffffff821660009081526001602052604090205481145b92915050565b6109986119ac565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a996119ac565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b505060075460ff16159150610bc690505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610b9e83612bba565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610bd36119ac565b610bdd6000611be7565b565b60075460009060ff1615610c2a5763ffffffff83166000908152600660209081526040808320858452909152902054610c239067ffffffffffffffff166001612be1565b905061098a565b50600061098a565b610ca584610c5285600560149054906101000a900463ffffffff16611a2d565b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150611aa69050565b50610caf84611bbe565b50505050565b60005b81811015610da75736838383818110610cd357610cd3612b0b565b9050602002810190610ce59190612c09565b9050610d01610cf760208301836128a1565b6020830135610971565b610d0b5750610d9f565b3063d045a0dc60c08301358360a0810135610d2a610100830183612b55565b610d3b610100890160e08a016128e7565b610d496101208a018a612b55565b6040518963ffffffff1660e01b8152600401610d6b9796959493929190612c90565b6000604051808303818588803b158015610d8457600080fd5b505af1158015610d98573d6000803e3d6000fd5b5050505050505b600101610cb8565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610df3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e399190810190612d77565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016106bb9190612e81565b60055473ffffffffffffffffffffffffffffffffffffffff163314610eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b610f0d84610c5285600560149054906101000a900463ffffffff16611a2d565b5050505050565b610f1c6119ac565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610fa557600080fd5b505af1158015610f0d573d6000803e3d6000fd5b333014610ff2576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074487878787878787610735565b73ffffffffffffffffffffffffffffffffffffffff87163014611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f41707000000000000000000000000000000000000000000000000000000060448201526064016106bb565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e74000000000000000000000000000000000000000000000060448201526064016106bb565b600061112b8686611c5c565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8216016111755760016004600082825461116a9190612e94565b909155506112cc9050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff82160161126a576001600460008282546111b29190612e94565b90915550600090506111c48787611c7e565b90506111cf81611bbe565b600061122262030d40600061121b604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190611ca1565b9050611262826112456001600560149054906101000a900463ffffffff16611a2d565b836040518060400160405280348152602001600081525030611aa6565b5050506112cc565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d657373616765207479706500000000000000000000000060448201526064016106bb565b5050505050505050565b6000806000611337876112fb88600560149054906101000a900463ffffffff16611a2d565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d22915050565b8051602090910151909890975095505050505050565b6113556119ac565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6113d66119ac565b73ffffffffffffffffffffffffffffffffffffffff8116611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106bb565b61148281611be7565b50565b60055473ffffffffffffffffffffffffffffffffffffffff163314611506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611560576040519150601f19603f3d011682016040523d82523d6000602084013e611565565b606091505b5050905080610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106bb565b60006020820180359060019083906115e890866128a1565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff81166000908152600160205260408120548061098a576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016106bb565b61168561166b60208901896128a1565b602089013561168060608b0160408c01612ea7565b611e12565b60006116918686611c5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff82160161175f57600380549060006116cd83612ec4565b91905055506116dc8686611f48565b341015611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106bb565b61175a61175560208a018a6128a1565b611f67565b6112cc565b60ff811660021480611774575060ff81166004145b15611851576003805490600061178983612ec4565b9091555061179f905061175560208a018a6128a1565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061181a9030908b906000908c908c90600401612efc565b600060405180830381600087803b15801561183457600080fd5b505af1158015611848573d6000803e3d6000fd5b505050506112cc565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff82160161126a576003805490600061188b83612ec4565b909155506118a1905061175560208a018a6128a1565b6118b66118b160208a018a6128a1565b611bbe565b600061190262030d40600a61121b604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b90506119a561191460208b018b6128a1565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611245565b50506112cc565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106bb565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b611aae612614565b6000611abd8460000151611f88565b602085015190915015611ad757611ad78460200151611fca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611b348c611606565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611b70929190612f3c565b60806040518083038185885af1158015611b8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bb3919061302f565b979650505050505050565b63ffffffff81166000908152600960205260408120805491611bdf83612ec4565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611c6b6001828486613097565b611c74916130c1565b60f81c9392505050565b6000611c8e600560018486613097565b611c9791613109565b60e01c9392505050565b6060836003611cb18260006120f0565b61ffff1614611cfe57611cc58160006120f0565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff90911660048201526024016106bb565b6000611d0a8585612170565b9050611d1886600183612210565b9695505050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611d9289611606565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611dc7929190612f3c565b6040805180830381865afa158015611de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e07919061314f565b90505b949350505050565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615611ed257611e56816001612be1565b67ffffffffffffffff168267ffffffffffffffff1614611ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e63650000000000000000000000000060448201526064016106bb565b8067ffffffffffffffff168267ffffffffffffffff161115610caf5763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b6000611f578260058186613097565b611f609161316b565b9392505050565b63ffffffff81166000908152600860205260408120805491611bdf83612ec4565b600081341015611fc6576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016106bb565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205b91906131a7565b905073ffffffffffffffffffffffffffffffffffffffff81166120aa576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120ec73ffffffffffffffffffffffffffffffffffffffff8216337f00000000000000000000000000000000000000000000000000000000000000008561227b565b5050565b60006120fd826002612e94565b83511015612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016106bb565b50016002015190565b60606fffffffffffffffffffffffffffffffff8216156121d957604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052611f60565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611a8f565b60608360036122208260006120f0565b61ffff161461223457611cc58160006120f0565b8460016122418551612310565b61224c9060016131c4565b86866040516020016122629594939291906131df565b6040516020818303038152906040529150509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610caf9085906123a4565b600061ffff821115611fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f362062697473000000000000000000000000000000000000000000000000000060648201526084016106bb565b6000612406826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124b39092919063ffffffff16565b90508051600014806124275750808060200190518101906124279190613278565b610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106bb565b6060611e0a8484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516124e79190613295565b60006040518083038185875af1925050503d8060008114612524576040519150601f19603f3d011682016040523d82523d6000602084013e612529565b606091505b5091509150611bb387838387606083156125cb5782516000036125c45773ffffffffffffffffffffffffffffffffffffffff85163b6125c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106bb565b5081611e0a565b611e0a83838151156125e05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb9190612e81565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612657604051806040016040528060008152602001600081525090565b905290565b60006060828403121561266e57600080fd5b50919050565b60008083601f84011261268657600080fd5b50813567ffffffffffffffff81111561269e57600080fd5b6020830191508360208285010111156126b657600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461148257600080fd5b600080600080600080600060e0888a0312156126fa57600080fd5b612704898961265c565b965060608801359550608088013567ffffffffffffffff8082111561272857600080fd5b6127348b838c01612674565b909750955060a08a01359150612749826126bd565b90935060c0890135908082111561275f57600080fd5b5061276c8a828b01612674565b989b979a50959850939692959293505050565b803563ffffffff8116811461279357600080fd5b919050565b600080604083850312156127ab57600080fd5b6127b48361277f565b946020939093013593505050565b60008083601f8401126127d457600080fd5b50813567ffffffffffffffff8111156127ec57600080fd5b6020830191508360208260051b85010111156126b657600080fd5b6000806000806000806060878903121561282057600080fd5b863567ffffffffffffffff8082111561283857600080fd5b6128448a838b016127c2565b9098509650602089013591508082111561285d57600080fd5b6128698a838b016127c2565b9096509450604089013591508082111561288257600080fd5b5061288f89828a016127c2565b979a9699509497509295939492505050565b6000602082840312156128b357600080fd5b611f608261277f565b801515811461148257600080fd5b6000602082840312156128dc57600080fd5b8135611f60816128bc565b6000602082840312156128f957600080fd5b8135611f60816126bd565b67ffffffffffffffff8116811461148257600080fd5b60008060006060848603121561292f57600080fd5b6129388461277f565b925060208401359150604084013561294f81612904565b809150509250925092565b803560ff8116811461279357600080fd5b6000806000806060858703121561298157600080fd5b61298a8561277f565b93506129986020860161295a565b9250604085013567ffffffffffffffff8111156129b457600080fd5b6129c087828801612674565b95989497509550505050565b600080602083850312156129df57600080fd5b823567ffffffffffffffff8111156129f657600080fd5b612a02858286016127c2565b90969095509350505050565b600080600080600080600060a0888a031215612a2957600080fd5b8735612a34816126bd565b965060208801359550604088013567ffffffffffffffff80821115612a5857600080fd5b612a648b838c01612674565b909750955060608a01359150612a79826126bd565b9093506080890135908082111561275f57600080fd5b60008060408385031215612aa257600080fd5b82356127b4816126bd565b600060608284031215612abf57600080fd5b611f60838361265c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561098a5761098a612ac9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612b4c57600080fd5b611f608261295a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b8a57600080fd5b83018035915067ffffffffffffffff821115612ba557600080fd5b6020019150368190038213156126b657600080fd5b600067ffffffffffffffff808316818103612bd757612bd7612ac9565b6001019392505050565b67ffffffffffffffff818116838216019080821115612c0257612c02612ac9565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612c3d57600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff612c9e8961277f565b1681526020880135602082015260006040890135612cbb81612904565b67ffffffffffffffff811660408401525087606083015260e06080830152612ce760e083018789612c47565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612d16818587612c47565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015612d6e578181015183820152602001612d56565b50506000910152565b600060208284031215612d8957600080fd5b815167ffffffffffffffff80821115612da157600080fd5b818401915084601f830112612db557600080fd5b815181811115612dc757612dc7612d24565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612e0d57612e0d612d24565b81604052828152876020848701011115612e2657600080fd5b611bb3836020830160208801612d53565b60008151808452612e4f816020860160208601612d53565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611f606020830184612e37565b8082018082111561098a5761098a612ac9565b600060208284031215612eb957600080fd5b8135611f6081612904565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ef557612ef5612ac9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff84166040820152608060608201526000611bb3608083018486612c47565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612f7260e0840182612e37565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152612fad8282612e37565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215612ff257600080fd5b6040516040810181811067ffffffffffffffff8211171561301557613015612d24565b604052825181526020928301519281019290925250919050565b60006080828403121561304157600080fd5b6040516060810181811067ffffffffffffffff8211171561306457613064612d24565b60405282518152602083015161307981612904565b602082015261308b8460408501612fe0565b60408201529392505050565b600080858511156130a757600080fd5b838611156130b457600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156131015780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156131015760049490940360031b84901b1690921692915050565b60006040828403121561316157600080fd5b611f608383612fe0565b8035602083101561098a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000602082840312156131b957600080fd5b8151611f60816126bd565b61ffff818116838216019080821115612c0257612c02612ac9565b600086516131f1818460208b01612d53565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351613269816004840160208801612d53565b01600401979650505050505050565b60006020828403121561328a57600080fd5b8151611f60816128bc565b60008251612c3d818460208701612d5356fea2646970667358221220e7523d94b2f21b6257a94f5e4abbfacb9b54a4f214d61640f9553ec6c21c6bb764736f6c63430008160033",
871
+ "deployedBytecode": "0x6080604052600436106101cf5760003560e01c80637d25a05e116100f6578063d045a0dc1161008f578063f2fde38b11610061578063f2fde38b146105c1578063f3fef3a3146105e1578063f851a44014610601578063ff7bd03d1461062e57005b8063d045a0dc14610546578063d0a1026014610559578063d22446ce1461056c578063d4243885146105a157005b8063bb0b6a53116100c8578063bb0b6a53146104d3578063bd815db014610500578063c95c55be14610513578063ca5eb5e11461052657005b80637d25a05e1461042f5780638da5cb5b14610468578063b731ea0a14610493578063b7abbb5d146104c057005b806356a4728911610168578063622f17f61161013a578063622f17f6146103ad578063704b6c02146103da5780637112f86f146103fa578063715018a61461041a57005b806356a47289146102fc5780635a0dfe4d146103295780635b849af6146103595780635e280f111461037957005b80633400288b116101a15780633400288b1461024b578063416ecebf1461026b57806352ae2879146102b5578063542e7b56146102e957005b806306661abd146101d857806313137d651461020157806317442b7014610214578063257f4e051461023557005b366101d657005b005b3480156101e457600080fd5b506101ee60035481565b6040519081526020015b60405180910390f35b6101d661020f3660046126df565b61064e565b34801561022057600080fd5b506040805160018082526020820152016101f8565b34801561024157600080fd5b506101ee60045481565b34801561025757600080fd5b506101d6610266366004612798565b61074d565b34801561027757600080fd5b506005546102a09074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff90911681526020016101f8565b3480156102c157600080fd5b50305b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101f8565b6101d66102f7366004612807565b6107aa565b34801561030857600080fd5b506101ee6103173660046128a1565b60086020526000908152604090205481565b34801561033557600080fd5b50610349610344366004612798565b610971565b60405190151581526020016101f8565b34801561036557600080fd5b506101d66103743660046128ca565b610990565b34801561038557600080fd5b506102c47f000000000000000000000000000000000000000000000000000000000000000081565b3480156103b957600080fd5b506101ee6103c83660046128a1565b60096020526000908152604090205481565b3480156103e657600080fd5b506101d66103f53660046128e7565b6109c9565b34801561040657600080fd5b506101d661041536600461291a565b610a91565b34801561042657600080fd5b506101d6610bcb565b34801561043b57600080fd5b5061044f61044a366004612798565b610bdf565b60405167ffffffffffffffff90911681526020016101f8565b34801561047457600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166102c4565b34801561049f57600080fd5b506002546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b6101d66104ce36600461296b565b610c32565b3480156104df57600080fd5b506101ee6104ee3660046128a1565b60016020526000908152604090205481565b6101d661050e3660046129cc565b610cb5565b6101d661052136600461296b565b610e6c565b34801561053257600080fd5b506101d66105413660046128e7565b610f14565b6101d66105543660046126df565b610fb9565b6101d6610567366004612a0e565b611001565b34801561057857600080fd5b5061058c61058736600461296b565b6112d6565b604080519283526020830191909152016101f8565b3480156105ad57600080fd5b506101d66105bc3660046128e7565b61134d565b3480156105cd57600080fd5b506101d66105dc3660046128e7565b6113ce565b3480156105ed57600080fd5b506101d66105fc366004612a8f565b611485565b34801561060d57600080fd5b506005546102c49073ffffffffffffffffffffffffffffffffffffffff1681565b34801561063a57600080fd5b50610349610649366004612aad565b6115d0565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1633146106c4576040517f91ac5e4f0000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b602087018035906106de906106d9908a6128a1565b611606565b14610735576106f060208801886128a1565b6040517fc26bebcc00000000000000000000000000000000000000000000000000000000815263ffffffff9091166004820152602088013560248201526044016106bb565b6107448787878787878761165b565b50505050505050565b6107556119ac565b63ffffffff8216600081815260016020908152604091829020849055815192835282018390527f238399d427b947898edb290f5ff0f9109849b1c3ba196a42e35f00c50a54b98b910160405180910390a15050565b84811480156107b857508483145b61081e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a206c656e677468206d69736d617463680000000060448201526064016106bb565b610826612614565b3460005b8781101561096657600061083f60018a612af8565b821461084b573061084d565b335b905060008a8a8481811061086357610863612b0b565b905060200201602081019061087891906128a1565b9050600089898581811061088e5761088e612b0b565b90506020020160208101906108a39190612b3a565b905061093a826108c583600560149054906101000a900463ffffffff16611a2d565b8a8a888181106108d7576108d7612b0b565b90506020028101906108e99190612b55565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250604080518082019091528d815260208101919091529250899150611aa69050565b955061094582611bbe565b6040860151516109559086612af8565b9450506001909201915061082a9050565b505050505050505050565b63ffffffff821660009081526001602052604090205481145b92915050565b6109986119ac565b600780547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016911515919091179055565b60055473ffffffffffffffffffffffffffffffffffffffff163314610a4a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b600580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b610a996119ac565b6040517fd70b890200000000000000000000000000000000000000000000000000000000815230600482015263ffffffff841660248201526044810183905267ffffffffffffffff821660648201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063d70b890290608401600060405180830381600087803b158015610b4357600080fd5b505af1158015610b57573d6000803e3d6000fd5b505060075460ff16159150610bc690505763ffffffff831660009081526006602090815260408083208584529091528120805467ffffffffffffffff1691610b9e83612bba565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550505b505050565b610bd36119ac565b610bdd6000611be7565b565b60075460009060ff1615610c2a5763ffffffff83166000908152600660209081526040808320858452909152902054610c239067ffffffffffffffff166001612be1565b905061098a565b50600061098a565b610ca584610c5285600560149054906101000a900463ffffffff16611a2d565b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052506040805180820190915234815260208101919091529250339150611aa69050565b50610caf84611bbe565b50505050565b60005b81811015610da75736838383818110610cd357610cd3612b0b565b9050602002810190610ce59190612c09565b9050610d01610cf760208301836128a1565b6020830135610971565b610d0b5750610d9f565b3063d045a0dc60c08301358360a0810135610d2a610100830183612b55565b610d3b610100890160e08a016128e7565b610d496101208a018a612b55565b6040518963ffffffff1660e01b8152600401610d6b9796959493929190612c90565b6000604051808303818588803b158015610d8457600080fd5b505af1158015610d98573d6000803e3d6000fd5b5050505050505b600101610cb8565b503373ffffffffffffffffffffffffffffffffffffffff16638e9e70996040518163ffffffff1660e01b8152600401600060405180830381865afa158015610df3573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610e399190810190612d77565b6040517f8351eea70000000000000000000000000000000000000000000000000000000081526004016106bb9190612e81565b60055473ffffffffffffffffffffffffffffffffffffffff163314610eed576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b610f0d84610c5285600560149054906101000a900463ffffffff16611a2d565b5050505050565b610f1c6119ac565b6040517fca5eb5e100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063ca5eb5e190602401600060405180830381600087803b158015610fa557600080fd5b505af1158015610f0d573d6000803e3d6000fd5b333014610ff2576040517f14d4a4e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074487878787878787610735565b73ffffffffffffffffffffffffffffffffffffffff87163014611080576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600560248201527f216f41707000000000000000000000000000000000000000000000000000000060448201526064016106bb565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461111f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f21656e64706f696e74000000000000000000000000000000000000000000000060448201526064016106bb565b600061112b8686611c5c565b90507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe60ff8216016111755760016004600082825461116a9190612e94565b909155506112cc9050565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60ff82160161126a576001600460008282546111b29190612e94565b90915550600090506111c48787611c7e565b90506111cf81611bbe565b600061122262030d40600061121b604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b9190611ca1565b9050611262826112456001600560149054906101000a900463ffffffff16611a2d565b836040518060400160405280348152602001600081525030611aa6565b5050506112cc565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f696e76616c6964206d657373616765207479706500000000000000000000000060448201526064016106bb565b5050505050505050565b6000806000611337876112fb88600560149054906101000a900463ffffffff16611a2d565b87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611d22915050565b8051602090910151909890975095505050505050565b6113556119ac565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081179091556040519081527fd48d879cef83a1c0bdda516f27b13ddb1b3f8bbac1c9e1511bb2a659c24277609060200160405180910390a150565b6113d66119ac565b73ffffffffffffffffffffffffffffffffffffffff8116611479576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016106bb565b61148281611be7565b50565b60055473ffffffffffffffffffffffffffffffffffffffff163314611506576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f6f6e6c792061646d696e0000000000000000000000000000000000000000000060448201526064016106bb565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d8060008114611560576040519150601f19603f3d011682016040523d82523d6000602084013e611565565b606091505b5050905080610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f4f6d6e69436f756e7465723a207769746864726177206661696c65640000000060448201526064016106bb565b60006020820180359060019083906115e890866128a1565b63ffffffff1681526020810191909152604001600020541492915050565b63ffffffff81166000908152600160205260408120548061098a576040517ff6ff4fb700000000000000000000000000000000000000000000000000000000815263ffffffff841660048201526024016106bb565b61168561166b60208901896128a1565b602089013561168060608b0160408c01612ea7565b611e12565b60006116918686611c5c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60ff82160161175f57600380549060006116cd83612ec4565b91905055506116dc8686611f48565b341015611745576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f4f6d6e69436f756e7465723a20696e73756666696369656e742076616c75650060448201526064016106bb565b61175a61175560208a018a6128a1565b611f67565b6112cc565b60ff811660021480611774575060ff81166004145b15611851576003805490600061178983612ec4565b9091555061179f905061175560208a018a6128a1565b6040517f7cb5901200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637cb590129061181a9030908b906000908c908c90600401612efc565b600060405180830381600087803b15801561183457600080fd5b505af1158015611848573d6000803e3d6000fd5b505050506112cc565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd60ff82160161126a576003805490600061188b83612ec4565b909155506118a1905061175560208a018a6128a1565b6118b66118b160208a018a6128a1565b611bbe565b600061190262030d40600a61121b604080517e03000000000000000000000000000000000000000000000000000000000000602082015281516002818303018152602290910190915290565b90506119a561191460208b018b6128a1565b600554604080517f010000000000000000000000000000000000000000000000000000000000000060208201527401000000000000000000000000000000000000000090920460e01b7fffffffff00000000000000000000000000000000000000000000000000000000166021830152600a6025808401919091528151808403909101815260459092019052611245565b50506112cc565b60005473ffffffffffffffffffffffffffffffffffffffff163314610bdd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016106bb565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f884901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e083901b1660218201526060906025015b604051602081830303815290604052905092915050565b611aae612614565b6000611abd8460000151611f88565b602085015190915015611ad757611ad78460200151611fca565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632637a450826040518060a001604052808b63ffffffff168152602001611b348c611606565b81526020018a815260200189815260200160008960200151111515815250866040518463ffffffff1660e01b8152600401611b70929190612f3c565b60806040518083038185885af1158015611b8e573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611bb3919061302f565b979650505050505050565b63ffffffff81166000908152600960205260408120805491611bdf83612ec4565b919050555050565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000611c6b6001828486613097565b611c74916130c1565b60f81c9392505050565b6000611c8e600560018486613097565b611c9791613109565b60e01c9392505050565b6060836003611cb18260006120f0565b61ffff1614611cfe57611cc58160006120f0565b6040517f3a51740d00000000000000000000000000000000000000000000000000000000815261ffff90911660048201526024016106bb565b6000611d0a8585612170565b9050611d1886600183612210565b9695505050505050565b60408051808201909152600080825260208201527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ddc28c586040518060a001604052808863ffffffff168152602001611d9289611606565b8152602001878152602001868152602001851515815250306040518363ffffffff1660e01b8152600401611dc7929190612f3c565b6040805180830381865afa158015611de3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e07919061314f565b90505b949350505050565b63ffffffff8316600090815260066020908152604080832085845290915290205460075467ffffffffffffffff9091169060ff1615611ed257611e56816001612be1565b67ffffffffffffffff168267ffffffffffffffff1614611ed2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f4f4170703a20696e76616c6964206e6f6e63650000000000000000000000000060448201526064016106bb565b8067ffffffffffffffff168267ffffffffffffffff161115610caf5763ffffffff841660009081526006602090815260408083208684529091529020805467ffffffffffffffff84167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090911617905550505050565b6000611f578260058186613097565b611f609161316b565b9392505050565b63ffffffff81166000908152600860205260408120805491611bdf83612ec4565b600081341015611fc6576040517f9f7041200000000000000000000000000000000000000000000000000000000081523460048201526024016106bb565b5090565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e4fe1d946040518163ffffffff1660e01b8152600401602060405180830381865afa158015612037573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061205b91906131a7565b905073ffffffffffffffffffffffffffffffffffffffff81166120aa576040517f5373352a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120ec73ffffffffffffffffffffffffffffffffffffffff8216337f00000000000000000000000000000000000000000000000000000000000000008561227b565b5050565b60006120fd826002612e94565b83511015612167576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f746f55696e7431365f6f75744f66426f756e647300000000000000000000000060448201526064016106bb565b50016002015190565b60606fffffffffffffffffffffffffffffffff8216156121d957604080517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608086811b8216602084015285901b16603082015201604051602081830303815290604052611f60565b6040517fffffffffffffffffffffffffffffffff00000000000000000000000000000000608085901b166020820152603001611a8f565b60608360036122208260006120f0565b61ffff161461223457611cc58160006120f0565b8460016122418551612310565b61224c9060016131c4565b86866040516020016122629594939291906131df565b6040516020818303038152906040529150509392505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052610caf9085906123a4565b600061ffff821115611fc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f362062697473000000000000000000000000000000000000000000000000000060648201526084016106bb565b6000612406826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166124b39092919063ffffffff16565b90508051600014806124275750808060200190518101906124279190613278565b610bc6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016106bb565b6060611e0a8484600085856000808673ffffffffffffffffffffffffffffffffffffffff1685876040516124e79190613295565b60006040518083038185875af1925050503d8060008114612524576040519150601f19603f3d011682016040523d82523d6000602084013e612529565b606091505b5091509150611bb387838387606083156125cb5782516000036125c45773ffffffffffffffffffffffffffffffffffffffff85163b6125c4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016106bb565b5081611e0a565b611e0a83838151156125e05781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb9190612e81565b604051806060016040528060008019168152602001600067ffffffffffffffff168152602001612657604051806040016040528060008152602001600081525090565b905290565b60006060828403121561266e57600080fd5b50919050565b60008083601f84011261268657600080fd5b50813567ffffffffffffffff81111561269e57600080fd5b6020830191508360208285010111156126b657600080fd5b9250929050565b73ffffffffffffffffffffffffffffffffffffffff8116811461148257600080fd5b600080600080600080600060e0888a0312156126fa57600080fd5b612704898961265c565b965060608801359550608088013567ffffffffffffffff8082111561272857600080fd5b6127348b838c01612674565b909750955060a08a01359150612749826126bd565b90935060c0890135908082111561275f57600080fd5b5061276c8a828b01612674565b989b979a50959850939692959293505050565b803563ffffffff8116811461279357600080fd5b919050565b600080604083850312156127ab57600080fd5b6127b48361277f565b946020939093013593505050565b60008083601f8401126127d457600080fd5b50813567ffffffffffffffff8111156127ec57600080fd5b6020830191508360208260051b85010111156126b657600080fd5b6000806000806000806060878903121561282057600080fd5b863567ffffffffffffffff8082111561283857600080fd5b6128448a838b016127c2565b9098509650602089013591508082111561285d57600080fd5b6128698a838b016127c2565b9096509450604089013591508082111561288257600080fd5b5061288f89828a016127c2565b979a9699509497509295939492505050565b6000602082840312156128b357600080fd5b611f608261277f565b801515811461148257600080fd5b6000602082840312156128dc57600080fd5b8135611f60816128bc565b6000602082840312156128f957600080fd5b8135611f60816126bd565b67ffffffffffffffff8116811461148257600080fd5b60008060006060848603121561292f57600080fd5b6129388461277f565b925060208401359150604084013561294f81612904565b809150509250925092565b803560ff8116811461279357600080fd5b6000806000806060858703121561298157600080fd5b61298a8561277f565b93506129986020860161295a565b9250604085013567ffffffffffffffff8111156129b457600080fd5b6129c087828801612674565b95989497509550505050565b600080602083850312156129df57600080fd5b823567ffffffffffffffff8111156129f657600080fd5b612a02858286016127c2565b90969095509350505050565b600080600080600080600060a0888a031215612a2957600080fd5b8735612a34816126bd565b965060208801359550604088013567ffffffffffffffff80821115612a5857600080fd5b612a648b838c01612674565b909750955060608a01359150612a79826126bd565b9093506080890135908082111561275f57600080fd5b60008060408385031215612aa257600080fd5b82356127b4816126bd565b600060608284031215612abf57600080fd5b611f60838361265c565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8181038181111561098a5761098a612ac9565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060208284031215612b4c57600080fd5b611f608261295a565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112612b8a57600080fd5b83018035915067ffffffffffffffff821115612ba557600080fd5b6020019150368190038213156126b657600080fd5b600067ffffffffffffffff808316818103612bd757612bd7612ac9565b6001019392505050565b67ffffffffffffffff818116838216019080821115612c0257612c02612ac9565b5092915050565b600082357ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec1833603018112612c3d57600080fd5b9190910192915050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b63ffffffff612c9e8961277f565b1681526020880135602082015260006040890135612cbb81612904565b67ffffffffffffffff811660408401525087606083015260e06080830152612ce760e083018789612c47565b73ffffffffffffffffffffffffffffffffffffffff861660a084015282810360c0840152612d16818587612c47565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60005b83811015612d6e578181015183820152602001612d56565b50506000910152565b600060208284031215612d8957600080fd5b815167ffffffffffffffff80821115612da157600080fd5b818401915084601f830112612db557600080fd5b815181811115612dc757612dc7612d24565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f01168101908382118183101715612e0d57612e0d612d24565b81604052828152876020848701011115612e2657600080fd5b611bb3836020830160208801612d53565b60008151808452612e4f816020860160208601612d53565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b602081526000611f606020830184612e37565b8082018082111561098a5761098a612ac9565b600060208284031215612eb957600080fd5b8135611f6081612904565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612ef557612ef5612ac9565b5060010190565b73ffffffffffffffffffffffffffffffffffffffff8616815284602082015261ffff84166040820152608060608201526000611bb3608083018486612c47565b6040815263ffffffff8351166040820152602083015160608201526000604084015160a06080840152612f7260e0840182612e37565b905060608501517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08483030160a0850152612fad8282612e37565b60809690960151151560c085015250505073ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b600060408284031215612ff257600080fd5b6040516040810181811067ffffffffffffffff8211171561301557613015612d24565b604052825181526020928301519281019290925250919050565b60006080828403121561304157600080fd5b6040516060810181811067ffffffffffffffff8211171561306457613064612d24565b60405282518152602083015161307981612904565b602082015261308b8460408501612fe0565b60408201529392505050565b600080858511156130a757600080fd5b838611156130b457600080fd5b5050820193919092039150565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156131015780818660010360031b1b83161692505b505092915050565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156131015760049490940360031b84901b1690921692915050565b60006040828403121561316157600080fd5b611f608383612fe0565b8035602083101561098a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b6000602082840312156131b957600080fd5b8151611f60816126bd565b61ffff818116838216019080821115612c0257612c02612ac9565b600086516131f1818460208b01612d53565b80830190507fff00000000000000000000000000000000000000000000000000000000000000808860f81b1682527fffff0000000000000000000000000000000000000000000000000000000000008760f01b166001830152808660f81b166003830152508351613269816004840160208801612d53565b01600401979650505050505050565b60006020828403121561328a57600080fd5b8151611f60816128bc565b60008251612c3d818460208701612d5356fea2646970667358221220e7523d94b2f21b6257a94f5e4abbfacb9b54a4f214d61640f9553ec6c21c6bb764736f6c63430008160033",
872
+ "linkReferences": {},
873
+ "deployedLinkReferences": {}
874
+ }