BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • DiSkullEred
FA2Ledger
operations (62)Storage Code Interact Tokens Metadata Fork Statistics Details
Latest
​x
934
1018
 
1
parameter (or
2
            (or
3
              (or
4
                (pair %balance_of
5
                  (list %requests (pair (address %owner) (nat %token_id)))
6
                  (contract %callback (list (pair
7
                                            (pair %request (address %owner)
8
                                                           (nat %token_id))
9
                                            (nat %balance)))))
10
                (or (nat %buy_item) (nat %cancel_listing)))
11
              (or (or (pair %list_item (mutez %price) (nat %token_id)) (bytes %mint))
12
                  (or (address %set_administrator)
13
                      (pair %set_display_and_thumbnail_uri (bytes %display_uri)
14
                                                           (pair (bytes %thumbnail_uri)
15
                                                                 (nat %token_id))))))
16
            (or
17
              (or
18
                (or (big_map %set_metadata string bytes)
19
                    (address %set_metadata_assigner))
20
                (or (nat %set_num_tokens) (mutez %set_price)))
21
              (or
22
                (or (unit %toggle_paused)
23
                    (list %transfer (pair (address %from_)
24
                                         (list %txs (pair (address %to_)
25
                                                         (pair (nat %token_id)
26
                                                               (nat %amount)))))))
27
                (or
28
                  (list %update_operators (or
29
                                           (pair %add_operator (address %owner)
30
                                                               (pair (address %operator)
31
                                                                     (nat %token_id)))
32
                                           (pair %remove_operator (address %owner)
33
                                                                  (pair
34
                                                                    (address %operator)
35
                                                                    (nat %token_id)))))
36
                  (pair %withdraw_mutez (mutez %amount) (address %destination))))));
37
storage (pair
38
          (pair
39
            (pair (pair (address %administrator) (address %artist_address))
40
                  (pair (bytes %base_url) (bytes %collection_name)))
41
            (pair (pair (big_map %creators nat address) (set %hashes (option bytes)))
42
                  (pair (nat %last_token_id)
43
                        (pair (big_map %ledger nat address)
44
                              (big_map %listings nat mutez)))))
45
          (pair
46
            (pair (pair (big_map %metadata string bytes) (address %metadata_assigner))
47
                  (pair (nat %num_tokens)
48
                        (big_map %operators
49
                          (pair (address %owner)
50
                                (pair (address %operator) (nat %token_id)))
51
                          unit)))
52
            (pair (pair (bool %paused) (mutez %price))
53
                  (pair (map %royalties nat (map address nat))
54
                        (pair
55
                          (big_map %token_metadata nat
56
                                                   (pair (nat %token_id)
57
                                                         (map %token_info string bytes)))
58
                          (address %treasury))))));
