BCD

Tezos Contract Explorer
Search Networks Deploy
  • Home
  • /
  • Mainnet
  • /
  • KT1DuqU...KA3r
operations (1)Storage Code Interact Tokens Fork Statistics Details
Latest
​x
680
 
1
parameter (or
2
            (or (or (unit %default) (unit %freeze_metadata))
3
                (or (nat %mint) (pair %oracle_callback string (pair timestamp nat))))
4
            (or
5
              (or (address %register_fa2)
6
                  (pair %reserve_giveaways (address %address) (nat %amount)))
7
              (or
8
                (list %reveal_metadata (pair (nat %token_id)
9
                                            (map %token_info string bytes)))
10
                (unit %start_sale))));
11
storage (pair
12
          (pair
13
            (pair (pair (address %admin) (address %artist))
14
                  (pair (option %fa2 address) (bool %freeze_metadata)))
15
            (pair (pair (nat %giveaway_amount) (nat %giveaway_index))
16
                  (pair (nat %max_mint) (nat %max_supply))))
17
          (pair
18
            (pair (pair (big_map %metadata string bytes) (nat %mint_index))
19
                  (pair (nat %n_minted) (address %oracle)))
20
            (pair (pair (bool %oracle_callback_expected) (bytes %placeholder_ipfs_path))
21
                  (pair (mutez %price)
22
                        (pair (string %provenance_hash) (bool %sale_started))))));
