BCD

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