BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • Plenty KALAM pond
operations (5.65K)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
1072
 
1
parameter (or
2
            (or (or (pair %AddReward (nat %blocks) (nat %reward)) (unit %GetReward))
3
                (or
4
                  (pair %RecoverExcessToken (pair (address %address) (nat %id))
5
                                            (pair (address %token)
6
                                                  (pair (nat %type) (nat %value))))
7
                  (unit %WithdrawFee)))
8
            (or (or (address %changeAdmin) (unit %changeState))
9
                (or
10
                  (pair %changeUnstakeFee (pair (nat %blocksPerCycle) (nat %cycles))
11
                                          (pair (nat %defaultFee) (nat %fee)))
12
                  (or (nat %stake) (pair %unstake (nat %Amount) (nat %MapKey))))));
13
storage (pair
14
          (pair
15
            (pair (address %admin)
16
                  (pair
17
                    (big_map %balances address
18
                                       (pair
19
                                         (pair
20
                                           (map %InvestMap nat
21
                                                           (pair (nat %amount)
22
                                                                 (nat %level)))
23
                                           (nat %balance))
24
                                         (pair (nat %counter)
25
                                               (pair (nat %rewards)
26
                                                     (nat %userRewardPerTokenPaid)))))
27
                    (nat %blocksPerCycle)))
28
            (pair (pair (nat %defaultUnstakeFee) (bool %faTwoToken))
29
                  (pair (nat %lastUpdateTime) (bool %paused))))
30
          (pair
31
            (pair (pair (nat %periodFinish) (nat %rewardPerTokenStored))
32
                  (pair (nat %rewardRate) (address %rewardToken)))
33
            (pair (pair (address %stakeToken) (nat %totalFee))
34
                  (pair (nat %totalSupply) (map %unstakeFee nat nat)))));
