-
Notifications
You must be signed in to change notification settings - Fork 0
/
GrantManager.json
20441 lines (20441 loc) · 854 KB
/
GrantManager.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
{
"contractName": "GrantManager",
"abi": [
{
"inputs": [],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "previousOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnershipTransferred",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Paused",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "Unpaused",
"type": "event"
},
{
"inputs": [],
"name": "PAUSER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "awards",
"outputs": [
{
"internalType": "string",
"name": "awardeeName",
"type": "string"
},
{
"internalType": "address",
"name": "awardeeAddr",
"type": "address"
},
{
"internalType": "string",
"name": "cageCode",
"type": "string"
},
{
"internalType": "string",
"name": "naicsCode",
"type": "string"
},
{
"internalType": "string",
"name": "grantNumber",
"type": "string"
},
{
"internalType": "string",
"name": "effectiveDate",
"type": "string"
},
{
"internalType": "string",
"name": "completionDate",
"type": "string"
},
{
"internalType": "uint256",
"name": "laborCLINValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "travelCLINValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "odcValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "totalAwardValue",
"type": "uint256"
},
{
"internalType": "bool",
"name": "completed",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burn",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "burnFrom",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "decimals",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "name",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "paused",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "renounceOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "symbol",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "transferOwnership",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "getNumberAwards",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"constant": true
},
{
"inputs": [],
"name": "pause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "unpause",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "_awardeeName",
"type": "string"
},
{
"internalType": "address",
"name": "_awardeeAddr",
"type": "address"
},
{
"internalType": "string",
"name": "_cageCode",
"type": "string"
},
{
"internalType": "string",
"name": "_naicsCode",
"type": "string"
},
{
"internalType": "string",
"name": "_grantNumber",
"type": "string"
},
{
"internalType": "string",
"name": "_effectiveDate",
"type": "string"
},
{
"internalType": "string",
"name": "_completionDate",
"type": "string"
},
{
"internalType": "uint256",
"name": "_laborCLINValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_travelCLINValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_odcValue",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "_totalAwardValue",
"type": "uint256"
}
],
"name": "createGrant",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.8.2+commit.661d1103\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"PAUSER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"awards\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"awardeeName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"awardeeAddr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"cageCode\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"naicsCode\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"grantNumber\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"effectiveDate\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"completionDate\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"laborCLINValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"travelCLINValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"odcValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalAwardValue\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"completed\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"_awardeeName\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"_awardeeAddr\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"_cageCode\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_naicsCode\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_grantNumber\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_effectiveDate\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_completionDate\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"_laborCLINValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_travelCLINValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_odcValue\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_totalAwardValue\",\"type\":\"uint256\"}],\"name\":\"createGrant\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNumberAwards\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"custom:security-contact\":\"[email protected]\",\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"burn(uint256)\":{\"details\":\"Destroys `amount` tokens from the caller. See {ERC20-_burn}.\"},\"burnFrom(address,uint256)\":{\"details\":\"Destroys `amount` tokens from `account`, deducting from the caller's allowance. See {ERC20-_burn} and {ERC20-allowance}. Requirements: - the caller must have allowance for ``accounts``'s tokens of at least `amount`.\"},\"createGrant(string,address,string,string,string,string,string,uint256,uint256,uint256,uint256)\":{\"details\":\"creates a new grant and pushes the struct to the end of the awards array only the contract Owner can create a new grant\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5.05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"getNumberAwards()\":{\"details\":\"Returns the number of awards in the AwardInfo array\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"mint(address,uint256)\":{\"details\":\"Creates `amount` tokens and assigns them to `account`, increasing the total supply. Emits a {Transfer} event with `from` set to the zero address. Requirements: - `account` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pause()\":{\"details\":\"pauses the contract\"},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unpause()\":{\"details\":\"unpauses the contract\"}},\"stateVariables\":{\"awards\":{\"details\":\"Create an array of 'AwardInfo' structs\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"getNumberAwards()\":{\"notice\":\"Returns the number of awards in the AwardInfo array\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/GrantManager.sol\":\"GrantManager\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x6bb804a310218875e89d12c053e94a13a4607cdf7cc2052f3e52bd32a0dc50a1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2ebbbe6d0011175bd9e7268b83de3f9c2f9d8d4cbfbaef12aff977d7d727163\",\"dweb:/ipfs/Qmd5c7Vxtis9wzkDNhxwc6A2QT5H9xn9kfjhx7qx44vpro\"]},\"@openzeppelin/contracts/security/Pausable.sol\":{\"keccak256\":\"0xa35b1f2a670cd2a701a52c398032c9fed72df1909fe394d77ceacbf074e8937b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72b957861691ebdaa78c52834465c4f8296480fe4f1a12ba72dc6c0c8ac076dd\",\"dweb:/ipfs/QmVz1sHCwgEivHPRDswdt9tdvky7EnWqFmbuk1wFE55VMG\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb03df8481a954604ad0c9125680893b2e3f7ff770fe470e38b89ac61b84e8072\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b34655953d18ba3a45b762fb6bdbb6549af69a27435e10ece178742bf70baf45\",\"dweb:/ipfs/QmcqjUoFLLMyx7dbwSHUnDBH6aphkVHXWQvQRRev5EAWEh\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x027b891937d20ccf213fdb9c31531574256de774bda99d3a70ecef6e1913ed2a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://087318b21c528119f649899f5b5580566dd8d7b0303d4904bd0e8580c3545f14\",\"dweb:/ipfs/Qmbn5Mj7aUn8hJuQ8VrQjjEXRsXyJKykgnjR9p4C3nfLtL\"]},\"@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol\":{\"keccak256\":\"0xf98cb1651a90d20ef77d8c1dd10d5fce4954e747603e5672a8292bd4368120dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76b539a8edd558b010d1ff3e462c5d4edd039b790b91f31a5bce18957655cc9f\",\"dweb:/ipfs/QmSdJehhx1SwCWLSFFgHQTmUY2YwDTBQjTVjkmhXhA1srb\"]},\"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x83fe24f5c04a56091e50f4a345ff504c8bff658a76d4c43b16878c8f940c53b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d4c3df1a7ca104b633a7d81c6c6f5192367d150cd5a32cba81f7f27012729013\",\"dweb:/ipfs/QmSim72e3ZVsfgZt8UceCvbiSuMRHR6WDsiamqNzZahGSY\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x90565a39ae45c80f0468dc96c7b20d0afc3055f344c8203a0c9258239f350b9f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e8b38a7ac8e7b4463af00cf7fff1bf48ae9875765bf4f7751e100124d0bc8c\",\"dweb:/ipfs/QmWcsmkVr24xmmjfnBQZoemFniXjj3vwT78Cz6uqZW1Hux\"]},\"project:/contracts/GrantManager.sol\":{\"keccak256\":\"0x0f29c3d549ff4d50bc609a520b095e6d9ebb729eb128dfa54b2b4fea3db97dd3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dc7620afeb0c3bf7ec655003dad38c0e7c4a9e192bc329cdfc919a11f87d40e1\",\"dweb:/ipfs/QmYCqyGiUFt8gb15RQLLnyvVhWeUERxjNGrgCtJrG3csQp\"]}},\"version\":1}",
"bytecode": "0x60806040523480156200001157600080fd5b506040518060400160405280600a81526020017f4e534643546f6b656e73000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4e53464300000000000000000000000000000000000000000000000000000000815250816003908051906020019062000096929190620001c1565b508060049080519060200190620000af929190620001c1565b505050620000d2620000c6620000f360201b60201c565b620000fb60201b60201c565b6000600560146101000a81548160ff021916908315150217905550620002d6565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054620001cf9062000271565b90600052602060002090601f016020900481019282620001f357600085556200023f565b82601f106200020e57805160ff19168380011785556200023f565b828001600101855582156200023f579182015b828111156200023e57825182559160200191906001019062000221565b5b5090506200024e919062000252565b5090565b5b808211156200026d57600081600090555060010162000253565b5090565b600060028204905060018216806200028a57607f821691505b60208210811415620002a157620002a0620002a7565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b61307380620002e66000396000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d71461037d578063a9059cbb146103ad578063dd62ed3e146103dd578063e63ab1e91461040d578063f2fde38b1461042b578063fc5a5b631461044757610158565b806370a08231146102e1578063715018a61461031157806379cc67901461031b5780638456cb59146103375780638da5cb5b1461034157806395d89b411461035f57610158565b8063313ce56711610115578063313ce5671461023357806339509351146102515780633f4ba83a1461028157806340c10f191461028b57806342966c68146102a75780635c975abb146102c357610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063250b5dd1146101f95780632766c8cf14610215575b600080fd5b610165610482565b6040516101729190612474565b60405180910390f35b61019560048036038101906101909190611fad565b610514565b6040516101a2919061243e565b60405180910390f35b6101b3610532565b6040516101c0919061275a565b60405180910390f35b6101e360048036038101906101de9190611f5e565b61053c565b6040516101f0919061243e565b60405180910390f35b610213600480360381019061020e9190611fe9565b610634565b005b61021d6108ab565b60405161022a919061275a565b60405180910390f35b61023b6108b8565b6040516102489190612775565b60405180910390f35b61026b60048036038101906102669190611fad565b6108c1565b604051610278919061243e565b60405180910390f35b61028961096d565b005b6102a560048036038101906102a09190611fad565b6109f3565b005b6102c160048036038101906102bc9190612169565b610a9b565b005b6102cb610aaf565b6040516102d8919061243e565b60405180910390f35b6102fb60048036038101906102f69190611ef9565b610ac6565b604051610308919061275a565b60405180910390f35b610319610b0e565b005b61033560048036038101906103309190611fad565b610b96565b005b61033f610c11565b005b610349610c97565b6040516103569190612423565b60405180910390f35b610367610cc1565b6040516103749190612474565b60405180910390f35b61039760048036038101906103929190611fad565b610d53565b6040516103a4919061243e565b60405180910390f35b6103c760048036038101906103c29190611fad565b610e3e565b6040516103d4919061243e565b60405180910390f35b6103f760048036038101906103f29190611f22565b610e5c565b604051610404919061275a565b60405180910390f35b610415610ee3565b6040516104229190612459565b60405180910390f35b61044560048036038101906104409190611ef9565b610f07565b005b610461600480360381019061045c9190612169565b610fff565b6040516104799c9b9a99989796959493929190612496565b60405180910390f35b60606003805461049190612af8565b80601f01602080910402602001604051908101604052809291908181526020018280546104bd90612af8565b801561050a5780601f106104df5761010080835404028352916020019161050a565b820191906000526020600020905b8154815290600101906020018083116104ed57829003601f168201915b5050505050905090565b60006105286105216113cc565b84846113d4565b6001905092915050565b6000600254905090565b600061054984848461159f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105946113cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061265a565b60405180910390fd5b610628856106206113cc565b8584036113d4565b60019150509392505050565b61063c6113cc565b73ffffffffffffffffffffffffffffffffffffffff1661065a610c97565b73ffffffffffffffffffffffffffffffffffffffff16146106b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a79061267a565b60405180910390fd5b60066040518061018001604052808d81526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020016000151581525090806001815401808255809150506001900390600052602060002090600c02016000909190919091506000820151816000019080519060200190610762929190611dc4565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190805190602001906107c6929190611dc4565b5060608201518160030190805190602001906107e3929190611dc4565b506080820151816004019080519060200190610800929190611dc4565b5060a082015181600501908051906020019061081d929190611dc4565b5060c082015181600601908051906020019061083a929190611dc4565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555050506108938a826109f3565b61089d8a826108c1565b505050505050505050505050565b6000600680549050905090565b60006012905090565b60006109636108ce6113cc565b8484600160006108dc6113cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461095e9190612802565b6113d4565b6001905092915050565b6109756113cc565b73ffffffffffffffffffffffffffffffffffffffff16610993610c97565b73ffffffffffffffffffffffffffffffffffffffff16146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e09061267a565b60405180910390fd5b6109f1611820565b565b6109fb6113cc565b73ffffffffffffffffffffffffffffffffffffffff16610a19610c97565b73ffffffffffffffffffffffffffffffffffffffff1614610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a669061267a565b60405180910390fd5b610a9782610a7b6108b8565b600a610a8791906128ab565b83610a9291906129c9565b6118c2565b5050565b610aac610aa66113cc565b82611a22565b50565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b166113cc565b73ffffffffffffffffffffffffffffffffffffffff16610b34610c97565b73ffffffffffffffffffffffffffffffffffffffff1614610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b819061267a565b60405180910390fd5b610b946000611bf9565b565b6000610ba983610ba46113cc565b610e5c565b905081811015610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be59061269a565b60405180910390fd5b610c0283610bfa6113cc565b8484036113d4565b610c0c8383611a22565b505050565b610c196113cc565b73ffffffffffffffffffffffffffffffffffffffff16610c37610c97565b73ffffffffffffffffffffffffffffffffffffffff1614610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c849061267a565b60405180910390fd5b610c95611cbf565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610cd090612af8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfc90612af8565b8015610d495780601f10610d1e57610100808354040283529160200191610d49565b820191906000526020600020905b815481529060010190602001808311610d2c57829003601f168201915b5050505050905090565b60008060016000610d626113cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e169061271a565b60405180910390fd5b610e33610e2a6113cc565b858584036113d4565b600191505092915050565b6000610e52610e4b6113cc565b848461159f565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610f0f6113cc565b73ffffffffffffffffffffffffffffffffffffffff16610f2d610c97565b73ffffffffffffffffffffffffffffffffffffffff1614610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a9061267a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea906125da565b60405180910390fd5b610ffc81611bf9565b50565b6006818154811061100f57600080fd5b90600052602060002090600c020160009150905080600001805461103290612af8565b80601f016020809104026020016040519081016040528092919081815260200182805461105e90612af8565b80156110ab5780601f10611080576101008083540402835291602001916110ab565b820191906000526020600020905b81548152906001019060200180831161108e57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020180546110e690612af8565b80601f016020809104026020016040519081016040528092919081815260200182805461111290612af8565b801561115f5780601f106111345761010080835404028352916020019161115f565b820191906000526020600020905b81548152906001019060200180831161114257829003601f168201915b50505050509080600301805461117490612af8565b80601f01602080910402602001604051908101604052809291908181526020018280546111a090612af8565b80156111ed5780601f106111c2576101008083540402835291602001916111ed565b820191906000526020600020905b8154815290600101906020018083116111d057829003601f168201915b50505050509080600401805461120290612af8565b80601f016020809104026020016040519081016040528092919081815260200182805461122e90612af8565b801561127b5780601f106112505761010080835404028352916020019161127b565b820191906000526020600020905b81548152906001019060200180831161125e57829003601f168201915b50505050509080600501805461129090612af8565b80601f01602080910402602001604051908101604052809291908181526020018280546112bc90612af8565b80156113095780601f106112de57610100808354040283529160200191611309565b820191906000526020600020905b8154815290600101906020018083116112ec57829003601f168201915b50505050509080600601805461131e90612af8565b80601f016020809104026020016040519081016040528092919081815260200182805461134a90612af8565b80156113975780601f1061136c57610100808354040283529160200191611397565b820191906000526020600020905b81548152906001019060200180831161137a57829003601f168201915b50505050509080600701549080600801549080600901549080600a01549080600b0160009054906101000a900460ff1690508c565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143b906126fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ab906125fa565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611592919061275a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561160f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611606906126da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561167f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116769061257a565b60405180910390fd5b61168a838383611d62565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611710576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117079061261a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117a39190612802565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611807919061275a565b60405180910390a361181a848484611dba565b50505050565b611828610aaf565b611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e9061259a565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6118ab6113cc565b6040516118b89190612423565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119299061273a565b60405180910390fd5b61193e60008383611d62565b80600260008282546119509190612802565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119a59190612802565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0a919061275a565b60405180910390a3611a1e60008383611dba565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a89906126ba565b60405180910390fd5b611a9e82600083611d62565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b906125ba565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611b7b9190612a23565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611be0919061275a565b60405180910390a3611bf483600084611dba565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611cc7610aaf565b15611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe9061263a565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d4b6113cc565b604051611d589190612423565b60405180910390a1565b611d6a610aaf565b15611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da19061263a565b60405180910390fd5b611db5838383611dbf565b505050565b505050565b505050565b828054611dd090612af8565b90600052602060002090601f016020900481019282611df25760008555611e39565b82601f10611e0b57805160ff1916838001178555611e39565b82800160010185558215611e39579182015b82811115611e38578251825591602001919060010190611e1d565b5b509050611e469190611e4a565b5090565b5b80821115611e63576000816000905550600101611e4b565b5090565b6000611e7a611e75846127b5565b612790565b905082815260208101848484011115611e9257600080fd5b611e9d848285612ab6565b509392505050565b600081359050611eb48161300f565b92915050565b600082601f830112611ecb57600080fd5b8135611edb848260208601611e67565b91505092915050565b600081359050611ef381613026565b92915050565b600060208284031215611f0b57600080fd5b6000611f1984828501611ea5565b91505092915050565b60008060408385031215611f3557600080fd5b6000611f4385828601611ea5565b9250506020611f5485828601611ea5565b9150509250929050565b600080600060608486031215611f7357600080fd5b6000611f8186828701611ea5565b9350506020611f9286828701611ea5565b9250506040611fa386828701611ee4565b9150509250925092565b60008060408385031215611fc057600080fd5b6000611fce85828601611ea5565b9250506020611fdf85828601611ee4565b9150509250929050565b60008060008060008060008060008060006101608c8e03121561200b57600080fd5b60008c013567ffffffffffffffff81111561202557600080fd5b6120318e828f01611eba565b9b505060206120428e828f01611ea5565b9a505060408c013567ffffffffffffffff81111561205f57600080fd5b61206b8e828f01611eba565b99505060608c013567ffffffffffffffff81111561208857600080fd5b6120948e828f01611eba565b98505060808c013567ffffffffffffffff8111156120b157600080fd5b6120bd8e828f01611eba565b97505060a08c013567ffffffffffffffff8111156120da57600080fd5b6120e68e828f01611eba565b96505060c08c013567ffffffffffffffff81111561210357600080fd5b61210f8e828f01611eba565b95505060e06121208e828f01611ee4565b9450506101006121328e828f01611ee4565b9350506101206121448e828f01611ee4565b9250506101406121568e828f01611ee4565b9150509295989b509295989b9093969950565b60006020828403121561217b57600080fd5b600061218984828501611ee4565b91505092915050565b61219b81612a57565b82525050565b6121aa81612a69565b82525050565b6121b981612a75565b82525050565b60006121ca826127e6565b6121d481856127f1565b93506121e4818560208601612ac5565b6121ed81612be8565b840191505092915050565b60006122056023836127f1565b915061221082612c06565b604082019050919050565b60006122286014836127f1565b915061223382612c55565b602082019050919050565b600061224b6022836127f1565b915061225682612c7e565b604082019050919050565b600061226e6026836127f1565b915061227982612ccd565b604082019050919050565b60006122916022836127f1565b915061229c82612d1c565b604082019050919050565b60006122b46026836127f1565b91506122bf82612d6b565b604082019050919050565b60006122d76010836127f1565b91506122e282612dba565b602082019050919050565b60006122fa6028836127f1565b915061230582612de3565b604082019050919050565b600061231d6020836127f1565b915061232882612e32565b602082019050919050565b60006123406024836127f1565b915061234b82612e5b565b604082019050919050565b60006123636021836127f1565b915061236e82612eaa565b604082019050919050565b60006123866025836127f1565b915061239182612ef9565b604082019050919050565b60006123a96024836127f1565b91506123b482612f48565b604082019050919050565b60006123cc6025836127f1565b91506123d782612f97565b604082019050919050565b60006123ef601f836127f1565b91506123fa82612fe6565b602082019050919050565b61240e81612a9f565b82525050565b61241d81612aa9565b82525050565b60006020820190506124386000830184612192565b92915050565b600060208201905061245360008301846121a1565b92915050565b600060208201905061246e60008301846121b0565b92915050565b6000602082019050818103600083015261248e81846121bf565b905092915050565b60006101808201905081810360008301526124b1818f6121bf565b90506124c0602083018e612192565b81810360408301526124d2818d6121bf565b905081810360608301526124e6818c6121bf565b905081810360808301526124fa818b6121bf565b905081810360a083015261250e818a6121bf565b905081810360c083015261252281896121bf565b905061253160e0830188612405565b61253f610100830187612405565b61254d610120830186612405565b61255b610140830185612405565b6125696101608301846121a1565b9d9c50505050505050505050505050565b60006020820190508181036000830152612593816121f8565b9050919050565b600060208201905081810360008301526125b38161221b565b9050919050565b600060208201905081810360008301526125d38161223e565b9050919050565b600060208201905081810360008301526125f381612261565b9050919050565b6000602082019050818103600083015261261381612284565b9050919050565b60006020820190508181036000830152612633816122a7565b9050919050565b60006020820190508181036000830152612653816122ca565b9050919050565b60006020820190508181036000830152612673816122ed565b9050919050565b6000602082019050818103600083015261269381612310565b9050919050565b600060208201905081810360008301526126b381612333565b9050919050565b600060208201905081810360008301526126d381612356565b9050919050565b600060208201905081810360008301526126f381612379565b9050919050565b600060208201905081810360008301526127138161239c565b9050919050565b60006020820190508181036000830152612733816123bf565b9050919050565b60006020820190508181036000830152612753816123e2565b9050919050565b600060208201905061276f6000830184612405565b92915050565b600060208201905061278a6000830184612414565b92915050565b600061279a6127ab565b90506127a68282612b2a565b919050565b6000604051905090565b600067ffffffffffffffff8211156127d0576127cf612bb9565b5b6127d982612be8565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061280d82612a9f565b915061281883612a9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561284d5761284c612b5b565b5b828201905092915050565b6000808291508390505b60018511156128a25780860481111561287e5761287d612b5b565b5b600185161561288d5780820291505b808102905061289b85612bf9565b9450612862565b94509492505050565b60006128b682612a9f565b91506128c183612aa9565b92506128ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128f6565b905092915050565b60008261290657600190506129c2565b8161291457600090506129c2565b816001811461292a576002811461293457612963565b60019150506129c2565b60ff84111561294657612945612b5b565b5b8360020a91508482111561295d5761295c612b5b565b5b506129c2565b5060208310610133831016604e8410600b84101617156129985782820a90508381111561299357612992612b5b565b5b6129c2565b6129a58484846001612858565b925090508184048111156129bc576129bb612b5b565b5b81810290505b9392505050565b60006129d482612a9f565b91506129df83612a9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a1857612a17612b5b565b5b828202905092915050565b6000612a2e82612a9f565b9150612a3983612a9f565b925082821015612a4c57612a4b612b5b565b5b828203905092915050565b6000612a6282612a7f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612ae3578082015181840152602081019050612ac8565b83811115612af2576000848401525b50505050565b60006002820490506001821680612b1057607f821691505b60208210811415612b2457612b23612b8a565b5b50919050565b612b3382612be8565b810181811067ffffffffffffffff82111715612b5257612b51612bb9565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61301881612a57565b811461302357600080fd5b50565b61302f81612a9f565b811461303a57600080fd5b5056fea2646970667358221220a910859918f88bbf2de24a9d4baa7bbe23e0673a9ffe976963a373811ff48be864736f6c63430008020033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101585760003560e01c806370a08231116100c3578063a457c2d71161007c578063a457c2d71461037d578063a9059cbb146103ad578063dd62ed3e146103dd578063e63ab1e91461040d578063f2fde38b1461042b578063fc5a5b631461044757610158565b806370a08231146102e1578063715018a61461031157806379cc67901461031b5780638456cb59146103375780638da5cb5b1461034157806395d89b411461035f57610158565b8063313ce56711610115578063313ce5671461023357806339509351146102515780633f4ba83a1461028157806340c10f191461028b57806342966c68146102a75780635c975abb146102c357610158565b806306fdde031461015d578063095ea7b31461017b57806318160ddd146101ab57806323b872dd146101c9578063250b5dd1146101f95780632766c8cf14610215575b600080fd5b610165610482565b6040516101729190612474565b60405180910390f35b61019560048036038101906101909190611fad565b610514565b6040516101a2919061243e565b60405180910390f35b6101b3610532565b6040516101c0919061275a565b60405180910390f35b6101e360048036038101906101de9190611f5e565b61053c565b6040516101f0919061243e565b60405180910390f35b610213600480360381019061020e9190611fe9565b610634565b005b61021d6108ab565b60405161022a919061275a565b60405180910390f35b61023b6108b8565b6040516102489190612775565b60405180910390f35b61026b60048036038101906102669190611fad565b6108c1565b604051610278919061243e565b60405180910390f35b61028961096d565b005b6102a560048036038101906102a09190611fad565b6109f3565b005b6102c160048036038101906102bc9190612169565b610a9b565b005b6102cb610aaf565b6040516102d8919061243e565b60405180910390f35b6102fb60048036038101906102f69190611ef9565b610ac6565b604051610308919061275a565b60405180910390f35b610319610b0e565b005b61033560048036038101906103309190611fad565b610b96565b005b61033f610c11565b005b610349610c97565b6040516103569190612423565b60405180910390f35b610367610cc1565b6040516103749190612474565b60405180910390f35b61039760048036038101906103929190611fad565b610d53565b6040516103a4919061243e565b60405180910390f35b6103c760048036038101906103c29190611fad565b610e3e565b6040516103d4919061243e565b60405180910390f35b6103f760048036038101906103f29190611f22565b610e5c565b604051610404919061275a565b60405180910390f35b610415610ee3565b6040516104229190612459565b60405180910390f35b61044560048036038101906104409190611ef9565b610f07565b005b610461600480360381019061045c9190612169565b610fff565b6040516104799c9b9a99989796959493929190612496565b60405180910390f35b60606003805461049190612af8565b80601f01602080910402602001604051908101604052809291908181526020018280546104bd90612af8565b801561050a5780601f106104df5761010080835404028352916020019161050a565b820191906000526020600020905b8154815290600101906020018083116104ed57829003601f168201915b5050505050905090565b60006105286105216113cc565b84846113d4565b6001905092915050565b6000600254905090565b600061054984848461159f565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105946113cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610614576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060b9061265a565b60405180910390fd5b610628856106206113cc565b8584036113d4565b60019150509392505050565b61063c6113cc565b73ffffffffffffffffffffffffffffffffffffffff1661065a610c97565b73ffffffffffffffffffffffffffffffffffffffff16146106b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106a79061267a565b60405180910390fd5b60066040518061018001604052808d81526020018c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018481526020018381526020016000151581525090806001815401808255809150506001900390600052602060002090600c02016000909190919091506000820151816000019080519060200190610762929190611dc4565b5060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060408201518160020190805190602001906107c6929190611dc4565b5060608201518160030190805190602001906107e3929190611dc4565b506080820151816004019080519060200190610800929190611dc4565b5060a082015181600501908051906020019061081d929190611dc4565b5060c082015181600601908051906020019061083a929190611dc4565b5060e082015181600701556101008201518160080155610120820151816009015561014082015181600a015561016082015181600b0160006101000a81548160ff02191690831515021790555050506108938a826109f3565b61089d8a826108c1565b505050505050505050505050565b6000600680549050905090565b60006012905090565b60006109636108ce6113cc565b8484600160006108dc6113cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461095e9190612802565b6113d4565b6001905092915050565b6109756113cc565b73ffffffffffffffffffffffffffffffffffffffff16610993610c97565b73ffffffffffffffffffffffffffffffffffffffff16146109e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e09061267a565b60405180910390fd5b6109f1611820565b565b6109fb6113cc565b73ffffffffffffffffffffffffffffffffffffffff16610a19610c97565b73ffffffffffffffffffffffffffffffffffffffff1614610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a669061267a565b60405180910390fd5b610a9782610a7b6108b8565b600a610a8791906128ab565b83610a9291906129c9565b6118c2565b5050565b610aac610aa66113cc565b82611a22565b50565b6000600560149054906101000a900460ff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b166113cc565b73ffffffffffffffffffffffffffffffffffffffff16610b34610c97565b73ffffffffffffffffffffffffffffffffffffffff1614610b8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b819061267a565b60405180910390fd5b610b946000611bf9565b565b6000610ba983610ba46113cc565b610e5c565b905081811015610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be59061269a565b60405180910390fd5b610c0283610bfa6113cc565b8484036113d4565b610c0c8383611a22565b505050565b610c196113cc565b73ffffffffffffffffffffffffffffffffffffffff16610c37610c97565b73ffffffffffffffffffffffffffffffffffffffff1614610c8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c849061267a565b60405180910390fd5b610c95611cbf565b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610cd090612af8565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfc90612af8565b8015610d495780601f10610d1e57610100808354040283529160200191610d49565b820191906000526020600020905b815481529060010190602001808311610d2c57829003601f168201915b5050505050905090565b60008060016000610d626113cc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610e1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e169061271a565b60405180910390fd5b610e33610e2a6113cc565b858584036113d4565b600191505092915050565b6000610e52610e4b6113cc565b848461159f565b6001905092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b610f0f6113cc565b73ffffffffffffffffffffffffffffffffffffffff16610f2d610c97565b73ffffffffffffffffffffffffffffffffffffffff1614610f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7a9061267a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fea906125da565b60405180910390fd5b610ffc81611bf9565b50565b6006818154811061100f57600080fd5b90600052602060002090600c020160009150905080600001805461103290612af8565b80601f016020809104026020016040519081016040528092919081815260200182805461105e90612af8565b80156110ab5780601f10611080576101008083540402835291602001916110ab565b820191906000526020600020905b81548152906001019060200180831161108e57829003601f168201915b5050505050908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060020180546110e690612af8565b80601f016020809104026020016040519081016040528092919081815260200182805461111290612af8565b801561115f5780601f106111345761010080835404028352916020019161115f565b820191906000526020600020905b81548152906001019060200180831161114257829003601f168201915b50505050509080600301805461117490612af8565b80601f01602080910402602001604051908101604052809291908181526020018280546111a090612af8565b80156111ed5780601f106111c2576101008083540402835291602001916111ed565b820191906000526020600020905b8154815290600101906020018083116111d057829003601f168201915b50505050509080600401805461120290612af8565b80601f016020809104026020016040519081016040528092919081815260200182805461122e90612af8565b801561127b5780601f106112505761010080835404028352916020019161127b565b820191906000526020600020905b81548152906001019060200180831161125e57829003601f168201915b50505050509080600501805461129090612af8565b80601f01602080910402602001604051908101604052809291908181526020018280546112bc90612af8565b80156113095780601f106112de57610100808354040283529160200191611309565b820191906000526020600020905b8154815290600101906020018083116112ec57829003601f168201915b50505050509080600601805461131e90612af8565b80601f016020809104026020016040519081016040528092919081815260200182805461134a90612af8565b80156113975780601f1061136c57610100808354040283529160200191611397565b820191906000526020600020905b81548152906001019060200180831161137a57829003601f168201915b50505050509080600701549080600801549080600901549080600a01549080600b0160009054906101000a900460ff1690508c565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143b906126fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ab906125fa565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611592919061275a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561160f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611606906126da565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561167f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116769061257a565b60405180910390fd5b61168a838383611d62565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611710576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117079061261a565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117a39190612802565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611807919061275a565b60405180910390a361181a848484611dba565b50505050565b611828610aaf565b611867576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185e9061259a565b60405180910390fd5b6000600560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6118ab6113cc565b6040516118b89190612423565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611932576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119299061273a565b60405180910390fd5b61193e60008383611d62565b80600260008282546119509190612802565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546119a59190612802565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a0a919061275a565b60405180910390a3611a1e60008383611dba565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a89906126ba565b60405180910390fd5b611a9e82600083611d62565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611b24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1b906125ba565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611b7b9190612a23565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611be0919061275a565b60405180910390a3611bf483600084611dba565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611cc7610aaf565b15611d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfe9061263a565b60405180910390fd5b6001600560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611d4b6113cc565b604051611d589190612423565b60405180910390a1565b611d6a610aaf565b15611daa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da19061263a565b60405180910390fd5b611db5838383611dbf565b505050565b505050565b505050565b828054611dd090612af8565b90600052602060002090601f016020900481019282611df25760008555611e39565b82601f10611e0b57805160ff1916838001178555611e39565b82800160010185558215611e39579182015b82811115611e38578251825591602001919060010190611e1d565b5b509050611e469190611e4a565b5090565b5b80821115611e63576000816000905550600101611e4b565b5090565b6000611e7a611e75846127b5565b612790565b905082815260208101848484011115611e9257600080fd5b611e9d848285612ab6565b509392505050565b600081359050611eb48161300f565b92915050565b600082601f830112611ecb57600080fd5b8135611edb848260208601611e67565b91505092915050565b600081359050611ef381613026565b92915050565b600060208284031215611f0b57600080fd5b6000611f1984828501611ea5565b91505092915050565b60008060408385031215611f3557600080fd5b6000611f4385828601611ea5565b9250506020611f5485828601611ea5565b9150509250929050565b600080600060608486031215611f7357600080fd5b6000611f8186828701611ea5565b9350506020611f9286828701611ea5565b9250506040611fa386828701611ee4565b9150509250925092565b60008060408385031215611fc057600080fd5b6000611fce85828601611ea5565b9250506020611fdf85828601611ee4565b9150509250929050565b60008060008060008060008060008060006101608c8e03121561200b57600080fd5b60008c013567ffffffffffffffff81111561202557600080fd5b6120318e828f01611eba565b9b505060206120428e828f01611ea5565b9a505060408c013567ffffffffffffffff81111561205f57600080fd5b61206b8e828f01611eba565b99505060608c013567ffffffffffffffff81111561208857600080fd5b6120948e828f01611eba565b98505060808c013567ffffffffffffffff8111156120b157600080fd5b6120bd8e828f01611eba565b97505060a08c013567ffffffffffffffff8111156120da57600080fd5b6120e68e828f01611eba565b96505060c08c013567ffffffffffffffff81111561210357600080fd5b61210f8e828f01611eba565b95505060e06121208e828f01611ee4565b9450506101006121328e828f01611ee4565b9350506101206121448e828f01611ee4565b9250506101406121568e828f01611ee4565b9150509295989b509295989b9093969950565b60006020828403121561217b57600080fd5b600061218984828501611ee4565b91505092915050565b61219b81612a57565b82525050565b6121aa81612a69565b82525050565b6121b981612a75565b82525050565b60006121ca826127e6565b6121d481856127f1565b93506121e4818560208601612ac5565b6121ed81612be8565b840191505092915050565b60006122056023836127f1565b915061221082612c06565b604082019050919050565b60006122286014836127f1565b915061223382612c55565b602082019050919050565b600061224b6022836127f1565b915061225682612c7e565b604082019050919050565b600061226e6026836127f1565b915061227982612ccd565b604082019050919050565b60006122916022836127f1565b915061229c82612d1c565b604082019050919050565b60006122b46026836127f1565b91506122bf82612d6b565b604082019050919050565b60006122d76010836127f1565b91506122e282612dba565b602082019050919050565b60006122fa6028836127f1565b915061230582612de3565b604082019050919050565b600061231d6020836127f1565b915061232882612e32565b602082019050919050565b60006123406024836127f1565b915061234b82612e5b565b604082019050919050565b60006123636021836127f1565b915061236e82612eaa565b604082019050919050565b60006123866025836127f1565b915061239182612ef9565b604082019050919050565b60006123a96024836127f1565b91506123b482612f48565b604082019050919050565b60006123cc6025836127f1565b91506123d782612f97565b604082019050919050565b60006123ef601f836127f1565b91506123fa82612fe6565b602082019050919050565b61240e81612a9f565b82525050565b61241d81612aa9565b82525050565b60006020820190506124386000830184612192565b92915050565b600060208201905061245360008301846121a1565b92915050565b600060208201905061246e60008301846121b0565b92915050565b6000602082019050818103600083015261248e81846121bf565b905092915050565b60006101808201905081810360008301526124b1818f6121bf565b90506124c0602083018e612192565b81810360408301526124d2818d6121bf565b905081810360608301526124e6818c6121bf565b905081810360808301526124fa818b6121bf565b905081810360a083015261250e818a6121bf565b905081810360c083015261252281896121bf565b905061253160e0830188612405565b61253f610100830187612405565b61254d610120830186612405565b61255b610140830185612405565b6125696101608301846121a1565b9d9c50505050505050505050505050565b60006020820190508181036000830152612593816121f8565b9050919050565b600060208201905081810360008301526125b38161221b565b9050919050565b600060208201905081810360008301526125d38161223e565b9050919050565b600060208201905081810360008301526125f381612261565b9050919050565b6000602082019050818103600083015261261381612284565b9050919050565b60006020820190508181036000830152612633816122a7565b9050919050565b60006020820190508181036000830152612653816122ca565b9050919050565b60006020820190508181036000830152612673816122ed565b9050919050565b6000602082019050818103600083015261269381612310565b9050919050565b600060208201905081810360008301526126b381612333565b9050919050565b600060208201905081810360008301526126d381612356565b9050919050565b600060208201905081810360008301526126f381612379565b9050919050565b600060208201905081810360008301526127138161239c565b9050919050565b60006020820190508181036000830152612733816123bf565b9050919050565b60006020820190508181036000830152612753816123e2565b9050919050565b600060208201905061276f6000830184612405565b92915050565b600060208201905061278a6000830184612414565b92915050565b600061279a6127ab565b90506127a68282612b2a565b919050565b6000604051905090565b600067ffffffffffffffff8211156127d0576127cf612bb9565b5b6127d982612be8565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600061280d82612a9f565b915061281883612a9f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561284d5761284c612b5b565b5b828201905092915050565b6000808291508390505b60018511156128a25780860481111561287e5761287d612b5b565b5b600185161561288d5780820291505b808102905061289b85612bf9565b9450612862565b94509492505050565b60006128b682612a9f565b91506128c183612aa9565b92506128ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846128f6565b905092915050565b60008261290657600190506129c2565b8161291457600090506129c2565b816001811461292a576002811461293457612963565b60019150506129c2565b60ff84111561294657612945612b5b565b5b8360020a91508482111561295d5761295c612b5b565b5b506129c2565b5060208310610133831016604e8410600b84101617156129985782820a90508381111561299357612992612b5b565b5b6129c2565b6129a58484846001612858565b925090508184048111156129bc576129bb612b5b565b5b81810290505b9392505050565b60006129d482612a9f565b91506129df83612a9f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612a1857612a17612b5b565b5b828202905092915050565b6000612a2e82612a9f565b9150612a3983612a9f565b925082821015612a4c57612a4b612b5b565b5b828203905092915050565b6000612a6282612a7f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b83811015612ae3578082015181840152602081019050612ac8565b83811115612af2576000848401525b50505050565b60006002820490506001821680612b1057607f821691505b60208210811415612b2457612b23612b8a565b5b50919050565b612b3382612be8565b810181811067ffffffffffffffff82111715612b5257612b51612bb9565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f7760008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b61301881612a57565b811461302357600080fd5b50565b61302f81612a9f565b811461303a57600080fd5b5056fea2646970667358221220a910859918f88bbf2de24a9d4baa7bbe23e0673a9ffe976963a373811ff48be864736f6c63430008020033",
"immutableReferences": {},
"generatedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:516:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "58:269:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "68:22:8",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "82:4:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "88:1:8",
"type": "",
"value": "2"
}
],
"functionName": {
"name": "div",
"nodeType": "YulIdentifier",
"src": "78:3:8"
},
"nodeType": "YulFunctionCall",
"src": "78:12:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "68:6:8"
}
]
},
{
"nodeType": "YulVariableDeclaration",
"src": "99:38:8",
"value": {
"arguments": [
{
"name": "data",
"nodeType": "YulIdentifier",
"src": "129:4:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "135:1:8",
"type": "",
"value": "1"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "125:3:8"
},
"nodeType": "YulFunctionCall",
"src": "125:12:8"
},
"variables": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulTypedName",
"src": "103:18:8",
"type": ""
}
]
},
{
"body": {
"nodeType": "YulBlock",
"src": "176:51:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "190:27:8",
"value": {
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "204:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "212:4:8",
"type": "",
"value": "0x7f"
}
],
"functionName": {
"name": "and",
"nodeType": "YulIdentifier",
"src": "200:3:8"
},
"nodeType": "YulFunctionCall",
"src": "200:17:8"
},
"variableNames": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "190:6:8"
}
]
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "156:18:8"
}
],
"functionName": {
"name": "iszero",
"nodeType": "YulIdentifier",
"src": "149:6:8"
},
"nodeType": "YulFunctionCall",
"src": "149:26:8"
},
"nodeType": "YulIf",
"src": "146:2:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "279:42:8",
"statements": [
{
"expression": {
"arguments": [],
"functionName": {
"name": "panic_error_0x22",
"nodeType": "YulIdentifier",
"src": "293:16:8"
},
"nodeType": "YulFunctionCall",
"src": "293:18:8"
},
"nodeType": "YulExpressionStatement",
"src": "293:18:8"
}
]
},
"condition": {
"arguments": [
{
"name": "outOfPlaceEncoding",
"nodeType": "YulIdentifier",
"src": "243:18:8"
},
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "266:6:8"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "274:2:8",
"type": "",
"value": "32"
}
],
"functionName": {
"name": "lt",
"nodeType": "YulIdentifier",
"src": "263:2:8"
},
"nodeType": "YulFunctionCall",
"src": "263:14:8"
}
],
"functionName": {
"name": "eq",
"nodeType": "YulIdentifier",
"src": "240:2:8"
},
"nodeType": "YulFunctionCall",
"src": "240:38:8"
},
"nodeType": "YulIf",
"src": "237:2:8"
}
]
},
"name": "extract_byte_array_length",
"nodeType": "YulFunctionDefinition",
"parameters": [
{
"name": "data",
"nodeType": "YulTypedName",
"src": "42:4:8",
"type": ""
}
],
"returnVariables": [
{
"name": "length",
"nodeType": "YulTypedName",
"src": "51:6:8",
"type": ""
}
],
"src": "7:320:8"
},
{
"body": {
"nodeType": "YulBlock",
"src": "361:152:8",
"statements": [
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "378:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "381:77:8",
"type": "",
"value": "35408467139433450592217433187231851964531694900788300625387963629091585785856"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "371:6:8"
},
"nodeType": "YulFunctionCall",
"src": "371:88:8"
},
"nodeType": "YulExpressionStatement",
"src": "371:88:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "475:1:8",
"type": "",
"value": "4"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "478:4:8",
"type": "",
"value": "0x22"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "468:6:8"
},
"nodeType": "YulFunctionCall",
"src": "468:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "468:15:8"
},
{
"expression": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "499:1:8",
"type": "",
"value": "0"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "502:4:8",
"type": "",
"value": "0x24"
}
],
"functionName": {
"name": "revert",
"nodeType": "YulIdentifier",
"src": "492:6:8"
},
"nodeType": "YulFunctionCall",
"src": "492:15:8"
},
"nodeType": "YulExpressionStatement",
"src": "492:15:8"
}
]
},
"name": "panic_error_0x22",
"nodeType": "YulFunctionDefinition",
"src": "333:180:8"
}
]
},
"contents": "{\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n}\n",
"id": 8,
"language": "Yul",
"name": "#utility.yul"
}
],
"deployedGeneratedSources": [
{
"ast": {
"nodeType": "YulBlock",
"src": "0:31458:8",
"statements": [
{
"body": {
"nodeType": "YulBlock",
"src": "91:261:8",
"statements": [
{
"nodeType": "YulAssignment",
"src": "101:75:8",
"value": {
"arguments": [
{
"arguments": [
{
"name": "length",
"nodeType": "YulIdentifier",
"src": "168:6:8"
}
],
"functionName": {
"name": "array_allocation_size_t_string_memory_ptr",
"nodeType": "YulIdentifier",
"src": "126:41:8"
},
"nodeType": "YulFunctionCall",
"src": "126:49:8"
}
],
"functionName": {
"name": "allocate_memory",
"nodeType": "YulIdentifier",
"src": "110:15:8"
},
"nodeType": "YulFunctionCall",
"src": "110:66:8"
},
"variableNames": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "101:5:8"
}
]
},
{
"expression": {
"arguments": [
{
"name": "array",
"nodeType": "YulIdentifier",
"src": "192:5:8"
},
{