BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Fyvprq.neg ASG Fyvpre
Contract factory
operations (305)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
931
1646
 
1
{ parameter (or
2
              (or (or (nat %bid) (nat %cashout))
3
                  (or (unit %confirm_ownership) (nat %migrate)))
4
              (or
5
                (or
6
                  (or %migration_required_action
7
                    (or (or (nat %buyout) (nat %claim_fees))
8
                        (or
9
                          (pair %create (map %vault_tokens (pair address nat) nat)
10
                                        (string %name)
11
                                        (string %description)
12
                                        (nat %total_supply)
13
                                        (map %royalties address nat)
14
                                        (nat %curator_pct)
15
                                        (option %sell_order (pair (nat %amount)
16
                                                                 (mutez %price)
17
                                                                 (map %recipients
18
                                                                   address
19
                                                                   nat)
20
                                                                 (option %valid_from timestamp)
21
                                                                 (option %valid_until timestamp))))
22
                          (or %curator_action
23
                            (or (pair %transfer_curatorship nat address)
24
                                (pair %update_curator_pct nat nat))
25
                            (pair %update_royalties nat (map address nat)))))
26
                    (or (nat %rescue) (pair %vote_reserve nat mutez)))
27
                  (or %owner_action
28
                    (or (or (unit %disable_migration) (address %enable_migration))
29
                        (or (unit %renounce_ownership) (pair %set_curator nat address)))
30
                    (or
31
                      (pair %set_settings (option %slice_address address)
32
                                          (option %orderbook_address address)
33
                                          (option %maintenance_recipient address)
34
                                          (option %maintenance_pct nat)
35
                                          (option %max_curator_pct nat)
36
                                          (option %bid_increment mutez)
37
                                          (option %bid_extension int)
38
                                          (option %auction_length int)
39
                                          (option %min_reserve_vote_pct nat)
40
                                          (option %max_tokens nat)
41
                                          (option %migration_reward_pct nat)
42
                                          (option %metadata_base_uri string))
43
                      (address %transfer_ownership))))
44
                (or (nat %resolve)
45
                    (list %transfer_hook (pair (address %from_)
46
                                              (list %txs (pair (address %to_)
47
                                                              (nat %token_id)
48
                                                              (nat %amount)))))))) ;
49
  storage (pair (big_map %metadata string bytes)
50
                (pair %roles (address %owner) (option %pending_owner address))
51
                (pair %settings (address %slice_address) (address %orderbook_address)
52
                                (address %maintenance_recipient)
53
                                (nat %maintenance_pct)
54
                                (nat %max_curator_pct)
55
                                (mutez %bid_increment)
56
                                (int %bid_extension)
57
                                (int %auction_length)
58
                                (nat %min_reserve_vote_pct)
59
                                (nat %max_tokens)
60
                                (nat %migration_reward_pct)
61
                                (string %metadata_base_uri))
62
                (pair %migration (bool %enabled) (option %address address))
63
                (big_map %slices nat
64
                                 (pair (pair %token address nat) (address %vault)
65
                                       (map %vault_tokens (pair address nat) nat)
66
                                       (pair %auction (nat %state) (timestamp %end_time)
67
                                                      (mutez %bid)
68
                                                      (address %bidder))
69
                                       (nat %reserve_total)
70
                                       (nat %reserve_votes)
71
                                       (mutez %cashout_pool)
72
                                       (address %curator)
73
                                       (nat %curator_pct)
74
                                       (timestamp %curator_last_claimed)
75
                                       (timestamp %maintenance_last_claimed)
76
                                       (bool %migrated)))
77
                (big_map %slice_metadata nat (map string bytes))
78
                (big_map %votes (pair address nat) mutez)
79
                (big_map %hooks (pair address nat) nat)
80
                (nat %next_slice_id)) ;
81
  code { NIL operation ;
82
         PUSH nat 0 ;
83
         PUSH nat 1 ;
84
         PUSH nat 2 ;
85
         PUSH nat 1000000000000000000 ;
86
         LAMBDA
87
           mutez
88
           nat
89
           { PUSH mutez 1 ; SWAP ; EDIV ; IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ; CAR } ;
90
         LAMBDA
91
           (pair address mutez)
92
           operation
93
           { UNPAIR ;
94
             CONTRACT unit ;
95
             IF_NONE { PUSH string "INVALID_TEZ_DESTINATION" ; FAILWITH } {} ;
96
             SWAP ;
97
             UNIT ;
98
             TRANSFER_TOKENS } ;
99
         LAMBDA nat mutez { PUSH mutez 1 ; SWAP ; MUL } ;
100
         LAMBDA
101
           string
102
           bytes
103
           { PACK ;
104
             DUP ;
105
             PUSH nat 6 ;
106
             DIG 2 ;
107
             SIZE ;
108
             SUB ;
109
             ABS ;
110
             PUSH nat 6 ;
111
             SLICE ;
112
             IF_NONE { PUSH string "SLICE" ; FAILWITH } {} } ;
113
         LAMBDA
114
           (pair nat (big_map string bytes) (pair address (option address))
115
                 (pair address address address nat nat mutez int int nat nat nat string)
116
                 (pair bool (option address))
117
                 (big_map nat
118
                          (pair (pair address nat) address (map (pair address nat) nat)
119
                                (pair nat timestamp mutez address)
120
                                nat
121
                                nat
122
                                mutez
123
                                address
124
                                nat
125
                                timestamp
126
                                timestamp
127
                                bool))
128
                 (big_map nat (map string bytes))
129
                 (big_map (pair address nat) mutez)
130
                 (big_map (pair address nat) nat)
131
                 nat)
132
           (pair (pair address nat) address (map (pair address nat) nat)
133
                 (pair nat timestamp mutez address)
134
                 nat
135
                 nat
136
                 mutez
137
                 address
138
                 nat
139
                 timestamp
140
                 timestamp
141
                 bool)
142
           { UNPAIR ;
143
             SWAP ;
144
             GET 9 ;
145
             SWAP ;
146
             GET ;
147
             IF_NONE { PUSH string "SLICE_UNDEFINED" ; FAILWITH } {} } ;
148
         LAMBDA
149
           (pair (pair address nat) (big_map string bytes)
150
                 (pair address (option address))
151
                 (pair address address address nat nat mutez int int nat nat nat string)
152
                 (pair bool (option address))
153
                 (big_map nat
154
                          (pair (pair address nat) address (map (pair address nat) nat)
155
                                (pair nat timestamp mutez address)
156
                                nat
157
                                nat
158
                                mutez
159
                                address
160
                                nat
161
                                timestamp
162
                                timestamp
163
                                bool))
164
                 (big_map nat (map string bytes))
165
                 (big_map (pair address nat) mutez)
166
                 (big_map (pair address nat) nat)
167
                 nat)
168
           mutez
169
           { UNPAIR ; UNPAIR ; DIG 2 ; GET 13 ; DUG 2 ; PAIR ; GET ; IF_NONE { PUSH mutez 0 } {} } ;
170
         LAMBDA
171
           (pair
172
             (lambda
173
               (pair nat (big_map string bytes) (pair address (option address))
174
                     (pair address address address nat nat mutez int int nat nat nat
175
                           string)
176
                     (pair bool (option address))
177
                     (big_map nat
178
                              (pair (pair address nat) address
179
                                    (map (pair address nat) nat)
180
                                    (pair nat timestamp mutez address)
181
                                    nat
182
                                    nat
183
                                    mutez
184
                                    address
185
                                    nat
186
                                    timestamp
187
                                    timestamp
188
                                    bool))
189
                     (big_map nat (map string bytes))
190
                     (big_map (pair address nat) mutez)
191
                     (big_map (pair address nat) nat)
192
                     nat)
193
               (pair (pair address nat) address (map (pair address nat) nat)
194
                     (pair nat timestamp mutez address)
195
                     nat
196
                     nat
197
                     mutez
198
                     address
199
                     nat
200
                     timestamp
201
                     timestamp
202
                     bool))
203
             (pair nat (big_map string bytes) (pair address (option address))
204
                   (pair address address address nat nat mutez int int nat nat nat
205
                         string)
206
                   (pair bool (option address))
207
                   (big_map nat
208
                            (pair (pair address nat) address
209
                                  (map (pair address nat) nat)
210
                                  (pair nat timestamp mutez address)
211
                                  nat
212
                                  nat
213
                                  mutez
214
                                  address
215
                                  nat
216
                                  timestamp
217
                                  timestamp
218
                                  bool))
219
                   (big_map nat (map string bytes))
220
                   (big_map (pair address nat) mutez)
221
                   (big_map (pair address nat) nat)
222
                   nat))
223
           nat
224
           { UNPAIR ;
225
             SWAP ;
226
             EXEC ;
227
             DUP ;
228
             CAR ;
229
             CAR ;
230
             SWAP ;
231
             CAR ;
232
             CDR ;
233
             VIEW "total_supply" nat ;
234
             IF_NONE { PUSH string "option is None" ; FAILWITH } {} } ;
235
         DUP 3 ;
236
         APPLY ;
237
         LAMBDA
238
           (pair
239
             (lambda
240
               (pair nat (big_map string bytes) (pair address (option address))
241
                     (pair address address address nat nat mutez int int nat nat nat
242
                           string)
243
                     (pair bool (option address))
244
                     (big_map nat
245
                              (pair (pair address nat) address
246
                                    (map (pair address nat) nat)
247
                                    (pair nat timestamp mutez address)
248
                                    nat
249
                                    nat
250
                                    mutez
251
                                    address
252
                                    nat
253
                                    timestamp
254
                                    timestamp
255
                                    bool))
256
                     (big_map nat (map string bytes))
257
                     (big_map (pair address nat) mutez)
258
                     (big_map (pair address nat) nat)
259
                     nat)
260
               (pair (pair address nat) address (map (pair address nat) nat)
261
                     (pair nat timestamp mutez address)
262
                     nat
263
                     nat
264
                     mutez
265
                     address
266
                     nat
267
                     timestamp
268
                     timestamp
269
                     bool))
270
             (pair (pair address nat) (big_map string bytes)
271
                   (pair address (option address))
272
                   (pair address address address nat nat mutez int int nat nat nat
273
                         string)
274
                   (pair bool (option address))
275
                   (big_map nat
276
                            (pair (pair address nat) address
277
                                  (map (pair address nat) nat)
278
                                  (pair nat timestamp mutez address)
279
                                  nat
280
                                  nat
281
                                  mutez
282
                                  address
283
                                  nat
284
                                  timestamp
285
                                  timestamp
286
                                  bool))
287
                   (big_map nat (map string bytes))
288
                   (big_map (pair address nat) mutez)
289
                   (big_map (pair address nat) nat)
290
                   nat))
291
           nat
292
           { UNPAIR ;
293
             SWAP ;
294
             UNPAIR ;
295
             UNPAIR ;
296
             DUG 2 ;
297
             PAIR ;
298
             DIG 2 ;
299
             SWAP ;
300
             EXEC ;
301
             DUP ;
302
             CAR ;
303
             CAR ;
304
             SWAP ;
305
             CAR ;
306
             CDR ;
307
             DIG 2 ;
308
             PAIR ;
309
             VIEW "get_balance" nat ;
310
             IF_NONE { PUSH string "option is None" ; FAILWITH } {} } ;
311
         DUP 4 ;
312
         APPLY ;
313
         LAMBDA
314
           (pair
315
             (lambda
316
               (pair nat (big_map string bytes) (pair address (option address))
317
                     (pair address address address nat nat mutez int int nat nat nat
318
                           string)
319
                     (pair bool (option address))
320
                     (big_map nat
321
                              (pair (pair address nat) address
322
                                    (map (pair address nat) nat)
323
                                    (pair nat timestamp mutez address)
324
                                    nat
325
                                    nat
326
                                    mutez
327
                                    address
328
                                    nat
329
                                    timestamp
330
                                    timestamp
331
                                    bool))
332
                     (big_map nat (map string bytes))
333
                     (big_map (pair address nat) mutez)
334
                     (big_map (pair address nat) nat)
335
                     nat)
336
               (pair (pair address nat) address (map (pair address nat) nat)
337
                     (pair nat timestamp mutez address)
338
                     nat
339
                     nat
340
                     mutez
341
                     address
342
                     nat
343
                     timestamp
344
                     timestamp
345
                     bool))
346
             (pair (pair address nat) nat (big_map string bytes)
347
                   (pair address (option address))
348
                   (pair address address address nat nat mutez int int nat nat nat
349
                         string)
350
                   (pair bool (option address))
351
                   (big_map nat
352
                            (pair (pair address nat) address
353
                                  (map (pair address nat) nat)
354
                                  (pair nat timestamp mutez address)
355
                                  nat
356
                                  nat
357
                                  mutez
358
                                  address
359
                                  nat
360
                                  timestamp
361
                                  timestamp
362
                                  bool))
363
                   (big_map nat (map string bytes))
364
                   (big_map (pair address nat) mutez)
365
                   (big_map (pair address nat) nat)
366
                   nat))
367
           operation
368
           { UNPAIR ;
369
             SWAP ;
370
             UNPAIR ;
371
             UNPAIR ;
372
             DIG 2 ;
373
             UNPAIR ;
374
             SWAP ;
375
             DIG 3 ;
376
             PAIR ;
377
             DIG 3 ;
378
             SWAP ;
379
             EXEC ;
380
             DUP ;
381
             CAR ;
382
             CAR ;
383
             CONTRACT %mint (list (pair (address %owner) (nat %token_id) (nat %amount))) ;
384
             IF_NONE { PUSH string "SLICE_FA2_MINT_UNDEFINED" ; FAILWITH } {} ;
385
             PUSH mutez 0 ;
386
             NIL (pair address nat nat) ;
387
             DIG 4 ;
388
             DIG 4 ;
389
             CAR ;
390
             CDR ;
391
             DIG 5 ;
392
             PAIR 3 ;
393
             CONS ;
394
             TRANSFER_TOKENS } ;
395
         DUP 5 ;
396
         APPLY ;
397
         LAMBDA
398
           (pair
399
             (lambda
400
               (pair nat (big_map string bytes) (pair address (option address))
401
                     (pair address address address nat nat mutez int int nat nat nat
402
                           string)
403
                     (pair bool (option address))
404
                     (big_map nat
405
                              (pair (pair address nat) address
406
                                    (map (pair address nat) nat)
407
                                    (pair nat timestamp mutez address)
408
                                    nat
409
                                    nat
410
                                    mutez
411
                                    address
412
                                    nat
413
                                    timestamp
414
                                    timestamp
415
                                    bool))
416
                     (big_map nat (map string bytes))
417
                     (big_map (pair address nat) mutez)
418
                     (big_map (pair address nat) nat)
419
                     nat)
420
               (pair (pair address nat) address (map (pair address nat) nat)
421
                     (pair nat timestamp mutez address)
422
                     nat
423
                     nat
424
                     mutez
425
                     address
426
                     nat
427
                     timestamp
428
                     timestamp
429
                     bool))
430
             (pair (pair address nat) nat (big_map string bytes)
431
                   (pair address (option address))
432
                   (pair address address address nat nat mutez int int nat nat nat
433
                         string)
434
                   (pair bool (option address))
435
                   (big_map nat
436
                            (pair (pair address nat) address
437
                                  (map (pair address nat) nat)
438
                                  (pair nat timestamp mutez address)
439
                                  nat
440
                                  nat
441
                                  mutez
442
                                  address
443
                                  nat
444
                                  timestamp
445
                                  timestamp
446
                                  bool))
447
                   (big_map nat (map string bytes))
448
                   (big_map (pair address nat) mutez)
449
                   (big_map (pair address nat) nat)
450
                   nat))
451
           operation
452
           { UNPAIR ;
453
             SWAP ;
454
             UNPAIR ;
455
             UNPAIR ;
456
             DIG 2 ;
457
             UNPAIR ;
458
             SWAP ;
459
             DIG 3 ;
460
             PAIR ;
461
             DIG 3 ;
462
             SWAP ;
463
             EXEC ;
464
             DUP ;
465
             CAR ;
466
             CAR ;
467
             CONTRACT %burn (list (pair (address %owner) (nat %token_id) (nat %amount))) ;
468
             IF_NONE { PUSH string "SLICE_FA2_BURN_UNDEFINED" ; FAILWITH } {} ;
469
             PUSH mutez 0 ;
470
             NIL (pair address nat nat) ;
471
             DIG 4 ;
472
             DIG 4 ;
473
             CAR ;
474
             CDR ;
475
             DIG 5 ;
476
             PAIR 3 ;
477
             CONS ;
478
             TRANSFER_TOKENS } ;
479
         DUP 6 ;
480
         APPLY ;
481
         LAMBDA
482
           (pair
483
             (pair
484
               (lambda
485
                 (pair (pair address nat) nat (big_map string bytes)
486
                       (pair address (option address))
487
                       (pair address address address nat nat mutez int int nat nat nat
488
                             string)
489
                       (pair bool (option address))
490
                       (big_map nat
491
                                (pair (pair address nat) address
492
                                      (map (pair address nat) nat)
493
                                      (pair nat timestamp mutez address)
494
                                      nat
495
                                      nat
496
                                      mutez
497
                                      address
498
                                      nat
499
                                      timestamp
500
                                      timestamp
501
                                      bool))
502
                       (big_map nat (map string bytes))
503
                       (big_map (pair address nat) mutez)
504
                       (big_map (pair address nat) nat)
505
                       nat)
506
                 operation)
507
               (lambda
508
                 (pair nat (big_map string bytes) (pair address (option address))
509
                       (pair address address address nat nat mutez int int nat nat nat
510
                             string)
511
                       (pair bool (option address))
512
                       (big_map nat
513
                                (pair (pair address nat) address
514
                                      (map (pair address nat) nat)
515
                                      (pair nat timestamp mutez address)
516
                                      nat
517
                                      nat
518
                                      mutez
519
                                      address
520
                                      nat
521
                                      timestamp
522
                                      timestamp
523
                                      bool))
524
                       (big_map nat (map string bytes))
525
                       (big_map (pair address nat) mutez)
526
                       (big_map (pair address nat) nat)
527
                       nat)
528
                 nat)
529
               nat)
530
             (pair
531
               (pair nat (pair address nat) address (map (pair address nat) nat)
532
                     (pair nat timestamp mutez address)
533
                     nat
534
                     nat
535
                     mutez
536
                     address
537
                     nat
538
                     timestamp
539
                     timestamp
540
                     bool)
541
               (big_map string bytes)
542
               (pair address (option address))
543
               (pair address address address nat nat mutez int int nat nat nat string)
544
               (pair bool (option address))
545
               (big_map nat
546
                        (pair (pair address nat) address (map (pair address nat) nat)
547
                              (pair nat timestamp mutez address)
548
                              nat
549
                              nat
550
                              mutez
551
                              address
552
                              nat
553
                              timestamp
554
                              timestamp
555
                              bool))
556
               (big_map nat (map string bytes))
557
               (big_map (pair address nat) mutez)
558
               (big_map (pair address nat) nat)
559
               nat))
560
           (pair
561
             (pair (pair address nat) address (map (pair address nat) nat)
562
                   (pair nat timestamp mutez address)
563
                   nat
564
                   nat
565
                   mutez
566
                   address
567
                   nat
568
                   timestamp
569
                   timestamp
570
                   bool)
571
             (list operation))
572
           { UNPAIR ;
573
             UNPAIR 3 ;
574
             DIG 3 ;
575
             UNPAIR ;
576
             UNPAIR ;
577
             SWAP ;
578
             DUP ;
579
             GET 19 ;
580
             NOW ;
581
             SUB ;
582
             ABS ;
583
             DUP 7 ;
584
             SWAP ;
585
             PUSH nat 31536000 ;
586
             PUSH nat 10000 ;
587
             DUP 10 ;
588
             DUP 8 ;
589
             DUP 8 ;
590
             PAIR ;
591
             DUP 11 ;
592
             SWAP ;
593
             EXEC ;
594
             DUP 7 ;
595
             GET 17 ;
596
             MUL ;
597
             MUL ;
598
             EDIV ;
599
             IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
600
             CAR ;
601
             EDIV ;
602
             IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
603
             CAR ;
604
             MUL ;
605
             EDIV ;
606
             IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
607
             CAR ;
608
             DUP 2 ;
609
             GET 21 ;
610
             NOW ;
611
             SUB ;
612
             ABS ;
613
             DUP 8 ;
614
             SWAP ;
615
             PUSH nat 31536000 ;
616
             PUSH nat 10000 ;
617
             DIG 10 ;
618
             DUP 9 ;
619
             DUP 9 ;
620
             PAIR ;
621
             DIG 11 ;
622
             SWAP ;
623
             EXEC ;
624
             DUP 10 ;
625
             GET 5 ;
626
             GET 7 ;
627
             MUL ;
628
             MUL ;
629
             EDIV ;
630
             IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
631
             CAR ;
632
             EDIV ;
633
             IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
634
             CAR ;
635
             MUL ;
636
             EDIV ;
637
             IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
638
             CAR ;
639
             NIL operation ;
640
             PUSH nat 0 ;
641
             DUP 4 ;
642
             COMPARE ;
643
             GT ;
644
             IF
645
               { DUP 6 ;
646
                 DIG 3 ;
647
                 PAIR ;
648
                 DUP 5 ;
649
                 DUP 5 ;
650
                 GET 15 ;
651
                 PAIR ;
652
                 PAIR ;
653
                 DUP 7 ;
654
                 SWAP ;
655
                 EXEC ;
656
                 CONS ;
657
                 DIG 2 ;
658
                 NOW ;
659
                 UPDATE 19 ;
660
                 DUG 2 }
661
               { DIG 2 ; DROP } ;
662
             PUSH nat 0 ;
663
             DUP 3 ;
664
             COMPARE ;
665
             GT ;
666
             IF
667
               { DUP 5 ;
668
                 DIG 2 ;
669
                 PAIR ;
670
                 DIG 3 ;
671
                 DIG 4 ;
672
                 GET 5 ;
673
                 GET 5 ;
674
                 PAIR ;
675
                 PAIR ;
676
                 DIG 3 ;
677
                 SWAP ;
678
                 EXEC ;
679
                 CONS ;
680
                 SWAP ;
681
                 NOW ;
682
                 UPDATE 21 ;
683
                 SWAP }
684
               { SWAP ; DIG 3 ; DIG 4 ; DIG 5 ; DROP 4 } ;
685
             SWAP ;
686
             PAIR } ;
687
         DUP 12 ;
688
         DUP 6 ;
689
         DUP 5 ;
690
         PAIR 3 ;
691
         APPLY ;
692
         DIG 11 ;
693
         DROP ;
694
         LAMBDA
695
           (pair address address)
696
           operation
697
           { UNPAIR ;
698
             CONTRACT %migrate address ;
699
             IF_NONE { PUSH string "CANNOT_MIGRATE_VAULT" ; FAILWITH } {} ;
700
             PUSH mutez 0 ;
701
             DIG 2 ;
702
             TRANSFER_TOKENS } ;
703
         LAMBDA
704
           (pair
705
             (pair
706
               (pair (pair address nat) address (map (pair address nat) nat)
707
                     (pair nat timestamp mutez address)
708
                     nat
709
                     nat
710
                     mutez
711
                     address
712
                     nat
713
                     timestamp
714
                     timestamp
715
                     bool)
716
               address)
717
             (list operation))
718
           (list operation)
719
           { UNPAIR ;
720
             UNPAIR ;
721
             DIG 2 ;
722
             DUP 2 ;
723
             GET 3 ;
724
             CONTRACT %withdraw_token (pair
725
                                        (pair %token (address %address) (nat %tokenId)
726
                                                     (or %tokenType (unit %fa1)
727
                                                                    (unit %fa2)))
728
                                        (address %destination)
729
                                        (nat %amount)) ;
730
             IF_NONE { PUSH string "CANNOT_INVOKE_VAULT_WITHDRAWAL" ; FAILWITH } {} ;
731
             DIG 2 ;
732
             GET 5 ;
733
             ITER { UNPAIR ;
734
                    DIG 3 ;
735
                    DUP 4 ;
736
                    PUSH mutez 0 ;
737
                    DIG 4 ;
738
                    DUP 7 ;
739
                    UNIT ;
740
                    RIGHT unit ;
741
                    DUP 7 ;
742
                    CDR ;
743
                    DIG 7 ;
744
                    CAR ;
745
                    PAIR 3 ;
746
                    PAIR 3 ;
747
                    TRANSFER_TOKENS ;
748
                    CONS ;
749
                    SWAP } ;
750
             DIG 2 ;
751
             DROP 2 } ;
752
         DIG 17 ;
753
         UNPAIR ;
754
         IF_LEFT
755
           { DIG 2 ;
756
             DIG 4 ;
757
             DIG 9 ;
758
             DIG 11 ;
759
             DIG 12 ;
760
             DIG 14 ;
761
             DROP 6 ;
762
             IF_LEFT
763
               { DIG 2 ;
764
                 DIG 4 ;
765
                 DIG 11 ;
766
                 DIG 12 ;
767
                 DROP 4 ;
768
                 IF_LEFT
769
                   { DIG 2 ;
770
                     DIG 3 ;
771
                     DIG 4 ;
772
                     DIG 7 ;
773
                     DROP 4 ;
774
                     SWAP ;
775
                     DUP ;
776
                     DUP 3 ;
777
                     PAIR ;
778
                     DIG 3 ;
779
                     SWAP ;
780
                     EXEC ;
781
                     PUSH string "SLICE_AUCTION_NOT_LIVE" ;
782
                     DIG 5 ;
783
                     DUP 3 ;
784
                     GET 7 ;
785
                     CAR ;
786
                     COMPARE ;
787
                     EQ ;
788
                     IF { DROP } { FAILWITH } ;
789
                     PUSH string "SLICE_AUCTION_ENDED" ;
790
                     NOW ;
791
                     DUP 3 ;
792
                     GET 7 ;
793
                     GET 3 ;
794
                     COMPARE ;
795
                     GT ;
796
                     IF { DROP } { FAILWITH } ;
797
                     PUSH string "SLICE_AUCTION_LOW_BID" ;
798
                     DUP 3 ;
799
                     GET 5 ;
800
                     GET 11 ;
801
                     DUP 3 ;
802
                     GET 7 ;
803
                     GET 5 ;
804
                     ADD ;
805
                     AMOUNT ;
806
                     COMPARE ;
807
                     GE ;
808
                     IF { DROP } { FAILWITH } ;
809
                     NIL operation ;
810
                     DUP 2 ;
811
                     GET 7 ;
812
                     GET 5 ;
813
                     DUP 3 ;
814
                     GET 7 ;
815
                     GET 6 ;
816
                     PAIR ;
817
                     DIG 5 ;
818
                     SWAP ;
819
                     EXEC ;
820
                     CONS ;
821
                     DUP 2 ;
822
                     DIG 2 ;
823
                     GET 7 ;
824
                     SENDER ;
825
                     UPDATE 6 ;
826
                     UPDATE 7 ;
827
                     SWAP ;
828
                     DUP 2 ;
829
                     DIG 2 ;
830
                     GET 7 ;
831
                     AMOUNT ;
832
                     UPDATE 5 ;
833
                     UPDATE 7 ;
834
                     SWAP ;
835
                     DUP 3 ;
836
                     GET 5 ;
837
                     GET 13 ;
838
                     NOW ;
839
                     DUP 4 ;
840
                     GET 7 ;
841
                     GET 3 ;
842
                     SUB ;
843
                     COMPARE ;
844
                     LT ;
845
                     IF
846
                       { DUP 2 ; DIG 2 ; GET 7 ; DUP 4 ; GET 5 ; GET 13 ; NOW ; ADD ; UPDATE 3 ; UPDATE 7 ; SWAP }
847
                       {} ;
848
                     DUP 3 ;
849
                     DIG 3 ;
850
                     GET 9 ;
851
                     DIG 3 ;
852
                     DIG 4 ;
853
                     SWAP ;
854
                     SOME ;
855
                     SWAP ;
856
                     UPDATE ;
857
                     UPDATE 9 }
858
                   { DIG 8 ;
859
                     DROP ;
860
                     SWAP ;
861
                     DUP ;
862
                     DUP 3 ;
863
                     PAIR ;
864
                     DIG 6 ;
865
                     SWAP ;
866
                     EXEC ;
867
                     PUSH string "SLICE_NO_CASHOUT" ;
868
                     DIG 8 ;
869
                     DUP 3 ;
870
                     GET 7 ;
871
                     CAR ;
872
                     COMPARE ;
873
                     EQ ;
874
                     IF { DROP } { FAILWITH } ;
875
                     DUP 2 ;
876
                     DUP 4 ;
877
                     SENDER ;
878
                     PAIR ;
879
                     PAIR ;
880
                     DIG 5 ;
881
                     SWAP ;
882
                     EXEC ;
883
                     PUSH nat 0 ;
884
                     DUP 2 ;
885
                     COMPARE ;
886
                     GT ;
887
                     IF
888
                       {}
889
                       { PUSH string "SLICE_CASHOUT_INSUFFICIENT_BALANCE" ; FAILWITH } ;
890
                     PUSH string "SLICE_CASHOUT_DRAINED" ;
891
                     PUSH mutez 0 ;
892
                     DUP 4 ;
893
                     GET 13 ;
894
                     COMPARE ;
895
                     GT ;
896
                     IF { DROP } { FAILWITH } ;
897
                     DUP 3 ;
898
                     DUP 5 ;
899
                     PAIR ;
900
                     DIG 6 ;
901
                     SWAP ;
902
                     EXEC ;
903
                     DUP 3 ;
904
                     GET 13 ;
905
                     DUP 3 ;
906
                     MUL ;
907
                     EDIV ;
908
                     IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
909
                     CAR ;
910
                     DUP 3 ;
911
                     GET 13 ;
912
                     DUP 2 ;
913
                     COMPARE ;
914
                     GT ;
915
                     IF { DROP ; DUP 2 ; GET 13 } {} ;
916
                     NIL operation ;
917
                     DUP 5 ;
918
                     DIG 3 ;
919
                     PAIR ;
920
                     DUP 6 ;
921
                     SENDER ;
922
                     PAIR ;
923
                     PAIR ;
924
                     DIG 6 ;
925
                     SWAP ;
926
                     EXEC ;
927
                     CONS ;
928
                     DUP 2 ;
929
                     SENDER ;
930
                     PAIR ;
931
                     DIG 6 ;
932
                     SWAP ;
933
                     EXEC ;
934
                     CONS ;
935
                     DUP 3 ;
936
                     DIG 2 ;
937
                     DIG 3 ;
938
                     GET 13 ;
939
                     SUB_MUTEZ ;
940
                     IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
941
                     UPDATE 13 ;
942
                     SWAP ;
943
                     DUP 3 ;
944
                     DIG 3 ;
945
                     GET 9 ;
946
                     DIG 3 ;
947
                     DIG 4 ;
948
                     SWAP ;
949
                     SOME ;
950
                     SWAP ;
951
                     UPDATE ;
952
                     UPDATE 9 } }
953
               { DIG 3 ;
954
                 DIG 5 ;
955
                 DIG 8 ;
956
                 DIG 9 ;
957
                 DIG 10 ;
958
                 DROP 5 ;
959
                 IF_LEFT
960
                   { DIG 2 ;
961
                     DIG 3 ;
962
                     DIG 4 ;
963
                     DIG 5 ;
964
                     DIG 6 ;
965
                     DROP 6 ;
966
                     PUSH string "NO_PENDING_OWNER" ;
967
                     DUP 2 ;
968
                     GET 3 ;
969
                     CDR ;
970
                     IF_NONE { FAILWITH } { SWAP ; DROP } ;
971
                     PUSH string "INVALID_PENDING_OWNER_ACCESS" ;
972
                     DUP 2 ;
973
                     SENDER ;
974
                     COMPARE ;
975
                     EQ ;
976
                     IF { DROP } { FAILWITH } ;
977
                     DUP 2 ;
978
                     DIG 2 ;
979
                     GET 3 ;
980
                     DIG 2 ;
981
                     UPDATE 1 ;
982
                     UPDATE 3 ;
983
                     DUP ;
984
                     GET 3 ;
985
                     NONE address ;
986
                     UPDATE 2 ;
987
                     UPDATE 3 }
988
                   { DIG 7 ;
989
                     DROP ;
990
                     SWAP ;
991
                     PUSH string "SLICE_NO_MIGRATION" ;
992
                     PUSH bool True ;
993
                     DUP 3 ;
994
                     GET 7 ;
995
                     CAR ;
996
                     COMPARE ;
997
                     EQ ;
998
                     IF { DROP } { FAILWITH } ;
999
                     DUP ;
1000
                     DUP 3 ;
1001
                     PAIR ;
1002
                     DIG 6 ;
1003
                     SWAP ;
1004
                     EXEC ;
1005
                     PUSH string "SLICE_MIGRATED" ;
1006
                     PUSH bool False ;
1007
                     DUP 3 ;
1008
                     GET 22 ;
1009
                     COMPARE ;
1010
                     EQ ;
1011
                     IF { DROP } { FAILWITH } ;
1012
                     PUSH string "SLICE_NO_MIGRATION" ;
1013
                     DIG 7 ;
1014
                     DUP 3 ;
1015
                     GET 7 ;
1016
                     CAR ;
1017
                     COMPARE ;
1018
                     EQ ;
1019
                     IF { DROP } { FAILWITH } ;
1020
                     NIL operation ;
1021
                     DUP 3 ;
1022
                     GET 7 ;
1023
                     CDR ;
1024
                     IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
1025
                     DUP ;
1026
                     CONTRACT %migrate_from_v1 (pair (pair %token address nat)
1027
                                                     (address %vault)
1028
                                                     (map %vault_tokens
1029
                                                       (pair address nat)
1030
                                                       nat)
1031
                                                     (address %curator)
1032
                                                     (nat %curator_pct)
1033
                                                     (timestamp %curator_last_claimed)
1034
                                                     (timestamp %maintenance_last_claimed)
1035
                                                     (map %metadata string bytes)) ;
1036
                     IF_NONE { PUSH string "SLICE_MIGRATION_UNDEFINED" ; FAILWITH } {} ;
1037
                     DUP 5 ;
1038
                     GET 11 ;
1039
                     DUP 7 ;
1040
                     GET ;
1041
                     IF_NONE { EMPTY_MAP string bytes } {} ;
1042
                     DUP 5 ;
1043
                     GET 21 ;
1044
                     DUP 6 ;
1045
                     GET 19 ;
1046
                     DUP 7 ;
1047
                     GET 17 ;
1048
                     DUP 8 ;
1049
                     GET 15 ;
1050
                     DUP 9 ;
1051
                     GET 5 ;
1052
                     DUP 10 ;
1053
                     GET 3 ;
1054
                     DUP 11 ;
1055
                     CAR ;
1056
                     PAIR 8 ;
1057
                     DIG 3 ;
1058
                     DIG 2 ;
1059
                     PUSH mutez 0 ;
1060
                     DIG 3 ;
1061
                     TRANSFER_TOKENS ;
1062
                     CONS ;
1063
                     SWAP ;
1064
                     DUP 3 ;
1065
                     GET 3 ;
1066
                     PAIR ;
1067
                     DIG 5 ;
1068
                     SWAP ;
1069
                     EXEC ;
1070
                     CONS ;
1071
                     PUSH nat 0 ;
1072
                     DUP 4 ;
1073
                     GET 5 ;
1074
                     GET 21 ;
1075
                     COMPARE ;
1076
                     GT ;
1077
                     IF
1078
                       { PUSH nat 1 ;
1079
                         PUSH nat 10000 ;
1080
                         DUP 5 ;
1081
                         DUP 7 ;
1082
                         PAIR ;
1083
                         DIG 8 ;
1084
                         SWAP ;
1085
                         EXEC ;
1086
                         DUP 6 ;
1087
                         GET 5 ;
1088
                         GET 21 ;
1089
                         MUL ;
1090
                         EDIV ;
1091
                         IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1092
                         CAR ;
1093
                         PAIR ;
1094
                         SWAP ;
1095
                         DUP 4 ;
1096
                         DIG 2 ;
1097
                         UNPAIR ;
1098
                         DUP 2 ;
1099
                         DUP 2 ;
1100
                         COMPARE ;
1101
                         GT ;
1102
                         IF { SWAP ; DROP } { DROP } ;
1103
                         PAIR ;
1104
                         DUP 5 ;
1105
                         SENDER ;
1106
                         PAIR ;
1107
                         PAIR ;
1108
                         DIG 5 ;
1109
                         SWAP ;
1110
                         EXEC ;
1111
                         CONS }
1112
                       { DIG 4 ; DIG 5 ; DROP 2 } ;
1113
                     SWAP ;
1114
                     PUSH bool True ;
1115
                     UPDATE 22 ;
1116
                     SWAP ;
1117
                     DUP 3 ;
1118
                     DIG 3 ;
1119
                     GET 9 ;
1120
                     DIG 3 ;
1121
                     DIG 4 ;
1122
                     SWAP ;
1123
                     SOME ;
1124
                     SWAP ;
1125
                     UPDATE ;
1126
                     UPDATE 9 } } ;
1127
             SWAP }
1128
           { IF_LEFT
1129
               { DIG 13 ;
1130
                 DIG 15 ;
1131
                 DROP 2 ;
1132
                 IF_LEFT
1133
                   { SWAP ;
1134
                     PUSH string "SLICE_MIGRATION_REQUIRED" ;
1135
                     PUSH bool False ;
1136
                     DUP 3 ;
1137
                     GET 7 ;
1138
                     CAR ;
1139
                     COMPARE ;
1140
                     EQ ;
1141
                     IF { DROP } { FAILWITH } ;
1142
                     SWAP ;
1143
                     IF_LEFT
1144
                       { DIG 2 ;
1145
                         DIG 3 ;
1146
                         DIG 5 ;
1147
                         DIG 7 ;
1148
                         DIG 9 ;
1149
                         DIG 13 ;
1150
                         DROP 6 ;
1151
                         IF_LEFT
1152
                           { DIG 3 ;
1153
                             DIG 6 ;
1154
                             DIG 10 ;
1155
                             DROP 3 ;
1156
                             IF_LEFT
1157
                               { SWAP ;
1158
                                 DUP ;
1159
                                 DUP 3 ;
1160
                                 PAIR ;
1161
                                 DIG 5 ;
1162
                                 SWAP ;
1163
                                 EXEC ;
1164
                                 PUSH string "SLICE_NO_BUYOUTS" ;
1165
                                 DIG 8 ;
1166
                                 DUP 3 ;
1167
                                 GET 7 ;
1168
                                 CAR ;
1169
                                 COMPARE ;
1170
                                 EQ ;
1171
                                 IF { DROP } { FAILWITH } ;
1172
                                 PUSH string "SLICE_BUYOUT_LOW_BID" ;
1173
                                 DUP 2 ;
1174
                                 PUSH mutez 0 ;
1175
                                 PUSH nat 0 ;
1176
                                 DUP 3 ;
1177
                                 GET 11 ;
1178
                                 COMPARE ;
1179
                                 GT ;
1180
                                 IF
1181
                                   { DROP ;
1182
                                     DUP ;
1183
                                     GET 11 ;
1184
                                     SWAP ;
1185
                                     GET 9 ;
1186
                                     EDIV ;
1187
                                     IF_NONE { PUSH string "DIV by 0" ; FAILWITH } {} ;
1188
                                     CAR ;
1189
                                     DIG 7 ;
1190
                                     SWAP ;
1191
                                     EXEC }
1192
                                   { SWAP ; DIG 8 ; DROP 2 } ;
1193
                                 AMOUNT ;
1194
                                 COMPARE ;
1195
                                 GE ;
1196
                                 IF { DROP } { FAILWITH } ;
1197
                                 PUSH string "SLICE_BUYOUT_LOW_VOTES" ;
1198
                                 DUP 3 ;
1199
                                 DUP 5 ;
1200
                                 PAIR ;
1201
                                 DIG 6 ;
1202
                                 SWAP ;
1203
                                 EXEC ;
1204
                                 DUP 4 ;
1205
                                 GET 5 ;
1206
                                 GET 17 ;
1207
                                 MUL ;
1208
                                 PUSH nat 10000 ;
1209
                                 DUP 4 ;
1210
                                 GET 11 ;
1211
                                 MUL ;
1212
                                 COMPARE ;
1213
                                 GE ;
1214
                                 IF { DROP } { FAILWITH } ;
1215
                                 DUP ;
1216
                                 GET 7 ;
1217
                                 DIG 5 ;
1218
                                 UPDATE 1 ;
1219
                                 UPDATE 7 ;
1220
                                 DUP ;
1221
                                 GET 7 ;
1222
                                 SENDER ;
1223
                                 UPDATE 6 ;
1224
                                 UPDATE 7 ;
1225
                                 DUP ;
1226
                                 GET 7 ;
1227
                                 AMOUNT ;
1228
                                 UPDATE 5 ;
1229
                                 UPDATE 7 ;
1230
                                 DUP ;
1231
                                 GET 7 ;
1232
                                 DUP 3 ;
1233
                                 GET 5 ;
1234
                                 GET 15 ;
1235
                                 NOW ;
1236
                                 ADD ;
1237
                                 UPDATE 3 ;
1238
                                 UPDATE 7 ;
1239
                                 DUP 2 ;
1240
                                 SWAP ;
1241
                                 DUP 4 ;
1242
                                 PAIR ;
1243
                                 PAIR ;
1244
                                 DIG 3 ;
1245
                                 SWAP ;
1246
                                 EXEC ;
1247
                                 DUP 2 ;
1248
                                 DIG 2 ;
1249
                                 GET 9 ;
1250
                                 DUP 3 ;
1251
                                 CAR ;
1252
                                 DIG 4 ;
1253
                                 SWAP ;
1254
                                 SOME ;
1255
                                 SWAP ;
1256
                                 UPDATE ;
1257
                                 UPDATE 9 ;
1258
                                 SWAP ;
1259
                                 CDR }
1260
                               { DIG 3 ;
1261
                                 DIG 5 ;
1262
                                 DIG 6 ;
1263
                                 DROP 3 ;
1264
                                 SWAP ;
1265
                                 DUP ;
1266
                                 DUP 3 ;
1267
                                 PAIR ;
1268
                                 DIG 4 ;
1269
                                 SWAP ;
1270
                                 EXEC ;
1271
                                 EMPTY_SET address ;
1272
                                 DUP 3 ;
1273
                                 GET 5 ;
1274
                                 GET 5 ;
1275
                                 PUSH bool True ;
1276
                                 SWAP ;
1277
                                 UPDATE ;
1278
                                 DUP 3 ;
1279
                                 GET 3 ;
1280
                                 CAR ;
1281
                                 PUSH bool True ;
1282
                                 SWAP ;
1283
                                 UPDATE ;
1284
                                 DUP 2 ;
1285
                                 GET 15 ;
1286
                                 PUSH bool True ;
1287
                                 SWAP ;
1288
                                 UPDATE ;
1289
                                 PUSH string "INVALID_ACCESS" ;
1290
                                 SWAP ;
1291
                                 SENDER ;
1292
                                 MEM ;
1293
                                 IF { DROP } { FAILWITH } ;
1294
                                 PUSH string "SLICE_NO_MORE_CLAIMING" ;
1295
                                 DIG 5 ;
1296
                                 DUP 3 ;
1297
                                 GET 7 ;
1298
                                 CAR ;
1299
                                 COMPARE ;
1300
                                 EQ ;
1301
                                 IF { DROP } { FAILWITH } ;
1302
                                 DUP 2 ;
1303
                                 SWAP ;
1304
                                 DUP 4 ;
1305
                                 PAIR ;
1306
                                 PAIR ;
1307
                                 DIG 3 ;
1308
                                 SWAP ;
1309
                                 EXEC ;
1310
                                 DUP 2 ;
1311
                                 DIG 2 ;
1312
                                 GET 9 ;
1313
                                 DUP 3 ;
1314
                                 CAR ;
1315
                                 DIG 4 ;
1316
                                 SWAP ;
1317
                                 SOME ;
1318
                                 SWAP ;
1319
                                 UPDATE ;
1320
                                 UPDATE 9 ;
1321
                                 SWAP ;
1322
                                 CDR } }
1323
                           { DIG 4 ;
1324
                             DIG 7 ;
1325
                             DIG 8 ;
1326
                             DROP 3 ;
1327
                             IF_LEFT
1328
                               { DIG 2 ;
1329
                                 DIG 4 ;
1330
                                 DIG 7 ;
1331
                                 DROP 3 ;
1332
                                 SWAP ;
1333
                                 PUSH string "MAX_TOKENS_EXCEEDED" ;
1334
                                 DUP 2 ;
1335
                                 GET 5 ;
1336
                                 GET 19 ;
1337
                                 DUP 4 ;
1338
                                 CAR ;
1339
                                 SIZE ;
1340
                                 COMPARE ;
1341
                                 LE ;
1342
                                 IF { DROP } { FAILWITH } ;
1343
                                 PUSH string "MAX_CURATOR_PCT_EXCEEDED" ;
1344
                                 DUP 2 ;
1345
                                 GET 5 ;
1346
                                 GET 9 ;
1347
                                 DUP 4 ;
1348
                                 GET 11 ;
1349
                                 COMPARE ;
1350
                                 LE ;
1351
                                 IF { DROP } { FAILWITH } ;
1352
                                 PUSH nat 1 ;
1353
                                 DUP 3 ;
1354
                                 GET 7 ;
1355
                                 COMPARE ;
1356
                                 GT ;
1357
                                 IF
1358
                                   {}
1359
                                   { PUSH string "INVALID_TOTAL_SUPPLY" ; FAILWITH } ;
1360
                                 PUSH nat 0 ;
1361
                                 DUP 3 ;
1362
                                 GET 3 ;
1363
                                 SIZE ;
1364
                                 COMPARE ;
1365
                                 GT ;
1366
                                 IF
1367
                                   {}
1368
                                   { PUSH string "MISSING_REQUIRED_NAME" ; FAILWITH } ;
1369
                                 PUSH nat 0 ;
1370
                                 DUP 3 ;
1371
                                 GET 5 ;
1372
                                 SIZE ;
1373
                                 COMPARE ;
1374
                                 GT ;
1375
                                 IF
1376
                                   {}
1377
                                   { PUSH string "MISSING_REQUIRED_DESCRIPTION" ;
1378
                                     FAILWITH } ;
1379
                                 DUP ;
1380
                                 GET 16 ;
1381
                                 DUP 2 ;
1382
                                 PUSH nat 1 ;
1383
                                 DIG 3 ;
1384
                                 GET 16 ;
1385
                                 ADD ;
1386
                                 UPDATE 16 ;
1387
                                 SWAP ;
1388
                                 DUP 2 ;
1389
                                 GET 5 ;
1390
                                 CAR ;
1391
                                 UNIT ;
1392
                                 VIEW "next_token_id" nat ;
1393
                                 IF_NONE
1394
                                   { PUSH string "option is None" ; FAILWITH }
1395
                                   {} ;
1396
                                 EMPTY_MAP string bytes ;
1397
                                 PUSH bytes 0x31 ;
1398
                                 SOME ;
1399
                                 PUSH string "version" ;
1400
                                 UPDATE ;
1401
                                 DUP 5 ;
1402
                                 GET 3 ;
1403
                                 DUP 8 ;
1404
                                 SWAP ;
1405
                                 EXEC ;
1406
                                 SOME ;
1407
                                 PUSH string "name" ;
1408
                                 UPDATE ;
1409
                                 DUP 5 ;
1410
                                 GET 5 ;
1411
                                 DUP 8 ;
1412
                                 SWAP ;
1413
                                 EXEC ;
1414
                                 SOME ;
1415
                                 PUSH string "description" ;
1416
                                 UPDATE ;
1417
                                 EMPTY_MAP string bytes ;
1418
                                 DUP 3 ;
1419
                                 { PUSH string "" ;
1420
                                   PAIR ;
1421
                                   LEFT (pair string nat) ;
1422
                                   LOOP_LEFT { DUP ;
1423
                                               CDR ;
1424
                                               PUSH nat 0 ;
1425
                                               SWAP ;
1426
                                               DUP ;
1427
                                               DUG 2 ;
1428
                                               COMPARE ;
1429
                                               GT ;
1430
                                               IF
1431
                                                 { SWAP ;
1432
                                                   CAR ;
1433
                                                   PUSH nat 10 ;
1434
                                                   DUP 3 ;
1435
                                                   EDIV ;
1436
                                                   IF_NONE
1437
                                                     { PUSH string "MOD by 0" ; FAILWITH }
1438
                                                     {} ;
1439
                                                   CDR ;
1440
                                                   EMPTY_MAP nat string ;
1441
                                                   PUSH string "9" ;
1442
                                                   SOME ;
1443
                                                   PUSH nat 9 ;
1444
                                                   UPDATE ;
1445
                                                   PUSH string "8" ;
1446
                                                   SOME ;
1447
                                                   PUSH nat 8 ;
1448
                                                   UPDATE ;
1449
                                                   PUSH string "7" ;
1450
                                                   SOME ;
1451
                                                   PUSH nat 7 ;
1452
                                                   UPDATE ;
1453
                                                   PUSH string "6" ;
1454
                                                   SOME ;
1455
                                                   PUSH nat 6 ;
1456
                                                   UPDATE ;
1457
                                                   PUSH string "5" ;
1458
                                                   SOME ;
1459
                                                   PUSH nat 5 ;
1460
                                                   UPDATE ;
1461
                                                   PUSH string "4" ;
1462
                                                   SOME ;
1463
                                                   PUSH nat 4 ;
1464
                                                   UPDATE ;
1465
                                                   PUSH string "3" ;
1466
                                                   SOME ;
1467
                                                   PUSH nat 3 ;
1468
                                                   UPDATE ;
1469
                                                   PUSH string "2" ;
1470
                                                   SOME ;
1471
                                                   PUSH nat 2 ;
1472
                                                   UPDATE ;
1473
                                                   PUSH string "1" ;
1474
                                                   SOME ;
1475
                                                   PUSH nat 1 ;
1476
                                                   UPDATE ;
1477
                                                   PUSH string "0" ;
1478
                                                   SOME ;
1479
                                                   PUSH nat 0 ;
1480
                                                   UPDATE ;
1481
                                                   SWAP ;
1482
                                                   GET ;
1483
                                                   IF_NONE
1484
                                                     { PUSH string "INVALID_NAT" ;
1485
                                                       FAILWITH }
1486
                                                     {} ;
1487
                                                   CONCAT ;
1488
                                                   PUSH nat 10 ;
1489
                                                   DIG 2 ;
1490
                                                   EDIV ;
1491
                                                   IF_NONE
1492
                                                     { PUSH string "DIV by 0" ; FAILWITH }
1493
                                                     {} ;
1494
                                                   CAR ;
1495
                                                   SWAP ;
1496
                                                   PAIR ;
1497
                                                   LEFT (pair string nat) }
1498
                                                 { DROP ; RIGHT (pair string nat) } } ;
1499
                                   CAR ;
1500
                                   PUSH string "" ;
1501
                                   SWAP ;
1502
                                   DUP ;
1503
                                   DUG 2 ;
1504
                                   COMPARE ;
1505
                                   EQ ;
1506
                                   IF { DROP ; PUSH string "0" } {} } ;
1507
                                 DUP 6 ;
1508
                                 GET 5 ;
1509
                                 GET 22 ;
1510
                                 CONCAT ;
1511
                                 DIG 8 ;
1512
                                 SWAP ;
1513
                                 EXEC ;
1514
                                 SOME ;
1515
                                 PUSH string "" ;
1516
                                 UPDATE ;
1517
                                 DUP 3 ;
1518
                                 PAIR ;
1519
                                 DUP 6 ;
1520
                                 GET 9 ;
1521
                                 DUP 6 ;
1522
                                 GET 5 ;
1523
                                 GET 7 ;
1524
                                 DUP 7 ;
1525
                                 GET 5 ;
1526
                                 GET 5 ;
1527
                                 SWAP ;
1528
                                 SOME ;
1529
                                 SWAP ;
1530
                                 UPDATE ;
1531
                                 PUSH nat 4 ;
1532
                                 PAIR ;
1533
                                 NIL operation ;
1534
                                 SELF_ADDRESS ;
1535
                                 PUSH mutez 0 ;
1536
                                 NONE key_hash ;
1537
                                 CREATE_CONTRACT { parameter (or
1538
                                                               (or (unit %default)
1539
                                                                   (address %migrate))
1540
                                                               (or
1541
                                                                 (pair %withdraw_tez
1542
                                                                   (address %destination)
1543
                                                                   (mutez %amount))
1544
                                                                 (pair %withdraw_token
1545
                                                                   (pair %token
1546
                                                                     (address %address)
1547
                                                                     (nat %tokenId)
1548
                                                                     (or %tokenType
1549
                                                                       (unit %fa1)
1550
                                                                       (unit %fa2)))
1551
                                                                   (address %destination)
1552
                                                                   (nat %amount)))) ;
1553
                                                   storage address ;
1554
                                                   code { UNPAIR ;
1555
                                                          PUSH string "INVALID_ACCESS" ;
1556
                                                          DUP 3 ;
1557
                                                          SENDER ;
1558
                                                          COMPARE ;
1559
                                                          EQ ;
1560
                                                          IF { DROP } { FAILWITH } ;
1561
                                                          IF_LEFT
1562
                                                            { IF_LEFT
1563
                                                                { DROP }
1564
                                                                { SWAP ; DROP } ;
1565
                                                              NIL operation }
1566
                                                            { IF_LEFT
1567
                                                                { SWAP ;
1568
                                                                  NIL operation ;
1569
                                                                  DUP 3 ;
1570
                                                                  CDR ;
1571
                                                                  DIG 3 ;
1572
                                                                  CAR ;
1573
                                                                  PAIR ;
1574
                                                                  { UNPAIR ;
1575
                                                                    CONTRACT unit ;
1576
                                                                    IF_NONE
1577
                                                                      { PUSH string "INVALID_TEZ_DESTINATION" ;
1578
                                                                        FAILWITH }
1579
                                                                      {} ;
1580
                                                                    SWAP ;
1581
                                                                    UNIT ;
1582
                                                                    TRANSFER_TOKENS } }
1583
                                                                { SWAP ;
1584
                                                                  NIL operation ;
1585
                                                                  DUP 3 ;
1586
                                                                  GET 4 ;
1587
                                                                  DUP 4 ;
1588
                                                                  CAR ;
1589
                                                                  PAIR ;
1590
                                                                  DIG 3 ;
1591
                                                                  GET 3 ;
1592
                                                                  SELF_ADDRESS ;
1593
                                                                  PAIR ;
1594
                                                                  PAIR ;
1595
                                                                  { UNPAIR ;
1596
                                                                    UNPAIR ;
1597
                                                                    DIG 2 ;
1598
                                                                    UNPAIR ;
1599
                                                                    DUP ;
1600
                                                                    GET 4 ;
1601
                                                                    IF_LEFT
1602
                                                                      { DROP ;
1603
                                                                        CAR ;
1604
                                                                        CONTRACT %transfer (pair
1605
                                                                                             (address %from)
1606
                                                                                             (address %to)
1607
                                                                                             (nat %value)) ;
1608
                                                                        IF_NONE
1609
                                                                          { PUSH string "CANNOT_INVOKE_FA1_TRANSFER" ;
1610
                                                                            FAILWITH }
1611
                                                                          {} ;
1612
                                                                        PUSH mutez 0 ;
1613
                                                                        DIG 2 ;
1614
                                                                        DIG 4 ;
1615
                                                                        DIG 4 ;
1616
                                                                        PAIR 3 ;
1617
                                                                        TRANSFER_TOKENS }
1618
                                                                      { DROP ;
1619
                                                                        DUP ;
1620
                                                                        CAR ;
1621
                                                                        CONTRACT %transfer (list (pair
1622
                                                                                                  (address %from_)
1623
                                                                                                  (list %txs (pair
1624
                                                                                                              (address %to_)
1625
                                                                                                              (nat %token_id)
1626
                                                                                                              (nat %amount))))) ;
1627
                                                                        IF_NONE
1628
                                                                          { PUSH string "CANNOT_INVOKE_FA2_TRANSFER" ;
1629
                                                                            FAILWITH }
1630
                                                                          {} ;
1631
                                                                        PUSH mutez 0 ;
1632
                                                                        NIL (pair
1633
                                                                              address
1634
                                                                              (list (pair
1635
                                                                                     address
1636
                                                                                     nat
1637
                                                                                     nat))) ;
1638
                                                                        NIL (pair
1639
                                                                              address
1640
                                                                              nat
1641
                                                                              nat) ;
1642
                                                                        DIG 5 ;
1643
                                                                        DIG 5 ;
1644
                                                                        GET 3 ;
1645
                                                                        DIG 7 ;
1646
                                                                        PAIR 3 ;
1647
                                                                        CONS ;
1648
                                                                        DIG 4 ;
1649
                                                                        PAIR ;
1650
                                                                        CONS ;
1651
                                                                        TRANSFER_TOKENS } } } ;
1652
                                                              CONS } ;
1653
                                                          PAIR } } ;
1654
                                 PAIR ;
1655
                                 SWAP ;
1656
                                 DUP 2 ;
1657
                                 CAR ;
1658
                                 CONS ;
1659
                                 SWAP ;
1660
                                 PUSH bool False ;
1661
                                 NOW ;
1662
                                 NOW ;
1663
                                 DUP 12 ;
1664
                                 GET 11 ;
1665
                                 SENDER ;
1666
                                 PUSH mutez 0 ;
1667
                                 PUSH nat 0 ;
1668
                                 PUSH nat 0 ;
1669
                                 SELF_ADDRESS ;
1670
                                 PUSH mutez 0 ;
1671
                                 NOW ;
1672
                                 DIG 21 ;
1673
                                 PAIR 4 ;
1674
                                 DUP 18 ;
1675
                                 CAR ;
1676
                                 DIG 10 ;
1677
                                 CDR ;
1678
                                 DUP 16 ;
1679
                                 DUP 19 ;
1680
                                 GET 5 ;
1681
                                 CAR ;
1682
                                 PAIR ;
1683
                                 PAIR 12 ;
1684
                                 DUP 8 ;
1685
                                 DIG 8 ;
1686
                                 GET 9 ;
1687
                                 DUP 3 ;
1688
                                 DUP 10 ;
1689
                                 SWAP ;
1690
                                 SOME ;
1691
                                 SWAP ;
1692
                                 UPDATE ;
1693
                                 UPDATE 9 ;
1694
                                 DUG 7 ;
1695
                                 DUP 8 ;
1696
                                 DIG 8 ;
1697
                                 GET 11 ;
1698
                                 DIG 6 ;
1699
                                 DUP 9 ;
1700
                                 SWAP ;
1701
                                 SOME ;
1702
                                 SWAP ;
1703
                                 UPDATE ;
1704
                                 UPDATE 11 ;
1705
                                 DUG 6 ;
1706
                                 DUP 7 ;
1707
                                 DUP 8 ;
1708
                                 GET 15 ;
1709
                                 DUP 8 ;
1710
                                 DUP 8 ;
1711
                                 DIG 10 ;
1712
                                 GET 5 ;
1713
                                 CAR ;
1714
                                 PAIR ;
1715
                                 SWAP ;
1716
                                 SOME ;
1717
                                 SWAP ;
1718
                                 UPDATE ;
1719
                                 UPDATE 15 ;
1720
                                 DUG 6 ;
1721
                                 DUP ;
1722
                                 GET 5 ;
1723
                                 ITER { UNPAIR ;
1724
                                        DIG 3 ;
1725
                                        DIG 2 ;
1726
                                        UNIT ;
1727
                                        RIGHT unit ;
1728
                                        DUP 4 ;
1729
                                        CDR ;
1730
                                        DIG 4 ;
1731
                                        CAR ;
1732
                                        PAIR 3 ;
1733
                                        PAIR ;
1734
                                        DUP 3 ;
1735
                                        GET 3 ;
1736
                                        SENDER ;
1737
                                        DIG 2 ;
1738
                                        UNPAIR ;
1739
                                        DUP ;
1740
                                        GET 4 ;
1741
                                        IF_LEFT
1742
                                          { DROP ;
1743
                                            CAR ;
1744
                                            CONTRACT %transfer (pair (address %from)
1745
                                                                     (address %to)
1746
                                                                     (nat %value)) ;
1747
                                            IF_NONE
1748
                                              { PUSH string "CANNOT_INVOKE_FA1_TRANSFER" ;
1749
                                                FAILWITH }
1750
                                              {} ;
1751
                                            PUSH mutez 0 ;
1752
                                            DIG 2 ;
1753
                                            DIG 4 ;
1754
                                            DIG 4 ;
1755
                                            PAIR 3 ;
1756
                                            TRANSFER_TOKENS }
1757
                                          { DROP ;
1758
                                            DUP ;
1759
                                            CAR ;
1760
                                            CONTRACT %transfer (list (pair
1761
                                                                      (address %from_)
1762
                                                                      (list %txs (pair
1763
                                                                                  (address %to_)
1764
                                                                                  (nat %token_id)
1765
                                                                                  (nat %amount))))) ;
1766
                                            IF_NONE
1767
                                              { PUSH string "CANNOT_INVOKE_FA2_TRANSFER" ;
1768
                                                FAILWITH }
1769
                                              {} ;
1770
                                            PUSH mutez 0 ;
1771
                                            NIL (pair address
1772
                                                      (list (pair address nat nat))) ;
1773
                                            NIL (pair address nat nat) ;
1774
                                            DIG 5 ;
1775
                                            DIG 5 ;
1776
                                            GET 3 ;
1777
                                            DIG 7 ;
1778
                                            PAIR 3 ;
1779
                                            CONS ;
1780
                                            DIG 4 ;
1781
                                            PAIR ;
1782
                                            CONS ;
1783
                                            TRANSFER_TOKENS } ;
1784
                                        CONS ;
1785
                                        SWAP } ;
1786
                                 DROP ;
1787
                                 DUP 7 ;
1788
                                 GET 12 ;
1789
                                 IF_NONE
1790
                                   { DIG 3 ;
1791
                                     DROP ;
1792
                                     DUP 5 ;
1793
                                     DIG 6 ;
1794
                                     GET 7 ;
1795
                                     PAIR ;
1796
                                     DIG 4 ;
1797
                                     SENDER ;
1798
                                     PAIR ;
1799
                                     PAIR ;
1800
                                     DIG 5 ;
1801
                                     SWAP ;
1802
                                     EXEC ;
1803
                                     CONS }
1804
                                   { DUP ;
1805
                                     CAR ;
1806
                                     DUP 9 ;
1807
                                     GET 7 ;
1808
                                     COMPARE ;
1809
                                     GE ;
1810
                                     IF
1811
                                       {}
1812
                                       { PUSH string "INVALID_SELL_ORDER_AMOUNT" ;
1813
                                         FAILWITH } ;
1814
                                     DUP 7 ;
1815
                                     GET 5 ;
1816
                                     CAR ;
1817
                                     CONTRACT %update_operators (list (or
1818
                                                                       (pair %add_operator
1819
                                                                         (address %owner)
1820
                                                                         (address %operator)
1821
                                                                         (nat %token_id))
1822
                                                                       (pair %remove_operator
1823
                                                                         (address %owner)
1824
                                                                         (address %operator)
1825
                                                                         (nat %token_id)))) ;
1826
                                     IF_NONE
1827
                                       { PUSH string "CANNOT_INVOKE_FA2_UPDATE_OPERATORS" ;
1828
                                         FAILWITH }
1829
                                       {} ;
1830
                                     DUP 8 ;
1831
                                     GET 5 ;
1832
                                     GET 3 ;
1833
                                     CONTRACT %make_proxy_order (pair address
1834
                                                                      (or %order_type
1835
                                                                        (unit %buy)
1836
                                                                        (unit %sell))
1837
                                                                      (pair %token
1838
                                                                        (address %address)
1839
                                                                        (nat %tokenId)
1840
                                                                        (or %tokenType
1841
                                                                          (unit %fa1)
1842
                                                                          (unit %fa2)))
1843
                                                                      (nat %amount)
1844
                                                                      (mutez %price)
1845
                                                                      (map %recipients
1846
                                                                        address
1847
                                                                        nat)
1848
                                                                      (option %valid_from timestamp)
1849
                                                                      (option %valid_until timestamp)) ;
1850
                                     IF_NONE
1851
                                       { PUSH string "CANNOT_INVOKE_ORDERBOOK_MAKE_PROXY_ORDER" ;
1852
                                         FAILWITH }
1853
                                       {} ;
1854
                                     DUP 7 ;
1855
                                     DUP 10 ;
1856
                                     GET 5 ;
1857
                                     GET 3 ;
1858
                                     SELF_ADDRESS ;
1859
                                     PAIR 3 ;
1860
                                     DUP 4 ;
1861
                                     GET 8 ;
1862
                                     DUP 5 ;
1863
                                     GET 7 ;
1864
                                     DUP 6 ;
1865
                                     GET 5 ;
1866
                                     DUP 7 ;
1867
                                     GET 3 ;
1868
                                     DUP 8 ;
1869
                                     CAR ;
1870
                                     UNIT ;
1871
                                     RIGHT unit ;
1872
                                     DIG 13 ;
1873
                                     DUP 16 ;
1874
                                     GET 5 ;
1875
                                     CAR ;
1876
                                     PAIR 3 ;
1877
                                     UNIT ;
1878
                                     RIGHT unit ;
1879
                                     PAIR 7 ;
1880
                                     DIG 5 ;
1881
                                     DUP 5 ;
1882
                                     PUSH mutez 0 ;
1883
                                     NIL (or (pair address address nat)
1884
                                             (pair address address nat)) ;
1885
                                     DUP 6 ;
1886
                                     RIGHT (pair address address nat) ;
1887
                                     CONS ;
1888
                                     TRANSFER_TOKENS ;
1889
                                     CONS ;
1890
                                     DIG 3 ;
1891
                                     PUSH mutez 0 ;
1892
                                     DIG 3 ;
1893
                                     SENDER ;
1894
                                     PAIR ;
1895
                                     TRANSFER_TOKENS ;
1896
                                     CONS ;
1897
                                     DIG 2 ;
1898
                                     PUSH mutez 0 ;
1899
                                     NIL (or (pair address address nat)
1900
                                             (pair address address nat)) ;
1901
                                     DIG 4 ;
1902
                                     LEFT (pair address address nat) ;
1903
                                     CONS ;
1904
                                     TRANSFER_TOKENS ;
1905
                                     CONS ;
1906
                                     DUP 6 ;
1907
                                     DUP 3 ;
1908
                                     CAR ;
1909
                                     PAIR ;
1910
                                     DUP 6 ;
1911
                                     SELF_ADDRESS ;
1912
                                     PAIR ;
1913
                                     PAIR ;
1914
                                     DUP 9 ;
1915
                                     SWAP ;
1916
                                     EXEC ;
1917
                                     CONS ;
1918
                                     SWAP ;
1919
                                     CAR ;
1920
                                     DIG 6 ;
1921
                                     GET 7 ;
1922
                                     SUB ;
1923
                                     ABS ;
1924
                                     PUSH nat 0 ;
1925
                                     DUP 2 ;
1926
                                     COMPARE ;
1927
                                     GT ;
1928
                                     IF
1929
                                       { SWAP ;
1930
                                         DUP 6 ;
1931
                                         DIG 2 ;
1932
                                         PAIR ;
1933
                                         DIG 4 ;
1934
                                         SENDER ;
1935
                                         PAIR ;
1936
                                         PAIR ;
1937
                                         DIG 5 ;
1938
                                         SWAP ;
1939
                                         EXEC ;
1940
                                         CONS }
1941
                                       { DIG 4 ; DIG 6 ; DROP 3 } } ;
1942
                                 SWAP ;
1943
                                 DIG 2 ;
1944
                                 PAIR ;
1945
                                 DUP 3 ;
1946
                                 GET 5 ;
1947
                                 CAR ;
1948
                                 CONTRACT %create (pair
1949
                                                    (pair %token_metadata
1950
                                                      (nat %token_id)
1951
                                                      (map %token_info string bytes))
1952
                                                    (pair %royalties (nat %decimals)
1953
                                                                     (map %shares
1954
                                                                       address
1955
                                                                       nat))) ;
1956
                                 IF_NONE
1957
                                   { PUSH string "SLICE_FA2_CREATE_UNDEFINED" ; FAILWITH }
1958
                                   {} ;
1959
                                 PUSH mutez 0 ;
1960
                                 DIG 2 ;
1961
                                 TRANSFER_TOKENS ;
1962
                                 CONS }
1963
                               { DIG 3 ;
1964
                                 DIG 5 ;
1965
                                 DROP 2 ;
1966
                                 IF_LEFT
1967
                                   { IF_LEFT
1968
                                       { DIG 2 ;
1969
                                         DIG 4 ;
1970
                                         DROP 2 ;
1971
                                         UNPAIR ;
1972
                                         DIG 2 ;
1973
                                         DUP ;
1974
                                         DUP 3 ;
1975
                                         PAIR ;
1976
                                         DIG 4 ;
1977
                                         SWAP ;
1978
                                         EXEC ;
1979
                                         PUSH string "INVALID_ACCESS" ;
1980
                                         DUP 2 ;
1981
                                         GET 15 ;
1982
                                         SENDER ;
1983
                                         COMPARE ;
1984
                                         EQ ;
1985
                                         IF { DROP } { FAILWITH } ;
1986
                                         DIG 3 ;
1987
                                         UPDATE 15 ;
1988
                                         DUP 2 ;
1989
                                         DIG 2 ;
1990
                                         GET 9 ;
1991
                                         DIG 2 ;
1992
                                         DIG 3 ;
1993
                                         SWAP ;
1994
                                         SOME ;
1995
                                         SWAP ;
1996
                                         UPDATE ;
1997
                                         UPDATE 9 ;
1998
                                         SWAP }
1999
                                       { DIG 5 ;
2000
                                         DROP ;
2001
                                         UNPAIR ;
2002
                                         DIG 2 ;
2003
                                         DUP ;
2004
                                         DUP 3 ;
2005
                                         PAIR ;
2006
                                         DIG 5 ;
2007
                                         SWAP ;
2008
                                         EXEC ;
2009
                                         PUSH string "INVALID_ACCESS" ;
2010
                                         DUP 2 ;
2011
                                         GET 15 ;
2012
                                         SENDER ;
2013
                                         COMPARE ;
2014
                                         EQ ;
2015
                                         IF { DROP } { FAILWITH } ;
2016
                                         PUSH string "SLICE_NO_MORE_CLAIMING" ;
2017
                                         DIG 6 ;
2018
                                         DUP 3 ;
2019
                                         GET 7 ;
2020
                                         CAR ;
2021
                                         COMPARE ;
2022
                                         EQ ;
2023
                                         IF { DROP } { FAILWITH } ;
2024
                                         PUSH string "MAX_CURATOR_PCT_EXCEEDED" ;
2025
                                         DUP 3 ;
2026
                                         GET 5 ;
2027
                                         GET 9 ;
2028
                                         DUP 6 ;
2029
                                         COMPARE ;
2030
                                         LE ;
2031
                                         IF { DROP } { FAILWITH } ;
2032
                                         DUP 2 ;
2033
                                         SWAP ;
2034
                                         DUP 4 ;
2035
                                         PAIR ;
2036
                                         PAIR ;
2037
                                         DIG 4 ;
2038
                                         SWAP ;
2039
                                         EXEC ;
2040
                                         DUP ;
2041
                                         CAR ;
2042
                                         DIG 4 ;
2043
                                         UPDATE 17 ;
2044
                                         SWAP ;
2045
                                         DUP 3 ;
2046
                                         DIG 3 ;
2047
                                         GET 9 ;
2048
                                         DIG 3 ;
2049
                                         DIG 4 ;
2050
                                         SWAP ;
2051
                                         SOME ;
2052
                                         SWAP ;
2053
                                         UPDATE ;
2054
                                         UPDATE 9 ;
2055
                                         SWAP ;
2056
                                         CDR } }
2057
                                   { DIG 2 ;
2058
                                     DIG 5 ;
2059
                                     DROP 2 ;
2060
                                     UNPAIR ;
2061
                                     SWAP ;
2062
                                     DUP 3 ;
2063
                                     DUP 3 ;
2064
                                     PAIR ;
2065
                                     DUP 5 ;
2066
                                     SWAP ;
2067
                                     EXEC ;
2068
                                     PUSH string "INVALID_ACCESS" ;
2069
                                     DUP 2 ;
2070
                                     GET 15 ;
2071
                                     SENDER ;
2072
                                     COMPARE ;
2073
                                     EQ ;
2074
                                     IF { DROP } { FAILWITH } ;
2075
                                     DIG 5 ;
2076
                                     SWAP ;
2077
                                     GET 7 ;
2078
                                     CAR ;
2079
                                     COMPARE ;
2080
                                     EQ ;
2081
                                     IF
2082
                                       {}
2083
                                       { PUSH string "SLICE_CANNOT_UPDATE_ROYALTIES" ;
2084
                                         FAILWITH } ;
2085
                                     DUP 3 ;
2086
                                     GET 5 ;
2087
                                     GET 7 ;
2088
                                     DUP 4 ;
2089
                                     GET 5 ;
2090
                                     GET 5 ;
2091
                                     SWAP ;
2092
                                     SOME ;
2093
                                     SWAP ;
2094
                                     UPDATE ;
2095
                                     PUSH nat 4 ;
2096
                                     PAIR ;
2097
                                     DUP 3 ;
2098
                                     NIL operation ;
2099
                                     DIG 4 ;
2100
                                     DIG 4 ;
2101
                                     PAIR ;
2102
                                     DIG 4 ;
2103
                                     SWAP ;
2104
                                     EXEC ;
2105
                                     DUP ;
2106
                                     CAR ;
2107
                                     CAR ;
2108
                                     CONTRACT %update_royalties (map nat
2109
                                                                     (pair
2110
                                                                       (nat %decimals)
2111
                                                                       (map %shares
2112
                                                                         address
2113
                                                                         nat))) ;
2114
                                     IF_NONE
2115
                                       { PUSH string "SLICE_FA2_UPDATE_ROYALTIES_UNDEFINED" ;
2116
                                         FAILWITH }
2117
                                       {} ;
2118
                                     PUSH mutez 0 ;
2119
                                     EMPTY_MAP nat (pair nat (map address nat)) ;
2120
                                     DIG 6 ;
2121
                                     DIG 4 ;
2122
                                     CAR ;
2123
                                     CDR ;
2124
                                     SWAP ;
2125
                                     SOME ;
2126
                                     SWAP ;
2127
                                     UPDATE ;
2128
                                     TRANSFER_TOKENS ;
2129
                                     CONS } } } }
2130
                       { DIG 4 ;
2131
                         DIG 6 ;
2132
                         DIG 11 ;
2133
                         DIG 12 ;
2134
                         DIG 14 ;
2135
                         DROP 5 ;
2136
                         IF_LEFT
2137
                           { DIG 5 ;
2138
                             DIG 7 ;
2139
                             DIG 9 ;
2140
                             DIG 11 ;
2141
                             DROP 4 ;
2142
                             SWAP ;
2143
                             DUP ;
2144
                             DUP 3 ;
2145
                             PAIR ;
2146
                             DIG 7 ;
2147
                             SWAP ;
2148
                             EXEC ;
2149
                             PUSH string "SLICE_NO_RESCUING" ;
2150
                             DIG 8 ;
2151
                             DUP 3 ;
2152
                             GET 7 ;
2153
                             CAR ;
2154
                             COMPARE ;
2155
                             EQ ;
2156
                             IF { DROP } { FAILWITH } ;
2157
                             NIL operation ;
2158
                             DUP 3 ;
2159
                             DUP 4 ;
2160
                             DUP 6 ;
2161
                             PAIR ;
2162
                             DIG 9 ;
2163
                             SWAP ;
2164
                             EXEC ;
2165
                             PAIR ;
2166
                             DUP 5 ;
2167
                             SENDER ;
2168
                             PAIR ;
2169
                             PAIR ;
2170
                             DIG 7 ;
2171
                             SWAP ;
2172
                             EXEC ;
2173
                             CONS ;
2174
                             SENDER ;
2175
                             DUP 3 ;
2176
                             GET 3 ;
2177
                             PAIR ;
2178
                             DIG 6 ;
2179
                             SWAP ;
2180
                             EXEC ;
2181
                             CONS ;
2182
                             SENDER ;
2183
                             DUP 3 ;
2184
                             PAIR ;
2185
                             PAIR ;
2186
                             DIG 4 ;
2187
                             SWAP ;
2188
                             EXEC ;
2189
                             DUP 2 ;
2190
                             DIG 2 ;
2191
                             GET 7 ;
2192
                             SENDER ;
2193
                             UPDATE 6 ;
2194
                             UPDATE 7 ;
2195
                             SWAP ;
2196
                             DUP 2 ;
2197
                             DIG 2 ;
2198
                             GET 7 ;
2199
                             PUSH nat 3 ;
2200
                             UPDATE 1 ;
2201
                             UPDATE 7 ;
2202
                             SWAP ;
2203
                             DUP 3 ;
2204
                             DIG 3 ;
2205
                             GET 9 ;
2206
                             DIG 3 ;
2207
                             DIG 4 ;
2208
                             SWAP ;
2209
                             SOME ;
2210
                             SWAP ;
2211
                             UPDATE ;
2212
                             UPDATE 9 }
2213
                           { DIG 2 ;
2214
                             DIG 3 ;
2215
                             DIG 4 ;
2216
                             DIG 6 ;
2217
                             DROP 4 ;
2218
                             UNPAIR ;
2219
                             DIG 2 ;
2220
                             DUP ;
2221
                             DUP 3 ;
2222
                             PAIR ;
2223
                             DIG 6 ;
2224
                             SWAP ;
2225
                             EXEC ;
2226
                             PUSH string "SLICE_NO_VOTING" ;
2227
                             DIG 8 ;
2228
                             DUP 3 ;
2229
                             GET 7 ;
2230
                             CAR ;
2231
                             COMPARE ;
2232
                             EQ ;
2233
                             IF { DROP } { FAILWITH } ;
2234
                             DUP 2 ;
2235
                             DUP 4 ;
2236
                             SENDER ;
2237
                             PAIR ;
2238
                             PAIR ;
2239
                             DIG 5 ;
2240
                             SWAP ;
2241
                             EXEC ;
2242
                             PUSH nat 0 ;
2243
                             DUP 2 ;
2244
                             COMPARE ;
2245
                             GT ;
2246
                             IF {} { PUSH string "SLICE_NO_VOTING_POWER" ; FAILWITH } ;
2247
                             DUP 3 ;
2248
                             DUP 5 ;
2249
                             SENDER ;
2250
                             PAIR ;
2251
                             PAIR ;
2252
                             DIG 6 ;
2253
                             SWAP ;
2254
                             EXEC ;
2255
                             DUP ;
2256
                             DUP 7 ;
2257
                             COMPARE ;
2258
                             NEQ ;
2259
                             IF {} { PUSH string "SLICE_VOTE_UNCHANGED" ; FAILWITH } ;
2260
                             DUP 3 ;
2261
                             DUP 2 ;
2262
                             DUP 9 ;
2263
                             SWAP ;
2264
                             EXEC ;
2265
                             DUP 4 ;
2266
                             MUL ;
2267
                             DUP 8 ;
2268
                             DIG 9 ;
2269
                             SWAP ;
2270
                             EXEC ;
2271
                             DUP 5 ;
2272
                             MUL ;
2273
                             DIG 5 ;
2274
                             GET 9 ;
2275
                             ADD ;
2276
                             SUB ;
2277
                             ABS ;
2278
                             UPDATE 9 ;
2279
                             DUG 2 ;
2280
                             PUSH mutez 0 ;
2281
                             SWAP ;
2282
                             COMPARE ;
2283
                             EQ ;
2284
                             IF
2285
                               { DUP 2 ; DUP 2 ; DIG 3 ; GET 11 ; ADD ; UPDATE 11 ; SWAP }
2286
                               {} ;
2287
                             PUSH mutez 0 ;
2288
                             DUP 6 ;
2289
                             COMPARE ;
2290
                             EQ ;
2291
                             IF
2292
                               { DUP 2 ; SWAP ; DIG 2 ; GET 11 ; SUB ; ABS ; UPDATE 11 }
2293
                               { DROP } ;
2294
                             DUP 2 ;
2295
                             DIG 2 ;
2296
                             GET 9 ;
2297
                             DIG 2 ;
2298
                             DUP 4 ;
2299
                             SWAP ;
2300
                             SOME ;
2301
                             SWAP ;
2302
                             UPDATE ;
2303
                             UPDATE 9 ;
2304
                             DUP ;
2305
                             GET 13 ;
2306
                             DIG 3 ;
2307
                             DIG 3 ;
2308
                             SENDER ;
2309
                             PAIR ;
2310
                             SWAP ;
2311
                             SOME ;
2312
                             SWAP ;
2313
                             UPDATE ;
2314
                             UPDATE 13 } ;
2315
                         SWAP } }
2316
                   { DIG 2 ;
2317
                     DIG 3 ;
2318
                     DIG 4 ;
2319
                     DIG 5 ;
2320
                     DIG 6 ;
2321
                     DIG 7 ;
2322
                     DIG 8 ;
2323
                     DIG 9 ;
2324
                     DIG 11 ;
2325
                     DIG 12 ;
2326
                     DIG 13 ;
2327
                     DIG 14 ;
2328
                     DIG 15 ;
2329
                     DROP 13 ;
2330
                     SWAP ;
2331
                     PUSH string "INVALID_OWNER_ACCESS" ;
2332
                     DUP 2 ;
2333
                     SENDER ;
2334
                     SWAP ;
2335
                     GET 3 ;
2336
                     CAR ;
2337
                     SWAP ;
2338
                     COMPARE ;
2339
                     EQ ;
2340
                     IF { DROP } { FAILWITH } ;
2341
                     SWAP ;
2342
                     IF_LEFT
2343
                       { IF_LEFT
2344
                           { DIG 2 ;
2345
                             DROP ;
2346
                             IF_LEFT
2347
                               { DROP ;
2348
                                 DUP ;
2349
                                 GET 7 ;
2350
                                 PUSH bool False ;
2351
                                 UPDATE 1 ;
2352
                                 UPDATE 7 ;
2353
                                 DUP ;
2354
                                 GET 7 ;
2355
                                 NONE address ;
2356
                                 UPDATE 2 ;
2357
                                 UPDATE 7 }
2358
                               { SWAP ;
2359
                                 DUP ;
2360
                                 GET 7 ;
2361
                                 PUSH bool True ;
2362
                                 UPDATE 1 ;
2363
                                 UPDATE 7 ;
2364
                                 DUP ;
2365
                                 GET 7 ;
2366
                                 DIG 2 ;
2367
                                 SOME ;
2368
                                 UPDATE 2 ;
2369
                                 UPDATE 7 } }
2370
                           { IF_LEFT
2371
                               { DIG 2 ;
2372
                                 DROP 2 ;
2373
                                 DUP ;
2374
                                 GET 3 ;
2375
                                 PUSH address "tz1Ke2h7sDdakHJQh8WX4Z372du1KChsksyU" ;
2376
                                 UPDATE 1 ;
2377
                                 UPDATE 3 }
2378
                               { UNPAIR ;
2379
                                 DIG 2 ;
2380
                                 DUP ;
2381
                                 DUP 3 ;
2382
                                 PAIR ;
2383
                                 DIG 4 ;
2384
                                 SWAP ;
2385
                                 EXEC ;
2386
                                 DIG 3 ;
2387
                                 UPDATE 15 ;
2388
                                 DUP 2 ;
2389
                                 DIG 2 ;
2390
                                 GET 9 ;
2391
                                 DIG 2 ;
2392
                                 DIG 3 ;
2393
                                 SWAP ;
2394
                                 SOME ;
2395
                                 SWAP ;
2396
                                 UPDATE ;
2397
                                 UPDATE 9 } } }
2398
                       { DIG 2 ;
2399
                         DROP ;
2400
                         IF_LEFT
2401
                           { SWAP ;
2402
                             DUP 2 ;
2403
                             CAR ;
2404
                             IF_NONE
2405
                               {}
2406
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 1 ; UPDATE 5 } ;
2407
                             DUP 2 ;
2408
                             GET 3 ;
2409
                             IF_NONE
2410
                               {}
2411
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 3 ; UPDATE 5 } ;
2412
                             DUP 2 ;
2413
                             GET 5 ;
2414
                             IF_NONE
2415
                               {}
2416
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 5 ; UPDATE 5 } ;
2417
                             DUP 2 ;
2418
                             GET 7 ;
2419
                             IF_NONE
2420
                               {}
2421
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 7 ; UPDATE 5 } ;
2422
                             DUP 2 ;
2423
                             GET 9 ;
2424
                             IF_NONE
2425
                               {}
2426
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 9 ; UPDATE 5 } ;
2427
                             DUP 2 ;
2428
                             GET 11 ;
2429
                             IF_NONE
2430
                               {}
2431
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 11 ; UPDATE 5 } ;
2432
                             DUP 2 ;
2433
                             GET 13 ;
2434
                             IF_NONE
2435
                               {}
2436
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 13 ; UPDATE 5 } ;
2437
                             DUP 2 ;