23
code { CAST (pair
24
              (or (or (or unit unit) (or nat (pair string (pair timestamp nat))))
25
                  (or (or address (pair address nat))
26
                      (or (list (pair nat (map string bytes))) unit)))
27
              (pair
28
                (pair (pair (pair address address) (pair (option address) bool))
29
                      (pair (pair nat nat) (pair nat nat)))
30
                (pair (pair (pair (big_map string bytes) nat) (pair nat address))
31
                      (pair (pair bool bytes) (pair mutez (pair string bool)))))) ;
32
       { { DUP ; CAR ; DIP { CDR } } } ;
33
       IF_LEFT
34
         { IF_LEFT
35
             { IF_LEFT
36
                 { DROP ;
37
                   NIL operation ;
38
                   SENDER ;
39
                   CONTRACT unit ;
40
                   IF_NONE { PUSH int 53 ; FAILWITH } {} ;
41
                   AMOUNT ;
42
                   UNIT ;
43
                   TRANSFER_TOKENS ;
44
                   CONS }
45
                 { DROP ;
46
                   DUP ;
47
                   CAR ;
48
                   CAR ;
49
                   CAR ;
50
                   CAR ;
51
                   SENDER ;
52
                   COMPARE ;
53
                   EQ ;
54
                   IF
55
                     {}
56
                     { PUSH string "WrongCondition: sp.sender == self.data.admin" ;
57
                       FAILWITH } ;
58
                   { { DUP ; CAR ; DIP { CDR } } } ;
59
                   { { DUP ; CAR ; DIP { CDR } } } ;
60
                   { { DUP ; CAR ; DIP { CDR } } } ;
61
                   SWAP ;
62
                   CAR ;
63
                   PUSH bool True ;
64
                   SWAP ;
65
                   PAIR ;
66
                   SWAP ;
67
                   PAIR ;
68
                   PAIR ;
69
                   PAIR ;
70
                   NIL operation } }
71
             { IF_LEFT
72
                 { SWAP ;
73
                   DUP ;
74
                   DUG 2 ;
75
                   GET 10 ;
76
                   IF {} { PUSH string "Sale hasn't started yet" ; FAILWITH } ;
77
                   SWAP ;
78
                   DUP ;
79
                   CAR ;
80
                   GET 6 ;
81
                   SWAP ;
82
                   DUP ;
83
                   DUG 3 ;
84
                   GET 3 ;
85
                   GET 3 ;
86
                   COMPARE ;
87
                   LT ;
88
                   IF {} { PUSH string "Sold out" ; FAILWITH } ;
89
                   DUP ;
90
                   PUSH nat 0 ;
91
                   COMPARE ;
92
                   LT ;
93
                   IF {} { PUSH string "Need to mint at least one" ; FAILWITH } ;
94
                   SWAP ;
95
                   DUP ;
96
                   DUG 2 ;
97
                   CAR ;
98
                   GET 5 ;
99
                   SWAP ;
100
                   DUP ;
101
                   DUG 2 ;
102
                   COMPARE ;
103
                   LE ;
104
                   IF
105
                     {}
106
                     { PUSH string "Can only mint a maximum of 10 at a time" ; FAILWITH } ;
107
                   SWAP ;
108
                   DUP ;
109
                   CAR ;
110
                   GET 6 ;
111
                   SWAP ;
112
                   DUP ;
113
                   DUG 3 ;
114
                   GET 3 ;
115
                   GET 3 ;
116
                   { DIP 2 { DUP } ; DIG 3 } ;
117
                   ADD ;
118
                   COMPARE ;
119
                   LE ;
120
                   IF
121
                     {}
122
                     { PUSH string "Requesting to mint more than left" ; FAILWITH } ;
123
                   PUSH mutez 1 ;
124
                   { DIP 2 { DUP } ; DIG 3 } ;
125
                   GET 7 ;
126
                   EDIV ;
127
                   IF_NONE { UNIT ; FAILWITH } {} ;
128
                   CAR ;
129
                   SWAP ;
130
                   DUP ;
131
                   DUG 2 ;
132
                   MUL ;
133
                   PUSH mutez 1 ;
134
                   AMOUNT ;
135
                   EDIV ;
136
                   IF_NONE { UNIT ; FAILWITH } {} ;
137
                   CAR ;
138
                   COMPARE ;
139
                   GE ;
140
                   IF {} { PUSH string "Insufficient funds for minting" ; FAILWITH } ;
141
                   DUP ;
142
                   NIL operation ;
143
                   SWAP ;
144
                   { DIP 3 { DUP } ; DIG 4 } ;
145
                   GET 3 ;
146
                   CAR ;
147
                   CDR ;
148
                   ADD ;
149
                   { DIP 3 { DUP } ; DIG 4 } ;
150
                   GET 3 ;
151
                   CAR ;
152
                   CDR ;
153
                   DUP ;
154
                   { DIP 2 { DUP } ; DIG 3 } ;
155
                   COMPARE ;
156
                   GT ;
157
                   LOOP { PUSH nat 1 ;
158
                          { DIP 5 { DUP } ; DIG 6 } ;
159
                          CAR ;
160
                          GET 6 ;
161
                          { DIP 2 { DUP } ; DIG 3 } ;
162
                          EDIV ;
163
                          IF_NONE { PUSH int 87 ; FAILWITH } { CDR } ;
164
                          ADD ;
165
                          NIL bytes ;
166
                          PUSH nat 0 ;
167
                          { DIP 2 { DUP } ; DIG 3 } ;
168
                          COMPARE ;
169
                          EQ ;
170
                          IF
171
                            { PUSH (map int bytes) { Elt 0 0x30 ;
172
                                      Elt 1 0x31 ;
173
                                      Elt 2 0x32 ;
174
                                      Elt 3 0x33 ;
175
                                      Elt 4 0x34 ;
176
                                      Elt 5 0x35 ;
177
                                      Elt 6 0x36 ;
178
                                      Elt 7 0x37 ;
179
                                      Elt 8 0x38 ;
180
                                      Elt 9 0x39 } ;
181
                              PUSH int 0 ;
182
                              GET ;
183
                              IF_NONE { PUSH int 19 ; FAILWITH } {} ;
184
                              CONS }
185
                            {} ;
186
                          PUSH nat 0 ;
187
                          { DIP 2 { DUP } ; DIG 3 } ;
188
                          COMPARE ;
189
                          GT ;
190
                          LOOP { PUSH (map nat bytes) { Elt 0 0x30 ;
191
                                         Elt 1 0x31 ;
192
                                         Elt 2 0x32 ;
193
                                         Elt 3 0x33 ;
194
                                         Elt 4 0x34 ;
195
                                         Elt 5 0x35 ;
196
                                         Elt 6 0x36 ;
197
                                         Elt 7 0x37 ;
198
                                         Elt 8 0x38 ;
199
                                         Elt 9 0x39 } ;
200
                                 PUSH nat 10 ;
201
                                 { DIP 3 { DUP } ; DIG 4 } ;
202
                                 EDIV ;
203
                                 IF_NONE { PUSH int 21 ; FAILWITH } { CDR } ;
204
                                 GET ;
205
                                 IF_NONE { PUSH int 21 ; FAILWITH } {} ;
206
                                 CONS ;
207
                                 PUSH nat 10 ;
208
                                 DIG 2 ;
209
                                 EDIV ;
210
                                 IF_NONE { PUSH int 22 ; FAILWITH } { CAR } ;
211
                                 SWAP ;
212
                                 PUSH nat 0 ;
213
                                 { DIP 2 { DUP } ; DIG 3 } ;
214
                                 COMPARE ;
215
                                 GT } ;
216
                          SWAP ;
217
                          DROP ;
218
                          DIG 3 ;
219
                          { DIP 5 { DUP } ; DIG 6 } ;
220
                          CAR ;
221
                          CAR ;
222
                          GET 3 ;
223
                          IF_NONE { PUSH int 154 ; FAILWITH } {} ;
224
                          CONTRACT %mint (pair (pair address nat)
225
                                               (pair (map string bytes) nat)) ;
226
                          IF_NONE { PUSH int 155 ; FAILWITH } {} ;
227
                          PUSH mutez 0 ;
228
                          PUSH nat 1 ;
229
                          { DIP 8 { DUP } ; DIG 9 } ;
230
                          CAR ;
231
                          GET 6 ;
232
                          { DIP 6 { DUP } ; DIG 7 } ;
233
                          EDIV ;
234
                          IF_NONE { PUSH int 87 ; FAILWITH } { CDR } ;
235
                          ADD ;
236
                          EMPTY_MAP string bytes ;
237
                          DIG 5 ;
238
                          CONCAT ;
239
                          { DIP 9 { DUP } ; DIG 10 } ;
240
                          GET 5 ;
241
                          CDR ;
242
                          CONCAT ;
243
                          SOME ;
244
                          PUSH string "" ;
245
                          UPDATE ;
246
                          PAIR ;
247
                          PUSH nat 1 ;
248
                          SENDER ;
249
                          PAIR ;
250
                          PAIR ;
251
                          TRANSFER_TOKENS ;
252
                          CONS ;
253
                          DUG 2 ;
254
                          PUSH nat 1 ;
255
                          ADD ;
256
                          DUP ;
257
                          { DIP 2 { DUP } ; DIG 3 } ;
258
                          COMPARE ;
259
                          GT } ;
260
                   DROP 2 ;
261
                   { DIP 2 { DUP } ; DIG 3 } ;
262
                   CAR ;
263
                   CAR ;
264
                   CAR ;
265
                   CDR ;
266
                   CONTRACT unit ;
267
                   IF_NONE { PUSH int 92 ; FAILWITH } {} ;
268
                   PUSH nat 2 ;
269
                   AMOUNT ;
270
                   PUSH nat 1 ;
271
                   MUL ;
272
                   EDIV ;
273
                   IF_NONE { PUSH int 90 ; FAILWITH } {} ;
274
                   CAR ;
275
                   UNIT ;
276
                   TRANSFER_TOKENS ;
277
                   CONS ;
278
                   { DIP 2 { DUP } ; DIG 3 } ;
279
                   CAR ;
280
                   CAR ;
281
                   CAR ;
282
                   CAR ;
283
                   CONTRACT unit ;
284
                   IF_NONE { PUSH int 93 ; FAILWITH } {} ;
285
                   PUSH nat 2 ;
286
                   AMOUNT ;
287
                   PUSH nat 1 ;
288
                   MUL ;
289
                   EDIV ;
290
                   IF_NONE { PUSH int 90 ; FAILWITH } {} ;
291
                   CAR ;
292
                   AMOUNT ;
293
                   SUB ;
294
                   UNIT ;
295
                   TRANSFER_TOKENS ;
296
                   CONS ;
297
                   { DIP 2 { DUP } ; DIG 3 } ;
298
                   { { DUP ; CAR ; DIP { CDR } } } ;
299
                   SWAP ;
300
                   { { DUP ; CAR ; DIP { CDR } } } ;
301
                   { { DUP ; CAR ; DIP { CDR } } } ;
302
                   CAR ;
303
                   { DIP 6 { DUP } ; DIG 7 } ;
304
                   CAR ;
305
                   GET 6 ;
306
                   { DIP 6 { DUP } ; DIG 7 } ;
307
                   DIG 8 ;
308
                   GET 3 ;
309
                   CAR ;
310
                   CDR ;
311
                   ADD ;
312
                   EDIV ;
313
                   IF_NONE { PUSH int 96 ; FAILWITH } { CDR } ;
314
                   SWAP ;
315
                   PAIR ;
316
                   SWAP ;
317
                   { { DUP ; CAR ; DIP { CDR } } } ;
318
                   DIG 6 ;
319
                   ADD ;
320
                   PAIR ;
321
                   SWAP ;
322
                   PAIR ;
323
                   PAIR ;
324
                   SWAP ;
325
                   PAIR ;
326
                   SWAP }
327
                 { SWAP ;
328
                   DUP ;
329
                   DUG 2 ;
330
                   GET 5 ;
331
                   CAR ;
332
                   IF {} { PUSH string "No Callback Expected" ; FAILWITH } ;
333
                   SWAP ;
334
                   DUP ;
335
                   DUG 2 ;
336
                   GET 3 ;
337
                   GET 4 ;
338
                   SENDER ;
339
                   COMPARE ;
340
                   EQ ;
341
                   IF {} { PUSH string "Only Oracle can Call Callback" ; FAILWITH } ;
342
                   SWAP ;
343
                   { { DUP ; CAR ; DIP { CDR } } } ;
344
                   SWAP ;
345
                   { { DUP ; CAR ; DIP { CDR } } } ;
346
                   SWAP ;
347
                   { { DUP ; CAR ; DIP { CDR } } } ;
348
                   CDR ;
349
                   PUSH bool False ;
350
                   PAIR ;
351
                   PAIR ;
352
                   SWAP ;
353
                   PAIR ;
354
                   SWAP ;
355
                   PAIR ;
356
                   DUP ;
357
                   DUG 2 ;
358
                   { { DUP ; CAR ; DIP { CDR } } } ;
359
                   SWAP ;
360
                   { { DUP ; CAR ; DIP { CDR } } } ;
361
                   { { DUP ; CAR ; DIP { CDR } } } ;
362
                   CAR ;
363
                   DIG 5 ;
364
                   CAR ;
365
                   GET 6 ;
366
                   DIG 5 ;
367
                   GET 4 ;
368
                   EDIV ;
369
                   IF_NONE { PUSH int 137 ; FAILWITH } { CDR } ;
370
                   SWAP ;
371
                   PAIR ;
372
                   PAIR ;
373
                   PAIR ;
374
                   SWAP ;
375
                   PAIR ;
376
                   PUSH bool True ;
377
                   UPDATE 10 ;
378
                   NIL operation } } }
379
         { IF_LEFT
380
             { IF_LEFT
381
                 { SWAP ;
382
                   DUP ;
383
                   DUG 2 ;
384
                   CAR ;
385
                   CAR ;
386
                   CAR ;
387
                   CAR ;
388
                   SENDER ;
389
                   COMPARE ;
390
                   EQ ;
391
                   IF {} { PUSH string "Only admin" ; FAILWITH } ;
392
                   SWAP ;
393
                   { { DUP ; CAR ; DIP { CDR } } } ;
394
                   { { DUP ; CAR ; DIP { CDR } } } ;
395
                   { { DUP ; CAR ; DIP { CDR } } } ;
396
                   SWAP ;
397
                   CDR ;
398
                   DIG 4 ;
399
                   SOME ;
400
                   PAIR ;
401
                   SWAP ;
402
                   PAIR ;
403
                   PAIR ;
404
                   PAIR ;
405
                   NIL operation }
406
                 { SWAP ;
407
                   DUP ;
408
                   DUG 2 ;
409
                   CAR ;
410
                   CAR ;
411
                   CAR ;
412
                   CAR ;
413
                   SENDER ;
414
                   COMPARE ;
415
                   EQ ;
416
                   IF {} { PUSH string "Only admin" ; FAILWITH } ;
417
                   SWAP ;
418
                   DUP ;
419
                   DUG 2 ;
420
                   CAR ;
421
                   GET 3 ;
422
                   CAR ;
423
                   SWAP ;
424
                   DUP ;
425
                   DUG 2 ;
426
                   CDR ;
427
                   { DIP 3 { DUP } ; DIG 4 } ;
428
                   CAR ;
429
                   GET 3 ;
430
                   CDR ;
431
                   ADD ;
432
                   COMPARE ;
433
                   LE ;
434
                   IF {} { PUSH string "reservations exhausted" ; FAILWITH } ;
435
                   DUP ;
436
                   CDR ;
437
                   NIL operation ;
438
                   SWAP ;
439
                   PUSH nat 0 ;
440
                   DUP ;
441
                   { DIP 2 { DUP } ; DIG 3 } ;
442
                   COMPARE ;
443
                   GT ;
444
                   LOOP { PUSH nat 1 ;
445
                          { DIP 5 { DUP } ; DIG 6 } ;
446
                          CAR ;
447
                          GET 6 ;
448
                          { DIP 2 { DUP } ; DIG 3 } ;
449
                          { DIP 7 { DUP } ; DIG 8 } ;
450
                          GET 3 ;
451
                          CAR ;
452
                          CDR ;
453
                          ADD ;
454
                          EDIV ;
455
                          IF_NONE { PUSH int 67 ; FAILWITH } { CDR } ;
456
                          ADD ;
457
                          NIL bytes ;
458
                          PUSH nat 0 ;
459
                          { DIP 2 { DUP } ; DIG 3 } ;
460
                          COMPARE ;
461
                          EQ ;
462
                          IF
463
                            { PUSH (map int bytes) { Elt 0 0x30 ;
464
                                      Elt 1 0x31 ;
465
                                      Elt 2 0x32 ;
466
                                      Elt 3 0x33 ;
467
                                      Elt 4 0x34 ;
468
                                      Elt 5 0x35 ;
469
                                      Elt 6 0x36 ;
470
                                      Elt 7 0x37 ;
471
                                      Elt 8 0x38 ;
472
                                      Elt 9 0x39 } ;
473
                              PUSH int 0 ;
474
                              GET ;
475
                              IF_NONE { PUSH int 19 ; FAILWITH } {} ;
476
                              CONS }
477
                            {} ;
478
                          PUSH nat 0 ;
479
                          { DIP 2 { DUP } ; DIG 3 } ;
480
                          COMPARE ;
481
                          GT ;
482
                          LOOP { PUSH (map nat bytes) { Elt 0 0x30 ;
483
                                         Elt 1 0x31 ;
484
                                         Elt 2 0x32 ;
485
                                         Elt 3 0x33 ;
486
                                         Elt 4 0x34 ;
487
                                         Elt 5 0x35 ;
488
                                         Elt 6 0x36 ;
489
                                         Elt 7 0x37 ;
490
                                         Elt 8 0x38 ;
491
                                         Elt 9 0x39 } ;
492
                                 PUSH nat 10 ;
493
                                 { DIP 3 { DUP } ; DIG 4 } ;
494
                                 EDIV ;
495
                                 IF_NONE { PUSH int 21 ; FAILWITH } { CDR } ;
496
                                 GET ;
497
                                 IF_NONE { PUSH int 21 ; FAILWITH } {} ;
498
                                 CONS ;
499
                                 PUSH nat 10 ;
500
                                 DIG 2 ;
501
                                 EDIV ;
502
                                 IF_NONE { PUSH int 22 ; FAILWITH } { CAR } ;
503
                                 SWAP ;
504
                                 PUSH nat 0 ;
505
                                 { DIP 2 { DUP } ; DIG 3 } ;
506
                                 COMPARE ;
507
                                 GT } ;
508
                          SWAP ;
509
                          DROP ;
510
                          DIG 3 ;
511
                          { DIP 5 { DUP } ; DIG 6 } ;
512
                          CAR ;
513
                          CAR ;
514
                          GET 3 ;
515
                          IF_NONE { PUSH int 154 ; FAILWITH } {} ;
516
                          CONTRACT %mint (pair (pair address nat)
517
                                               (pair (map string bytes) nat)) ;
518
                          IF_NONE { PUSH int 155 ; FAILWITH } {} ;
519
                          PUSH mutez 0 ;
520
                          PUSH nat 1 ;
521
                          { DIP 8 { DUP } ; DIG 9 } ;
522
                          CAR ;
523
                          GET 6 ;
524
                          { DIP 6 { DUP } ; DIG 7 } ;
525
                          { DIP 10 { DUP } ; DIG 11 } ;
526
                          GET 3 ;
527
                          CAR ;
528
                          CDR ;
529
                          ADD ;
530
                          EDIV ;
531
                          IF_NONE { PUSH int 67 ; FAILWITH } { CDR } ;
532
                          ADD ;
533
                          EMPTY_MAP string bytes ;
534
                          DIG 5 ;
535
                          CONCAT ;
536
                          { DIP 9 { DUP } ; DIG 10 } ;
537
                          GET 5 ;
538
                          CDR ;
539
                          CONCAT ;
540
                          SOME ;
541
                          PUSH string "" ;
542
                          UPDATE ;
543
                          PAIR ;
544
                          PUSH nat 1 ;
545
                          { DIP 7 { DUP } ; DIG 8 } ;
546
                          CAR ;
547
                          PAIR ;
548
                          PAIR ;
549
                          TRANSFER_TOKENS ;
550
                          CONS ;
551
                          DUG 2 ;
552
                          PUSH nat 1 ;
553
                          ADD ;
554
                          DUP ;
555
                          { DIP 2 { DUP } ; DIG 3 } ;
556
                          COMPARE ;
557
                          GT } ;
558
                   DROP 2 ;
559
                   { DIP 2 { DUP } ; DIG 3 } ;
560
                   { { DUP ; CAR ; DIP { CDR } } } ;
561
                   SWAP ;
562
                   { { DUP ; CAR ; DIP { CDR } } } ;
563
                   { { DUP ; CAR ; DIP { CDR } } } ;
564
                   CAR ;
565
                   { DIP 6 { DUP } ; DIG 7 } ;
566
                   CAR ;
567
                   GET 6 ;
568
                   { DIP 6 { DUP } ; DIG 7 } ;
569
                   CDR ;
570
                   DIG 8 ;
571
                   GET 3 ;
572
                   CAR ;
573
                   CDR ;
574
                   ADD ;
575
                   EDIV ;
576
                   IF_NONE { PUSH int 68 ; FAILWITH } { CDR } ;
577
                   SWAP ;
578
                   PAIR ;
579
                   SWAP ;
580
                   { { DUP ; CAR ; DIP { CDR } } } ;
581
                   { DIP 6 { DUP } ; DIG 7 } ;
582
                   CDR ;
583
                   ADD ;
584
                   PAIR ;
585
                   SWAP ;
586
                   PAIR ;
587
                   PAIR ;
588
                   SWAP ;
589
                   { { DUP ; CAR ; DIP { CDR } } } ;
590
                   SWAP ;
591
                   { { DUP ; CAR ; DIP { CDR } } } ;
592
                   { { DUP ; CAR ; DIP { CDR } } } ;
593
                   SWAP ;
594
                   DIG 6 ;
595
                   CDR ;
596
                   ADD ;
597
                   SWAP ;
598
                   PAIR ;
599
                   PAIR ;
600
                   SWAP ;
601
                   PAIR ;
602
                   PAIR ;
603
                   SWAP } }
604
             { IF_LEFT
605
                 { SWAP ;
606
                   DUP ;
607
                   DUG 2 ;
608
                   CAR ;
609
                   CAR ;
610
                   CAR ;
611
                   CAR ;
612
                   SENDER ;
613
                   COMPARE ;
614
                   EQ ;
615
                   IF
616
                     {}
617
                     { PUSH string "WrongCondition: sp.sender == self.data.admin" ;
618
                       FAILWITH } ;
619
                   SWAP ;
620
                   DUP ;
621
                   DUG 2 ;
622
                   CAR ;
623
                   CAR ;
624
                   GET 4 ;
625
                   IF { PUSH string "metadata frozen" ; FAILWITH } {} ;
626
                   NIL operation ;
627
                   { DIP 2 { DUP } ; DIG 3 } ;
628
                   CAR ;
629
                   CAR ;
630
                   GET 3 ;
631
                   IF_NONE { PUSH int 154 ; FAILWITH } {} ;
632
                   CONTRACT %update_token_metadata (list (pair nat (map string bytes))) ;
633
                   IF_NONE { PUSH int 176 ; FAILWITH } {} ;
634
                   PUSH mutez 0 ;
635
                   DIG 3 ;
636
                   TRANSFER_TOKENS ;
637
                   CONS }
638
                 { DROP ;
639
                   DUP ;
640
                   CAR ;
641
                   CAR ;
642
                   CAR ;
643
                   CAR ;
644
                   SENDER ;
645
                   COMPARE ;
646
                   EQ ;
647
                   IF {} { PUSH string "Only admin" ; FAILWITH } ;
648
                   { { DUP ; CAR ; DIP { CDR } } } ;
649
                   SWAP ;
650
                   { { DUP ; CAR ; DIP { CDR } } } ;
651
                   SWAP ;
652
                   { { DUP ; CAR ; DIP { CDR } } } ;
653
                   CDR ;
654
                   PUSH bool True ;
655
                   PAIR ;
656
                   PAIR ;
657
                   SWAP ;
658
                   PAIR ;
659
                   SWAP ;
660
                   PAIR ;
661
                   DUP ;
662
                   GET 3 ;
663
                   GET 4 ;
664
                   CONTRACT %get (pair string
665
                                       (contract (pair string (pair timestamp nat)))) ;
666
                   IF_NONE { PUSH int 115 ; FAILWITH } {} ;
667
                   NIL operation ;
668
                   SWAP ;
669
                   PUSH mutez 0 ;
670
                   SELF_ADDRESS ;
671
                   CONTRACT %oracle_callback (pair string (pair timestamp nat)) ;
672
                   IF_NONE { PUSH int 121 ; FAILWITH } {} ;
673
                   PUSH string "XTZ-USD" ;
674
                   PAIR ;
675
                   TRANSFER_TOKENS ;
676
                   CONS } } } ;
677
       NIL operation ;
678
       SWAP ;
679
       ITER { CONS } ;
680
       PAIR }