59
code { UNPAIR ;
60
       IF_LEFT
61
         { IF_LEFT
62
             { IF_LEFT
63
                 { NIL operation ;
64
                   DUP ;
65
                   DUP 3 ;
66
                   CDR ;
67
                   PUSH mutez 0 ;
68
                   DUP 5 ;
69
                   CAR ;
70
                   MAP { DUP 7 ;
71
                         GET 9 ;
72
                         SWAP ;
73
                         DUP ;
74
                         DUG 2 ;
75
                         CDR ;
76
                         MEM ;
77
                         IF {} { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
78
                         DUP ;
79
                         CAR ;
80
                         DUP 8 ;
81
                         CAR ;
82
                         GET 7 ;
83
                         DUP 3 ;
84
                         CDR ;
85
                         GET ;
86
                         IF_NONE { PUSH int 370 ; FAILWITH } {} ;
87
                         COMPARE ;
88
                         EQ ;
89
                         IF { PUSH nat 1 } { PUSH nat 0 } ;
90
                         SWAP ;
91
                         PAIR } ;
92
                   DIG 4 ;
93
                   DROP ;
94
                   DIG 4 ;
95
                   DROP ;
96
                   TRANSFER_TOKENS ;
97
                   CONS }
98
                 { IF_LEFT
99
                     { SWAP ;
100
                       DUP ;
101
                       DUG 2 ;
102
                       CAR ;
103
                       GET 8 ;
104
                       SWAP ;
105
                       DUP ;
106
                       DUG 2 ;
107
                       MEM ;
108
                       IF {} { PUSH string "TOKEN_NOT_LISTED" ; FAILWITH } ;
109
                       SWAP ;
110
                       DUP ;
111
                       DUG 2 ;
112
                       CAR ;
113
                       GET 8 ;
114
                       SWAP ;
115
                       DUP ;
116
                       DUG 2 ;
117
                       GET ;
118
                       IF_NONE { PUSH int 171 ; FAILWITH } {} ;
119
                       AMOUNT ;
120
                       COMPARE ;
121
                       EQ ;
122
                       IF {} { PUSH string "WRONG_AMOUNT" ; FAILWITH } ;
123
                       NIL operation ;
124
                       DUP 3 ;
125
                       CAR ;
126
                       GET 3 ;
127
                       CAR ;
128
                       DUP 3 ;
129
                       GET ;
130
                       IF_NONE { PUSH int 174 ; FAILWITH } {} ;
131
                       CONTRACT unit ;
132
                       IF_NONE { PUSH int 174 ; FAILWITH } {} ;
133
                       PUSH nat 1000 ;
134
                       PUSH nat 50 ;
135
                       DUP 6 ;
136
                       CAR ;
137
                       GET 8 ;
138
                       DUP 6 ;
139
                       GET ;
140
                       IF_NONE { PUSH int 171 ; FAILWITH } {} ;
141
                       MUL ;
142
                       EDIV ;
143
                       IF_NONE { PUSH int 174 ; FAILWITH } {} ;
144
                       CAR ;
145
                       UNIT ;
146
                       TRANSFER_TOKENS ;
147
                       CONS ;
148
                       DUP 3 ;
149
                       CAR ;
150
                       CAR ;
151
                       CAR ;
152
                       CDR ;
153
                       CONTRACT unit ;
154
                       IF_NONE { PUSH int 175 ; FAILWITH } {} ;
155
                       PUSH nat 1000 ;
156
                       PUSH nat 50 ;
157
                       DUP 6 ;
158
                       CAR ;
159
                       GET 8 ;
160
                       DUP 6 ;
161
                       GET ;
162
                       IF_NONE { PUSH int 171 ; FAILWITH } {} ;
163
                       MUL ;
164
                       EDIV ;
165
                       IF_NONE { PUSH int 175 ; FAILWITH } {} ;
166
                       CAR ;
167
                       UNIT ;
168
                       TRANSFER_TOKENS ;
169
                       CONS ;
170
                       DUP 3 ;
171
                       GET 10 ;
172
                       CONTRACT unit ;
173
                       IF_NONE { PUSH int 176 ; FAILWITH } {} ;
174
                       PUSH nat 1000 ;
175
                       PUSH nat 50 ;
176
                       DUP 6 ;
177
                       CAR ;
178
                       GET 8 ;
179
                       DUP 6 ;
180
                       GET ;
181
                       IF_NONE { PUSH int 171 ; FAILWITH } {} ;
182
                       MUL ;
183
                       EDIV ;
184
                       IF_NONE { PUSH int 176 ; FAILWITH } {} ;
185
                       CAR ;
186
                       UNIT ;
187
                       TRANSFER_TOKENS ;
188
                       CONS ;
189
                       DUP 3 ;
190
                       CAR ;
191
                       GET 7 ;
192
                       DUP 3 ;
193
                       GET ;
194
                       IF_NONE { PUSH int 177 ; FAILWITH } {} ;
195
                       CONTRACT unit ;
196
                       IF_NONE { PUSH int 177 ; FAILWITH } {} ;
197
                       PUSH nat 1000 ;
198
                       PUSH nat 850 ;
199
                       DUP 6 ;
200
                       CAR ;
201
                       GET 8 ;
202
                       DUP 6 ;
203
                       GET ;
204
                       IF_NONE { PUSH int 171 ; FAILWITH } {} ;
205
                       MUL ;
206
                       EDIV ;
207
                       IF_NONE { PUSH int 177 ; FAILWITH } {} ;
208
                       CAR ;
209
                       UNIT ;
210
                       TRANSFER_TOKENS ;
211
                       CONS ;
212
                       DIG 2 ;
213
                       UNPAIR ;
214
                       UNPAIR ;
215
                       SWAP ;
216
                       UNPAIR ;
217
                       SWAP ;
218
                       UNPAIR ;
219
                       SWAP ;
220
                       UNPAIR ;
221
                       SENDER ;
222
                       SOME ;
223
                       DUP 9 ;
224
                       UPDATE ;
225
                       SWAP ;
226
                       NONE mutez ;
227
                       DIG 8 ;
228
                       UPDATE ;
229
                       SWAP ;
230
                       PAIR ;
231
                       SWAP ;
232
                       PAIR ;
233
                       SWAP ;
234
                       PAIR ;
235
                       SWAP ;
236
                       PAIR ;
237
                       PAIR ;
238
                       SWAP }
239
                     { SWAP ;
240
                       DUP ;
241
                       DUG 2 ;
242
                       CAR ;
243
                       GET 7 ;
244
                       SWAP ;
245
                       DUP ;
246
                       DUG 2 ;
247
                       GET ;
248
                       IF_NONE { PUSH int 165 ; FAILWITH } {} ;
249
                       SENDER ;
250
                       COMPARE ;
251
                       EQ ;
252
                       IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
253
                       SWAP ;
254
                       UNPAIR ;
255
                       UNPAIR ;
256
                       SWAP ;
257
                       UNPAIR ;
258
                       SWAP ;
259
                       UNPAIR ;
260
                       SWAP ;
261
                       UNPAIR ;
262
                       SWAP ;
263
                       NONE mutez ;
264
                       DIG 7 ;
265
                       UPDATE ;
266
                       SWAP ;
267
                       PAIR ;
268
                       SWAP ;
269
                       PAIR ;
270
                       SWAP ;
271
                       PAIR ;
272
                       SWAP ;
273
                       PAIR ;
274
                       PAIR ;
275
                       NIL operation } } }
276
             { IF_LEFT
277
                 { IF_LEFT
278
                     { SWAP ;
279
                       DUP ;
280
                       DUG 2 ;
281
                       CAR ;
282
                       GET 7 ;
283
                       SWAP ;
284
                       DUP ;
285
                       DUG 2 ;
286
                       CDR ;
287
                       GET ;
288
                       IF_NONE { PUSH int 160 ; FAILWITH } {} ;
289
                       SENDER ;
290
                       COMPARE ;
291
                       EQ ;
292
                       IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
293
                       SWAP ;
294
                       UNPAIR ;
295
                       UNPAIR ;
296
                       SWAP ;
297
                       UNPAIR ;
298
                       SWAP ;
299
                       UNPAIR ;
300
                       SWAP ;
301
                       UNPAIR ;
302
                       SWAP ;
303
                       DUP 7 ;
304
                       CAR ;
305
                       SOME ;
306
                       DIG 7 ;
307
                       CDR ;
308
                       UPDATE ;
309
                       SWAP ;
310
                       PAIR ;
311
                       SWAP ;
312
                       PAIR ;
313
                       SWAP ;
314
                       PAIR ;
315
                       SWAP ;
316
                       PAIR ;
317
                       PAIR ;
318
                       NIL operation }
319
                     { SWAP ;
320
                       DUP ;
321
                       DUG 2 ;
322
                       GET 5 ;
323
                       CAR ;
324
                       IF
325
                         { SWAP ; DUP ; DUG 2 ; CAR ; CAR ; CAR ; CDR ; SENDER ; COMPARE ; NEQ }
326
                         { PUSH bool False } ;
327
                       IF { PUSH string "CONTRACT_IS_PAUSED" ; FAILWITH } {} ;
328
                       SWAP ;
329
                       DUP ;
330
                       DUG 2 ;
331
                       CAR ;
332
                       GET 5 ;
333
                       DUP 3 ;
334
                       GET 5 ;
335
                       CDR ;
336
                       AMOUNT ;
337
                       COMPARE ;
338
                       EQ ;
339
                       IF {} { PUSH string "WRONG_AMOUNT" ; FAILWITH } ;
340
                       DUP 3 ;
341
                       GET 3 ;
342
                       GET 3 ;
343
                       SWAP ;
344
                       DUP ;
345
                       DUG 2 ;
346
                       COMPARE ;
347
                       LT ;
348
                       IF {} { PUSH string "ALL_TOKENS_MINTED" ; FAILWITH } ;
349
                       DUP 3 ;
350
                       CAR ;
351
                       GET 3 ;
352
                       CDR ;
353
                       DUP 3 ;
354
                       BLAKE2B ;
355
                       PUSH nat 16 ;
356
                       PUSH nat 0 ;
357
                       SLICE ;
358
                       MEM ;
359
                       IF { PUSH string "DUPLICATE_MINT" ; FAILWITH } {} ;
360
                       DIG 2 ;
361
                       UNPAIR ;
362
                       UNPAIR ;
363
                       SWAP ;
364
                       UNPAIR ;
365
                       UNPAIR ;
366
                       SWAP ;
367
                       PUSH bool True ;
368
                       DUP 8 ;
369
                       BLAKE2B ;
370
                       PUSH nat 16 ;
371
                       PUSH nat 0 ;
372
                       SLICE ;
373
                       UPDATE ;
374
                       SWAP ;
375
                       PAIR ;
376
                       PAIR ;
377
                       SWAP ;
378
                       PAIR ;
379
                       PAIR ;
380
                       DUG 2 ;
381
                       DUP ;
382
                       NIL string ;
383
                       PUSH nat 0 ;
384
                       DUP 3 ;
385
                       COMPARE ;
386
                       EQ ;
387
                       IF { PUSH string "0" ; CONS } {} ;
388
                       PUSH nat 0 ;
389
                       DUP 3 ;
390
                       COMPARE ;
391
                       GT ;
392
                       LOOP { PUSH (map nat string) { Elt 0 "0" ;
393
                                      Elt 1 "1" ;
394
                                      Elt 2 "2" ;
395
                                      Elt 3 "3" ;
396
                                      Elt 4 "4" ;
397
                                      Elt 5 "5" ;
398
                                      Elt 6 "6" ;
399
                                      Elt 7 "7" ;
400
                                      Elt 8 "8" ;
401
                                      Elt 9 "9" } ;
402
                              PUSH nat 10 ;
403
                              DUP 4 ;
404
                              EDIV ;
405
                              IF_NONE { PUSH int 20 ; FAILWITH } { CDR } ;
406
                              GET ;
407
                              IF_NONE { PUSH int 20 ; FAILWITH } {} ;
408
                              CONS ;
409
                              PUSH nat 10 ;
410
                              DIG 2 ;
411
                              EDIV ;
412
                              IF_NONE { PUSH int 21 ; FAILWITH } { CAR } ;
413
                              SWAP ;
414
                              PUSH nat 0 ;
415
                              DUP 3 ;
416
                              COMPARE ;
417
                              GT } ;
418
                       SWAP ;
419
                       DROP ;
420
                       DUP 4 ;
421
                       DUP ;
422
                       GET 9 ;
423
                       EMPTY_MAP string bytes ;
424
                       DIG 5 ;
425
                       PUSH bytes 0x3f ;
426
                       DUP 8 ;
427
                       CAR ;
428
                       CAR ;
429
                       GET 3 ;
430
                       CONCAT ;
431
                       CONCAT ;
432
                       SOME ;
433
                       PUSH string "artifactUri" ;
434
                       UPDATE ;
435
                       DUP 4 ;
436
                       CONCAT ;
437
                       PACK ;
438
                       PUSH nat 6 ;
439
                       DIG 5 ;
440
                       CONCAT ;
441
                       PACK ;
442
                       SIZE ;
443
                       SUB ;
444
                       ISNAT ;
445
                       IF_NONE { PUSH int 39 ; FAILWITH } {} ;
446
                       PUSH nat 6 ;
447
                       SLICE ;
448
                       IF_NONE
449
                         { PUSH string "Could not encode string to bytes." ; FAILWITH }
450
                         {} ;
451
                       PUSH bytes 0x2023 ;
452
                       DIG 6 ;
453
                       CAR ;
454
                       CAR ;
455
                       GET 4 ;
456
                       CONCAT ;
457
                       CONCAT ;
458
                       SOME ;
459
                       PUSH string "name" ;
460
                       UPDATE ;
461
                       PUSH (option bytes) (Some 0x45444954415254) ;
462
                       PUSH string "symbol" ;
463
                       UPDATE ;
464
                       PUSH (option bytes) (Some 0x30) ;
465
                       PUSH string "decimals" ;
466
                       UPDATE ;
467
                       DUP 4 ;
468
                       PAIR ;
469
                       SOME ;
470
                       DUP 4 ;
471
                       UPDATE ;
472
                       UPDATE 9 ;
473
                       DUP ;
474
                       DUG 2 ;
475
                       DUP ;
476
                       GET 7 ;
477
                       EMPTY_MAP address nat ;
478
                       PUSH (option nat) (Some 50) ;
479
                       SENDER ;
480
                       UPDATE ;
481
                       PUSH (option nat) (Some 50) ;
482
                       DUP 6 ;
483
                       GET 10 ;
484
                       UPDATE ;
485
                       PUSH (option nat) (Some 50) ;
486
                       DIG 5 ;
487
                       CAR ;
488
                       CAR ;
489
                       CAR ;
490
                       CDR ;
491
                       UPDATE ;
492
                       SOME ;
493
                       DUP 4 ;
494
                       UPDATE ;
495
                       UPDATE 7 ;
496
                       DUP ;
497
                       DUG 2 ;
498
                       CAR ;
499
                       CAR ;
500
                       CAR ;
501
                       CDR ;
502
                       SENDER ;
503
                       COMPARE ;
504
                       EQ ;
505
                       IF
506
                         { SWAP ;
507
                           DUP ;
508
                           GET 7 ;
509
                           DUP ;
510
                           DUP 4 ;
511
                           DUP ;
512
                           DUG 2 ;
513
                           GET ;
514
                           IF_NONE { PUSH int 118 ; FAILWITH } {} ;
515
                           PUSH (option nat) (Some 100) ;
516
                           SENDER ;
517
                           UPDATE ;
518
                           SOME ;
519
                           SWAP ;
520
                           UPDATE ;
521
                           UPDATE 7 ;
522
                           SWAP }
523
                         {} ;
524
                       SWAP ;
525
                       UNPAIR ;
526
                       UNPAIR ;
527
                       SWAP ;
528
                       UNPAIR ;
529
                       SWAP ;
530
                       UNPAIR ;
531
                       SWAP ;
532
                       UNPAIR ;
533
                       SENDER ;
534
                       SOME ;
535
                       DUP 8 ;
536
                       UPDATE ;
537
                       PAIR ;
538
                       SWAP ;
539
                       PAIR ;
540
                       SWAP ;
541
                       UNPAIR ;
542
                       SENDER ;
543
                       SOME ;
544
                       DIG 6 ;
545
                       UPDATE ;
546
                       PAIR ;
547
                       SWAP ;
548
                       UNPAIR ;
549
                       PUSH nat 1 ;
550
                       ADD ;
551
                       PAIR ;
552
                       SWAP ;
553
                       PAIR ;
554
                       SWAP ;
555
                       PAIR ;
556
                       PAIR ;
557
                       DUP ;
558
                       GET 5 ;
559
                       CDR ;
560
                       PUSH mutez 0 ;
561
                       COMPARE ;
562
                       LT ;
563
                       IF
564
                         { DUP ;
565
                           CAR ;
566
                           CAR ;
567
                           CAR ;
568
                           CDR ;
569
                           CONTRACT unit ;
570
                           IF_NONE { PUSH int 125 ; FAILWITH } {} ;
571
                           NIL operation ;
572
                           SWAP ;
573
                           PUSH nat 1000 ;
574
                           PUSH nat 950 ;
575
                           AMOUNT ;
576
                           MUL ;
577
                           EDIV ;
578
                           IF_NONE { PUSH int 124 ; FAILWITH } {} ;
579
                           CAR ;
580
                           UNIT ;
581
                           TRANSFER_TOKENS ;
582
                           CONS ;
583
                           SWAP ;
584
                           DUP ;
585
                           DUG 2 ;
586
                           GET 10 ;
587
                           CONTRACT unit ;
588
                           IF_NONE { PUSH int 126 ; FAILWITH } {} ;
589
                           PUSH nat 1000 ;
590
                           PUSH nat 950 ;
591
                           AMOUNT ;
592
                           MUL ;
593
                           EDIV ;
594
                           IF_NONE { PUSH int 124 ; FAILWITH } {} ;
595
                           CAR ;
596
                           AMOUNT ;
597
                           SUB_MUTEZ ;
598
                           IF_NONE { PUSH int 126 ; FAILWITH } {} ;
599
                           UNIT ;
600
                           TRANSFER_TOKENS ;
601
                           CONS }
602
                         { NIL operation } } }
603
                 { IF_LEFT
604
                     { SWAP ;
605
                       DUP ;
606
                       DUG 2 ;
607
                       CAR ;
608
                       CAR ;
609
                       CAR ;
610
                       CAR ;
611
                       SENDER ;
612
                       COMPARE ;
613
                       EQ ;
614
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
615
                       SWAP ;
616
                       UNPAIR ;
617
                       UNPAIR ;
618
                       UNPAIR ;
619
                       CDR ;
620
                       DIG 4 ;
621
                       PAIR ;
622
                       PAIR ;
623
                       PAIR ;
624
                       PAIR }
625
                     { SWAP ;
626
                       DUP ;
627
                       DUG 2 ;
628
                       GET 3 ;
629
                       CAR ;
630
                       CDR ;
631
                       SENDER ;
632
                       COMPARE ;
633
                       EQ ;
634
                       IF {} { PUSH string "FA2_NOT_METADATA_ASSIGNER" ; FAILWITH } ;
635
                       SWAP ;
636
                       DUP ;
637
                       GET 9 ;
638
                       DUP ;
639
                       DUP 4 ;
640
                       GET 4 ;
641
                       DUP ;
642
                       DUG 2 ;
643
                       GET ;
644
                       IF_NONE { PUSH int 150 ; FAILWITH } {} ;
645
                       DUP ;
646
                       CDR ;
647
                       DUP 6 ;
648
                       CAR ;
649
                       SOME ;
650
                       PUSH string "displayUri" ;
651
                       UPDATE ;
652
                       UPDATE 2 ;
653
                       SOME ;
654
                       SWAP ;
655
                       UPDATE ;
656
                       UPDATE 9 ;
657
                       DUP ;
658
                       GET 9 ;
659
                       DUP ;
660
                       DUP 4 ;
661
                       GET 4 ;
662
                       DUP ;
663
                       DUG 2 ;
664
                       GET ;
665
                       IF_NONE { PUSH int 151 ; FAILWITH } {} ;
666
                       DUP ;
667
                       CDR ;
668
                       DIG 5 ;
669
                       GET 3 ;
670
                       SOME ;
671
                       PUSH string "thumbnailUri" ;
672
                       UPDATE ;
673
                       UPDATE 2 ;
674
                       SOME ;
675
                       SWAP ;
676
                       UPDATE ;
677
                       UPDATE 9 } ;
678
                   NIL operation } } }
679
         { IF_LEFT
680
             { IF_LEFT
681
                 { IF_LEFT
682
                     { SWAP ;
683
                       DUP ;
684
                       DUG 2 ;
685
                       CAR ;
686
                       CAR ;
687
                       CAR ;
688
                       CAR ;
689
                       SENDER ;
690
                       COMPARE ;
691
                       EQ ;
692
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
693
                       SWAP ;
694
                       UNPAIR ;
695
                       SWAP ;
696
                       UNPAIR ;
697
                       UNPAIR ;
698
                       CDR ;
699
                       DIG 4 ;
700
                       PAIR ;
701
                       PAIR ;
702
                       PAIR ;
703
                       SWAP ;
704
                       PAIR }
705
                     { SWAP ;
706
                       DUP ;
707
                       DUG 2 ;
708
                       CAR ;
709
                       CAR ;
710
                       CAR ;
711
                       CAR ;
712
                       SENDER ;
713
                       COMPARE ;
714
                       EQ ;
715
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
716
                       SWAP ;
717
                       UNPAIR ;
718
                       SWAP ;
719
                       UNPAIR ;
720
                       UNPAIR ;
721
                       CAR ;
722
                       DIG 4 ;
723
                       SWAP ;
724
                       PAIR ;
725
                       PAIR ;
726
                       PAIR ;
727
                       SWAP ;
728
                       PAIR } }
729
                 { IF_LEFT
730
                     { SWAP ;
731
                       DUP ;
732
                       DUG 2 ;
733
                       CAR ;
734
                       CAR ;
735
                       CAR ;
736
                       CDR ;
737
                       SENDER ;
738
                       COMPARE ;
739
                       EQ ;
740
                       IF {} { PUSH string "FA2_NOT_ARTIST" ; FAILWITH } ;
741
                       SWAP ;
742
                       DUP ;
743
                       DUG 2 ;
744
                       GET 3 ;
745
                       GET 3 ;
746
                       SWAP ;
747
                       DUP ;
748
                       DUG 2 ;
749
                       COMPARE ;
750
                       LE ;
751
                       IF
752
                         {}
753
                         { PUSH string "FA2_CANNOT_INCREASE_NUM_TOKENS" ; FAILWITH } ;
754
                       SWAP ;
755
                       DUP ;
756
                       DUG 2 ;
757
                       CAR ;
758
                       GET 5 ;
759
                       SWAP ;
760
                       DUP ;
761
                       DUG 2 ;
762
                       COMPARE ;
763
                       GE ;
764
                       IF
765
                         {}
766
                         { PUSH string "FA2_CAN_ONLY_BURN_UNMINTED_TOKENS" ; FAILWITH } ;
767
                       SWAP ;
768
                       UNPAIR ;
769
                       SWAP ;
770
                       UNPAIR ;
771
                       UNPAIR ;
772
                       SWAP ;
773
                       CDR ;
774
                       DIG 4 ;
775
                       PAIR ;
776
                       SWAP ;
777
                       PAIR ;
778
                       PAIR ;
779
                       SWAP ;
780
                       PAIR }
781
                     { SWAP ;
782
                       DUP ;
783
                       DUG 2 ;
784
                       CAR ;
785
                       CAR ;
786
                       CAR ;
787
                       CDR ;
788
                       SENDER ;
789
                       COMPARE ;
790
                       EQ ;
791
                       IF {} { PUSH string "FA2_NOT_ARTIST" ; FAILWITH } ;
792
                       SWAP ;
793
                       UNPAIR ;
794
                       SWAP ;
795
                       UNPAIR ;
796
                       SWAP ;
797
                       UNPAIR ;
798
                       CAR ;
799
                       DIG 4 ;
800
                       SWAP ;
801
                       PAIR ;
802
                       PAIR ;
803
                       SWAP ;
804
                       PAIR ;
805
                       SWAP ;
806
                       PAIR } } ;
807
               NIL operation }
808
             { IF_LEFT
809
                 { IF_LEFT
810
                     { DROP ;
811
                       DUP ;
812
                       CAR ;
813
                       CAR ;
814
                       CAR ;
815
                       CDR ;
816
                       SENDER ;
817
                       COMPARE ;
818
                       EQ ;
819
                       IF {} { PUSH string "FA2_NOT_ARTIST" ; FAILWITH } ;
820
                       DUP ;
821
                       UNPAIR ;
822
                       SWAP ;
823
                       UNPAIR ;
824
                       SWAP ;
825
                       UNPAIR ;
826
                       CDR ;
827
                       DIG 4 ;
828
                       GET 5 ;
829
                       CAR ;
830
                       NOT ;
831
                       PAIR ;
832
                       PAIR ;
833
                       SWAP ;
834
                       PAIR ;
835
                       SWAP ;
836
                       PAIR }
837
                     { DUP ;
838
                       ITER { DUP ;
839
                              CDR ;
840
                              ITER { DUP 4 ;
841
                                     GET 9 ;
842
                                     SWAP ;
843
                                     DUP ;
844
                                     DUG 2 ;
845
                                     GET 3 ;
846
                                     MEM ;
847
                                     IF
848
                                       {}
849
                                       { PUSH string "FA2_TOKEN_UNDEFINED" ; FAILWITH } ;
850
                                     SWAP ;
851
                                     DUP ;
852
                                     DUG 2 ;
853
                                     CAR ;
854
                                     SENDER ;
855
                                     COMPARE ;
856
                                     EQ ;
857
                                     IF
858
                                       { PUSH bool True }
859
                                       { DUP 4 ;
860
                                         GET 3 ;
861
                                         GET 4 ;
862
                                         SWAP ;
863
                                         DUP ;
864
                                         DUG 2 ;
865
                                         GET 3 ;
866
                                         SENDER ;
867
                                         DUP 5 ;
868
                                         CAR ;
869
                                         PAIR 3 ;
870
                                         MEM } ;
871
                                     IF
872
                                       {}
873
                                       { PUSH string "FA2_NOT_OPERATOR" ; FAILWITH } ;
874
                                     DUP ;
875
                                     GET 4 ;
876
                                     PUSH nat 0 ;
877
                                     COMPARE ;
878
                                     LT ;
879
                                     IF
880
                                       { DUP ;
881
                                         GET 4 ;
882
                                         PUSH nat 1 ;
883
                                         COMPARE ;
884
                                         EQ ;
885
                                         IF
886
                                           { SWAP ;
887
                                             DUP ;
888
                                             DUG 2 ;
889
                                             CAR ;
890
                                             DUP 5 ;
891
                                             CAR ;
892
                                             GET 7 ;
893
                                             DUP 3 ;
894
                                             GET 3 ;
895
                                             GET ;
896
                                             IF_NONE { PUSH int 199 ; FAILWITH } {} ;
897
                                             COMPARE ;
898
                                             EQ }
899
                                           { PUSH bool False } ;
900
                                         IF
901
                                           {}
902
                                           { PUSH string "FA2_INSUFFICIENT_BALANCE" ;
903
                                             FAILWITH } ;
904
                                         DIG 3 ;
905
                                         UNPAIR ;
906
                                         UNPAIR ;
907
                                         SWAP ;
908
                                         UNPAIR ;
909
                                         SWAP ;
910
                                         UNPAIR ;
911
                                         SWAP ;
912
                                         UNPAIR ;
913
                                         DUP 7 ;
914
                                         CAR ;
915
                                         SOME ;
916
                                         DUP 8 ;
917
                                         GET 3 ;
918
                                         UPDATE ;
919
                                         SWAP ;
920
                                         NONE mutez ;
921
                                         DIG 7 ;
922
                                         GET 3 ;
923
                                         UPDATE ;
924
                                         SWAP ;
925
                                         PAIR ;
926
                                         SWAP ;
927
                                         PAIR ;
928
                                         SWAP ;
929
                                         PAIR ;
930
                                         SWAP ;
931
                                         PAIR ;
932
                                         PAIR ;
933
                                         DUG 2 }
934
                                       { DROP } } ;
935
                              DROP } ;
936
                       DROP } ;
937
                   NIL operation }
938
                 { IF_LEFT
939
                     { DUP ;
940
                       ITER { IF_LEFT
941
                                { DUP ;
942
                                  CAR ;
943
                                  SENDER ;
944
                                  COMPARE ;
945
                                  EQ ;
946
                                  IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
947
                                  DIG 2 ;
948
                                  UNPAIR ;
949
                                  SWAP ;
950
                                  UNPAIR ;
951
                                  UNPAIR ;
952
                                  SWAP ;
953
                                  UNPAIR ;
954
                                  SWAP ;
955
                                  PUSH (option unit) (Some Unit) ;
956
                                  DIG 6 ;
957
                                  UPDATE ;
958
                                  SWAP ;
959
                                  PAIR ;
960
                                  SWAP ;
961
                                  PAIR ;
962
                                  PAIR ;
963
                                  SWAP ;
964
                                  PAIR ;
965
                                  SWAP }
966
                                { DUP ;
967
                                  CAR ;
968
                                  SENDER ;
969
                                  COMPARE ;
970
                                  EQ ;
971
                                  IF {} { PUSH string "FA2_NOT_OWNER" ; FAILWITH } ;
972
                                  DIG 2 ;
973
                                  UNPAIR ;
974
                                  SWAP ;
975
                                  UNPAIR ;
976
                                  UNPAIR ;
977
                                  SWAP ;
978
                                  UNPAIR ;
979
                                  SWAP ;
980
                                  NONE unit ;
981
                                  DIG 6 ;
982
                                  UPDATE ;
983
                                  SWAP ;
984
                                  PAIR ;
985
                                  SWAP ;
986
                                  PAIR ;
987
                                  PAIR ;
988
                                  SWAP ;
989
                                  PAIR ;
990
                                  SWAP } } ;
991
                       DROP ;
992
                       NIL operation }
993
                     { SWAP ;
994
                       DUP ;
995
                       DUG 2 ;
996
                       CAR ;
997
                       CAR ;
998
                       CAR ;
999
                       CAR ;
1000
                       SENDER ;
1001
                       COMPARE ;
1002
                       EQ ;
1003
                       IF {} { PUSH string "FA2_NOT_ADMIN" ; FAILWITH } ;
1004
                       DUP ;
1005
                       CDR ;
1006
                       CONTRACT unit ;
1007
                       IF_NONE { PUSH int 546 ; FAILWITH } {} ;
1008
                       NIL operation ;
1009
                       SWAP ;
1010
                       DIG 2 ;
1011
                       CAR ;
1012
                       UNIT ;
1013
                       TRANSFER_TOKENS ;
1014
                       CONS } } } } ;
1015
       NIL operation ;
1016
       SWAP ;
1017
       ITER { CONS } ;
1018
       PAIR }