2438
                             GET 15 ;
2439
                             IF_NONE
2440
                               {}
2441
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 15 ; UPDATE 5 } ;
2442
                             DUP 2 ;
2443
                             GET 17 ;
2444
                             IF_NONE
2445
                               {}
2446
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 17 ; UPDATE 5 } ;
2447
                             DUP 2 ;
2448
                             GET 19 ;
2449
                             IF_NONE
2450
                               {}
2451
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 19 ; UPDATE 5 } ;
2452
                             DUP 2 ;
2453
                             GET 21 ;
2454
                             IF_NONE
2455
                               {}
2456
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 21 ; UPDATE 5 } ;
2457
                             SWAP ;
2458
                             GET 22 ;
2459
                             IF_NONE
2460
                               {}
2461
                               { DUP 2 ; DIG 2 ; GET 5 ; DIG 2 ; UPDATE 22 ; UPDATE 5 } }
2462
                           { SWAP ; DUP ; GET 3 ; DIG 2 ; SOME ; UPDATE 2 ; UPDATE 3 } } ;
2463
                     SWAP } }
2464
               { DIG 4 ;
2465
                 DIG 5 ;
2466
                 DIG 6 ;
2467
                 DIG 7 ;
2468
                 DIG 8 ;
2469
                 DIG 11 ;
2470
                 DROP 6 ;
2471
                 IF_LEFT
2472
                   { DIG 4 ;
2473
                     DIG 11 ;
2474
                     DIG 12 ;
2475
                     DROP 3 ;
2476
                     SWAP ;
2477
                     DUP ;
2478
                     DUP 3 ;
2479
                     PAIR ;
2480
                     DUP 6 ;
2481
                     SWAP ;
2482
                     EXEC ;
2483
                     PUSH string "SLICE_AUCTION_NO_RESOLVING" ;
2484
                     DIG 11 ;
2485
                     DUP 3 ;
2486
                     GET 7 ;
2487
                     CAR ;
2488
                     COMPARE ;
2489
                     EQ ;
2490
                     IF { DROP } { FAILWITH } ;
2491
                     PUSH string "SLICE_AUCTION_LIVE" ;
2492
                     NOW ;
2493
                     DUP 3 ;
2494
                     GET 7 ;
2495
                     GET 3 ;
2496
                     COMPARE ;
2497
                     LT ;
2498
                     IF { DROP } { FAILWITH } ;
2499
                     NIL operation ;
2500
                     DUP 2 ;
2501
                     GET 7 ;
2502
                     GET 6 ;
2503
                     DUP 3 ;
2504
                     GET 3 ;
2505
                     PAIR ;
2506
                     DIG 6 ;
2507
                     SWAP ;
2508
                     EXEC ;
2509
                     CONS ;
2510
                     DUP 2 ;
2511
                     GET 7 ;
2512
                     GET 6 ;
2513
                     DUP 3 ;
2514
                     PAIR ;
2515
                     PAIR ;
2516
                     DIG 4 ;
2517
                     SWAP ;
2518
                     EXEC ;
2519
                     PUSH nat 0 ;
2520
                     DUP 4 ;
2521
                     DUP 4 ;
2522
                     GET 7 ;
2523
                     GET 5 ;
2524
                     DIG 10 ;
2525
                     SWAP ;
2526
                     EXEC ;
2527
                     DUP 7 ;
2528
                     DIG 2 ;
2529
                     SWAP ;
2530
                     PAIR ;
2531
                     DIG 7 ;
2532
                     SWAP ;
2533
                     EXEC ;
2534
                     DUP ;
2535
                     CAR ;
2536
                     CAR ;
2537
                     DUG 2 ;
2538
                     CAR ;
2539
                     CDR ;
2540
                     PAIR ;
2541
                     VIEW "calc_royalties" (map address nat) ;
2542
                     IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
2543
                     ITER { UNPAIR ;
2544
                            PUSH nat 0 ;
2545
                            DUP 3 ;
2546
                            COMPARE ;
2547
                            GT ;
2548
                            IF
2549
                              { DIG 3 ;
2550
                                DUP 3 ;
2551
                                DUP 9 ;
2552
                                SWAP ;
2553
                                EXEC ;
2554
                                DIG 2 ;
2555
                                PAIR ;
2556
                                DUP 9 ;
2557
                                SWAP ;
2558
                                EXEC ;
2559
                                CONS ;
2560
                                DUG 2 ;
2561
                                ADD }
2562
                              { DROP 2 } } ;
2563
                     DIG 6 ;
2564
                     DROP ;
2565
                     DUP 3 ;
2566
                     SWAP ;
2567
                     DIG 6 ;
2568
                     SWAP ;
2569
                     EXEC ;
2570
                     DIG 3 ;
2571
                     GET 7 ;
2572
                     GET 5 ;
2573
                     SUB_MUTEZ ;
2574
                     IF_NONE { PUSH string "option is None" ; FAILWITH } {} ;
2575
                     UPDATE 13 ;
2576
                     SWAP ;
2577
                     DUP 2 ;
2578
                     DIG 2 ;
2579
                     GET 7 ;
2580
                     DIG 5 ;
2581
                     UPDATE 1 ;
2582
                     UPDATE 7 ;
2583
                     SWAP ;
2584
                     DUP 3 ;
2585
                     DIG 3 ;
2586
                     GET 9 ;
2587
                     DIG 3 ;
2588
                     DIG 4 ;
2589
                     SWAP ;
2590
                     SOME ;
2591
                     SWAP ;
2592
                     UPDATE ;
2593
                     UPDATE 9 }
2594
                   { DIG 2 ;
2595
                     DIG 3 ;
2596
                     DIG 6 ;
2597
                     DIG 7 ;
2598
                     DIG 9 ;
2599
                     DIG 10 ;
2600
                     DROP 6 ;
2601
                     LAMBDA
2602
                       (pair
2603
                         (pair
2604
                           (lambda
2605
                             (pair (pair address nat) (big_map string bytes)
2606
                                   (pair address (option address))
2607
                                   (pair address address address nat nat mutez int int
2608
                                         nat
2609
                                         nat
2610
                                         nat
2611
                                         string)
2612
                                   (pair bool (option address))
2613
                                   (big_map nat
2614
                                            (pair (pair address nat) address
2615
                                                  (map (pair address nat) nat)
2616
                                                  (pair nat timestamp mutez address)
2617
                                                  nat
2618
                                                  nat
2619
                                                  mutez
2620
                                                  address
2621
                                                  nat
2622
                                                  timestamp
2623
                                                  timestamp
2624
                                                  bool))
2625
                                   (big_map nat (map string bytes))
2626
                                   (big_map (pair address nat) mutez)
2627
                                   (big_map (pair address nat) nat)
2628
                                   nat)
2629
                             mutez)
2630
                           (lambda
2631
                             (pair nat (big_map string bytes)
2632
                                   (pair address (option address))
2633
                                   (pair address address address nat nat mutez int int
2634
                                         nat
2635
                                         nat
2636
                                         nat
2637
                                         string)
2638
                                   (pair bool (option address))
2639
                                   (big_map nat
2640
                                            (pair (pair address nat) address
2641
                                                  (map (pair address nat) nat)
2642
                                                  (pair nat timestamp mutez address)
2643
                                                  nat
2644
                                                  nat
2645
                                                  mutez
2646
                                                  address
2647
                                                  nat
2648
                                                  timestamp
2649
                                                  timestamp
2650
                                                  bool))
2651
                                   (big_map nat (map string bytes))
2652
                                   (big_map (pair address nat) mutez)
2653
                                   (big_map (pair address nat) nat)
2654
                                   nat)
2655
                             (pair (pair address nat) address
2656
                                   (map (pair address nat) nat)
2657
                                   (pair nat timestamp mutez address)
2658
                                   nat
2659
                                   nat
2660
                                   mutez
2661
                                   address
2662
                                   nat
2663
                                   timestamp
2664
                                   timestamp
2665
                                   bool))
2666
                           (lambda mutez nat)
2667
                           nat)
2668
                         (pair
2669
                           (pair (big_map string bytes) (pair address (option address))
2670
                                 (pair address address address nat nat mutez int int nat
2671
                                       nat
2672
                                       nat
2673
                                       string)
2674
                                 (pair bool (option address))
2675
                                 (big_map nat
2676
                                          (pair (pair address nat) address
2677
                                                (map (pair address nat) nat)
2678
                                                (pair nat timestamp mutez address)
2679
                                                nat
2680
                                                nat
2681
                                                mutez
2682
                                                address
2683
                                                nat
2684
                                                timestamp
2685
                                                timestamp
2686
                                                bool))
2687
                                 (big_map nat (map string bytes))
2688
                                 (big_map (pair address nat) mutez)
2689
                                 (big_map (pair address nat) nat)
2690
                                 nat)
2691
                           address
2692
                           (list (pair address nat nat))))
2693
                       (pair (big_map string bytes) (pair address (option address))
2694
                             (pair address address address nat nat mutez int int nat nat
2695
                                   nat
2696
                                   string)
2697
                             (pair bool (option address))
2698
                             (big_map nat
2699
                                      (pair (pair address nat) address
2700
                                            (map (pair address nat) nat)
2701
                                            (pair nat timestamp mutez address)
2702
                                            nat
2703
                                            nat
2704
                                            mutez
2705
                                            address
2706
                                            nat
2707
                                            timestamp
2708
                                            timestamp
2709
                                            bool))
2710
                             (big_map nat (map string bytes))
2711
                             (big_map (pair address nat) mutez)
2712
                             (big_map (pair address nat) nat)
2713
                             nat)
2714
                       { UNPAIR ;
2715
                         UNPAIR 4 ;
2716
                         DIG 4 ;
2717
                         UNPAIR ;
2718
                         DUP 2 ;
2719
                         CDR ;
2720
                         LAMBDA
2721
                           (pair
2722
                             (pair (pair address (list (pair address nat nat)))
2723
                                   (lambda
2724
                                     (pair (pair address nat) (big_map string bytes)
2725
                                           (pair address (option address))
2726
                                           (pair address address address nat nat mutez
2727
                                                 int
2728
                                                 int
2729
                                                 nat
2730
                                                 nat
2731
                                                 nat
2732
                                                 string)
2733
                                           (pair bool (option address))
2734
                                           (big_map nat
2735
                                                    (pair (pair address nat) address
2736
                                                          (map (pair address nat) nat)
2737
                                                          (pair nat timestamp mutez
2738
                                                                address)
2739
                                                          nat
2740
                                                          nat
2741
                                                          mutez
2742
                                                          address
2743
                                                          nat
2744
                                                          timestamp
2745
                                                          timestamp
2746
                                                          bool))
2747
                                           (big_map nat (map string bytes))
2748
                                           (big_map (pair address nat) mutez)
2749
                                           (big_map (pair address nat) nat)
2750
                                           nat)
2751
                                     mutez)
2752
                                   (lambda
2753
                                     (pair nat (big_map string bytes)
2754
                                           (pair address (option address))
2755
                                           (pair address address address nat nat mutez
2756
                                                 int
2757
                                                 int
2758
                                                 nat
2759
                                                 nat
2760
                                                 nat
2761
                                                 string)
2762
                                           (pair bool (option address))
2763
                                           (big_map nat
2764
                                                    (pair (pair address nat) address
2765
                                                          (map (pair address nat) nat)
2766
                                                          (pair nat timestamp mutez
2767
                                                                address)
2768
                                                          nat
2769
                                                          nat
2770
                                                          mutez
2771
                                                          address
2772
                                                          nat
2773
                                                          timestamp
2774
                                                          timestamp
2775
                                                          bool))
2776
                                           (big_map nat (map string bytes))
2777
                                           (big_map (pair address nat) mutez)
2778
                                           (big_map (pair address nat) nat)
2779
                                           nat)
2780
                                     (pair (pair address nat) address
2781
                                           (map (pair address nat) nat)
2782
                                           (pair nat timestamp mutez address)
2783
                                           nat
2784
                                           nat
2785
                                           mutez
2786
                                           address
2787
                                           nat
2788
                                           timestamp
2789
                                           timestamp
2790
                                           bool))
2791
                                   (lambda mutez nat)
2792
                                   nat)
2793
                             (pair
2794
                               (pair (big_map string bytes)
2795
                                     (pair address (option address))
2796
                                     (pair address address address nat nat mutez int int
2797
                                           nat
2798
                                           nat
2799
                                           nat
2800
                                           string)
2801
                                     (pair bool (option address))
2802
                                     (big_map nat
2803
                                              (pair (pair address nat) address
2804
                                                    (map (pair address nat) nat)
2805
                                                    (pair nat timestamp mutez address)
2806
                                                    nat
2807
                                                    nat
2808
                                                    mutez
2809
                                                    address
2810
                                                    nat
2811
                                                    timestamp
2812
                                                    timestamp
2813
                                                    bool))
2814
                                     (big_map nat (map string bytes))
2815
                                     (big_map (pair address nat) mutez)
2816
                                     (big_map (pair address nat) nat)
2817
                                     nat)
2818
                               address
2819
                               nat
2820
                               nat))
2821
                           (pair (big_map string bytes) (pair address (option address))
2822
                                 (pair address address address nat nat mutez int int nat
2823
                                       nat
2824
                                       nat
2825
                                       string)
2826
                                 (pair bool (option address))
2827
                                 (big_map nat
2828
                                          (pair (pair address nat) address
2829
                                                (map (pair address nat) nat)
2830
                                                (pair nat timestamp mutez address)
2831
                                                nat
2832
                                                nat
2833
                                                mutez
2834
                                                address
2835
                                                nat
2836
                                                timestamp
2837
                                                timestamp
2838
                                                bool))
2839
                                 (big_map nat (map string bytes))
2840
                                 (big_map (pair address nat) mutez)
2841
                                 (big_map (pair address nat) nat)
2842
                                 nat)
2843
                           { UNPAIR ;
2844
                             UNPAIR 5 ;
2845
                             DIG 5 ;
2846
                             UNPAIR ;
2847
                             DUP ;
2848
                             DUP 3 ;
2849
                             GET 3 ;
2850
                             SENDER ;
2851
                             DIG 2 ;
2852
                             GET 15 ;
2853
                             DUG 2 ;
2854
                             PAIR ;
2855
                             GET ;
2856
                             IF_NONE
2857
                               { SWAP ; DIG 2 ; DIG 3 ; DIG 4 ; DIG 5 ; DIG 6 ; DROP 6 }
2858
                               { SWAP ;
2859
                                 DUP 3 ;
2860
                                 GET 4 ;
2861
                                 DIG 2 ;
2862
                                 PAIR ;
2863
                                 DIG 2 ;
2864
                                 CAR ;
2865
                                 DIG 3 ;
2866
                                 CAR ;
2867
                                 DIG 2 ;
2868
                                 UNPAIR ;
2869
                                 DIG 4 ;
2870
                                 DUP ;
2871
                                 DUP 3 ;
2872
                                 PAIR ;
2873
                                 DIG 7 ;
2874
                                 SWAP ;
2875
                                 EXEC ;
2876
                                 DIG 8 ;
2877
                                 DUP 2 ;
2878
                                 GET 7 ;
2879
                                 CAR ;
2880
                                 COMPARE ;
2881
                                 EQ ;
2882
                                 IF
2883
                                   { DUP 2 ;
2884
                                     DUP 4 ;
2885
                                     DIG 6 ;
2886
                                     PAIR ;
2887
                                     PAIR ;
2888
                                     DUP 7 ;
2889
                                     SWAP ;
2890
                                     EXEC ;
2891
                                     DUP 3 ;
2892
                                     DUP 5 ;
2893
                                     DIG 7 ;
2894
                                     PAIR ;
2895
                                     PAIR ;
2896
                                     DIG 6 ;
2897
                                     SWAP ;
2898
                                     EXEC ;
2899
                                     DUP ;
2900
                                     DUP 3 ;
2901
                                     COMPARE ;
2902
                                     NEQ ;
2903
                                     IF
2904
                                       { DUP 3 ;
2905
                                         DUP 3 ;
2906
                                         DUP 9 ;
2907
                                         SWAP ;
2908
                                         EXEC ;
2909
                                         DUP 8 ;
2910
                                         MUL ;
2911
                                         DUP 3 ;
2912
                                         DIG 9 ;
2913
                                         SWAP ;
2914
                                         EXEC ;
2915
                                         DUP 9 ;
2916
                                         MUL ;
2917
                                         DIG 5 ;
2918
                                         GET 9 ;
2919
                                         ADD ;
2920
                                         SUB ;
2921
                                         ABS ;
2922
                                         UPDATE 9 ;
2923
                                         DUG 2 ;
2924
                                         PUSH mutez 0 ;
2925
                                         DIG 2 ;
2926
                                         COMPARE ;
2927
                                         EQ ;
2928
                                         IF
2929
                                           { DUP 2 ; DUP 6 ; DIG 3 ; GET 11 ; ADD ; UPDATE 11 ; SWAP }
2930
                                           {} ;
2931
                                         PUSH mutez 0 ;
2932
                                         SWAP ;
2933
                                         COMPARE ;
2934
                                         EQ ;
2935
                                         IF
2936
                                           { DUP ; DIG 4 ; DIG 2 ; GET 11 ; SUB ; ABS ; UPDATE 11 }
2937
                                           { DIG 3 ; DROP } }
2938
                                       { SWAP ; DIG 5 ; DIG 6 ; DROP 4 } }
2939
                                   { DIG 3 ; DIG 4 ; DIG 5 ; DIG 6 ; DIG 7 ; DROP 5 } ;
2940
                                 DUP 2 ;
2941
                                 DIG 2 ;
2942
                                 GET 9 ;
2943
                                 DIG 2 ;
2944
                                 DIG 3 ;
2945
                                 SWAP ;
2946
                                 SOME ;
2947
                                 SWAP ;
2948
                                 UPDATE ;
2949
                                 UPDATE 9 } } ;
2950
                         DUP 8 ;
2951
                         DUP 8 ;
2952
                         DUP 8 ;
2953
                         DUP 8 ;
2954
                         DUP 8 ;
2955
                         PAIR 5 ;
2956
                         APPLY ;
2957
                         DIG 3 ;
2958
                         DIG 4 ;
2959
                         DIG 5 ;
2960
                         DIG 6 ;
2961
                         DIG 7 ;
2962
                         DROP 5 ;
2963
                         DUG 2 ;
2964
                         ITER { SWAP ; PAIR ; DUP 2 ; SWAP ; EXEC } ;
2965
                         SWAP ;
2966
                         DROP } ;
2967
                     DUP 7 ;
2968
                     DUP 7 ;
2969
                     DUP 7 ;
2970
                     DUP 7 ;
2971
                     PAIR 4 ;
2972
                     APPLY ;
2973
                     DIG 3 ;
2974
                     DIG 4 ;
2975
                     DIG 5 ;
2976
                     DIG 6 ;
2977
                     DROP 4 ;
2978
                     DUG 2 ;
2979
                     ITER { SWAP ; PAIR ; DUP 2 ; SWAP ; EXEC } ;
2980
                     SWAP ;
2981
                     DROP } ;
2982
                 SWAP } } ;
2983
         PAIR } ;
2984
  view "get_total_supply" nat nat
2985
        { UNPAIR ;
2986
          SWAP ;
2987
          GET 9 ;
2988
          SWAP ;
2989
          GET ;
2990
          IF_NONE { PUSH string "SLICE_UNDEFINED" ; FAILWITH } {} ;
2991
          DUP ;
2992
          CAR ;
2993
          CAR ;
2994
          SWAP ;
2995
          CAR ;
2996
          CDR ;
2997
          VIEW "total_supply" nat ;
2998
          IF_NONE { PUSH string "option is None" ; FAILWITH } {} } ;
2999
  view "owner" unit address { CDR ; GET 3 ; CAR } ;
3000
  view "is_owner" address bool { UNPAIR ; SWAP ; GET 3 ; CAR ; SWAP ; COMPARE ; EQ } ;
3001
  view "next_slice_id" unit nat { CDR ; GET 16 } }