BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Stables
operations (11.4K)Storage Code Interact Tokens Metadata Fork Views Statistics Details
Latest
​x
804
 
1
{ parameter (or
2
              (or
3
                (or
4
                  (or (or (list %clean_holders address) (unit %restrict_to_whitelist))
5
                      (or (unit %open_to_all) (address %declare_ownership)))
6
                  (or (or (unit %claim_ownership) (unit %pause))
7
                      (or (unit %unpause) (bool %manage_rafle))))
8
                (or
9
                  (or (or (mutez %set_token_price) (nat %set_total_supply))
10
                      (or (pair %set_metadata (string %k) (option %d bytes))
11
                          (list %adds_to_whitelist address)))
12
                  (or
13
                    (or (list %removes_from_whitelist address) (address %set_collection))
14
                    (or (address %add_orders_operator) (address %remove_orders_operator)))))
15
              (or
16
                (or (or (address %do_create_order) (unit %create_order))
17
                    (or (address %create_order_for) (address %confirm_order)))
18
                (or
19
                  (or (pair %repay_order (address %target_address) (mutez %tez_amount))
20
                      (pair %drop (address %todrop) (nat %quantity)))
21
                  (pair %collect (address %collector) (mutez %amount))))) ;
22
  storage (pair (address %owner) (address %collection) (mutez %token_price)
23
                (nat %total_supply)
24
                (nat %current_supply)
25
                (option %owner_candidate address)
26
                (bool %paused)
27
                (bool %rafle_is_closed)
28
                (bool %white_list_state)
29
                (big_map %holders address
30
                                  (pair (nat %holder_token_count) (int %holder_status)))
31
                (big_map %orders_operator address unit)
32
                (big_map %white_list address unit)
33
                (big_map %metadata string bytes)) ;
34
  code { LAMBDA
35
           nat
36
           bool
37
           { PUSH unit Unit ;
38
             PUSH nat 1 ;
39
             DUP 3 ;
40
             COMPARE ;
41
             EQ ;
42
             IF
43
               { PUSH bool True }
44
               { PUSH nat 2 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ;
45
             IF
46
               { PUSH bool True }
47
               { PUSH nat 4 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ;
48
             IF
49
               { PUSH bool True }
50
               { PUSH nat 10 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ;
51
             IF { PUSH bool True ; SWAP ; DROP 1 } { PUSH bool False ; SWAP ; DROP 1 } ;
52
             SWAP ;
53
             DROP 1 } ;
54
         NIL operation ;
55
         DIG 2 ;
56
         UNPAIR ;
57
         DIP 1 { UNPAIR 13 } ;
58
         IF_LEFT
59
           { IF_LEFT
60
               { IF_LEFT
61
                   { IF_LEFT
62
                       { IF_LEFT
63
                           { DUP 2 ;
64
                             SENDER ;
65
                             COMPARE ;
66
                             EQ ;
67
                             NOT ;
68
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
69
                             DUP ;
70
                             ITER { DUP 12 ;
71
                                    DUP 2 ;
72
                                    GET ;
73
                                    IF_NONE
74
                                      { PUSH string "HOLDER_UNKNOWN" ; FAILWITH }
75
                                      { PUSH int 0 ;
76
                                        DUP 2 ;
77
                                        GET 2 ;
78
                                        COMPARE ;
79
                                        EQ ;
80
                                        IF
81
                                          { PUSH string "HOLDER_STATUS_ERROR" ; FAILWITH }
82
                                          {} ;
83
                                        DUP 13 ;
84
                                        NONE (pair nat int) ;
85
                                        DUP 4 ;
86
                                        UPDATE ;
87
                                        DIP 1 { DIG 12 ; DROP 1 } ;
88
                                        DUG 12 ;
89
                                        DROP 1 } ;
90
                                    DROP 1 } ;
91
                             DROP 1 ;
92
                             PAIR 13 ;
93
                             SWAP ;
94
                             PAIR }
95
                           { DROP 1 ;
96
                             DUP ;
97
                             SENDER ;
98
                             COMPARE ;
99
                             EQ ;
100
                             NOT ;
101
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
102
                             PUSH bool True ;
103
                             DIP 1 { DIG 8 ; DROP 1 } ;
104
                             DUG 8 ;
105
                             PAIR 13 ;
106
                             SWAP ;
107
                             PAIR } }
108
                       { IF_LEFT
109
                           { DROP 1 ;
110
                             DUP ;
111
                             SENDER ;
112
                             COMPARE ;
113
                             EQ ;
114
                             NOT ;
115
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
116
                             PUSH bool False ;
117
                             DIP 1 { DIG 8 ; DROP 1 } ;
118
                             DUG 8 ;
119
                             PAIR 13 ;
120
                             SWAP ;
121
                             PAIR }
122
                           { DUP 2 ;
123
                             SENDER ;
124
                             COMPARE ;
125
                             EQ ;
126
                             NOT ;
127
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
128
                             DUP ;
129
                             SOME ;
130
                             DIP 1 { DIG 6 ; DROP 1 } ;
131
                             DUG 6 ;
132
                             DROP 1 ;
133
                             PAIR 13 ;
134
                             SWAP ;
135
                             PAIR } } }
136
                   { IF_LEFT
137
                       { IF_LEFT
138
                           { DROP 1 ;
139
                             DUP 6 ;
140
                             IF_NONE
141
                               { PUSH bool False }
142
                               { SENDER ; DUP 2 ; COMPARE ; EQ ; SWAP ; DROP 1 } ;
143
                             NOT ;
144
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
145
                             SENDER ;
146
                             SWAP ;
147
                             DROP 1 ;
148
                             NONE address ;
149
                             DIP 1 { DIG 5 ; DROP 1 } ;
150
                             DUG 5 ;
151
                             PAIR 13 ;
152
                             SWAP ;
153
                             PAIR }
154
                           { DROP 1 ;
155
                             DUP ;
156
                             SENDER ;
157
                             COMPARE ;
158
                             EQ ;
159
                             NOT ;
160
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
161
                             DUP 7 ;
162
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
163
                             PUSH bool True ;
164
                             DIP 1 { DIG 6 ; DROP 1 } ;
165
                             DUG 6 ;
166
                             PAIR 13 ;
167
                             SWAP ;
168
                             PAIR } }
169
                       { IF_LEFT
170
                           { DROP 1 ;
171
                             DUP ;
172
                             SENDER ;
173
                             COMPARE ;
174
                             EQ ;
175
                             NOT ;
176
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
177
                             DUP 7 ;
178
                             NOT ;
179
                             IF { PUSH string "CONTRACT_NOT_PAUSED" ; FAILWITH } {} ;
180
                             PUSH bool False ;
181
                             DIP 1 { DIG 6 ; DROP 1 } ;
182
                             DUG 6 ;
183
                             PAIR 13 ;
184
                             SWAP ;
185
                             PAIR }
186
                           { DUP 2 ;
187
                             SENDER ;
188
                             COMPARE ;
189
                             EQ ;
190
                             NOT ;
191
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
192
                             DUP 8 ;
193
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
194
                             DUP ;
195
                             DIP 1 { DIG 8 ; DROP 1 } ;
196
                             DUG 8 ;
197
                             DROP 1 ;
198
                             PAIR 13 ;
199
                             SWAP ;
200
                             PAIR } } } }
201
               { IF_LEFT
202
                   { IF_LEFT
203
                       { IF_LEFT
204
                           { DUP 2 ;
205
                             SENDER ;
206
                             COMPARE ;
207
                             EQ ;
208
                             NOT ;
209
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
210
                             DUP 8 ;
211
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
212
                             PUSH mutez 0 ;
213
                             DUP 2 ;
214
                             COMPARE ;
215
                             EQ ;
216
                             IF { PUSH string "BAD_TOKEN_PRIZE" ; FAILWITH } {} ;
217
                             DUP ;
218
                             DIP 1 { DIG 3 ; DROP 1 } ;
219
                             DUG 3 ;
220
                             DROP 1 ;
221
                             PAIR 13 ;
222
                             SWAP ;
223
                             PAIR }
224
                           { DUP 2 ;
225
                             SENDER ;
226
                             COMPARE ;
227
                             EQ ;
228
                             NOT ;
229
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
230
                             DUP 8 ;
231
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
232
                             DUP 6 ;
233
                             DUP 2 ;
234
                             COMPARE ;
235
                             LT ;
236
                             IF { PUSH string "BAD_TOKEN_AMOUNT" ; FAILWITH } {} ;
237
                             PUSH nat 0 ;
238
                             DUP 2 ;
239
                             COMPARE ;
240
                             EQ ;
241
                             IF { PUSH string "BAD_TOKEN_AMOUNT" ; FAILWITH } {} ;
242
                             DUP ;
243
                             DIP 1 { DIG 4 ; DROP 1 } ;
244
                             DUG 4 ;
245
                             DROP 1 ;
246
                             PAIR 13 ;
247
                             SWAP ;
248
                             PAIR } }
249
                       { IF_LEFT
250
                           { UNPAIR ;
251
                             SWAP ;
252
                             DUP 3 ;
253
                             SENDER ;
254
                             COMPARE ;
255
                             EQ ;
256
                             NOT ;
257
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
258
                             DUP 9 ;
259
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
260
                             DUP 15 ;
261
                             DUP 2 ;
262
                             DUP 4 ;
263
                             UPDATE ;
264
                             DIP 1 { DIG 14 ; DROP 1 } ;
265
                             DUG 14 ;
266
                             DROP 2 ;
267
                             PAIR 13 ;
268
                             SWAP ;
269
                             PAIR }
270
                           { DUP 2 ;
271
                             SENDER ;
272
                             COMPARE ;
273
                             EQ ;
274
                             NOT ;
275
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
276
                             DUP 8 ;
277
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
278
                             DUP ;
279
                             ITER { DUP 14 ;
280
                                    DUP 2 ;
281
                                    MEM ;
282
                                    IF
283
                                      { PUSH string "white_list" ;
284
                                        PUSH string "KEY_EXISTS" ;
285
                                        PAIR ;
286
                                        FAILWITH }
287
                                      { DUP 14 ;
288
                                        PUSH unit Unit ;
289
                                        SOME ;
290
                                        DUP 3 ;
291
                                        UPDATE ;
292
                                        DIP 1 { DIG 13 ; DROP 1 } ;
293
                                        DUG 13 } ;
294
                                    DROP 1 } ;
295
                             DROP 1 ;
296
                             PAIR 13 ;
297
                             SWAP ;
298
                             PAIR } } }
299
                   { IF_LEFT
300
                       { IF_LEFT
301
                           { DUP 2 ;
302
                             SENDER ;
303
                             COMPARE ;
304
                             EQ ;
305
                             NOT ;
306
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
307
                             DUP 8 ;
308
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
309
                             DUP ;
310
                             ITER { DUP 14 ;
311
                                    NONE unit ;
312
                                    DUP 3 ;
313
                                    UPDATE ;
314
                                    DIP 1 { DIG 13 ; DROP 1 } ;
315
                                    DUG 13 ;
316
                                    DROP 1 } ;
317
                             DROP 1 ;
318
                             PAIR 13 ;
319
                             SWAP ;
320
                             PAIR }
321
                           { DUP 2 ;
322
                             SENDER ;
323
                             COMPARE ;
324
                             EQ ;
325
                             NOT ;
326
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
327
                             DUP 8 ;
328
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
329
                             DUP ;
330
                             DIP 1 { DIG 2 ; DROP 1 } ;
331
                             DUG 2 ;
332
                             DROP 1 ;
333
                             PAIR 13 ;
334
                             SWAP ;
335
                             PAIR } }
336
                       { IF_LEFT
337
                           { DUP 2 ;
338
                             SENDER ;
339
                             COMPARE ;
340
                             EQ ;
341
                             NOT ;
342
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
343
                             DUP 8 ;
344
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
345
                             DUP 12 ;
346
                             DUP 2 ;
347
                             MEM ;
348
                             IF
349
                               { PUSH string "orders_operator" ;
350
                                 PUSH string "KEY_EXISTS" ;
351
                                 PAIR ;
352
                                 FAILWITH }
353
                               { DUP 12 ;
354
                                 PUSH unit Unit ;
355
                                 SOME ;
356
                                 DUP 3 ;
357
                                 UPDATE ;
358
                                 DIP 1 { DIG 11 ; DROP 1 } ;
359
                                 DUG 11 } ;
360
                             DROP 1 ;
361
                             PAIR 13 ;
362
                             SWAP ;
363
                             PAIR }
364
                           { DUP 2 ;
365
                             SENDER ;
366
                             COMPARE ;
367
                             EQ ;
368
                             NOT ;
369
                             IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
370
                             DUP 8 ;
371
                             IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
372
                             DUP 12 ;
373
                             NONE unit ;
374
                             DUP 3 ;
375
                             UPDATE ;
376
                             DIP 1 { DIG 11 ; DROP 1 } ;
377
                             DUG 11 ;
378
                             DROP 1 ;
379
                             PAIR 13 ;
380
                             SWAP ;
381
                             PAIR } } } } }
382
           { IF_LEFT
383
               { IF_LEFT
384
                   { IF_LEFT
385
                       { SELF_ADDRESS ;
386
                         SENDER ;
387
                         COMPARE ;
388
                         EQ ;
389
                         NOT ;
390
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
391
                         DUP 4 ;
392
                         AMOUNT ;
393
                         COMPARE ;
394
                         LT ;
395
                         IF { PUSH string "INSUFFICIENT_FUNDS" ; FAILWITH } {} ;
396
                         DUP 8 ;
397
                         IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
398
                         DUP 9 ;
399
                         IF { PUSH string "RAFLE_IS_CLOSED" ; FAILWITH } {} ;
400
                         DUP 11 ;
401
                         DUP 2 ;
402
                         GET ;
403
                         IF_NONE {} { PUSH string "RAFLE_MAX_UNIT_REACH" ; FAILWITH } ;
404
                         DUP 4 ;
405
                         AMOUNT ;
406
                         EDIV ;
407
                         PUSH nat 0 ;
408
                         PUSH mutez 0 ;
409
                         DUP 3 ;
410
                         IF_NONE
411
                           {}
412
                           { DUP ;
413
                             GET 1 ;
414
                             DIP 1 { DIG 2 ; DROP 1 } ;
415
                             DUG 2 ;
416
                             DUP ;
417
                             GET 2 ;
418
                             DIP 1 { SWAP ; DROP 1 } ;
419
                             SWAP ;
420
                             DROP 1 } ;
421
                         PUSH mutez 0 ;
422
                         DUP 2 ;
423
                         COMPARE ;
424
                         GT ;
425
                         IF { PUSH string "BAD_TZ_AMOUNT" ; FAILWITH } {} ;
426
                         DUP 8 ;
427
                         DUP 10 ;
428
                         DUP 4 ;
429
                         ADD ;
430
                         COMPARE ;
431
                         GT ;
432
                         IF { PUSH string "SUPPLY_LIMIT" ; FAILWITH } {} ;
433
                         DUP 19 ;
434
                         DUP 3 ;
435
                         EXEC ;
436
                         NOT ;
437
                         IF { PUSH string "BAD_TOKEN_AMOUNT" ; FAILWITH } {} ;
438
                         DUP 13 ;
439
                         IF
440
                           { DUP 16 ;
441
                             DUP 5 ;
442
                             MEM ;
443
                             NOT ;
444
                             IF
445
                               { PUSH string "WHITE_LIST_ACCESS_RESTRICTION" ; FAILWITH }
446
                               {} }
447
                           {} ;
448
                         DUP 14 ;
449
                         DUP 5 ;
450
                         MEM ;
451
                         IF
452
                           { PUSH string "holders" ;
453
                             PUSH string "KEY_EXISTS" ;
454
                             PAIR ;
455
                             FAILWITH }
456
                           { DUP 14 ;
457
                             PUSH int 0 ;
458
                             DUP 4 ;
459
                             PAIR ;
460
                             SOME ;
461
                             DUP 6 ;
462
                             UPDATE ;
463
                             DIP 1 { DIG 13 ; DROP 1 } ;
464
                             DUG 13 } ;
465
                         DUP 2 ;
466
                         DUP 10 ;
467
                         ADD ;
468
                         DIP 1 { DIG 8 ; DROP 1 } ;
469
                         DUG 8 ;
470
                         DROP 4 ;
471
                         PAIR 13 ;
472
                         SWAP ;
473
                         PAIR }
474
                       { DROP 1 ;
475
                         NIL operation ;
476
                         NIL operation ;
477
                         DUP 16 ;
478
                         ITER { CONS } ;
479
                         SELF_ADDRESS ;
480
                         CONTRACT %do_create_order address ;
481
                         IF_NONE
482
                           { PUSH string "do_create_order" ;
483
                             PUSH string "ENTRY_NOT_FOUND" ;
484
                             PAIR ;
485
                             FAILWITH }
486
                           {} ;
487
                         AMOUNT ;
488
                         SENDER ;
489
                         TRANSFER_TOKENS ;
490
                         CONS ;
491
                         ITER { CONS } ;
492
                         DIP 1 { DIG 13 ; DROP 1 } ;
493
                         DUG 13 ;
494
                         PAIR 13 ;
495
                         SWAP ;
496
                         PAIR } }
497
                   { IF_LEFT
498
                       { DUP 12 ;
499
                         SENDER ;
500
                         MEM ;
501
                         NOT ;
502
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
503
                         NIL operation ;
504
                         NIL operation ;
505
                         DUP 17 ;
506
                         ITER { CONS } ;
507
                         SELF_ADDRESS ;
508
                         CONTRACT %do_create_order address ;
509
                         IF_NONE
510
                           { PUSH string "do_create_order" ;
511
                             PUSH string "ENTRY_NOT_FOUND" ;
512
                             PAIR ;
513
                             FAILWITH }
514
                           {} ;
515
                         AMOUNT ;
516
                         DUP 5 ;
517
                         TRANSFER_TOKENS ;
518
                         CONS ;
519
                         ITER { CONS } ;
520
                         DIP 1 { DIG 14 ; DROP 1 } ;
521
                         DUG 14 ;
522
                         DROP 1 ;
523
                         PAIR 13 ;
524
                         SWAP ;
525
                         PAIR }
526
                       { DUP 2 ;
527
                         SENDER ;
528
                         COMPARE ;
529
                         EQ ;
530
                         NOT ;
531
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
532
                         DUP 8 ;
533
                         IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
534
                         DUP 11 ;
535
                         DUP 2 ;
536
                         MEM ;
537
                         IF
538
                           { DUP 11 ;
539
                             DUP 2 ;
540
                             GET ;
541
                             IF_NONE { PUSH string "OPTION_IS_NONE" ; FAILWITH } {} ;
542
                             PUSH nat 0 ;
543
                             DUP 2 ;
544
                             GET 1 ;
545
                             COMPARE ;
546
                             EQ ;
547
                             IF { PUSH string "CONFIRM_ORDER_ERROR" ; FAILWITH } {} ;
548
                             PUSH int 0 ;
549
                             DUP 2 ;
550
                             GET 2 ;
551
                             COMPARE ;
552
                             NEQ ;
553
                             IF { PUSH string "CONFIRM_ORDER_ERROR" ; FAILWITH } {} ;
554
                             NIL operation ;
555
                             NIL operation ;
556
                             DUP 18 ;
557
                             ITER { CONS } ;
558
                             DUP 6 ;
559
                             CONTRACT %mint (pair address nat) ;
560
                             IF_NONE
561
                               { PUSH string "mint" ;
562
                                 PUSH string "ENTRY_NOT_FOUND" ;
563
                                 PAIR ;
564
                                 FAILWITH }
565
                               {} ;
566
                             PUSH mutez 0 ;
567
                             DUP 5 ;
568
                             GET 1 ;
569
                             DUP 7 ;
570
                             PAIR ;
571
                             TRANSFER_TOKENS ;
572
                             CONS ;
573
                             ITER { CONS } ;
574
                             DIP 1 { DIG 15 ; DROP 1 } ;
575
                             DUG 15 ;
576
                             DUP 12 ;
577
                             DUP 13 ;
578
                             DUP 4 ;
579
                             GET ;
580
                             IF_NONE
581
                               { PUSH string "holders" ;
582
                                 PUSH string "ASSET_NOT_FOUND" ;
583
                                 PAIR ;
584
                                 FAILWITH }
585
                               {} ;
586
                             UNPAIR ;
587
                             SWAP ;
588
                             DROP 1 ;
589
                             PUSH int 1 ;
590
                             SWAP ;
591
                             PAIR ;
592
                             SOME ;
593
                             DUP 4 ;
594
                             UPDATE ;
595
                             DIP 1 { DIG 11 ; DROP 1 } ;
596
                             DUG 11 ;
597
                             DROP 1 }
598
                           { PUSH string "CONFIRM_ORDER_ERROR" ; FAILWITH } ;
599
                         DROP 1 ;
600
                         PAIR 13 ;
601
                         SWAP ;
602
                         PAIR } } }
603
               { IF_LEFT
604
                   { IF_LEFT
605
                       { UNPAIR ;
606
                         SWAP ;
607
                         DUP 3 ;
608
                         SENDER ;
609
                         COMPARE ;
610
                         EQ ;
611
                         NOT ;
612
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
613
                         DUP 9 ;
614
                         IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
615
                         DUP 12 ;
616
                         DUP 3 ;
617
                         MEM ;
618
                         IF
619
                           { DUP 12 ;
620
                             DUP 3 ;
621
                             GET ;
622
                             IF_NONE { PUSH string "OPTION_IS_NONE" ; FAILWITH } {} ;
623
                             PUSH nat 0 ;
624
                             DUP 2 ;
625
                             GET 1 ;
626
                             COMPARE ;
627
                             EQ ;
628
                             IF { PUSH string "REPAY_HOLDER_ERROR" ; FAILWITH } {} ;
629
                             PUSH int 0 ;
630
                             DUP 2 ;
631
                             GET 2 ;
632
                             COMPARE ;
633
                             NEQ ;
634
                             IF { PUSH string "REPAY_HOLDER_ERROR" ; FAILWITH } {} ;
635
                             NIL operation ;
636
                             NIL operation ;
637
                             DUP 19 ;
638
                             ITER { CONS } ;
639
                             DUP 5 ;
640
                             CONTRACT unit ;
641
                             IF_NONE { PUSH string "ENTRY_NOT_FOUND" ; FAILWITH } {} ;
642
                             DUP 5 ;
643
                             UNIT ;
644
                             TRANSFER_TOKENS ;
645
                             CONS ;
646
                             ITER { CONS } ;
647
                             DIP 1 { DIG 16 ; DROP 1 } ;
648
                             DUG 16 ;
649
                             DUP ;
650
                             GET 1 ;
651
                             INT ;
652
                             DUP 9 ;
653
                             INT ;
654
                             SUB ;
655
                             ISNAT ;
656
                             IF_NONE { PUSH string "OPTION_IS_NONE" ; FAILWITH } {} ;
657
                             DUP ;
658
                             DIP 1 { DIG 8 ; DROP 1 } ;
659
                             DUG 8 ;
660
                             DUP 14 ;
661
                             DUP 15 ;
662
                             DUP 6 ;
663
                             GET ;
664
                             IF_NONE
665
                               { PUSH string "holders" ;
666
                                 PUSH string "ASSET_NOT_FOUND" ;
667
                                 PAIR ;
668
                                 FAILWITH }
669
                               {} ;
670
                             UNPAIR ;
671
                             SWAP ;
672
                             DROP 1 ;
673
                             PUSH int 2 ;
674
                             SWAP ;
675
                             PAIR ;
676
                             SOME ;
677
                             DUP 6 ;
678
                             UPDATE ;
679
                             DIP 1 { DIG 13 ; DROP 1 } ;
680
                             DUG 13 ;
681
                             DROP 2 }
682
                           { PUSH string "REPAY_HOLDER_ERROR" ; FAILWITH } ;
683
                         DROP 2 ;
684
                         PAIR 13 ;
685
                         SWAP ;
686
                         PAIR }
687
                       { UNPAIR ;
688
                         SWAP ;
689
                         DUP 3 ;
690
                         SENDER ;
691
                         COMPARE ;
692
                         EQ ;
693
                         NOT ;
694
                         IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
695
                         DUP 9 ;
696
                         IF { PUSH string "CONTRACT_PAUSED" ; FAILWITH } {} ;
697
                         DUP 6 ;
698
                         DUP 8 ;
699
                         DUP 3 ;
700
                         ADD ;
701
                         COMPARE ;
702
                         GT ;
703
                         IF { PUSH string "SUPPLY_LIMIT" ; FAILWITH } {} ;
704
                         NIL operation ;
705
                         NIL operation ;
706
                         DUP 18 ;
707
                         ITER { CONS } ;
708
                         DUP 6 ;
709
                         CONTRACT %mint (pair address nat) ;
710
                         IF_NONE
711
                           { PUSH string "mint" ;
712
                             PUSH string "ENTRY_NOT_FOUND" ;
713
                             PAIR ;
714
                             FAILWITH }
715
                           {} ;
716
                         PUSH mutez 0 ;
717
                         DUP 5 ;
718
                         DUP 7 ;
719
                         PAIR ;
720
                         TRANSFER_TOKENS ;
721
                         CONS ;
722
                         ITER { CONS } ;
723
                         DIP 1 { DIG 15 ; DROP 1 } ;
724
                         DUG 15 ;
725
                         DUP ;
726
                         DUP 8 ;
727
                         ADD ;
728
                         DIP 1 { DIG 6 ; DROP 1 } ;
729
                         DUG 6 ;
730
                         DROP 2 ;
731
                         PAIR 13 ;
732
                         SWAP ;
733
                         PAIR } }
734
                   { UNPAIR ;
735
                     SWAP ;
736
                     DUP 3 ;
737
                     SENDER ;
738
                     COMPARE ;
739
                     EQ ;
740
                     NOT ;
741
                     IF { PUSH string "INVALID_CALLER" ; FAILWITH } {} ;
742
                     NIL operation ;
743
                     NIL operation ;
744
                     DUP 18 ;
745
                     ITER { CONS } ;
746
                     DUP 4 ;
747
                     CONTRACT unit ;
748
                     IF_NONE { PUSH string "ENTRY_NOT_FOUND" ; FAILWITH } {} ;
749
                     DUP 4 ;
750
                     UNIT ;
751
                     TRANSFER_TOKENS ;
752
                     CONS ;
753
                     ITER { CONS } ;
754
                     DIP 1 { DIG 15 ; DROP 1 } ;
755
                     DUG 15 ;
756
                     DROP 2 ;
757
                     PAIR 13 ;
758
                     SWAP ;
759
                     PAIR } } } ;
760
         DIP 1 { DROP 1 } } ;
761
  view "is_white_list" address bool
762
        { UNPAIR ;
763
          DIP 1
764
               { CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP 1 } ;
765
          UNIT ;
766
          DUP 3 ;
767
          DUP 3 ;
768
          MEM ;
769
          SWAP ;
770
          DROP 1 ;
771
          DIP 1 { DROP 2 } } ;
772
  view "holder_count" address nat
773
        { UNPAIR ;
774
          DIP 1
775
               { CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; CDR ; UNPAIR ; SWAP ; DROP 1 } ;
776
          UNIT ;
777
          PUSH nat 0 ;
778
          DUP 4 ;
779
          DUP 4 ;
780
          GET ;
781
          IF_NONE {} { DUP ; GET 1 ; DIP 1 { SWAP ; DROP 1 } ; SWAP ; DROP 1 } ;
782
          DUP ;
783
          DIP 1 { SWAP ; DROP 1 } ;
784
          SWAP ;
785
          DROP 1 ;
786
          DIP 1 { DROP 2 } } ;
787
  view "is_token_amount_valid" nat bool
788
        { CAR ;
789
          UNIT ;
790
          PUSH nat 1 ;
791
          DUP 3 ;
792
          COMPARE ;
793
          EQ ;
794
          IF
795
            { PUSH bool True }
796
            { PUSH nat 2 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ;
797
          IF
798
            { PUSH bool True }
799
            { PUSH nat 4 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ;
800
          IF
801
            { PUSH bool True }
802
            { PUSH nat 10 ; DUP 3 ; COMPARE ; EQ ; IF { PUSH bool True } { PUSH bool False } } ;
803
          IF { PUSH bool True ; SWAP ; DROP 1 } { PUSH bool False ; SWAP ; DROP 1 } ;
804
          DIP 1 { DROP 1 } } }