35
code { LAMBDA
36
         (pair address
37
               (pair
38
                 (pair
39
                   (pair address
40
                         (pair
41
                           (big_map address
42
                                    (pair (pair (map nat (pair nat nat)) nat)
43
                                          (pair nat (pair nat nat))))
44
                           nat))
45
                   (pair (pair nat bool) (pair nat bool)))
46
                 (pair (pair (pair nat nat) (pair nat address))
47
                       (pair (pair address nat) (pair nat (map nat nat))))))
48
         (pair (list operation)
49
               (pair unit
50
                     (pair
51
                       (pair
52
                         (pair address
53
                               (pair
54
                                 (big_map address
55
                                          (pair (pair (map nat (pair nat nat)) nat)
56
                                                (pair nat (pair nat nat))))
57
                                 nat))
58
                         (pair (pair nat bool) (pair nat bool)))
59
                       (pair (pair (pair nat nat) (pair nat address))
60
                             (pair (pair address nat) (pair nat (map nat nat)))))))
61
         { NIL operation ;
62
           SWAP ;
63
           DUP ;
64
           DUG 2 ;
65
           CDR ;
66
           DUP ;
67
           GET 3 ;
68
           CAR ;
69
           CAR ;
70
           LEVEL ;
71
           COMPARE ;
72
           GT ;
73
           IF { DUP ; GET 3 ; CAR ; CAR } { LEVEL } ;
74
           PUSH nat 0 ;
75
           DUP 3 ;
76
           GET 7 ;
77
           COMPARE ;
78
           NEQ ;
79
           IF
80
             { PUSH nat 0 ;
81
               DUP 3 ;
82
               CAR ;
83
               GET 5 ;
84
               DUP 3 ;
85
               SUB ;
86
               ISNAT ;
87
               IF_NONE { PUSH int 58 ; FAILWITH } {} ;
88
               ADD ;
89
               DUP 3 ;
90
               GET 3 ;
91
               GET 3 ;
92
               PUSH nat 10000000000 ;
93
               DIG 2 ;
94
               MUL ;
95
               MUL ;
96
               DUP 3 ;
97
               GET 7 ;
98
               SWAP ;
99
               EDIV ;
100
               IF_NONE { PUSH int 62 ; FAILWITH } { CAR } ;
101
               DIG 2 ;
102
               UNPAIR ;
103
               SWAP ;
104
               UNPAIR ;
105
               UNPAIR ;
106
               UNPAIR ;
107
               SWAP ;
108
               DIG 5 ;
109
               ADD ;
110
               SWAP ;
111
               PAIR ;
112
               PAIR ;
113
               PAIR ;
114
               SWAP ;
115
               PAIR ;
116
               SWAP }
117
             {} ;
118
           SWAP ;
119
           UNPAIR ;
120
           UNPAIR ;
121
           SWAP ;
122
           UNPAIR ;
123
           SWAP ;
124
           CDR ;
125
           DIG 4 ;
126
           PAIR ;
127
           SWAP ;
128
           PAIR ;
129
           SWAP ;
130
           PAIR ;
131
           PAIR ;
132
           SELF_ADDRESS ;
133
           DUP 4 ;
134
           CAR ;
135
           COMPARE ;
136
           NEQ ;
137
           IF
138
             { DUP ;
139
               UNPAIR ;
140
               UNPAIR ;
141
               UNPAIR ;
142
               SWAP ;
143
               UNPAIR ;
144
               DUP ;
145
               DUP 9 ;
146
               CAR ;
147
               DUP ;
148
               DUG 2 ;
149
               GET ;
150
               IF_NONE { PUSH int 71 ; FAILWITH } {} ;
151
               DUP ;
152
               GET 5 ;
153
               PUSH nat 10000000000 ;
154
               DUP 10 ;
155
               CAR ;
156
               CAR ;
157
               GET 3 ;
158
               DUP 13 ;
159
               CAR ;
160
               GET ;
161
               IF_NONE { PUSH int 71 ; FAILWITH } {} ;
162
               GET 6 ;
163
               DUP 11 ;
164
               GET 3 ;
165
               CAR ;
166
               CDR ;
167
               SUB ;
168
               ISNAT ;
169
               IF_NONE { PUSH int 71 ; FAILWITH } {} ;
170
               DIG 10 ;
171
               CAR ;
172
               CAR ;
173
               GET 3 ;
174
               DUP 13 ;
175
               CAR ;
176
               GET ;
177
               IF_NONE { PUSH int 71 ; FAILWITH } {} ;
178
               CAR ;
179
               CDR ;
180
               MUL ;
181
               EDIV ;
182
               IF_NONE { PUSH int 71 ; FAILWITH } { CAR } ;
183
               ADD ;
184
               UPDATE 5 ;
185
               SOME ;
186
               SWAP ;
187
               UPDATE ;
188
               PAIR ;
189
               SWAP ;
190
               PAIR ;
191
               PAIR ;
192
               PAIR ;
193
               DUP ;
194
               UNPAIR ;
195
               UNPAIR ;
196
               UNPAIR ;
197
               SWAP ;
198
               UNPAIR ;
199
               DUP ;
200
               DIG 8 ;
201
               CAR ;
202
               DUP ;
203
               DUG 2 ;
204
               GET ;
205
               IF_NONE { PUSH int 73 ; FAILWITH } {} ;
206
               DIG 7 ;
207
               GET 3 ;
208
               CAR ;
209
               CDR ;
210
               UPDATE 6 ;
211
               SOME ;
212
               SWAP ;
213
               UPDATE ;
214
               PAIR ;
215
               SWAP ;
216
               PAIR ;
217
               PAIR ;
218
               PAIR }
219
             { DIG 2 ; DROP } ;
220
           UNIT ;
221
           DIG 2 ;
222
           PAIR 3 } ;
223
       SWAP ;
224
       UNPAIR ;
225
       IF_LEFT
226
         { IF_LEFT
227
             { IF_LEFT
228
                 { SWAP ;
229
                   DUP ;
230
                   DUG 2 ;
231
                   CAR ;
232
                   CAR ;
233
                   CAR ;
234
                   SENDER ;
235
                   COMPARE ;
236
                   EQ ;
237
                   IF {} { PUSH string "Invalid Account" ; FAILWITH } ;
238
                   DUG 2 ;
239
                   SELF_ADDRESS ;
240
                   PAIR ;
241
                   EXEC ;
242
                   DUP ;
243
                   GET 4 ;
244
                   DUG 2 ;
245
                   CAR ;
246
                   DUP 3 ;
247
                   GET 3 ;
248
                   CAR ;
249
                   CAR ;
250
                   LEVEL ;
251
                   COMPARE ;
252
                   GE ;
253
                   IF
254
                     { DIG 2 ;
255
                       UNPAIR ;
256
                       SWAP ;
257
                       UNPAIR ;
258
                       UNPAIR ;
259
                       SWAP ;
260
                       CDR ;
261
                       DIG 5 ;
262
                       DUP ;
263
                       CAR ;
264
                       SWAP ;
265
                       DUP ;
266
                       DUG 7 ;
267
                       CDR ;
268
                       EDIV ;
269
                       IF_NONE { PUSH int 225 ; FAILWITH } { CAR } ;
270
                       PAIR ;
271
                       SWAP ;
272
                       PAIR ;
273
                       PAIR ;
274
                       SWAP ;
275
                       PAIR ;
276
                       DUG 2 }
277
                     { LEVEL ;
278
                       DUP 4 ;
279
                       GET 3 ;
280
                       CAR ;
281
                       CAR ;
282
                       SUB ;
283
                       ISNAT ;
284
                       IF_NONE { PUSH int 229 ; FAILWITH } {} ;
285
                       DUP 4 ;
286
                       GET 3 ;
287
                       GET 3 ;
288
                       MUL ;
289
                       DIG 3 ;
290
                       UNPAIR ;
291
                       SWAP ;
292
                       UNPAIR ;
293
                       UNPAIR ;
294
                       SWAP ;
295
                       CDR ;
296
                       DIG 6 ;
297
                       DUP ;
298
                       CAR ;
299
                       SWAP ;
300
                       DUP ;
301
                       DUG 8 ;
302
                       CDR ;
303
                       DIG 6 ;
304
                       ADD ;
305
                       EDIV ;
306
                       IF_NONE { PUSH int 232 ; FAILWITH } { CAR } ;
307
                       PAIR ;
308
                       SWAP ;
309
                       PAIR ;
310
                       PAIR ;
311
                       SWAP ;
312
                       PAIR ;
313
                       DUG 2 } ;
314
                   DIG 2 ;
315
                   UNPAIR ;
316
                   UNPAIR ;
317
                   SWAP ;
318
                   UNPAIR ;
319
                   SWAP ;
320
                   CDR ;
321
                   LEVEL ;
322
                   PAIR ;
323
                   SWAP ;
324
                   PAIR ;
325
                   SWAP ;
326
                   PAIR ;
327
                   SWAP ;
328
                   UNPAIR ;
329
                   UNPAIR ;
330
                   CDR ;
331
                   DIG 5 ;
332
                   CAR ;
333
                   LEVEL ;
334
                   ADD ;
335
                   PAIR ;
336
                   PAIR ;
337
                   PAIR ;
338
                   SWAP ;
339
                   PAIR ;
340
                   SWAP }
341
                 { SWAP ;
342
                   DUP ;
343
                   DUG 2 ;
344
                   CAR ;
345
                   CAR ;
346
                   GET 3 ;
347
                   SENDER ;
348
                   MEM ;
349
                   IF {} { PUSH string "User has not Staked" ; FAILWITH } ;
350
                   DUP 3 ;
351
                   DIG 2 ;
352
                   SENDER ;
353
                   PAIR ;
354
                   EXEC ;
355
                   DUP ;
356
                   GET 4 ;
357
                   DUG 2 ;
358
                   DUP ;
359
                   CAR ;
360
                   DUP 4 ;
361
                   GET 3 ;
362
                   CAR ;
363
                   CAR ;
364
                   LEVEL ;
365
                   COMPARE ;
366
                   GT ;
367
                   IF { DUP 4 ; GET 3 ; CAR ; CAR } { LEVEL } ;
368
                   DUP 5 ;
369
                   GET 3 ;
370
                   CAR ;
371
                   CDR ;
372
                   PUSH nat 0 ;
373
                   DUP 7 ;
374
                   GET 7 ;
375
                   COMPARE ;
376
                   NEQ ;
377
                   IF
378
                     { DROP ;
379
                       DUP 5 ;
380
                       CAR ;
381
                       GET 5 ;
382
                       SWAP ;
383
                       DUP ;
384
                       DUG 2 ;
385
                       SUB ;
386
                       ISNAT ;
387
                       IF_NONE { PUSH int 97 ; FAILWITH } {} ;
388
                       DUP 6 ;
389
                       GET 3 ;
390
                       CAR ;
391
                       CDR ;
392
                       PUSH nat 10000000000 ;
393
                       DUP ;
394
                       DUP 9 ;
395
                       GET 3 ;
396
                       GET 3 ;
397
                       DIG 4 ;
398
                       MUL ;
399
                       MUL ;
400
                       EDIV ;
401
                       IF_NONE { PUSH int 99 ; FAILWITH } { CAR } ;
402
                       ADD }
403
                     {} ;
404
                   DUP 6 ;
405
                   CAR ;
406
                   CAR ;
407
                   GET 3 ;
408
                   SENDER ;
409
                   GET ;
410
                   IF_NONE { PUSH int 103 ; FAILWITH } {} ;
411
                   CAR ;
412
                   CDR ;
413
                   DUP 7 ;
414
                   CAR ;
415
                   CAR ;
416
                   GET 3 ;
417
                   SENDER ;
418
                   GET ;
419
                   IF_NONE { PUSH int 105 ; FAILWITH } {} ;
420
                   GET 6 ;
421
                   DUP 3 ;
422
                   SUB ;
423
                   ISNAT ;
424
                   IF_NONE { PUSH int 105 ; FAILWITH } {} ;
425
                   MUL ;
426
                   DUP 7 ;
427
                   CAR ;
428
                   CAR ;
429
                   GET 3 ;
430
                   SENDER ;
431
                   GET ;
432
                   IF_NONE { PUSH int 107 ; FAILWITH } {} ;
433
                   GET 5 ;
434
                   PUSH nat 10000000000 ;
435
                   DIG 2 ;
436
                   EDIV ;
437
                   IF_NONE { PUSH int 107 ; FAILWITH } { CAR } ;
438
                   ADD ;
439
                   DUP ;
440
                   PUSH nat 0 ;
441
                   COMPARE ;
442
                   LT ;
443
                   IF
444
                     { SWAP ;
445
                       DROP ;
446
                       SWAP ;
447
                       DROP ;
448
                       DIG 2 ;
449
                       DROP ;
450
                       DIG 2 ;
451
                       DROP ;
452
                       DIG 3 ;
453
                       DROP ;
454
                       DIG 2 ;
455
                       UNPAIR ;
456
                       UNPAIR ;
457
                       UNPAIR ;
458
                       SWAP ;
459
                       UNPAIR ;
460
                       DUP ;
461
                       SENDER ;
462
                       DUP ;
463
                       DUG 2 ;
464
                       GET ;
465
                       IF_NONE { PUSH int 111 ; FAILWITH } {} ;
466
                       PUSH nat 0 ;
467
                       UPDATE 5 ;
468
                       SOME ;
469
                       SWAP ;
470
                       UPDATE ;
471
                       PAIR ;
472
                       SWAP ;
473
                       PAIR ;
474
                       PAIR ;
475
                       PAIR ;
476
                       DUP ;
477
                       DUG 3 ;
478
                       CAR ;
479
                       GET 3 ;
480
                       CDR ;
481
                       IF
482
                         { SWAP ;
483
                           DUP 3 ;
484
                           GET 3 ;
485
                           GET 4 ;
486
                           CONTRACT %transfer (list (pair address
487
                                                         (list (pair address
488
                                                                    (pair nat nat))))) ;
489
                           IF_NONE { PUSH int 322 ; FAILWITH } {} ;
490
                           PUSH mutez 0 ;
491
                           NIL (pair address (list (pair address (pair nat nat)))) ;
492
                           NIL (pair address (pair nat nat)) ;
493
                           DIG 5 ;
494
                           PUSH nat 0 ;
495
                           SENDER ;
496
                           PAIR 3 ;
497
                           CONS ;
498
                           SELF_ADDRESS ;
499
                           PAIR ;
500
                           CONS ;
501
                           TRANSFER_TOKENS ;
502
                           CONS }
503
                         { SWAP ;
504
                           DUP 3 ;
505
                           GET 3 ;
506
                           GET 4 ;
507
                           CONTRACT %transfer (pair address (pair address nat)) ;
508
                           IF_NONE { PUSH int 338 ; FAILWITH } {} ;
509
                           PUSH mutez 0 ;
510
                           DIG 3 ;
511
                           SENDER ;
512
                           SELF_ADDRESS ;
513
                           PAIR 3 ;
514
                           TRANSFER_TOKENS ;
515
                           CONS } }
516
                     { DROP 3 ; SWAP ; DROP ; SWAP ; DROP ; DIG 2 ; DROP } } }
517
             { IF_LEFT
518
                 { DIG 2 ;
519
                   DROP ;
520
                   SWAP ;
521
                   DUP ;
522
                   DUG 2 ;
523
                   CAR ;
524
                   CAR ;
525
                   CAR ;
526
                   SENDER ;
527
                   COMPARE ;
528
                   EQ ;
529
                   IF {} { PUSH string "Invalid Account" ; FAILWITH } ;
530
                   DUP ;
531
                   GET 5 ;
532
                   PUSH nat 1 ;
533
                   COMPARE ;
534
                   EQ ;
535
                   IF
536
                     { SWAP ;
537
                       DUP ;
538
                       DUG 2 ;
539
                       GET 5 ;
540
                       CAR ;
541
                       SWAP ;
542
                       DUP ;
543
                       DUG 2 ;
544
                       CAR ;
545
                       CAR ;
546
                       COMPARE ;
547
                       NEQ ;
548
                       IF
549
                         { PUSH bool True }
550
                         { DUP ; CAR ; CDR ; PUSH nat 0 ; COMPARE ; NEQ } ;
551
                       IF
552
                         {}
553
                         { PUSH string "Admin trying to recover the staked tokens" ;
554
                           FAILWITH } ;
555
                       DUP ;
556
                       GET 3 ;
557
                       CONTRACT %transfer (list (pair address
558
                                                     (list (pair address (pair nat nat))))) ;
559
                       IF_NONE { PUSH int 322 ; FAILWITH } {} ;
560
                       NIL operation ;
561
                       SWAP ;
562
                       PUSH mutez 0 ;
563
                       NIL (pair address (list (pair address (pair nat nat)))) ;
564
                       NIL (pair address (pair nat nat)) ;
565
                       DIG 5 ;
566
                       DUP ;
567
                       GET 6 ;
568
                       SWAP ;
569
                       DUP ;
570
                       CAR ;
571
                       CDR ;
572
                       SWAP ;
573
                       CAR ;
574
                       CAR ;
575
                       PAIR 3 ;
576
                       CONS ;
577
                       SELF_ADDRESS ;
578
                       PAIR ;
579
                       CONS ;
580
                       TRANSFER_TOKENS ;
581
                       CONS }
582
                     { SWAP ;
583
                       DUP ;
584
                       DUG 2 ;
585
                       GET 5 ;
586
                       CAR ;
587
                       SWAP ;
588
                       DUP ;
589
                       DUG 2 ;
590
                       CAR ;
591
                       CAR ;
592
                       COMPARE ;
593
                       NEQ ;
594
                       IF
595
                         {}
596
                         { PUSH string "Admin trying to recover the staked tokens" ;
597
                           FAILWITH } ;
598
                       DUP ;
599
                       GET 3 ;
600
                       CONTRACT %transfer (pair address (pair address nat)) ;
601
                       IF_NONE { PUSH int 338 ; FAILWITH } {} ;
602
                       NIL operation ;
603
                       SWAP ;
604
                       PUSH mutez 0 ;
605
                       DIG 3 ;
606
                       DUP ;
607
                       GET 6 ;
608
                       SWAP ;
609
                       CAR ;
610
                       CAR ;
611
                       SELF_ADDRESS ;
612
                       PAIR 3 ;
613
                       TRANSFER_TOKENS ;
614
                       CONS } }
615
                 { DROP ;
616
                   SWAP ;
617
                   DROP ;
618
                   DUP ;
619
                   GET 5 ;
620
                   CDR ;
621
                   PUSH nat 0 ;
622
                   COMPARE ;
623
                   LT ;
624
                   IF {} { PUSH string "Fee Should be Greater than 0" ; FAILWITH } ;
625
                   DUP ;
626
                   CAR ;
627
                   CAR ;
628
                   CAR ;
629
                   SENDER ;
630
                   COMPARE ;
631
                   EQ ;
632
                   IF {} { PUSH string "Invalid User" ; FAILWITH } ;
633
                   DUP ;
634
                   GET 5 ;
635
                   CDR ;
636
                   SWAP ;
637
                   UNPAIR ;
638
                   SWAP ;
639
                   UNPAIR ;
640
                   SWAP ;
641
                   UNPAIR ;
642
                   CAR ;
643
                   PUSH nat 0 ;
644
                   SWAP ;
645
                   PAIR ;
646
                   PAIR ;
647
                   SWAP ;
648
                   PAIR ;
649
                   SWAP ;
650
                   PAIR ;
651
                   SWAP ;
652
                   NIL operation ;
653
                   DUP 3 ;
654
                   GET 5 ;
655
                   CAR ;
656
                   CONTRACT %transfer (pair address (pair address nat)) ;
657
                   IF_NONE { PUSH int 338 ; FAILWITH } {} ;
658
                   PUSH mutez 0 ;
659
                   DIG 3 ;
660
                   SENDER ;
661
                   SELF_ADDRESS ;
662
                   PAIR 3 ;
663
                   TRANSFER_TOKENS ;
664
                   CONS } } }
665
         { IF_LEFT
666
             { DIG 2 ;
667
               DROP ;
668
               IF_LEFT
669
                 { SWAP ;
670
                   DUP ;
671
                   DUG 2 ;
672
                   CAR ;
673
                   CAR ;
674
                   CAR ;
675
                   SENDER ;
676
                   COMPARE ;
677
                   EQ ;
678
                   IF {} { PUSH string "Invalid User" ; FAILWITH } ;
679
                   SWAP ;
680
                   UNPAIR ;
681
                   UNPAIR ;
682
                   CDR ;
683
                   DIG 3 ;
684
                   PAIR ;
685
                   PAIR ;
686
                   PAIR }
687
                 { DROP ;
688
                   DUP ;
689
                   CAR ;
690
                   CAR ;
691
                   CAR ;
692
                   SENDER ;
693
                   COMPARE ;
694
                   EQ ;
695
                   IF {} { PUSH string "Invalid User" ; FAILWITH } ;
696
                   DUP ;
697
                   UNPAIR ;
698
                   UNPAIR ;
699
                   SWAP ;
700
                   UNPAIR ;
701
                   SWAP ;
702
                   CAR ;
703
                   DIG 4 ;
704
                   CAR ;
705
                   GET 6 ;
706
                   NOT ;
707
                   SWAP ;
708
                   PAIR ;
709
                   SWAP ;
710
                   PAIR ;
711
                   SWAP ;
712
                   PAIR ;
713
                   PAIR } ;
714
               NIL operation }
715
             { IF_LEFT
716
                 { DIG 2 ;
717
                   DROP ;
718
                   SWAP ;
719
                   DUP ;
720
                   DUG 2 ;
721
                   CAR ;
722
                   CAR ;
723
                   CAR ;
724
                   SENDER ;
725
                   COMPARE ;
726
                   EQ ;
727
                   IF {} { PUSH string "Invalid User" ; FAILWITH } ;
728
                   SWAP ;
729
                   DUP ;
730
                   GET 8 ;
731
                   DUP 3 ;
732
                   GET 4 ;
733
                   SOME ;
734
                   DUP 4 ;
735
                   CAR ;
736
                   CDR ;
737
                   UPDATE ;
738
                   UPDATE 8 ;
739
                   UNPAIR ;
740
                   UNPAIR ;
741
                   UNPAIR ;
742
                   SWAP ;
743
                   CAR ;
744
                   DUP 5 ;
745
                   CAR ;
746
                   CAR ;
747
                   SWAP ;
748
                   PAIR ;
749
                   SWAP ;
750
                   PAIR ;
751
                   SWAP ;
752
                   UNPAIR ;
753
                   CDR ;
754
                   DIG 4 ;
755
                   GET 3 ;
756
                   PAIR ;
757
                   PAIR ;
758
                   SWAP ;
759
                   PAIR ;
760
                   PAIR ;
761
                   NIL operation }
762
                 { IF_LEFT
763
                     { SWAP ;
764
                       DUP ;
765
                       DUG 2 ;
766
                       CAR ;
767
                       GET 6 ;
768
                       IF
769
                         { PUSH string "Contract is not accepting New Staking Orders" ;
770
                           FAILWITH }
771
                         {} ;
772
                       SWAP ;
773
                       DUP ;
774
                       DUG 2 ;
775
                       GET 3 ;
776
                       CAR ;
777
                       CAR ;
778
                       LEVEL ;
779
                       COMPARE ;
780
                       LE ;
781
                       IF
782
                         {}
783
                         { PUSH string "Users can't stake after period finish" ;
784
                           FAILWITH } ;
785
                       SWAP ;
786
                       DUP ;
787
                       DUG 2 ;
788
                       CAR ;
789
                       CAR ;
790
                       GET 3 ;
791
                       SENDER ;
792
                       MEM ;
793
                       IF
794
                         {}
795
                         { SWAP ;
796
                           UNPAIR ;
797
                           UNPAIR ;
798
                           UNPAIR ;
799
                           SWAP ;
800
                           UNPAIR ;
801
                           PUSH (option (pair (pair (map nat (pair nat nat)) nat)
802
                                          (pair nat (pair nat nat)))) (Some (Pair (Pair {} 0) (Pair 0 (Pair 0 0)))) ;
803
                           SENDER ;
804
                           UPDATE ;
805
                           PAIR ;
806
                           SWAP ;
807
                           PAIR ;
808
                           PAIR ;
809
                           PAIR ;
810
                           SWAP } ;
811
                       DUG 2 ;
812
                       SENDER ;
813
                       PAIR ;
814
                       EXEC ;
815
                       DUP ;
816
                       GET 4 ;
817
                       DUG 2 ;
818
                       CAR ;
819
                       PUSH nat 0 ;
820
                       DUP 3 ;
821
                       COMPARE ;
822
                       GT ;
823
                       IF
824
                         {}
825
                         { PUSH string "Cannot Stake Amount Less than 1" ; FAILWITH } ;
826
                       PUSH nat 0 ;
827
                       PUSH nat 10000000000000000000 ;
828
                       DUP 4 ;
829
                       EDIV ;
830
                       IF_NONE { PUSH int 136 ; FAILWITH } { CDR } ;
831
                       COMPARE ;
832
                       EQ ;
833
                       IF {} { PUSH string "Invalid Roll Size" ; FAILWITH } ;
834
                       DUP 3 ;
835
                       GET 5 ;
836
                       CAR ;
837
                       CONTRACT %transfer (pair address (pair address nat)) ;
838
                       IF_NONE { PUSH int 338 ; FAILWITH } {} ;
839
                       PUSH mutez 0 ;
840
                       DUP 4 ;
841
                       SELF_ADDRESS ;
842
                       SENDER ;
843
                       PAIR 3 ;
844
                       TRANSFER_TOKENS ;
845
                       CONS ;
846
                       DIG 2 ;
847
                       DUP ;
848
                       GET 7 ;
849
                       PUSH nat 100000000 ;
850
                       DUP 5 ;
851
                       EDIV ;
852
                       IF_NONE { PUSH int 142 ; FAILWITH } { CAR } ;
853
                       ADD ;
854
                       UPDATE 7 ;
855
                       UNPAIR ;
856
                       UNPAIR ;
857
                       UNPAIR ;
858
                       SWAP ;
859
                       UNPAIR ;
860
                       DUP ;
861
                       SENDER ;
862
                       DUP ;
863
                       DUG 2 ;
864
                       GET ;
865
                       IF_NONE { PUSH int 144 ; FAILWITH } {} ;
866
                       UNPAIR ;
867
                       UNPAIR ;
868
                       SWAP ;
869
                       PUSH nat 100000000 ;
870
                       DUP 12 ;
871
                       EDIV ;
872
                       IF_NONE { PUSH int 144 ; FAILWITH } { CAR } ;
873
                       ADD ;
874
                       SWAP ;
875
                       PAIR ;
876
                       PAIR ;
877
                       SOME ;
878
                       SWAP ;
879
                       UPDATE ;
880
                       PAIR ;
881
                       SWAP ;
882
                       PAIR ;
883
                       PAIR ;
884
                       PAIR ;
885
                       DUP ;
886
                       DUG 3 ;
887
                       CAR ;
888
                       CAR ;
889
                       GET 3 ;
890
                       SENDER ;
891
                       GET ;
892
                       IF_NONE { PUSH int 146 ; FAILWITH } {} ;
893
                       GET 3 ;
894
                       DIG 3 ;
895
                       UNPAIR ;
896
                       UNPAIR ;
897
                       UNPAIR ;
898
                       SWAP ;
899
                       UNPAIR ;
900
                       DUP ;
901
                       SENDER ;
902
                       DUP ;
903
                       DUG 2 ;
904
                       GET ;
905
                       IF_NONE { PUSH int 148 ; FAILWITH } {} ;
906
                       UNPAIR ;
907
                       UNPAIR ;
908
                       LEVEL ;
909
                       DIG 12 ;
910
                       PAIR ;
911
                       SOME ;
912
                       DIG 10 ;
913
                       UPDATE ;
914
                       PAIR ;
915
                       PAIR ;
916
                       SOME ;
917
                       SWAP ;
918
                       UPDATE ;
919
                       DUP ;
920
                       SENDER ;
921
                       DUP ;
922
                       DUG 2 ;
923
                       GET ;
924
                       IF_NONE { PUSH int 150 ; FAILWITH } {} ;
925
                       DUP ;
926
                       GET 3 ;
927
                       PUSH nat 1 ;
928
                       ADD ;
929
                       UPDATE 3 ;
930
                       SOME ;
931
                       SWAP ;
932
                       UPDATE ;
933
                       PAIR ;
934
                       SWAP ;
935
                       PAIR ;
936
                       PAIR ;
937
                       PAIR ;
938
                       SWAP }
939
                     { SWAP ;
940
                       DUP ;
941
                       DUG 2 ;
942
                       CAR ;
943
                       CAR ;
944
                       GET 3 ;
945
                       SENDER ;
946
                       MEM ;
947
                       IF
948
                         {}
949
                         { PUSH string "Sender has not Staked any amount" ; FAILWITH } ;
950
                       SWAP ;
951
                       DUP ;
952
                       DUG 2 ;
953
                       CAR ;
954
                       CAR ;
955
                       GET 3 ;
956
                       SENDER ;
957
                       GET ;
958
                       IF_NONE { PUSH int 158 ; FAILWITH } {} ;
959
                       CAR ;
960
                       CAR ;
961
                       SWAP ;
962
                       DUP ;
963
                       DUG 2 ;
964
                       CDR ;
965
                       MEM ;
966
                       IF
967
                         {}
968
                         { PUSH string "Map Key does not Exist for the User" ; FAILWITH } ;
969
                       DUP ;
970
                       CAR ;
971
                       DUP 3 ;
972
                       CAR ;
973
                       CAR ;
974
                       GET 3 ;
975
                       SENDER ;
976
                       GET ;
977
                       IF_NONE { PUSH int 160 ; FAILWITH } {} ;
978
                       CAR ;
979
                       CAR ;
980
                       DUP 3 ;
981
                       CDR ;
982
                       GET ;
983
                       IF_NONE { PUSH int 160 ; FAILWITH } {} ;
984
                       CAR ;
985
                       COMPARE ;
986
                       GE ;
987
                       IF
988
                         {}
989
                         { PUSH string "Request Amount is greater than Lot Amount" ;
990
                           FAILWITH } ;
991
                       DUP ;
992
                       CAR ;
993
                       PUSH nat 0 ;
994
                       COMPARE ;
995
                       LT ;
996
                       IF
997
                         {}
998
                         { PUSH string "Cannot Unstake Amount Less than 1" ; FAILWITH } ;
999
                       PUSH nat 0 ;
1000
                       PUSH nat 10000000000000000000 ;
1001
                       DUP 3 ;
1002
                       CAR ;
1003
                       EDIV ;
1004
                       IF_NONE { PUSH int 164 ; FAILWITH } { CDR } ;
1005
                       COMPARE ;
1006
                       EQ ;
1007
                       IF
1008
                         {}
1009
                         { PUSH string "Invalid Roll Size for unstaking" ; FAILWITH } ;
1010
                       DUP 3 ;
1011
                       DIG 2 ;
1012
                       SENDER ;
1013
                       PAIR ;
1014
                       EXEC ;
1015
                       DUP ;
1016
                       GET 4 ;
1017
                       DUG 2 ;
1018
                       DUP ;
1019
                       CAR ;
1020
                       DUP 4 ;
1021
                       CAR ;
1022
                       CAR ;
1023
                       GET 3 ;
1024
                       SENDER ;
1025
                       GET ;
1026
                       IF_NONE { PUSH int 169 ; FAILWITH } {} ;
1027
                       CAR ;
1028
                       CAR ;
1029
                       DUP 4 ;
1030
                       CDR ;
1031
                       GET ;
1032
                       IF_NONE { PUSH int 169 ; FAILWITH } {} ;
1033
                       CAR ;
1034
                       DUP 5 ;
1035
                       CAR ;
1036
                       CAR ;
1037
                       GET 3 ;
1038
                       SENDER ;
1039
                       GET ;
1040
                       IF_NONE { PUSH int 170 ; FAILWITH } {} ;
1041
                       CAR ;
1042
                       CAR ;
1043
                       DUP 5 ;
1044
                       CDR ;
1045
                       GET ;
1046
                       IF_NONE { PUSH int 170 ; FAILWITH } {} ;
1047
                       CDR ;
1048
                       DUP 6 ;
1049
                       PUSH nat 100000000 ;
1050
                       DUP 7 ;
1051
                       CAR ;
1052
                       EDIV ;
1053
                       IF_NONE { PUSH int 172 ; FAILWITH } { CAR } ;
1054
                       DIG 7 ;
1055
                       GET 7 ;
1056
                       SUB ;
1057
                       ISNAT ;
1058
                       IF_NONE { PUSH int 172 ; FAILWITH } {} ;
1059
                       UPDATE 7 ;
1060
                       DUP ;
1061
                       DUG 6 ;
1062
                       UNPAIR ;
1063
                       UNPAIR ;
1064
                       UNPAIR ;
1065
                       SWAP ;
1066
                       UNPAIR ;
1067
                       DUP ;
1068
                       SENDER ;
1069
                       DUP ;
1070
                       DUG 2 ;
1071
                       GET ;
1072
                       IF_NONE { PUSH int 173 ; FAILWITH } {} ;
1073
                       UNPAIR ;
1074
                       CAR ;
1075
                       PUSH nat 100000000 ;
1076
                       DUP 14 ;
1077
                       CAR ;
1078
                       EDIV ;
1079
                       IF_NONE { PUSH int 173 ; FAILWITH } { CAR } ;
1080
                       DIG 14 ;
1081
                       CAR ;
1082
                       CAR ;
1083
                       GET 3 ;
1084
                       SENDER ;
1085
                       GET ;
1086
                       IF_NONE { PUSH int 173 ; FAILWITH } {} ;
1087
                       CAR ;
1088
                       CDR ;
1089
                       SUB ;
1090
                       ISNAT ;
1091
                       IF_NONE { PUSH int 173 ; FAILWITH } {} ;
1092
                       SWAP ;
1093
                       PAIR ;
1094
                       PAIR ;
1095
                       SOME ;
1096
                       SWAP ;
1097
                       UPDATE ;
1098
                       PAIR ;
1099
                       SWAP ;
1100
                       PAIR ;
1101
                       PAIR ;
1102
                       PAIR ;
1103
                       DUG 5 ;
1104
                       DUP 5 ;
1105
                       CAR ;
1106
                       DUP 3 ;
1107
                       COMPARE ;
1108
                       EQ ;
1109
                       IF
1110
                         { DIG 5 ;
1111
                           UNPAIR ;
1112
                           UNPAIR ;
1113
                           UNPAIR ;
1114
                           SWAP ;
1115
                           UNPAIR ;
1116
                           DUP ;
1117
                           SENDER ;
1118
                           DUP ;
1119
                           DUG 2 ;
1120
                           GET ;
1121
                           IF_NONE { PUSH int 177 ; FAILWITH } {} ;
1122
                           UNPAIR ;
1123
                           UNPAIR ;
1124
                           NONE (pair nat nat) ;
1125
                           DUP 15 ;
1126
                           CDR ;
1127
                           UPDATE ;
1128
                           PAIR ;
1129
                           PAIR ;
1130
                           SOME ;
1131
                           SWAP ;
1132
                           UPDATE ;
1133
                           PAIR ;
1134
                           SWAP ;
1135
                           PAIR ;
1136
                           PAIR ;
1137
                           PAIR ;
1138
                           DUG 5 }
1139
                         { DIG 5 ;
1140
                           UNPAIR ;
1141
                           UNPAIR ;
1142
                           UNPAIR ;
1143
                           SWAP ;
1144
                           UNPAIR ;
1145
                           DUP ;
1146
                           SENDER ;
1147
                           DUP ;
1148
                           DUG 2 ;
1149
                           GET ;
1150
                           IF_NONE { PUSH int 181 ; FAILWITH } {} ;
1151
                           UNPAIR ;
1152
                           UNPAIR ;
1153
                           DUP ;
1154
                           DUP 15 ;
1155
                           CDR ;
1156
                           DUP ;
1157
                           DUG 2 ;
1158
                           GET ;
1159
                           IF_NONE { PUSH int 181 ; FAILWITH } {} ;
1160
                           DUP 16 ;
1161
                           CAR ;
1162
                           DUP 14 ;
1163
                           SUB ;
1164
                           ISNAT ;
1165
                           IF_NONE { PUSH int 181 ; FAILWITH } {} ;
1166
                           UPDATE 1 ;
1167
                           SOME ;
1168
                           SWAP ;
1169
                           UPDATE ;
1170
                           PAIR ;
1171
                           PAIR ;
1172
                           SOME ;
1173
                           SWAP ;
1174
                           UPDATE ;
1175
                           PAIR ;
1176
                           SWAP ;
1177
                           PAIR ;
1178
                           PAIR ;
1179
                           PAIR ;
1180
                           DUG 5 } ;
1181
                       DUP ;
1182
                       LEVEL ;
1183
                       SUB ;
1184
                       ISNAT ;
1185
                       IF_NONE { PUSH int 187 ; FAILWITH } {} ;
1186
                       PUSH nat 1 ;
1187
                       DUP 8 ;
1188
                       CAR ;
1189
                       CAR ;
1190
                       GET 4 ;
1191
                       DIG 2 ;
1192
                       EDIV ;
1193
                       IF_NONE { PUSH int 189 ; FAILWITH } { CAR } ;
1194
                       ADD ;
1195
                       DUP 7 ;
1196
                       GET 8 ;
1197
                       SWAP ;
1198
                       DUP ;
1199
                       DUG 2 ;
1200
                       MEM ;
1201
                       IF
1202
                         { SWAP ;
1203
                           DROP ;
1204
                           SWAP ;
1205
                           DROP ;
1206
                           DIG 2 ;
1207
                           DROP ;
1208
                           DIG 4 ;
1209
                           DROP ;
1210
                           DUP 4 ;
1211
                           GET 8 ;
1212
                           SWAP ;
1213
                           GET ;
1214
                           IF_NONE { PUSH int 196 ; FAILWITH } {} ;
1215
                           DUP 3 ;
1216
                           CAR ;
1217
                           EDIV ;
1218
                           IF_NONE { PUSH int 196 ; FAILWITH } { CAR } ;
1219
                           DUP ;
1220
                           DIG 3 ;
1221
                           CAR ;
1222
                           SUB ;
1223
                           ISNAT ;
1224
                           IF_NONE { PUSH int 198 ; FAILWITH } {} ;
1225
                           SWAP }
1226
                         { DROP 3 ;
1227
                           SWAP ;
1228
                           DROP ;
1229
                           DIG 3 ;
1230
                           DROP ;
1231
                           DUP 3 ;
1232
                           CAR ;
1233
                           GET 3 ;
1234
                           CAR ;
1235
                           DUP 3 ;
1236
                           CAR ;
1237
                           EDIV ;
1238
                           IF_NONE { PUSH int 202 ; FAILWITH } { CAR } ;
1239
                           DUP ;
1240
                           DIG 3 ;
1241
                           CAR ;
1242
                           SUB ;
1243
                           ISNAT ;
1244
                           IF_NONE { PUSH int 204 ; FAILWITH } {} ;
1245
                           SWAP } ;
1246
                       DIG 3 ;
1247
                       UNPAIR ;
1248
                       SWAP ;
1249
                       UNPAIR ;
1250
                       SWAP ;
1251
                       UNPAIR ;
1252
                       UNPAIR ;
1253
                       SWAP ;
1254
                       DIG 5 ;
1255
                       ADD ;
1256
                       SWAP ;
1257
                       PAIR ;
1258
                       PAIR ;
1259
                       SWAP ;
1260
                       PAIR ;
1261
                       SWAP ;
1262
                       PAIR ;
1263
                       DUG 2 ;
1264
                       SWAP ;
1265
                       DUP 3 ;
1266
                       GET 5 ;
1267
                       CAR ;
1268
                       CONTRACT %transfer (pair address (pair address nat)) ;
1269
                       IF_NONE { PUSH int 338 ; FAILWITH } {} ;
1270
                       PUSH mutez 0 ;
1271
                       DIG 3 ;
1272
                       SENDER ;
1273
                       SELF_ADDRESS ;
1274
                       PAIR 3 ;
1275
                       TRANSFER_TOKENS ;
1276
                       CONS } } } } ;
1277
       NIL operation ;
1278
       SWAP ;
1279
       ITER { CONS } ;
1280
       PAIR }