
//# unitInfo: Provides: CamlinternalFormatBasics
//# shape: CamlinternalFormatBasics:[F(2),F(1),F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function erase_rel(param){
     /*<<camlinternalFormatBasics.ml:528:8>>*/ if(typeof param === "number")
      /*<<camlinternalFormatBasics.ml:562:20>>*/ return 0;
     /*<<camlinternalFormatBasics.ml:528:8>>*/ switch(param[0]){
      case 0:
       var rest = param[1];
        /*<<camlinternalFormatBasics.ml:533:12>>*/ return [0, erase_rel(rest)] /*<<camlinternalFormatBasics.ml:533:28>>*/ ;
      case 1:
       var rest$0 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:535:14>>*/ return [1,
               erase_rel(rest$0)] /*<<camlinternalFormatBasics.ml:535:30>>*/ ;
      case 2:
       var rest$1 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:537:11>>*/ return [2,
               erase_rel(rest$1)] /*<<camlinternalFormatBasics.ml:537:27>>*/ ;
      case 3:
       var rest$2 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:539:13>>*/ return [3,
               erase_rel(rest$2)] /*<<camlinternalFormatBasics.ml:539:29>>*/ ;
      case 4:
       var rest$3 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:543:17>>*/ return [4,
               erase_rel(rest$3)] /*<<camlinternalFormatBasics.ml:543:33>>*/ ;
      case 5:
       var rest$4 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:541:13>>*/ return [5,
               erase_rel(rest$4)] /*<<camlinternalFormatBasics.ml:541:29>>*/ ;
      case 6:
       var rest$5 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:545:13>>*/ return [6,
               erase_rel(rest$5)] /*<<camlinternalFormatBasics.ml:545:29>>*/ ;
      case 7:
       var rest$6 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:547:12>>*/ return [7,
               erase_rel(rest$6)] /*<<camlinternalFormatBasics.ml:547:28>>*/ ;
      case 8:
       var
        rest$7 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[2],
        ty = param[1];
        /*<<camlinternalFormatBasics.ml:549:23>>*/ return [8,
               ty,
               erase_rel(rest$7)] /*<<camlinternalFormatBasics.ml:549:37>>*/ ;
      case 9:
       var
        rest$8 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[3],
        ty1 = param[1];
        /*<<camlinternalFormatBasics.ml:551:31>>*/ return [9,
               ty1,
               ty1,
               erase_rel(rest$8)] /*<<camlinternalFormatBasics.ml:551:45>>*/ ;
      case 10:
       var rest$9 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:553:13>>*/ return [10,
               erase_rel(rest$9)] /*<<camlinternalFormatBasics.ml:553:29>>*/ ;
      case 11:
       var rest$10 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:555:13>>*/ return [11,
               erase_rel(rest$10)] /*<<camlinternalFormatBasics.ml:555:29>>*/ ;
      case 12:
       var rest$11 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:557:11>>*/ return [12,
               erase_rel(rest$11)] /*<<camlinternalFormatBasics.ml:557:27>>*/ ;
      case 13:
       var rest$12 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:559:14>>*/ return [13,
               erase_rel(rest$12)] /*<<camlinternalFormatBasics.ml:559:30>>*/ ;
      default:
       var rest$13 =  /*<<camlinternalFormatBasics.ml:528:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:561:22>>*/ return [14,
               erase_rel(rest$13)] /*<<camlinternalFormatBasics.ml:561:38>>*/ ;
    }
    /*<<camlinternalFormatBasics.ml:562:32>>*/ }
   function concat_fmtty(fmtty1, fmtty2){
     /*<<camlinternalFormatBasics.ml:590:21>>*/ if(typeof fmtty1 === "number")
      /*<<camlinternalFormatBasics.ml:621:20>>*/ return fmtty2;
     /*<<camlinternalFormatBasics.ml:590:21>>*/ switch(fmtty1[0]){
      case 0:
       var rest = fmtty1[1];
        /*<<camlinternalFormatBasics.ml:592:12>>*/ return [0,
               concat_fmtty(rest, fmtty2)] /*<<camlinternalFormatBasics.ml:592:38>>*/ ;
      case 1:
       var rest$0 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:594:14>>*/ return [1,
               concat_fmtty(rest$0, fmtty2)] /*<<camlinternalFormatBasics.ml:594:40>>*/ ;
      case 2:
       var rest$1 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:596:11>>*/ return [2,
               concat_fmtty(rest$1, fmtty2)] /*<<camlinternalFormatBasics.ml:596:37>>*/ ;
      case 3:
       var rest$2 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:598:13>>*/ return [3,
               concat_fmtty(rest$2, fmtty2)] /*<<camlinternalFormatBasics.ml:598:39>>*/ ;
      case 4:
       var rest$3 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:600:17>>*/ return [4,
               concat_fmtty(rest$3, fmtty2)] /*<<camlinternalFormatBasics.ml:600:43>>*/ ;
      case 5:
       var rest$4 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:602:13>>*/ return [5,
               concat_fmtty(rest$4, fmtty2)] /*<<camlinternalFormatBasics.ml:602:39>>*/ ;
      case 6:
       var rest$5 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:604:13>>*/ return [6,
               concat_fmtty(rest$5, fmtty2)] /*<<camlinternalFormatBasics.ml:604:39>>*/ ;
      case 7:
       var rest$6 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:606:12>>*/ return [7,
               concat_fmtty(rest$6, fmtty2)] /*<<camlinternalFormatBasics.ml:606:38>>*/ ;
      case 8:
       var
        rest$7 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[2],
        ty = fmtty1[1];
        /*<<camlinternalFormatBasics.ml:618:23>>*/ return [8,
               ty,
               concat_fmtty(rest$7, fmtty2)] /*<<camlinternalFormatBasics.ml:618:47>>*/ ;
      case 9:
       var
        rest$8 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[3],
        ty2 = fmtty1[2],
        ty1 = fmtty1[1];
        /*<<camlinternalFormatBasics.ml:620:31>>*/ return [9,
               ty1,
               ty2,
               concat_fmtty(rest$8, fmtty2)] /*<<camlinternalFormatBasics.ml:620:55>>*/ ;
      case 10:
       var rest$9 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:608:13>>*/ return [10,
               concat_fmtty(rest$9, fmtty2)] /*<<camlinternalFormatBasics.ml:608:39>>*/ ;
      case 11:
       var rest$10 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:610:13>>*/ return [11,
               concat_fmtty(rest$10, fmtty2)] /*<<camlinternalFormatBasics.ml:610:39>>*/ ;
      case 12:
       var rest$11 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:612:11>>*/ return [12,
               concat_fmtty(rest$11, fmtty2)] /*<<camlinternalFormatBasics.ml:612:37>>*/ ;
      case 13:
       var rest$12 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:614:14>>*/ return [13,
               concat_fmtty(rest$12, fmtty2)] /*<<camlinternalFormatBasics.ml:614:40>>*/ ;
      default:
       var rest$13 =  /*<<camlinternalFormatBasics.ml:590:21>>*/ fmtty1[1];
        /*<<camlinternalFormatBasics.ml:616:22>>*/ return [14,
               concat_fmtty(rest$13, fmtty2)] /*<<camlinternalFormatBasics.ml:616:48>>*/ ;
    }
    /*<<camlinternalFormatBasics.ml:621:26>>*/ }
   function concat_fmt(fmt1, fmt2){
     /*<<camlinternalFormatBasics.ml:631:17>>*/ if(typeof fmt1 === "number")
      /*<<camlinternalFormatBasics.ml:690:4>>*/ return fmt2;
     /*<<camlinternalFormatBasics.ml:631:17>>*/ switch(fmt1[0]){
      case 0:
       var rest = fmt1[1];
        /*<<camlinternalFormatBasics.ml:649:9>>*/ return [0,
               concat_fmt(rest, fmt2)] /*<<camlinternalFormatBasics.ml:649:31>>*/ ;
      case 1:
       var rest$0 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[1];
        /*<<camlinternalFormatBasics.ml:651:14>>*/ return [1,
               concat_fmt(rest$0, fmt2)] /*<<camlinternalFormatBasics.ml:651:36>>*/ ;
      case 2:
       var
        rest$1 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[2],
        pad = fmt1[1];
        /*<<camlinternalFormatBasics.ml:633:17>>*/ return [2,
               pad,
               concat_fmt(rest$1, fmt2)] /*<<camlinternalFormatBasics.ml:633:37>>*/ ;
      case 3:
       var
        rest$2 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[2],
        pad$0 = fmt1[1];
        /*<<camlinternalFormatBasics.ml:635:22>>*/ return [3,
               pad$0,
               concat_fmt(rest$2, fmt2)] /*<<camlinternalFormatBasics.ml:635:42>>*/ ;
      case 4:
       var
        rest$3 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[4],
        prec = fmt1[3],
        pad$1 = fmt1[2],
        iconv = fmt1[1];
        /*<<camlinternalFormatBasics.ml:638:27>>*/ return [4,
               iconv,
               pad$1,
               prec,
               concat_fmt(rest$3, fmt2)] /*<<camlinternalFormatBasics.ml:638:47>>*/ ;
      case 5:
       var
        rest$4 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[4],
        prec$0 = fmt1[3],
        pad$2 = fmt1[2],
        iconv$0 = fmt1[1];
        /*<<camlinternalFormatBasics.ml:640:29>>*/ return [5,
               iconv$0,
               pad$2,
               prec$0,
               concat_fmt(rest$4, fmt2)] /*<<camlinternalFormatBasics.ml:640:49>>*/ ;
      case 6:
       var
        rest$5 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[4],
        prec$1 = fmt1[3],
        pad$3 = fmt1[2],
        iconv$1 = fmt1[1];
        /*<<camlinternalFormatBasics.ml:642:33>>*/ return [6,
               iconv$1,
               pad$3,
               prec$1,
               concat_fmt(rest$5, fmt2)] /*<<camlinternalFormatBasics.ml:642:53>>*/ ;
      case 7:
       var
        rest$6 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[4],
        prec$2 = fmt1[3],
        pad$4 = fmt1[2],
        iconv$2 = fmt1[1];
        /*<<camlinternalFormatBasics.ml:644:29>>*/ return [7,
               iconv$2,
               pad$4,
               prec$2,
               concat_fmt(rest$6, fmt2)] /*<<camlinternalFormatBasics.ml:644:49>>*/ ;
      case 8:
       var
        rest$7 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[4],
        prec$3 = fmt1[3],
        pad$5 = fmt1[2],
        fconv = fmt1[1];
        /*<<camlinternalFormatBasics.ml:646:29>>*/ return [8,
               fconv,
               pad$5,
               prec$3,
               concat_fmt(rest$7, fmt2)] /*<<camlinternalFormatBasics.ml:646:49>>*/ ;
      case 9:
       var
        rest$8 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[2],
        pad$6 = fmt1[1];
        /*<<camlinternalFormatBasics.ml:653:15>>*/ return [9,
               pad$6,
               concat_fmt(rest$8, fmt2)] /*<<camlinternalFormatBasics.ml:653:35>>*/ ;
      case 10:
       var rest$9 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[1];
        /*<<camlinternalFormatBasics.ml:663:10>>*/ return [10,
               concat_fmt(rest$9, fmt2)] /*<<camlinternalFormatBasics.ml:663:32>>*/ ;
      case 11:
       var
        rest$10 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[2],
        str = fmt1[1];
        /*<<camlinternalFormatBasics.ml:666:25>>*/ return [11,
               str,
               concat_fmt(rest$10, fmt2)] /*<<camlinternalFormatBasics.ml:666:45>>*/ ;
      case 12:
       var
        rest$11 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[2],
        chr = fmt1[1];
        /*<<camlinternalFormatBasics.ml:668:25>>*/ return [12,
               chr,
               concat_fmt(rest$11, fmt2)] /*<<camlinternalFormatBasics.ml:668:45>>*/ ;
      case 13:
       var
        rest$12 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[3],
        fmtty = fmt1[2],
        pad$7 = fmt1[1];
        /*<<camlinternalFormatBasics.ml:671:30>>*/ return [13,
               pad$7,
               fmtty,
               concat_fmt(rest$12, fmt2)] /*<<camlinternalFormatBasics.ml:671:50>>*/ ;
      case 14:
       var
        rest$13 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[3],
        fmtty$0 = fmt1[2],
        pad$8 = fmt1[1];
        /*<<camlinternalFormatBasics.ml:673:30>>*/ return [14,
               pad$8,
               fmtty$0,
               concat_fmt(rest$13, fmt2)] /*<<camlinternalFormatBasics.ml:673:50>>*/ ;
      case 15:
       var rest$14 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[1];
        /*<<camlinternalFormatBasics.ml:655:10>>*/ return [15,
               concat_fmt(rest$14, fmt2)] /*<<camlinternalFormatBasics.ml:655:32>>*/ ;
      case 16:
       var rest$15 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[1];
        /*<<camlinternalFormatBasics.ml:657:10>>*/ return [16,
               concat_fmt(rest$15, fmt2)] /*<<camlinternalFormatBasics.ml:657:32>>*/ ;
      case 17:
       var
        rest$16 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[2],
        fmting_lit = fmt1[1];
        /*<<camlinternalFormatBasics.ml:685:32>>*/ return [17,
               fmting_lit,
               concat_fmt(rest$16, fmt2)] /*<<camlinternalFormatBasics.ml:685:52>>*/ ;
      case 18:
       var
        rest$17 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[2],
        fmting_gen = fmt1[1];
        /*<<camlinternalFormatBasics.ml:687:32>>*/ return [18,
               fmting_gen,
               concat_fmt(rest$17, fmt2)] /*<<camlinternalFormatBasics.ml:687:52>>*/ ;
      case 19:
       var rest$18 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[1];
        /*<<camlinternalFormatBasics.ml:661:11>>*/ return [19,
               concat_fmt(rest$18, fmt2)] /*<<camlinternalFormatBasics.ml:661:33>>*/ ;
      case 20:
       var
        rest$19 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[3],
        char_set = fmt1[2],
        width_opt = fmt1[1];
        /*<<camlinternalFormatBasics.ml:676:40>>*/ return [20,
               width_opt,
               char_set,
               concat_fmt(rest$19, fmt2)] /*<<camlinternalFormatBasics.ml:676:60>>*/ ;
      case 21:
       var
        rest$20 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[2],
        counter = fmt1[1];
        /*<<camlinternalFormatBasics.ml:678:31>>*/ return [21,
               counter,
               concat_fmt(rest$20, fmt2)] /*<<camlinternalFormatBasics.ml:678:51>>*/ ;
      case 22:
       var rest$21 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[1];
        /*<<camlinternalFormatBasics.ml:680:19>>*/ return [22,
               concat_fmt(rest$21, fmt2)] /*<<camlinternalFormatBasics.ml:680:41>>*/ ;
      case 23:
       var
        rest$22 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[2],
        ign = fmt1[1];
        /*<<camlinternalFormatBasics.ml:682:24>>*/ return [23,
               ign,
               concat_fmt(rest$22, fmt2)] /*<<camlinternalFormatBasics.ml:682:44>>*/ ;
      default:
       var
        rest$23 =  /*<<camlinternalFormatBasics.ml:631:17>>*/ fmt1[3],
        f = fmt1[2],
        arity = fmt1[1];
        /*<<camlinternalFormatBasics.ml:659:22>>*/ return [24,
               arity,
               f,
               concat_fmt(rest$23, fmt2)] /*<<camlinternalFormatBasics.ml:659:42>>*/ ;
    }
    /*<<camlinternalFormatBasics.ml:690:8>>*/ }
   function string_concat_map(f, param){
     /*<<camlinternalFormatBasics.ml:699:8>>*/ if(typeof param === "number")
      /*<<camlinternalFormatBasics.ml:749:21>>*/ return 0;
     /*<<camlinternalFormatBasics.ml:699:8>>*/ switch(param[0]){
      case 0:
       var rest = param[1];
        /*<<camlinternalFormatBasics.ml:716:24>>*/ return [0,
               string_concat_map(f, rest)] /*<<camlinternalFormatBasics.ml:716:50>>*/ ;
      case 1:
       var rest$0 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:718:14>>*/ return [1,
               string_concat_map(f, rest$0)] /*<<camlinternalFormatBasics.ml:718:41>>*/ ;
      case 2:
       var
        rest$1 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[2],
        pad = param[1];
        /*<<camlinternalFormatBasics.ml:702:39>>*/ return [2,
               pad,
               string_concat_map(f, rest$1)] /*<<camlinternalFormatBasics.ml:702:63>>*/ ;
      case 3:
       var
        rest$2 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[2],
        pad$0 = param[1];
        /*<<camlinternalFormatBasics.ml:703:49>>*/ return [3,
               pad$0,
               string_concat_map(f, rest$2)] /*<<camlinternalFormatBasics.ml:703:73>>*/ ;
      case 4:
       var
        rest$3 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[4],
        prec = param[3],
        pad$1 = param[2],
        iconv = param[1];
        /*<<camlinternalFormatBasics.ml:706:28>>*/ return [4,
               iconv,
               pad$1,
               prec,
               string_concat_map(f, rest$3)] /*<<camlinternalFormatBasics.ml:706:52>>*/ ;
      case 5:
       var
        rest$4 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[4],
        prec$0 = param[3],
        pad$2 = param[2],
        iconv$0 = param[1];
        /*<<camlinternalFormatBasics.ml:708:30>>*/ return [5,
               iconv$0,
               pad$2,
               prec$0,
               string_concat_map(f, rest$4)] /*<<camlinternalFormatBasics.ml:708:54>>*/ ;
      case 6:
       var
        rest$5 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[4],
        prec$1 = param[3],
        pad$3 = param[2],
        iconv$1 = param[1];
        /*<<camlinternalFormatBasics.ml:710:34>>*/ return [6,
               iconv$1,
               pad$3,
               prec$1,
               string_concat_map(f, rest$5)] /*<<camlinternalFormatBasics.ml:710:58>>*/ ;
      case 7:
       var
        rest$6 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[4],
        prec$2 = param[3],
        pad$4 = param[2],
        iconv$2 = param[1];
        /*<<camlinternalFormatBasics.ml:712:30>>*/ return [7,
               iconv$2,
               pad$4,
               prec$2,
               string_concat_map(f, rest$6)] /*<<camlinternalFormatBasics.ml:712:54>>*/ ;
      case 8:
       var
        rest$7 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[4],
        prec$3 = param[3],
        pad$5 = param[2],
        fconv = param[1];
        /*<<camlinternalFormatBasics.ml:714:30>>*/ return [8,
               fconv,
               pad$5,
               prec$3,
               string_concat_map(f, rest$7)] /*<<camlinternalFormatBasics.ml:714:54>>*/ ;
      case 9:
       var
        rest$8 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[2],
        pad$6 = param[1];
        /*<<camlinternalFormatBasics.ml:719:36>>*/ return [9,
               pad$6,
               string_concat_map(f, rest$8)] /*<<camlinternalFormatBasics.ml:719:60>>*/ ;
      case 10:
       var rest$9 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:725:24>>*/ return [10,
               string_concat_map(f, rest$9)] /*<<camlinternalFormatBasics.ml:725:50>>*/ ;
      case 11:
       var
        rest$10 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[2],
        str = param[1],
        _a_ =
           /*<<camlinternalFormatBasics.ml:727:52>>*/ string_concat_map
           (f, rest$10);
        /*<<camlinternalFormatBasics.ml:727:78>>*/ return caml_call2
               (f[1], [0, -976970511, str], _a_) /*<<camlinternalFormatBasics.ml:749:34>>*/ ;
      case 12:
       var
        rest$11 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[2],
        chr = param[1],
        _b_ =
           /*<<camlinternalFormatBasics.ml:729:22>>*/ string_concat_map
           (f, rest$11);
        /*<<camlinternalFormatBasics.ml:729:48>>*/ return caml_call2
               (f[1], [0, 748194550, chr], _b_) /*<<camlinternalFormatBasics.ml:749:34>>*/ ;
      case 13:
       var
        rest$12 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[3],
        fmtty = param[2],
        pad$7 = param[1];
        /*<<camlinternalFormatBasics.ml:731:30>>*/ return [13,
               pad$7,
               fmtty,
               string_concat_map(f, rest$12)] /*<<camlinternalFormatBasics.ml:731:54>>*/ ;
      case 14:
       var
        rest$13 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[3],
        fmtty$0 = param[2],
        pad$8 = param[1];
        /*<<camlinternalFormatBasics.ml:733:30>>*/ return [14,
               pad$8,
               fmtty$0,
               string_concat_map(f, rest$13)] /*<<camlinternalFormatBasics.ml:733:54>>*/ ;
      case 15:
       var rest$14 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:720:24>>*/ return [15,
               string_concat_map(f, rest$14)] /*<<camlinternalFormatBasics.ml:720:50>>*/ ;
      case 16:
       var rest$15 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:721:24>>*/ return [16,
               string_concat_map(f, rest$15)] /*<<camlinternalFormatBasics.ml:721:50>>*/ ;
      case 17:
       var
        rest$16 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[2],
        fmting_lit = param[1];
        /*<<camlinternalFormatBasics.ml:745:32>>*/ return [17,
               fmting_lit,
               string_concat_map(f, rest$16)] /*<<camlinternalFormatBasics.ml:745:56>>*/ ;
      case 18:
       var
        rest$17 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[2],
        fmting_gen = param[1];
        /*<<camlinternalFormatBasics.ml:747:32>>*/ return [18,
               fmting_gen,
               string_concat_map(f, rest$17)] /*<<camlinternalFormatBasics.ml:747:56>>*/ ;
      case 19:
       var rest$18 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:724:26>>*/ return [19,
               string_concat_map(f, rest$18)] /*<<camlinternalFormatBasics.ml:724:52>>*/ ;
      case 20:
       var
        rest$19 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[3],
        char_set = param[2],
        width_opt = param[1];
        /*<<camlinternalFormatBasics.ml:736:40>>*/ return [20,
               width_opt,
               char_set,
               string_concat_map(f, rest$19)] /*<<camlinternalFormatBasics.ml:736:64>>*/ ;
      case 21:
       var
        rest$20 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[2],
        counter = param[1];
        /*<<camlinternalFormatBasics.ml:738:30>>*/ return [21,
               counter,
               string_concat_map(f, rest$20)] /*<<camlinternalFormatBasics.ml:738:54>>*/ ;
      case 22:
       var rest$21 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[1];
        /*<<camlinternalFormatBasics.ml:740:19>>*/ return [22,
               string_concat_map(f, rest$21)] /*<<camlinternalFormatBasics.ml:740:45>>*/ ;
      case 23:
       var
        rest$22 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[2],
        ign = param[1];
        /*<<camlinternalFormatBasics.ml:742:24>>*/ return [23,
               ign,
               string_concat_map(f, rest$22)] /*<<camlinternalFormatBasics.ml:742:48>>*/ ;
      default:
       var
        rest$23 =  /*<<camlinternalFormatBasics.ml:699:8>>*/ param[3],
        fc = param[2],
        arity = param[1];
        /*<<camlinternalFormatBasics.ml:723:24>>*/ return [24,
               arity,
               fc,
               string_concat_map(f, rest$23)] /*<<camlinternalFormatBasics.ml:723:48>>*/ ;
    }
    /*<<camlinternalFormatBasics.ml:749:34>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (0,
     [0, concat_fmtty, erase_rel, concat_fmt, string_concat_map],
     "CamlinternalFormatBasics");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib
//# unitInfo: Requires: CamlinternalFormatBasics
//# shape: Stdlib:[F(1),F(1),N,N,N,N,N,N,N,N,N,N,N,N,N,F(2),F(2),F(1)*,N,N,F(1)*,N,N,N,N,N,N,F(2)*,F(1),F(1)*,F(1)*,F(1),F(1)*,F(1),F(1),F(1),F(2),N,N,N,F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(3),F(1),F(1),F(2),F(2),F(2),F(4),F(4),F(2),F(2),F(2),F(2),F(1),F(1),F(1),F(1),F(2),F(1),F(1),F(3),F(1),F(1),F(4),F(4),F(2),F(1),F(1),F(1),F(2),F(1),F(1),F(1),F(1),F(2),N,F(1)*,F(2),F(1),F(1),F(1),F(4),F(1),N]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_atomic_cas_field = runtime.caml_atomic_cas_field,
    caml_create_bytes = runtime.caml_create_bytes,
    caml_float_of_string = runtime.caml_float_of_string,
    caml_int_of_string = runtime.caml_int_of_string,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_bytes_length = runtime.caml_ml_bytes_length,
    caml_ml_channel_size = runtime.caml_ml_channel_size,
    caml_ml_channel_size_64 = runtime.caml_ml_channel_size_64,
    caml_ml_close_channel = runtime.caml_ml_close_channel,
    caml_ml_flush = runtime.caml_ml_flush,
    caml_ml_input = runtime.caml_ml_input,
    caml_ml_input_char = runtime.caml_ml_input_char,
    caml_ml_open_descriptor_in = runtime.caml_ml_open_descriptor_in,
    caml_ml_open_descriptor_out = runtime.caml_ml_open_descriptor_out,
    caml_ml_output = runtime.caml_ml_output,
    caml_ml_output_bytes = runtime.caml_ml_output_bytes,
    caml_ml_output_char = runtime.caml_ml_output_char,
    caml_ml_set_binary_mode = runtime.caml_ml_set_binary_mode,
    caml_ml_set_channel_name = runtime.caml_ml_set_channel_name,
    caml_ml_string_length = runtime.caml_ml_string_length,
    caml_string_concat = runtime.caml_string_concat,
    caml_string_of_bytes = runtime.caml_string_of_bytes,
    caml_sys_open = runtime.caml_sys_open,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    CamlinternalFormatBasics = global_data.CamlinternalFormatBasics,
    Invalid_argument = global_data.Invalid_argument,
    Failure = global_data.Failure,
    Match_failure = global_data.Match_failure,
    Assert_failure = global_data.Assert_failure,
    Not_found = global_data.Not_found,
    Out_of_memory = global_data.Out_of_memory,
    Stack_overflow = global_data.Stack_overflow,
    Sys_error = global_data.Sys_error,
    End_of_file = global_data.End_of_file,
    Division_by_zero = global_data.Division_by_zero,
    Sys_blocked_io = global_data.Sys_blocked_io,
    Undefined_recursive_module = global_data.Undefined_recursive_module;
   function failwith(s){
     /*<<stdlib.ml:29:17>>*/ throw caml_maybe_attach_backtrace
           ([0, Failure, s], 1);
    /*<<stdlib.ml:29:33>>*/ }
   function invalid_arg(s){
     /*<<stdlib.ml:30:20>>*/ throw caml_maybe_attach_backtrace
           ([0, Invalid_argument, s], 1);
    /*<<stdlib.ml:30:45>>*/ }
   var
    Exit =
       /*<<stdlib.ml:24:44>>*/ [248,
       "Stdlib.Exit",
       runtime.caml_fresh_oo_id(0)];
   function min(x, y){
     /*<<stdlib.ml:74:17>>*/ return runtime.caml_lessequal(x, y) ? x : y /*<<stdlib.ml:74:37>>*/ ;
   }
   function max(x, y){
     /*<<stdlib.ml:75:17>>*/ return runtime.caml_greaterequal(x, y) ? x : y /*<<stdlib.ml:75:37>>*/ ;
   }
   function abs(x){
     /*<<stdlib.ml:98:12>>*/ return 0 <= x ? x : - x | 0 /*<<stdlib.ml:98:36>>*/ ;
   }
   function lnot(x){
     /*<<stdlib.ml:104:13>>*/ return x ^ -1;
    /*<<stdlib.ml:104:24>>*/ }
   function char_of_int(n){
     /*<<stdlib.ml:224:2>>*/ if(0 <= n && 255 >= n)
      /*<<stdlib.ml:224:58>>*/ return n;
     /*<<stdlib.ml:224:27>>*/ return invalid_arg("char_of_int") /*<<stdlib.ml:224:78>>*/ ;
   }
   var cst_false =  /*<<?>>*/ "false", cst_true = "true";
   function string_of_bool(b){
     /*<<stdlib.ml:254:2>>*/ return b ? cst_true : cst_false /*<<stdlib.ml:254:31>>*/ ;
   }
   function bool_of_string(param){
     /*<<stdlib.ml:255:21>>*/ return param !== cst_false
            ? param
              !== cst_true
              ?  /*<<stdlib.ml:258:9>>*/ invalid_arg("bool_of_string")
              : 1
            : 0 /*<<stdlib.ml:258:37>>*/ ;
   }
   var _a_ =  /*<<stdlib.ml:190:42>>*/ [0, 1], _b_ = [0, 0];
   function bool_of_string_opt(param){
     /*<<stdlib.ml:260:25>>*/ return param !== cst_false
            ? param !== cst_true ? 0 : _a_
            : _b_ /*<<stdlib.ml:263:13>>*/ ;
   }
   function string_of_int(n){ /*<<stdlib.ml:266:19>>*/ return "" + n;}
   function int_of_string_opt(s){
     /*<<stdlib.ml:272:2>>*/ try{
     var _f_ =  /*<<stdlib.ml:272:11>>*/ [0, caml_int_of_string(s)];
     return _f_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] === Failure)  /*<<stdlib.ml:273:20>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<stdlib.ml:273:24>>*/ }
   function valid_float_lexem(s1){
    var
     l =  /*<<stdlib.ml:278:2>>*/ caml_ml_string_length(s1),
     i =  /*<<stdlib.ml:285:2>>*/ 0;
    for(;;){
      /*<<stdlib.ml:280:4>>*/ if(l <= i)
       /*<<stdlib.ml:280:19>>*/ return s1 + ".";
     var match =  /*<<stdlib.ml:281:10>>*/ runtime.caml_string_get(s1, i);
     a:
     {
       /*<<stdlib.ml:281:24>>*/ if(48 <= match){
       if(58 <= match) break a;
      }
      else if(45 !== match) break a;
      var i$0 =  /*<<stdlib.ml:282:26>>*/ i + 1 | 0;
      i = i$0;
      continue;
     }
      /*<<stdlib.ml:283:11>>*/ return s1;
    }
    /*<<stdlib.ml:285:8>>*/ }
   function string_of_float(f){
     /*<<stdlib.ml:287:42>>*/ return  /*<<stdlib.ml:287:66>>*/ valid_float_lexem
            ( /*<<stdlib.ml:287:42>>*/ runtime.caml_format_float("%.12g", f)) /*<<stdlib.ml:287:66>>*/ ;
   }
   function float_of_string_opt(s){
     /*<<stdlib.ml:293:2>>*/ try{
     var _f_ =  /*<<stdlib.ml:293:11>>*/ [0, caml_float_of_string(s)];
     return _f_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] === Failure)  /*<<stdlib.ml:294:20>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<stdlib.ml:294:24>>*/ }
   function symbol(l1, l2){
     /*<<stdlib.ml:299:2>>*/ if(! l1)  /*<<stdlib.ml:300:10>>*/ return l2;
    var match =  /*<<stdlib.ml:299:2>>*/ l1[2], h1 = l1[1];
    if(! match)  /*<<stdlib.ml:301:16>>*/ return [0, h1, l2];
    var match$0 =  /*<<stdlib.ml:299:2>>*/ match[2], h2 = match[1];
    if(! match$0)  /*<<stdlib.ml:302:22>>*/ return [0, h1, [0, h2, l2]];
    var
     tl =  /*<<stdlib.ml:299:2>>*/ match$0[2],
     h3 = match$0[1],
     block =  /*<<stdlib.ml:303:28>>*/ [0, h3, 24029],
     dst =  /*<<stdlib.ml:303:46>>*/ block,
     offset = 1,
     l1$0 = tl;
    for(;;){
      /*<<stdlib.ml:299:2>>*/ if(l1$0){
      var match$1 = l1$0[2], h1$0 = l1$0[1];
      if(match$1){
       var match$2 = match$1[2], h2$0 = match$1[1];
       if(match$2){
        var
         tl$0 = match$2[2],
         h3$0 = match$2[1],
         dst$0 =  /*<<stdlib.ml:303:28>>*/ [0, h3$0, 24029];
        dst[offset + 1] = [0, h1$0, [0, h2$0, dst$0]];
        dst = dst$0;
        offset = 1;
        l1$0 = tl$0;
        continue;
       }
        /*<<stdlib.ml:302:22>>*/ dst[offset + 1] = [0, h1$0, [0, h2$0, l2]];
      }
      else
        /*<<stdlib.ml:301:16>>*/ dst[offset + 1] = [0, h1$0, l2];
     }
     else
       /*<<stdlib.ml:300:10>>*/ dst[offset + 1] = l2;
      /*<<stdlib.ml:303:55>>*/ return [0, h1, [0, h2, block]];
    }
   }
   var
    stdin =  /*<<stdlib.ml:314:12>>*/ caml_ml_open_descriptor_in(0),
    stdout =  /*<<stdlib.ml:315:13>>*/ caml_ml_open_descriptor_out(1),
    stderr =  /*<<stdlib.ml:316:13>>*/ caml_ml_open_descriptor_out(2);
   function open_out_gen(mode, perm, name){
    var
     c =
        /*<<stdlib.ml:331:29>>*/  /*<<stdlib.ml:331:10>>*/ caml_ml_open_descriptor_out
        ( /*<<stdlib.ml:331:29>>*/ caml_sys_open(name, mode, perm));
     /*<<stdlib.ml:332:2>>*/ caml_ml_set_channel_name(c, name);
     /*<<stdlib.ml:332:29>>*/ return c;
    /*<<stdlib.ml:333:3>>*/ }
   var _c_ =  /*<<stdlib.ml:316:34>>*/ [0, 1, [0, 3, [0, 4, [0, 7, 0]]]];
   function open_out(name){
     /*<<stdlib.ml:336:2>>*/ return open_out_gen(_c_, 438, name) /*<<stdlib.ml:336:74>>*/ ;
   }
   var _d_ =  /*<<stdlib.ml:316:34>>*/ [0, 1, [0, 3, [0, 4, [0, 6, 0]]]];
   function open_out_bin(name){
     /*<<stdlib.ml:339:2>>*/ return open_out_gen(_d_, 438, name) /*<<stdlib.ml:339:76>>*/ ;
   }
   function flush_all(param){
    var
     param$0 =
        /*<<stdlib.ml:356:32>>*/  /*<<stdlib.ml:356:10>>*/ runtime.caml_ml_out_channels_list
        (0);
     /*<<stdlib.ml:356:32>>*/ for(;;){
      /*<<stdlib.ml:347:17>>*/ if(! param$0)
       /*<<stdlib.ml:348:12>>*/ return 0;
     var l =  /*<<stdlib.ml:347:17>>*/ param$0[2], a = param$0[1];
      /*<<stdlib.ml:350:8>>*/ try{
       /*<<stdlib.ml:351:12>>*/ caml_ml_flush(a);
      param$0 = l;
     }
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn[1] !== Sys_error) throw caml_maybe_attach_backtrace(exn, 0);
      param$0 = l;
     }
    }
    /*<<stdlib.ml:356:32>>*/ }
   function output_bytes(oc, s){
     /*<<stdlib.ml:366:2>>*/ return caml_ml_output_bytes
            (oc, s, 0, caml_ml_bytes_length(s)) /*<<stdlib.ml:366:39>>*/ ;
   }
   function output_string(oc, s){
     /*<<stdlib.ml:369:2>>*/ return caml_ml_output
            (oc, s, 0, caml_ml_string_length(s)) /*<<stdlib.ml:369:47>>*/ ;
   }
   function output(oc, s, ofs, len){
     /*<<stdlib.ml:372:2>>*/ if
     (0 <= ofs && 0 <= len && (caml_ml_bytes_length(s) - len | 0) >= ofs)
      /*<<stdlib.ml:374:7>>*/ return caml_ml_output_bytes(oc, s, ofs, len) /*<<stdlib.ml:374:33>>*/ ;
     /*<<stdlib.ml:373:7>>*/ return invalid_arg("output") /*<<stdlib.ml:374:33>>*/ ;
   }
   function output_substring(oc, s, ofs, len){
     /*<<stdlib.ml:377:2>>*/ if
     (0 <= ofs && 0 <= len && (caml_ml_string_length(s) - len | 0) >= ofs)
      /*<<stdlib.ml:379:7>>*/ return caml_ml_output(oc, s, ofs, len) /*<<stdlib.ml:379:40>>*/ ;
     /*<<stdlib.ml:378:7>>*/ return invalid_arg("output_substring") /*<<stdlib.ml:379:40>>*/ ;
   }
   function output_value(chan, v){
     /*<<stdlib.ml:386:26>>*/ return runtime.caml_output_value(chan, v, 0) /*<<stdlib.ml:386:54>>*/ ;
   }
   function close_out(oc){
     /*<<stdlib.ml:392:19>>*/ caml_ml_flush(oc);
     /*<<stdlib.ml:392:29>>*/ return caml_ml_close_channel(oc) /*<<stdlib.ml:392:49>>*/ ;
   }
   function close_out_noerr(oc){
     /*<<stdlib.ml:394:2>>*/ try{ /*<<stdlib.ml:394:7>>*/ caml_ml_flush(oc);}
    catch(exn){}
     /*<<stdlib.ml:394:2>>*/ try{
     var _f_ =  /*<<stdlib.ml:395:7>>*/ caml_ml_close_channel(oc);
     return _f_;
    }
    catch(exn){ /*<<stdlib.ml:395:38>>*/ return 0;}
    /*<<stdlib.ml:395:41>>*/ }
   function open_in_gen(mode, perm, name){
    var
     c =
        /*<<stdlib.ml:405:28>>*/  /*<<stdlib.ml:405:10>>*/ caml_ml_open_descriptor_in
        ( /*<<stdlib.ml:405:28>>*/ caml_sys_open(name, mode, perm));
     /*<<stdlib.ml:406:2>>*/ caml_ml_set_channel_name(c, name);
     /*<<stdlib.ml:406:28>>*/ return c;
    /*<<stdlib.ml:407:3>>*/ }
   var _e_ =  /*<<stdlib.ml:316:34>>*/ [0, 0, [0, 7, 0]];
   function open_in(name){
     /*<<stdlib.ml:410:2>>*/ return open_in_gen(_e_, 0, name) /*<<stdlib.ml:410:45>>*/ ;
   }
   var _f_ =  /*<<stdlib.ml:316:34>>*/ [0, 0, [0, 6, 0]];
   function open_in_bin(name){
     /*<<stdlib.ml:413:2>>*/ return open_in_gen(_f_, 0, name) /*<<stdlib.ml:413:47>>*/ ;
   }
   function input(ic, s, ofs, len){
     /*<<stdlib.ml:421:2>>*/ if
     (0 <= ofs && 0 <= len && (caml_ml_bytes_length(s) - len | 0) >= ofs)
      /*<<stdlib.ml:423:7>>*/ return caml_ml_input(ic, s, ofs, len) /*<<stdlib.ml:423:32>>*/ ;
     /*<<stdlib.ml:422:7>>*/ return invalid_arg("input") /*<<stdlib.ml:423:32>>*/ ;
   }
   function unsafe_really_input(ic, s, ofs$1, len$1){
    var ofs =  /*<<stdlib.ml:426:2>>*/ ofs$1, len = len$1;
    for(;;){
     if(0 >= len)  /*<<stdlib.ml:426:19>>*/ return 0;
     var r =  /*<<stdlib.ml:427:12>>*/ caml_ml_input(ic, s, ofs, len);
      /*<<stdlib.ml:428:4>>*/ if(0 === r)
       /*<<stdlib.ml:429:9>>*/ throw caml_maybe_attach_backtrace
             (End_of_file, 1);
     var len$0 =  /*<<stdlib.ml:430:9>>*/ len - r | 0, ofs$0 = ofs + r | 0;
     ofs = ofs$0;
     len = len$0;
    }
    /*<<stdlib.ml:431:5>>*/ }
   function really_input(ic, s, ofs, len){
     /*<<stdlib.ml:434:2>>*/ if
     (0 <= ofs && 0 <= len && (caml_ml_bytes_length(s) - len | 0) >= ofs)
      /*<<stdlib.ml:436:7>>*/ return unsafe_really_input(ic, s, ofs, len) /*<<stdlib.ml:436:39>>*/ ;
     /*<<stdlib.ml:435:7>>*/ return invalid_arg("really_input") /*<<stdlib.ml:436:39>>*/ ;
   }
   function really_input_string(ic, len){
    var s =  /*<<stdlib.ml:439:10>>*/ caml_create_bytes(len);
     /*<<stdlib.ml:440:2>>*/ really_input(ic, s, 0, len);
     /*<<stdlib.ml:440:25>>*/ return caml_string_of_bytes(s) /*<<stdlib.ml:441:26>>*/ ;
   }
   function input_line(chan){
    function build_result(buf, pos$1, param$0){
     var pos =  /*<<stdlib.ml:446:23>>*/ pos$1, param = param$0;
     for(;;){
      if(! param)  /*<<stdlib.ml:447:10>>*/ return buf;
      var
       tl =  /*<<stdlib.ml:446:23>>*/ param[2],
       hd = param[1],
       len =  /*<<stdlib.ml:449:6>>*/ caml_ml_bytes_length(hd);
       /*<<stdlib.ml:450:6>>*/ runtime.caml_blit_bytes
       (hd, 0, buf, pos - len | 0, len);
      var pos$0 =  /*<<stdlib.ml:450:41>>*/ pos - len | 0;
      pos = pos$0;
      param = tl;
     }
     /*<<stdlib.ml:451:37>>*/ }
    var accu =  /*<<stdlib.ml:471:28>>*/ 0, len = 0;
    for(;;){
     var n =  /*<<stdlib.ml:453:12>>*/ runtime.caml_ml_input_scan_line(chan);
      /*<<stdlib.ml:454:4>>*/ if(0 === n){
       /*<<stdlib.ml:454:18>>*/ if(! accu)
        /*<<stdlib.ml:456:14>>*/ throw caml_maybe_attach_backtrace
              (End_of_file, 1);
      var
       _f_ =
          /*<<stdlib.ml:457:45>>*/ build_result
          ( /*<<stdlib.ml:457:27>>*/ caml_create_bytes(len), len, accu);
     }
     else{
       /*<<stdlib.ml:458:13>>*/ if(0 >= n){
       var beg =  /*<<stdlib.ml:467:16>>*/ caml_create_bytes(- n | 0);
        /*<<stdlib.ml:468:12>>*/ caml_ml_input(chan, beg, 0, - n | 0);
       var
        len$1 =  /*<<stdlib.ml:469:6>>*/ len - n | 0,
        accu$0 = [0, beg, accu];
       accu = accu$0;
       len = len$1;
       continue;
      }
      var res =  /*<<stdlib.ml:459:16>>*/ caml_create_bytes(n - 1 | 0);
       /*<<stdlib.ml:460:13>>*/ caml_ml_input(chan, res, 0, n - 1 | 0);
       /*<<stdlib.ml:461:13>>*/ caml_ml_input_char(chan);
       /*<<stdlib.ml:462:6>>*/ if(accu)
       var
        len$0 =  /*<<stdlib.ml:464:14>>*/ (len + n | 0) - 1 | 0,
        _f_ =
           /*<<stdlib.ml:465:45>>*/ build_result
           ( /*<<stdlib.ml:465:27>>*/ caml_create_bytes(len$0),
            len$0,
            [0, res, accu]);
      else
       var _f_ =  /*<<stdlib.ml:462:6>>*/ res;
     }
      /*<<stdlib.ml:471:39>>*/ return caml_string_of_bytes(_f_);
    }
   }
   function close_in_noerr(ic){
     /*<<stdlib.ml:480:24>>*/ try{
     var _f_ =  /*<<stdlib.ml:480:29>>*/ caml_ml_close_channel(ic);
     return _f_;
    }
    catch(exn){ /*<<stdlib.ml:480:51>>*/ return 0;}
    /*<<stdlib.ml:480:54>>*/ }
   function print_char(c){
     /*<<stdlib.ml:486:19>>*/ return caml_ml_output_char(stdout, c) /*<<stdlib.ml:486:39>>*/ ;
   }
   function print_string(s){
     /*<<stdlib.ml:487:21>>*/ return output_string(stdout, s) /*<<stdlib.ml:487:43>>*/ ;
   }
   function print_bytes(s){
     /*<<stdlib.ml:488:20>>*/ return output_bytes(stdout, s) /*<<stdlib.ml:488:41>>*/ ;
   }
   function print_int(i){
     /*<<stdlib.ml:489:56>>*/ return output_string(stdout, "" + i);
   }
   function print_float(f){
     /*<<stdlib.ml:490:41>>*/ return  /*<<stdlib.ml:490:60>>*/ output_string
            (stdout,  /*<<stdlib.ml:490:41>>*/ string_of_float(f)) /*<<stdlib.ml:490:60>>*/ ;
   }
   function print_endline(s){
     /*<<stdlib.ml:492:2>>*/ output_string(stdout, s);
     /*<<stdlib.ml:492:26>>*/ caml_ml_output_char(stdout, 10);
     /*<<stdlib.ml:492:51>>*/ return caml_ml_flush(stdout) /*<<stdlib.ml:492:63>>*/ ;
   }
   function print_newline(param){
     /*<<stdlib.ml:493:23>>*/ caml_ml_output_char(stdout, 10);
     /*<<stdlib.ml:493:48>>*/ return caml_ml_flush(stdout) /*<<stdlib.ml:493:60>>*/ ;
   }
   function prerr_char(c){
     /*<<stdlib.ml:497:19>>*/ return caml_ml_output_char(stderr, c) /*<<stdlib.ml:497:39>>*/ ;
   }
   function prerr_string(s){
     /*<<stdlib.ml:498:21>>*/ return output_string(stderr, s) /*<<stdlib.ml:498:43>>*/ ;
   }
   function prerr_bytes(s){
     /*<<stdlib.ml:499:20>>*/ return output_bytes(stderr, s) /*<<stdlib.ml:499:41>>*/ ;
   }
   function prerr_int(i){
     /*<<stdlib.ml:500:56>>*/ return output_string(stderr, "" + i);
   }
   function prerr_float(f){
     /*<<stdlib.ml:501:41>>*/ return  /*<<stdlib.ml:501:60>>*/ output_string
            (stderr,  /*<<stdlib.ml:501:41>>*/ string_of_float(f)) /*<<stdlib.ml:501:60>>*/ ;
   }
   function prerr_endline(s){
     /*<<stdlib.ml:503:2>>*/ output_string(stderr, s);
     /*<<stdlib.ml:503:26>>*/ caml_ml_output_char(stderr, 10);
     /*<<stdlib.ml:503:51>>*/ return caml_ml_flush(stderr) /*<<stdlib.ml:503:63>>*/ ;
   }
   function prerr_newline(param){
     /*<<stdlib.ml:504:23>>*/ caml_ml_output_char(stderr, 10);
     /*<<stdlib.ml:504:48>>*/ return caml_ml_flush(stderr) /*<<stdlib.ml:504:60>>*/ ;
   }
   function read_line(param){
     /*<<stdlib.ml:508:19>>*/ caml_ml_flush(stdout);
     /*<<stdlib.ml:508:31>>*/ return input_line(stdin) /*<<stdlib.ml:508:49>>*/ ;
   }
   function read_int(param){
     /*<<stdlib.ml:509:31>>*/ return  /*<<stdlib.ml:509:18>>*/ caml_int_of_string
            ( /*<<stdlib.ml:509:31>>*/ read_line(0)) /*<<stdlib.ml:509:44>>*/ ;
   }
   function read_int_opt(param){
     /*<<stdlib.ml:510:39>>*/ return  /*<<stdlib.ml:510:52>>*/ int_of_string_opt
            ( /*<<stdlib.ml:510:39>>*/ read_line(0)) /*<<stdlib.ml:510:52>>*/ ;
   }
   function read_float(param){
     /*<<stdlib.ml:511:35>>*/ return  /*<<stdlib.ml:511:20>>*/ caml_float_of_string
            ( /*<<stdlib.ml:511:35>>*/ read_line(0)) /*<<stdlib.ml:511:48>>*/ ;
   }
   function read_float_opt(param){
     /*<<stdlib.ml:512:43>>*/ return  /*<<stdlib.ml:512:56>>*/ float_of_string_opt
            ( /*<<stdlib.ml:512:43>>*/ read_line(0)) /*<<stdlib.ml:512:56>>*/ ;
   }
   function string_of_format(param){
    var str =  /*<<stdlib.ml:538:21>>*/ param[2];
     /*<<stdlib.ml:538:44>>*/ return str;
    /*<<stdlib.ml:538:47>>*/ }
   function symbol$0(_f_, param){
    var
     str2 =  /*<<stdlib.ml:544:11>>*/ param[2],
     fmt2 = param[1],
     str1 = _f_[2],
     fmt1 = _f_[1],
     s2 =  /*<<stdlib.ml:546:17>>*/ "%," + str2;
     /*<<stdlib.ml:545:10>>*/ return [0,
            CamlinternalFormatBasics[3].call(null, fmt1, fmt2),
            str1 + s2] /*<<stdlib.ml:545:55>>*/ ;
    /*<<stdlib.ml:546:29>>*/ }
   var exit_function =  /*<<stdlib.ml:316:34>>*/ [0, flush_all];
   function at_exit(f){
     /*<<stdlib.ml:563:2>>*/ for(;;){
     var old_exit =  /*<<stdlib.ml:564:2>>*/ exit_function[1];
     let
      f_yet_to_run =  /*<<stdlib.ml:565:2>>*/ [0, 1],
      old_exit$0 = old_exit;
     var
      new_exit =
        function(param){
          /*<<stdlib.ml:566:4>>*/ if
          (caml_atomic_cas_field(f_yet_to_run, 0, 1, 0))
           /*<<stdlib.ml:566:59>>*/ caml_call1(f, 0);
          /*<<stdlib.ml:567:4>>*/ return caml_call1(old_exit$0, 0) /*<<stdlib.ml:567:15>>*/ ;
        },
      success =
         /*<<stdlib.ml:569:2>>*/ caml_atomic_cas_field
         (exit_function, 0, old_exit, new_exit),
      _f_ =  /*<<stdlib.ml:570:2>>*/ 1 - success;
     if(! _f_) return _f_;
    }
    /*<<stdlib.ml:570:31>>*/ }
   var
    do_domain_local_at_exit =
       /*<<stdlib.ml:316:34>>*/ [0,
       function(param){
         /*<<stdlib.ml:572:45>>*/ return 0;
        /*<<stdlib.ml:572:47>>*/ }];
   function do_at_exit(param){
     /*<<stdlib.ml:575:2>>*/ caml_call1(do_domain_local_at_exit[1], 0);
     /*<<stdlib.ml:575:31>>*/ return caml_call1(exit_function[1], 0) /*<<stdlib.ml:576:31>>*/ ;
   }
   function exit(retcode){
     /*<<stdlib.ml:579:2>>*/ do_at_exit(0);
     /*<<stdlib.ml:580:2>>*/ return runtime.caml_sys_exit(retcode) /*<<stdlib.ml:580:18>>*/ ;
   }
    /*<<stdlib.ml:582:8>>*/ runtime.caml_register_named_value
    ("Pervasives.do_at_exit", do_at_exit);
   var
    Stdlib =
       /*<<stdlib.ml:582:63>>*/ [0,
       invalid_arg,
       failwith,
       Exit,
       Match_failure,
       Assert_failure,
       Invalid_argument,
       Failure,
       Not_found,
       Out_of_memory,
       Stack_overflow,
       Sys_error,
       End_of_file,
       Division_by_zero,
       Sys_blocked_io,
       Undefined_recursive_module,
       min,
       max,
       abs,
       2147483647,
       -2147483648,
       lnot,
       Infinity,
       -Infinity,
       NaN,
       1.7976931348623157e+308,
       2.2250738585072014e-308,
       2.220446049250313e-16,
       caml_string_concat,
       char_of_int,
       string_of_bool,
       bool_of_string_opt,
       bool_of_string,
       string_of_int,
       int_of_string_opt,
       string_of_float,
       float_of_string_opt,
       symbol,
       stdin,
       stdout,
       stderr,
       print_char,
       print_string,
       print_bytes,
       print_int,
       print_float,
       print_endline,
       print_newline,
       prerr_char,
       prerr_string,
       prerr_bytes,
       prerr_int,
       prerr_float,
       prerr_endline,
       prerr_newline,
       read_line,
       read_int_opt,
       read_int,
       read_float_opt,
       read_float,
       open_out,
       open_out_bin,
       open_out_gen,
       caml_ml_flush,
       flush_all,
       caml_ml_output_char,
       output_string,
       output_bytes,
       output,
       output_substring,
       caml_ml_output_char,
       runtime.caml_ml_output_int,
       output_value,
       runtime.caml_ml_seek_out,
       runtime.caml_ml_pos_out,
       caml_ml_channel_size,
       close_out,
       close_out_noerr,
       caml_ml_set_binary_mode,
       open_in,
       open_in_bin,
       open_in_gen,
       caml_ml_input_char,
       input_line,
       input,
       really_input,
       really_input_string,
       caml_ml_input_char,
       runtime.caml_ml_input_int,
       runtime.caml_input_value,
       runtime.caml_ml_seek_in,
       runtime.caml_ml_pos_in,
       caml_ml_channel_size,
       caml_ml_close_channel,
       close_in_noerr,
       caml_ml_set_binary_mode,
       [0,
        runtime.caml_ml_seek_out_64,
        runtime.caml_ml_pos_out_64,
        caml_ml_channel_size_64,
        runtime.caml_ml_seek_in_64,
        runtime.caml_ml_pos_in_64,
        caml_ml_channel_size_64],
       string_of_format,
       symbol$0,
       exit,
       at_exit,
       valid_float_lexem,
       unsafe_really_input,
       do_at_exit,
       do_domain_local_at_exit];
   runtime.caml_register_global(45, Stdlib, "Stdlib");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Either
//# unitInfo: Requires: Stdlib
//# shape: Stdlib__Either:[F(1)*,F(1)*,F(1)*,F(1)*,F(1),F(1),F(1)*,F(1)*,F(2),F(2),F(3),F(3),F(1)*,F(3),F(3),F(4),F(4)]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var Stdlib = runtime.caml_get_global_data().Stdlib;
   function left(v){
     /*<<either.ml:18:13>>*/ return [0, v];
    /*<<either.ml:18:19>>*/ }
   function right(v){
     /*<<either.ml:19:14>>*/ return [1, v];
    /*<<either.ml:19:21>>*/ }
   function is_left(param){
     /*<<either.ml:21:14>>*/ return 0 === param[0] ? 1 : 0 /*<<either.ml:23:18>>*/ ;
   }
   function is_right(param){
     /*<<either.ml:25:15>>*/ return 0 === param[0] ? 0 : 1 /*<<either.ml:27:17>>*/ ;
   }
   function get_left(param){
     /*<<either.ml:29:15>>*/ if(0 !== param[0])
      /*<<either.ml:31:13>>*/ return Stdlib[1].call
             (null, "Either.t is Right _") /*<<either.ml:31:46>>*/ ;
    var v =  /*<<either.ml:29:15>>*/ param[1];
     /*<<either.ml:30:12>>*/ return v;
    /*<<either.ml:31:46>>*/ }
   function get_right(param){
     /*<<either.ml:33:16>>*/ if(0 === param[0])
      /*<<either.ml:34:12>>*/ return Stdlib[1].call
             (null, "Either.t is Left _") /*<<either.ml:35:14>>*/ ;
    var v =  /*<<either.ml:33:16>>*/ param[1];
     /*<<either.ml:35:13>>*/ return v;
    /*<<either.ml:35:14>>*/ }
   function find_left(param){
     /*<<either.ml:37:16>>*/ if(0 !== param[0])
      /*<<either.ml:39:13>>*/ return 0;
    var v =  /*<<either.ml:37:16>>*/ param[1];
     /*<<either.ml:38:12>>*/ return [0, v];
    /*<<either.ml:39:17>>*/ }
   function find_right(param){
     /*<<either.ml:41:17>>*/ if(0 === param[0])
      /*<<either.ml:42:12>>*/ return 0;
    var v =  /*<<either.ml:41:17>>*/ param[1];
     /*<<either.ml:43:13>>*/ return [0, v];
    /*<<either.ml:43:19>>*/ }
   function map_left(f, e){
     /*<<either.ml:45:13>>*/ if(0 !== e[0])  /*<<either.ml:47:18>>*/ return e;
    var v =  /*<<either.ml:45:13>>*/ e[1];
     /*<<either.ml:46:17>>*/ return [0, caml_call1(f, v)] /*<<either.ml:46:22>>*/ ;
    /*<<either.ml:47:19>>*/ }
   function map_right(f, e){
     /*<<either.ml:49:14>>*/ if(0 === e[0])  /*<<either.ml:50:17>>*/ return e;
    var v =  /*<<either.ml:49:14>>*/ e[1];
     /*<<either.ml:51:19>>*/ return [1, caml_call1(f, v)] /*<<either.ml:51:24>>*/ ;
   }
   function map(left, right, param){
     /*<<either.ml:53:8>>*/ if(0 === param[0]){
     var v = param[1];
      /*<<either.ml:54:17>>*/ return [0, caml_call1(left, v)] /*<<either.ml:54:25>>*/ ;
    }
    var v$0 =  /*<<either.ml:53:8>>*/ param[1];
     /*<<either.ml:55:19>>*/ return [1, caml_call1(right, v$0)] /*<<either.ml:55:28>>*/ ;
   }
   function fold(left, right, param){
     /*<<either.ml:57:9>>*/ if(0 === param[0]){
     var v = param[1];
      /*<<either.ml:58:12>>*/ return caml_call1(left, v) /*<<either.ml:59:20>>*/ ;
    }
    var v$0 =  /*<<either.ml:57:9>>*/ param[1];
     /*<<either.ml:59:13>>*/ return caml_call1(right, v$0) /*<<either.ml:59:20>>*/ ;
   }
   function retract(param){
     /*<<either.ml:61:14>>*/ if(0 === param[0]){
     var v = param[1];
      /*<<either.ml:62:12>>*/ return v;
    }
    var v$0 =  /*<<either.ml:61:14>>*/ param[1];
     /*<<either.ml:63:13>>*/ return v$0;
    /*<<either.ml:63:14>>*/ }
   function equal(left, right, e1, e2){
     /*<<either.ml:69:31>>*/ if(0 === e1[0]){
     var v1 = e1[1];
     if(0 === e2[0]){
      var v2 = e2[1];
       /*<<either.ml:70:22>>*/ return caml_call2(left, v1, v2) /*<<either.ml:72:44>>*/ ;
     }
    }
    else{
     var v1$0 =  /*<<either.ml:69:31>>*/ e1[1];
     if(0 !== e2[0]){
      var v2$0 = e2[1];
       /*<<either.ml:71:24>>*/ return caml_call2(right, v1$0, v2$0) /*<<either.ml:72:44>>*/ ;
     }
    }
     /*<<either.ml:72:39>>*/ return 0;
    /*<<either.ml:72:44>>*/ }
   function compare(left, right, e1, e2){
     /*<<either.ml:74:33>>*/ if(0 === e1[0]){
     var v1 = e1[1];
     if(0 !== e2[0])  /*<<either.ml:77:21>>*/ return -1;
     var v2 =  /*<<either.ml:74:33>>*/ e2[1];
      /*<<either.ml:75:22>>*/ return caml_call2(left, v1, v2) /*<<either.ml:78:22>>*/ ;
    }
    var v1$0 =  /*<<either.ml:74:33>>*/ e1[1];
    if(0 === e2[0])  /*<<either.ml:78:21>>*/ return 1;
    var v2$0 =  /*<<either.ml:74:33>>*/ e2[1];
     /*<<either.ml:76:24>>*/ return caml_call2(right, v1$0, v2$0) /*<<either.ml:78:22>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (3,
     [0,
      left,
      right,
      is_left,
      is_right,
      get_left,
      get_right,
      find_left,
      find_right,
      map_left,
      map_right,
      map,
      fold,
      retract,
      fold,
      fold,
      equal,
      compare],
     "Stdlib__Either");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Sys
//# unitInfo: Requires: Stdlib
//# shape: Stdlib__Sys:[N,F(1),N,N,N,[N],N,N,N,N,N,N,N,N,N,F(2)*,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,F(1),F(1),F(1),N,F(1)*,N,N,N,F(1),F(1),[F(2)*]]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    Stdlib = runtime.caml_get_global_data().Stdlib,
    executable_name =
       /*<<sys.ml.in:36:22>>*/ runtime.caml_sys_executable_name(0),
    os_type =  /*<<sys.ml.in:37:22>>*/ runtime.caml_sys_get_config(0)[1],
    unix =  /*<<sys.ml.in:37:34>>*/ runtime.caml_sys_const_ostype_unix(0),
    win32 = runtime.caml_sys_const_ostype_win32(0),
    cygwin = runtime.caml_sys_const_ostype_cygwin(0),
    max_array_length = runtime.caml_sys_const_max_wosize(0),
    max_floatarray_length = max_array_length / 2 | 0,
    max_string_length = (4 * max_array_length | 0) - 1 | 0,
    io_buffer_size =
       /*<<sys.ml.in:70:21>>*/ runtime.caml_sys_io_buffer_size(0);
   function set_signal(sig_num, sig_beh){ /*<<sys.ml.in:84:63>>*/ return 0;}
   function signal_to_string(s){
     /*<<sys.ml.in:118:2>>*/ if(s === -1)
      /*<<sys.ml.in:118:22>>*/ return "SIGABRT";
     /*<<sys.ml.in:119:7>>*/ if(s === -2)
      /*<<sys.ml.in:119:27>>*/ return "SIGALRM";
     /*<<sys.ml.in:120:7>>*/ if(s === -3)
      /*<<sys.ml.in:120:26>>*/ return "SIGFPE";
     /*<<sys.ml.in:121:7>>*/ if(s === -4)
      /*<<sys.ml.in:121:26>>*/ return "SIGHUP";
     /*<<sys.ml.in:122:7>>*/ if(s === -5)
      /*<<sys.ml.in:122:26>>*/ return "SIGILL";
     /*<<sys.ml.in:123:7>>*/ if(s === -6)
      /*<<sys.ml.in:123:26>>*/ return "SIGINT";
     /*<<sys.ml.in:124:7>>*/ if(s === -7)
      /*<<sys.ml.in:124:27>>*/ return "SIGKILL";
     /*<<sys.ml.in:125:7>>*/ if(s === -8)
      /*<<sys.ml.in:125:27>>*/ return "SIGPIPE";
     /*<<sys.ml.in:126:7>>*/ if(s === -9)
      /*<<sys.ml.in:126:27>>*/ return "SIGQUIT";
     /*<<sys.ml.in:127:7>>*/ if(s === -10)
      /*<<sys.ml.in:127:27>>*/ return "SIGSEGV";
     /*<<sys.ml.in:128:7>>*/ if(s === -11)
      /*<<sys.ml.in:128:27>>*/ return "SIGTERM";
     /*<<sys.ml.in:129:7>>*/ if(s === -12)
      /*<<sys.ml.in:129:27>>*/ return "SIGUSR1";
     /*<<sys.ml.in:130:7>>*/ if(s === -13)
      /*<<sys.ml.in:130:27>>*/ return "SIGUSR2";
     /*<<sys.ml.in:131:7>>*/ if(s === -14)
      /*<<sys.ml.in:131:27>>*/ return "SIGCHLD";
     /*<<sys.ml.in:132:7>>*/ if(s === -15)
      /*<<sys.ml.in:132:27>>*/ return "SIGCONT";
     /*<<sys.ml.in:133:7>>*/ if(s === -16)
      /*<<sys.ml.in:133:27>>*/ return "SIGSTOP";
     /*<<sys.ml.in:134:7>>*/ if(s === -17)
      /*<<sys.ml.in:134:27>>*/ return "SIGTSTP";
     /*<<sys.ml.in:135:7>>*/ if(s === -18)
      /*<<sys.ml.in:135:27>>*/ return "SIGTTIN";
     /*<<sys.ml.in:136:7>>*/ if(s === -19)
      /*<<sys.ml.in:136:27>>*/ return "SIGTTOU";
     /*<<sys.ml.in:137:7>>*/ if(s === -20)
      /*<<sys.ml.in:137:29>>*/ return "SIGVTALRM";
     /*<<sys.ml.in:138:7>>*/ if(s === -21)
      /*<<sys.ml.in:138:27>>*/ return "SIGPROF";
     /*<<sys.ml.in:139:7>>*/ if(s === -22)
      /*<<sys.ml.in:139:26>>*/ return "SIGBUS";
     /*<<sys.ml.in:140:7>>*/ if(s === -23)
      /*<<sys.ml.in:140:27>>*/ return "SIGPOLL";
     /*<<sys.ml.in:141:7>>*/ if(s === -24)
      /*<<sys.ml.in:141:26>>*/ return "SIGSYS";
     /*<<sys.ml.in:142:7>>*/ if(s === -25)
      /*<<sys.ml.in:142:27>>*/ return "SIGTRAP";
     /*<<sys.ml.in:143:7>>*/ if(s === -26)
      /*<<sys.ml.in:143:26>>*/ return "SIGURG";
     /*<<sys.ml.in:144:7>>*/ if(s === -27)
      /*<<sys.ml.in:144:27>>*/ return "SIGXCPU";
     /*<<sys.ml.in:145:7>>*/ if(s === -28)
      /*<<sys.ml.in:145:27>>*/ return "SIGXFSZ";
     /*<<sys.ml.in:146:7>>*/ if(s === -29)
      /*<<sys.ml.in:146:25>>*/ return "SIGIO";
     /*<<sys.ml.in:147:7>>*/ if(s === -30)
      /*<<sys.ml.in:147:28>>*/ return "SIGWINCH";
     /*<<sys.ml.in:148:7>>*/ if(s < -30)
      /*<<sys.ml.in:148:28>>*/ return Stdlib[1].call
             (null, "Sys.signal_to_string") /*<<sys.ml.in:149:37>>*/ ;
    var
     _a_ =  /*<<sys.ml.in:149:16>>*/ Stdlib[33].call(null, s),
     _b_ = Stdlib[28].call(null, _a_, ")");
     /*<<sys.ml.in:149:37>>*/ return Stdlib[28].call(null, "SIG(", _b_);
   }
   function signal_of_int(i){
     /*<<sys.ml.in:157:2>>*/ return 0 <= i
            ?  /*<<sys.ml.in:158:7>>*/ runtime.caml_sys_rev_convert_signal_number
              (i)
            :  /*<<sys.ml.in:157:16>>*/ Stdlib
               [1].call
              (null, "Sys.signal_of_int") /*<<sys.ml.in:158:34>>*/ ;
   }
   function signal_to_int(i){
     /*<<sys.ml.in:161:2>>*/ return i < -30
            ?  /*<<sys.ml.in:161:23>>*/ Stdlib
               [1].call
              (null, "Sys.signal_to_int")
            :  /*<<sys.ml.in:162:7>>*/ runtime.caml_sys_convert_signal_number
              (i) /*<<sys.ml.in:162:30>>*/ ;
   }
   var
    Break =
       /*<<sys.ml.in:70:38>>*/ [248,
       "Stdlib.Sys.Break",
       runtime.caml_fresh_oo_id(0)];
   function catch_break(on){
     /*<<sys.ml.in:167:2>>*/ return on ? 0 : 0 /*<<sys.ml.in:170:36>>*/ ;
   }
   function Make(Immediate, Non_immediate){
     /*<<sys.ml.in:224:8>>*/ return [0, 1];
   }
   var
    Stdlib_Sys =
       /*<<sys.ml.in:70:38>>*/ [0,
       executable_name,
       runtime.caml_sys_getenv_opt,
       io_buffer_size,
       [0, 0],
       os_type,
       [0, "js_of_ocaml"],
       unix,
       win32,
       cygwin,
       32,
       32,
       0,
       max_string_length,
       max_array_length,
       max_floatarray_length,
       set_signal,
       -1,
       -2,
       -3,
       -4,
       -5,
       -6,
       -7,
       -8,
       -9,
       -10,
       -11,
       -12,
       -13,
       -14,
       -15,
       -16,
       -17,
       -18,
       -19,
       -20,
       -21,
       -22,
       -23,
       -24,
       -25,
       -26,
       -27,
       -28,
       -29,
       -30,
       signal_to_string,
       signal_of_int,
       signal_to_int,
       Break,
       catch_break,
       "5.4.0",
       0,
       [0, 5, 4, 0, 0],
       runtime.caml_ml_enable_runtime_warnings,
       runtime.caml_ml_runtime_warnings_enabled,
       [0, Make]];
   runtime.caml_register_global(39, Stdlib_Sys, "Stdlib__Sys");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Obj
//# unitInfo: Requires: Stdlib, Stdlib__Sys
//# shape: Stdlib__Obj:[F(1)*,F(2),F(3),N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,[F(1),F(1)*,F(1)*],N]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_check_bound = runtime.caml_check_bound,
    caml_obj_tag = runtime.caml_obj_tag,
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Sys = global_data.Stdlib__Sys;
   function is_block(a){
     /*<<obj.ml:26:34>>*/ return 1 - (typeof a === "number");
    /*<<obj.ml:26:48>>*/ }
   function double_field(x, i){
     /*<<obj.ml:35:40>>*/ return caml_check_bound(x, i)[i + 1] /*<<obj.ml:35:77>>*/ ;
   }
   function set_double_field(x, i, v){
     /*<<obj.ml:37:2>>*/ caml_check_bound(x, i)[i + 1] = v;
     /*<<obj.ml:37:41>>*/ return 0;
   }
   function of_val(x){
    var
     slot =
        /*<<obj.ml:77:9>>*/ is_block(x)
        ?  /*<<obj.ml:77:25>>*/ caml_obj_tag
           (x)
          !== 248
          ? 1 <= x.length - 1 ? x[1] : x
          : x
        : x,
     cst_Obj_extension_constructor =  /*<<?>>*/ "Obj.extension_constructor";
    a:
    {
      /*<<obj.ml:81:9>>*/ if
      (is_block(slot) &&  /*<<obj.ml:81:28>>*/ caml_obj_tag(slot) === 248){var name =  /*<<obj.ml:81:69>>*/ slot[1]; break a;}
     var
      name =
         /*<<obj.ml:82:50>>*/  /*<<obj.ml:82:11>>*/ Stdlib[1].call
         (null, cst_Obj_extension_constructor);
    }
     /*<<obj.ml:84:9>>*/ return caml_obj_tag(name) === 252
            ? slot
            :  /*<<obj.ml:85:11>>*/ Stdlib
               [1].call
              (null, cst_Obj_extension_constructor) /*<<obj.ml:85:50>>*/ ;
   }
   function name(slot){ /*<<obj.ml:88:30>>*/ return slot[1];}
   function id(slot){ /*<<obj.ml:91:30>>*/ return slot[2];}
   var max_ephe_length =  /*<<?>>*/ Stdlib_Sys[14] - 2 | 0;
   function create(l){
    var
     _d_ =  /*<<obj.ml:105:4>>*/ 0 <= l,
     _e_ = _d_ ? l <= max_ephe_length : _d_;
    if(1 - _e_)
      /*<<obj.ml:106:6>>*/ Stdlib[1].call(null, "Obj.Ephemeron.create");
     /*<<obj.ml:107:4>>*/ return runtime.caml_ephe_create(l) /*<<obj.ml:107:12>>*/ ;
   }
   function length(x){
     /*<<obj.ml:109:17>>*/ return x.length - 3 | 0;
    /*<<obj.ml:109:49>>*/ }
   function raise_if_invalid_offset(e, o, msg){
    var
     _b_ =  /*<<obj.ml:112:4>>*/ 0 <= o,
     _d_ = _b_ ? o <  /*<<obj.ml:112:26>>*/ length(e) : _b_,
     _c_ =  /*<<obj.ml:112:4>>*/ 1 - _d_;
    return _c_ ?  /*<<obj.ml:113:6>>*/ Stdlib[1].call(null, msg) : _c_ /*<<obj.ml:113:21>>*/ ;
   }
   function get_key(e, o){
     /*<<obj.ml:117:4>>*/ raise_if_invalid_offset
     (e, o, "Obj.Ephemeron.get_key");
     /*<<obj.ml:118:4>>*/ return runtime.caml_ephe_get_key(e, o) /*<<obj.ml:118:15>>*/ ;
   }
   function get_key_copy(e, o){
     /*<<obj.ml:122:4>>*/ raise_if_invalid_offset
     (e, o, "Obj.Ephemeron.get_key_copy");
     /*<<obj.ml:123:4>>*/ return runtime.caml_ephe_get_key_copy(e, o) /*<<obj.ml:123:20>>*/ ;
   }
   function set_key(e, o, x){
     /*<<obj.ml:127:4>>*/ raise_if_invalid_offset
     (e, o, "Obj.Ephemeron.set_key");
     /*<<obj.ml:128:4>>*/ return runtime.caml_ephe_set_key(e, o, x) /*<<obj.ml:128:17>>*/ ;
   }
   function unset_key(e, o){
     /*<<obj.ml:132:4>>*/ raise_if_invalid_offset
     (e, o, "Obj.Ephemeron.unset_key");
     /*<<obj.ml:133:4>>*/ return runtime.caml_ephe_unset_key(e, o) /*<<obj.ml:133:17>>*/ ;
   }
   function check_key(e, o){
     /*<<obj.ml:137:4>>*/ raise_if_invalid_offset
     (e, o, "Obj.Ephemeron.check_key");
     /*<<obj.ml:138:4>>*/ return runtime.caml_ephe_check_key(e, o) /*<<obj.ml:138:17>>*/ ;
   }
   function blit_key(e1, o1, e2, o2, l){
     /*<<obj.ml:144:4>>*/ if
     (0 <= l
      &&
       0 <= o1
       &&
        ( /*<<obj.ml:144:31>>*/ length(e1) - l | 0) >= o1
        && 0 <= o2 && ( /*<<obj.ml:145:25>>*/ length(e2) - l | 0) >= o2){
     var
      _a_ =  /*<<obj.ml:147:9>>*/ 0 !== l ? 1 : 0,
      _b_ =
        _a_
         ?  /*<<obj.ml:147:24>>*/ runtime.caml_ephe_blit_key
           (e1, o1, e2, o2, l)
         : _a_;
      /*<<obj.ml:147:9>>*/ return _b_;
    }
     /*<<obj.ml:146:9>>*/ return Stdlib[1].call
            (null, "Obj.Ephemeron.blit_key") /*<<obj.ml:147:46>>*/ ;
   }
   var
    Stdlib_Obj =
       /*<<?>>*/ [0,
       is_block,
       double_field,
       set_double_field,
       0,
       243,
       244,
       245,
       246,
       247,
       248,
       249,
       250,
       251,
       251,
       252,
       253,
       254,
       255,
       1000,
       1001,
       1002,
       [0, of_val, name, id],
       [0,
        create,
        length,
        get_key,
        get_key_copy,
        set_key,
        unset_key,
        check_key,
        blit_key,
        runtime.caml_ephe_get_data,
        runtime.caml_ephe_get_data_copy,
        runtime.caml_ephe_set_data,
        runtime.caml_ephe_unset_data,
        runtime.caml_ephe_check_data,
        runtime.caml_ephe_blit_data,
        max_ephe_length]];
   runtime.caml_register_global(11, Stdlib_Obj, "Stdlib__Obj");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Type
//# unitInfo: Requires: Stdlib__Obj
//# shape: Stdlib__Type:[[F(1)*,F(1)*,F(2)*]]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    Stdlib_Obj = runtime.caml_get_global_data().Stdlib__Obj;
   function make(param){
    var Id =  /*<<type.ml:32:4>>*/ [248, "Id", runtime.caml_fresh_oo_id(0)];
    return [0, Id];
    /*<<type.ml:32:57>>*/ }
   function uid(A){
     /*<<type.ml:35:4>>*/ return Stdlib_Obj[22][3].call(null, A[1]) /*<<type.ml:35:62>>*/ ;
   }
   var _a_ =  /*<<?>>*/ [0, 0];
   function provably_equal(A, B){
     /*<<type.ml:40:4>>*/ return A[1] === B[1] ? _a_ : 0 /*<<type.ml:40:50>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (3, [0, [0, make, uid, provably_equal]], "Stdlib__Type");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Atomic
//# shape: Stdlib__Atomic:[F(1)*,F(1),F(1)*,F(2),F(2),F(3),F(2),F(1),F(1),[F(2),F(1),F(1)]]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_atomic_exchange_field = runtime.caml_atomic_exchange_field,
    caml_atomic_fetch_add_field = runtime.caml_atomic_fetch_add_field;
   function set(t, v){
     /*<<atomic.ml:26:4>>*/ caml_atomic_exchange_field(t[1], t[2], v);
    return 0;
    /*<<atomic.ml:26:25>>*/ }
   function incr(t){
     /*<<atomic.ml:28:4>>*/ caml_atomic_fetch_add_field(t[1], t[2], 1);
    return 0;
    /*<<atomic.ml:28:30>>*/ }
   function decr(t){
     /*<<atomic.ml:30:4>>*/ caml_atomic_fetch_add_field(t[1], t[2], -1);
    return 0;
    /*<<atomic.ml:30:33>>*/ }
   function make(v){
     /*<<atomic.ml:38:2>>*/ return [0, v];
    /*<<atomic.ml:38:18>>*/ }
   function get(t){
     /*<<atomic.ml:43:2>>*/ return t[1];
    /*<<atomic.ml:43:12>>*/ }
   function set$0(t, v){
     /*<<atomic.ml:45:2>>*/ caml_atomic_exchange_field(t, 0, v);
    return 0;
    /*<<atomic.ml:45:17>>*/ }
   function exchange(t, v){
     /*<<atomic.ml:48:2>>*/ return caml_atomic_exchange_field(t, 0, v) /*<<atomic.ml:48:41>>*/ ;
   }
   function compare_and_set(t, old, new$){
     /*<<atomic.ml:50:2>>*/ return runtime.caml_atomic_cas_field
            (t, 0, old, new$) /*<<atomic.ml:50:55>>*/ ;
   }
   function fetch_and_add(t, incr){
     /*<<atomic.ml:52:2>>*/ return caml_atomic_fetch_add_field(t, 0, incr) /*<<atomic.ml:52:49>>*/ ;
   }
   function incr$0(t){
     /*<<atomic.ml:54:2>>*/ return incr([0, t, 0]) /*<<atomic.ml:54:35>>*/ ;
   }
   function decr$0(t){
     /*<<atomic.ml:56:2>>*/ return decr([0, t, 0]) /*<<atomic.ml:56:35>>*/ ;
   }
   var
    Stdlib_Atomic =
       /*<<?>>*/ [0,
       make,
       runtime.caml_atomic_make_contended,
       get,
       set$0,
       exchange,
       compare_and_set,
       fetch_and_add,
       incr$0,
       decr$0,
       [0, set, incr, decr]];
   runtime.caml_register_global(0, Stdlib_Atomic, "Stdlib__Atomic");
   return;
  }
  (globalThis));

//# unitInfo: Provides: CamlinternalLazy
//# unitInfo: Requires: Stdlib, Stdlib__Obj
//# shape: CamlinternalLazy:[N,F(1),F(2),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_lazy_update_to_forward = runtime.caml_lazy_update_to_forward,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_obj_tag = runtime.caml_obj_tag,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    Stdlib_Obj = runtime.caml_get_global_data().Stdlib__Obj,
    Undefined =
      [248, "CamlinternalLazy.Undefined", runtime.caml_fresh_oo_id(0)];
   function force_gen_lazy_block(only_val, blk){
     /*<<camlinternalLazy.ml:72:8>>*/ if
     (0 !== runtime.caml_lazy_update_to_forcing(blk))
      /*<<camlinternalLazy.ml:75:9>>*/ throw caml_maybe_attach_backtrace
            (Undefined, 1);
     /*<<camlinternalLazy.ml:73:11>>*/ if(only_val){
     var closure$0 =  /*<<camlinternalLazy.ml:61:25>>*/ blk[1];
      /*<<camlinternalLazy.ml:62:2>>*/ blk[1] = 0;
     var
      result$0 =  /*<<camlinternalLazy.ml:63:15>>*/ caml_call1(closure$0, 0);
      /*<<camlinternalLazy.ml:64:2>>*/ blk[1] = result$0;
      /*<<camlinternalLazy.ml:65:2>>*/ caml_lazy_update_to_forward(blk);
      /*<<camlinternalLazy.ml:65:21>>*/ return result$0;
    }
    var closure =  /*<<camlinternalLazy.ml:46:25>>*/ blk[1];
     /*<<camlinternalLazy.ml:47:2>>*/ blk[1] = 0;
     /*<<camlinternalLazy.ml:47:33>>*/ try{
     var result =  /*<<camlinternalLazy.ml:49:17>>*/ caml_call1(closure, 0);
      /*<<camlinternalLazy.ml:50:4>>*/ blk[1] = result;
      /*<<camlinternalLazy.ml:51:4>>*/ caml_lazy_update_to_forward(blk);
     return result;
    }
    catch(e$0){
     var e =  /*<<?>>*/ caml_wrap_exception(e$0);
      /*<<camlinternalLazy.ml:54:4>>*/ blk[1] =
      function(param){
        /*<<camlinternalLazy.ml:54:43>>*/ throw caml_maybe_attach_backtrace
              (e, 0);
       /*<<camlinternalLazy.ml:54:50>>*/ };
      /*<<camlinternalLazy.ml:55:4>>*/ runtime.caml_lazy_reset_to_lazy(blk);
      /*<<camlinternalLazy.ml:55:19>>*/ throw caml_maybe_attach_backtrace
            (e, 0);
    }
    /*<<camlinternalLazy.ml:75:24>>*/ }
   function force_lazy_block(blk){
     /*<<camlinternalLazy.ml:78:27>>*/ return force_gen_lazy_block(0, blk) /*<<camlinternalLazy.ml:78:67>>*/ ;
   }
   function force_gen(only_val, lzv){
    var t =  /*<<camlinternalLazy.ml:99:10>>*/ caml_obj_tag(lzv);
     /*<<camlinternalLazy.ml:100:2>>*/ if(t === Stdlib_Obj[12])
      /*<<camlinternalLazy.ml:101:28>>*/ return lzv[1];
     /*<<camlinternalLazy.ml:103:7>>*/ if(t === Stdlib_Obj[6])
      /*<<camlinternalLazy.ml:103:35>>*/ throw caml_maybe_attach_backtrace
            (Undefined, 1);
     /*<<camlinternalLazy.ml:104:7>>*/ return t !== Stdlib_Obj[8]
            ? lzv
            :  /*<<camlinternalLazy.ml:105:7>>*/ force_gen_lazy_block
              (only_val, lzv) /*<<camlinternalLazy.ml:105:41>>*/ ;
   }
   function indirect(lzv){
    var t =  /*<<camlinternalLazy.ml:117:10>>*/ caml_obj_tag(lzv);
     /*<<camlinternalLazy.ml:118:2>>*/ if
     (t !== Stdlib_Obj[8] && t !== Stdlib_Obj[6])
      /*<<camlinternalLazy.ml:120:7>>*/ return lzv;
     /*<<camlinternalLazy.ml:119:7>>*/ return [246,
            function(_a_){ /*<<?>>*/ return force_lazy_block(lzv);}] /*<<camlinternalLazy.ml:119:7>>*/ ;
    /*<<camlinternalLazy.ml:120:10>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (2,
     [0, Undefined, force_lazy_block, force_gen, indirect],
     "CamlinternalLazy");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Lazy
//# unitInfo: Requires: CamlinternalLazy, Stdlib, Stdlib__Obj
//# shape: Stdlib__Lazy:[N,F(2)*,F(1),F(1),F(2),F(1),F(1)]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime, caml_obj_tag = runtime.caml_obj_tag;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    CamlinternalLazy = global_data.CamlinternalLazy,
    Stdlib_Obj = global_data.Stdlib__Obj,
    Undefined = CamlinternalLazy[1];
   function force_val(l){
     /*<<lazy.ml:56:18>>*/ return CamlinternalLazy[3].call(null, 1, l) /*<<lazy.ml:56:61>>*/ ;
   }
   function from_fun(f){
    var x =  /*<<lazy.ml:59:10>>*/ runtime.caml_obj_block(Stdlib_Obj[8], 1);
     /*<<lazy.ml:60:2>>*/ x[1] = f;
     /*<<lazy.ml:60:32>>*/ return x;
    /*<<lazy.ml:61:22>>*/ }
   function from_val(v){
    var t =  /*<<lazy.ml:64:10>>*/ caml_obj_tag(v);
     /*<<lazy.ml:65:2>>*/ if
     (t !== Stdlib_Obj[12]
      && t !== Stdlib_Obj[8] && t !== Stdlib_Obj[6] && t !== Stdlib_Obj[16])
      /*<<lazy.ml:69:5>>*/ return v;
     /*<<lazy.ml:66:52>>*/ return runtime.caml_lazy_make_forward(v) /*<<lazy.ml:70:5>>*/ ;
   }
   function is_val(l){
    var _d_ =  /*<<lazy.ml:72:26>>*/ Stdlib_Obj[8];
    return caml_obj_tag(l) !== _d_ ? 1 : 0 /*<<lazy.ml:72:46>>*/ ;
    /*<<lazy.ml:72:62>>*/ }
   function map(f, x){
     /*<<lazy.ml:75:2>>*/ return [246,
            function(param){
             var _c_ =  /*<<?>>*/ caml_obj_tag(x);
             a:
             if(250 === _c_)
              var _d_ = x[1];
             else{
              if(246 !== _c_ && 244 !== _c_){var _d_ = x; break a;}
              var _d_ = CamlinternalLazy[2].call(null, x);
             }
             return caml_call1(f, _d_);
            }] /*<<lazy.ml:75:2>>*/ ;
    /*<<lazy.ml:75:20>>*/ }
   function map_val(f, x){
     /*<<lazy.ml:78:5>>*/ if(! is_val(x))
      /*<<lazy.ml:80:7>>*/ return [246,
             function(param){
              var _b_ =  /*<<?>>*/ caml_obj_tag(x);
              a:
              if(250 === _b_)
               var _c_ = x[1];
              else{
               if(246 !== _b_ && 244 !== _b_){var _c_ = x; break a;}
               var _c_ = CamlinternalLazy[2].call(null, x);
              }
              return caml_call1(f, _c_);
             }] /*<<lazy.ml:80:7>>*/ ;
    var _a_ =  /*<<lazy.ml:79:7>>*/ caml_obj_tag(x);
    a:
    if(250 === _a_)
     var _b_ = x[1];
    else{
     if(246 !== _a_ && 244 !== _a_){var _b_ = x; break a;}
     var _b_ = CamlinternalLazy[2].call(null, x);
    }
     /*<<lazy.ml:79:16>>*/ return  /*<<lazy.ml:79:29>>*/ from_val
            ( /*<<lazy.ml:79:16>>*/ caml_call1(f, _b_)) /*<<lazy.ml:80:25>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (2,
     [0, Undefined, map, is_val, from_val, map_val, from_fun, force_val],
     "Stdlib__Lazy");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Seq
//# unitInfo: Requires: CamlinternalLazy, Stdlib, Stdlib__Atomic, Stdlib__Lazy
//# shape: Stdlib__Seq:[F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(4),F(3),F(3),F(3),F(3),F(1)*,F(2)*,F(3)*,F(2)*,F(2),F(3),F(2)*,F(2),F(2),F(2)*->F(1)*,F(3),F(2)*->F(1),F(3),F(3),F(3),F(3)*->F(1)*,F(2),F(2),F(3),F(3),F(3),F(1)->F(1),N,F(1)*->F(1),F(2),F(3),F(2),F(3),F(3),F(3),F(4),F(3),F(4),F(2)*,F(3)*->F(1),F(1)*,F(1)*,F(2)*,F(2)*,F(1)*->F(1),F(1)*->F(1),F(2)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Assert_failure = global_data.Assert_failure,
    Stdlib_Atomic = global_data.Stdlib__Atomic,
    CamlinternalLazy = global_data.CamlinternalLazy,
    Stdlib = global_data.Stdlib,
    Stdlib_Lazy = global_data.Stdlib__Lazy;
   function empty(param){
     /*<<seq.ml:24:15>>*/ return 0;
    /*<<seq.ml:24:18>>*/ }
   function return$(x, param){
     /*<<seq.ml:26:18>>*/ return [0, x, empty];
    /*<<seq.ml:26:33>>*/ }
   function cons(x, next, param){
     /*<<seq.ml:28:21>>*/ return [0, x, next];
    /*<<seq.ml:28:35>>*/ }
   function singleton(x, param){
     /*<<seq.ml:30:21>>*/ return [0, x, empty];
    /*<<seq.ml:30:36>>*/ }
   function append(seq1, seq2, param){
    var match =  /*<<seq.ml:33:8>>*/ caml_call1(seq1, 0);
     /*<<seq.ml:33:14>>*/ if(! match)
      /*<<seq.ml:34:11>>*/ return caml_call1(seq2, 0) /*<<seq.ml:35:48>>*/ ;
    var next =  /*<<seq.ml:33:14>>*/ match[2], x = match[1];
     /*<<seq.ml:35:47>>*/ return [0,
            x,
            function(_n_){
              /*<<seq.ml:35:31>>*/ return append(next, seq2, _n_);
            }] /*<<seq.ml:35:47>>*/ ;
    /*<<seq.ml:35:48>>*/ }
   function map(f, seq, param){
    var match =  /*<<seq.ml:37:29>>*/ caml_call1(seq, 0);
     /*<<seq.ml:37:34>>*/ if(! match)  /*<<seq.ml:38:11>>*/ return 0;
    var next =  /*<<seq.ml:37:34>>*/ match[2], x = match[1];
     /*<<seq.ml:39:28>>*/ return [0,
            caml_call1(f, x),
            function(_n_){ /*<<seq.ml:39:33>>*/ return map(f, next, _n_);}] /*<<seq.ml:39:31>>*/ ;
    /*<<seq.ml:39:44>>*/ }
   function filter_map(f, seq$0, param){
    var seq =  /*<<seq.ml:41:30>>*/ seq$0;
    for(;;){
     var match =  /*<<seq.ml:41:36>>*/ caml_call1(seq, 0);
      /*<<seq.ml:41:41>>*/ if(! match)  /*<<seq.ml:42:11>>*/ return 0;
     var
      next =  /*<<seq.ml:41:41>>*/ match[2],
      x = match[1],
      match$0 =  /*<<seq.ml:44:12>>*/ caml_call1(f, x);
      /*<<seq.ml:44:15>>*/ if(match$0) break;
     seq = next;
    }
    var y =  /*<<seq.ml:41:30>>*/ match$0[1];
     /*<<seq.ml:46:46>>*/ return [0,
            y,
            function(_n_){
              /*<<seq.ml:46:29>>*/ return filter_map(f, next, _n_);
            }] /*<<seq.ml:46:46>>*/ ;
    /*<<seq.ml:46:47>>*/ }
   function filter(f, seq$0, param){
    var seq =  /*<<seq.ml:48:26>>*/ seq$0;
    for(;;){
     var match =  /*<<seq.ml:48:32>>*/ caml_call1(seq, 0);
      /*<<seq.ml:48:37>>*/ if(! match)  /*<<seq.ml:49:11>>*/ return 0;
     var next =  /*<<seq.ml:48:37>>*/ match[2], x = match[1];
      /*<<seq.ml:51:9>>*/ if(caml_call1(f, x)) break;
      /*<<seq.ml:51:12>>*/ seq = next;
    }
     /*<<seq.ml:52:33>>*/ return [0,
            x,
            function(_n_){ /*<<seq.ml:52:20>>*/ return filter(f, next, _n_);}] /*<<seq.ml:52:33>>*/ ;
    /*<<seq.ml:53:27>>*/ }
   function filteri_aux(f, i$1, seq$0, param){
    var i =  /*<<seq.ml:55:33>>*/ i$1, seq = seq$0;
    for(;;){
     var match =  /*<<seq.ml:55:39>>*/ caml_call1(seq, 0);
      /*<<seq.ml:55:44>>*/ if(! match)  /*<<seq.ml:56:11>>*/ return 0;
     var
      next =  /*<<seq.ml:55:44>>*/ match[2],
      x = match[1],
      i$0 =  /*<<seq.ml:58:6>>*/ i + 1 | 0;
      /*<<seq.ml:59:9>>*/ if(caml_call2(f, i, x)) break;
      /*<<seq.ml:59:14>>*/ i = i$0;
     seq = next;
    }
     /*<<seq.ml:60:41>>*/ return [0,
            x,
            function(_n_){
              /*<<seq.ml:60:20>>*/ return filteri_aux(f, i$0, next, _n_);
            }] /*<<seq.ml:60:41>>*/ ;
    /*<<seq.ml:61:35>>*/ }
   function filteri(f, seq, param){
     /*<<seq.ml:64:2>>*/ return filteri_aux(f, 0, seq, 0) /*<<seq.ml:64:24>>*/ ;
   }
   function concat(seq, param){
    var match =  /*<<seq.ml:66:30>>*/ caml_call1(seq, 0);
     /*<<seq.ml:66:36>>*/ if(! match)  /*<<seq.ml:67:11>>*/ return 0;
    var next =  /*<<seq.ml:66:36>>*/ match[2], x = match[1];
     /*<<seq.ml:69:27>>*/ return append
            (x,
             function(_n_){ /*<<seq.ml:69:14>>*/ return concat(next, _n_);},
             0) /*<<seq.ml:69:30>>*/ ;
   }
   function flat_map(f, seq, param){
    var match =  /*<<seq.ml:71:34>>*/ caml_call1(seq, 0);
     /*<<seq.ml:71:40>>*/ if(! match)  /*<<seq.ml:72:11>>*/ return 0;
    var next =  /*<<seq.ml:71:40>>*/ match[2], x = match[1];
     /*<<seq.ml:74:11>>*/ return  /*<<seq.ml:74:16>>*/ append
            ( /*<<seq.ml:74:11>>*/ caml_call1(f, x),
             function(_n_){
               /*<<seq.ml:74:17>>*/ return flat_map(f, next, _n_);
             },
             0) /*<<seq.ml:74:37>>*/ ;
   }
   function fold_left(f, acc$1, seq$0){
    var acc =  /*<<seq.ml:79:2>>*/ acc$1, seq = seq$0;
    for(;;){
     var match =  /*<<seq.ml:79:8>>*/ caml_call1(seq, 0);
      /*<<seq.ml:79:14>>*/ if(! match)  /*<<seq.ml:80:13>>*/ return acc;
     var
      next =  /*<<seq.ml:79:14>>*/ match[2],
      x = match[1],
      acc$0 =  /*<<seq.ml:82:18>>*/ caml_call2(f, acc, x);
      /*<<seq.ml:83:8>>*/ acc = acc$0;
     seq = next;
    }
    /*<<seq.ml:83:28>>*/ }
   function iter(f, seq$0){
    var seq =  /*<<seq.ml:86:2>>*/ seq$0;
    for(;;){
     var match =  /*<<seq.ml:86:8>>*/ caml_call1(seq, 0);
      /*<<seq.ml:86:14>>*/ if(! match)  /*<<seq.ml:87:13>>*/ return 0;
     var next =  /*<<seq.ml:86:14>>*/ match[2], x = match[1];
      /*<<seq.ml:89:8>>*/ caml_call1(f, x);
      /*<<seq.ml:89:11>>*/ seq = next;
    }
    /*<<seq.ml:90:19>>*/ }
   function unfold(f, u, param){
    var match =  /*<<seq.ml:93:8>>*/ caml_call1(f, u);
     /*<<seq.ml:93:11>>*/ if(! match)  /*<<seq.ml:94:12>>*/ return 0;
    var
     match$0 =  /*<<seq.ml:93:11>>*/ match[1],
     u$0 = match$0[2],
     x = match$0[1];
     /*<<seq.ml:95:40>>*/ return [0,
            x,
            function(_n_){ /*<<seq.ml:95:29>>*/ return unfold(f, u$0, _n_);}] /*<<seq.ml:95:40>>*/ ;
    /*<<seq.ml:95:41>>*/ }
   function is_empty(xs){
     /*<<seq.ml:98:8>>*/ return caml_call1(xs, 0) ? 0 : 1 /*<<seq.ml:102:11>>*/ ;
   }
   function uncons(xs){
    var match =  /*<<seq.ml:105:8>>*/ caml_call1(xs, 0);
     /*<<seq.ml:105:12>>*/ if(! match)  /*<<seq.ml:109:6>>*/ return 0;
    var xs$0 =  /*<<seq.ml:105:12>>*/ match[2], x = match[1];
     /*<<seq.ml:107:6>>*/ return [0, [0, x, xs$0]];
    /*<<seq.ml:109:10>>*/ }
   function length(xs$1){
    var accu =  /*<<seq.ml:121:2>>*/ 0, xs = xs$1;
    for(;;){
     var match =  /*<<seq.ml:114:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:114:12>>*/ if(! match)  /*<<seq.ml:116:6>>*/ return accu;
     var
      xs$0 =  /*<<seq.ml:114:12>>*/ match[2],
      accu$0 =  /*<<seq.ml:118:6>>*/ accu + 1 | 0;
     accu = accu$0;
     xs = xs$0;
    }
    /*<<seq.ml:121:17>>*/ }
   function iteri(f, xs$1){
    var i =  /*<<seq.ml:132:2>>*/ 0, xs = xs$1;
    for(;;){
     var match =  /*<<seq.ml:124:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:124:12>>*/ if(! match)  /*<<seq.ml:126:6>>*/ return 0;
     var xs$0 =  /*<<seq.ml:124:12>>*/ match[2], x = match[1];
      /*<<seq.ml:128:6>>*/ caml_call2(f, i, x);
     var i$0 =  /*<<seq.ml:128:11>>*/ i + 1 | 0;
     i = i$0;
     xs = xs$0;
    }
    /*<<seq.ml:132:18>>*/ }
   function fold_lefti(f, accu$1, xs$1){
    var accu =  /*<<seq.ml:143:2>>*/ accu$1, i = 0, xs = xs$1;
    for(;;){
     var match =  /*<<seq.ml:135:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:135:12>>*/ if(! match)  /*<<seq.ml:137:6>>*/ return accu;
     var
      xs$0 =  /*<<seq.ml:135:12>>*/ match[2],
      x = match[1],
      accu$0 =  /*<<seq.ml:139:17>>*/ caml_call3(f, accu, i, x),
      i$0 =  /*<<seq.ml:140:6>>*/ i + 1 | 0;
     accu = accu$0;
     i = i$0;
     xs = xs$0;
    }
    /*<<seq.ml:143:28>>*/ }
   function for_all(p, xs$1){
    var xs =  /*<<seq.ml:146:2>>*/ xs$1;
    for(;;){
     var match =  /*<<seq.ml:146:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:146:12>>*/ if(! match)  /*<<seq.ml:148:6>>*/ return 1;
     var
      xs$0 =  /*<<seq.ml:146:12>>*/ match[2],
      x = match[1],
      _n_ =  /*<<seq.ml:150:6>>*/ caml_call1(p, x);
      /*<<seq.ml:150:9>>*/ if(! _n_) return _n_;
     xs = xs$0;
    }
    /*<<seq.ml:150:25>>*/ }
   function exists(p, xs$1){
    var xs =  /*<<seq.ml:153:2>>*/ xs$1;
    for(;;){
     var match =  /*<<seq.ml:153:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:153:12>>*/ if(! match)  /*<<seq.ml:155:6>>*/ return 0;
     var
      xs$0 =  /*<<seq.ml:153:12>>*/ match[2],
      x = match[1],
      _n_ =  /*<<seq.ml:157:6>>*/ caml_call1(p, x);
      /*<<seq.ml:157:9>>*/ if(_n_) return _n_;
     xs = xs$0;
    }
    /*<<seq.ml:157:24>>*/ }
   function find(p, xs$1){
    var xs =  /*<<seq.ml:160:2>>*/ xs$1;
    for(;;){
     var match =  /*<<seq.ml:160:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:160:12>>*/ if(! match)  /*<<seq.ml:162:6>>*/ return 0;
     var xs$0 =  /*<<seq.ml:160:12>>*/ match[2], x = match[1];
      /*<<seq.ml:164:9>>*/ if(caml_call1(p, x))
       /*<<seq.ml:164:18>>*/ return [0, x];
      /*<<seq.ml:164:12>>*/ xs = xs$0;
    }
    /*<<seq.ml:164:39>>*/ }
   function find_index(p, xs){
    var i =  /*<<seq.ml:172:2>>*/ 0, xs$0 = xs;
    for(;;){
     var match =  /*<<seq.ml:167:27>>*/ caml_call1(xs$0, 0);
      /*<<seq.ml:167:31>>*/ if(! match)  /*<<seq.ml:169:8>>*/ return 0;
     var xs$1 =  /*<<seq.ml:167:31>>*/ match[2], x = match[1];
      /*<<seq.ml:171:11>>*/ if(caml_call1(p, x))
       /*<<seq.ml:171:20>>*/ return [0, i];
     var i$0 =  /*<<seq.ml:171:32>>*/ i + 1 | 0;
     i = i$0;
     xs$0 = xs$1;
    }
    /*<<seq.ml:172:10>>*/ }
   function find_map(f, xs$1){
    var xs =  /*<<seq.ml:175:2>>*/ xs$1;
    for(;;){
     var match =  /*<<seq.ml:175:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:175:12>>*/ if(! match)  /*<<seq.ml:177:6>>*/ return 0;
     var
      xs$0 =  /*<<seq.ml:175:12>>*/ match[2],
      x = match[1],
      result =  /*<<seq.ml:179:12>>*/ caml_call1(f, x);
      /*<<seq.ml:179:15>>*/ if(result)  /*<<seq.ml:183:10>>*/ return result;
      /*<<seq.ml:179:15>>*/ xs = xs$0;
    }
    /*<<seq.ml:183:16>>*/ }
   function find_mapi(f, xs){
    var i =  /*<<seq.ml:195:2>>*/ 0, xs$0 = xs;
    for(;;){
     var match =  /*<<seq.ml:186:27>>*/ caml_call1(xs$0, 0);
      /*<<seq.ml:186:31>>*/ if(! match)  /*<<seq.ml:188:8>>*/ return 0;
     var
      xs$1 =  /*<<seq.ml:186:31>>*/ match[2],
      x = match[1],
      result =  /*<<seq.ml:190:14>>*/ caml_call2(f, i, x);
      /*<<seq.ml:190:19>>*/ if(result)  /*<<seq.ml:194:12>>*/ return result;
     var i$0 =  /*<<seq.ml:192:12>>*/ i + 1 | 0;
     i = i$0;
     xs$0 = xs$1;
    }
    /*<<seq.ml:195:10>>*/ }
   function iter2(f, xs$1, ys$1){
    var xs =  /*<<seq.ml:205:2>>*/ xs$1, ys = ys$1;
    for(;;){
     var match =  /*<<seq.ml:205:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:205:12>>*/ if(! match)  /*<<seq.ml:207:6>>*/ return 0;
     var
      xs$0 =  /*<<seq.ml:205:12>>*/ match[2],
      x = match[1],
      match$0 =  /*<<seq.ml:209:12>>*/ caml_call1(ys, 0);
      /*<<seq.ml:209:16>>*/ if(! match$0)  /*<<seq.ml:211:10>>*/ return 0;
     var ys$0 =  /*<<seq.ml:209:16>>*/ match$0[2], y = match$0[1];
      /*<<seq.ml:213:10>>*/ caml_call2(f, x, y);
      /*<<seq.ml:213:15>>*/ xs = xs$0;
     ys = ys$0;
    }
    /*<<seq.ml:214:23>>*/ }
   function fold_left2(f, accu$1, xs$1, ys$1){
    var accu =  /*<<seq.ml:217:2>>*/ accu$1, xs = xs$1, ys = ys$1;
    for(;;){
     var match =  /*<<seq.ml:217:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:217:12>>*/ if(! match)  /*<<seq.ml:219:6>>*/ return accu;
     var
      xs$0 =  /*<<seq.ml:217:12>>*/ match[2],
      x = match[1],
      match$0 =  /*<<seq.ml:221:12>>*/ caml_call1(ys, 0);
      /*<<seq.ml:221:16>>*/ if(! match$0)  /*<<seq.ml:223:10>>*/ return accu;
     var
      ys$0 =  /*<<seq.ml:221:16>>*/ match$0[2],
      y = match$0[1],
      accu$0 =  /*<<seq.ml:225:21>>*/ caml_call3(f, accu, x, y);
      /*<<seq.ml:226:10>>*/ accu = accu$0;
     xs = xs$0;
     ys = ys$0;
    }
    /*<<seq.ml:226:33>>*/ }
   function for_all2(f, xs$1, ys$1){
    var xs =  /*<<seq.ml:229:2>>*/ xs$1, ys = ys$1;
    for(;;){
     var match =  /*<<seq.ml:229:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:229:12>>*/ if(! match)  /*<<seq.ml:231:6>>*/ return 1;
     var
      xs$0 =  /*<<seq.ml:229:12>>*/ match[2],
      x = match[1],
      match$0 =  /*<<seq.ml:233:12>>*/ caml_call1(ys, 0);
      /*<<seq.ml:233:16>>*/ if(! match$0)  /*<<seq.ml:235:10>>*/ return 1;
     var
      ys$0 =  /*<<seq.ml:233:16>>*/ match$0[2],
      y = match$0[1],
      _n_ =  /*<<seq.ml:237:10>>*/ caml_call2(f, x, y);
      /*<<seq.ml:237:15>>*/ if(! _n_) return _n_;
     xs = xs$0;
     ys = ys$0;
    }
    /*<<seq.ml:237:35>>*/ }
   function exists2(f, xs$1, ys$1){
    var xs =  /*<<seq.ml:240:2>>*/ xs$1, ys = ys$1;
    for(;;){
     var match =  /*<<seq.ml:240:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:240:12>>*/ if(! match)  /*<<seq.ml:242:6>>*/ return 0;
     var
      xs$0 =  /*<<seq.ml:240:12>>*/ match[2],
      x = match[1],
      match$0 =  /*<<seq.ml:244:12>>*/ caml_call1(ys, 0);
      /*<<seq.ml:244:16>>*/ if(! match$0)  /*<<seq.ml:246:10>>*/ return 0;
     var
      ys$0 =  /*<<seq.ml:244:16>>*/ match$0[2],
      y = match$0[1],
      _n_ =  /*<<seq.ml:248:10>>*/ caml_call2(f, x, y);
      /*<<seq.ml:248:15>>*/ if(_n_) return _n_;
     xs = xs$0;
     ys = ys$0;
    }
    /*<<seq.ml:248:34>>*/ }
   function equal(eq, xs$1, ys$1){
    var xs =  /*<<seq.ml:251:2>>*/ xs$1, ys = ys$1;
    for(;;){
     var
      match =  /*<<seq.ml:251:8>>*/ caml_call1(xs, 0),
      match$0 =  /*<<seq.ml:251:14>>*/ caml_call1(ys, 0);
      /*<<seq.ml:251:18>>*/ if(match){
      if(match$0){
       var
        ys$0 = match$0[2],
        y = match$0[1],
        xs$0 = match[2],
        x = match[1],
        _n_ =  /*<<seq.ml:255:6>>*/ caml_call2(eq, x, y);
        /*<<seq.ml:255:12>>*/ if(! _n_) return _n_;
       xs = xs$0;
       ys = ys$0;
       continue;
      }
     }
     else if(! match$0)  /*<<seq.ml:253:6>>*/ return 1;
      /*<<seq.ml:258:6>>*/ return 0;
    }
    /*<<seq.ml:258:11>>*/ }
   function compare(cmp, xs$1, ys$1){
    var xs =  /*<<seq.ml:261:2>>*/ xs$1, ys = ys$1;
    for(;;){
     var
      match =  /*<<seq.ml:261:8>>*/ caml_call1(xs, 0),
      match$0 =  /*<<seq.ml:261:14>>*/ caml_call1(ys, 0);
      /*<<seq.ml:261:18>>*/ if(! match)
      return match$0 ? -1 : 0 /*<<seq.ml:270:8>>*/ ;
     var xs$0 =  /*<<seq.ml:261:18>>*/ match[2], x = match[1];
     if(! match$0)  /*<<seq.ml:270:6>>*/ return 1;
     var
      ys$0 =  /*<<seq.ml:261:18>>*/ match$0[2],
      y = match$0[1],
      c =  /*<<seq.ml:265:14>>*/ caml_call2(cmp, x, y);
      /*<<seq.ml:266:6>>*/ if(0 !== c)  /*<<seq.ml:266:21>>*/ return c;
      /*<<seq.ml:266:6>>*/ xs = xs$0;
     ys = ys$0;
    }
    /*<<seq.ml:270:8>>*/ }
   function init_aux(f, i, j, param){
     /*<<seq.ml:277:2>>*/ if(i >= j)  /*<<seq.ml:281:4>>*/ return 0;
    var _m_ =  /*<<seq.ml:278:15>>*/ i + 1 | 0;
     /*<<seq.ml:278:10>>*/ return [0,
            caml_call1(f, i),
            function(_n_){
              /*<<seq.ml:278:15>>*/ return init_aux(f, _m_, j, _n_);
            }] /*<<seq.ml:278:13>>*/ ;
    /*<<seq.ml:281:7>>*/ }
   function init(n, f){
     /*<<seq.ml:284:2>>*/ if(0 > n)
      /*<<seq.ml:285:4>>*/ return Stdlib[1].call(null, "Seq.init") /*<<seq.ml:287:18>>*/ ;
     /*<<seq.ml:287:4>>*/ return function(_m_){
      /*<<?>>*/ return init_aux(f, 0, n, _m_);} /*<<seq.ml:287:4>>*/ ;
    /*<<seq.ml:287:18>>*/ }
   function repeat(x, param){
     /*<<seq.ml:290:19>>*/ return [0,
            x,
            function(_m_){ /*<<seq.ml:290:11>>*/ return repeat(x, _m_);}] /*<<seq.ml:290:19>>*/ ;
    /*<<seq.ml:290:20>>*/ }
   function forever(f, param){
     /*<<seq.ml:293:8>>*/ return [0,
            caml_call1(f, 0),
            function(_m_){ /*<<seq.ml:293:13>>*/ return forever(f, _m_);}] /*<<seq.ml:293:11>>*/ ;
    /*<<seq.ml:293:23>>*/ }
   function cycle_nonempty(xs, param){
     /*<<seq.ml:300:31>>*/ return append
            (xs,
             function(_m_){
               /*<<seq.ml:300:12>>*/ return cycle_nonempty(xs, _m_);
             },
             0) /*<<seq.ml:300:34>>*/ ;
   }
   function cycle(xs, param){
    var match =  /*<<seq.ml:308:8>>*/ caml_call1(xs, 0);
     /*<<seq.ml:308:12>>*/ if(! match)  /*<<seq.ml:310:6>>*/ return 0;
    var xs$0 =  /*<<seq.ml:308:12>>*/ match[2], x = match[1];
    function _l_(_m_){ /*<<seq.ml:312:26>>*/ return cycle_nonempty(xs, _m_);}
     /*<<seq.ml:312:45>>*/ return [0,
            x,
            function(_m_){
              /*<<seq.ml:312:15>>*/ return append(xs$0, _l_, _m_);
            }] /*<<seq.ml:312:45>>*/ ;
    /*<<seq.ml:312:46>>*/ }
   function iterate1(f, x, param){
    var y =  /*<<seq.ml:319:10>>*/ caml_call1(f, x);
     /*<<seq.ml:320:23>>*/ return [0,
            y,
            function(_l_){ /*<<seq.ml:320:11>>*/ return iterate1(f, y, _l_);}] /*<<seq.ml:320:23>>*/ ;
    /*<<seq.ml:320:24>>*/ }
   function iterate(f, x){
    function next(_l_){ /*<<seq.ml:332:9>>*/ return iterate1(f, x, _l_);}
     /*<<seq.ml:332:23>>*/ return function(param){
      /*<<seq.ml:28:21>>*/ return [0, x, next];} /*<<seq.ml:332:23>>*/ ;
   }
   function mapi_aux(f, i, xs, param){
    var match =  /*<<seq.ml:337:8>>*/ caml_call1(xs, 0);
     /*<<seq.ml:337:12>>*/ if(! match)  /*<<seq.ml:339:6>>*/ return 0;
    var
     xs$0 =  /*<<seq.ml:337:12>>*/ match[2],
     x = match[1],
     _k_ =  /*<<seq.ml:341:19>>*/ i + 1 | 0;
     /*<<seq.ml:341:12>>*/ return [0,
            caml_call2(f, i, x),
            function(_l_){
              /*<<seq.ml:341:19>>*/ return mapi_aux(f, _k_, xs$0, _l_);
            }] /*<<seq.ml:341:17>>*/ ;
    /*<<seq.ml:341:39>>*/ }
   function mapi(f, xs){
     /*<<seq.ml:344:2>>*/ return function(_k_){
      /*<<?>>*/ return mapi_aux(f, 0, xs, _k_);} /*<<seq.ml:344:2>>*/ ;
    /*<<seq.ml:344:17>>*/ }
   function tail_scan(f, s, xs, param){
    var match =  /*<<seq.ml:353:8>>*/ caml_call1(xs, 0);
     /*<<seq.ml:353:12>>*/ if(! match)  /*<<seq.ml:355:6>>*/ return 0;
    var
     xs$0 =  /*<<seq.ml:353:12>>*/ match[2],
     x = match[1],
     s$0 =  /*<<seq.ml:357:14>>*/ caml_call2(f, s, x);
     /*<<seq.ml:358:31>>*/ return [0,
            s$0,
            function(_k_){
              /*<<seq.ml:358:15>>*/ return tail_scan(f, s$0, xs$0, _k_);
            }] /*<<seq.ml:358:31>>*/ ;
    /*<<seq.ml:358:32>>*/ }
   function scan(f, s, xs){
    function next(_k_){ /*<<seq.ml:361:9>>*/ return tail_scan(f, s, xs, _k_);}
     /*<<seq.ml:361:27>>*/ return function(param){
      /*<<seq.ml:28:21>>*/ return [0, s, next];} /*<<seq.ml:361:27>>*/ ;
   }
   function take_aux(n, xs){
     /*<<seq.ml:367:2>>*/ return 0 === n
            ? empty
            : function
             (param){
              var match =  /*<<seq.ml:371:12>>*/ caml_call1(xs, 0);
               /*<<seq.ml:371:16>>*/ if(! match)
                /*<<seq.ml:373:10>>*/ return 0;
              var xs$0 =  /*<<seq.ml:371:16>>*/ match[2], x = match[1];
               /*<<seq.ml:375:19>>*/ return [0, x, take_aux(n - 1 | 0, xs$0)] /*<<seq.ml:375:36>>*/ ;
              /*<<seq.ml:375:37>>*/ };
   }
   function take(n, xs){
     /*<<seq.ml:378:2>>*/ if(n < 0)
      /*<<seq.ml:378:16>>*/ Stdlib[1].call(null, "Seq.take");
     /*<<seq.ml:379:2>>*/ return take_aux(n, xs) /*<<seq.ml:379:15>>*/ ;
   }
   function drop(n, xs){
     /*<<seq.ml:400:2>>*/ return 0 <= n
            ? 0
              === n
              ? xs
              : function
               (param){
                var n$0 =  /*<<seq.ml:405:6>>*/ n, xs$0 = xs;
                for(;;){
                 var match =  /*<<seq.ml:386:8>>*/ caml_call1(xs$0, 0);
                  /*<<seq.ml:386:12>>*/ if(! match)
                   /*<<seq.ml:388:6>>*/ return 0;
                 var
                  xs$1 =  /*<<seq.ml:386:12>>*/ match[2],
                  n$1 =  /*<<seq.ml:390:6>>*/ n$0 - 1 | 0;
                  /*<<seq.ml:391:6>>*/ if(0 === n$1)
                   /*<<seq.ml:392:8>>*/ return caml_call1(xs$1, 0) /*<<seq.ml:405:21>>*/ ;
                  /*<<seq.ml:391:6>>*/ n$0 = n$1;
                 xs$0 = xs$1;
                }
                /*<<seq.ml:405:21>>*/ }
            :  /*<<seq.ml:400:16>>*/ Stdlib[1].call(null, "Seq.drop") /*<<seq.ml:405:21>>*/ ;
   }
   function take_while(p, xs, param){
    var match =  /*<<seq.ml:408:8>>*/ caml_call1(xs, 0);
     /*<<seq.ml:408:12>>*/ if(! match)  /*<<seq.ml:410:6>>*/ return 0;
    var xs$0 =  /*<<seq.ml:408:12>>*/ match[2], x = match[1];
     /*<<seq.ml:412:9>>*/ return caml_call1(p, x)
            ? [0,
              x,
              function(_k_){
                /*<<seq.ml:412:27>>*/ return take_while(p, xs$0, _k_);
              }]
            : 0 /*<<seq.ml:412:52>>*/ ;
   }
   function drop_while(p, xs$1, param){
    var xs =  /*<<seq.ml:415:2>>*/ xs$1;
    for(;;){
     var node =  /*<<seq.ml:415:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:415:12>>*/ if(! node)  /*<<seq.ml:417:6>>*/ return 0;
     var xs$0 =  /*<<seq.ml:415:12>>*/ node[2], x = node[1];
      /*<<seq.ml:419:9>>*/ if(! caml_call1(p, x))
       /*<<seq.ml:419:42>>*/ return node;
      /*<<seq.ml:419:12>>*/ xs = xs$0;
    }
    /*<<seq.ml:419:46>>*/ }
   function group(eq, xs, param){
    var match =  /*<<seq.ml:422:8>>*/ caml_call1(xs, 0);
     /*<<seq.ml:422:12>>*/ if(! match)  /*<<seq.ml:424:6>>*/ return 0;
    var
     xs$0 =  /*<<seq.ml:422:12>>*/ match[2],
     x = match[1],
     _h_ =  /*<<seq.ml:426:64>>*/ caml_call1(eq, x);
    function _i_(_k_){
      /*<<seq.ml:426:52>>*/ return drop_while(_h_, xs$0, _k_);
    }
    var _j_ =  /*<<seq.ml:426:31>>*/ caml_call1(eq, x);
    function next(_k_){
      /*<<seq.ml:426:19>>*/ return take_while(_j_, xs$0, _k_);
    }
     /*<<seq.ml:426:41>>*/ return [0,
            function(param){ /*<<seq.ml:28:21>>*/ return [0, x, next];},
            function(_j_){ /*<<seq.ml:426:43>>*/ return group(eq, _i_, _j_);}] /*<<seq.ml:426:41>>*/ ;
    /*<<seq.ml:426:75>>*/ }
   var
    Forced_twice =
       /*<<?>>*/ [248, "Stdlib.Seq.Forced_twice", runtime.caml_fresh_oo_id(0)],
    to_lazy = Stdlib_Lazy[6];
   function failure(param){
     /*<<seq.ml:454:6>>*/ throw caml_maybe_attach_backtrace(Forced_twice, 1);
    /*<<seq.ml:454:24>>*/ }
   function memoize(xs){
    function s$0(param){
     var match =  /*<<seq.ml:473:10>>*/ caml_call1(xs, 0);
      /*<<seq.ml:473:14>>*/ if(! match)  /*<<seq.ml:475:8>>*/ return 0;
     var xs$0 =  /*<<seq.ml:473:14>>*/ match[2], x = match[1];
      /*<<seq.ml:477:17>>*/ return [0, x, memoize(xs$0)] /*<<seq.ml:477:27>>*/ ;
     /*<<seq.ml:477:28>>*/ }
    var s =  /*<<seq.ml:447:14>>*/ to_lazy(s$0);
     /*<<seq.ml:442:4>>*/ return function(param){
     var _h_ =  /*<<seq.ml:442:14>>*/ runtime.caml_obj_tag(s);
     if(250 === _h_) return s[1];
     if(246 !== _h_ && 244 !== _h_) return s;
     return CamlinternalLazy[2].call(null, s) /*<<seq.ml:442:26>>*/ ;} /*<<seq.ml:442:4>>*/ ;
    /*<<seq.ml:478:3>>*/ }
   function once(xs){
    function f(param){
     var match =  /*<<seq.ml:482:10>>*/ caml_call1(xs, 0);
      /*<<seq.ml:482:14>>*/ if(! match)  /*<<seq.ml:484:8>>*/ return 0;
     var xs$0 =  /*<<seq.ml:482:14>>*/ match[2], x = match[1];
      /*<<seq.ml:486:17>>*/ return [0, x, once(xs$0)] /*<<seq.ml:486:24>>*/ ;
     /*<<seq.ml:486:25>>*/ }
    var action =  /*<<seq.ml:461:17>>*/ Stdlib_Atomic[1].call(null, f);
     /*<<seq.ml:462:4>>*/ return function(param){
     var
      f =  /*<<seq.ml:466:14>>*/ Stdlib_Atomic[5].call(null, action, failure);
      /*<<seq.ml:467:6>>*/ return caml_call1(f, 0) /*<<seq.ml:467:9>>*/ ;} /*<<seq.ml:462:4>>*/ ;
    /*<<seq.ml:487:3>>*/ }
   function zip(xs, ys, param){
    var match =  /*<<seq.ml:491:8>>*/ caml_call1(xs, 0);
     /*<<seq.ml:491:12>>*/ if(! match)  /*<<seq.ml:493:6>>*/ return 0;
    var
     xs$0 =  /*<<seq.ml:491:12>>*/ match[2],
     x = match[1],
     match$0 =  /*<<seq.ml:495:12>>*/ caml_call1(ys, 0);
     /*<<seq.ml:495:16>>*/ if(! match$0)  /*<<seq.ml:497:10>>*/ return 0;
    var ys$0 =  /*<<seq.ml:495:16>>*/ match$0[2], y = match$0[1];
     /*<<seq.ml:499:33>>*/ return [0,
            [0, x, y],
            function(_h_){ /*<<seq.ml:499:24>>*/ return zip(xs$0, ys$0, _h_);}] /*<<seq.ml:499:33>>*/ ;
    /*<<seq.ml:499:34>>*/ }
   function map2(f, xs, ys, param){
    var match =  /*<<seq.ml:502:8>>*/ caml_call1(xs, 0);
     /*<<seq.ml:502:12>>*/ if(! match)  /*<<seq.ml:504:6>>*/ return 0;
    var
     xs$0 =  /*<<seq.ml:502:12>>*/ match[2],
     x = match[1],
     match$0 =  /*<<seq.ml:506:12>>*/ caml_call1(ys, 0);
     /*<<seq.ml:506:16>>*/ if(! match$0)  /*<<seq.ml:508:10>>*/ return 0;
    var ys$0 =  /*<<seq.ml:506:16>>*/ match$0[2], y = match$0[1];
     /*<<seq.ml:510:16>>*/ return [0,
            caml_call2(f, x, y),
            function(_h_){
              /*<<seq.ml:510:23>>*/ return map2(f, xs$0, ys$0, _h_);
            }] /*<<seq.ml:510:21>>*/ ;
    /*<<seq.ml:510:36>>*/ }
   function interleave(xs, ys, param){
    var match =  /*<<seq.ml:513:8>>*/ caml_call1(xs, 0);
     /*<<seq.ml:513:12>>*/ if(! match)
      /*<<seq.ml:515:6>>*/ return caml_call1(ys, 0) /*<<seq.ml:517:32>>*/ ;
    var xs$0 =  /*<<seq.ml:513:12>>*/ match[2], x = match[1];
     /*<<seq.ml:517:31>>*/ return [0,
            x,
            function(_h_){
              /*<<seq.ml:517:15>>*/ return interleave(ys, xs$0, _h_);
            }] /*<<seq.ml:517:31>>*/ ;
    /*<<seq.ml:517:32>>*/ }
   function sorted_merge1(cmp, x, xs, y, ys){
     /*<<seq.ml:546:5>>*/ return 0 < caml_call2(cmp, x, y)
            ? [0,
              y,
              function(param){
               var match =  /*<<seq.ml:532:8>>*/ caml_call1(ys, 0);
                /*<<seq.ml:532:12>>*/ if(! match)
                 /*<<seq.ml:534:6>>*/ return [0, x, xs];
               var ys$0 =  /*<<seq.ml:532:12>>*/ match[2], y = match[1];
                /*<<seq.ml:536:6>>*/ return sorted_merge1(cmp, x, xs, y, ys$0);
              }]
            : [0,
              x,
              function(param){
               var match =  /*<<seq.ml:539:8>>*/ caml_call1(xs, 0);
                /*<<seq.ml:539:12>>*/ if(! match)
                 /*<<seq.ml:541:6>>*/ return [0, y, ys];
               var xs$0 =  /*<<seq.ml:539:12>>*/ match[2], x = match[1];
                /*<<seq.ml:543:6>>*/ return sorted_merge1(cmp, x, xs$0, y, ys);
              }] /*<<seq.ml:549:40>>*/ ;
   }
   function sorted_merge(cmp, xs, ys, param){
    var
     match =  /*<<seq.ml:552:8>>*/ caml_call1(xs, 0),
     match$0 =  /*<<seq.ml:552:14>>*/ caml_call1(ys, 0);
     /*<<seq.ml:552:18>>*/ if(match){
     if(match$0){
      var ys$0 = match$0[2], y = match$0[1], xs$0 = match[2], x = match[1];
       /*<<seq.ml:559:8>>*/ return sorted_merge1(cmp, x, xs$0, y, ys$0) /*<<seq.ml:559:35>>*/ ;
     }
     var c =  /*<<seq.ml:552:18>>*/ match;
    }
    else{
     if(! match$0)  /*<<seq.ml:554:8>>*/ return 0;
     var c =  /*<<seq.ml:552:18>>*/ match$0;
    }
     /*<<seq.ml:557:8>>*/ return c;
    /*<<seq.ml:559:35>>*/ }
   function map_fst(xys, param){
    var match =  /*<<seq.ml:563:8>>*/ caml_call1(xys, 0);
     /*<<seq.ml:563:13>>*/ if(! match)  /*<<seq.ml:565:6>>*/ return 0;
    var xys$0 =  /*<<seq.ml:563:13>>*/ match[2], x = match[1][1];
     /*<<seq.ml:567:26>>*/ return [0,
            x,
            function(_h_){ /*<<seq.ml:567:15>>*/ return map_fst(xys$0, _h_);}] /*<<seq.ml:567:26>>*/ ;
    /*<<seq.ml:567:27>>*/ }
   function map_snd(xys, param){
    var match =  /*<<seq.ml:570:8>>*/ caml_call1(xys, 0);
     /*<<seq.ml:570:13>>*/ if(! match)  /*<<seq.ml:572:6>>*/ return 0;
    var xys$0 =  /*<<seq.ml:570:13>>*/ match[2], y = match[1][2];
     /*<<seq.ml:574:26>>*/ return [0,
            y,
            function(_h_){ /*<<seq.ml:574:15>>*/ return map_snd(xys$0, _h_);}] /*<<seq.ml:574:26>>*/ ;
    /*<<seq.ml:574:27>>*/ }
   function unzip(xys){
     /*<<seq.ml:577:13>>*/ return [0,
            function(_h_){ /*<<seq.ml:577:2>>*/ return map_fst(xys, _h_);},
            function(_h_){ /*<<seq.ml:577:15>>*/ return map_snd(xys, _h_);}] /*<<seq.ml:577:13>>*/ ;
    /*<<seq.ml:577:26>>*/ }
   function filter_map_find_left_map(f, xs$1, param){
    var xs =  /*<<seq.ml:586:2>>*/ xs$1;
    for(;;){
     var match =  /*<<seq.ml:586:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:586:12>>*/ if(! match)  /*<<seq.ml:588:6>>*/ return 0;
     var
      xs$0 =  /*<<seq.ml:586:12>>*/ match[2],
      x = match[1],
      match$0 =  /*<<seq.ml:590:12>>*/ caml_call1(f, x);
      /*<<seq.ml:590:15>>*/ if(0 === match$0[0]) break;
     xs = xs$0;
    }
    var y =  /*<<seq.ml:586:2>>*/ match$0[1];
     /*<<seq.ml:592:48>>*/ return [0,
            y,
            function(_h_){
              /*<<seq.ml:592:19>>*/ return filter_map_find_left_map
                     (f, xs$0, _h_);
            }] /*<<seq.ml:592:48>>*/ ;
    /*<<seq.ml:594:42>>*/ }
   function filter_map_find_right_map(f, xs$1, param){
    var xs =  /*<<seq.ml:597:2>>*/ xs$1;
    for(;;){
     var match =  /*<<seq.ml:597:8>>*/ caml_call1(xs, 0);
      /*<<seq.ml:597:12>>*/ if(! match)  /*<<seq.ml:599:6>>*/ return 0;
     var
      xs$0 =  /*<<seq.ml:597:12>>*/ match[2],
      x = match[1],
      match$0 =  /*<<seq.ml:601:12>>*/ caml_call1(f, x);
      /*<<seq.ml:601:15>>*/ if(0 !== match$0[0]) break;
     xs = xs$0;
    }
    var z =  /*<<seq.ml:597:2>>*/ match$0[1];
     /*<<seq.ml:605:49>>*/ return [0,
            z,
            function(_h_){
              /*<<seq.ml:605:19>>*/ return filter_map_find_right_map
                     (f, xs$0, _h_);
            }] /*<<seq.ml:605:49>>*/ ;
    /*<<seq.ml:605:50>>*/ }
   function partition_map(f, xs){
     /*<<seq.ml:608:31>>*/ return [0,
            function(_h_){
              /*<<seq.ml:608:2>>*/ return filter_map_find_left_map(f, xs, _h_);
            },
            function(_h_){
              /*<<seq.ml:609:2>>*/ return filter_map_find_right_map
                     (f, xs, _h_);
            }] /*<<seq.ml:608:31>>*/ ;
    /*<<seq.ml:609:32>>*/ }
   function partition(p, xs){
    function _g_(x){
      /*<<seq.ml:612:36>>*/ return 1 - caml_call1(p, x) /*<<seq.ml:612:41>>*/ ;
    }
     /*<<seq.ml:612:13>>*/ return [0,
            function(_h_){ /*<<seq.ml:612:2>>*/ return filter(p, xs, _h_);},
            function(_h_){ /*<<seq.ml:612:15>>*/ return filter(_g_, xs, _h_);}] /*<<seq.ml:612:13>>*/ ;
    /*<<seq.ml:612:45>>*/ }
   function peel(xss){
     /*<<seq.ml:624:31>>*/ return unzip
            (function(_g_){
               /*<<seq.ml:624:8>>*/ return filter_map(uncons, xss, _g_);
             }) /*<<seq.ml:624:31>>*/ ;
   }
   var _b_ =  /*<<?>>*/ [0, "seq.ml", 629, 4];
   function transpose(xss, param){
    var
     match =  /*<<seq.ml:627:21>>*/ peel(xss),
     tails =  /*<<seq.ml:627:29>>*/ match[2],
     heads = match[1];
     /*<<seq.ml:628:5>>*/ if(! is_empty(heads))
      /*<<seq.ml:633:32>>*/ return [0,
             heads,
             function(_g_){
               /*<<seq.ml:633:17>>*/ return transpose(tails, _g_);
             }] /*<<seq.ml:633:32>>*/ ;
     /*<<seq.ml:629:11>>*/ if(is_empty(tails))  /*<<seq.ml:630:4>>*/ return 0;
     /*<<seq.ml:629:27>>*/ throw caml_maybe_attach_backtrace
           ([0, Assert_failure, _b_], 1);
    /*<<seq.ml:633:33>>*/ }
   function _a_(remainders, xss, param){
    var match =  /*<<seq.ml:640:8>>*/ caml_call1(xss, 0);
     /*<<seq.ml:640:13>>*/ if(! match)
      /*<<seq.ml:662:6>>*/ return transpose(remainders, 0) /*<<seq.ml:662:29>>*/ ;
    var
     xss$0 =  /*<<seq.ml:640:13>>*/ match[2],
     xs = match[1],
     match$0 =  /*<<seq.ml:642:18>>*/ caml_call1(xs, 0);
     /*<<seq.ml:642:22>>*/ if(match$0){
     var
      xs$0 = match$0[2],
      x = match$0[1],
      match$1 =  /*<<seq.ml:650:29>>*/ peel(remainders),
      tails =  /*<<seq.ml:650:44>>*/ match$1[2],
      heads = match$1[1],
      _f_ =
         /*<<seq.ml:651:40>>*/ function(param){
          /*<<seq.ml:28:21>>*/ return [0, xs$0, tails];
        };
      /*<<seq.ml:651:28>>*/ return [0,
             function(param){ /*<<seq.ml:28:21>>*/ return [0, x, heads];},
             function(_g_){
               /*<<seq.ml:651:30>>*/ return _a_(_f_, xss$0, _g_);
             }] /*<<seq.ml:651:28>>*/ ;
    }
    var
     match$2 =  /*<<seq.ml:656:29>>*/ peel(remainders),
     tails$0 =  /*<<seq.ml:656:44>>*/ match$2[2],
     heads$0 = match$2[1];
     /*<<seq.ml:657:42>>*/ return [0,
            heads$0,
            function(_f_){
              /*<<seq.ml:657:23>>*/ return _a_(tails$0, xss$0, _f_);
            }] /*<<seq.ml:657:42>>*/ ;
    /*<<seq.ml:662:29>>*/ }
   function map_product(f, xs, ys){
    function _d_(x){
     function _e_(y){
       /*<<seq.ml:684:8>>*/ return caml_call2(f, x, y) /*<<seq.ml:684:13>>*/ ;
     }
      /*<<seq.ml:683:6>>*/ return function(_f_){
       /*<<?>>*/ return map(_e_, ys, _f_);} /*<<seq.ml:683:6>>*/ ;
     /*<<seq.ml:685:10>>*/ }
    function xss(_e_){ /*<<seq.ml:681:20>>*/ return map(_d_, xs, _e_);}
    function _c_(_d_){ /*<<seq.ml:678:2>>*/ return _a_(empty, xss, _d_);}
     /*<<seq.ml:687:4>>*/ return function(_d_){return concat(_c_, _d_);};
   }
   function product(xs, ys){
     /*<<seq.ml:690:2>>*/ return map_product
            (function(x, y){
               /*<<seq.ml:690:26>>*/ return [0, x, y];
              /*<<seq.ml:690:32>>*/ },
             xs,
             ys) /*<<seq.ml:690:39>>*/ ;
   }
   function of_dispenser(it){
    function c(param){
     var match =  /*<<seq.ml:694:10>>*/ caml_call1(it, 0);
      /*<<seq.ml:694:14>>*/ if(! match)  /*<<seq.ml:696:8>>*/ return 0;
     var x =  /*<<seq.ml:694:14>>*/ match[1];
      /*<<seq.ml:698:8>>*/ return [0, x, c];
     /*<<seq.ml:698:19>>*/ }
     /*<<seq.ml:700:2>>*/ return c;
    /*<<seq.ml:700:3>>*/ }
   function to_dispenser(xs){
    var s =  /*<<seq.ml:703:2>>*/ [0, xs];
     /*<<seq.ml:704:2>>*/ return function(param){
     var match =  /*<<seq.ml:705:10>>*/ caml_call1(s[1], 0);
      /*<<seq.ml:705:16>>*/ if(! match)  /*<<seq.ml:707:8>>*/ return 0;
     var xs =  /*<<seq.ml:705:16>>*/ match[2], x = match[1];
      /*<<seq.ml:709:8>>*/ s[1] = xs;
      /*<<seq.ml:710:8>>*/ return [0, x]; /*<<seq.ml:710:14>>*/ } /*<<seq.ml:704:2>>*/ ;
    /*<<seq.ml:710:14>>*/ }
   function ints(i, param){
    var _b_ =  /*<<seq.ml:715:11>>*/ i + 1 | 0;
     /*<<seq.ml:715:23>>*/ return [0,
            i,
            function(_c_){ /*<<seq.ml:715:11>>*/ return ints(_b_, _c_);}] /*<<seq.ml:715:23>>*/ ;
    /*<<seq.ml:715:24>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (10,
     [0,
      is_empty,
      uncons,
      length,
      iter,
      fold_left,
      iteri,
      fold_lefti,
      for_all,
      exists,
      find,
      find_index,
      find_map,
      find_mapi,
      iter2,
      fold_left2,
      for_all2,
      exists2,
      equal,
      compare,
      empty,
      return$,
      cons,
      singleton,
      init,
      unfold,
      repeat,
      forever,
      cycle,
      iterate,
      map,
      mapi,
      filter,
      filteri,
      filter_map,
      scan,
      take,
      drop,
      take_while,
      drop_while,
      group,
      memoize,
      Forced_twice,
      once,
      transpose,
      append,
      concat,
      flat_map,
      flat_map,
      zip,
      map2,
      interleave,
      sorted_merge,
      product,
      map_product,
      unzip,
      unzip,
      partition_map,
      partition,
      of_dispenser,
      to_dispenser,
      ints],
     "Stdlib__Seq");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Option
//# unitInfo: Requires: Stdlib, Stdlib__Seq
//# shape: Stdlib__Option:[N,F(1)*,F(2)*,F(1),F(2),F(1)*,F(2),F(3),F(2),F(1)*,F(1)*,F(3),F(3),F(2)*,F(1)*,F(1)*->F(1)*]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib = global_data.Stdlib;
   function some(v){
     /*<<option.ml:19:13>>*/ return [0, v];
    /*<<option.ml:19:19>>*/ }
   function value(o, default$){
     /*<<option.ml:20:23>>*/ if(! o)  /*<<option.ml:20:58>>*/ return default$;
    var v =  /*<<option.ml:20:23>>*/ o[1];
     /*<<option.ml:20:46>>*/ return v;
    /*<<option.ml:20:65>>*/ }
   function get(param){
     /*<<option.ml:21:10>>*/ if(! param)
      /*<<option.ml:21:41>>*/ return Stdlib[1].call(null, "option is None") /*<<option.ml:21:69>>*/ ;
    var v =  /*<<option.ml:21:10>>*/ param[1];
     /*<<option.ml:21:29>>*/ return v;
    /*<<option.ml:21:69>>*/ }
   function bind(o, f){
     /*<<option.ml:22:15>>*/ if(! o)  /*<<option.ml:22:36>>*/ return 0;
    var v =  /*<<option.ml:22:15>>*/ o[1];
     /*<<option.ml:22:53>>*/ return caml_call1(f, v) /*<<option.ml:22:56>>*/ ;
   }
   function join(param){
     /*<<option.ml:23:11>>*/ if(! param)  /*<<option.ml:23:42>>*/ return 0;
    var o =  /*<<option.ml:23:11>>*/ param[1];
     /*<<option.ml:23:30>>*/ return o;
    /*<<option.ml:23:46>>*/ }
   function map(f, o){
     /*<<option.ml:24:14>>*/ if(! o)  /*<<option.ml:24:35>>*/ return 0;
    var v =  /*<<option.ml:24:14>>*/ o[1];
     /*<<option.ml:24:57>>*/ return [0, caml_call1(f, v)] /*<<option.ml:24:62>>*/ ;
   }
   function fold(none, some, param){
     /*<<option.ml:25:9>>*/ if(! param)  /*<<option.ml:25:59>>*/ return none;
    var v =  /*<<option.ml:25:9>>*/ param[1];
     /*<<option.ml:25:42>>*/ return caml_call1(some, v) /*<<option.ml:25:63>>*/ ;
   }
   function iter(f, param){
     /*<<option.ml:26:9>>*/ if(! param)  /*<<option.ml:26:46>>*/ return 0;
    var v =  /*<<option.ml:26:9>>*/ param[1];
     /*<<option.ml:26:32>>*/ return caml_call1(f, v) /*<<option.ml:26:48>>*/ ;
   }
   function is_none(param){
     /*<<option.ml:27:14>>*/ return param ? 0 : 1 /*<<option.ml:27:53>>*/ ;
   }
   function is_some(param){
     /*<<option.ml:28:14>>*/ return param ? 1 : 0 /*<<option.ml:28:53>>*/ ;
   }
   function equal(eq, o0, o1){
     /*<<option.ml:30:21>>*/ if(o0){
     if(o1){
      var v1 = o1[1], v0 = o0[1];
       /*<<option.ml:31:22>>*/ return caml_call2(eq, v0, v1) /*<<option.ml:33:12>>*/ ;
     }
    }
    else if(! o1)  /*<<option.ml:32:16>>*/ return 1;
     /*<<option.ml:33:7>>*/ return 0;
    /*<<option.ml:33:12>>*/ }
   function compare(cmp, o0, o1){
     /*<<option.ml:35:24>>*/ if(! o0)
     return o1 ? -1 : 0 /*<<option.ml:39:19>>*/ ;
    var v0 =  /*<<option.ml:35:24>>*/ o0[1];
    if(! o1)  /*<<option.ml:39:18>>*/ return 1;
    var v1 =  /*<<option.ml:35:24>>*/ o1[1];
     /*<<option.ml:36:22>>*/ return caml_call2(cmp, v0, v1) /*<<option.ml:39:19>>*/ ;
   }
   function to_result(none, param){
     /*<<option.ml:41:14>>*/ if(! param)
      /*<<option.ml:41:39>>*/ return [1, none];
    var v =  /*<<option.ml:41:14>>*/ param[1];
     /*<<option.ml:41:62>>*/ return [0, v];
    /*<<option.ml:41:66>>*/ }
   function to_list(param){
     /*<<option.ml:42:14>>*/ if(! param)  /*<<option.ml:42:31>>*/ return 0;
    var v =  /*<<option.ml:42:14>>*/ param[1];
     /*<<option.ml:42:46>>*/ return [0, v, 0];
    /*<<option.ml:42:49>>*/ }
   function to_seq(param){
     /*<<option.ml:43:13>>*/ if(! param)
      /*<<option.ml:43:30>>*/ return Stdlib_Seq[20];
    var
     v =  /*<<option.ml:43:13>>*/ param[1],
     _a_ =  /*<<option.ml:43:52>>*/ Stdlib_Seq[21];
    return function(_b_){
      /*<<?>>*/ return _a_(v, _b_);} /*<<option.ml:43:52>>*/ ;
    /*<<option.ml:43:64>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (3,
     [0,
      0,
      some,
      value,
      get,
      bind,
      join,
      map,
      fold,
      iter,
      is_none,
      is_some,
      equal,
      compare,
      to_result,
      to_list,
      to_seq],
     "Stdlib__Option");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Pair
//# shape: Stdlib__Pair:[F(2)*,F(1)*,F(1)*,F(1)*,F(2),F(3),F(3),F(2),F(2),F(4),F(4)]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function make(a, b){
     /*<<pair.ml:18:15>>*/ return [0, a, b];
    /*<<pair.ml:18:21>>*/ }
   function fst(param){
    var a =  /*<<pair.ml:19:8>>*/ param[1];
     /*<<pair.ml:19:17>>*/ return a;
    /*<<pair.ml:19:18>>*/ }
   function snd(param){
    var b =  /*<<pair.ml:20:8>>*/ param[2];
     /*<<pair.ml:20:17>>*/ return b;
    /*<<pair.ml:20:18>>*/ }
   function swap(param){
    var b =  /*<<pair.ml:21:9>>*/ param[2], a = param[1];
     /*<<pair.ml:21:18>>*/ return [0, b, a];
    /*<<pair.ml:21:24>>*/ }
   function fold(f, param){
    var b =  /*<<pair.ml:23:9>>*/ param[2], a = param[1];
     /*<<pair.ml:23:20>>*/ return caml_call2(f, a, b) /*<<pair.ml:23:25>>*/ ;
   }
   function map(f, g, param){
    var
     b =  /*<<pair.ml:24:8>>*/ param[2],
     a = param[1],
     _b_ =  /*<<pair.ml:24:27>>*/ caml_call1(g, b);
     /*<<pair.ml:24:22>>*/ return [0, caml_call1(f, a), _b_] /*<<pair.ml:24:25>>*/ ;
    /*<<pair.ml:24:31>>*/ }
   function iter(f, g, param){
    var b =  /*<<pair.ml:25:9>>*/ param[2], a = param[1];
     /*<<pair.ml:25:22>>*/ caml_call1(f, a);
     /*<<pair.ml:25:25>>*/ return caml_call1(g, b) /*<<pair.ml:25:30>>*/ ;
   }
   function map_fst(f, param){
    var b =  /*<<pair.ml:26:12>>*/ param[2], a = param[1];
     /*<<pair.ml:26:24>>*/ return [0, caml_call1(f, a), b] /*<<pair.ml:26:27>>*/ ;
    /*<<pair.ml:26:31>>*/ }
   function map_snd(g, param){
    var b =  /*<<pair.ml:27:12>>*/ param[2], a = param[1];
     /*<<pair.ml:27:27>>*/ return [0, a, caml_call1(g, b)] /*<<pair.ml:27:30>>*/ ;
    /*<<pair.ml:27:31>>*/ }
   function equal(eqa, eqb, _b_, param){
    var
     b =  /*<<pair.ml:29:10>>*/ param[2],
     a = param[1],
     b$0 = _b_[2],
     a$0 = _b_[1],
     _a_ =  /*<<pair.ml:30:2>>*/ caml_call2(eqa, a$0, a);
     /*<<pair.ml:30:10>>*/ return _a_ ? caml_call2(eqb, b$0, b) : _a_ /*<<pair.ml:30:22>>*/ ;
   }
   function compare(cmpa, cmpb, _a_, param){
    var
     b =  /*<<pair.ml:31:12>>*/ param[2],
     a = param[1],
     b$0 = _a_[2],
     a$0 = _a_[1],
     c =  /*<<pair.ml:32:11>>*/ caml_call2(cmpa, a$0, a);
     /*<<pair.ml:33:3>>*/ return 0 === c
            ?  /*<<pair.ml:34:8>>*/ caml_call2(cmpb, b$0, b)
            : c /*<<pair.ml:34:17>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (0,
     [0,
      make,
      fst,
      snd,
      swap,
      fold,
      map,
      iter,
      map_fst,
      map_snd,
      equal,
      compare],
     "Stdlib__Pair");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Result
//# unitInfo: Requires: Stdlib, Stdlib__Seq
//# shape: Stdlib__Result:[F(1)*,F(1)*,F(2)*,F(1),F(1),F(1),F(1),F(2),F(1)*,F(2),F(2)*,F(2),F(3),F(1)*,F(2),F(2),F(1)*,F(1)*,F(4),F(4),F(1)*,F(1)*,F(1)*->F(1)*,[F(2),F(2)*,F(2),F(2)*]]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib = global_data.Stdlib;
   function ok(v){
     /*<<result.ml:18:11>>*/ return [0, v];
    /*<<result.ml:18:15>>*/ }
   function error(e){
     /*<<result.ml:19:14>>*/ return [1, e];
    /*<<result.ml:19:21>>*/ }
   function value(r, default$){
     /*<<result.ml:20:23>>*/ if(0 !== r[0])
      /*<<result.ml:20:59>>*/ return default$;
    var v =  /*<<result.ml:20:23>>*/ r[1];
     /*<<result.ml:20:44>>*/ return v;
    /*<<result.ml:20:66>>*/ }
   function get_ok(param){
     /*<<result.ml:21:13>>*/ if(0 !== param[0])
      /*<<result.ml:21:45>>*/ return Stdlib[1].call(null, "result is Error _") /*<<result.ml:21:76>>*/ ;
    var v =  /*<<result.ml:21:13>>*/ param[1];
     /*<<result.ml:21:30>>*/ return v;
    /*<<result.ml:21:76>>*/ }
   function get_ok$0(param){
     /*<<result.ml:22:14>>*/ if(0 === param[0]){
     var v = param[1];
      /*<<result.ml:22:31>>*/ return v;
    }
    var e =  /*<<result.ml:22:14>>*/ param[1];
     /*<<result.ml:22:46>>*/ return Stdlib[1].call(null, e) /*<<result.ml:22:59>>*/ ;
   }
   function get_error(param){
     /*<<result.ml:23:16>>*/ if(0 === param[0])
      /*<<result.ml:23:48>>*/ return Stdlib[1].call(null, "result is Ok _") /*<<result.ml:23:76>>*/ ;
    var e =  /*<<result.ml:23:16>>*/ param[1];
     /*<<result.ml:23:36>>*/ return e;
    /*<<result.ml:23:76>>*/ }
   function error_to_failure(param){
     /*<<result.ml:24:23>>*/ if(0 === param[0]){
     var v = param[1];
      /*<<result.ml:24:40>>*/ return v;
    }
    var e =  /*<<result.ml:24:23>>*/ param[1];
     /*<<result.ml:24:55>>*/ return Stdlib[2].call(null, e) /*<<result.ml:24:65>>*/ ;
   }
   function bind(r, f){
     /*<<result.ml:25:15>>*/ if(0 !== r[0])  /*<<result.ml:25:58>>*/ return r;
    var v =  /*<<result.ml:25:15>>*/ r[1];
     /*<<result.ml:25:36>>*/ return caml_call1(f, v) /*<<result.ml:25:59>>*/ ;
   }
   function join(e){
     /*<<result.ml:26:11>>*/ if(0 !== e[0])  /*<<result.ml:26:48>>*/ return e;
    var r =  /*<<result.ml:26:11>>*/ e[1];
     /*<<result.ml:26:28>>*/ return r;
    /*<<result.ml:26:49>>*/ }
   function map(f, e){
     /*<<result.ml:27:8>>*/ if(0 !== e[0])  /*<<result.ml:27:56>>*/ return e;
    var v =  /*<<result.ml:27:8>>*/ e[1];
     /*<<result.ml:27:32>>*/ return [0, caml_call1(f, v)] /*<<result.ml:27:37>>*/ ;
    /*<<result.ml:27:57>>*/ }
   function product(r0, r1){
     /*<<result.ml:28:20>>*/ if(0 === r0[0]){
     var v0 = r0[1];
     if(0 === r1[0]){
      var v1 = r1[1];
       /*<<result.ml:31:18>>*/ return [0, [0, v0, v1]];
     }
     var r =  /*<<result.ml:28:20>>*/ r1;
    }
    else
     var r = r0;
     /*<<result.ml:30:23>>*/ return r;
    /*<<result.ml:31:29>>*/ }
   function map_error(f, v){
     /*<<result.ml:33:14>>*/ if(0 === v[0])  /*<<result.ml:33:65>>*/ return v;
    var e =  /*<<result.ml:33:14>>*/ v[1];
     /*<<result.ml:33:44>>*/ return [1, caml_call1(f, e)] /*<<result.ml:33:49>>*/ ;
    /*<<result.ml:33:66>>*/ }
   function fold(ok, error, param){
     /*<<result.ml:34:9>>*/ if(0 === param[0]){
     var v = param[1];
      /*<<result.ml:34:39>>*/ return caml_call1(ok, v) /*<<result.ml:34:64>>*/ ;
    }
    var e =  /*<<result.ml:34:9>>*/ param[1];
     /*<<result.ml:34:57>>*/ return caml_call1(error, e) /*<<result.ml:34:64>>*/ ;
   }
   function retract(param){
     /*<<result.ml:35:14>>*/ if(0 === param[0]){
     var v = param[1];
      /*<<result.ml:35:31>>*/ return v;
    }
    var v$0 =  /*<<result.ml:35:14>>*/ param[1];
     /*<<result.ml:35:46>>*/ return v$0;
    /*<<result.ml:35:47>>*/ }
   function iter(f, param){
     /*<<result.ml:36:9>>*/ if(0 !== param[0])
      /*<<result.ml:36:47>>*/ return 0;
    var v =  /*<<result.ml:36:9>>*/ param[1];
     /*<<result.ml:36:30>>*/ return caml_call1(f, v) /*<<result.ml:36:49>>*/ ;
   }
   function iter_error(f, param){
     /*<<result.ml:37:15>>*/ if(0 === param[0])
      /*<<result.ml:37:53>>*/ return 0;
    var e =  /*<<result.ml:37:15>>*/ param[1];
     /*<<result.ml:37:39>>*/ return caml_call1(f, e) /*<<result.ml:37:55>>*/ ;
   }
   function is_ok(param){
     /*<<result.ml:38:12>>*/ return 0 === param[0] ? 1 : 0 /*<<result.ml:38:52>>*/ ;
   }
   function is_error(param){
     /*<<result.ml:39:15>>*/ return 0 === param[0] ? 0 : 1 /*<<result.ml:39:55>>*/ ;
   }
   function equal(ok, error, r0, r1){
     /*<<result.ml:41:29>>*/ if(0 === r0[0]){
     var v0 = r0[1];
     if(0 === r1[0]){
      var v1 = r1[1];
       /*<<result.ml:42:18>>*/ return caml_call2(ok, v0, v1) /*<<result.ml:44:15>>*/ ;
     }
    }
    else{
     var e0 =  /*<<result.ml:41:29>>*/ r0[1];
     if(0 !== r1[0]){
      var e1 = r1[1];
       /*<<result.ml:43:24>>*/ return caml_call2(error, e0, e1) /*<<result.ml:44:15>>*/ ;
     }
    }
     /*<<result.ml:44:10>>*/ return 0;
    /*<<result.ml:44:15>>*/ }
   function compare(ok, error, r0, r1){
     /*<<result.ml:46:31>>*/ if(0 === r0[0]){
     var v0 = r0[1];
     if(0 !== r1[0])  /*<<result.ml:49:19>>*/ return -1;
     var v1 =  /*<<result.ml:46:31>>*/ r1[1];
      /*<<result.ml:47:18>>*/ return caml_call2(ok, v0, v1) /*<<result.ml:50:20>>*/ ;
    }
    var e0 =  /*<<result.ml:46:31>>*/ r0[1];
    if(0 === r1[0])  /*<<result.ml:50:19>>*/ return 1;
    var e1 =  /*<<result.ml:46:31>>*/ r1[1];
     /*<<result.ml:48:24>>*/ return caml_call2(error, e0, e1) /*<<result.ml:50:20>>*/ ;
   }
   function to_option(param){
     /*<<result.ml:52:16>>*/ if(0 !== param[0])
      /*<<result.ml:52:53>>*/ return 0;
    var v =  /*<<result.ml:52:16>>*/ param[1];
     /*<<result.ml:52:33>>*/ return [0, v];
    /*<<result.ml:52:57>>*/ }
   function to_list(param){
     /*<<result.ml:53:14>>*/ if(0 !== param[0])
      /*<<result.ml:53:48>>*/ return 0;
    var v =  /*<<result.ml:53:14>>*/ param[1];
     /*<<result.ml:53:31>>*/ return [0, v, 0];
    /*<<result.ml:53:50>>*/ }
   function to_seq(param){
     /*<<result.ml:54:13>>*/ if(0 !== param[0])
      /*<<result.ml:54:56>>*/ return Stdlib_Seq[20];
    var
     v =  /*<<result.ml:54:13>>*/ param[1],
     _a_ =  /*<<result.ml:54:30>>*/ Stdlib_Seq[21];
    return function(_b_){
      /*<<?>>*/ return _a_(v, _b_);} /*<<result.ml:54:30>>*/ ;
    /*<<result.ml:54:65>>*/ }
   function let$(r, f){
     /*<<result.ml:59:21>>*/ return map(f, r) /*<<result.ml:59:28>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (4,
     [0,
      ok,
      error,
      value,
      get_ok,
      get_ok$0,
      get_error,
      error_to_failure,
      bind,
      join,
      map,
      product,
      map_error,
      fold,
      retract,
      iter,
      iter_error,
      is_ok,
      is_error,
      equal,
      compare,
      to_option,
      to_list,
      to_seq,
      [0, bind, product, let$, product]],
     "Stdlib__Result");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Bool
//# shape: Stdlib__Bool:[F(1)*,F(2)*,F(2)*,F(2)*,F(2)*,F(2)*,F(1)*,F(1)*,F(1)*,F(2)*,F(1)*]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime, caml_hash = runtime.caml_hash;
   function equal(_e_, _d_){return _e_ === _d_ ? 1 : 0;}
   var compare = runtime.caml_int_compare;
   function to_float(param){
     /*<<bool.ml:27:15>>*/ return param ? 1. : 0. /*<<bool.ml:27:48>>*/ ;
   }
   function to_string(param){
     /*<<bool.ml:36:16>>*/ return param ? "true" : "false" /*<<bool.ml:36:58>>*/ ;
   }
   function seeded_hash(seed, x){
     /*<<bool.ml:40:25>>*/ return caml_hash(10, 100, seed, x) /*<<bool.ml:40:56>>*/ ;
   }
   function hash(x){
     /*<<bool.ml:41:13>>*/ return caml_hash(10, 100, 0, x) /*<<bool.ml:41:41>>*/ ;
   }
   var
    Stdlib_Bool =
       /*<<?>>*/ [0,
       function(_d_){return 1 - _d_;},
       function(_d_, _c_){return _d_ & _c_;},
       function(_c_, _b_){return _c_ | _b_;},
       function(_b_, _a_){return _b_ ^ _a_;},
       equal,
       compare,
       function(_a_){return _a_;},
       to_float,
       to_string,
       seeded_hash,
       hash];
   runtime.caml_register_global(4, Stdlib_Bool, "Stdlib__Bool");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Char
//# unitInfo: Requires: Stdlib
//# shape: Stdlib__Char:[F(1),F(1),F(2)*,F(2)*,N,F(1)*,F(1)*,F(2)*,F(1)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_bytes_unsafe_set = runtime.caml_bytes_unsafe_set,
    caml_create_bytes = runtime.caml_create_bytes,
    caml_hash = runtime.caml_hash,
    caml_string_of_bytes = runtime.caml_string_of_bytes,
    Stdlib = runtime.caml_get_global_data().Stdlib;
   function chr(n){
     /*<<char.ml:22:2>>*/ if(0 <= n && 255 >= n)
      /*<<char.ml:22:55>>*/ return n;
     /*<<char.ml:22:27>>*/ return Stdlib[1].call(null, "Char.chr") /*<<char.ml:22:67>>*/ ;
   }
   function escaped(c){
    a:
    {
      /*<<char.ml:29:14>>*/ if(40 <= c){
      if(92 === c)  /*<<char.ml:31:12>>*/ return "\\\\";
       /*<<char.ml:29:14>>*/ if(127 <= c) break a;
     }
     else{
      if(32 > c){
       if(14 <= c) break a;
       switch(c){
         case 8:
           /*<<char.ml:35:12>>*/ return "\\b";
         case 9:
           /*<<char.ml:33:12>>*/ return "\\t";
         case 10:
           /*<<char.ml:32:12>>*/ return "\\n";
         case 13:
           /*<<char.ml:34:12>>*/ return "\\r";
         default: break a;
       }
      }
       /*<<char.ml:29:14>>*/ if(39 <= c)  /*<<char.ml:30:12>>*/ return "\\'";
     }
     var s$0 =  /*<<char.ml:37:14>>*/ caml_create_bytes(1);
      /*<<char.ml:38:6>>*/ caml_bytes_unsafe_set(s$0, 0, c);
      /*<<char.ml:39:6>>*/ return caml_string_of_bytes(s$0) /*<<char.ml:47:24>>*/ ;
    }
    var s =  /*<<char.ml:42:14>>*/ caml_create_bytes(4);
     /*<<char.ml:43:6>>*/ caml_bytes_unsafe_set(s, 0, 92);
     /*<<char.ml:44:6>>*/ caml_bytes_unsafe_set(s, 1, 48 + (c / 100 | 0) | 0);
     /*<<char.ml:45:6>>*/ caml_bytes_unsafe_set
     (s, 2, 48 + ((c / 10 | 0) % 10 | 0) | 0);
     /*<<char.ml:46:6>>*/ caml_bytes_unsafe_set(s, 3, 48 + (c % 10 | 0) | 0);
     /*<<char.ml:47:6>>*/ return caml_string_of_bytes(s) /*<<char.ml:47:24>>*/ ;
   }
   function lowercase_ascii(c){
     /*<<char.ml:49:22>>*/ return 25 < c - 65 >>> 0 ? c : c + 32 | 0 /*<<char.ml:51:10>>*/ ;
   }
   function uppercase_ascii(c){
     /*<<char.ml:53:22>>*/ return 25 < c - 97 >>> 0 ? c : c - 32 | 0 /*<<char.ml:55:10>>*/ ;
   }
   function compare(c1, c2){
     /*<<char.ml:59:20>>*/ return c1 - c2 | 0;
    /*<<char.ml:59:37>>*/ }
   function equal(c1, c2){
     /*<<char.ml:60:41>>*/ return 0 === (c1 - c2 | 0) ? 1 : 0;
    /*<<char.ml:60:45>>*/ }
   function seeded_hash(seed, x){
     /*<<char.ml:64:25>>*/ return caml_hash(10, 100, seed, x) /*<<char.ml:64:56>>*/ ;
   }
   function hash(x){
     /*<<char.ml:65:13>>*/ return caml_hash(10, 100, 0, x) /*<<char.ml:65:41>>*/ ;
   }
   function is_valid(param){
     /*<<char.ml:76:17>>*/ return 128 <= param ? 0 : 1 /*<<char.ml:76:63>>*/ ;
   }
   function is_upper(param){
     /*<<char.ml:77:17>>*/ return 25 < param - 65 >>> 0 ? 0 : 1 /*<<char.ml:77:57>>*/ ;
   }
   function is_lower(param){
     /*<<char.ml:78:17>>*/ return 25 < param - 97 >>> 0 ? 0 : 1 /*<<char.ml:78:57>>*/ ;
   }
   function is_letter(param){
    a:
    {
      /*<<char.ml:79:18>>*/ if(91 <= param){
      if(25 < param - 97 >>> 0) break a;
     }
     else if(65 > param) break a;
      /*<<char.ml:79:54>>*/ return 1;
    }
     /*<<char.ml:79:66>>*/ return 0;
    /*<<char.ml:79:71>>*/ }
   function is_alphanum(param){
    var _c_ =  /*<<char.ml:80:20>>*/ param - 48 | 0;
    a:
    {
     if(42 < _c_ >>> 0){
      if(25 < _c_ - 49 >>> 0) break a;
     }
     else if(6 >= _c_ - 10 >>> 0) break a;
      /*<<char.ml:81:46>>*/ return 1;
    }
     /*<<char.ml:81:58>>*/ return 0;
    /*<<char.ml:81:63>>*/ }
   function is_white(param){
    a:
    {
      /*<<char.ml:83:17>>*/ if(14 <= param){
      if(32 !== param) break a;
     }
     else if(9 > param) break a;
      /*<<char.ml:83:49>>*/ return 1;
    }
     /*<<char.ml:83:61>>*/ return 0;
    /*<<char.ml:83:66>>*/ }
   function is_blank(param){
     /*<<char.ml:84:17>>*/ if(9 !== param && 32 !== param)
      /*<<char.ml:84:52>>*/ return 0;
     /*<<char.ml:84:40>>*/ return 1;
    /*<<char.ml:84:57>>*/ }
   function is_graphic(param){
     /*<<char.ml:85:19>>*/ return 93 < param - 33 >>> 0 ? 0 : 1 /*<<char.ml:85:59>>*/ ;
   }
   function is_print(param){
     /*<<char.ml:86:17>>*/ return 94 < param - 32 >>> 0 ? 0 : 1 /*<<char.ml:86:57>>*/ ;
   }
   function is_control(param){
     /*<<char.ml:87:19>>*/ if(127 !== param && 32 <= param)
      /*<<char.ml:87:69>>*/ return 0;
     /*<<char.ml:87:57>>*/ return 1;
    /*<<char.ml:87:74>>*/ }
   function is_digit(param){
     /*<<char.ml:91:17>>*/ return 9 < param - 48 >>> 0 ? 0 : 1 /*<<char.ml:91:57>>*/ ;
   }
   function digit_to_int(c){
     /*<<char.ml:92:21>>*/ if(9 >= c - 48 >>> 0)
      /*<<char.ml:93:25>>*/ return c - 48 | 0;
    var
     _b_ =  /*<<char.ml:94:24>>*/ escaped(c),
     _c_ =
        /*<<char.ml:94:23>>*/ Stdlib[28].call
        (null, _b_, ": not a decimal digit");
     /*<<char.ml:94:60>>*/ return Stdlib[1].call(null, _c_);
   }
   function digit_of_int(n){
     /*<<char.ml:96:42>>*/ return 48 + Stdlib[18].call(null, n % 10 | 0) | 0 /*<<char.ml:96:56>>*/ ;
    /*<<char.ml:96:57>>*/ }
   function is_hex_digit(param){
    var _b_ =  /*<<char.ml:100:21>>*/ param - 48 | 0;
    a:
    {
     if(22 < _b_ >>> 0){
      if(5 < _b_ - 49 >>> 0) break a;
     }
     else if(6 >= _b_ - 10 >>> 0) break a;
      /*<<char.ml:101:46>>*/ return 1;
    }
     /*<<char.ml:102:11>>*/ return 0;
    /*<<char.ml:102:16>>*/ }
   function hex_digit_to_int(c){
     /*<<char.ml:104:25>>*/ if(65 <= c){
     if(97 <= c){
      if(103 > c)  /*<<char.ml:107:25>>*/ return (10 + c | 0) - 97 | 0;
     }
     else if(71 > c)  /*<<char.ml:106:25>>*/ return (10 + c | 0) - 65 | 0;
    }
    else if(9 >= c - 48 >>> 0)  /*<<char.ml:105:25>>*/ return c - 48 | 0;
    var
     _a_ =  /*<<char.ml:108:24>>*/ escaped(c),
     _b_ =
        /*<<char.ml:108:23>>*/ Stdlib[28].call
        (null, _a_, ": not a hexadecimal digit");
     /*<<char.ml:108:64>>*/ return Stdlib[1].call(null, _b_);
   }
   function lower_hex_digit_of_int(n){
    var d =  /*<<char.ml:111:12>>*/ Stdlib[18].call(null, n % 16 | 0);
     /*<<char.ml:112:4>>*/ return 10 <= d ? 87 + d | 0 : 48 + d | 0 /*<<char.ml:112:54>>*/ ;
   }
   function upper_hex_digit_of_int(n){
    var d =  /*<<char.ml:115:12>>*/ Stdlib[18].call(null, n % 16 | 0);
     /*<<char.ml:116:4>>*/ return 10 <= d ? 55 + d | 0 : 48 + d | 0 /*<<char.ml:116:54>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (10,
     [0,
      chr,
      escaped,
      compare,
      equal,
      [0,
       0,
       127,
       is_valid,
       is_upper,
       is_lower,
       is_letter,
       is_alphanum,
       is_white,
       is_blank,
       is_graphic,
       is_print,
       is_control,
       is_digit,
       digit_to_int,
       digit_of_int,
       is_hex_digit,
       hex_digit_to_int,
       lower_hex_digit_of_int,
       upper_hex_digit_of_int,
       uppercase_ascii,
       lowercase_ascii],
      lowercase_ascii,
      uppercase_ascii,
      seeded_hash,
      hash],
     "Stdlib__Char");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Uchar
//# unitInfo: Requires: Stdlib
//# shape: Stdlib__Uchar:[N,N,N,N,F(1),F(1),F(1)*,F(1),F(1)*,F(1)*,F(1)*,F(1)*,F(1),F(1)*,F(2)*,F(2)*,F(2)*,F(1)*,F(1)*,F(1)*,F(1)*,F(2)*,F(1)*,F(1)*,N,F(1),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_format_int = runtime.caml_format_int,
    caml_hash = runtime.caml_hash,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    global_data = runtime.caml_get_global_data(),
    Assert_failure = global_data.Assert_failure,
    Stdlib = global_data.Stdlib;
   function succ(u){
     /*<<uchar.ml:34:2>>*/ return u === 55295
            ? 57344
            : u
              === 1114111
              ?  /*<<uchar.ml:35:18>>*/ Stdlib
                 [1].call
                (null, "U+10FFFF has no successor")
              : u + 1 | 0 /*<<uchar.ml:36:7>>*/ ;
   }
   function pred(u){
     /*<<uchar.ml:39:2>>*/ return u === 57344
            ? 55295
            : u
              === 0
              ?  /*<<uchar.ml:40:18>>*/ Stdlib
                 [1].call
                (null, "U+0000 has no predecessor")
              : u - 1 | 0 /*<<uchar.ml:41:7>>*/ ;
   }
   function is_valid(i){
    var
     _f_ =  /*<<uchar.ml:43:17>>*/ 0 <= i ? 1 : 0,
     _g_ = _f_ ? i <= 55295 ? 1 : 0 : _f_;
    if(_g_)
     var _h_ = _g_;
    else
     var _i_ = 57344 <= i ? 1 : 0, _h_ = _i_ ? i <= 1114111 ? 1 : 0 : _i_;
    return _h_;
    /*<<uchar.ml:43:75>>*/ }
   function of_int(i){
     /*<<uchar.ml:44:18>>*/ if(is_valid(i))  /*<<uchar.ml:44:34>>*/ return i;
    var
     _f_ =
        /*<<uchar.ml:20:19>>*/  /*<<uchar.ml:20:36>>*/ Stdlib[28].call
        (null,
          /*<<uchar.ml:20:19>>*/ caml_format_int("%X", i),
         " is not a Unicode scalar value");
     /*<<uchar.ml:44:67>>*/ return Stdlib[1].call(null, _f_);
   }
   function is_char(u){
     /*<<uchar.ml:48:16>>*/ return u < 256 ? 1 : 0;
    /*<<uchar.ml:48:23>>*/ }
   function of_char(c){
     /*<<uchar.ml:49:16>>*/ return c;
    /*<<uchar.ml:49:27>>*/ }
   function to_char(u){
     /*<<uchar.ml:51:2>>*/ if(255 >= u)  /*<<uchar.ml:52:2>>*/ return u;
    var
     _e_ =
        /*<<uchar.ml:21:30>>*/ Stdlib[28].call
        (null, caml_format_int("%04X", u), " is not a latin1 character"),
     _f_ =  /*<<uchar.ml:21:80>>*/ Stdlib[28].call(null, "U+", _e_);
     /*<<uchar.ml:51:48>>*/ return Stdlib[1].call(null, _f_) /*<<uchar.ml:52:19>>*/ ;
   }
   function unsafe_to_char(_e_){ /*<<?>>*/ return _e_;}
   function equal(_e_, _d_){return _e_ === _d_ ? 1 : 0;}
   var compare = runtime.caml_int_compare;
   function seeded_hash(seed, x){
     /*<<uchar.ml:61:25>>*/ return caml_hash(10, 100, seed, x) /*<<uchar.ml:61:56>>*/ ;
   }
   function hash(x){
     /*<<uchar.ml:62:13>>*/ return caml_hash(10, 100, 0, x) /*<<uchar.ml:62:41>>*/ ;
   }
   function utf_decode_is_valid(d){
     /*<<uchar.ml:77:37>>*/ return 1 === (d >>> 27 | 0) ? 1 : 0;
    /*<<uchar.ml:77:58>>*/ }
   function utf_decode_length(d){
     /*<<uchar.ml:78:35>>*/ return (d >>> 24 | 0) & 7;
    /*<<uchar.ml:78:65>>*/ }
   function utf_decode_uchar(d){
     /*<<uchar.ml:79:34>>*/ return d & 16777215;
    /*<<uchar.ml:79:65>>*/ }
   function utf_decode(n, u){
     /*<<uchar.ml:80:30>>*/ return (8 | n) << 24 | u;
    /*<<uchar.ml:80:72>>*/ }
   function utf_decode_invalid(n){
     /*<<uchar.ml:81:36>>*/ return n << 24 | 65533;
    /*<<uchar.ml:81:63>>*/ }
   function utf_8_decode_length_of_byte(param){
     /*<<uchar.ml:83:34>>*/ return 194 <= param
            ? 240 <= param ? 245 <= param ? 0 : 4 : 224 <= param ? 3 : 2
            : 128 <= param ? 0 : 1 /*<<uchar.ml:89:10>>*/ ;
   }
   var
    cst_uchar_ml =  /*<<?>>*/ "uchar.ml",
    _a_ = [0, cst_uchar_ml, 99, 7],
    _b_ = [0, cst_uchar_ml, 94, 18];
   function utf_8_byte_length(u){
     /*<<uchar.ml:94:9>>*/ if(0 > u)
      /*<<uchar.ml:94:18>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _b_], 1);
     /*<<uchar.ml:95:9>>*/ if(127 >= u)  /*<<uchar.ml:95:24>>*/ return 1;
     /*<<uchar.ml:96:9>>*/ if(2047 >= u)  /*<<uchar.ml:96:24>>*/ return 2;
     /*<<uchar.ml:97:9>>*/ if(65535 >= u)  /*<<uchar.ml:97:24>>*/ return 3;
     /*<<uchar.ml:98:9>>*/ if(1114111 < u)
      /*<<uchar.ml:99:7>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _a_], 1);
     /*<<uchar.ml:98:26>>*/ return 4;
    /*<<uchar.ml:99:19>>*/ }
   var
    _c_ =  /*<<?>>*/ [0, cst_uchar_ml, 105, 7],
    _d_ = [0, cst_uchar_ml, 102, 18];
   function utf_16_byte_length(u){
     /*<<uchar.ml:102:9>>*/ if(0 > u)
      /*<<uchar.ml:102:18>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _d_], 1);
     /*<<uchar.ml:103:9>>*/ if(65535 >= u)  /*<<uchar.ml:103:24>>*/ return 2;
     /*<<uchar.ml:104:9>>*/ if(1114111 < u)
      /*<<uchar.ml:105:7>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _c_], 1);
     /*<<uchar.ml:104:26>>*/ return 4;
    /*<<uchar.ml:105:19>>*/ }
   var
    Stdlib_Uchar =
       /*<<?>>*/ [0,
       0,
       1114111,
       65279,
       65533,
       succ,
       pred,
       is_valid,
       of_int,
       function(_d_){return _d_;},
       function(_d_){return _d_;},
       is_char,
       of_char,
       to_char,
       unsafe_to_char,
       equal,
       compare,
       seeded_hash,
       hash,
       utf_decode_is_valid,
       utf_decode_uchar,
       utf_decode_length,
       utf_decode,
       utf_decode_invalid,
       utf_8_decode_length_of_byte,
       4,
       utf_8_byte_length,
       utf_16_byte_length];
   runtime.caml_register_global(13, Stdlib_Uchar, "Stdlib__Uchar");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__List
//# unitInfo: Requires: Stdlib
//# shape: Stdlib__List:[F(1),F(2),F(2),F(1)*,F(2)*,F(1)*,F(1),F(1),F(2),F(2),F(1),F(2),F(2),F(2),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(4),F(4),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*->F(1),F(2),F(1)*->F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(3),F(1)*->F(1)*,F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_compare = runtime.caml_compare,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var Stdlib = runtime.caml_get_global_data().Stdlib;
   function length(l$0){
    var len =  /*<<list.ml:25:15>>*/ 0, param = l$0;
    for(;;){
      /*<<list.ml:21:19>>*/ if(! param)  /*<<list.ml:22:10>>*/ return len;
     var
      l =  /*<<list.ml:21:19>>*/ param[2],
      len$0 =  /*<<list.ml:23:12>>*/ len + 1 | 0;
     len = len$0;
     param = l;
    }
    /*<<list.ml:25:29>>*/ }
   function cons(a, l){
     /*<<list.ml:27:15>>*/ return [0, a, l];
    /*<<list.ml:27:19>>*/ }
   function singleton(a){
     /*<<list.ml:29:18>>*/ return [0, a, 0];
    /*<<list.ml:29:21>>*/ }
   function hd(param){
     /*<<list.ml:31:9>>*/ if(! param)
      /*<<list.ml:32:10>>*/ return Stdlib[2].call(null, "hd") /*<<list.ml:33:13>>*/ ;
    var a =  /*<<list.ml:31:9>>*/ param[1];
     /*<<list.ml:33:12>>*/ return a;
    /*<<list.ml:33:13>>*/ }
   function tl(param){
     /*<<list.ml:35:9>>*/ if(! param)
      /*<<list.ml:36:10>>*/ return Stdlib[2].call(null, "tl") /*<<list.ml:37:13>>*/ ;
    var l =  /*<<list.ml:35:9>>*/ param[2];
     /*<<list.ml:37:12>>*/ return l;
    /*<<list.ml:37:13>>*/ }
   var cst_List_nth =  /*<<?>>*/ "List.nth";
   function nth(l, n){
     /*<<list.ml:40:2>>*/ if(0 > n)
      /*<<list.ml:40:16>>*/ return Stdlib[1].call(null, cst_List_nth) /*<<list.ml:45:16>>*/ ;
    var l$0 =  /*<<list.ml:40:2>>*/ l, n$0 = n;
    for(;;){
      /*<<list.ml:42:4>>*/ if(! l$0)
       /*<<list.ml:43:12>>*/ return Stdlib[2].call(null, "nth") /*<<list.ml:45:16>>*/ ;
     var l$1 =  /*<<list.ml:42:4>>*/ l$0[2], a = l$0[1];
      /*<<list.ml:44:14>>*/ if(0 === n$0)  /*<<list.ml:44:28>>*/ return a;
     var n$1 =  /*<<list.ml:44:35>>*/ n$0 - 1 | 0;
     l$0 = l$1;
     n$0 = n$1;
    }
    /*<<list.ml:45:16>>*/ }
   function nth_opt(l, n){
     /*<<list.ml:48:2>>*/ if(0 > n)
      /*<<list.ml:48:16>>*/ return Stdlib[1].call(null, cst_List_nth) /*<<list.ml:53:16>>*/ ;
    var l$0 =  /*<<list.ml:48:2>>*/ l, n$0 = n;
    for(;;){
      /*<<list.ml:50:4>>*/ if(! l$0)  /*<<list.ml:51:12>>*/ return 0;
     var l$1 =  /*<<list.ml:50:4>>*/ l$0[2], a = l$0[1];
      /*<<list.ml:52:14>>*/ if(0 === n$0)
       /*<<list.ml:52:28>>*/ return [0, a];
     var n$1 =  /*<<list.ml:52:40>>*/ n$0 - 1 | 0;
     l$0 = l$1;
     n$0 = n$1;
    }
    /*<<list.ml:53:16>>*/ }
   var append =  /*<<?>>*/ Stdlib[37];
   function rev_append(l1$1, l2$1){
    var l1 =  /*<<list.ml:58:2>>*/ l1$1, l2 = l2$1;
    for(;;){
     if(! l1)  /*<<list.ml:59:10>>*/ return l2;
     var
      l1$0 =  /*<<list.ml:58:2>>*/ l1[2],
      a = l1[1],
      l2$0 =  /*<<list.ml:60:14>>*/ [0, a, l2];
     l1 = l1$0;
     l2 = l2$0;
    }
    /*<<list.ml:60:36>>*/ }
   function rev(l){
     /*<<list.ml:62:12>>*/ return rev_append(l, 0) /*<<list.ml:62:27>>*/ ;
   }
   function init(len, f){
     /*<<list.ml:73:2>>*/ if(0 > len)
      /*<<list.ml:73:18>>*/ return Stdlib[1].call(null, "List.init") /*<<list.ml:74:20>>*/ ;
    var last =  /*<<list.ml:74:2>>*/ len - 1 | 0;
     /*<<list.ml:65:2>>*/ if(last < 0)  /*<<list.ml:65:19>>*/ return 0;
    var i$1 =  /*<<list.ml:74:2>>*/ 0;
     /*<<list.ml:66:7>>*/ if(0 === last)
      /*<<list.ml:66:25>>*/ return [0, caml_call1(f, i$1), 0] /*<<list.ml:66:28>>*/ ;
    var
     r1 =  /*<<list.ml:68:13>>*/ caml_call1(f, i$1),
     r2 =  /*<<list.ml:69:13>>*/ caml_call1(f, 1),
     block =  /*<<list.ml:70:4>>*/ [0, r2, 24029],
     dst =  /*<<list.ml:70:16>>*/ block,
     offset = 1,
     i = 2;
    for(;;){
      /*<<list.ml:65:2>>*/ if(last < i)
       /*<<list.ml:65:19>>*/ dst[offset + 1] = 0;
     else{
       /*<<list.ml:66:7>>*/ if(i !== last){
       var
        r1$0 =  /*<<list.ml:68:13>>*/ caml_call1(f, i),
        r2$0 =  /*<<list.ml:69:13>>*/ caml_call1(f, i + 1 | 0),
        dst$0 =  /*<<list.ml:70:4>>*/ [0, r2$0, 24029];
       dst[offset + 1] = [0, r1$0, dst$0];
       var i$0 = i + 2 | 0;
       dst = dst$0;
       offset = 1;
       i = i$0;
       continue;
      }
       /*<<list.ml:66:25>>*/ dst[offset + 1] = [0, caml_call1(f, i), 0];
     }
      /*<<list.ml:70:33>>*/ return [0, r1, block];
    }
    /*<<list.ml:74:20>>*/ }
   function flatten(param){
     /*<<list.ml:76:18>>*/ if(! param)  /*<<list.ml:77:10>>*/ return 0;
    var
     r =  /*<<list.ml:76:18>>*/ param[2],
     l = param[1],
     _f_ =  /*<<list.ml:78:16>>*/ flatten(r);
     /*<<list.ml:78:25>>*/ return Stdlib[37].call(null, l, _f_);
   }
   function map(f, param){
     /*<<list.ml:82:28>>*/ if(! param)  /*<<list.ml:83:10>>*/ return 0;
    var match =  /*<<list.ml:82:28>>*/ param[2], a1 = param[1];
    if(! match){
     var r1$0 =  /*<<list.ml:85:15>>*/ caml_call1(f, a1);
      /*<<list.ml:86:6>>*/ return [0, r1$0, 0];
    }
    var
     l =  /*<<list.ml:82:28>>*/ match[2],
     a2 = match[1],
     r1 =  /*<<list.ml:88:15>>*/ caml_call1(f, a1),
     r2 =  /*<<list.ml:89:15>>*/ caml_call1(f, a2),
     block =  /*<<list.ml:90:6>>*/ [0, r2, 24029],
     dst =  /*<<list.ml:90:14>>*/ block,
     offset = 1,
     param$0 = l;
    for(;;){
      /*<<list.ml:82:28>>*/ if(param$0){
      var match$0 = param$0[2], a1$0 = param$0[1];
      if(match$0){
       var
        l$0 = match$0[2],
        a2$0 = match$0[1],
        r1$1 =  /*<<list.ml:88:15>>*/ caml_call1(f, a1$0),
        r2$0 =  /*<<list.ml:89:15>>*/ caml_call1(f, a2$0),
        dst$0 =  /*<<list.ml:90:6>>*/ [0, r2$0, 24029];
       dst[offset + 1] = [0, r1$1, dst$0];
       dst = dst$0;
       offset = 1;
       param$0 = l$0;
       continue;
      }
      var r1$2 =  /*<<list.ml:85:15>>*/ caml_call1(f, a1$0);
       /*<<list.ml:86:6>>*/ dst[offset + 1] = [0, r1$2, 0];
     }
     else
       /*<<list.ml:83:10>>*/ dst[offset + 1] = 0;
      /*<<list.ml:90:21>>*/ return [0, r1, block];
    }
   }
   function mapi(f, l$1){
     /*<<list.ml:92:29>>*/ if(! l$1)  /*<<list.ml:93:10>>*/ return 0;
    var
     match =  /*<<list.ml:92:29>>*/ l$1[2],
     a1 = l$1[1],
     i$1 =  /*<<list.ml:102:15>>*/ 0;
     /*<<list.ml:92:29>>*/ if(! match){
     var r1$0 =  /*<<list.ml:95:15>>*/ caml_call2(f, i$1, a1);
      /*<<list.ml:96:6>>*/ return [0, r1$0, 0];
    }
    var
     l =  /*<<list.ml:92:29>>*/ match[2],
     a2 = match[1],
     r1 =  /*<<list.ml:98:15>>*/ caml_call2(f, i$1, a1),
     r2 =  /*<<list.ml:99:15>>*/ caml_call2(f, 1, a2),
     block =  /*<<list.ml:100:6>>*/ [0, r2, 24029],
     dst =  /*<<list.ml:100:14>>*/ block,
     offset = 1,
     i = 2,
     param = l;
    for(;;){
      /*<<list.ml:92:29>>*/ if(param){
      var match$0 = param[2], a1$0 = param[1];
      if(match$0){
       var
        l$0 = match$0[2],
        a2$0 = match$0[1],
        r1$1 =  /*<<list.ml:98:15>>*/ caml_call2(f, i, a1$0),
        r2$0 =  /*<<list.ml:99:15>>*/ caml_call2(f, i + 1 | 0, a2$0),
        dst$0 =  /*<<list.ml:100:6>>*/ [0, r2$0, 24029];
       dst[offset + 1] = [0, r1$1, dst$0];
       var i$0 = i + 2 | 0;
       dst = dst$0;
       offset = 1;
       i = i$0;
       param = l$0;
       continue;
      }
      var r1$2 =  /*<<list.ml:95:15>>*/ caml_call2(f, i, a1$0);
       /*<<list.ml:96:6>>*/ dst[offset + 1] = [0, r1$2, 0];
     }
     else
       /*<<list.ml:93:10>>*/ dst[offset + 1] = 0;
      /*<<list.ml:100:28>>*/ return [0, r1, block];
    }
    /*<<list.ml:102:25>>*/ }
   function rev_map(f, l){
    var accu =  /*<<list.ml:109:2>>*/ 0, param = l;
    for(;;){
      /*<<list.ml:105:17>>*/ if(! param)  /*<<list.ml:106:12>>*/ return accu;
     var
      l$0 =  /*<<list.ml:105:17>>*/ param[2],
      a = param[1],
      accu$0 =  /*<<list.ml:107:22>>*/ [0, caml_call1(f, a), accu];
      /*<<list.ml:107:25>>*/ accu = accu$0;
     param = l$0;
    }
    /*<<list.ml:109:13>>*/ }
   function iter(f, param$0){
    var param =  /*<<list.ml:112:13>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:113:10>>*/ return 0;
     var l =  /*<<list.ml:112:13>>*/ param[2], a = param[1];
      /*<<list.ml:114:12>>*/ caml_call1(f, a);
      /*<<list.ml:114:15>>*/ param = l;
    }
    /*<<list.ml:114:25>>*/ }
   function iteri(f, l$0){
    var i =  /*<<list.ml:120:16>>*/ 0, param = l$0;
    for(;;){
      /*<<list.ml:116:14>>*/ if(! param)  /*<<list.ml:117:10>>*/ return 0;
     var l =  /*<<list.ml:116:14>>*/ param[2], a = param[1];
      /*<<list.ml:118:12>>*/ caml_call2(f, i, a);
     var i$0 =  /*<<list.ml:118:17>>*/ i + 1 | 0;
     i = i$0;
     param = l;
    }
    /*<<list.ml:120:27>>*/ }
   function fold_left(f, accu$1, l$1){
    var accu =  /*<<list.ml:123:2>>*/ accu$1, l = l$1;
    for(;;){
     if(! l)  /*<<list.ml:124:10>>*/ return accu;
     var
      l$0 =  /*<<list.ml:123:2>>*/ l[2],
      a = l[1],
      accu$0 =  /*<<list.ml:125:24>>*/ caml_call2(f, accu, a);
      /*<<list.ml:125:34>>*/ accu = accu$0;
     l = l$0;
    }
    /*<<list.ml:125:36>>*/ }
   function fold_right(f, l, accu){
     /*<<list.ml:128:2>>*/ if(! l)  /*<<list.ml:129:10>>*/ return accu;
    var l$0 =  /*<<list.ml:128:2>>*/ l[2], a = l[1];
     /*<<list.ml:130:16>>*/ return  /*<<list.ml:130:37>>*/ caml_call2
            (f, a,  /*<<list.ml:130:16>>*/ fold_right(f, l$0, accu)) /*<<list.ml:130:37>>*/ ;
   }
   function map2(f, l1, l2){
    var cst_List_map2 =  /*<<?>>*/ "List.map2";
     /*<<list.ml:133:2>>*/ if(l1){
     var _e_ = l1[2], a1 = l1[1];
     if(_e_){
      if(l2){
       var match = l2[2];
       if(match){
        var
         l2$0 = match[2],
         b2 = match[1],
         b1 = l2[1],
         l1$0 = _e_[2],
         a2 = _e_[1],
         r1 =  /*<<list.ml:139:15>>*/ caml_call2(f, a1, b1),
         r2 =  /*<<list.ml:140:15>>*/ caml_call2(f, a2, b2),
         block =  /*<<list.ml:141:6>>*/ [0, r2, 24029],
         dst =  /*<<list.ml:141:14>>*/ block,
         offset = 1,
         l1$1 = l1$0,
         l2$1 = l2$0;
        for(;;){
         a:
         {
           /*<<list.ml:133:2>>*/ if(l1$1){
           var _f_ = l1$1[2], a1$0 = l1$1[1];
           if(_f_){
            if(l2$1){
             var match$0 = l2$1[2];
             if(match$0){
              var
               l2$2 = match$0[2],
               b2$0 = match$0[1],
               b1$1 = l2$1[1],
               l1$2 = _f_[2],
               a2$0 = _f_[1],
               r1$1 =  /*<<list.ml:139:15>>*/ caml_call2(f, a1$0, b1$1),
               r2$0 =  /*<<list.ml:140:15>>*/ caml_call2(f, a2$0, b2$0),
               dst$0 =  /*<<list.ml:141:6>>*/ [0, r2$0, 24029];
              dst[offset + 1] = [0, r1$1, dst$0];
              dst = dst$0;
              offset = 1;
              l1$1 = l1$2;
              l2$1 = l2$2;
              continue;
             }
            }
           }
           else if(l2$1 && ! l2$1[2]){
            var
             b1$2 =  /*<<list.ml:133:2>>*/ l2$1[1],
             r1$2 =  /*<<list.ml:136:15>>*/ caml_call2(f, a1$0, b1$2);
             /*<<list.ml:137:6>>*/ dst[offset + 1] = [0, r1$2, 0];
            break a;
           }
          }
          else if(! l2$1){
            /*<<list.ml:134:16>>*/ dst[offset + 1] = 0;
           break a;
          }
           /*<<list.ml:142:14>>*/ dst[offset + 1] =
           Stdlib[1].call(null, cst_List_map2);
         }
          /*<<list.ml:141:26>>*/ return [0, r1, block];
        }
       }
      }
     }
     else if(l2 && ! l2[2]){
      var
       b1$0 =  /*<<list.ml:133:2>>*/ l2[1],
       r1$0 =  /*<<list.ml:136:15>>*/ caml_call2(f, a1, b1$0);
       /*<<list.ml:137:6>>*/ return [0, r1$0, 0];
     }
    }
    else if(! l2)  /*<<list.ml:134:16>>*/ return 0;
     /*<<list.ml:142:14>>*/ return Stdlib[1].call(null, cst_List_map2) /*<<list.ml:142:37>>*/ ;
   }
   function rev_map2(f, l1, l2){
    var accu =  /*<<list.ml:151:2>>*/ 0, l1$0 = l1, l2$0 = l2;
    for(;;){
      /*<<list.ml:146:4>>*/ if(l1$0){
      if(l2$0){
       var
        l2$1 = l2$0[2],
        a2 = l2$0[1],
        l1$1 = l1$0[2],
        a1 = l1$0[1],
        accu$0 =  /*<<list.ml:148:35>>*/ [0, caml_call2(f, a1, a2), accu];
        /*<<list.ml:148:42>>*/ accu = accu$0;
       l1$0 = l1$1;
       l2$0 = l2$1;
       continue;
      }
     }
     else if(! l2$0)  /*<<list.ml:147:18>>*/ return accu;
      /*<<list.ml:149:16>>*/ return Stdlib[1].call(null, "List.rev_map2") /*<<list.ml:151:18>>*/ ;
    }
   }
   function iter2(f, l1$1, l2$1){
    var l1 =  /*<<list.ml:155:2>>*/ l1$1, l2 = l2$1;
    for(;;){
     if(l1){
      if(l2){
       var l2$0 = l2[2], a2 = l2[1], l1$0 = l1[2], a1 = l1[1];
        /*<<list.ml:157:24>>*/ caml_call2(f, a1, a2);
        /*<<list.ml:157:31>>*/ l1 = l1$0;
       l2 = l2$0;
       continue;
      }
     }
     else if(! l2)  /*<<list.ml:156:16>>*/ return 0;
      /*<<list.ml:158:14>>*/ return Stdlib[1].call(null, "List.iter2") /*<<list.ml:158:38>>*/ ;
    }
   }
   function fold_left2(f, accu$1, l1$1, l2$1){
    var accu =  /*<<list.ml:161:2>>*/ accu$1, l1 = l1$1, l2 = l2$1;
    for(;;){
     if(l1){
      if(l2){
       var
        l2$0 = l2[2],
        a2 = l2[1],
        l1$0 = l1[2],
        a1 = l1[1],
        accu$0 =  /*<<list.ml:163:37>>*/ caml_call3(f, accu, a1, a2);
        /*<<list.ml:163:51>>*/ accu = accu$0;
       l1 = l1$0;
       l2 = l2$0;
       continue;
      }
     }
     else if(! l2)  /*<<list.ml:162:16>>*/ return accu;
      /*<<list.ml:164:14>>*/ return Stdlib[1].call(null, "List.fold_left2") /*<<list.ml:164:43>>*/ ;
    }
   }
   function fold_right2(f, l1, l2, accu){
     /*<<list.ml:167:2>>*/ if(l1){
     if(l2){
      var l2$0 = l2[2], a2 = l2[1], l1$0 = l1[2], a1 = l1[1];
       /*<<list.ml:169:32>>*/ return  /*<<list.ml:169:58>>*/ caml_call3
              (f,
               a1,
               a2,
                /*<<list.ml:169:32>>*/ fold_right2(f, l1$0, l2$0, accu)) /*<<list.ml:170:44>>*/ ;
     }
    }
    else if(! l2)  /*<<list.ml:168:16>>*/ return accu;
     /*<<list.ml:170:14>>*/ return Stdlib[1].call(null, "List.fold_right2") /*<<list.ml:170:44>>*/ ;
   }
   function for_all(p, param$0){
    var param =  /*<<list.ml:172:16>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:173:10>>*/ return 1;
     var
      l =  /*<<list.ml:172:16>>*/ param[2],
      a = param[1],
      _e_ =  /*<<list.ml:174:12>>*/ caml_call1(p, a);
      /*<<list.ml:174:15>>*/ if(! _e_) return _e_;
     param = l;
    }
    /*<<list.ml:174:30>>*/ }
   function exists(p, param$0){
    var param =  /*<<list.ml:176:15>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:177:10>>*/ return 0;
     var
      l =  /*<<list.ml:176:15>>*/ param[2],
      a = param[1],
      _e_ =  /*<<list.ml:178:12>>*/ caml_call1(p, a);
      /*<<list.ml:178:15>>*/ if(_e_) return _e_;
     param = l;
    }
    /*<<list.ml:178:29>>*/ }
   function for_all2(p, l1$1, l2$1){
    var l1 =  /*<<list.ml:181:2>>*/ l1$1, l2 = l2$1;
    for(;;){
     if(l1){
      if(l2){
       var
        l2$0 = l2[2],
        a2 = l2[1],
        l1$0 = l1[2],
        a1 = l1[1],
        _e_ =  /*<<list.ml:183:24>>*/ caml_call2(p, a1, a2);
        /*<<list.ml:183:31>>*/ if(! _e_) return _e_;
       l1 = l1$0;
       l2 = l2$0;
       continue;
      }
     }
     else if(! l2)  /*<<list.ml:182:16>>*/ return 1;
      /*<<list.ml:184:14>>*/ return Stdlib[1].call(null, "List.for_all2") /*<<list.ml:184:41>>*/ ;
    }
   }
   function exists2(p, l1$1, l2$1){
    var l1 =  /*<<list.ml:187:2>>*/ l1$1, l2 = l2$1;
    for(;;){
     if(l1){
      if(l2){
       var
        l2$0 = l2[2],
        a2 = l2[1],
        l1$0 = l1[2],
        a1 = l1[1],
        _e_ =  /*<<list.ml:189:24>>*/ caml_call2(p, a1, a2);
        /*<<list.ml:189:31>>*/ if(_e_) return _e_;
       l1 = l1$0;
       l2 = l2$0;
       continue;
      }
     }
     else if(! l2)  /*<<list.ml:188:16>>*/ return 0;
      /*<<list.ml:190:14>>*/ return Stdlib[1].call(null, "List.exists2") /*<<list.ml:190:40>>*/ ;
    }
   }
   function mem(x, param$0){
    var param =  /*<<list.ml:192:12>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:193:10>>*/ return 0;
     var
      l =  /*<<list.ml:192:12>>*/ param[2],
      a = param[1],
      _e_ =  /*<<list.ml:194:12>>*/ 0 === caml_compare(a, x) ? 1 : 0;
      /*<<list.ml:194:23>>*/ if(_e_) return _e_;
     param = l;
    }
    /*<<list.ml:194:38>>*/ }
   function memq(x, param$0){
    var param =  /*<<list.ml:196:13>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:197:10>>*/ return 0;
     var
      l =  /*<<list.ml:196:13>>*/ param[2],
      a = param[1],
      _e_ =  /*<<list.ml:198:12>>*/ a === x ? 1 : 0;
     if(_e_) return _e_;
     param = l;
    }
    /*<<list.ml:198:30>>*/ }
   function assoc(x, param$0){
    var param =  /*<<list.ml:200:14>>*/ param$0;
    for(;;){
     if(! param)
       /*<<list.ml:201:10>>*/ throw caml_maybe_attach_backtrace(Stdlib[8], 1);
     var
      l =  /*<<list.ml:200:14>>*/ param[2],
      match = param[1],
      b = match[2],
      a = match[1];
      /*<<list.ml:202:19>>*/ if(0 === caml_compare(a, x))
       /*<<list.ml:202:40>>*/ return b;
      /*<<list.ml:202:30>>*/ param = l;
    }
    /*<<list.ml:202:56>>*/ }
   function assoc_opt(x, param$0){
    var param =  /*<<list.ml:204:18>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:205:10>>*/ return 0;
     var
      l =  /*<<list.ml:204:18>>*/ param[2],
      match = param[1],
      b = match[2],
      a = match[1];
      /*<<list.ml:206:19>>*/ if(0 === caml_compare(a, x))
       /*<<list.ml:206:40>>*/ return [0, b];
      /*<<list.ml:206:30>>*/ param = l;
    }
    /*<<list.ml:206:65>>*/ }
   function assq(x, param$0){
    var param =  /*<<list.ml:208:13>>*/ param$0;
    for(;;){
     if(! param)
       /*<<list.ml:209:10>>*/ throw caml_maybe_attach_backtrace(Stdlib[8], 1);
     var
      l =  /*<<list.ml:208:13>>*/ param[2],
      match = param[1],
      b = match[2],
      a = match[1];
      /*<<list.ml:210:16>>*/ if(a === x)  /*<<list.ml:210:31>>*/ return b;
      /*<<list.ml:210:16>>*/ param = l;
    }
    /*<<list.ml:210:46>>*/ }
   function assq_opt(x, param$0){
    var param =  /*<<list.ml:212:17>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:213:10>>*/ return 0;
     var
      l =  /*<<list.ml:212:17>>*/ param[2],
      match = param[1],
      b = match[2],
      a = match[1];
      /*<<list.ml:214:16>>*/ if(a === x)
       /*<<list.ml:214:31>>*/ return [0, b];
      /*<<list.ml:214:16>>*/ param = l;
    }
    /*<<list.ml:214:55>>*/ }
   function mem_assoc(x, param$0){
    var param =  /*<<list.ml:216:18>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:217:10>>*/ return 0;
     var
      l =  /*<<list.ml:216:18>>*/ param[2],
      a = param[1][1],
      _e_ =  /*<<list.ml:218:19>>*/ 0 === caml_compare(a, x) ? 1 : 0;
      /*<<list.ml:218:30>>*/ if(_e_) return _e_;
     param = l;
    }
    /*<<list.ml:218:51>>*/ }
   function mem_assq(x, param$0){
    var param =  /*<<list.ml:220:17>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:221:10>>*/ return 0;
     var
      l =  /*<<list.ml:220:17>>*/ param[2],
      a = param[1][1],
      _e_ =  /*<<list.ml:222:19>>*/ a === x ? 1 : 0;
     if(_e_) return _e_;
     param = l;
    }
    /*<<list.ml:222:41>>*/ }
   function remove_assoc(x, param){
     /*<<list.ml:224:21>>*/ if(! param)  /*<<list.ml:225:10>>*/ return 0;
    var l =  /*<<list.ml:224:21>>*/ param[2], pair = param[1], a = pair[1];
     /*<<list.ml:227:9>>*/ return 0 === caml_compare(a, x)
            ? l
            : [0, pair,  /*<<list.ml:227:45>>*/ remove_assoc(x, l)] /*<<list.ml:227:61>>*/ ;
   }
   function remove_assq(x, param){
     /*<<list.ml:229:20>>*/ if(! param)  /*<<list.ml:230:10>>*/ return 0;
    var l =  /*<<list.ml:229:20>>*/ param[2], pair = param[1], a = pair[1];
     /*<<list.ml:231:27>>*/ return a === x
            ? l
            : [0, pair,  /*<<list.ml:231:57>>*/ remove_assq(x, l)] /*<<list.ml:231:72>>*/ ;
   }
   function find(p, param$0){
    var param =  /*<<list.ml:233:13>>*/ param$0;
    for(;;){
     if(! param)
       /*<<list.ml:234:10>>*/ throw caml_maybe_attach_backtrace(Stdlib[8], 1);
     var l =  /*<<list.ml:233:13>>*/ param[2], x = param[1];
      /*<<list.ml:235:17>>*/ if(caml_call1(p, x))
       /*<<list.ml:235:26>>*/ return x;
      /*<<list.ml:235:20>>*/ param = l;
    }
    /*<<list.ml:235:41>>*/ }
   function find_opt(p, param$0){
    var param =  /*<<list.ml:237:17>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:238:10>>*/ return 0;
     var l =  /*<<list.ml:237:17>>*/ param[2], x = param[1];
      /*<<list.ml:239:17>>*/ if(caml_call1(p, x))
       /*<<list.ml:239:26>>*/ return [0, x];
      /*<<list.ml:239:20>>*/ param = l;
    }
    /*<<list.ml:239:50>>*/ }
   function find_index(p){
     /*<<list.ml:245:2>>*/ return function(param$0){
     var i =  /*<<?>>*/ 0, param = param$0;
     for(;;){
       /*<<list.ml:242:14>>*/ if(! param)  /*<<list.ml:243:10>>*/ return 0;
      var l =  /*<<list.ml:242:14>>*/ param[2], a = param[1];
       /*<<list.ml:244:17>>*/ if(caml_call1(p, a))
        /*<<list.ml:244:26>>*/ return [0, i];
      var i$0 =  /*<<list.ml:244:38>>*/ i + 1 | 0;
      i = i$0;
      param = l;
     }} /*<<list.ml:245:2>>*/ ;
    /*<<list.ml:245:7>>*/ }
   function find_map(f, param$0){
    var param =  /*<<list.ml:247:17>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:248:10>>*/ return 0;
     var
      l =  /*<<list.ml:247:17>>*/ param[2],
      x = param[1],
      result =  /*<<list.ml:250:17>>*/ caml_call1(f, x);
      /*<<list.ml:250:20>>*/ if(result)  /*<<list.ml:251:29>>*/ return result;
      /*<<list.ml:250:20>>*/ param = l;
    }
    /*<<list.ml:253:8>>*/ }
   function find_mapi(f){
     /*<<list.ml:263:2>>*/ return function(param$0){
     var i =  /*<<?>>*/ 0, param = param$0;
     for(;;){
       /*<<list.ml:256:14>>*/ if(! param)  /*<<list.ml:257:10>>*/ return 0;
      var
       l =  /*<<list.ml:256:14>>*/ param[2],
       x = param[1],
       result =  /*<<list.ml:259:17>>*/ caml_call2(f, i, x);
       /*<<list.ml:259:22>>*/ if(result)
        /*<<list.ml:260:29>>*/ return result;
      var i$0 =  /*<<list.ml:261:17>>*/ i + 1 | 0;
      i = i$0;
      param = l;
     }} /*<<list.ml:263:2>>*/ ;
    /*<<list.ml:263:7>>*/ }
   function find_all(p, param$1){
    var param =  /*<<list.ml:265:33>>*/ param$1;
    for(;;){
     if(! param)  /*<<list.ml:266:10>>*/ return 0;
     var l =  /*<<list.ml:265:33>>*/ param[2], x = param[1];
      /*<<list.ml:267:17>>*/ if(caml_call1(p, x)) break;
      /*<<list.ml:267:20>>*/ param = l;
    }
    var
     block =  /*<<list.ml:267:26>>*/ [0, x, 24029],
     dst =  /*<<list.ml:267:31>>*/ block,
     offset = 1,
     param$0 = l;
    for(;;){
      /*<<list.ml:265:33>>*/ if(! param$0){
       /*<<list.ml:266:10>>*/ dst[offset + 1] = 0;
       /*<<list.ml:267:43>>*/ return block;
     }
     var l$0 =  /*<<list.ml:265:33>>*/ param$0[2], x$0 = param$0[1];
      /*<<list.ml:267:17>>*/ if(caml_call1(p, x$0)){
      var dst$0 =  /*<<list.ml:267:26>>*/ [0, x$0, 24029];
      dst[offset + 1] = dst$0;
      dst = dst$0;
      offset = 1;
      param$0 = l$0;
     }
     else
       /*<<list.ml:267:20>>*/ param$0 = l$0;
    }
    /*<<list.ml:267:61>>*/ }
   function filteri(p, l$1){
    var i =  /*<<list.ml:277:18>>*/ 0, param = l$1;
    for(;;){
      /*<<list.ml:271:32>>*/ if(! param)  /*<<list.ml:272:10>>*/ return 0;
     var
      l =  /*<<list.ml:271:32>>*/ param[2],
      x = param[1],
      i$0 =  /*<<list.ml:274:6>>*/ i + 1 | 0;
      /*<<list.ml:275:9>>*/ if(caml_call2(p, i, x)) break;
      /*<<list.ml:275:14>>*/ i = i$0;
     param = l;
    }
    var
     block =  /*<<list.ml:275:20>>*/ [0, x, 24029],
     dst =  /*<<list.ml:275:25>>*/ block,
     offset = 1,
     i$1 = i$0,
     param$0 = l;
    for(;;){
      /*<<list.ml:271:32>>*/ if(! param$0){
       /*<<list.ml:272:10>>*/ dst[offset + 1] = 0;
       /*<<list.ml:275:39>>*/ return block;
     }
     var
      l$0 =  /*<<list.ml:271:32>>*/ param$0[2],
      x$0 = param$0[1],
      i$2 =  /*<<list.ml:274:6>>*/ i$1 + 1 | 0;
      /*<<list.ml:275:9>>*/ if(caml_call2(p, i$1, x$0)){
      var dst$0 =  /*<<list.ml:275:20>>*/ [0, x$0, 24029];
      dst[offset + 1] = dst$0;
      dst = dst$0;
      offset = 1;
      i$1 = i$2;
      param$0 = l$0;
     }
     else{ /*<<list.ml:275:14>>*/ i$1 = i$2; param$0 = l$0;}
    }
    /*<<list.ml:277:31>>*/ }
   function filter_map(f, param$1){
    var param =  /*<<list.ml:279:35>>*/ param$1;
    for(;;){
     if(! param)  /*<<list.ml:280:10>>*/ return 0;
     var
      l =  /*<<list.ml:279:35>>*/ param[2],
      x = param[1],
      match =  /*<<list.ml:282:12>>*/ caml_call1(f, x);
      /*<<list.ml:282:15>>*/ if(match) break;
     param = l;
    }
    var
     v =  /*<<list.ml:279:35>>*/ match[1],
     block =  /*<<list.ml:284:18>>*/ [0, v, 24029],
     dst =  /*<<list.ml:284:23>>*/ block,
     offset = 1,
     param$0 = l;
    for(;;){
      /*<<list.ml:279:35>>*/ if(! param$0){
       /*<<list.ml:280:10>>*/ dst[offset + 1] = 0;
       /*<<list.ml:284:37>>*/ return block;
     }
     var
      l$0 =  /*<<list.ml:279:35>>*/ param$0[2],
      x$0 = param$0[1],
      match$0 =  /*<<list.ml:282:12>>*/ caml_call1(f, x$0);
      /*<<list.ml:282:15>>*/ if(match$0){
      var v$0 = match$0[1], dst$0 =  /*<<list.ml:284:18>>*/ [0, v$0, 24029];
      dst[offset + 1] = dst$0;
      dst = dst$0;
      offset = 1;
      param$0 = l$0;
     }
     else
       /*<<list.ml:282:15>>*/ param$0 = l$0;
    }
    /*<<list.ml:284:37>>*/ }
   function concat_map(f, param$0){
    var param =  /*<<list.ml:286:35>>*/ param$0;
    for(;;){
     if(! param)  /*<<list.ml:287:10>>*/ return 0;
     var
      xs =  /*<<list.ml:286:35>>*/ param[2],
      x = param[1],
      ys =  /*<<list.ml:288:32>>*/ caml_call1(f, x);
      /*<<list.ml:290:2>>*/ if(ys) break;
     param = xs;
    }
    var
     ys$1 =  /*<<list.ml:286:35>>*/ ys[2],
     y = ys[1],
     xs$1 =  /*<<list.ml:292:20>>*/ xs,
     ys$4 = ys$1,
     offset$0 = 1,
     block =  /*<<list.ml:292:15>>*/ [0, y, 24029],
     dst$1 =  /*<<list.ml:292:20>>*/ block;
    for(;;){
     var dst =  /*<<list.ml:290:2>>*/ dst$1, offset = offset$0, ys$2 = ys$4;
     for(;;){
      if(! ys$2){
        /*<<list.ml:286:35>>*/ if(xs$1){
        var
         xs$0 = xs$1[2],
         x$0 = xs$1[1],
         ys$0 =  /*<<list.ml:288:32>>*/ caml_call1(f, x$0);
         /*<<list.ml:288:37>>*/ xs$1 = xs$0;
        ys$4 = ys$0;
        offset$0 = offset;
        dst$1 = dst;
        break;
       }
        /*<<list.ml:287:10>>*/ dst[offset + 1] = 0;
        /*<<list.ml:292:46>>*/ return block;
      }
      var
       ys$3 =  /*<<list.ml:290:2>>*/ ys$2[2],
       y$0 = ys$2[1],
       dst$0 =  /*<<list.ml:292:15>>*/ [0, y$0, 24029];
      dst[offset + 1] = dst$0;
      dst = dst$0;
      offset = 1;
      ys$2 = ys$3;
     }
    }
    /*<<list.ml:288:42>>*/ }
   function take(n, l){
     /*<<list.ml:300:2>>*/ if(0 >= n)  /*<<list.ml:300:17>>*/ return 0;
     /*<<list.ml:296:4>>*/ if(0 !== n && l){
     var
      l$0 = l[2],
      x = l[1],
      n$0 =  /*<<list.ml:298:17>>*/ n - 1 | 0,
      block = [0, x, 24029],
      dst =  /*<<list.ml:298:20>>*/ block,
      offset = 1,
      n$1 = n$0,
      l$1 = l$0;
     for(;;){
       /*<<list.ml:296:4>>*/ if(0 !== n$1 && l$1){
       var
        l$2 = l$1[2],
        x$0 = l$1[1],
        dst$0 =  /*<<list.ml:298:17>>*/ [0, x$0, 24029];
       dst[offset + 1] = dst$0;
       var n$2 = n$1 - 1 | 0;
       dst = dst$0;
       offset = 1;
       n$1 = n$2;
       l$1 = l$2;
       continue;
      }
       /*<<list.ml:297:22>>*/ dst[offset + 1] = 0;
       /*<<list.ml:298:33>>*/ return block;
     }
    }
     /*<<list.ml:297:22>>*/ return 0;
    /*<<list.ml:300:32>>*/ }
   function drop(n, rest){
     /*<<list.ml:307:2>>*/ if(0 >= n)  /*<<list.ml:307:17>>*/ return rest;
    var i =  /*<<list.ml:307:24>>*/ 0, rest$0 = rest;
    for(;;){
      /*<<list.ml:303:14>>*/ if(rest$0){
      var rest$1 = rest$0[2];
       /*<<list.ml:304:17>>*/ if(i < n){
       var i$0 =  /*<<list.ml:304:26>>*/ i + 1 | 0;
       i = i$0;
       rest$0 = rest$1;
       continue;
      }
     }
      /*<<list.ml:305:14>>*/ return rest$0;
    }
    /*<<list.ml:307:31>>*/ }
   function take_while(p, rest){
     /*<<list.ml:310:32>>*/ if(rest){
     var rest$0 = rest[2], x = rest[1];
      /*<<list.ml:311:16>>*/ if(caml_call1(p, x)){
      var
       block =  /*<<list.ml:311:23>>*/ [0, x, 24029],
       dst =  /*<<list.ml:311:26>>*/ block,
       offset = 1,
       rest$1 = rest$0;
      for(;;){
        /*<<list.ml:310:32>>*/ if(rest$1){
        var rest$2 = rest$1[2], x$0 = rest$1[1];
         /*<<list.ml:311:16>>*/ if(caml_call1(p, x$0)){
         var dst$0 =  /*<<list.ml:311:23>>*/ [0, x$0, 24029];
         dst[offset + 1] = dst$0;
         dst = dst$0;
         offset = 1;
         rest$1 = rest$2;
         continue;
        }
       }
        /*<<list.ml:312:15>>*/ dst[offset + 1] = 0;
        /*<<list.ml:311:31>>*/ return block;
      }
     }
    }
     /*<<list.ml:312:15>>*/ return 0;
    /*<<list.ml:314:7>>*/ }
   function drop_while(p, rest$1){
    var rest =  /*<<list.ml:316:19>>*/ rest$1;
    for(;;){
     if(rest){
      var rest$0 = rest[2], x = rest[1];
       /*<<list.ml:317:14>>*/ if(caml_call1(p, x)){
        /*<<list.ml:317:17>>*/ rest = rest$0;
       continue;
      }
     }
      /*<<list.ml:318:12>>*/ return rest;
    }
    /*<<list.ml:318:16>>*/ }
   function fold_left_map(f, accu, l){
    var accu$0 =  /*<<list.ml:326:2>>*/ accu, l_accu = 0, param = l;
    for(;;){
      /*<<list.ml:321:14>>*/ if(! param)
       /*<<list.ml:322:18>>*/ return [0, accu$0, rev(l_accu)] /*<<list.ml:322:28>>*/ ;
     var
      l$0 =  /*<<list.ml:321:14>>*/ param[2],
      x = param[1],
      match =  /*<<list.ml:324:22>>*/ caml_call2(f, accu$0, x),
      x$0 =  /*<<list.ml:324:30>>*/ match[2],
      accu$1 = match[1],
      l_accu$0 =  /*<<list.ml:325:8>>*/ [0, x$0, l_accu];
     accu$0 = accu$1;
     l_accu = l_accu$0;
     param = l$0;
    }
    /*<<list.ml:326:15>>*/ }
   function partition(p, l){
    var yes =  /*<<list.ml:332:2>>*/ 0, no = 0, param = l;
    for(;;){
      /*<<list.ml:329:15>>*/ if(! param){
      var _e_ =  /*<<list.ml:330:20>>*/ rev(no);
       /*<<list.ml:330:11>>*/ return [0, rev(yes), _e_] /*<<list.ml:330:18>>*/ ;
     }
     var l$0 =  /*<<list.ml:329:15>>*/ param[2], x = param[1];
      /*<<list.ml:331:17>>*/ if(caml_call1(p, x)){
      var yes$0 =  /*<<list.ml:331:26>>*/ [0, x, yes];
      yes = yes$0;
      param = l$0;
     }
     else{
      var no$0 =  /*<<list.ml:331:52>>*/ [0, x, no];
      no = no$0;
      param = l$0;
     }
    }
    /*<<list.ml:332:14>>*/ }
   function partition_map(p, l){
    var left =  /*<<list.ml:343:2>>*/ 0, right = 0, param = l;
    for(;;){
      /*<<list.ml:335:15>>*/ if(! param){
      var _e_ =  /*<<list.ml:336:21>>*/ rev(right);
       /*<<list.ml:336:11>>*/ return [0, rev(left), _e_] /*<<list.ml:336:19>>*/ ;
     }
     var
      l$0 =  /*<<list.ml:335:15>>*/ param[2],
      x = param[1],
      match =  /*<<list.ml:338:17>>*/ caml_call1(p, x);
      /*<<list.ml:338:20>>*/ if(0 === match[0]){
      var v = match[1], left$0 =  /*<<list.ml:339:26>>*/ [0, v, left];
      left = left$0;
      param = l$0;
     }
     else{
      var
       v$0 =  /*<<list.ml:338:20>>*/ match[1],
       right$0 =  /*<<list.ml:340:27>>*/ [0, v$0, right];
      right = right$0;
      param = l$0;
     }
    }
    /*<<list.ml:343:14>>*/ }
   var _a_ =  /*<<?>>*/ [0, 0, 0];
   function split(param){
     /*<<list.ml:345:16>>*/ if(! param)  /*<<list.ml:346:10>>*/ return _a_;
    var
     l =  /*<<list.ml:345:16>>*/ param[2],
     match = param[1],
     y = match[2],
     x = match[1],
     match$0 =  /*<<list.ml:348:21>>*/ split(l),
     ry =  /*<<list.ml:348:28>>*/ match$0[2],
     rx = match$0[1];
     /*<<list.ml:348:32>>*/ return [0, [0, x, rx], [0, y, ry]];
    /*<<list.ml:348:46>>*/ }
   function combine(l1, l2){
     /*<<list.ml:351:2>>*/ if(l1){
     if(l2){
      var l2$0 = l2[2], a2 = l2[1], l1$0 = l1[2], a1 = l1[1];
       /*<<list.ml:353:36>>*/ return [0, [0, a1, a2], combine(l1$0, l2$0)] /*<<list.ml:353:49>>*/ ;
     }
    }
    else if(! l2)  /*<<list.ml:352:16>>*/ return 0;
     /*<<list.ml:354:14>>*/ return Stdlib[1].call(null, "List.combine") /*<<list.ml:354:40>>*/ ;
   }
   function merge(cmp, l1, l2){
     /*<<list.ml:359:2>>*/ if(! l1)  /*<<list.ml:360:14>>*/ return l2;
     /*<<list.ml:359:2>>*/ if(! l2)  /*<<list.ml:361:14>>*/ return l1;
    var t2 =  /*<<list.ml:359:2>>*/ l2[2], h2 = l2[1], t1 = l1[2], h1 = l1[1];
     /*<<list.ml:363:9>>*/ return 0 < caml_call2(cmp, h1, h2)
            ? [0, h2,  /*<<list.ml:365:17>>*/ merge(cmp, l1, t2)]
            : [0, h1,  /*<<list.ml:364:17>>*/ merge(cmp, t1, l2)] /*<<list.ml:365:32>>*/ ;
   }
   function stable_sort(cmp, l){
    function sort(n, l){
      /*<<list.ml:388:4>>*/ if(2 === n){
      if(l){
       var match = l[2];
       if(match){
        var
         tl = match[2],
         x2 = match[1],
         x1 = l[1],
         s =
            /*<<list.ml:390:19>>*/ 0 < caml_call2(cmp, x1, x2)
            ? [0, x2, [0, x1, 0]]
            : [0, x1, [0, x2, 0]];
         /*<<list.ml:391:8>>*/ return [0, s, tl];
       }
      }
     }
     else if(3 === n && l){
      var _d_ =  /*<<list.ml:388:4>>*/ l[2];
      if(_d_){
       var match$2 = _d_[2];
       if(match$2){
        var
         tl$1 = match$2[2],
         x3 = match$2[1],
         x2$0 = _d_[1],
         x1$0 = l[1],
         s$0 =
            /*<<list.ml:394:13>>*/ 0 < caml_call2(cmp, x1$0, x2$0)
            ? 0
              <  /*<<list.ml:398:18>>*/ caml_call2(cmp, x1$0, x3)
              ? 0
                <  /*<<list.ml:399:18>>*/ caml_call2(cmp, x2$0, x3)
                ? [0, x3, [0, x2$0, [0, x1$0, 0]]]
                : [0, x2$0, [0, x3, [0, x1$0, 0]]]
              : [0, x2$0, [0, x1$0, [0, x3, 0]]]
            : 0
              <  /*<<list.ml:395:15>>*/ caml_call2(cmp, x2$0, x3)
              ? 0
                <  /*<<list.ml:396:20>>*/ caml_call2(cmp, x1$0, x3)
                ? [0, x3, [0, x1$0, [0, x2$0, 0]]]
                : [0, x1$0, [0, x3, [0, x2$0, 0]]]
              : [0, x1$0, [0, x2$0, [0, x3, 0]]];
         /*<<list.ml:402:8>>*/ return [0, s$0, tl$1];
       }
      }
     }
     var
      n1 =  /*<<list.ml:404:8>>*/ n >> 1,
      n2 =  /*<<list.ml:405:8>>*/ n - n1 | 0,
      match$0 =  /*<<list.ml:406:21>>*/ rev_sort(n1, l),
      l2$0 =  /*<<list.ml:406:34>>*/ match$0[2],
      s1 = match$0[1],
      match$1 =  /*<<list.ml:407:21>>*/ rev_sort(n2, l2$0),
      tl$0 =  /*<<list.ml:407:35>>*/ match$1[2],
      s2 = match$1[1],
      l1 =  /*<<list.ml:408:9>>*/ s1,
      l2 = s2,
      accu = 0;
     for(;;){
       /*<<list.ml:379:4>>*/ if(l1){
       if(l2){
        var t2 = l2[2], h2 = l2[1], t1 = l1[2], h1 = l1[1];
         /*<<list.ml:383:11>>*/ if(0 < caml_call2(cmp, h1, h2)){
         var accu$0 =  /*<<list.ml:384:13>>*/ [0, h1, accu];
         l1 = t1;
         accu = accu$0;
         continue;
        }
        var accu$1 =  /*<<list.ml:385:13>>*/ [0, h2, accu];
        l2 = t2;
        accu = accu$1;
        continue;
       }
       var _e_ =  /*<<list.ml:381:16>>*/ rev_append(l1, accu);
      }
      else
       var _e_ =  /*<<list.ml:380:16>>*/ rev_append(l2, accu);
       /*<<list.ml:408:31>>*/ return [0, _e_, tl$0];
     }
     /*<<list.ml:408:36>>*/ }
    function rev_sort(n, l){
      /*<<list.ml:410:4>>*/ if(2 === n){
      if(l){
       var match = l[2];
       if(match){
        var
         tl = match[2],
         x2 = match[1],
         x1 = l[1],
         s =
            /*<<list.ml:412:19>>*/ 0 < caml_call2(cmp, x1, x2)
            ? [0, x1, [0, x2, 0]]
            : [0, x2, [0, x1, 0]];
         /*<<list.ml:413:8>>*/ return [0, s, tl];
       }
      }
     }
     else if(3 === n && l){
      var _c_ =  /*<<list.ml:410:4>>*/ l[2];
      if(_c_){
       var match$2 = _c_[2];
       if(match$2){
        var
         tl$1 = match$2[2],
         x3 = match$2[1],
         x2$0 = _c_[1],
         x1$0 = l[1],
         s$0 =
            /*<<list.ml:416:13>>*/ 0 < caml_call2(cmp, x1$0, x2$0)
            ? 0
              <  /*<<list.ml:417:15>>*/ caml_call2(cmp, x2$0, x3)
              ? [0, x1$0, [0, x2$0, [0, x3, 0]]]
              : 0
                <  /*<<list.ml:418:20>>*/ caml_call2(cmp, x1$0, x3)
                ? [0, x1$0, [0, x3, [0, x2$0, 0]]]
                : [0, x3, [0, x1$0, [0, x2$0, 0]]]
            : 0
              <  /*<<list.ml:420:18>>*/ caml_call2(cmp, x1$0, x3)
              ? [0, x2$0, [0, x1$0, [0, x3, 0]]]
              : 0
                <  /*<<list.ml:421:18>>*/ caml_call2(cmp, x2$0, x3)
                ? [0, x2$0, [0, x3, [0, x1$0, 0]]]
                : [0, x3, [0, x2$0, [0, x1$0, 0]]];
         /*<<list.ml:424:8>>*/ return [0, s$0, tl$1];
       }
      }
     }
     var
      n1 =  /*<<list.ml:426:8>>*/ n >> 1,
      n2 =  /*<<list.ml:427:8>>*/ n - n1 | 0,
      match$0 =  /*<<list.ml:428:21>>*/ sort(n1, l),
      l2$0 =  /*<<list.ml:428:30>>*/ match$0[2],
      s1 = match$0[1],
      match$1 =  /*<<list.ml:429:21>>*/ sort(n2, l2$0),
      tl$0 =  /*<<list.ml:429:31>>*/ match$1[2],
      s2 = match$1[1],
      l1 =  /*<<list.ml:430:9>>*/ s1,
      l2 = s2,
      accu = 0;
     for(;;){
       /*<<list.ml:370:4>>*/ if(l1){
       if(l2){
        var t2 = l2[2], h2 = l2[1], t1 = l1[2], h1 = l1[1];
         /*<<list.ml:374:11>>*/ if(0 < caml_call2(cmp, h1, h2)){
         var accu$0 =  /*<<list.ml:376:13>>*/ [0, h2, accu];
         l2 = t2;
         accu = accu$0;
         continue;
        }
        var accu$1 =  /*<<list.ml:375:13>>*/ [0, h1, accu];
        l1 = t1;
        accu = accu$1;
        continue;
       }
       var _d_ =  /*<<list.ml:372:16>>*/ rev_append(l1, accu);
      }
      else
       var _d_ =  /*<<list.ml:371:16>>*/ rev_append(l2, accu);
       /*<<list.ml:430:27>>*/ return [0, _d_, tl$0];
     }
     /*<<list.ml:430:32>>*/ }
    var len =  /*<<list.ml:432:12>>*/ length(l);
     /*<<list.ml:433:2>>*/ return 2 <= len
            ?  /*<<list.ml:433:29>>*/ sort(len, l)[1]
            : l /*<<list.ml:433:41>>*/ ;
   }
   function sort_uniq(cmp, l){
    function sort(n, l){
      /*<<list.ml:471:4>>*/ if(2 === n){
      if(l){
       var match = l[2];
       if(match){
        var
         tl = match[2],
         x2 = match[1],
         x1 = l[1],
         c$0 =  /*<<list.ml:474:18>>*/ caml_call2(cmp, x1, x2),
         s =
            /*<<list.ml:475:10>>*/ 0 === c$0
            ? [0, x1, 0]
            : 0 <= c$0 ? [0, x2, [0, x1, 0]] : [0, x1, [0, x2, 0]];
         /*<<list.ml:477:8>>*/ return [0, s, tl];
       }
      }
     }
     else if(3 === n && l){
      var _b_ =  /*<<list.ml:471:4>>*/ l[2];
      if(_b_){
       var match$2 = _b_[2];
       if(match$2){
        var
         tl$1 = match$2[2],
         x3 = match$2[1],
         x2$0 = _b_[1],
         x1$0 = l[1],
         c$1 =  /*<<list.ml:480:18>>*/ caml_call2(cmp, x1$0, x2$0);
         /*<<list.ml:481:10>>*/ if(0 === c$1)
         var
          c$2 =  /*<<list.ml:482:20>>*/ caml_call2(cmp, x1$0, x3),
          s$0 =
             /*<<list.ml:483:12>>*/ 0 === c$2
             ? [0, x1$0, 0]
             : 0 <= c$2 ? [0, x3, [0, x1$0, 0]] : [0, x1$0, [0, x3, 0]];
        else if(0 <= c$1){
         var c$3 =  /*<<list.ml:494:20>>*/ caml_call2(cmp, x1$0, x3);
          /*<<list.ml:495:12>>*/ if(0 === c$3)
          var s$0 =  /*<<list.ml:495:26>>*/ [0, x2$0, [0, x1$0, 0]];
         else if(0 <= c$3)
          var
           c$4 =  /*<<list.ml:498:22>>*/ caml_call2(cmp, x2$0, x3),
           s$0 =
              /*<<list.ml:499:14>>*/ 0 === c$4
              ? [0, x2$0, [0, x1$0, 0]]
              : 0
                <= c$4
                ? [0, x3, [0, x2$0, [0, x1$0, 0]]]
                : [0, x2$0, [0, x3, [0, x1$0, 0]]];
         else
          var s$0 =  /*<<list.ml:496:31>>*/ [0, x2$0, [0, x1$0, [0, x3, 0]]];
        }
        else{
         var c$5 =  /*<<list.ml:485:20>>*/ caml_call2(cmp, x2$0, x3);
          /*<<list.ml:486:12>>*/ if(0 === c$5)
          var s$0 =  /*<<list.ml:486:26>>*/ [0, x1$0, [0, x2$0, 0]];
         else if(0 <= c$5)
          var
           c$6 =  /*<<list.ml:489:22>>*/ caml_call2(cmp, x1$0, x3),
           s$0 =
              /*<<list.ml:490:14>>*/ 0 === c$6
              ? [0, x1$0, [0, x2$0, 0]]
              : 0
                <= c$6
                ? [0, x3, [0, x1$0, [0, x2$0, 0]]]
                : [0, x1$0, [0, x3, [0, x2$0, 0]]];
         else
          var s$0 =  /*<<list.ml:487:31>>*/ [0, x1$0, [0, x2$0, [0, x3, 0]]];
        }
         /*<<list.ml:503:8>>*/ return [0, s$0, tl$1];
       }
      }
     }
     var
      n1 =  /*<<list.ml:505:8>>*/ n >> 1,
      n2 =  /*<<list.ml:506:8>>*/ n - n1 | 0,
      match$0 =  /*<<list.ml:507:21>>*/ rev_sort(n1, l),
      l2$0 =  /*<<list.ml:507:34>>*/ match$0[2],
      s1 = match$0[1],
      match$1 =  /*<<list.ml:508:21>>*/ rev_sort(n2, l2$0),
      tl$0 =  /*<<list.ml:508:35>>*/ match$1[2],
      s2 = match$1[1],
      l1 =  /*<<list.ml:509:9>>*/ s1,
      l2 = s2,
      accu = 0;
     for(;;){
       /*<<list.ml:460:4>>*/ if(l1){
       if(l2){
        var
         t2 = l2[2],
         h2 = l2[1],
         t1 = l1[2],
         h1 = l1[1],
         c =  /*<<list.ml:464:16>>*/ caml_call2(cmp, h1, h2);
         /*<<list.ml:465:8>>*/ if(0 === c){
         var accu$0 =  /*<<list.ml:465:22>>*/ [0, h1, accu];
         l1 = t1;
         l2 = t2;
         accu = accu$0;
         continue;
        }
         /*<<list.ml:466:13>>*/ if(0 < c){
         var accu$1 =  /*<<list.ml:467:13>>*/ [0, h1, accu];
         l1 = t1;
         accu = accu$1;
         continue;
        }
        var accu$2 =  /*<<list.ml:468:13>>*/ [0, h2, accu];
        l2 = t2;
        accu = accu$2;
        continue;
       }
       var _c_ =  /*<<list.ml:462:16>>*/ rev_append(l1, accu);
      }
      else
       var _c_ =  /*<<list.ml:461:16>>*/ rev_append(l2, accu);
       /*<<list.ml:509:31>>*/ return [0, _c_, tl$0];
     }
     /*<<list.ml:509:36>>*/ }
    function rev_sort(n, l){
      /*<<list.ml:511:4>>*/ if(2 === n){
      if(l){
       var match = l[2];
       if(match){
        var
         tl = match[2],
         x2 = match[1],
         x1 = l[1],
         c$0 =  /*<<list.ml:514:18>>*/ caml_call2(cmp, x1, x2),
         s =
            /*<<list.ml:515:10>>*/ 0 === c$0
            ? [0, x1, 0]
            : 0 < c$0 ? [0, x1, [0, x2, 0]] : [0, x2, [0, x1, 0]];
         /*<<list.ml:517:8>>*/ return [0, s, tl];
       }
      }
     }
     else if(3 === n && l){
      var _a_ =  /*<<list.ml:511:4>>*/ l[2];
      if(_a_){
       var match$2 = _a_[2];
       if(match$2){
        var
         tl$1 = match$2[2],
         x3 = match$2[1],
         x2$0 = _a_[1],
         x1$0 = l[1],
         c$1 =  /*<<list.ml:520:18>>*/ caml_call2(cmp, x1$0, x2$0);
         /*<<list.ml:521:10>>*/ if(0 === c$1)
         var
          c$2 =  /*<<list.ml:522:20>>*/ caml_call2(cmp, x1$0, x3),
          s$0 =
             /*<<list.ml:523:12>>*/ 0 === c$2
             ? [0, x1$0, 0]
             : 0 < c$2 ? [0, x1$0, [0, x3, 0]] : [0, x3, [0, x1$0, 0]];
        else if(0 < c$1){
         var c$3 =  /*<<list.ml:525:20>>*/ caml_call2(cmp, x2$0, x3);
          /*<<list.ml:526:12>>*/ if(0 === c$3)
          var s$0 =  /*<<list.ml:526:26>>*/ [0, x1$0, [0, x2$0, 0]];
         else if(0 < c$3)
          var s$0 =  /*<<list.ml:527:31>>*/ [0, x1$0, [0, x2$0, [0, x3, 0]]];
         else
          var
           c$4 =  /*<<list.ml:529:22>>*/ caml_call2(cmp, x1$0, x3),
           s$0 =
              /*<<list.ml:530:14>>*/ 0 === c$4
              ? [0, x1$0, [0, x2$0, 0]]
              : 0
                < c$4
                ? [0, x1$0, [0, x3, [0, x2$0, 0]]]
                : [0, x3, [0, x1$0, [0, x2$0, 0]]];
        }
        else{
         var c$5 =  /*<<list.ml:534:20>>*/ caml_call2(cmp, x1$0, x3);
          /*<<list.ml:535:12>>*/ if(0 === c$5)
          var s$0 =  /*<<list.ml:535:26>>*/ [0, x2$0, [0, x1$0, 0]];
         else if(0 < c$5)
          var s$0 =  /*<<list.ml:536:31>>*/ [0, x2$0, [0, x1$0, [0, x3, 0]]];
         else
          var
           c$6 =  /*<<list.ml:538:22>>*/ caml_call2(cmp, x2$0, x3),
           s$0 =
              /*<<list.ml:539:14>>*/ 0 === c$6
              ? [0, x2$0, [0, x1$0, 0]]
              : 0
                < c$6
                ? [0, x2$0, [0, x3, [0, x1$0, 0]]]
                : [0, x3, [0, x2$0, [0, x1$0, 0]]];
        }
         /*<<list.ml:543:8>>*/ return [0, s$0, tl$1];
       }
      }
     }
     var
      n1 =  /*<<list.ml:545:8>>*/ n >> 1,
      n2 =  /*<<list.ml:546:8>>*/ n - n1 | 0,
      match$0 =  /*<<list.ml:547:21>>*/ sort(n1, l),
      l2$0 =  /*<<list.ml:547:30>>*/ match$0[2],
      s1 = match$0[1],
      match$1 =  /*<<list.ml:548:21>>*/ sort(n2, l2$0),
      tl$0 =  /*<<list.ml:548:31>>*/ match$1[2],
      s2 = match$1[1],
      l1 =  /*<<list.ml:549:9>>*/ s1,
      l2 = s2,
      accu = 0;
     for(;;){
       /*<<list.ml:449:4>>*/ if(l1){
       if(l2){
        var
         t2 = l2[2],
         h2 = l2[1],
         t1 = l1[2],
         h1 = l1[1],
         c =  /*<<list.ml:453:16>>*/ caml_call2(cmp, h1, h2);
         /*<<list.ml:454:8>>*/ if(0 === c){
         var accu$0 =  /*<<list.ml:454:22>>*/ [0, h1, accu];
         l1 = t1;
         l2 = t2;
         accu = accu$0;
         continue;
        }
         /*<<list.ml:455:13>>*/ if(0 <= c){
         var accu$1 =  /*<<list.ml:457:13>>*/ [0, h2, accu];
         l2 = t2;
         accu = accu$1;
         continue;
        }
        var accu$2 =  /*<<list.ml:456:13>>*/ [0, h1, accu];
        l1 = t1;
        accu = accu$2;
        continue;
       }
       var _b_ =  /*<<list.ml:451:16>>*/ rev_append(l1, accu);
      }
      else
       var _b_ =  /*<<list.ml:450:16>>*/ rev_append(l2, accu);
       /*<<list.ml:549:27>>*/ return [0, _b_, tl$0];
     }
     /*<<list.ml:549:32>>*/ }
    var len =  /*<<list.ml:551:12>>*/ length(l);
     /*<<list.ml:552:2>>*/ return 2 <= len
            ?  /*<<list.ml:552:29>>*/ sort(len, l)[1]
            : l /*<<list.ml:552:41>>*/ ;
   }
   function compare_lengths(l1$1, l2$1){
    var l1 =  /*<<list.ml:556:2>>*/ l1$1, l2 = l2$1;
    for(;;){
     if(! l1) return l2 ? -1 : 0 /*<<list.ml:560:45>>*/ ;
      /*<<list.ml:556:2>>*/ if(! l2)  /*<<list.ml:559:13>>*/ return 1;
     var l2$0 =  /*<<list.ml:556:2>>*/ l2[2], l1$0 = l1[2];
      /*<<list.ml:560:24>>*/ l1 = l1$0;
     l2 = l2$0;
    }
    /*<<list.ml:560:45>>*/ }
   function compare_length_with(l$1, n$1){
    var l =  /*<<list.ml:563:2>>*/ l$1, n = n$1;
    for(;;){
     if(! l)
       /*<<list.ml:565:4>>*/ return 0 === n ? 0 : 0 < n ? -1 : 1 /*<<list.ml:569:33>>*/ ;
     var l$0 =  /*<<list.ml:563:2>>*/ l[2];
      /*<<list.ml:568:4>>*/ if(0 >= n)  /*<<list.ml:568:19>>*/ return 1;
     var n$0 =  /*<<list.ml:569:6>>*/ n - 1 | 0;
     l = l$0;
     n = n$0;
    }
    /*<<list.ml:569:33>>*/ }
   function is_empty(param){
     /*<<list.ml:571:15>>*/ return param ? 0 : 1 /*<<list.ml:573:19>>*/ ;
   }
   function equal(eq, l1$1, l2$1){
    var l1 =  /*<<list.ml:583:2>>*/ l1$1, l2 = l2$1;
    for(;;){
     if(l1){
      if(l2){
       var
        l2$0 = l2[2],
        a2 = l2[1],
        l1$0 = l1[2],
        a1 = l1[1],
        _a_ =  /*<<list.ml:586:22>>*/ caml_call2(eq, a1, a2);
        /*<<list.ml:586:30>>*/ if(! _a_) return _a_;
       l1 = l1$0;
       l2 = l2$0;
       continue;
      }
     }
     else if(! l2)  /*<<list.ml:584:14>>*/ return 1;
      /*<<list.ml:585:27>>*/ return 0;
    }
    /*<<list.ml:586:48>>*/ }
   function compare(cmp, l1$1, l2$1){
    var l1 =  /*<<list.ml:589:2>>*/ l1$1, l2 = l2$1;
    for(;;){
     if(! l1) return l2 ? -1 : 0 /*<<list.ml:596:26>>*/ ;
     var l1$0 =  /*<<list.ml:589:2>>*/ l1[2], a1 = l1[1];
     if(! l2)  /*<<list.ml:592:16>>*/ return 1;
     var
      l2$0 =  /*<<list.ml:589:2>>*/ l2[2],
      a2 = l2[1],
      c =  /*<<list.ml:594:12>>*/ caml_call2(cmp, a1, a2);
      /*<<list.ml:595:4>>*/ if(0 !== c)  /*<<list.ml:595:19>>*/ return c;
      /*<<list.ml:595:4>>*/ l1 = l1$0;
     l2 = l2$0;
    }
    /*<<list.ml:596:26>>*/ }
   function to_seq(l){
    function aux(l, param){
      /*<<list.ml:601:21>>*/ if(! l)  /*<<list.ml:602:12>>*/ return 0;
     var tail =  /*<<list.ml:601:21>>*/ l[2], x = l[1];
      /*<<list.ml:603:40>>*/ return [0,
             x,
             function(_a_){ /*<<list.ml:603:32>>*/ return aux(tail, _a_);}] /*<<list.ml:603:40>>*/ ;
     /*<<list.ml:603:41>>*/ }
     /*<<list.ml:605:2>>*/ return function(_a_){return aux(l, _a_);};
    /*<<list.ml:605:7>>*/ }
   function of_seq(seq){
    var match =  /*<<list.ml:608:8>>*/ caml_call1(seq, 0);
     /*<<list.ml:608:14>>*/ if(! match)  /*<<list.ml:609:15>>*/ return 0;
    var
     seq$0 =  /*<<list.ml:608:14>>*/ match[2],
     x1 = match[1],
     match$0 =  /*<<list.ml:611:18>>*/ caml_call1(seq$0, 0);
     /*<<list.ml:611:24>>*/ if(! match$0)
      /*<<list.ml:612:19>>*/ return [0, x1, 0];
    var
     seq$1 =  /*<<list.ml:611:24>>*/ match$0[2],
     x2 = match$0[1],
     block =  /*<<list.ml:613:30>>*/ [0, x2, 24029],
     dst =  /*<<list.ml:613:42>>*/ block,
     offset = 1,
     seq$2 = seq$1;
    for(;;){
     var match$1 =  /*<<list.ml:608:8>>*/ caml_call1(seq$2, 0);
      /*<<list.ml:608:14>>*/ if(match$1){
      var
       seq$3 = match$1[2],
       x1$0 = match$1[1],
       match$2 =  /*<<list.ml:611:18>>*/ caml_call1(seq$3, 0);
       /*<<list.ml:611:24>>*/ if(match$2){
       var
        seq$4 = match$2[2],
        x2$0 = match$2[1],
        dst$0 =  /*<<list.ml:613:30>>*/ [0, x2$0, 24029];
       dst[offset + 1] = [0, x1$0, dst$0];
       dst = dst$0;
       offset = 1;
       seq$2 = seq$4;
       continue;
      }
       /*<<list.ml:612:19>>*/ dst[offset + 1] = [0, x1$0, 0];
     }
     else
       /*<<list.ml:609:15>>*/ dst[offset + 1] = 0;
      /*<<list.ml:613:52>>*/ return [0, x1, block];
    }
    /*<<list.ml:614:9>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (17,
     [0,
      length,
      compare_lengths,
      compare_length_with,
      is_empty,
      cons,
      singleton,
      hd,
      tl,
      nth,
      nth_opt,
      rev,
      init,
      append,
      rev_append,
      flatten,
      flatten,
      equal,
      compare,
      iter,
      iteri,
      map,
      mapi,
      rev_map,
      filter_map,
      concat_map,
      fold_left_map,
      fold_left,
      fold_right,
      iter2,
      map2,
      rev_map2,
      fold_left2,
      fold_right2,
      for_all,
      exists,
      for_all2,
      exists2,
      mem,
      memq,
      find,
      find_opt,
      find_index,
      find_map,
      find_mapi,
      find_all,
      find_all,
      filteri,
      take,
      drop,
      take_while,
      drop_while,
      partition,
      partition_map,
      assoc,
      assoc_opt,
      assq,
      assq_opt,
      mem_assoc,
      mem_assq,
      remove_assoc,
      remove_assq,
      split,
      combine,
      stable_sort,
      stable_sort,
      stable_sort,
      sort_uniq,
      merge,
      to_seq,
      of_seq],
     "Stdlib__List");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Int
//# shape: Stdlib__Int:[N,N,N,F(1)*,N,N,F(1)*,F(2)*,F(2)*,F(2)*,F(2)*,F(1)*,F(2)*,F(1)*]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime, caml_hash = runtime.caml_hash;
   function abs(x){
     /*<<int.ml:29:12>>*/ return 0 <= x ? x : - x | 0 /*<<int.ml:29:36>>*/ ;
   }
   function lognot(x){
     /*<<int.ml:35:15>>*/ return x ^ -1;
    /*<<int.ml:35:28>>*/ }
   function equal(_b_, _a_){ /*<<?>>*/ return _b_ === _a_ ? 1 : 0;}
   var compare = runtime.caml_int_compare;
   function min(x, y){
     /*<<int.ml:41:18>>*/ return x <= y ? x : y /*<<int.ml:41:41>>*/ ;
   }
   function max(x, y){
     /*<<int.ml:42:18>>*/ return y <= x ? x : y /*<<int.ml:42:41>>*/ ;
   }
   function to_string(x){ /*<<int.ml:52:35>>*/ return "" + x;}
   function seeded_hash(seed, x){
     /*<<int.ml:56:25>>*/ return caml_hash(10, 100, seed, x) /*<<int.ml:56:56>>*/ ;
   }
   function hash(x){
     /*<<int.ml:57:13>>*/ return caml_hash(10, 100, 0, x) /*<<int.ml:57:41>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (1,
     [0,
      0,
      1,
      -1,
      abs,
      2147483647,
      -2147483648,
      lognot,
      equal,
      compare,
      min,
      max,
      to_string,
      seeded_hash,
      hash],
     "Stdlib__Int");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Array
//# unitInfo: Requires: Stdlib, Stdlib__Seq
//# shape: Stdlib__Array:[F(2),F(3),F(3),F(2)*,F(1)*,F(3),F(1)*,F(4),F(5),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(1)*->F(1)*,F(1)*->F(1)*,F(1),[]]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_array_sub = runtime.caml_array_sub,
    caml_check_bound = runtime.caml_check_bound,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib = global_data.Stdlib,
    Assert_failure = global_data.Assert_failure;
   function init(l, f){
     /*<<array.ml:48:2>>*/ if(0 === l)  /*<<array.ml:48:16>>*/ return [0];
     /*<<array.ml:49:2>>*/ if(0 > l)
      /*<<array.ml:49:16>>*/ return Stdlib[1].call(null, "Array.init") /*<<array.ml:58:6>>*/ ;
    var
     res =
        /*<<array.ml:54:22>>*/  /*<<array.ml:54:13>>*/ caml_array_make
        (l,  /*<<array.ml:54:22>>*/ caml_call1(f, 0)),
     _Z_ =  /*<<array.ml:55:3>>*/ l - 1 | 0;
    if(_Z_ >= 1){
     var i = 1;
     for(;;){
       /*<<array.ml:56:22>>*/ res[i + 1] = caml_call1(f, i);
      var ___ =  /*<<array.ml:56:27>>*/ i + 1 | 0;
      if(_Z_ === i) break;
      i = ___;
     }
    }
     /*<<array.ml:58:3>>*/ return res;
    /*<<array.ml:58:6>>*/ }
   function make_matrix(sx, sy, init){
     /*<<array.ml:62:2>>*/ if(sy < 0)
      /*<<array.ml:62:17>>*/ Stdlib[1].call(null, "Array.make_matrix");
    var res =  /*<<array.ml:63:12>>*/ caml_array_make(sx, [0]);
     /*<<array.ml:64:2>>*/ if(0 < sy){
     var _Y_ =  /*<<array.ml:64:17>>*/ sx - 1 | 0;
     if(_Y_ >= 0){
      var x = 0;
      for(;;){
        /*<<array.ml:66:23>>*/ res[x + 1] = caml_array_make(sy, init);
       var _Z_ =  /*<<array.ml:66:39>>*/ x + 1 | 0;
       if(_Y_ === x) break;
       x = _Z_;
      }
     }
    }
     /*<<array.ml:69:2>>*/ return res;
    /*<<array.ml:69:5>>*/ }
   function init_matrix(sx, sy, f){
     /*<<array.ml:73:2>>*/ if(sy < 0)
      /*<<array.ml:73:17>>*/ Stdlib[1].call(null, "Array.init_matrix");
    var res =  /*<<array.ml:74:12>>*/ caml_array_make(sx, [0]);
     /*<<array.ml:76:2>>*/ if(0 < sy){
     var _V_ =  /*<<array.ml:76:17>>*/ sx - 1 | 0;
     if(_V_ >= 0){
      var x = 0;
      for(;;){
       var
        row =
           /*<<array.ml:78:26>>*/  /*<<array.ml:78:16>>*/ caml_array_make
           (sy,  /*<<array.ml:78:26>>*/ caml_call2(f, x, 0)),
        _W_ =  /*<<array.ml:79:6>>*/ sy - 1 | 0;
       if(_W_ >= 1){
        var y = 1;
        for(;;){
          /*<<array.ml:80:25>>*/ row[y + 1] = caml_call2(f, x, y);
         var _Y_ =  /*<<array.ml:80:32>>*/ y + 1 | 0;
         if(_W_ === y) break;
         y = _Y_;
        }
       }
        /*<<array.ml:82:6>>*/ res[x + 1] = row;
       var _X_ = x + 1 | 0;
       if(_V_ === x) break;
       x = _X_;
      }
     }
    }
     /*<<array.ml:85:2>>*/ return res;
    /*<<array.ml:85:5>>*/ }
   function copy(a){
    var l =  /*<<array.ml:88:2>>*/ a.length - 1;
     /*<<array.ml:88:22>>*/ return 0 === l
            ? [0]
            :  /*<<array.ml:88:46>>*/ caml_array_sub(a, 0, l) /*<<array.ml:88:62>>*/ ;
   }
   function append(a1, a2){
    var l1 =  /*<<array.ml:91:2>>*/ a1.length - 1;
     /*<<array.ml:92:2>>*/ return 0 === l1
            ?  /*<<array.ml:92:17>>*/ copy(a2)
            : 0
              === a2.length - 1
              ?  /*<<array.ml:93:29>>*/ caml_array_sub(a1, 0, l1)
              :  /*<<array.ml:94:7>>*/ runtime.caml_array_append(a1, a2) /*<<array.ml:94:24>>*/ ;
   }
   function sub(a, ofs, len){
     /*<<array.ml:97:2>>*/ if
     (0 <= ofs && 0 <= len && (a.length - 1 - len | 0) >= ofs)
      /*<<array.ml:99:7>>*/ return caml_array_sub(a, ofs, len) /*<<array.ml:99:27>>*/ ;
     /*<<array.ml:98:7>>*/ return Stdlib[1].call(null, "Array.sub") /*<<array.ml:99:27>>*/ ;
   }
   function fill(a, ofs, len, v){
     /*<<array.ml:102:2>>*/ if
     (0 <= ofs && 0 <= len && (a.length - 1 - len | 0) >= ofs)
      /*<<array.ml:104:7>>*/ return runtime.caml_array_fill(a, ofs, len, v) /*<<array.ml:104:30>>*/ ;
     /*<<array.ml:103:7>>*/ return Stdlib[1].call(null, "Array.fill") /*<<array.ml:104:30>>*/ ;
   }
   function blit(a1, ofs1, a2, ofs2, len){
     /*<<array.ml:107:2>>*/ if
     (0 <= len
      &&
       0 <= ofs1
       &&
        (a1.length - 1 - len | 0) >= ofs1
        && 0 <= ofs2 && (a2.length - 1 - len | 0) >= ofs2)
      /*<<array.ml:110:7>>*/ return runtime.caml_array_blit
             (a1, ofs1, a2, ofs2, len) /*<<array.ml:110:38>>*/ ;
     /*<<array.ml:109:7>>*/ return Stdlib[1].call(null, "Array.blit") /*<<array.ml:110:38>>*/ ;
   }
   function iter(f, a){
    var _U_ =  /*<<array.ml:113:2>>*/ a.length - 2 | 0;
    if(_U_ >= 0){
     var i = 0;
     for(;;){
       /*<<array.ml:113:31>>*/ caml_call1(f, a[i + 1]);
      var _V_ =  /*<<array.ml:113:48>>*/ i + 1 | 0;
      if(_U_ === i) break;
      i = _V_;
     }
    }
     /*<<array.ml:113:2>>*/ return 0;
    /*<<array.ml:113:53>>*/ }
   function iter2(f, a, b){
     /*<<array.ml:116:2>>*/ if(a.length - 1 !== b.length - 1)
      /*<<array.ml:117:4>>*/ return Stdlib[1].call
             (null, "Array.iter2: arrays must have the same length") /*<<array.ml:119:73>>*/ ;
    var _T_ =  /*<<array.ml:119:4>>*/ a.length - 2 | 0;
    if(_T_ >= 0){
     var i = 0;
     for(;;){
       /*<<array.ml:119:33>>*/ caml_call2(f, a[i + 1], b[i + 1]);
      var _U_ =  /*<<array.ml:119:68>>*/ i + 1 | 0;
      if(_T_ === i) break;
      i = _U_;
     }
    }
     /*<<array.ml:119:4>>*/ return 0;
    /*<<array.ml:119:73>>*/ }
   function map(f, a){
    var l =  /*<<array.ml:122:2>>*/ a.length - 1;
     /*<<array.ml:123:2>>*/ if(0 === l)  /*<<array.ml:123:16>>*/ return [0];
    var
     r =
        /*<<array.ml:124:21>>*/  /*<<array.ml:124:12>>*/ caml_array_make
        (l,  /*<<array.ml:124:21>>*/ caml_call1(f, a[1])),
     _S_ =  /*<<array.ml:125:4>>*/ l - 1 | 0;
    if(_S_ >= 1){
     var i = 1;
     for(;;){
       /*<<array.ml:126:21>>*/ r[i + 1] = caml_call1(f, a[i + 1]);
      var _T_ =  /*<<array.ml:126:40>>*/ i + 1 | 0;
      if(_S_ === i) break;
      i = _T_;
     }
    }
     /*<<array.ml:128:4>>*/ return r;
    /*<<array.ml:129:5>>*/ }
   function map_inplace(f, a){
    var _R_ =  /*<<array.ml:132:2>>*/ a.length - 2 | 0;
    if(_R_ >= 0){
     var i = 0;
     for(;;){
       /*<<array.ml:133:19>>*/ a[i + 1] = caml_call1(f, a[i + 1]);
      var _S_ =  /*<<array.ml:133:39>>*/ i + 1 | 0;
      if(_R_ === i) break;
      i = _S_;
     }
    }
     /*<<array.ml:132:2>>*/ return 0;
    /*<<array.ml:134:6>>*/ }
   function mapi_inplace(f, a){
    var _Q_ =  /*<<array.ml:137:2>>*/ a.length - 2 | 0;
    if(_Q_ >= 0){
     var i = 0;
     for(;;){
       /*<<array.ml:138:19>>*/ a[i + 1] = caml_call2(f, i, a[i + 1]);
      var _R_ =  /*<<array.ml:138:41>>*/ i + 1 | 0;
      if(_Q_ === i) break;
      i = _R_;
     }
    }
     /*<<array.ml:137:2>>*/ return 0;
    /*<<array.ml:139:6>>*/ }
   function map2(f, a, b){
    var
     la =  /*<<array.ml:142:2>>*/ a.length - 1,
     lb =  /*<<array.ml:143:2>>*/ b.length - 1;
     /*<<array.ml:144:2>>*/ if(la !== lb)
      /*<<array.ml:145:4>>*/ return Stdlib[1].call
             (null, "Array.map2: arrays must have the same length") /*<<array.ml:154:5>>*/ ;
     /*<<array.ml:146:7>>*/ if(0 === la)  /*<<array.ml:147:19>>*/ return [0];
    var
     r =
        /*<<array.ml:148:24>>*/  /*<<array.ml:148:14>>*/ caml_array_make
        (la,  /*<<array.ml:148:24>>*/ caml_call2(f, a[1], b[1])),
     _P_ =  /*<<array.ml:149:6>>*/ la - 1 | 0;
    if(_P_ >= 1){
     var i = 1;
     for(;;){
       /*<<array.ml:150:23>>*/ r[i + 1] = caml_call2(f, a[i + 1], b[i + 1]);
      var _Q_ =  /*<<array.ml:150:60>>*/ i + 1 | 0;
      if(_P_ === i) break;
      i = _Q_;
     }
    }
     /*<<array.ml:152:6>>*/ return r;
    /*<<array.ml:154:5>>*/ }
   function iteri(f, a){
    var _O_ =  /*<<array.ml:157:2>>*/ a.length - 2 | 0;
    if(_O_ >= 0){
     var i = 0;
     for(;;){
       /*<<array.ml:157:31>>*/ caml_call2(f, i, a[i + 1]);
      var _P_ =  /*<<array.ml:157:51>>*/ i + 1 | 0;
      if(_O_ === i) break;
      i = _P_;
     }
    }
     /*<<array.ml:157:2>>*/ return 0;
    /*<<array.ml:157:56>>*/ }
   function mapi(f, a){
    var l =  /*<<array.ml:160:2>>*/ a.length - 1;
     /*<<array.ml:161:2>>*/ if(0 === l)  /*<<array.ml:161:16>>*/ return [0];
    var
     r =
        /*<<array.ml:162:21>>*/  /*<<array.ml:162:12>>*/ caml_array_make
        (l,  /*<<array.ml:162:21>>*/ caml_call2(f, 0, a[1])),
     _N_ =  /*<<array.ml:163:4>>*/ l - 1 | 0;
    if(_N_ >= 1){
     var i = 1;
     for(;;){
       /*<<array.ml:164:21>>*/ r[i + 1] = caml_call2(f, i, a[i + 1]);
      var _O_ =  /*<<array.ml:164:43>>*/ i + 1 | 0;
      if(_N_ === i) break;
      i = _O_;
     }
    }
     /*<<array.ml:166:4>>*/ return r;
    /*<<array.ml:167:5>>*/ }
   function to_list(a){
    var i$1 =  /*<<array.ml:172:2>>*/ a.length - 2 | 0, i = i$1, res = 0;
    for(;;){
      /*<<array.ml:171:4>>*/ if(0 > i)  /*<<array.ml:171:18>>*/ return res;
     var res$0 =  /*<<array.ml:171:57>>*/ [0, a[i + 1], res], i$0 = i - 1 | 0;
     i = i$0;
     res = res$0;
    }
    /*<<array.ml:172:26>>*/ }
   function list_length(accu$1, param$0){
    var accu =  /*<<array.ml:175:20>>*/ accu$1, param = param$0;
    for(;;){
     if(! param)  /*<<array.ml:176:10>>*/ return accu;
     var
      t =  /*<<array.ml:175:20>>*/ param[2],
      accu$0 =  /*<<array.ml:177:12>>*/ accu + 1 | 0;
     accu = accu$0;
     param = t;
    }
    /*<<array.ml:177:37>>*/ }
   function of_list(l){
     /*<<array.ml:179:14>>*/ if(! l)  /*<<array.ml:180:10>>*/ return [0];
    var
     tl =  /*<<array.ml:179:14>>*/ l[2],
     hd = l[1],
     a =
        /*<<array.ml:182:21>>*/  /*<<array.ml:182:14>>*/ caml_array_make
        ( /*<<array.ml:182:21>>*/ list_length(0, l), hd),
     i =  /*<<array.ml:186:6>>*/ 1,
     param = tl;
    for(;;){
      /*<<array.ml:183:19>>*/ if(! param)  /*<<array.ml:184:16>>*/ return a;
     var tl$0 =  /*<<array.ml:183:19>>*/ param[2], hd$0 = param[1];
      /*<<array.ml:185:20>>*/ a[i + 1] = hd$0;
     var i$0 =  /*<<array.ml:185:37>>*/ i + 1 | 0;
     i = i$0;
     param = tl$0;
    }
    /*<<array.ml:186:15>>*/ }
   function equal(eq, a, b){
     /*<<array.ml:189:2>>*/ if(a.length - 1 !== b.length - 1)
      /*<<array.ml:189:31>>*/ return 0;
    var
     len =  /*<<array.ml:191:2>>*/ a.length - 1,
     i =  /*<<array.ml:192:2>>*/ 0;
    for(;;){
     if
      (i < len &&  /*<<array.ml:192:20>>*/ caml_call2(eq, a[i + 1], b[i + 1])){var i$0 =  /*<<array.ml:192:62>>*/ i + 1 | 0; i = i$0; continue;}
      /*<<array.ml:193:2>>*/ return i === len ? 1 : 0;
    }
    /*<<array.ml:193:10>>*/ }
   function compare(cmp, a, b){
    var
     len_a =  /*<<array.ml:197:2>>*/ a.length - 1,
     len_b = b.length - 1,
     diff =  /*<<array.ml:198:2>>*/ len_a - len_b | 0;
     /*<<array.ml:199:2>>*/ if(0 !== diff)
      /*<<array.ml:199:20>>*/ return 0 <= diff ? 1 : -1 /*<<array.ml:203:4>>*/ ;
    var c =  /*<<array.ml:201:2>>*/ 0, i = 0;
    for(;;){
     if(i < len_a && 0 === c){
      var i$0 =  /*<<array.ml:202:51>>*/ i + 1 | 0;
      c =  /*<<array.ml:202:10>>*/ caml_call2(cmp, a[i + 1], b[i + 1]);
       /*<<array.ml:202:51>>*/ i = i$0;
      continue;
     }
      /*<<array.ml:203:2>>*/ return c;
    }
    /*<<array.ml:203:4>>*/ }
   function fold_left(f, x, a){
    var _L_ =  /*<<array.ml:207:2>>*/ a.length - 2 | 0;
    if(_L_ < 0)
     var r$0 = x;
    else{
     var r = x, i = 0;
     for(;;){
      var
       _M_ =  /*<<array.ml:208:9>>*/ caml_call2(f, r, a[i + 1]),
       _N_ =  /*<<array.ml:208:30>>*/ i + 1 | 0;
      if(_L_ === i){var r$0 = _M_; break;}
      r = _M_;
      i = _N_;
     }
    }
     /*<<array.ml:210:2>>*/ return r$0;
    /*<<array.ml:210:4>>*/ }
   function fold_left_map(f, acc, input_array){
    var len =  /*<<array.ml:213:2>>*/ input_array.length - 1;
     /*<<array.ml:214:2>>*/ if(0 === len)
      /*<<array.ml:214:18>>*/ return [0, acc, [0]];
    var
     match =  /*<<array.ml:215:19>>*/ caml_call2(f, acc, input_array[1]),
     elt =  /*<<array.ml:215:51>>*/ match[2],
     acc$0 = match[1],
     output_array =  /*<<array.ml:216:23>>*/ caml_array_make(len, elt),
     _K_ =  /*<<array.ml:218:4>>*/ len - 1 | 0;
    if(_K_ < 1)
     var acc$3 = acc$0;
    else{
     var acc$2 = acc$0, i = 1;
     for(;;){
      var
       match$0 =
          /*<<array.ml:219:22>>*/ caml_call2(f, acc$2, input_array[i + 1]),
       elt$0 =  /*<<array.ml:219:55>>*/ match$0[2],
       acc$1 = match$0[1];
       /*<<array.ml:221:6>>*/ output_array[i + 1] = elt$0;
      var _L_ =  /*<<array.ml:221:35>>*/ i + 1 | 0;
      if(_K_ === i){var acc$3 = acc$1; break;}
      acc$2 = acc$1;
      i = _L_;
     }
    }
     /*<<array.ml:223:4>>*/ return [0, acc$3, output_array];
    /*<<array.ml:224:5>>*/ }
   function fold_right(f, a, x){
    var _I_ =  /*<<array.ml:228:2>>*/ a.length - 2 | 0;
    if(_I_ < 0)
     var r$0 = x;
    else{
     var r = x, i = _I_;
     for(;;){
      var
       _J_ =  /*<<array.ml:229:9>>*/ caml_call2(f, a[i + 1], r),
       _K_ =  /*<<array.ml:229:30>>*/ i - 1 | 0;
      if(0 === i){var r$0 = _J_; break;}
      r = _J_;
      i = _K_;
     }
    }
     /*<<array.ml:231:2>>*/ return r$0;
    /*<<array.ml:231:4>>*/ }
   function exists(p, a){
    var
     n =  /*<<array.ml:234:2>>*/ a.length - 1,
     i =  /*<<array.ml:239:2>>*/ 0;
    for(;;){
      /*<<array.ml:236:4>>*/ if(i === n)  /*<<array.ml:236:18>>*/ return 0;
      /*<<array.ml:237:12>>*/ if(caml_call1(p, a[i + 1]))
       /*<<array.ml:237:36>>*/ return 1;
     var i$0 =  /*<<array.ml:238:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:239:8>>*/ }
   function for_all(p, a){
    var
     n =  /*<<array.ml:242:2>>*/ a.length - 1,
     i =  /*<<array.ml:247:2>>*/ 0;
    for(;;){
      /*<<array.ml:244:4>>*/ if(i === n)  /*<<array.ml:244:18>>*/ return 1;
      /*<<array.ml:245:12>>*/ if(! caml_call1(p, a[i + 1]))
       /*<<array.ml:246:9>>*/ return 0;
     var i$0 =  /*<<array.ml:245:36>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:247:8>>*/ }
   function for_all2(p, l1, l2){
    var n1 =  /*<<array.ml:250:2>>*/ l1.length - 1, n2 = l2.length - 1;
     /*<<array.ml:252:2>>*/ if(n1 !== n2)
      /*<<array.ml:252:19>>*/ return Stdlib[1].call(null, "Array.for_all2") /*<<array.ml:257:8>>*/ ;
    var i =  /*<<array.ml:257:2>>*/ 0;
    for(;;){
      /*<<array.ml:254:4>>*/ if(i === n1)  /*<<array.ml:254:19>>*/ return 1;
      /*<<array.ml:255:12>>*/ if(! caml_call2(p, l1[i + 1], l2[i + 1]))
       /*<<array.ml:256:9>>*/ return 0;
     var i$0 =  /*<<array.ml:255:55>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:257:8>>*/ }
   function exists2(p, l1, l2){
    var n1 =  /*<<array.ml:260:2>>*/ l1.length - 1, n2 = l2.length - 1;
     /*<<array.ml:262:2>>*/ if(n1 !== n2)
      /*<<array.ml:262:19>>*/ return Stdlib[1].call(null, "Array.exists2") /*<<array.ml:267:8>>*/ ;
    var i =  /*<<array.ml:267:2>>*/ 0;
    for(;;){
      /*<<array.ml:264:4>>*/ if(i === n1)  /*<<array.ml:264:19>>*/ return 0;
      /*<<array.ml:265:12>>*/ if(caml_call2(p, l1[i + 1], l2[i + 1]))
       /*<<array.ml:265:55>>*/ return 1;
     var i$0 =  /*<<array.ml:266:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:267:8>>*/ }
   function mem(x, a){
    var
     n =  /*<<array.ml:270:2>>*/ a.length - 1,
     i =  /*<<array.ml:275:2>>*/ 0;
    for(;;){
      /*<<array.ml:272:4>>*/ if(i === n)  /*<<array.ml:272:18>>*/ return 0;
      /*<<array.ml:273:12>>*/ if(0 === runtime.caml_compare(a[i + 1], x))
       /*<<array.ml:273:55>>*/ return 1;
     var i$0 =  /*<<array.ml:274:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:275:8>>*/ }
   function memq(x, a){
    var
     n =  /*<<array.ml:278:2>>*/ a.length - 1,
     i =  /*<<array.ml:283:2>>*/ 0;
    for(;;){
      /*<<array.ml:280:4>>*/ if(i === n)  /*<<array.ml:280:18>>*/ return 0;
      /*<<array.ml:281:33>>*/ if(x === a[i + 1])
       /*<<array.ml:281:39>>*/ return 1;
     var i$0 =  /*<<array.ml:282:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:283:8>>*/ }
   function find_opt(p, a){
    var
     n =  /*<<array.ml:286:2>>*/ a.length - 1,
     i =  /*<<array.ml:294:2>>*/ 0;
    for(;;){
      /*<<array.ml:288:4>>*/ if(i === n)  /*<<array.ml:288:18>>*/ return 0;
     var x =  /*<<array.ml:290:14>>*/ a[i + 1];
      /*<<array.ml:291:9>>*/ if(caml_call1(p, x))
       /*<<array.ml:291:18>>*/ return [0, x];
     var i$0 =  /*<<array.ml:292:11>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:294:8>>*/ }
   function find_index(p, a){
    var
     n =  /*<<array.ml:297:2>>*/ a.length - 1,
     i =  /*<<array.ml:302:2>>*/ 0;
    for(;;){
      /*<<array.ml:299:4>>*/ if(i === n)  /*<<array.ml:299:18>>*/ return 0;
      /*<<array.ml:300:12>>*/ if(caml_call1(p, a[i + 1]))
       /*<<array.ml:300:36>>*/ return [0, i];
     var i$0 =  /*<<array.ml:301:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:302:8>>*/ }
   function find_map(f, a){
    var
     n =  /*<<array.ml:305:2>>*/ a.length - 1,
     i =  /*<<array.ml:313:2>>*/ 0;
    for(;;){
      /*<<array.ml:307:4>>*/ if(i === n)  /*<<array.ml:307:18>>*/ return 0;
     var r =  /*<<array.ml:309:12>>*/ caml_call1(f, a[i + 1]);
      /*<<array.ml:309:30>>*/ if(r)  /*<<array.ml:311:23>>*/ return r;
     var i$0 =  /*<<array.ml:310:16>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:313:8>>*/ }
   function find_mapi(f, a){
    var
     n =  /*<<array.ml:316:2>>*/ a.length - 1,
     i =  /*<<array.ml:324:2>>*/ 0;
    for(;;){
      /*<<array.ml:318:4>>*/ if(i === n)  /*<<array.ml:318:18>>*/ return 0;
     var r =  /*<<array.ml:320:12>>*/ caml_call2(f, i, a[i + 1]);
      /*<<array.ml:320:32>>*/ if(r)  /*<<array.ml:322:23>>*/ return r;
     var i$0 =  /*<<array.ml:321:16>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<array.ml:324:8>>*/ }
   function split(x){
     /*<<array.ml:327:5>>*/ if(runtime.caml_equal(x, [0]))
      /*<<array.ml:327:19>>*/ return [0, [0], [0]];
    var
     match =  /*<<array.ml:328:7>>*/ x[1],
     b0 = match[2],
     a0 = match[1],
     n =  /*<<array.ml:330:4>>*/ x.length - 1,
     a =  /*<<array.ml:331:12>>*/ caml_array_make(n, a0),
     b =  /*<<array.ml:332:12>>*/ caml_array_make(n, b0),
     _H_ =  /*<<array.ml:333:4>>*/ n - 1 | 0;
    if(_H_ >= 1){
     var i = 1;
     for(;;){
      var
       match$0 =  /*<<array.ml:334:6>>*/ x[i + 1],
       bi = match$0[2],
       ai = match$0[1];
       /*<<array.ml:335:6>>*/ a[i + 1] = ai;
       /*<<array.ml:336:6>>*/ b[i + 1] = bi;
      var _I_ =  /*<<array.ml:336:23>>*/ i + 1 | 0;
      if(_H_ === i) break;
      i = _I_;
     }
    }
     /*<<array.ml:338:4>>*/ return [0, a, b];
    /*<<array.ml:339:5>>*/ }
   function combine(a, b){
    var
     na =  /*<<array.ml:342:2>>*/ a.length - 1,
     nb =  /*<<array.ml:343:2>>*/ b.length - 1;
     /*<<array.ml:344:2>>*/ if(na !== nb)
      /*<<array.ml:344:19>>*/ Stdlib[1].call(null, "Array.combine");
     /*<<array.ml:345:2>>*/ if(0 === na)  /*<<array.ml:345:17>>*/ return [0];
    var
     x =  /*<<array.ml:347:12>>*/ caml_array_make(na, [0, a[1], b[1]]),
     _G_ =  /*<<array.ml:348:4>>*/ na - 1 | 0;
    if(_G_ >= 1){
     var i = 1;
     for(;;){
       /*<<array.ml:349:36>>*/ x[i + 1] = [0, a[i + 1], b[i + 1]];
      var _H_ = i + 1 | 0;
      if(_G_ === i) break;
      i = _H_;
     }
    }
     /*<<array.ml:351:4>>*/ return x;
    /*<<array.ml:352:5>>*/ }
   var
    Bottom =
       /*<<?>>*/ [248, "Stdlib.Array.Bottom", runtime.caml_fresh_oo_id(0)],
    _a_ = [0, "array.ml", 386, 4];
   function sort(cmp, a){
    function maxson(l, i){
     var i31 =  /*<<array.ml:357:4>>*/ ((i + i | 0) + i | 0) + 1 | 0;
      /*<<array.ml:359:4>>*/ if((i31 + 2 | 0) < l){
      var
       _B_ =  /*<<array.ml:359:22>>*/ i31 + 1 | 0,
       _E_ =  /*<<array.ml:360:25>>*/ caml_check_bound(a, _B_)[_B_ + 1],
       x =
          /*<<array.ml:360:13>>*/  /*<<array.ml:360:9>>*/ caml_call2
           (cmp,
             /*<<array.ml:360:13>>*/ caml_check_bound(a, i31)[i31 + 1],
            _E_)
          < 0
          ? i31 + 1 | 0
          : i31,
       _C_ =  /*<<array.ml:361:6>>*/ i31 + 2 | 0,
       _F_ =  /*<<array.ml:361:24>>*/ caml_check_bound(a, _C_)[_C_ + 1],
       x$0 =
          /*<<array.ml:361:13>>*/  /*<<array.ml:361:9>>*/ caml_call2
           (cmp,  /*<<array.ml:361:13>>*/ caml_check_bound(a, x)[x + 1], _F_)
          < 0
          ? i31 + 2 | 0
          : x;
       /*<<array.ml:362:6>>*/ return x$0;
     }
      /*<<array.ml:364:6>>*/ if((i31 + 1 | 0) < l){
      var
       _D_ = i31 + 1 | 0,
       _G_ =  /*<<array.ml:364:38>>*/ caml_check_bound(a, _D_)[_D_ + 1];
       /*<<array.ml:364:26>>*/ if
       (0
        >
          /*<<array.ml:364:22>>*/ caml_call2
          (cmp,
            /*<<array.ml:364:26>>*/ caml_check_bound(a, i31)[i31 + 1],
           _G_))
        /*<<array.ml:365:11>>*/ return i31 + 1 | 0;
     }
      /*<<array.ml:366:11>>*/ if(i31 < l)  /*<<array.ml:366:27>>*/ return i31;
      /*<<array.ml:366:36>>*/ throw caml_maybe_attach_backtrace
            ([0, Bottom, i], 1);
     /*<<array.ml:366:52>>*/ }
    var
     l =  /*<<array.ml:394:2>>*/ a.length - 1,
     _t_ =  /*<<array.ml:395:2>>*/ ((l + 1 | 0) / 3 | 0) - 1 | 0;
    if(_t_ >= 0){
     var i$5 = _t_;
     for(;;){
      var e$1 =  /*<<array.ml:395:50>>*/ caml_check_bound(a, i$5)[i$5 + 1];
       /*<<array.ml:377:22>>*/ try{
       var i = i$5;
       for(;;){
        var j =  /*<<array.ml:369:12>>*/ maxson(l, i);
         /*<<array.ml:370:11>>*/ if
         (0
          >=
            /*<<array.ml:370:7>>*/ caml_call2
            (cmp,  /*<<array.ml:370:11>>*/ caml_check_bound(a, j)[j + 1], e$1)){
          /*<<array.ml:373:13>>*/ caml_check_bound(a, i)[i + 1] = e$1;
         break;
        }
        var _x_ =  /*<<array.ml:371:14>>*/ caml_check_bound(a, j)[j + 1];
         /*<<array.ml:371:6>>*/ caml_check_bound(a, i)[i + 1] = _x_;
         /*<<array.ml:371:23>>*/ i = j;
       }
      }
      catch(exn$0){
       var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
       if(exn[1] !== Bottom) throw caml_maybe_attach_backtrace(exn, 0);
       var i$0 = exn[2];
        /*<<array.ml:377:61>>*/ caml_check_bound(a, i$0)[i$0 + 1] = e$1;
      }
      var _B_ =  /*<<array.ml:395:59>>*/ i$5 - 1 | 0;
      if(0 === i$5) break;
      i$5 = _B_;
     }
    }
    var _u_ =  /*<<array.ml:396:2>>*/ l - 1 | 0;
    if(_u_ >= 2){
     var i$4 = _u_;
     a:
     for(;;){
      var e$0 =  /*<<array.ml:397:12>>*/ caml_check_bound(a, i$4)[i$4 + 1];
       /*<<array.ml:398:12>>*/ a[i$4 + 1] = caml_check_bound(a, 0)[1];
       /*<<array.ml:383:19>>*/ try{
       var i$1 = 0;
       for(;;){
        var
         j$0 =  /*<<array.ml:379:12>>*/ maxson(i$4, i$1),
         _y_ =  /*<<array.ml:380:12>>*/ caml_check_bound(a, j$0)[j$0 + 1];
         /*<<array.ml:380:4>>*/ caml_check_bound(a, i$1)[i$1 + 1] = _y_;
         /*<<array.ml:380:21>>*/ i$1 = j$0;
       }
      }
      catch(exn){
       var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
       if(exn$0[1] !== Bottom) throw caml_maybe_attach_backtrace(exn$0, 0);
       var i$2 = exn$0[2], i$3 =  /*<<array.ml:399:4>>*/ i$2;
       for(;;){
        var father =  /*<<array.ml:385:4>>*/ (i$3 - 1 | 0) / 3 | 0;
         /*<<array.ml:386:4>>*/ if(i$3 === father)
         throw caml_maybe_attach_backtrace([0, Assert_failure, _a_], 1);
         /*<<array.ml:387:11>>*/ if
         (0
          <=
            /*<<array.ml:387:7>>*/ caml_call2
            (cmp,
              /*<<array.ml:387:11>>*/ caml_check_bound(a, father)[father + 1],
             e$0))
          /*<<array.ml:390:13>>*/ caml_check_bound(a, i$3)[i$3 + 1] = e$0;
        else{
         var
          _z_ =
             /*<<array.ml:388:14>>*/ caml_check_bound(a, father)[father + 1];
          /*<<array.ml:388:6>>*/ caml_check_bound(a, i$3)[i$3 + 1] = _z_;
          /*<<array.ml:388:28>>*/ if(0 < father){i$3 = father; continue;}
          /*<<array.ml:389:49>>*/ caml_check_bound(a, 0)[1] = e$0;
        }
        var _A_ =  /*<<array.ml:399:28>>*/ i$4 - 1 | 0;
        if(2 === i$4) break a;
        i$4 = _A_;
        break;
       }
      }
     }
    }
    var _v_ =  /*<<array.ml:401:2>>*/ 1 < l ? 1 : 0;
    if(_v_){
     var e =  /*<<array.ml:401:25>>*/ caml_check_bound(a, 1)[2];
      /*<<array.ml:401:46>>*/ a[2] = caml_check_bound(a, 0)[1];
      /*<<array.ml:401:57>>*/ a[1] = e;
     var _w_ =  /*<<array.ml:401:66>>*/ 0;
    }
    else
     var _w_ =  /*<<array.ml:401:2>>*/ _v_;
    return _w_;
    /*<<array.ml:401:67>>*/ }
   function stable_sort(cmp, a){
    function merge(src1ofs, src1len, src2, src2ofs, src2len, dst, dstofs){
     var
      src1r =  /*<<array.ml:407:4>>*/ src1ofs + src1len | 0,
      src2r = src2ofs + src2len | 0,
      s2$1 =
         /*<<array.ml:424:44>>*/ caml_check_bound(src2, src2ofs)[src2ofs + 1],
      s1$1 =
         /*<<array.ml:424:20>>*/ caml_check_bound(a, src1ofs)[src1ofs + 1],
      i1 =  /*<<array.ml:424:35>>*/ src1ofs,
      s1 = s1$1,
      i2 = src2ofs,
      s2 = s2$1,
      d = dstofs;
     for(;;)
       /*<<array.ml:409:9>>*/ if(0 < caml_call2(cmp, s1, s2)){
        /*<<array.ml:417:8>>*/ caml_check_bound(dst, d)[d + 1] = s2;
       var i2$0 =  /*<<array.ml:417:20>>*/ i2 + 1 | 0;
        /*<<array.ml:419:8>>*/ if(i2$0 >= src2r)
         /*<<array.ml:422:10>>*/ return blit
                (a, i1, dst, d + 1 | 0, src1r - i1 | 0) /*<<array.ml:424:70>>*/ ;
       var
        d$0 =  /*<<array.ml:420:10>>*/ d + 1 | 0,
        s2$0 =  /*<<array.ml:420:24>>*/ caml_check_bound(src2, i2$0)[i2$0 + 1];
        /*<<array.ml:420:37>>*/ i2 = i2$0;
       s2 = s2$0;
       d = d$0;
      }
      else{
        /*<<array.ml:410:8>>*/ caml_check_bound(dst, d)[d + 1] = s1;
       var i1$0 =  /*<<array.ml:410:20>>*/ i1 + 1 | 0;
        /*<<array.ml:412:8>>*/ if(i1$0 >= src1r)
         /*<<array.ml:415:10>>*/ return blit
                (src2, i2, dst, d + 1 | 0, src2r - i2 | 0) /*<<array.ml:424:70>>*/ ;
       var
        d$1 =  /*<<array.ml:413:10>>*/ d + 1 | 0,
        s1$0 =  /*<<array.ml:413:18>>*/ caml_check_bound(a, i1$0)[i1$0 + 1];
        /*<<array.ml:413:28>>*/ i1 = i1$0;
       s1 = s1$0;
       d = d$1;
      }
     /*<<array.ml:424:70>>*/ }
    function isortto(srcofs, dst, dstofs, len){
     var _o_ =  /*<<array.ml:427:4>>*/ len - 1 | 0;
     if(_o_ >= 0){
      var i = 0;
      a:
      for(;;){
       var
        _p_ =  /*<<array.ml:428:6>>*/ srcofs + i | 0,
        e =  /*<<array.ml:428:14>>*/ caml_check_bound(a, _p_)[_p_ + 1],
        j =  /*<<array.ml:430:6>>*/ (dstofs + i | 0) - 1 | 0;
       for(;;){
        if
         (dstofs <= j
          &&
           0
           <
             /*<<array.ml:430:29>>*/ caml_call2
             (cmp,
               /*<<array.ml:430:33>>*/ caml_check_bound(dst, j)[j + 1],
              e)){
         var
          _q_ =  /*<<array.ml:431:37>>*/ j + 1 | 0,
          _s_ =  /*<<array.ml:431:25>>*/ caml_check_bound(dst, j)[j + 1];
          /*<<array.ml:431:8>>*/ caml_check_bound(dst, _q_)[_q_ + 1] = _s_;
         var j$0 =  /*<<array.ml:431:37>>*/ j - 1 | 0;
         j = j$0;
         continue;
        }
        var _r_ =  /*<<array.ml:434:6>>*/ j + 1 | 0;
        caml_check_bound(dst, _r_)[_r_ + 1] = e;
        var _t_ =  /*<<array.ml:434:24>>*/ i + 1 | 0;
        if(_o_ === i) break a;
        i = _t_;
        break;
       }
      }
     }
      /*<<array.ml:427:4>>*/ return 0;
     /*<<array.ml:435:8>>*/ }
    function sortto(srcofs, dst, dstofs, len){
      /*<<array.ml:438:4>>*/ if(len <= 5)
       /*<<array.ml:438:26>>*/ return isortto(srcofs, dst, dstofs, len) /*<<array.ml:444:7>>*/ ;
     var
      l1 =  /*<<array.ml:438:61>>*/ len / 2 | 0,
      l2 =  /*<<array.ml:440:6>>*/ len - l1 | 0;
      /*<<array.ml:441:6>>*/ sortto(srcofs + l1 | 0, dst, dstofs + l1 | 0, l2);
      /*<<array.ml:442:6>>*/ sortto(srcofs, a, srcofs + l2 | 0, l1);
      /*<<array.ml:442:38>>*/ return merge
             (srcofs + l2 | 0, l1, dst, dstofs + l1 | 0, l2, dst, dstofs) /*<<array.ml:444:7>>*/ ;
    }
    var l =  /*<<array.ml:446:2>>*/ a.length - 1;
     /*<<array.ml:447:2>>*/ if(l <= 5)
      /*<<array.ml:447:22>>*/ return isortto(0, a, 0, l) /*<<array.ml:454:5>>*/ ;
    var
     l1 =  /*<<array.ml:447:43>>*/ l / 2 | 0,
     l2 =  /*<<array.ml:449:4>>*/ l - l1 | 0,
     t =
        /*<<array.ml:450:20>>*/  /*<<array.ml:450:12>>*/ caml_array_make
        (l2,  /*<<array.ml:450:20>>*/ caml_check_bound(a, 0)[1]);
     /*<<array.ml:451:4>>*/ sortto(l1, t, 0, l2);
     /*<<array.ml:452:4>>*/ sortto(0, a, l2, l1);
     /*<<array.ml:452:20>>*/ return merge(l2, l1, t, 0, l2, a, 0) /*<<array.ml:454:5>>*/ ;
   }
   function shuffle(rand, a){
    var _c_ =  /*<<array.ml:467:2>>*/ a.length - 2 | 0;
    if(_c_ >= 1){
     var i = _c_;
     for(;;){
      var
       j =  /*<<array.ml:468:12>>*/ caml_call1(rand, i + 1 | 0),
       _d_ =  /*<<array.ml:469:4>>*/ 0 <= j,
       _n_ = _d_ ? j <= i : _d_;
      if(1 - _n_){
       var
        int =  /*<<array.ml:460:2>>*/ Stdlib[33],
        _e_ =  /*<<array.ml:464:38>>*/ int(i),
        _f_ = Stdlib[28].call(null, _e_, "]"),
        _g_ =
           /*<<array.ml:464:5>>*/ Stdlib[28].call
           (null, ", out of expected range [0; ", _f_),
        _h_ =  /*<<array.ml:463:21>>*/ int(j),
        _i_ = Stdlib[28].call(null, _h_, _g_),
        _j_ =
           /*<<array.ml:463:5>>*/ Stdlib[28].call(null, "' returned ", _i_),
        _k_ =  /*<<array.ml:462:31>>*/ int(i + 1 | 0),
        _l_ = Stdlib[28].call(null, _k_, _j_),
        _m_ =
           /*<<array.ml:462:4>>*/ Stdlib[28].call
           (null, "Array.shuffle: 'rand ", _l_);
        /*<<array.ml:464:50>>*/ Stdlib[1].call(null, _m_);
      }
      var v =  /*<<array.ml:470:12>>*/ a[i + 1];
       /*<<array.ml:471:4>>*/ a[i + 1] = a[j + 1];
       /*<<array.ml:472:4>>*/ a[j + 1] = v;
      var _o_ =  /*<<array.ml:472:20>>*/ i - 1 | 0;
      if(1 === i) break;
      i = _o_;
     }
    }
     /*<<array.ml:467:2>>*/ return 0;
    /*<<array.ml:473:6>>*/ }
   function to_seq(a){
    function aux(i, param){
      /*<<array.ml:479:4>>*/ if(i >= a.length - 1)
       /*<<array.ml:483:9>>*/ return 0;
     var
      x =  /*<<array.ml:481:14>>*/ a[i + 1],
      _b_ =  /*<<array.ml:482:19>>*/ i + 1 | 0;
      /*<<array.ml:482:28>>*/ return [0,
             x,
             function(_c_){ /*<<array.ml:482:19>>*/ return aux(_b_, _c_);}] /*<<array.ml:482:28>>*/ ;
     /*<<array.ml:483:16>>*/ }
     /*<<array.ml:485:2>>*/ return function(_b_){
      /*<<?>>*/ return aux(0, _b_);} /*<<array.ml:485:2>>*/ ;
    /*<<array.ml:485:7>>*/ }
   function to_seqi(a){
    function aux(i, param){
      /*<<array.ml:489:4>>*/ if(i >= a.length - 1)
       /*<<array.ml:493:9>>*/ return 0;
     var
      x =  /*<<array.ml:491:14>>*/ a[i + 1],
      _a_ =  /*<<array.ml:492:23>>*/ i + 1 | 0;
      /*<<array.ml:492:32>>*/ return [0,
             [0, i, x],
             function(_b_){ /*<<array.ml:492:23>>*/ return aux(_a_, _b_);}] /*<<array.ml:492:32>>*/ ;
     /*<<array.ml:493:16>>*/ }
     /*<<array.ml:495:2>>*/ return function(_a_){
      /*<<?>>*/ return aux(0, _a_);} /*<<array.ml:495:2>>*/ ;
    /*<<array.ml:495:7>>*/ }
   function of_seq(i$2){
    var
     l =
        /*<<array.ml:509:10>>*/ Stdlib_Seq[5].call
        (null,
         function(acc, x){
           /*<<array.ml:509:38>>*/ return [0, x, acc];
          /*<<array.ml:509:44>>*/ },
         0,
         i$2);
     /*<<array.ml:497:18>>*/ if(! l)  /*<<array.ml:498:10>>*/ return [0];
    var
     tl =  /*<<array.ml:497:18>>*/ l[2],
     hd = l[1],
     len =  /*<<array.ml:500:16>>*/ list_length(0, l),
     a =  /*<<array.ml:501:14>>*/ caml_array_make(len, hd),
     i$1 =  /*<<array.ml:506:6>>*/ len - 2 | 0,
     i = i$1,
     param = tl;
    for(;;){
      /*<<array.ml:502:19>>*/ if(! param)  /*<<array.ml:503:16>>*/ return a;
     var tl$0 =  /*<<array.ml:502:19>>*/ param[2], hd$0 = param[1];
      /*<<array.ml:504:20>>*/ a[i + 1] = hd$0;
     var i$0 =  /*<<array.ml:504:37>>*/ i - 1 | 0;
     i = i$0;
     param = tl$0;
    }
    /*<<array.ml:510:15>>*/ }
   var
    Stdlib_Array =
       /*<<?>>*/ [0,
       init,
       make_matrix,
       init_matrix,
       append,
       runtime.caml_array_concat,
       sub,
       copy,
       fill,
       blit,
       to_list,
       of_list,
       equal,
       compare,
       iter,
       iteri,
       map,
       map_inplace,
       mapi,
       mapi_inplace,
       fold_left,
       fold_left_map,
       fold_right,
       iter2,
       map2,
       for_all,
       exists,
       for_all2,
       exists2,
       mem,
       memq,
       find_opt,
       find_index,
       find_map,
       find_mapi,
       split,
       combine,
       sort,
       stable_sort,
       stable_sort,
       shuffle,
       to_seq,
       to_seqi,
       of_seq,
       [0]];
   runtime.caml_register_global(20, Stdlib_Array, "Stdlib__Array");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Iarray
//# unitInfo: Requires: Stdlib, Stdlib__Array
//# shape: Stdlib__Iarray:[F(2),F(2)*,F(1)*,F(3),F(1),F(1),F(1)*,F(1)*,F(3),F(3),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(1)*->F(1)*,F(1)*->F(1)*,F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib = global_data.Stdlib;
   function init(l, f){
     /*<<iarray.ml:64:15>>*/ return Stdlib_Array[1].call(null, l, f) /*<<iarray.ml:64:47>>*/ ;
   }
   function append(a1, a2){
     /*<<iarray.ml:67:2>>*/ return 0 === a1.length - 1
            ? a2
            : 0
              === a2.length - 1
              ? a1
              :  /*<<iarray.ml:69:7>>*/ runtime.caml_array_append(a1, a2) /*<<iarray.ml:69:24>>*/ ;
   }
   function sub(a, pos, len){
     /*<<iarray.ml:72:2>>*/ if
     (0 <= pos && 0 <= len && (a.length - 1 - len | 0) >= pos)
      /*<<iarray.ml:74:7>>*/ return runtime.caml_array_sub(a, pos, len) /*<<iarray.ml:74:27>>*/ ;
     /*<<iarray.ml:73:7>>*/ return Stdlib[1].call(null, "Iarray.sub") /*<<iarray.ml:74:27>>*/ ;
   }
   function iter(f, a){
    var _o_ =  /*<<iarray.ml:77:2>>*/ a.length - 2 | 0;
    if(_o_ >= 0){
     var i = 0;
     for(;;){
       /*<<iarray.ml:77:31>>*/ caml_call1(f, a[i + 1]);
      var _p_ =  /*<<iarray.ml:77:48>>*/ i + 1 | 0;
      if(_o_ === i) break;
      i = _p_;
     }
    }
     /*<<iarray.ml:77:2>>*/ return 0;
    /*<<iarray.ml:77:53>>*/ }
   function iter2(f, a, b){
     /*<<iarray.ml:80:2>>*/ if(a.length - 1 !== b.length - 1)
      /*<<iarray.ml:81:4>>*/ return Stdlib[1].call
             (null, "Iarray.iter2: arrays must have the same length") /*<<iarray.ml:83:73>>*/ ;
    var _n_ =  /*<<iarray.ml:83:4>>*/ a.length - 2 | 0;
    if(_n_ >= 0){
     var i = 0;
     for(;;){
       /*<<iarray.ml:83:33>>*/ caml_call2(f, a[i + 1], b[i + 1]);
      var _o_ =  /*<<iarray.ml:83:68>>*/ i + 1 | 0;
      if(_n_ === i) break;
      i = _o_;
     }
    }
     /*<<iarray.ml:83:4>>*/ return 0;
    /*<<iarray.ml:83:73>>*/ }
   function map(f, a){
    var l =  /*<<iarray.ml:86:2>>*/ a.length - 1;
     /*<<iarray.ml:87:2>>*/ if(0 === l)
     var r =  /*<<iarray.ml:87:24>>*/ [0];
    else{
     var
      r$0 =
         /*<<iarray.ml:88:25>>*/  /*<<iarray.ml:88:12>>*/ caml_array_make
         (l,  /*<<iarray.ml:88:25>>*/ caml_call1(f, a[1])),
      _m_ =  /*<<iarray.ml:89:4>>*/ l - 1 | 0;
     if(_m_ < 1)
      var r = r$0;
     else{
      var i = 1;
      for(;;){
        /*<<iarray.ml:90:27>>*/ r$0[i + 1] = caml_call1(f, a[i + 1]);
       var _n_ =  /*<<iarray.ml:90:46>>*/ i + 1 | 0;
       if(_m_ === i){var r = r$0; break;}
       i = _n_;
      }
     }
    }
     /*<<iarray.ml:94:2>>*/ return r;
    /*<<iarray.ml:94:19>>*/ }
   function map2(f, a, b){
    var
     la =  /*<<iarray.ml:97:2>>*/ a.length - 1,
     lb =  /*<<iarray.ml:98:2>>*/ b.length - 1;
     /*<<iarray.ml:99:2>>*/ if(la !== lb)
      /*<<iarray.ml:100:4>>*/ return Stdlib[1].call
             (null, "Iarray.map2: arrays must have the same length") /*<<iarray.ml:110:5>>*/ ;
     /*<<iarray.ml:101:7>>*/ if(0 === la)
     var r =  /*<<iarray.ml:102:27>>*/ [0];
    else{
     var
      r$0 =
         /*<<iarray.ml:103:28>>*/  /*<<iarray.ml:103:14>>*/ caml_array_make
         (la,  /*<<iarray.ml:103:28>>*/ caml_call2(f, a[1], b[1])),
      _l_ =  /*<<iarray.ml:104:6>>*/ la - 1 | 0;
     if(_l_ < 1)
      var r = r$0;
     else{
      var i = 1;
      for(;;){
        /*<<iarray.ml:105:29>>*/ r$0[i + 1] =
        caml_call2(f, a[i + 1], b[i + 1]);
       var _m_ =  /*<<iarray.ml:105:66>>*/ i + 1 | 0;
       if(_l_ === i){var r = r$0; break;}
       i = _m_;
      }
     }
    }
     /*<<iarray.ml:109:4>>*/ return r;
    /*<<iarray.ml:110:5>>*/ }
   function iteri(f, a){
    var _k_ =  /*<<iarray.ml:113:2>>*/ a.length - 2 | 0;
    if(_k_ >= 0){
     var i = 0;
     for(;;){
       /*<<iarray.ml:113:31>>*/ caml_call2(f, i, a[i + 1]);
      var _l_ =  /*<<iarray.ml:113:51>>*/ i + 1 | 0;
      if(_k_ === i) break;
      i = _l_;
     }
    }
     /*<<iarray.ml:113:2>>*/ return 0;
    /*<<iarray.ml:113:56>>*/ }
   function mapi(f, a){
    var l =  /*<<iarray.ml:116:2>>*/ a.length - 1;
     /*<<iarray.ml:117:2>>*/ if(0 === l)
     var r =  /*<<iarray.ml:117:24>>*/ [0];
    else{
     var
      r$0 =
         /*<<iarray.ml:118:25>>*/  /*<<iarray.ml:118:12>>*/ caml_array_make
         (l,  /*<<iarray.ml:118:25>>*/ caml_call2(f, 0, a[1])),
      _j_ =  /*<<iarray.ml:119:4>>*/ l - 1 | 0;
     if(_j_ < 1)
      var r = r$0;
     else{
      var i = 1;
      for(;;){
        /*<<iarray.ml:120:27>>*/ r$0[i + 1] = caml_call2(f, i, a[i + 1]);
       var _k_ =  /*<<iarray.ml:120:49>>*/ i + 1 | 0;
       if(_j_ === i){var r = r$0; break;}
       i = _k_;
      }
     }
    }
     /*<<iarray.ml:124:2>>*/ return r;
    /*<<iarray.ml:124:19>>*/ }
   function to_list(a){
    var i$1 =  /*<<iarray.ml:129:2>>*/ a.length - 2 | 0, i = i$1, res = 0;
    for(;;){
      /*<<iarray.ml:128:4>>*/ if(0 > i)  /*<<iarray.ml:128:18>>*/ return res;
     var
      res$0 =  /*<<iarray.ml:128:57>>*/ [0, a[i + 1], res],
      i$0 = i - 1 | 0;
     i = i$0;
     res = res$0;
    }
    /*<<iarray.ml:129:26>>*/ }
   function of_list(l){
     /*<<iarray.ml:131:16>>*/ return Stdlib_Array[11].call(null, l) /*<<iarray.ml:131:49>>*/ ;
   }
   function to_array(ia){
     /*<<iarray.ml:133:18>>*/ return Stdlib_Array[7].call(null, ia) /*<<iarray.ml:133:49>>*/ ;
   }
   function of_array(ma){
     /*<<iarray.ml:135:18>>*/ return Stdlib_Array[7].call(null, ma) /*<<iarray.ml:135:49>>*/ ;
   }
   function fold_left(f, x, a){
    var _h_ =  /*<<iarray.ml:139:2>>*/ a.length - 2 | 0;
    if(_h_ < 0)
     var r$0 = x;
    else{
     var r = x, i = 0;
     for(;;){
      var
       _i_ =  /*<<iarray.ml:140:9>>*/ caml_call2(f, r, a[i + 1]),
       _j_ =  /*<<iarray.ml:140:30>>*/ i + 1 | 0;
      if(_h_ === i){var r$0 = _i_; break;}
      r = _i_;
      i = _j_;
     }
    }
     /*<<iarray.ml:142:2>>*/ return r$0;
    /*<<iarray.ml:142:4>>*/ }
   function fold_left_map(f, acc, input_array){
    var len =  /*<<iarray.ml:145:2>>*/ input_array.length - 1;
     /*<<iarray.ml:146:2>>*/ if(0 === len)
     var output_array =  /*<<iarray.ml:146:42>>*/ [0], acc$0 = acc;
    else{
     var
      match =  /*<<iarray.ml:147:19>>*/ caml_call2(f, acc, input_array[1]),
      elt =  /*<<iarray.ml:147:51>>*/ match[2],
      acc$1 = match[1],
      output_array$0 =  /*<<iarray.ml:148:23>>*/ caml_array_make(len, elt),
      _g_ =  /*<<iarray.ml:150:4>>*/ len - 1 | 0;
     if(_g_ < 1)
      var output_array = output_array$0, acc$0 = acc$1;
     else{
      var acc$3 = acc$1, i = 1;
      for(;;){
       var
        match$0 =
           /*<<iarray.ml:151:22>>*/ caml_call2(f, acc$3, input_array[i + 1]),
        elt$0 =  /*<<iarray.ml:151:55>>*/ match$0[2],
        acc$2 = match$0[1];
        /*<<iarray.ml:153:6>>*/ output_array$0[i + 1] = elt$0;
       var _h_ =  /*<<iarray.ml:153:41>>*/ i + 1 | 0;
       if(_g_ === i){var output_array = output_array$0, acc$0 = acc$2; break;}
       acc$3 = acc$2;
       i = _h_;
      }
     }
    }
     /*<<iarray.ml:157:2>>*/ return [0, acc$0, output_array];
    /*<<iarray.ml:157:35>>*/ }
   function fold_right(f, a, x){
    var _e_ =  /*<<iarray.ml:161:2>>*/ a.length - 2 | 0;
    if(_e_ < 0)
     var r$0 = x;
    else{
     var r = x, i = _e_;
     for(;;){
      var
       _f_ =  /*<<iarray.ml:162:9>>*/ caml_call2(f, a[i + 1], r),
       _g_ =  /*<<iarray.ml:162:30>>*/ i - 1 | 0;
      if(0 === i){var r$0 = _f_; break;}
      r = _f_;
      i = _g_;
     }
    }
     /*<<iarray.ml:164:2>>*/ return r$0;
    /*<<iarray.ml:164:4>>*/ }
   function exists(p, a){
    var
     n =  /*<<iarray.ml:167:2>>*/ a.length - 1,
     i =  /*<<iarray.ml:172:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:169:4>>*/ if(i === n)  /*<<iarray.ml:169:18>>*/ return 0;
      /*<<iarray.ml:170:12>>*/ if(caml_call1(p, a[i + 1]))
       /*<<iarray.ml:170:36>>*/ return 1;
     var i$0 =  /*<<iarray.ml:171:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:172:8>>*/ }
   function for_all(p, a){
    var
     n =  /*<<iarray.ml:175:2>>*/ a.length - 1,
     i =  /*<<iarray.ml:180:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:177:4>>*/ if(i === n)  /*<<iarray.ml:177:18>>*/ return 1;
      /*<<iarray.ml:178:12>>*/ if(! caml_call1(p, a[i + 1]))
       /*<<iarray.ml:179:9>>*/ return 0;
     var i$0 =  /*<<iarray.ml:178:36>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:180:8>>*/ }
   function for_all2(p, l1, l2){
    var n1 =  /*<<iarray.ml:183:2>>*/ l1.length - 1, n2 = l2.length - 1;
     /*<<iarray.ml:185:2>>*/ if(n1 !== n2)
      /*<<iarray.ml:185:19>>*/ return Stdlib[1].call(null, "Iarray.for_all2") /*<<iarray.ml:190:8>>*/ ;
    var i =  /*<<iarray.ml:190:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:187:4>>*/ if(i === n1)  /*<<iarray.ml:187:19>>*/ return 1;
      /*<<iarray.ml:188:12>>*/ if(! caml_call2(p, l1[i + 1], l2[i + 1]))
       /*<<iarray.ml:189:9>>*/ return 0;
     var i$0 =  /*<<iarray.ml:188:55>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:190:8>>*/ }
   function exists2(p, l1, l2){
    var n1 =  /*<<iarray.ml:193:2>>*/ l1.length - 1, n2 = l2.length - 1;
     /*<<iarray.ml:195:2>>*/ if(n1 !== n2)
      /*<<iarray.ml:195:19>>*/ return Stdlib[1].call(null, "Iarray.exists2") /*<<iarray.ml:200:8>>*/ ;
    var i =  /*<<iarray.ml:200:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:197:4>>*/ if(i === n1)  /*<<iarray.ml:197:19>>*/ return 0;
      /*<<iarray.ml:198:12>>*/ if(caml_call2(p, l1[i + 1], l2[i + 1]))
       /*<<iarray.ml:198:55>>*/ return 1;
     var i$0 =  /*<<iarray.ml:199:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:200:8>>*/ }
   function equal(eq, a1, a2){
    var
     _e_ =  /*<<iarray.ml:203:2>>*/ a1.length - 1 === a2.length - 1 ? 1 : 0;
    return _e_ ? for_all2(eq, a1, a2) : _e_ /*<<iarray.ml:203:44>>*/ ;
   }
   function compare(cmp, a1, a2){
     /*<<iarray.ml:206:2>>*/ if(a1.length - 1 !== a2.length - 1)
      /*<<iarray.ml:206:33>>*/ return a1.length - 1 - (a2.length - 1) | 0;
    var i =  /*<<iarray.ml:215:4>>*/ 0;
    for(;;){
      /*<<iarray.ml:209:6>>*/ if(i === a1.length - 1)
       /*<<iarray.ml:209:28>>*/ return 0;
     var c =  /*<<iarray.ml:211:16>>*/ caml_call2(cmp, a1[i + 1], a2[i + 1]);
      /*<<iarray.ml:212:8>>*/ if(0 !== c)  /*<<iarray.ml:212:23>>*/ return c;
     var i$0 =  /*<<iarray.ml:213:13>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:216:3>>*/ }
   function mem(x, a){
    var
     n =  /*<<iarray.ml:219:2>>*/ a.length - 1,
     i =  /*<<iarray.ml:224:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:221:4>>*/ if(i === n)  /*<<iarray.ml:221:18>>*/ return 0;
      /*<<iarray.ml:222:12>>*/ if(0 === runtime.caml_compare(a[i + 1], x))
       /*<<iarray.ml:222:55>>*/ return 1;
     var i$0 =  /*<<iarray.ml:223:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:224:8>>*/ }
   function memq(x, a){
    var
     n =  /*<<iarray.ml:227:2>>*/ a.length - 1,
     i =  /*<<iarray.ml:232:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:229:4>>*/ if(i === n)  /*<<iarray.ml:229:18>>*/ return 0;
      /*<<iarray.ml:230:33>>*/ if(x === a[i + 1])
       /*<<iarray.ml:230:39>>*/ return 1;
     var i$0 =  /*<<iarray.ml:231:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:232:8>>*/ }
   function find_opt(p, a){
    var
     n =  /*<<iarray.ml:235:2>>*/ a.length - 1,
     i =  /*<<iarray.ml:243:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:237:4>>*/ if(i === n)  /*<<iarray.ml:237:18>>*/ return 0;
     var x =  /*<<iarray.ml:239:14>>*/ a[i + 1];
      /*<<iarray.ml:240:9>>*/ if(caml_call1(p, x))
       /*<<iarray.ml:240:18>>*/ return [0, x];
     var i$0 =  /*<<iarray.ml:241:11>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:243:8>>*/ }
   function find_index(p, a){
    var
     n =  /*<<iarray.ml:246:2>>*/ a.length - 1,
     i =  /*<<iarray.ml:251:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:248:4>>*/ if(i === n)  /*<<iarray.ml:248:18>>*/ return 0;
      /*<<iarray.ml:249:12>>*/ if(caml_call1(p, a[i + 1]))
       /*<<iarray.ml:249:36>>*/ return [0, i];
     var i$0 =  /*<<iarray.ml:250:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:251:8>>*/ }
   function find_map(f, a){
    var
     n =  /*<<iarray.ml:254:2>>*/ a.length - 1,
     i =  /*<<iarray.ml:262:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:256:4>>*/ if(i === n)  /*<<iarray.ml:256:18>>*/ return 0;
     var r =  /*<<iarray.ml:258:12>>*/ caml_call1(f, a[i + 1]);
      /*<<iarray.ml:258:30>>*/ if(r)  /*<<iarray.ml:260:23>>*/ return r;
     var i$0 =  /*<<iarray.ml:259:16>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:262:8>>*/ }
   function find_mapi(f, a){
    var
     n =  /*<<iarray.ml:265:2>>*/ a.length - 1,
     i =  /*<<iarray.ml:273:2>>*/ 0;
    for(;;){
      /*<<iarray.ml:267:4>>*/ if(i === n)  /*<<iarray.ml:267:18>>*/ return 0;
     var r =  /*<<iarray.ml:269:12>>*/ caml_call2(f, i, a[i + 1]);
      /*<<iarray.ml:269:32>>*/ if(r)  /*<<iarray.ml:271:23>>*/ return r;
     var i$0 =  /*<<iarray.ml:270:16>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<iarray.ml:273:8>>*/ }
   function split(x){
     /*<<iarray.ml:276:5>>*/ if(equal(runtime.caml_equal, x, [0]))
      /*<<iarray.ml:276:41>>*/ return [0, [0], [0]];
    var
     match =  /*<<iarray.ml:277:7>>*/ x[1],
     b0 = match[2],
     a0 = match[1],
     n =  /*<<iarray.ml:279:4>>*/ x.length - 1,
     a =  /*<<iarray.ml:280:12>>*/ caml_array_make(n, a0),
     b =  /*<<iarray.ml:281:12>>*/ caml_array_make(n, b0),
     _d_ =  /*<<iarray.ml:282:4>>*/ n - 1 | 0;
    if(_d_ >= 1){
     var i = 1;
     for(;;){
      var
       match$0 =  /*<<iarray.ml:283:6>>*/ x[i + 1],
       bi = match$0[2],
       ai = match$0[1];
       /*<<iarray.ml:284:6>>*/ a[i + 1] = ai;
       /*<<iarray.ml:285:6>>*/ b[i + 1] = bi;
      var _e_ =  /*<<iarray.ml:285:29>>*/ i + 1 | 0;
      if(_d_ === i) break;
      i = _e_;
     }
    }
     /*<<iarray.ml:287:4>>*/ return [0, a, b];
    /*<<iarray.ml:288:5>>*/ }
   function combine(a, b){
    var
     na =  /*<<iarray.ml:291:2>>*/ a.length - 1,
     nb =  /*<<iarray.ml:292:2>>*/ b.length - 1;
     /*<<iarray.ml:293:2>>*/ if(na !== nb)
      /*<<iarray.ml:293:19>>*/ Stdlib[1].call(null, "Iarray.combine");
     /*<<iarray.ml:294:2>>*/ if(0 === na)
     var r =  /*<<iarray.ml:294:25>>*/ [0];
    else{
     var
      x =  /*<<iarray.ml:296:12>>*/ caml_array_make(na, [0, a[1], b[1]]),
      _c_ =  /*<<iarray.ml:297:4>>*/ na - 1 | 0;
     if(_c_ < 1)
      var r = x;
     else{
      var i = 1;
      for(;;){
        /*<<iarray.ml:298:42>>*/ x[i + 1] = [0, a[i + 1], b[i + 1]];
       var _d_ = i + 1 | 0;
       if(_c_ === i){var r = x; break;}
       i = _d_;
      }
     }
    }
     /*<<iarray.ml:302:2>>*/ return r;
    /*<<iarray.ml:302:19>>*/ }
   function lift_sort(sorter, cmp, iarr){
    var arr =  /*<<iarray.ml:306:12>>*/ to_array(iarr);
     /*<<iarray.ml:307:2>>*/ caml_call2(sorter, cmp, arr);
     /*<<iarray.ml:307:16>>*/ return arr;
    /*<<iarray.ml:308:21>>*/ }
   function sort(cmp, iarr){
     /*<<iarray.ml:310:20>>*/ return lift_sort(Stdlib_Array[37], cmp, iarr) /*<<iarray.ml:310:49>>*/ ;
   }
   function stable_sort(cmp, iarr){
     /*<<iarray.ml:311:27>>*/ return lift_sort(Stdlib_Array[38], cmp, iarr) /*<<iarray.ml:311:63>>*/ ;
   }
   function fast_sort(cmp, iarr){
     /*<<iarray.ml:312:25>>*/ return lift_sort(Stdlib_Array[39], cmp, iarr) /*<<iarray.ml:312:59>>*/ ;
   }
   function to_seq(a){
    function aux(i, param){
      /*<<iarray.ml:316:4>>*/ if(i >= a.length - 1)
       /*<<iarray.ml:320:9>>*/ return 0;
     var
      x =  /*<<iarray.ml:318:14>>*/ a[i + 1],
      _b_ =  /*<<iarray.ml:319:19>>*/ i + 1 | 0;
      /*<<iarray.ml:319:28>>*/ return [0,
             x,
             function(_c_){ /*<<iarray.ml:319:19>>*/ return aux(_b_, _c_);}] /*<<iarray.ml:319:28>>*/ ;
     /*<<iarray.ml:320:16>>*/ }
     /*<<iarray.ml:322:2>>*/ return function(_b_){
      /*<<?>>*/ return aux(0, _b_);} /*<<iarray.ml:322:2>>*/ ;
    /*<<iarray.ml:322:7>>*/ }
   function to_seqi(a){
    function aux(i, param){
      /*<<iarray.ml:326:4>>*/ if(i >= a.length - 1)
       /*<<iarray.ml:330:9>>*/ return 0;
     var
      x =  /*<<iarray.ml:328:14>>*/ a[i + 1],
      _a_ =  /*<<iarray.ml:329:23>>*/ i + 1 | 0;
      /*<<iarray.ml:329:32>>*/ return [0,
             [0, i, x],
             function(_b_){ /*<<iarray.ml:329:23>>*/ return aux(_a_, _b_);}] /*<<iarray.ml:329:32>>*/ ;
     /*<<iarray.ml:330:16>>*/ }
     /*<<iarray.ml:332:2>>*/ return function(_a_){
      /*<<?>>*/ return aux(0, _a_);} /*<<iarray.ml:332:2>>*/ ;
    /*<<iarray.ml:332:7>>*/ }
   function of_seq(i){
     /*<<iarray.ml:334:15>>*/ return Stdlib_Array[43].call(null, i) /*<<iarray.ml:334:47>>*/ ;
   }
   var
    Stdlib_Iarray =
       /*<<?>>*/ [0,
       init,
       append,
       runtime.caml_array_concat,
       sub,
       to_list,
       of_list,
       to_array,
       of_array,
       equal,
       compare,
       iter,
       iteri,
       map,
       mapi,
       fold_left,
       fold_left_map,
       fold_right,
       iter2,
       map2,
       for_all,
       exists,
       for_all2,
       exists2,
       mem,
       memq,
       find_opt,
       find_index,
       find_map,
       find_mapi,
       split,
       combine,
       sort,
       stable_sort,
       fast_sort,
       to_seq,
       to_seqi,
       of_seq];
   runtime.caml_register_global(8, Stdlib_Iarray, "Stdlib__Iarray");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Bytes
//# unitInfo: Requires: Stdlib, Stdlib__Char, Stdlib__Int, Stdlib__Seq, Stdlib__Sys, Stdlib__Uchar
//# shape: Stdlib__Bytes:[F(2),F(2),N,F(1),F(1),F(1),F(3),F(3),F(3),F(4),F(5),F(5),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(1),F(1),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(2),F(3),F(3),F(1),F(1),F(1),F(1),F(2)*,F(2)*,F(2),F(2),F(1),F(1)*,F(2),F(1)*->F(1),F(1)*->F(1),F(1),F(2),F(3),F(1),F(2),F(3),F(1),F(2),F(3),F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_blit_bytes = runtime.caml_blit_bytes,
    caml_bswap16 = runtime.caml_bswap16,
    caml_bytes_get = runtime.caml_bytes_get,
    caml_bytes_get16 = runtime.caml_bytes_get16,
    caml_bytes_get32 = runtime.caml_bytes_get32,
    caml_bytes_get64 = runtime.caml_bytes_get64,
    caml_bytes_of_string = runtime.caml_bytes_of_string,
    caml_bytes_set = runtime.caml_bytes_set,
    caml_bytes_set16 = runtime.caml_bytes_set16,
    caml_bytes_set32 = runtime.caml_bytes_set32,
    caml_bytes_set64 = runtime.caml_bytes_set64,
    caml_bytes_unsafe_get = runtime.caml_bytes_unsafe_get,
    caml_bytes_unsafe_set = runtime.caml_bytes_unsafe_set,
    caml_create_bytes = runtime.caml_create_bytes,
    caml_fill_bytes = runtime.caml_fill_bytes,
    caml_int32_bswap = runtime.caml_int32_bswap,
    caml_int64_bswap = runtime.caml_int64_bswap,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_bytes_length = runtime.caml_ml_bytes_length,
    caml_string_of_bytes = runtime.caml_string_of_bytes,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    dummy = 0,
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Uchar = global_data.Stdlib__Uchar,
    Assert_failure = global_data.Assert_failure,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Int = global_data.Stdlib__Int,
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib_Char = global_data.Stdlib__Char;
   function make(n, c){
    var s =  /*<<bytes.ml:42:10>>*/ caml_create_bytes(n);
     /*<<bytes.ml:43:2>>*/ caml_fill_bytes(s, 0, n, c);
     /*<<bytes.ml:43:21>>*/ return s;
    /*<<bytes.ml:44:3>>*/ }
   function init(n, f){
    var
     s =  /*<<bytes.ml:47:10>>*/ caml_create_bytes(n),
     _G_ =  /*<<bytes.ml:48:2>>*/ n - 1 | 0;
    if(_G_ >= 0){
     var i = 0;
     for(;;){
       /*<<bytes.ml:49:19>>*/  /*<<bytes.ml:49:24>>*/ caml_bytes_unsafe_set
       (s, i,  /*<<bytes.ml:49:19>>*/ caml_call1(f, i));
      var _H_ =  /*<<bytes.ml:49:24>>*/ i + 1 | 0;
      if(_G_ === i) break;
      i = _H_;
     }
    }
     /*<<bytes.ml:51:2>>*/ return s;
    /*<<bytes.ml:51:3>>*/ }
   var empty =  /*<<bytes.ml:53:12>>*/ caml_create_bytes(0);
   function copy(s){
    var
     len =  /*<<bytes.ml:56:2>>*/ caml_ml_bytes_length(s),
     r =  /*<<bytes.ml:57:10>>*/ caml_create_bytes(len);
     /*<<bytes.ml:58:2>>*/ caml_blit_bytes(s, 0, r, 0, len);
     /*<<bytes.ml:58:25>>*/ return r;
    /*<<bytes.ml:59:3>>*/ }
   function to_string(b){
     /*<<bytes.ml:61:35>>*/ return  /*<<bytes.ml:61:43>>*/ caml_string_of_bytes
            ( /*<<bytes.ml:61:35>>*/ copy(b)) /*<<bytes.ml:61:43>>*/ ;
   }
   function of_string(s){
     /*<<bytes.ml:62:18>>*/ return copy(caml_bytes_of_string(s)) /*<<bytes.ml:62:43>>*/ ;
   }
   function sub(s, ofs, len){
     /*<<bytes.ml:65:2>>*/ if
     (0 <= ofs && 0 <= len && (caml_ml_bytes_length(s) - len | 0) >= ofs){
     var r =  /*<<bytes.ml:68:12>>*/ caml_create_bytes(len);
      /*<<bytes.ml:69:4>>*/ caml_blit_bytes(s, ofs, r, 0, len);
      /*<<bytes.ml:69:29>>*/ return r;
    }
     /*<<bytes.ml:66:7>>*/ return Stdlib[1].call
            (null, "String.sub / Bytes.sub") /*<<bytes.ml:71:5>>*/ ;
   }
   function sub_string(b, ofs, len){
     /*<<bytes.ml:73:44>>*/ return  /*<<bytes.ml:73:59>>*/ caml_string_of_bytes
            ( /*<<bytes.ml:73:44>>*/ sub(b, ofs, len)) /*<<bytes.ml:73:59>>*/ ;
   }
   function symbol(a, b){
    var
     c =  /*<<bytes.ml:77:2>>*/ a + b | 0,
     _G_ =  /*<<bytes.ml:78:2>>*/ b < 0,
     match = c < 0;
    a:
    {
     if(a < 0){if(! _G_ || match) break a;} else if(_G_ || ! match) break a;
      /*<<bytes.ml:80:27>>*/ return Stdlib[1].call(null, "Bytes.extend") /*<<bytes.ml:81:10>>*/ ;
    }
     /*<<bytes.ml:81:9>>*/ return c;
    /*<<bytes.ml:81:10>>*/ }
   function extend(s, left, right){
    var
     len =
        /*<<bytes.ml:84:2>>*/  /*<<bytes.ml:84:12>>*/ symbol
        (symbol( /*<<bytes.ml:84:2>>*/ caml_ml_bytes_length(s), left), right),
     r =  /*<<bytes.ml:85:10>>*/ caml_create_bytes(len);
     /*<<bytes.ml:86:2>>*/ if(0 <= left)
     var dstoff =  /*<<bytes.ml:87:2>>*/ left, srcoff = 0;
    else
     var dstoff =  /*<<bytes.ml:86:42>>*/ 0, srcoff = - left | 0;
    var
     cpylen =
        /*<<bytes.ml:87:2>>*/  /*<<bytes.ml:87:15>>*/ Stdlib_Int[10].call
        (null,
          /*<<bytes.ml:87:2>>*/ caml_ml_bytes_length(s) - srcoff | 0,
         len - dstoff | 0);
     /*<<bytes.ml:88:2>>*/ if(0 < cpylen)
      /*<<bytes.ml:88:21>>*/ caml_blit_bytes(s, srcoff, r, dstoff, cpylen);
     /*<<bytes.ml:89:2>>*/ return r;
    /*<<bytes.ml:89:3>>*/ }
   function fill(s, ofs, len, c){
     /*<<bytes.ml:92:2>>*/ if
     (0 <= ofs && 0 <= len && (caml_ml_bytes_length(s) - len | 0) >= ofs)
      /*<<bytes.ml:94:7>>*/ return caml_fill_bytes(s, ofs, len, c) /*<<bytes.ml:94:30>>*/ ;
     /*<<bytes.ml:93:7>>*/ return Stdlib[1].call
            (null, "String.fill / Bytes.fill") /*<<bytes.ml:94:30>>*/ ;
   }
   function blit(s1, ofs1, s2, ofs2, len){
     /*<<bytes.ml:97:2>>*/ if
     (0 <= len
      &&
       0 <= ofs1
       &&
        (caml_ml_bytes_length(s1) - len | 0) >= ofs1
        && 0 <= ofs2 && (caml_ml_bytes_length(s2) - len | 0) >= ofs2)
      /*<<bytes.ml:100:7>>*/ return caml_blit_bytes(s1, ofs1, s2, ofs2, len) /*<<bytes.ml:100:38>>*/ ;
     /*<<bytes.ml:99:7>>*/ return Stdlib[1].call(null, "Bytes.blit") /*<<bytes.ml:100:38>>*/ ;
   }
   function blit_string(s1, ofs1, s2, ofs2, len){
     /*<<bytes.ml:103:2>>*/ if
     (0 <= len
      &&
       0 <= ofs1
       &&
        (runtime.caml_ml_string_length(s1) - len | 0) >= ofs1
        && 0 <= ofs2 && (caml_ml_bytes_length(s2) - len | 0) >= ofs2)
      /*<<bytes.ml:106:7>>*/ return runtime.caml_blit_string
             (s1, ofs1, s2, ofs2, len) /*<<bytes.ml:106:45>>*/ ;
     /*<<bytes.ml:105:7>>*/ return Stdlib[1].call
            (null, "String.blit / Bytes.blit_string") /*<<bytes.ml:106:45>>*/ ;
   }
   function iter(f, a){
    var _F_ =  /*<<bytes.ml:110:2>>*/ caml_ml_bytes_length(a) - 1 | 0;
    if(_F_ >= 0){
     var i = 0;
     for(;;){
       /*<<bytes.ml:110:31>>*/ caml_call1(f, caml_bytes_unsafe_get(a, i));
      var _G_ =  /*<<bytes.ml:110:48>>*/ i + 1 | 0;
      if(_F_ === i) break;
      i = _G_;
     }
    }
     /*<<bytes.ml:110:2>>*/ return 0;
    /*<<bytes.ml:110:53>>*/ }
   function iteri(f, a){
    var _E_ =  /*<<bytes.ml:114:2>>*/ caml_ml_bytes_length(a) - 1 | 0;
    if(_E_ >= 0){
     var i = 0;
     for(;;){
       /*<<bytes.ml:114:31>>*/ caml_call2(f, i, caml_bytes_unsafe_get(a, i));
      var _F_ =  /*<<bytes.ml:114:51>>*/ i + 1 | 0;
      if(_E_ === i) break;
      i = _F_;
     }
    }
     /*<<bytes.ml:114:2>>*/ return 0;
    /*<<bytes.ml:114:56>>*/ }
   function concat(sep, l){
     /*<<bytes.ml:132:11>>*/ if(! l)  /*<<bytes.ml:133:10>>*/ return empty;
    var seplen =  /*<<bytes.ml:134:9>>*/ caml_ml_bytes_length(sep);
    a:
    {
     var acc =  /*<<bytes.ml:136:20>>*/ 0, param = l, pos$1 = 0;
     for(;;){
       /*<<bytes.ml:118:20>>*/ if(! param){var _E_ = acc; break a;}
      var hd = param[1];
      if(! param[2]) break;
      var
       tl = param[2],
       x =
          /*<<bytes.ml:121:16>>*/ (caml_ml_bytes_length(hd) + seplen | 0)
         + acc
         | 0;
       /*<<bytes.ml:116:26>>*/ if(acc <= x){
       acc = x;
       param = tl;
      }
      else{
        /*<<bytes.ml:116:48>>*/ acc = Stdlib[1].call(null, "Bytes.concat");
       param = tl;
      }
     }
     var _E_ =  /*<<bytes.ml:120:16>>*/ caml_ml_bytes_length(hd) + acc | 0;
    }
    var
     dst =  /*<<bytes.ml:136:12>>*/ caml_create_bytes(_E_),
     pos =  /*<<bytes.ml:136:45>>*/ pos$1,
     param$0 = l;
    for(;;){
      /*<<bytes.ml:123:21>>*/ if(! param$0)
       /*<<bytes.ml:124:10>>*/ return dst;
     var hd$0 =  /*<<bytes.ml:123:21>>*/ param$0[1];
     if(! param$0[2]){
       /*<<bytes.ml:126:4>>*/ caml_blit_bytes
       (hd$0, 0, dst, pos, caml_ml_bytes_length(hd$0));
       /*<<bytes.ml:126:40>>*/ return dst;
     }
     var tl$0 =  /*<<bytes.ml:123:21>>*/ param$0[2];
      /*<<bytes.ml:128:4>>*/ caml_blit_bytes
      (hd$0, 0, dst, pos, caml_ml_bytes_length(hd$0));
      /*<<bytes.ml:128:40>>*/  /*<<bytes.ml:129:4>>*/ caml_blit_bytes
      (sep,
       0,
       dst,
       pos +  /*<<bytes.ml:128:40>>*/ caml_ml_bytes_length(hd$0) | 0,
       seplen);
     var
      pos$0 =
         /*<<bytes.ml:129:50>>*/ (pos + caml_ml_bytes_length(hd$0) | 0)
        + seplen
        | 0;
     pos = pos$0;
     param$0 = tl$0;
    }
    /*<<bytes.ml:137:26>>*/ }
   function cat(s1, s2){
    var
     l1 =  /*<<bytes.ml:140:2>>*/ caml_ml_bytes_length(s1),
     l2 =  /*<<bytes.ml:141:2>>*/ caml_ml_bytes_length(s2),
     r =  /*<<bytes.ml:142:10>>*/ caml_create_bytes(l1 + l2 | 0);
     /*<<bytes.ml:143:2>>*/ caml_blit_bytes(s1, 0, r, 0, l1);
     /*<<bytes.ml:144:2>>*/ caml_blit_bytes(s2, 0, r, l1, l2);
     /*<<bytes.ml:144:26>>*/ return r;
    /*<<bytes.ml:145:3>>*/ }
   function is_space(param){
    var _E_ =  /*<<bytes.ml:151:15>>*/ param - 9 | 0;
    a:
    {
     if(4 < _E_ >>> 0){if(23 !== _E_) break a;} else if(2 === _E_) break a;
      /*<<bytes.ml:152:41>>*/ return 1;
    }
     /*<<bytes.ml:153:9>>*/ return 0;
    /*<<bytes.ml:153:14>>*/ }
   function trim(s){
    var
     len =  /*<<bytes.ml:156:2>>*/ caml_ml_bytes_length(s),
     i =  /*<<bytes.ml:158:2>>*/ 0;
    for(;;){
     if(i >= len) break;
     if
      (!
        /*<<bytes.ml:158:20>>*/ is_space
        ( /*<<bytes.ml:158:2>>*/ caml_bytes_unsafe_get(s, i)))
      break;
     var i$0 =  /*<<bytes.ml:159:4>>*/ i + 1 | 0;
     i = i$0;
    }
    var j =  /*<<bytes.ml:162:2>>*/ len - 1 | 0;
    for(;;){
     if
      (i <= j
       &&
         /*<<bytes.ml:162:20>>*/ is_space
         ( /*<<bytes.ml:162:2>>*/ caml_bytes_unsafe_get(s, j))){
      var j$0 =  /*<<bytes.ml:163:4>>*/ j - 1 | 0;
      j = j$0;
      continue;
     }
      /*<<bytes.ml:165:2>>*/ return i <= j
             ?  /*<<bytes.ml:166:4>>*/ sub(s, i, (j - i | 0) + 1 | 0)
             : empty /*<<bytes.ml:168:9>>*/ ;
    }
   }
   function unsafe_escape(s){
    var
     _A_ =  /*<<bytes.ml:185:2>>*/ caml_ml_bytes_length(s) - 1 | 0,
     _z_ =  /*<<bytes.ml:184:2>>*/ 0;
     /*<<bytes.ml:185:2>>*/ if(_A_ < 0)
     var n$0 = _z_;
    else{
     var n = _z_, i$0 = 0;
     for(;;){
      var match =  /*<<bytes.ml:186:4>>*/ caml_bytes_unsafe_get(s, i$0);
      a:
      {
       b:
       {
        c:
        {
         if(32 <= match){
          var _x_ = match - 34 | 0;
          if(58 < _x_ >>> 0){
           if(93 <= _x_) break c;
          }
          else if(56 < _x_ - 1 >>> 0) break b;
          var _y_ =  /*<<bytes.ml:189:23>>*/ 1;
          break a;
         }
          /*<<bytes.ml:186:4>>*/ if(11 <= match){
          if(13 === match) break b;
         }
         else if(8 <= match) break b;
        }
        var _y_ =  /*<<bytes.ml:190:14>>*/ 4;
        break a;
       }
       var _y_ =  /*<<bytes.ml:188:52>>*/ 2;
      }
      var _C_ =  /*<<bytes.ml:186:4>>*/ n + _y_ | 0, _E_ = i$0 + 1 | 0;
      if(_A_ === i$0){var n$0 = _C_; break;}
      n = _C_;
      i$0 = _E_;
     }
    }
     /*<<bytes.ml:192:2>>*/ if(n$0 === caml_ml_bytes_length(s))
      /*<<bytes.ml:192:24>>*/ return s;
    var
     s$0 =  /*<<bytes.ml:194:13>>*/ caml_create_bytes(n$0),
     _B_ =  /*<<bytes.ml:196:4>>*/ caml_ml_bytes_length(s) - 1 | 0;
    if(_B_ >= 0){
     var n$1 = 0, i = 0;
     for(;;){
      var c =  /*<<bytes.ml:197:6>>*/ caml_bytes_unsafe_get(s, i);
      a:
      {
       b:
       {
        c:
        {
         if(35 <= c){
          if(92 !== c){if(127 <= c) break b; break c;}
         }
         else{
          if(32 > c){
           if(14 <= c) break b;
           switch(c){
             case 8:
               /*<<bytes.ml:207:10>>*/ caml_bytes_unsafe_set(s$0, n$1, 92);
              var n$2 =  /*<<bytes.ml:207:33>>*/ n$1 + 1 | 0;
               /*<<bytes.ml:207:41>>*/ caml_bytes_unsafe_set(s$0, n$2, 98);
              var n$10 = n$2;
              break a;
             case 9:
               /*<<bytes.ml:203:10>>*/ caml_bytes_unsafe_set(s$0, n$1, 92);
              var n$3 =  /*<<bytes.ml:203:33>>*/ n$1 + 1 | 0;
               /*<<bytes.ml:203:41>>*/ caml_bytes_unsafe_set(s$0, n$3, 116);
              var n$10 = n$3;
              break a;
             case 10:
               /*<<bytes.ml:201:10>>*/ caml_bytes_unsafe_set(s$0, n$1, 92);
              var n$4 =  /*<<bytes.ml:201:33>>*/ n$1 + 1 | 0;
               /*<<bytes.ml:201:41>>*/ caml_bytes_unsafe_set(s$0, n$4, 110);
              var n$10 = n$4;
              break a;
             case 13:
               /*<<bytes.ml:205:10>>*/ caml_bytes_unsafe_set(s$0, n$1, 92);
              var n$5 =  /*<<bytes.ml:205:33>>*/ n$1 + 1 | 0;
               /*<<bytes.ml:205:41>>*/ caml_bytes_unsafe_set(s$0, n$5, 114);
              var n$10 = n$5;
              break a;
             default: break b;
           }
          }
           /*<<bytes.ml:197:6>>*/ if(34 > c) break c;
         }
          /*<<bytes.ml:199:10>>*/ caml_bytes_unsafe_set(s$0, n$1, 92);
         var n$9 =  /*<<bytes.ml:199:33>>*/ n$1 + 1 | 0;
          /*<<bytes.ml:199:41>>*/ caml_bytes_unsafe_set(s$0, n$9, c);
         var n$10 = n$9;
         break a;
        }
         /*<<bytes.ml:208:29>>*/ caml_bytes_unsafe_set(s$0, n$1, c);
        var n$10 = n$1;
        break a;
       }
        /*<<bytes.ml:211:10>>*/ caml_bytes_unsafe_set(s$0, n$1, 92);
       var n$6 =  /*<<bytes.ml:212:10>>*/ n$1 + 1 | 0;
        /*<<bytes.ml:213:10>>*/ caml_bytes_unsafe_set
        (s$0, n$6, 48 + (c / 100 | 0) | 0);
       var n$7 =  /*<<bytes.ml:214:10>>*/ n$6 + 1 | 0;
        /*<<bytes.ml:215:10>>*/ caml_bytes_unsafe_set
        (s$0, n$7, 48 + ((c / 10 | 0) % 10 | 0) | 0);
       var n$8 =  /*<<bytes.ml:216:10>>*/ n$7 + 1 | 0;
        /*<<bytes.ml:217:10>>*/ caml_bytes_unsafe_set
        (s$0, n$8, 48 + (c % 10 | 0) | 0);
       var n$10 = n$8;
      }
      var n$11 =  /*<<bytes.ml:219:6>>*/ n$10 + 1 | 0, _D_ = i + 1 | 0;
      if(_B_ === i) break;
      n$1 = n$11;
      i = _D_;
     }
    }
     /*<<bytes.ml:221:4>>*/ return s$0;
    /*<<bytes.ml:222:5>>*/ }
   function escaped(b){
    var b$0 =  /*<<bytes.ml:225:10>>*/ copy(b);
     /*<<bytes.ml:228:2>>*/ return unsafe_escape(b$0) /*<<bytes.ml:228:17>>*/ ;
   }
   function map(f, s){
    var l =  /*<<bytes.ml:231:2>>*/ caml_ml_bytes_length(s);
     /*<<bytes.ml:232:2>>*/ if(0 === l)  /*<<bytes.ml:232:16>>*/ return s;
    var
     r =  /*<<bytes.ml:233:12>>*/ caml_create_bytes(l),
     _w_ =  /*<<bytes.ml:234:4>>*/ l - 1 | 0;
    if(_w_ >= 0){
     var i = 0;
     for(;;){
       /*<<bytes.ml:234:26>>*/  /*<<bytes.ml:234:61>>*/ caml_bytes_unsafe_set
       (r,
        i,
         /*<<bytes.ml:234:41>>*/ caml_call1
         (f,  /*<<bytes.ml:234:26>>*/ caml_bytes_unsafe_get(s, i)));
      var _x_ =  /*<<bytes.ml:234:61>>*/ i + 1 | 0;
      if(_w_ === i) break;
      i = _x_;
     }
    }
     /*<<bytes.ml:235:4>>*/ return r;
    /*<<bytes.ml:236:5>>*/ }
   function mapi(f, s){
    var l =  /*<<bytes.ml:239:2>>*/ caml_ml_bytes_length(s);
     /*<<bytes.ml:240:2>>*/ if(0 === l)  /*<<bytes.ml:240:16>>*/ return s;
    var
     r =  /*<<bytes.ml:241:12>>*/ caml_create_bytes(l),
     _v_ =  /*<<bytes.ml:242:4>>*/ l - 1 | 0;
    if(_v_ >= 0){
     var i = 0;
     for(;;){
       /*<<bytes.ml:242:26>>*/  /*<<bytes.ml:242:63>>*/ caml_bytes_unsafe_set
       (r,
        i,
         /*<<bytes.ml:242:41>>*/ caml_call2
         (f, i,  /*<<bytes.ml:242:26>>*/ caml_bytes_unsafe_get(s, i)));
      var _w_ =  /*<<bytes.ml:242:63>>*/ i + 1 | 0;
      if(_v_ === i) break;
      i = _w_;
     }
    }
     /*<<bytes.ml:243:4>>*/ return r;
    /*<<bytes.ml:244:5>>*/ }
   function fold_left(f, x, a){
    var _t_ =  /*<<bytes.ml:248:2>>*/ caml_ml_bytes_length(a) - 1 | 0;
    if(_t_ < 0)
     var r$0 = x;
    else{
     var r = x, i = 0;
     for(;;){
      var
       _u_ =
          /*<<bytes.ml:249:4>>*/  /*<<bytes.ml:249:9>>*/ caml_call2
          (f, r,  /*<<bytes.ml:249:4>>*/ caml_bytes_unsafe_get(a, i)),
       _v_ =  /*<<bytes.ml:249:30>>*/ i + 1 | 0;
      if(_t_ === i){var r$0 = _u_; break;}
      r = _u_;
      i = _v_;
     }
    }
     /*<<bytes.ml:251:2>>*/ return r$0;
    /*<<bytes.ml:251:4>>*/ }
   function fold_right(f, a, x){
    var _r_ =  /*<<bytes.ml:255:2>>*/ caml_ml_bytes_length(a) - 1 | 0;
    if(_r_ < 0)
     var r$0 = x;
    else{
     var r = x, i = _r_;
     for(;;){
      var
       _s_ =
          /*<<bytes.ml:256:4>>*/  /*<<bytes.ml:256:9>>*/ caml_call2
          (f,  /*<<bytes.ml:256:4>>*/ caml_bytes_unsafe_get(a, i), r),
       _t_ =  /*<<bytes.ml:256:30>>*/ i - 1 | 0;
      if(0 === i){var r$0 = _s_; break;}
      r = _s_;
      i = _t_;
     }
    }
     /*<<bytes.ml:258:2>>*/ return r$0;
    /*<<bytes.ml:258:4>>*/ }
   function exists(p, s){
    var
     n =  /*<<bytes.ml:261:2>>*/ caml_ml_bytes_length(s),
     i =  /*<<bytes.ml:266:2>>*/ 0;
    for(;;){
      /*<<bytes.ml:263:4>>*/ if(i === n)  /*<<bytes.ml:263:18>>*/ return 0;
      /*<<bytes.ml:264:9>>*/ if
      ( /*<<bytes.ml:264:12>>*/ caml_call1
        (p,  /*<<bytes.ml:264:9>>*/ caml_bytes_unsafe_get(s, i)))
       /*<<bytes.ml:264:36>>*/ return 1;
     var i$0 =  /*<<bytes.ml:265:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<bytes.ml:266:8>>*/ }
   function for_all(p, s){
    var
     n =  /*<<bytes.ml:269:2>>*/ caml_ml_bytes_length(s),
     i =  /*<<bytes.ml:274:2>>*/ 0;
    for(;;){
      /*<<bytes.ml:271:4>>*/ if(i === n)  /*<<bytes.ml:271:18>>*/ return 1;
      /*<<bytes.ml:272:9>>*/ if
      (!
        /*<<bytes.ml:272:12>>*/ caml_call1
        (p,  /*<<bytes.ml:272:9>>*/ caml_bytes_unsafe_get(s, i)))
       /*<<bytes.ml:273:9>>*/ return 0;
     var i$0 =  /*<<bytes.ml:272:36>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<bytes.ml:274:8>>*/ }
   function uppercase_ascii(s){
     /*<<bytes.ml:276:24>>*/ return map(Stdlib_Char[7], s) /*<<bytes.ml:276:50>>*/ ;
   }
   function lowercase_ascii(s){
     /*<<bytes.ml:277:24>>*/ return map(Stdlib_Char[6], s) /*<<bytes.ml:277:50>>*/ ;
   }
   function apply1(f, s){
     /*<<bytes.ml:280:2>>*/ if(0 === caml_ml_bytes_length(s))
      /*<<bytes.ml:280:23>>*/ return s;
    var r =  /*<<bytes.ml:281:12>>*/ copy(s);
     /*<<bytes.ml:282:4>>*/  /*<<bytes.ml:282:38>>*/ caml_bytes_unsafe_set
     (r,
      0,
       /*<<bytes.ml:282:19>>*/ caml_call1
       (f,  /*<<bytes.ml:282:4>>*/ caml_bytes_unsafe_get(s, 0)));
     /*<<bytes.ml:283:4>>*/ return r;
    /*<<bytes.ml:284:5>>*/ }
   function capitalize_ascii(s){
     /*<<bytes.ml:286:25>>*/ return apply1(Stdlib_Char[7], s) /*<<bytes.ml:286:54>>*/ ;
   }
   function uncapitalize_ascii(s){
     /*<<bytes.ml:287:27>>*/ return apply1(Stdlib_Char[6], s) /*<<bytes.ml:287:56>>*/ ;
   }
   function starts_with(prefix, s){
    var
     len_s =  /*<<bytes.ml:291:2>>*/ caml_ml_bytes_length(s),
     len_pre = caml_ml_bytes_length(prefix),
     _r_ =  /*<<bytes.ml:297:5>>*/ len_pre <= len_s ? 1 : 0;
    if(! _r_) return _r_;
    var i = 0;
    for(;;){
      /*<<bytes.ml:294:4>>*/ if(i === len_pre)
       /*<<bytes.ml:294:24>>*/ return 1;
      /*<<bytes.ml:295:9>>*/ if
      (caml_bytes_unsafe_get(s, i) !== caml_bytes_unsafe_get(prefix, i))
       /*<<bytes.ml:295:55>>*/ return 0;
     var i$0 =  /*<<bytes.ml:296:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<bytes.ml:297:30>>*/ }
   function ends_with(suffix, s){
    var
     len_s =  /*<<bytes.ml:301:2>>*/ caml_ml_bytes_length(s),
     len_suf = caml_ml_bytes_length(suffix),
     diff =  /*<<bytes.ml:303:2>>*/ len_s - len_suf | 0,
     _r_ =  /*<<bytes.ml:308:5>>*/ 0 <= diff ? 1 : 0;
    if(! _r_) return _r_;
    var i = 0;
    for(;;){
      /*<<bytes.ml:305:4>>*/ if(i === len_suf)
       /*<<bytes.ml:305:24>>*/ return 1;
      /*<<bytes.ml:306:9>>*/ if
      (caml_bytes_unsafe_get(s, diff + i | 0)
       !== caml_bytes_unsafe_get(suffix, i))
       /*<<bytes.ml:306:64>>*/ return 0;
     var i$0 =  /*<<bytes.ml:307:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<bytes.ml:308:23>>*/ }
   function index_rec(s, lim, i$1, c){
    var i =  /*<<bytes.ml:312:2>>*/ i$1;
    for(;;){
     if(lim <= i)
       /*<<bytes.ml:312:19>>*/ throw caml_maybe_attach_backtrace(Stdlib[8], 1);
      /*<<bytes.ml:313:2>>*/ if(caml_bytes_unsafe_get(s, i) === c)
       /*<<bytes.ml:313:29>>*/ return i;
     var i$0 =  /*<<bytes.ml:313:36>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<bytes.ml:313:61>>*/ }
   function index(s, c){
     /*<<bytes.ml:316:16>>*/ return index_rec
            (s, caml_ml_bytes_length(s), 0, c) /*<<bytes.ml:316:42>>*/ ;
   }
   function index_rec_opt(s, lim, i$1, c){
    var i =  /*<<bytes.ml:320:2>>*/ i$1;
    for(;;){
     if(lim <= i)  /*<<bytes.ml:320:19>>*/ return 0;
      /*<<bytes.ml:321:2>>*/ if(caml_bytes_unsafe_get(s, i) === c)
       /*<<bytes.ml:321:29>>*/ return [0, i];
     var i$0 =  /*<<bytes.ml:321:41>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<bytes.ml:321:70>>*/ }
   function index_opt(s, c){
     /*<<bytes.ml:324:20>>*/ return index_rec_opt
            (s, caml_ml_bytes_length(s), 0, c) /*<<bytes.ml:324:50>>*/ ;
   }
   function index_from(s, i, c){
    var l =  /*<<bytes.ml:328:2>>*/ caml_ml_bytes_length(s);
     /*<<bytes.ml:329:2>>*/ if(0 <= i && l >= i)
      /*<<bytes.ml:330:2>>*/ return index_rec(s, l, i, c) /*<<bytes.ml:330:19>>*/ ;
     /*<<bytes.ml:329:25>>*/ return Stdlib[1].call
            (null, "String.index_from / Bytes.index_from") /*<<bytes.ml:330:19>>*/ ;
   }
   function index_from_opt(s, i, c){
    var l =  /*<<bytes.ml:334:2>>*/ caml_ml_bytes_length(s);
     /*<<bytes.ml:335:2>>*/ if(0 <= i && l >= i)
      /*<<bytes.ml:338:4>>*/ return index_rec_opt(s, l, i, c) /*<<bytes.ml:338:25>>*/ ;
     /*<<bytes.ml:336:4>>*/ return Stdlib[1].call
            (null, "String.index_from_opt / Bytes.index_from_opt") /*<<bytes.ml:338:25>>*/ ;
   }
   function rindex_rec(s, i$1, c){
    var i =  /*<<bytes.ml:342:2>>*/ i$1;
    for(;;){
     if(0 > i)
       /*<<bytes.ml:342:16>>*/ throw caml_maybe_attach_backtrace(Stdlib[8], 1);
      /*<<bytes.ml:343:2>>*/ if(caml_bytes_unsafe_get(s, i) === c)
       /*<<bytes.ml:343:29>>*/ return i;
     var i$0 =  /*<<bytes.ml:343:36>>*/ i - 1 | 0;
     i = i$0;
    }
    /*<<bytes.ml:343:58>>*/ }
   function rindex(s, c){
     /*<<bytes.ml:346:17>>*/ return rindex_rec
            (s, caml_ml_bytes_length(s) - 1 | 0, c) /*<<bytes.ml:346:46>>*/ ;
   }
   function rindex_from(s, i, c){
     /*<<bytes.ml:350:2>>*/ if(-1 <= i && caml_ml_bytes_length(s) > i)
      /*<<bytes.ml:353:4>>*/ return rindex_rec(s, i, c) /*<<bytes.ml:353:20>>*/ ;
     /*<<bytes.ml:351:4>>*/ return Stdlib[1].call
            (null, "String.rindex_from / Bytes.rindex_from") /*<<bytes.ml:353:20>>*/ ;
   }
   function rindex_rec_opt(s, i$1, c){
    var i =  /*<<bytes.ml:357:2>>*/ i$1;
    for(;;){
     if(0 > i)  /*<<bytes.ml:357:16>>*/ return 0;
      /*<<bytes.ml:358:2>>*/ if(caml_bytes_unsafe_get(s, i) === c)
       /*<<bytes.ml:358:29>>*/ return [0, i];
     var i$0 =  /*<<bytes.ml:358:41>>*/ i - 1 | 0;
     i = i$0;
    }
    /*<<bytes.ml:358:67>>*/ }
   function rindex_opt(s, c){
     /*<<bytes.ml:361:21>>*/ return rindex_rec_opt
            (s, caml_ml_bytes_length(s) - 1 | 0, c) /*<<bytes.ml:361:54>>*/ ;
   }
   function rindex_from_opt(s, i, c){
     /*<<bytes.ml:365:2>>*/ if(-1 <= i && caml_ml_bytes_length(s) > i)
      /*<<bytes.ml:368:4>>*/ return rindex_rec_opt(s, i, c) /*<<bytes.ml:368:24>>*/ ;
     /*<<bytes.ml:366:4>>*/ return Stdlib[1].call
            (null, "String.rindex_from_opt / Bytes.rindex_from_opt") /*<<bytes.ml:368:24>>*/ ;
   }
   function contains_from(s, i, c){
    var l =  /*<<bytes.ml:373:2>>*/ caml_ml_bytes_length(s);
     /*<<bytes.ml:374:2>>*/ if(0 <= i && l >= i)
     try{ /*<<bytes.ml:377:15>>*/ index_rec(s, l, i, c); return 1;}
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn === Stdlib[8])  /*<<bytes.ml:377:59>>*/ return 0;
       /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
     }
     /*<<bytes.ml:375:4>>*/ return Stdlib[1].call
            (null, "String.contains_from / Bytes.contains_from") /*<<bytes.ml:377:64>>*/ ;
   }
   function contains(s, c){
     /*<<bytes.ml:381:19>>*/ return contains_from(s, 0, c) /*<<bytes.ml:381:38>>*/ ;
   }
   function rcontains_from(s, i, c){
     /*<<bytes.ml:385:2>>*/ if(0 <= i && caml_ml_bytes_length(s) > i)
     try{ /*<<bytes.ml:388:15>>*/ rindex_rec(s, i, c); return 1;}
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn === Stdlib[8])  /*<<bytes.ml:388:58>>*/ return 0;
       /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
     }
     /*<<bytes.ml:386:4>>*/ return Stdlib[1].call
            (null, "String.rcontains_from / Bytes.rcontains_from") /*<<bytes.ml:388:63>>*/ ;
   }
   var compare =  /*<<bytes.ml:53:20>>*/ runtime.caml_bytes_compare;
   function split_on_char(sep, s){
    var
     _p_ =  /*<<bytes.ml:399:2>>*/ caml_ml_bytes_length(s),
     _q_ =  /*<<bytes.ml:400:2>>*/ caml_ml_bytes_length(s) - 1 | 0,
     _o_ =  /*<<bytes.ml:398:2>>*/ 0;
     /*<<bytes.ml:400:2>>*/ if(_q_ < 0)
     var j$1 = _p_, r$1 = _o_;
    else{
     var j = _p_, r = _o_, i = _q_;
     for(;;){
       /*<<bytes.ml:401:4>>*/ if(caml_bytes_unsafe_get(s, i) === sep)
       var
        j$0 =  /*<<bytes.ml:403:6>>*/ i,
        r$0 =
          [0,
            /*<<bytes.ml:402:11>>*/ sub(s, i + 1 | 0, (j - i | 0) - 1 | 0),
           r];
      else
       var j$0 =  /*<<bytes.ml:401:4>>*/ j, r$0 = r;
      var _r_ = i - 1 | 0;
      if(0 === i){var j$1 = j$0, r$1 = r$0; break;}
      j = j$0;
      r = r$0;
      i = _r_;
     }
    }
     /*<<bytes.ml:406:2>>*/ return [0, sub(s, 0, j$1), r$1] /*<<bytes.ml:406:12>>*/ ;
    /*<<bytes.ml:406:18>>*/ }
   function to_seq(s){
    function aux(i, param){
      /*<<bytes.ml:412:4>>*/ if(i === caml_ml_bytes_length(s))
       /*<<bytes.ml:412:25>>*/ return 0;
     var
      x =  /*<<bytes.ml:414:14>>*/ caml_bytes_get(s, i),
      _n_ =  /*<<bytes.ml:415:19>>*/ i + 1 | 0;
      /*<<bytes.ml:415:28>>*/ return [0,
             x,
             function(_o_){ /*<<bytes.ml:415:19>>*/ return aux(_n_, _o_);}] /*<<bytes.ml:415:28>>*/ ;
     /*<<bytes.ml:415:29>>*/ }
     /*<<bytes.ml:417:2>>*/ return function(_n_){
      /*<<?>>*/ return aux(0, _n_);} /*<<bytes.ml:417:2>>*/ ;
    /*<<bytes.ml:417:7>>*/ }
   function to_seqi(s){
    function aux(i, param){
      /*<<bytes.ml:421:4>>*/ if(i === caml_ml_bytes_length(s))
       /*<<bytes.ml:421:25>>*/ return 0;
     var
      x =  /*<<bytes.ml:423:14>>*/ caml_bytes_get(s, i),
      _m_ =  /*<<bytes.ml:424:23>>*/ i + 1 | 0;
      /*<<bytes.ml:424:32>>*/ return [0,
             [0, i, x],
             function(_n_){ /*<<bytes.ml:424:23>>*/ return aux(_m_, _n_);}] /*<<bytes.ml:424:32>>*/ ;
     /*<<bytes.ml:424:33>>*/ }
     /*<<bytes.ml:426:2>>*/ return function(_m_){
      /*<<?>>*/ return aux(0, _m_);} /*<<bytes.ml:426:2>>*/ ;
    /*<<bytes.ml:426:7>>*/ }
   function of_seq(i){
    var
     buf =  /*<<bytes.ml:430:16>>*/ [0, make(256, 0)],
     n =  /*<<bytes.ml:429:2>>*/ [0, 0];
     /*<<bytes.ml:439:2>>*/ Stdlib_Seq[4].call
     (null,
      function(c){
        /*<<bytes.ml:441:7>>*/ if(n[1] === caml_ml_bytes_length(buf[1])){
        var
         new_len =
            /*<<bytes.ml:433:4>>*/  /*<<bytes.ml:433:18>>*/ Stdlib_Int[10].call
            (null,
             2 *  /*<<bytes.ml:433:4>>*/ caml_ml_bytes_length(buf[1]) | 0,
             Stdlib_Sys[13]);
         /*<<bytes.ml:434:4>>*/ if(caml_ml_bytes_length(buf[1]) === new_len)
          /*<<bytes.ml:434:34>>*/ Stdlib[2].call
          (null, "Bytes.of_seq: cannot grow bytes");
        var new_buf =  /*<<bytes.ml:435:18>>*/ make(new_len, 0);
         /*<<bytes.ml:436:4>>*/ blit(buf[1], 0, new_buf, 0, n[1]);
         /*<<bytes.ml:436:28>>*/ buf[1] = new_buf;
       }
        /*<<bytes.ml:442:7>>*/ caml_bytes_set(buf[1], n[1], c);
        /*<<bytes.ml:442:20>>*/ n[1]++;
       return 0;
       /*<<bytes.ml:443:13>>*/ },
      i);
     /*<<bytes.ml:444:5>>*/ return sub(buf[1], 0, n[1]) /*<<bytes.ml:445:15>>*/ ;
   }
   function unsafe_get_uint16_le(b, i){
     /*<<bytes.ml:470:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:471:40>>*/ caml_bswap16
              ( /*<<bytes.ml:471:14>>*/ caml_bytes_get16(b, i))
            :  /*<<bytes.ml:472:7>>*/ caml_bytes_get16(b, i) /*<<bytes.ml:472:31>>*/ ;
   }
   function unsafe_get_uint16_be(b, i){
     /*<<bytes.ml:475:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:476:7>>*/ caml_bytes_get16(b, i)
            :  /*<<bytes.ml:477:40>>*/ caml_bswap16
              ( /*<<bytes.ml:477:14>>*/ caml_bytes_get16(b, i)) /*<<bytes.ml:477:40>>*/ ;
   }
   function get_int8(b, i){
    var
     _l_ =  /*<<bytes.ml:480:3>>*/ Stdlib_Sys[11] - 8 | 0,
     _m_ = Stdlib_Sys[11] - 8 | 0;
    return caml_bytes_get(b, i) << _m_ >> _l_ /*<<bytes.ml:480:18>>*/ ;
    /*<<bytes.ml:480:65>>*/ }
   function get_uint16_le(b, i){
     /*<<bytes.ml:483:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:483:51>>*/ caml_bswap16
              ( /*<<bytes.ml:483:32>>*/ caml_bytes_get16(b, i))
            :  /*<<bytes.ml:484:7>>*/ caml_bytes_get16(b, i) /*<<bytes.ml:484:24>>*/ ;
   }
   function get_uint16_be(b, i){
     /*<<bytes.ml:487:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:488:7>>*/ caml_bytes_get16(b, i)
            :  /*<<bytes.ml:487:55>>*/ caml_bswap16
              ( /*<<bytes.ml:487:36>>*/ caml_bytes_get16(b, i)) /*<<bytes.ml:488:24>>*/ ;
   }
   function get_int16_ne(b, i){
    var
     _k_ =  /*<<bytes.ml:491:3>>*/ Stdlib_Sys[11] - 16 | 0,
     _l_ = Stdlib_Sys[11] - 16 | 0;
    return caml_bytes_get16(b, i) << _l_ >> _k_ /*<<bytes.ml:491:22>>*/ ;
    /*<<bytes.ml:491:71>>*/ }
   function get_int16_le(b, i){
    var
     _j_ =  /*<<bytes.ml:494:3>>*/ Stdlib_Sys[11] - 16 | 0,
     _k_ = Stdlib_Sys[11] - 16 | 0;
    return get_uint16_le(b, i) << _k_ >> _j_ /*<<bytes.ml:494:22>>*/ ;
    /*<<bytes.ml:494:71>>*/ }
   function get_int16_be(b, i){
    var
     _i_ =  /*<<bytes.ml:497:3>>*/ Stdlib_Sys[11] - 16 | 0,
     _j_ = Stdlib_Sys[11] - 16 | 0;
    return get_uint16_be(b, i) << _j_ >> _i_ /*<<bytes.ml:497:22>>*/ ;
    /*<<bytes.ml:497:71>>*/ }
   function get_int32_le(b, i){
     /*<<bytes.ml:500:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:500:25>>*/ caml_int32_bswap
              ( /*<<bytes.ml:500:32>>*/ caml_bytes_get32(b, i))
            :  /*<<bytes.ml:501:7>>*/ caml_bytes_get32(b, i) /*<<bytes.ml:501:23>>*/ ;
   }
   function get_int32_be(b, i){
     /*<<bytes.ml:504:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:505:7>>*/ caml_bytes_get32(b, i)
            :  /*<<bytes.ml:504:29>>*/ caml_int32_bswap
              ( /*<<bytes.ml:504:36>>*/ caml_bytes_get32(b, i)) /*<<bytes.ml:505:23>>*/ ;
   }
   function get_int64_le(b, i){
     /*<<bytes.ml:508:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:508:25>>*/ caml_int64_bswap
              ( /*<<bytes.ml:508:32>>*/ caml_bytes_get64(b, i))
            :  /*<<bytes.ml:509:7>>*/ caml_bytes_get64(b, i) /*<<bytes.ml:509:23>>*/ ;
   }
   function get_int64_be(b, i){
     /*<<bytes.ml:512:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:513:7>>*/ caml_bytes_get64(b, i)
            :  /*<<bytes.ml:512:29>>*/ caml_int64_bswap
              ( /*<<bytes.ml:512:36>>*/ caml_bytes_get64(b, i)) /*<<bytes.ml:513:23>>*/ ;
   }
   function unsafe_set_uint16_le(b, i, x){
     /*<<bytes.ml:516:2>>*/ if(Stdlib_Sys[12]){
      /*<<bytes.ml:517:7>>*/ caml_bytes_set16(b, i, caml_bswap16(x));
      /*<<bytes.ml:517:42>>*/ return;
    }
     /*<<bytes.ml:518:7>>*/ caml_bytes_set16(b, i, x);
    /*<<bytes.ml:518:33>>*/ }
   function unsafe_set_uint16_be(b, i, x){
     /*<<bytes.ml:521:2>>*/ if(Stdlib_Sys[12]){
      /*<<bytes.ml:522:7>>*/ caml_bytes_set16(b, i, x);
      /*<<bytes.ml:522:33>>*/ return;
    }
     /*<<bytes.ml:523:2>>*/ caml_bytes_set16(b, i, caml_bswap16(x));
    /*<<bytes.ml:523:37>>*/ }
   function set_int16_le(b, i, x){
     /*<<bytes.ml:526:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:526:25>>*/ caml_bytes_set16(b, i, caml_bswap16(x))
            :  /*<<bytes.ml:527:7>>*/ caml_bytes_set16(b, i, x) /*<<bytes.ml:527:25>>*/ ;
   }
   function set_int16_be(b, i, x){
     /*<<bytes.ml:530:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:531:7>>*/ caml_bytes_set16(b, i, x)
            :  /*<<bytes.ml:530:29>>*/ caml_bytes_set16(b, i, caml_bswap16(x)) /*<<bytes.ml:531:25>>*/ ;
   }
   function set_int32_le(b, i, x){
     /*<<bytes.ml:534:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:534:25>>*/ caml_bytes_set32
              (b, i,  /*<<bytes.ml:534:42>>*/ caml_int32_bswap(x))
            :  /*<<bytes.ml:535:7>>*/ caml_bytes_set32(b, i, x) /*<<bytes.ml:535:25>>*/ ;
   }
   function set_int32_be(b, i, x){
     /*<<bytes.ml:538:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:539:7>>*/ caml_bytes_set32(b, i, x)
            :  /*<<bytes.ml:538:29>>*/ caml_bytes_set32
              (b, i,  /*<<bytes.ml:538:46>>*/ caml_int32_bswap(x)) /*<<bytes.ml:539:25>>*/ ;
   }
   function set_int64_le(b, i, x){
     /*<<bytes.ml:542:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:542:25>>*/ caml_bytes_set64
              (b, i,  /*<<bytes.ml:542:42>>*/ caml_int64_bswap(x))
            :  /*<<bytes.ml:543:7>>*/ caml_bytes_set64(b, i, x) /*<<bytes.ml:543:25>>*/ ;
   }
   function set_int64_be(b, i, x){
     /*<<bytes.ml:546:2>>*/ return Stdlib_Sys[12]
            ?  /*<<bytes.ml:547:7>>*/ caml_bytes_set64(b, i, x)
            :  /*<<bytes.ml:546:29>>*/ caml_bytes_set64
              (b, i,  /*<<bytes.ml:546:46>>*/ caml_int64_bswap(x)) /*<<bytes.ml:547:25>>*/ ;
   }
   var dec_invalid =  /*<<bytes.ml:53:20>>*/ Stdlib_Uchar[23];
   function dec_ret(n, u){
    var _i_ =  /*<<bytes.ml:557:46>>*/ Stdlib_Uchar[9].call(null, u);
     /*<<bytes.ml:557:69>>*/ return Stdlib_Uchar[22].call(null, n, _i_);
   }
   function not_in_x80_to_xBF(b){
     /*<<bytes.ml:575:35>>*/ return 2 !== (b >>> 6 | 0) ? 1 : 0;
    /*<<bytes.ml:575:50>>*/ }
   function not_in_xA0_to_xBF(b){
     /*<<bytes.ml:576:35>>*/ return 5 !== (b >>> 5 | 0) ? 1 : 0;
    /*<<bytes.ml:576:51>>*/ }
   function not_in_x80_to_x9F(b){
     /*<<bytes.ml:577:35>>*/ return 4 !== (b >>> 5 | 0) ? 1 : 0;
    /*<<bytes.ml:577:51>>*/ }
   function not_in_x90_to_xBF(b){
    var
     _h_ =  /*<<bytes.ml:578:35>>*/ b < 144 ? 1 : 0,
     _i_ = _h_ || (191 < b ? 1 : 0);
    return _i_;
    /*<<bytes.ml:578:55>>*/ }
   function not_in_x80_to_x8F(b){
     /*<<bytes.ml:579:35>>*/ return 8 !== (b >>> 4 | 0) ? 1 : 0;
    /*<<bytes.ml:579:49>>*/ }
   function utf_8_uchar_3(b0, b1, b2){
     /*<<bytes.ml:586:2>>*/ return (b0 & 15) << 12 | (b1 & 63) << 6 | b2 & 63;
    /*<<bytes.ml:588:18>>*/ }
   function utf_8_uchar_4(b0, b1, b2, b3){
     /*<<bytes.ml:591:2>>*/ return (b0 & 7) << 18 | (b1 & 63) << 12
           | (b2 & 63) << 6
           | b3 & 63;
    /*<<bytes.ml:594:18>>*/ }
   function get_utf_8_uchar(b, i){
    var
     b0 =  /*<<bytes.ml:597:11>>*/ caml_bytes_get(b, i),
     max =  /*<<bytes.ml:599:2>>*/ caml_ml_bytes_length(b) - 1 | 0;
    a:
    {
      /*<<bytes.ml:600:2>>*/ if(224 <= b0){
      if(237 <= b0){
       if(245 <= b0) break a;
       switch(b0 - 237 | 0){
         case 0:
          var i$0 =  /*<<bytes.ml:619:6>>*/ i + 1 | 0;
           /*<<bytes.ml:619:23>>*/ if(max < i$0)
            /*<<bytes.ml:619:39>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
          var b1$4 =  /*<<bytes.ml:620:15>>*/ caml_bytes_unsafe_get(b, i$0);
           /*<<bytes.ml:620:29>>*/ if(not_in_x80_to_x9F(b1$4))
            /*<<bytes.ml:620:55>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
          var i$1 =  /*<<bytes.ml:621:6>>*/ i$0 + 1 | 0;
           /*<<bytes.ml:621:23>>*/ if(max < i$1)
            /*<<bytes.ml:621:39>>*/ return dec_invalid(2) /*<<bytes.ml:648:22>>*/ ;
          var b2$3 =  /*<<bytes.ml:622:15>>*/ caml_bytes_unsafe_get(b, i$1);
           /*<<bytes.ml:622:29>>*/ return not_in_x80_to_xBF(b2$3)
                  ?  /*<<bytes.ml:622:55>>*/ dec_invalid(2)
                  :  /*<<bytes.ml:623:40>>*/ dec_ret
                    (3,  /*<<bytes.ml:623:16>>*/ utf_8_uchar_3(b0, b1$4, b2$3)) /*<<bytes.ml:648:22>>*/ ;
         case 3:
          var i$4 =  /*<<bytes.ml:625:6>>*/ i + 1 | 0;
           /*<<bytes.ml:625:23>>*/ if(max < i$4)
            /*<<bytes.ml:625:39>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
          var b1$2 =  /*<<bytes.ml:626:15>>*/ caml_bytes_unsafe_get(b, i$4);
           /*<<bytes.ml:626:29>>*/ if(not_in_x90_to_xBF(b1$2))
            /*<<bytes.ml:626:55>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
          var i$5 =  /*<<bytes.ml:627:6>>*/ i$4 + 1 | 0;
           /*<<bytes.ml:627:23>>*/ if(max < i$5)
            /*<<bytes.ml:627:39>>*/ return dec_invalid(2) /*<<bytes.ml:648:22>>*/ ;
          var b2$1 =  /*<<bytes.ml:628:15>>*/ caml_bytes_unsafe_get(b, i$5);
           /*<<bytes.ml:628:29>>*/ if(not_in_x80_to_xBF(b2$1))
            /*<<bytes.ml:628:55>>*/ return dec_invalid(2) /*<<bytes.ml:648:22>>*/ ;
          var i$6 =  /*<<bytes.ml:629:6>>*/ i$5 + 1 | 0;
           /*<<bytes.ml:629:23>>*/ if(max < i$6)
            /*<<bytes.ml:629:39>>*/ return dec_invalid(3) /*<<bytes.ml:648:22>>*/ ;
          var b3$1 =  /*<<bytes.ml:630:15>>*/ caml_bytes_unsafe_get(b, i$6);
           /*<<bytes.ml:630:29>>*/ return not_in_x80_to_xBF(b3$1)
                  ?  /*<<bytes.ml:630:55>>*/ dec_invalid(3)
                  :  /*<<bytes.ml:631:43>>*/ dec_ret
                    (4,
                      /*<<bytes.ml:631:16>>*/ utf_8_uchar_4(b0, b1$2, b2$1, b3$1)) /*<<bytes.ml:648:22>>*/ ;
         case 7:
          var i$10 =  /*<<bytes.ml:641:6>>*/ i + 1 | 0;
           /*<<bytes.ml:641:23>>*/ if(max < i$10)
            /*<<bytes.ml:641:39>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
          var b1$0 =  /*<<bytes.ml:642:15>>*/ caml_bytes_unsafe_get(b, i$10);
           /*<<bytes.ml:642:29>>*/ if(not_in_x80_to_x8F(b1$0))
            /*<<bytes.ml:642:55>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
          var i$11 =  /*<<bytes.ml:643:6>>*/ i$10 + 1 | 0;
           /*<<bytes.ml:643:23>>*/ if(max < i$11)
            /*<<bytes.ml:643:39>>*/ return dec_invalid(2) /*<<bytes.ml:648:22>>*/ ;
          var b2 =  /*<<bytes.ml:644:15>>*/ caml_bytes_unsafe_get(b, i$11);
           /*<<bytes.ml:644:29>>*/ if(not_in_x80_to_xBF(b2))
            /*<<bytes.ml:644:55>>*/ return dec_invalid(2) /*<<bytes.ml:648:22>>*/ ;
          var i$12 =  /*<<bytes.ml:645:6>>*/ i$11 + 1 | 0;
           /*<<bytes.ml:645:23>>*/ if(max < i$12)
            /*<<bytes.ml:645:39>>*/ return dec_invalid(3) /*<<bytes.ml:648:22>>*/ ;
          var b3 =  /*<<bytes.ml:646:15>>*/ caml_bytes_unsafe_get(b, i$12);
           /*<<bytes.ml:646:29>>*/ return not_in_x80_to_xBF(b3)
                  ?  /*<<bytes.ml:646:55>>*/ dec_invalid(3)
                  :  /*<<bytes.ml:647:43>>*/ dec_ret
                    (4,
                      /*<<bytes.ml:647:16>>*/ utf_8_uchar_4(b0, b1$0, b2, b3)) /*<<bytes.ml:648:22>>*/ ;
         case 1:
         case 2: break;
         default:
          var i$7 =  /*<<bytes.ml:633:6>>*/ i + 1 | 0;
           /*<<bytes.ml:633:23>>*/ if(max < i$7)
            /*<<bytes.ml:633:39>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
          var b1$1 =  /*<<bytes.ml:634:15>>*/ caml_bytes_unsafe_get(b, i$7);
           /*<<bytes.ml:634:29>>*/ if(not_in_x80_to_xBF(b1$1))
            /*<<bytes.ml:634:55>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
          var i$8 =  /*<<bytes.ml:635:6>>*/ i$7 + 1 | 0;
           /*<<bytes.ml:635:23>>*/ if(max < i$8)
            /*<<bytes.ml:635:39>>*/ return dec_invalid(2) /*<<bytes.ml:648:22>>*/ ;
          var b2$0 =  /*<<bytes.ml:636:15>>*/ caml_bytes_unsafe_get(b, i$8);
           /*<<bytes.ml:636:29>>*/ if(not_in_x80_to_xBF(b2$0))
            /*<<bytes.ml:636:55>>*/ return dec_invalid(2) /*<<bytes.ml:648:22>>*/ ;
          var i$9 =  /*<<bytes.ml:637:6>>*/ i$8 + 1 | 0;
           /*<<bytes.ml:637:23>>*/ if(max < i$9)
            /*<<bytes.ml:637:39>>*/ return dec_invalid(3) /*<<bytes.ml:648:22>>*/ ;
          var b3$0 =  /*<<bytes.ml:638:15>>*/ caml_bytes_unsafe_get(b, i$9);
           /*<<bytes.ml:638:29>>*/ return not_in_x80_to_xBF(b3$0)
                  ?  /*<<bytes.ml:638:55>>*/ dec_invalid(3)
                  :  /*<<bytes.ml:639:43>>*/ dec_ret
                    (4,
                      /*<<bytes.ml:639:16>>*/ utf_8_uchar_4(b0, b1$1, b2$0, b3$0)) /*<<bytes.ml:648:22>>*/ ;
       }
      }
      else if(225 > b0){
       var i$13 =  /*<<bytes.ml:607:6>>*/ i + 1 | 0;
        /*<<bytes.ml:607:23>>*/ if(max < i$13)
         /*<<bytes.ml:607:39>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
       var b1$5 =  /*<<bytes.ml:608:15>>*/ caml_bytes_unsafe_get(b, i$13);
        /*<<bytes.ml:608:29>>*/ if(not_in_xA0_to_xBF(b1$5))
         /*<<bytes.ml:608:55>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
       var i$14 =  /*<<bytes.ml:609:6>>*/ i$13 + 1 | 0;
        /*<<bytes.ml:609:23>>*/ if(max < i$14)
         /*<<bytes.ml:609:39>>*/ return dec_invalid(2) /*<<bytes.ml:648:22>>*/ ;
       var b2$4 =  /*<<bytes.ml:610:15>>*/ caml_bytes_unsafe_get(b, i$14);
        /*<<bytes.ml:610:29>>*/ return not_in_x80_to_xBF(b2$4)
               ?  /*<<bytes.ml:610:55>>*/ dec_invalid(2)
               :  /*<<bytes.ml:611:40>>*/ dec_ret
                 (3,  /*<<bytes.ml:611:16>>*/ utf_8_uchar_3(b0, b1$5, b2$4)) /*<<bytes.ml:648:22>>*/ ;
      }
      var i$2 =  /*<<bytes.ml:613:6>>*/ i + 1 | 0;
       /*<<bytes.ml:613:23>>*/ if(max < i$2)
        /*<<bytes.ml:613:39>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
      var b1$3 =  /*<<bytes.ml:614:15>>*/ caml_bytes_unsafe_get(b, i$2);
       /*<<bytes.ml:614:29>>*/ if(not_in_x80_to_xBF(b1$3))
        /*<<bytes.ml:614:55>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
      var i$3 =  /*<<bytes.ml:615:6>>*/ i$2 + 1 | 0;
       /*<<bytes.ml:615:23>>*/ if(max < i$3)
        /*<<bytes.ml:615:39>>*/ return dec_invalid(2) /*<<bytes.ml:648:22>>*/ ;
      var b2$2 =  /*<<bytes.ml:616:15>>*/ caml_bytes_unsafe_get(b, i$3);
       /*<<bytes.ml:616:29>>*/ return not_in_x80_to_xBF(b2$2)
              ?  /*<<bytes.ml:616:55>>*/ dec_invalid(2)
              :  /*<<bytes.ml:617:40>>*/ dec_ret
                (3,  /*<<bytes.ml:617:16>>*/ utf_8_uchar_3(b0, b1$3, b2$2)) /*<<bytes.ml:648:22>>*/ ;
     }
      /*<<bytes.ml:600:2>>*/ if(128 > b0)
       /*<<bytes.ml:601:24>>*/ return dec_ret(1, b0) /*<<bytes.ml:648:22>>*/ ;
      /*<<bytes.ml:600:2>>*/ if(194 <= b0){
      var i$15 =  /*<<bytes.ml:603:6>>*/ i + 1 | 0;
       /*<<bytes.ml:603:23>>*/ if(max < i$15)
        /*<<bytes.ml:603:39>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
      var b1 =  /*<<bytes.ml:604:15>>*/ caml_bytes_unsafe_get(b, i$15);
       /*<<bytes.ml:604:29>>*/ return not_in_x80_to_xBF(b1)
              ?  /*<<bytes.ml:604:55>>*/ dec_invalid(1)
              :  /*<<bytes.ml:605:37>>*/ dec_ret(2, (b0 & 31) << 6 | b1 & 63) /*<<bytes.ml:648:22>>*/ ;
     }
    }
     /*<<bytes.ml:648:9>>*/ return dec_invalid(1) /*<<bytes.ml:648:22>>*/ ;
   }
   var
    cst_bytes_ml =  /*<<?>>*/ "bytes.ml",
    _a_ =  /*<<bytes.ml:53:20>>*/ [0, cst_bytes_ml, 679, 9],
    _b_ = [0, cst_bytes_ml, 654, 20];
   function set_utf_8_uchar(b, i, u){
    function set(_h_, _g_, _f_){
      /*<<?>>*/ caml_bytes_unsafe_set(_h_, _g_, _f_);
    }
    var
     max =  /*<<bytes.ml:652:2>>*/ caml_ml_bytes_length(b) - 1 | 0,
     u$0 =  /*<<bytes.ml:653:8>>*/ Stdlib_Uchar[10].call(null, u);
     /*<<bytes.ml:654:11>>*/ if(0 > u$0)
      /*<<bytes.ml:654:20>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _b_], 1);
     /*<<bytes.ml:655:11>>*/ if(127 >= u$0){
      /*<<bytes.ml:656:6>>*/ caml_bytes_set(b, i, u$0);
      /*<<bytes.ml:656:21>>*/ return 1;
    }
     /*<<bytes.ml:658:11>>*/ if(2047 >= u$0){
     var last$1 =  /*<<bytes.ml:659:6>>*/ i + 1 | 0;
      /*<<bytes.ml:660:6>>*/ return max < last$1
             ? 0
             : ( /*<<bytes.ml:661:7>>*/ caml_bytes_set
                (b, i, 192 | u$0 >>> 6 | 0),
                /*<<bytes.ml:662:7>>*/ set(b, last$1, 128 | u$0 & 63),
               2) /*<<bytes.ml:679:21>>*/ ;
    }
     /*<<bytes.ml:664:11>>*/ if(65535 >= u$0){
     var last$0 =  /*<<bytes.ml:665:6>>*/ i + 2 | 0;
      /*<<bytes.ml:666:6>>*/ return max < last$0
             ? 0
             : ( /*<<bytes.ml:667:7>>*/ caml_bytes_set
                (b, i, 224 | u$0 >>> 12 | 0),
                /*<<bytes.ml:668:7>>*/ set
                (b, i + 1 | 0, 128 | (u$0 >>> 6 | 0) & 63),
                /*<<bytes.ml:669:7>>*/ set(b, last$0, 128 | u$0 & 63),
               3) /*<<bytes.ml:679:21>>*/ ;
    }
     /*<<bytes.ml:671:11>>*/ if(1114111 < u$0)
      /*<<bytes.ml:679:9>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _a_], 1);
    var last =  /*<<bytes.ml:672:6>>*/ i + 3 | 0;
     /*<<bytes.ml:673:6>>*/ return max < last
            ? 0
            : ( /*<<bytes.ml:674:7>>*/ caml_bytes_set
               (b, i, 240 | u$0 >>> 18 | 0),
               /*<<bytes.ml:675:7>>*/ set
               (b, i + 1 | 0, 128 | (u$0 >>> 12 | 0) & 63),
               /*<<bytes.ml:676:7>>*/ set
               (b, i + 2 | 0, 128 | (u$0 >>> 6 | 0) & 63),
               /*<<bytes.ml:677:7>>*/ set(b, last, 128 | u$0 & 63),
              4) /*<<bytes.ml:679:21>>*/ ;
   }
   function is_valid_utf_8(b){
    var max =  /*<<bytes.ml:740:2>>*/ caml_ml_bytes_length(b) - 1 | 0, i = 0;
    for(;;){
      /*<<bytes.ml:683:4>>*/ if(max < i)  /*<<bytes.ml:683:20>>*/ return 1;
     var match =  /*<<bytes.ml:685:26>>*/ caml_bytes_unsafe_get(b, i);
     a:
     {
       /*<<bytes.ml:685:35>>*/ if(224 <= match){
       if(237 <= match){
        if(245 <= match) break a;
        switch(match - 237 | 0){
          case 0:
           var last =  /*<<bytes.ml:708:8>>*/ i + 2 | 0;
            /*<<bytes.ml:709:8>>*/ if
            (max >= last
             &&
              !
               /*<<bytes.ml:710:11>>*/ not_in_x80_to_x9F
               ( /*<<bytes.ml:710:29>>*/ caml_bytes_unsafe_get(b, i + 1 | 0))
              &&
               !
                /*<<bytes.ml:711:11>>*/ not_in_x80_to_xBF
                ( /*<<bytes.ml:711:29>>*/ caml_bytes_unsafe_get(b, last))){
            var i$0 =  /*<<bytes.ml:713:13>>*/ last + 1 | 0;
            i = i$0;
            continue;
           }
            /*<<bytes.ml:712:13>>*/ return 0;
          case 3:
           var last$1 =  /*<<bytes.ml:715:8>>*/ i + 3 | 0;
            /*<<bytes.ml:716:8>>*/ if
            (max >= last$1
             &&
              !
               /*<<bytes.ml:717:11>>*/ not_in_x90_to_xBF
               ( /*<<bytes.ml:717:29>>*/ caml_bytes_unsafe_get(b, i + 1 | 0))
              &&
               !
                /*<<bytes.ml:718:11>>*/ not_in_x80_to_xBF
                ( /*<<bytes.ml:718:29>>*/ caml_bytes_unsafe_get(b, i + 2 | 0))
               &&
                !
                 /*<<bytes.ml:719:11>>*/ not_in_x80_to_xBF
                 ( /*<<bytes.ml:719:29>>*/ caml_bytes_unsafe_get(b, last$1))){
            var i$2 =  /*<<bytes.ml:721:13>>*/ last$1 + 1 | 0;
            i = i$2;
            continue;
           }
            /*<<bytes.ml:720:13>>*/ return 0;
          case 7:
           var last$3 =  /*<<bytes.ml:731:8>>*/ i + 3 | 0;
            /*<<bytes.ml:732:8>>*/ if
            (max >= last$3
             &&
              !
               /*<<bytes.ml:733:11>>*/ not_in_x80_to_x8F
               ( /*<<bytes.ml:733:29>>*/ caml_bytes_unsafe_get(b, i + 1 | 0))
              &&
               !
                /*<<bytes.ml:734:11>>*/ not_in_x80_to_xBF
                ( /*<<bytes.ml:734:29>>*/ caml_bytes_unsafe_get(b, i + 2 | 0))
               &&
                !
                 /*<<bytes.ml:735:11>>*/ not_in_x80_to_xBF
                 ( /*<<bytes.ml:735:29>>*/ caml_bytes_unsafe_get(b, last$3))){
            var i$4 =  /*<<bytes.ml:737:13>>*/ last$3 + 1 | 0;
            i = i$4;
            continue;
           }
            /*<<bytes.ml:736:13>>*/ return 0;
          case 1:
          case 2: break;
          default:
           var last$2 =  /*<<bytes.ml:723:8>>*/ i + 3 | 0;
            /*<<bytes.ml:724:8>>*/ if
            (max >= last$2
             &&
              !
               /*<<bytes.ml:725:11>>*/ not_in_x80_to_xBF
               ( /*<<bytes.ml:725:29>>*/ caml_bytes_unsafe_get(b, i + 1 | 0))
              &&
               !
                /*<<bytes.ml:726:11>>*/ not_in_x80_to_xBF
                ( /*<<bytes.ml:726:29>>*/ caml_bytes_unsafe_get(b, i + 2 | 0))
               &&
                !
                 /*<<bytes.ml:727:11>>*/ not_in_x80_to_xBF
                 ( /*<<bytes.ml:727:29>>*/ caml_bytes_unsafe_get(b, last$2))){
            var i$3 =  /*<<bytes.ml:729:13>>*/ last$2 + 1 | 0;
            i = i$3;
            continue;
           }
            /*<<bytes.ml:728:13>>*/ return 0;
        }
       }
       else if(225 > match){
        var last$4 =  /*<<bytes.ml:694:8>>*/ i + 2 | 0;
         /*<<bytes.ml:695:8>>*/ if
         (max >= last$4
          &&
           !
            /*<<bytes.ml:696:11>>*/ not_in_xA0_to_xBF
            ( /*<<bytes.ml:696:29>>*/ caml_bytes_unsafe_get(b, i + 1 | 0))
           &&
            !
             /*<<bytes.ml:697:11>>*/ not_in_x80_to_xBF
             ( /*<<bytes.ml:697:29>>*/ caml_bytes_unsafe_get(b, last$4))){
         var i$5 =  /*<<bytes.ml:699:13>>*/ last$4 + 1 | 0;
         i = i$5;
         continue;
        }
         /*<<bytes.ml:698:13>>*/ return 0;
       }
       var last$0 =  /*<<bytes.ml:701:8>>*/ i + 2 | 0;
        /*<<bytes.ml:702:8>>*/ if
        (max >= last$0
         &&
          !
           /*<<bytes.ml:703:11>>*/ not_in_x80_to_xBF
           ( /*<<bytes.ml:703:29>>*/ caml_bytes_unsafe_get(b, i + 1 | 0))
          &&
           !
            /*<<bytes.ml:704:11>>*/ not_in_x80_to_xBF
            ( /*<<bytes.ml:704:29>>*/ caml_bytes_unsafe_get(b, last$0))){
        var i$1 =  /*<<bytes.ml:706:13>>*/ last$0 + 1 | 0;
        i = i$1;
        continue;
       }
        /*<<bytes.ml:705:13>>*/ return 0;
      }
       /*<<bytes.ml:685:35>>*/ if(128 > match){
       var i$7 =  /*<<bytes.ml:686:26>>*/ i + 1 | 0;
       i = i$7;
       continue;
      }
       /*<<bytes.ml:685:35>>*/ if(194 <= match){
       var last$5 =  /*<<bytes.ml:688:8>>*/ i + 1 | 0;
        /*<<bytes.ml:689:8>>*/ if
        (max >= last$5
         &&
          !
           /*<<bytes.ml:690:11>>*/ not_in_x80_to_xBF
           ( /*<<bytes.ml:690:29>>*/ caml_bytes_unsafe_get(b, last$5))){
        var i$6 =  /*<<bytes.ml:692:13>>*/ last$5 + 1 | 0;
        i = i$6;
        continue;
       }
        /*<<bytes.ml:691:13>>*/ return 0;
      }
     }
      /*<<bytes.ml:738:11>>*/ return 0;
    }
    /*<<bytes.ml:740:25>>*/ }
   var cst_index_out_of_bounds =  /*<<?>>*/ "index out of bounds";
   function get_utf_16be_uchar(b, i){
    var max =  /*<<bytes.ml:746:2>>*/ caml_ml_bytes_length(b) - 1 | 0;
     /*<<bytes.ml:747:2>>*/ if(0 <= i && max >= i){
      /*<<bytes.ml:748:2>>*/ if(i === max)
       /*<<bytes.ml:748:18>>*/ return dec_invalid(1) /*<<bytes.ml:759:21>>*/ ;
     var hi =  /*<<bytes.ml:749:8>>*/ unsafe_get_uint16_be(b, i);
      /*<<bytes.ml:750:11>>*/ if(55296 <= hi && 57343 >= hi){
       /*<<bytes.ml:751:11>>*/ if(56319 < hi)
        /*<<bytes.ml:751:25>>*/ return dec_invalid(2) /*<<bytes.ml:759:21>>*/ ;
      var last =  /*<<bytes.ml:753:6>>*/ i + 3 | 0;
       /*<<bytes.ml:754:6>>*/ if(max < last)
        /*<<bytes.ml:754:25>>*/ return dec_invalid((max - i | 0) + 1 | 0) /*<<bytes.ml:759:21>>*/ ;
      var lo =  /*<<bytes.ml:755:12>>*/ unsafe_get_uint16_be(b, i + 2 | 0);
       /*<<bytes.ml:756:15>>*/ if(56320 <= lo && 57343 >= lo){
       var
        u =
           /*<<bytes.ml:758:10>>*/ ((hi & 1023) << 10 | lo & 1023) + 65536 | 0;
        /*<<bytes.ml:759:10>>*/ return dec_ret(4, u) /*<<bytes.ml:759:21>>*/ ;
      }
       /*<<bytes.ml:756:43>>*/ return dec_invalid(2) /*<<bytes.ml:759:21>>*/ ;
     }
      /*<<bytes.ml:750:39>>*/ return dec_ret(2, hi) /*<<bytes.ml:759:21>>*/ ;
    }
     /*<<bytes.ml:747:27>>*/ return Stdlib[1].call
            (null, cst_index_out_of_bounds) /*<<bytes.ml:759:21>>*/ ;
   }
   var
    _c_ =  /*<<bytes.ml:53:20>>*/ [0, cst_bytes_ml, 777, 9],
    _d_ = [0, cst_bytes_ml, 766, 20];
   function set_utf_16be_uchar(b, i, u){
    var max =  /*<<bytes.ml:763:2>>*/ caml_ml_bytes_length(b) - 1 | 0;
     /*<<bytes.ml:764:2>>*/ if(0 <= i && max >= i){
     var u$0 =  /*<<bytes.ml:765:8>>*/ Stdlib_Uchar[10].call(null, u);
      /*<<bytes.ml:766:11>>*/ if(0 > u$0)
       /*<<bytes.ml:766:20>>*/ throw caml_maybe_attach_backtrace
             ([0, Assert_failure, _d_], 1);
      /*<<bytes.ml:767:11>>*/ if(65535 >= u$0){
      var last$0 =  /*<<bytes.ml:768:6>>*/ i + 1 | 0;
       /*<<bytes.ml:769:6>>*/ return max < last$0
              ? 0
              : ( /*<<bytes.ml:769:33>>*/ unsafe_set_uint16_be(b, i, u$0), 2) /*<<bytes.ml:777:21>>*/ ;
     }
      /*<<bytes.ml:770:11>>*/ if(1114111 < u$0)
       /*<<bytes.ml:777:9>>*/ throw caml_maybe_attach_backtrace
             ([0, Assert_failure, _c_], 1);
     var last =  /*<<bytes.ml:771:6>>*/ i + 3 | 0;
      /*<<bytes.ml:772:6>>*/ if(max < last)  /*<<bytes.ml:772:25>>*/ return 0;
     var
      u$1 =  /*<<bytes.ml:773:6>>*/ u$0 - 65536 | 0,
      hi =  /*<<bytes.ml:774:6>>*/ 55296 | u$1 >>> 10 | 0,
      lo =  /*<<bytes.ml:775:6>>*/ 56320 | u$1 & 1023;
      /*<<bytes.ml:776:6>>*/ unsafe_set_uint16_be(b, i, hi);
      /*<<bytes.ml:776:18>>*/ unsafe_set_uint16_be(b, i + 2 | 0, lo);
      /*<<bytes.ml:776:34>>*/ return 4;
    }
     /*<<bytes.ml:764:27>>*/ return Stdlib[1].call
            (null, cst_index_out_of_bounds) /*<<bytes.ml:777:21>>*/ ;
   }
   function is_valid_utf_16be(b){
    var max =  /*<<bytes.ml:794:2>>*/ caml_ml_bytes_length(b) - 1 | 0, i = 0;
    for(;;){
      /*<<bytes.ml:782:4>>*/ if(max < i)  /*<<bytes.ml:782:20>>*/ return 1;
      /*<<bytes.ml:783:4>>*/ if(i === max)  /*<<bytes.ml:783:20>>*/ return 0;
     var u =  /*<<bytes.ml:784:10>>*/ unsafe_get_uint16_be(b, i);
      /*<<bytes.ml:785:13>>*/ if(55296 <= u && 57343 >= u){
       /*<<bytes.ml:786:13>>*/ if(56319 < u)
        /*<<bytes.ml:786:27>>*/ return 0;
      var last =  /*<<bytes.ml:788:8>>*/ i + 3 | 0;
       /*<<bytes.ml:789:8>>*/ if(max < last)
        /*<<bytes.ml:789:27>>*/ return 0;
      var u$0 =  /*<<bytes.ml:790:14>>*/ unsafe_get_uint16_be(b, i + 2 | 0);
       /*<<bytes.ml:791:17>>*/ if(56320 <= u$0 && 57343 >= u$0){
       var i$1 =  /*<<bytes.ml:792:17>>*/ i + 4 | 0;
       i = i$1;
       continue;
      }
       /*<<bytes.ml:791:45>>*/ return 0;
     }
     var i$0 =  /*<<bytes.ml:785:41>>*/ i + 2 | 0;
     i = i$0;
    }
    /*<<bytes.ml:794:25>>*/ }
   function get_utf_16le_uchar(b, i){
    var max =  /*<<bytes.ml:800:2>>*/ caml_ml_bytes_length(b) - 1 | 0;
     /*<<bytes.ml:801:2>>*/ if(0 <= i && max >= i){
      /*<<bytes.ml:802:2>>*/ if(i === max)
       /*<<bytes.ml:802:18>>*/ return dec_invalid(1) /*<<bytes.ml:813:21>>*/ ;
     var hi =  /*<<bytes.ml:803:8>>*/ unsafe_get_uint16_le(b, i);
      /*<<bytes.ml:804:11>>*/ if(55296 <= hi && 57343 >= hi){
       /*<<bytes.ml:805:11>>*/ if(56319 < hi)
        /*<<bytes.ml:805:25>>*/ return dec_invalid(2) /*<<bytes.ml:813:21>>*/ ;
      var last =  /*<<bytes.ml:807:6>>*/ i + 3 | 0;
       /*<<bytes.ml:808:6>>*/ if(max < last)
        /*<<bytes.ml:808:25>>*/ return dec_invalid((max - i | 0) + 1 | 0) /*<<bytes.ml:813:21>>*/ ;
      var lo =  /*<<bytes.ml:809:12>>*/ unsafe_get_uint16_le(b, i + 2 | 0);
       /*<<bytes.ml:810:15>>*/ if(56320 <= lo && 57343 >= lo){
       var
        u =
           /*<<bytes.ml:812:10>>*/ ((hi & 1023) << 10 | lo & 1023) + 65536 | 0;
        /*<<bytes.ml:813:10>>*/ return dec_ret(4, u) /*<<bytes.ml:813:21>>*/ ;
      }
       /*<<bytes.ml:810:43>>*/ return dec_invalid(2) /*<<bytes.ml:813:21>>*/ ;
     }
      /*<<bytes.ml:804:39>>*/ return dec_ret(2, hi) /*<<bytes.ml:813:21>>*/ ;
    }
     /*<<bytes.ml:801:27>>*/ return Stdlib[1].call
            (null, cst_index_out_of_bounds) /*<<bytes.ml:813:21>>*/ ;
   }
   var
    _e_ =  /*<<bytes.ml:53:20>>*/ [0, cst_bytes_ml, 831, 9],
    _f_ = [0, cst_bytes_ml, 820, 20];
   function set_utf_16le_uchar(b, i, u){
    var max =  /*<<bytes.ml:817:2>>*/ caml_ml_bytes_length(b) - 1 | 0;
     /*<<bytes.ml:818:2>>*/ if(0 <= i && max >= i){
     var u$0 =  /*<<bytes.ml:819:8>>*/ Stdlib_Uchar[10].call(null, u);
      /*<<bytes.ml:820:11>>*/ if(0 > u$0)
       /*<<bytes.ml:820:20>>*/ throw caml_maybe_attach_backtrace
             ([0, Assert_failure, _f_], 1);
      /*<<bytes.ml:821:11>>*/ if(65535 >= u$0){
      var last$0 =  /*<<bytes.ml:822:6>>*/ i + 1 | 0;
       /*<<bytes.ml:823:6>>*/ return max < last$0
              ? 0
              : ( /*<<bytes.ml:823:33>>*/ unsafe_set_uint16_le(b, i, u$0), 2) /*<<bytes.ml:831:21>>*/ ;
     }
      /*<<bytes.ml:824:11>>*/ if(1114111 < u$0)
       /*<<bytes.ml:831:9>>*/ throw caml_maybe_attach_backtrace
             ([0, Assert_failure, _e_], 1);
     var last =  /*<<bytes.ml:825:6>>*/ i + 3 | 0;
      /*<<bytes.ml:826:6>>*/ if(max < last)  /*<<bytes.ml:826:25>>*/ return 0;
     var
      u$1 =  /*<<bytes.ml:827:6>>*/ u$0 - 65536 | 0,
      hi =  /*<<bytes.ml:828:6>>*/ 55296 | u$1 >>> 10 | 0,
      lo =  /*<<bytes.ml:829:6>>*/ 56320 | u$1 & 1023;
      /*<<bytes.ml:830:6>>*/ unsafe_set_uint16_le(b, i, hi);
      /*<<bytes.ml:830:18>>*/ unsafe_set_uint16_le(b, i + 2 | 0, lo);
      /*<<bytes.ml:830:34>>*/ return 4;
    }
     /*<<bytes.ml:818:27>>*/ return Stdlib[1].call
            (null, cst_index_out_of_bounds) /*<<bytes.ml:831:21>>*/ ;
   }
   function is_valid_utf_16le(b){
    var max =  /*<<bytes.ml:848:2>>*/ caml_ml_bytes_length(b) - 1 | 0, i = 0;
    for(;;){
      /*<<bytes.ml:836:4>>*/ if(max < i)  /*<<bytes.ml:836:20>>*/ return 1;
      /*<<bytes.ml:837:4>>*/ if(i === max)  /*<<bytes.ml:837:20>>*/ return 0;
     var u =  /*<<bytes.ml:838:10>>*/ unsafe_get_uint16_le(b, i);
      /*<<bytes.ml:839:13>>*/ if(55296 <= u && 57343 >= u){
       /*<<bytes.ml:840:13>>*/ if(56319 < u)
        /*<<bytes.ml:840:27>>*/ return 0;
      var last =  /*<<bytes.ml:842:8>>*/ i + 3 | 0;
       /*<<bytes.ml:843:8>>*/ if(max < last)
        /*<<bytes.ml:843:27>>*/ return 0;
      var u$0 =  /*<<bytes.ml:844:14>>*/ unsafe_get_uint16_le(b, i + 2 | 0);
       /*<<bytes.ml:845:17>>*/ if(56320 <= u$0 && 57343 >= u$0){
       var i$1 =  /*<<bytes.ml:846:17>>*/ i + 4 | 0;
       i = i$1;
       continue;
      }
       /*<<bytes.ml:845:45>>*/ return 0;
     }
     var i$0 =  /*<<bytes.ml:839:41>>*/ i + 2 | 0;
     i = i$0;
    }
    /*<<bytes.ml:848:25>>*/ }
   var
    Stdlib_Bytes =
       /*<<bytes.ml:53:20>>*/ [0,
       make,
       init,
       empty,
       copy,
       of_string,
       to_string,
       sub,
       sub_string,
       extend,
       fill,
       blit,
       blit_string,
       concat,
       cat,
       iter,
       iteri,
       map,
       mapi,
       fold_left,
       fold_right,
       for_all,
       exists,
       trim,
       escaped,
       index,
       index_opt,
       rindex,
       rindex_opt,
       index_from,
       index_from_opt,
       rindex_from,
       rindex_from_opt,
       contains,
       contains_from,
       rcontains_from,
       uppercase_ascii,
       lowercase_ascii,
       capitalize_ascii,
       uncapitalize_ascii,
       compare,
       runtime.caml_bytes_equal,
       starts_with,
       ends_with,
       caml_string_of_bytes,
       caml_bytes_of_string,
       split_on_char,
       to_seq,
       to_seqi,
       of_seq,
       get_utf_8_uchar,
       set_utf_8_uchar,
       is_valid_utf_8,
       get_utf_16be_uchar,
       set_utf_16be_uchar,
       is_valid_utf_16be,
       get_utf_16le_uchar,
       set_utf_16le_uchar,
       is_valid_utf_16le,
       caml_bytes_get,
       get_int8,
       caml_bytes_get16,
       get_uint16_be,
       get_uint16_le,
       get_int16_ne,
       get_int16_be,
       get_int16_le,
       caml_bytes_get32,
       get_int32_be,
       get_int32_le,
       caml_bytes_get64,
       get_int64_be,
       get_int64_le,
       caml_bytes_set,
       caml_bytes_set,
       caml_bytes_set16,
       set_int16_be,
       set_int16_le,
       caml_bytes_set16,
       set_int16_be,
       set_int16_le,
       caml_bytes_set32,
       set_int32_be,
       set_int32_le,
       caml_bytes_set64,
       set_int64_be,
       set_int64_le,
       unsafe_escape];
   runtime.caml_register_global(30, Stdlib_Bytes, "Stdlib__Bytes");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__String
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Bytes, Stdlib__Int, Stdlib__List, Stdlib__Uchar
//# shape: Stdlib__String:[F(2),F(2),N,F(1),F(1),F(5),F(2),F(2)*,F(2)*,F(2)*,F(2),F(2),F(3),F(3),F(2),F(3),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(2),F(3),F(3),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*,F(1)*,F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_blit_string = runtime.caml_blit_string,
    caml_check_bound = runtime.caml_check_bound,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_string_length = runtime.caml_ml_string_length,
    caml_string_equal = runtime.caml_string_equal,
    caml_string_hash = runtime.caml_string_hash,
    caml_string_unsafe_get = runtime.caml_string_unsafe_get,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_List = global_data.Stdlib__List,
    Stdlib_Int = global_data.Stdlib__Int,
    Stdlib_Uchar = global_data.Stdlib__Uchar,
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib_Bytes = global_data.Stdlib__Bytes,
    bts = Stdlib_Bytes[44],
    bos = Stdlib_Bytes[45];
   function make(n, c){
     /*<<string.ml:36:2>>*/ return  /*<<string.ml:36:12>>*/ bts
            ( /*<<string.ml:36:2>>*/ Stdlib_Bytes[1].call(null, n, c)) /*<<string.ml:36:19>>*/ ;
   }
   function init(n, f){
     /*<<string.ml:38:2>>*/ return  /*<<string.ml:38:12>>*/ bts
            ( /*<<string.ml:38:2>>*/ Stdlib_Bytes[2].call(null, n, f)) /*<<string.ml:38:19>>*/ ;
   }
   var of_bytes =  /*<<?>>*/ Stdlib_Bytes[6], to_bytes = Stdlib_Bytes[5];
   function sub(s, ofs, len){
     /*<<string.ml:43:2>>*/ if(0 === ofs && caml_ml_string_length(s) === len)
      /*<<string.ml:43:36>>*/ return s;
    var _C_ =  /*<<string.ml:44:8>>*/ bos(s);
     /*<<string.ml:44:2>>*/ return  /*<<string.ml:44:23>>*/ bts
            ( /*<<string.ml:44:2>>*/ Stdlib_Bytes[7].call(null, _C_, ofs, len)) /*<<string.ml:44:30>>*/ ;
   }
   var blit =  /*<<?>>*/ Stdlib_Bytes[12], cst = "";
   function concat(sep, l){
     /*<<string.ml:64:11>>*/ if(! l)  /*<<string.ml:65:10>>*/ return cst;
     /*<<string.ml:64:11>>*/ if(! l[2]){
     var s = l[1];
      /*<<string.ml:66:11>>*/ return s;
    }
    var seplen =  /*<<string.ml:67:9>>*/ caml_ml_string_length(sep);
    a:
    {
     var acc =  /*<<string.ml:69:22>>*/ 0, param = l, pos$1 = 0;
     for(;;){
       /*<<string.ml:50:20>>*/ if(! param){var _C_ = acc; break a;}
      var hd = param[1];
      if(! param[2]) break;
      var
       tl = param[2],
       x =
          /*<<string.ml:53:16>>*/ (caml_ml_string_length(hd) + seplen | 0)
         + acc
         | 0;
       /*<<string.ml:48:26>>*/ if(acc <= x){
       acc = x;
       param = tl;
      }
      else{
        /*<<string.ml:48:48>>*/ acc = Stdlib[1].call(null, "String.concat");
       param = tl;
      }
     }
     var _C_ =  /*<<string.ml:52:16>>*/ caml_ml_string_length(hd) + acc | 0;
    }
    var
     dst =  /*<<string.ml:69:12>>*/ runtime.caml_create_bytes(_C_),
     pos =  /*<<string.ml:68:10>>*/ pos$1,
     param$0 = l;
    for(;;){
      /*<<string.ml:55:21>>*/ if(param$0){
      var hd$0 = param$0[1];
      if(param$0[2]){
       var tl$0 = param$0[2];
        /*<<string.ml:60:4>>*/ caml_blit_string
        (hd$0, 0, dst, pos, caml_ml_string_length(hd$0));
        /*<<string.ml:60:40>>*/  /*<<string.ml:61:4>>*/ caml_blit_string
        (sep,
         0,
         dst,
         pos +  /*<<string.ml:60:40>>*/ caml_ml_string_length(hd$0) | 0,
         seplen);
       var
        pos$0 =
           /*<<string.ml:61:50>>*/ (pos + caml_ml_string_length(hd$0) | 0)
          + seplen
          | 0;
       pos = pos$0;
       param$0 = tl$0;
       continue;
      }
       /*<<string.ml:58:4>>*/ caml_blit_string
       (hd$0, 0, dst, pos, caml_ml_string_length(hd$0));
     }
      /*<<string.ml:70:26>>*/ return bts(dst);
    }
   }
   var cat =  /*<<?>>*/ Stdlib[28];
   function iter(f, s){
    var _B_ =  /*<<string.ml:76:2>>*/ caml_ml_string_length(s) - 1 | 0;
    if(_B_ >= 0){
     var i = 0;
     for(;;){
       /*<<string.ml:76:31>>*/ caml_call1(f, caml_string_unsafe_get(s, i));
      var _C_ =  /*<<string.ml:76:49>>*/ i + 1 | 0;
      if(_B_ === i) break;
      i = _C_;
     }
    }
     /*<<string.ml:76:2>>*/ return 0;
    /*<<string.ml:76:54>>*/ }
   function iteri(f, s){
    var _A_ =  /*<<string.ml:80:2>>*/ caml_ml_string_length(s) - 1 | 0;
    if(_A_ >= 0){
     var i = 0;
     for(;;){
       /*<<string.ml:80:31>>*/ caml_call2(f, i, caml_string_unsafe_get(s, i));
      var _B_ =  /*<<string.ml:80:51>>*/ i + 1 | 0;
      if(_A_ === i) break;
      i = _B_;
     }
    }
     /*<<string.ml:80:2>>*/ return 0;
    /*<<string.ml:80:56>>*/ }
   function map(f, s){
    var _A_ =  /*<<string.ml:83:10>>*/ bos(s);
     /*<<string.ml:83:2>>*/ return  /*<<string.ml:83:17>>*/ bts
            ( /*<<string.ml:83:2>>*/ Stdlib_Bytes[17].call(null, f, _A_)) /*<<string.ml:83:24>>*/ ;
   }
   function mapi(f, s){
    var _A_ =  /*<<string.ml:85:11>>*/ bos(s);
     /*<<string.ml:85:2>>*/ return  /*<<string.ml:85:18>>*/ bts
            ( /*<<string.ml:85:2>>*/ Stdlib_Bytes[18].call(null, f, _A_)) /*<<string.ml:85:25>>*/ ;
   }
   function fold_right(f, x, a){
    var _A_ =  /*<<string.ml:87:17>>*/ bos(x);
     /*<<string.ml:87:24>>*/ return Stdlib_Bytes[20].call(null, f, _A_, a) /*<<string.ml:87:26>>*/ ;
   }
   function fold_left(f, a, x){
    var _A_ =  /*<<string.ml:89:18>>*/ bos(x);
     /*<<string.ml:89:25>>*/ return Stdlib_Bytes[19].call(null, f, a, _A_);
   }
   function exists(f, s){
    var _A_ =  /*<<string.ml:91:13>>*/ bos(s);
     /*<<string.ml:91:20>>*/ return Stdlib_Bytes[22].call(null, f, _A_);
   }
   function for_all(f, s){
    var _A_ =  /*<<string.ml:93:14>>*/ bos(s);
     /*<<string.ml:93:21>>*/ return Stdlib_Bytes[21].call(null, f, _A_);
   }
   function is_space(param){
    var _A_ =  /*<<string.ml:99:15>>*/ param - 9 | 0;
    a:
    {
     if(4 < _A_ >>> 0){if(23 !== _A_) break a;} else if(2 === _A_) break a;
      /*<<string.ml:100:41>>*/ return 1;
    }
     /*<<string.ml:101:9>>*/ return 0;
    /*<<string.ml:101:14>>*/ }
   function trim(s){
     /*<<string.ml:104:11>>*/ if(s === cst)
      /*<<string.ml:104:17>>*/ return s;
     /*<<string.ml:105:7>>*/ if
     (!
       /*<<string.ml:105:10>>*/ is_space
       ( /*<<string.ml:105:7>>*/ caml_string_unsafe_get(s, 0))
      &&
       !
        /*<<string.ml:105:39>>*/ is_space
        ( /*<<string.ml:105:35>>*/ caml_string_unsafe_get
          (s, caml_ml_string_length(s) - 1 | 0)))
      /*<<string.ml:107:7>>*/ return s;
    var _A_ =  /*<<string.ml:106:21>>*/ bos(s);
     /*<<string.ml:106:13>>*/ return  /*<<string.ml:106:29>>*/ bts
            ( /*<<string.ml:106:13>>*/ Stdlib_Bytes[23].call(null, _A_)) /*<<string.ml:107:8>>*/ ;
   }
   function escaped(s){
    var
     b =  /*<<string.ml:110:10>>*/ bos(s),
     b$0 =  /*<<string.ml:113:11>>*/ Stdlib_Bytes[87].call(null, b);
     /*<<string.ml:117:2>>*/ return b === b$0
            ? s
            :  /*<<string.ml:117:25>>*/ bts(b$0) /*<<string.ml:117:31>>*/ ;
   }
   function index_rec(s, lim, i$1, c){
    var i =  /*<<string.ml:121:2>>*/ i$1;
    for(;;){
     if(lim <= i)
       /*<<string.ml:121:19>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[8], 1);
      /*<<string.ml:122:2>>*/ if(caml_string_unsafe_get(s, i) === c)
       /*<<string.ml:122:29>>*/ return i;
     var i$0 =  /*<<string.ml:122:36>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<string.ml:122:61>>*/ }
   function index(s, c){
     /*<<string.ml:125:16>>*/ return index_rec
            (s, caml_ml_string_length(s), 0, c) /*<<string.ml:125:42>>*/ ;
   }
   function index_rec_opt(s, lim, i$1, c){
    var i =  /*<<string.ml:129:2>>*/ i$1;
    for(;;){
     if(lim <= i)  /*<<string.ml:129:19>>*/ return 0;
      /*<<string.ml:130:2>>*/ if(caml_string_unsafe_get(s, i) === c)
       /*<<string.ml:130:29>>*/ return [0, i];
     var i$0 =  /*<<string.ml:130:41>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<string.ml:130:70>>*/ }
   function index_opt(s, c){
     /*<<string.ml:133:20>>*/ return index_rec_opt
            (s, caml_ml_string_length(s), 0, c) /*<<string.ml:133:50>>*/ ;
   }
   function index_from(s, i, c){
    var l =  /*<<string.ml:137:2>>*/ caml_ml_string_length(s);
     /*<<string.ml:138:2>>*/ if(0 <= i && l >= i)
      /*<<string.ml:139:4>>*/ return index_rec(s, l, i, c) /*<<string.ml:139:21>>*/ ;
     /*<<string.ml:138:25>>*/ return Stdlib[1].call
            (null, "String.index_from / Bytes.index_from") /*<<string.ml:139:21>>*/ ;
   }
   function index_from_opt(s, i, c){
    var l =  /*<<string.ml:143:2>>*/ caml_ml_string_length(s);
     /*<<string.ml:144:2>>*/ if(0 <= i && l >= i)
      /*<<string.ml:147:4>>*/ return index_rec_opt(s, l, i, c) /*<<string.ml:147:25>>*/ ;
     /*<<string.ml:145:4>>*/ return Stdlib[1].call
            (null, "String.index_from_opt / Bytes.index_from_opt") /*<<string.ml:147:25>>*/ ;
   }
   function rindex_rec(s, i$1, c){
    var i =  /*<<string.ml:151:2>>*/ i$1;
    for(;;){
     if(0 > i)
       /*<<string.ml:151:16>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[8], 1);
      /*<<string.ml:152:2>>*/ if(caml_string_unsafe_get(s, i) === c)
       /*<<string.ml:152:29>>*/ return i;
     var i$0 =  /*<<string.ml:152:36>>*/ i - 1 | 0;
     i = i$0;
    }
    /*<<string.ml:152:58>>*/ }
   function rindex(s, c){
     /*<<string.ml:155:17>>*/ return rindex_rec
            (s, caml_ml_string_length(s) - 1 | 0, c) /*<<string.ml:155:46>>*/ ;
   }
   function rindex_from(s, i, c){
     /*<<string.ml:159:2>>*/ if(-1 <= i && caml_ml_string_length(s) > i)
      /*<<string.ml:162:4>>*/ return rindex_rec(s, i, c) /*<<string.ml:162:20>>*/ ;
     /*<<string.ml:160:4>>*/ return Stdlib[1].call
            (null, "String.rindex_from / Bytes.rindex_from") /*<<string.ml:162:20>>*/ ;
   }
   function rindex_rec_opt(s, i$1, c){
    var i =  /*<<string.ml:166:2>>*/ i$1;
    for(;;){
     if(0 > i)  /*<<string.ml:166:16>>*/ return 0;
      /*<<string.ml:167:2>>*/ if(caml_string_unsafe_get(s, i) === c)
       /*<<string.ml:167:29>>*/ return [0, i];
     var i$0 =  /*<<string.ml:167:41>>*/ i - 1 | 0;
     i = i$0;
    }
    /*<<string.ml:167:67>>*/ }
   function rindex_opt(s, c){
     /*<<string.ml:170:21>>*/ return rindex_rec_opt
            (s, caml_ml_string_length(s) - 1 | 0, c) /*<<string.ml:170:54>>*/ ;
   }
   function rindex_from_opt(s, i, c){
     /*<<string.ml:174:2>>*/ if(-1 <= i && caml_ml_string_length(s) > i)
      /*<<string.ml:177:4>>*/ return rindex_rec_opt(s, i, c) /*<<string.ml:177:24>>*/ ;
     /*<<string.ml:175:4>>*/ return Stdlib[1].call
            (null, "String.rindex_from_opt / Bytes.rindex_from_opt") /*<<string.ml:177:24>>*/ ;
   }
   function contains_from(s, i, c){
    var l =  /*<<string.ml:181:2>>*/ caml_ml_string_length(s);
     /*<<string.ml:182:2>>*/ if(0 <= i && l >= i)
     try{ /*<<string.ml:185:15>>*/ index_rec(s, l, i, c); return 1;}
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn === Stdlib[8])  /*<<string.ml:185:59>>*/ return 0;
       /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
     }
     /*<<string.ml:183:4>>*/ return Stdlib[1].call
            (null, "String.contains_from / Bytes.contains_from") /*<<string.ml:185:64>>*/ ;
   }
   function contains(s, c){
     /*<<string.ml:188:19>>*/ return contains_from(s, 0, c) /*<<string.ml:188:38>>*/ ;
   }
   function rcontains_from(s, i, c){
     /*<<string.ml:192:2>>*/ if(0 <= i && caml_ml_string_length(s) > i)
     try{ /*<<string.ml:195:15>>*/ rindex_rec(s, i, c); return 1;}
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn === Stdlib[8])  /*<<string.ml:195:58>>*/ return 0;
       /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
     }
     /*<<string.ml:193:4>>*/ return Stdlib[1].call
            (null, "String.rcontains_from / Bytes.rcontains_from") /*<<string.ml:195:63>>*/ ;
   }
   function uppercase_ascii(s){
    var _A_ =  /*<<string.ml:198:20>>*/ bos(s);
     /*<<string.ml:198:2>>*/ return  /*<<string.ml:198:27>>*/ bts
            ( /*<<string.ml:198:2>>*/ Stdlib_Bytes[36].call(null, _A_)) /*<<string.ml:198:34>>*/ ;
   }
   function lowercase_ascii(s){
    var _A_ =  /*<<string.ml:200:20>>*/ bos(s);
     /*<<string.ml:200:2>>*/ return  /*<<string.ml:200:27>>*/ bts
            ( /*<<string.ml:200:2>>*/ Stdlib_Bytes[37].call(null, _A_)) /*<<string.ml:200:34>>*/ ;
   }
   function capitalize_ascii(s){
    var _A_ =  /*<<string.ml:202:21>>*/ bos(s);
     /*<<string.ml:202:2>>*/ return  /*<<string.ml:202:28>>*/ bts
            ( /*<<string.ml:202:2>>*/ Stdlib_Bytes[38].call(null, _A_)) /*<<string.ml:202:35>>*/ ;
   }
   function uncapitalize_ascii(s){
    var _A_ =  /*<<string.ml:204:23>>*/ bos(s);
     /*<<string.ml:204:2>>*/ return  /*<<string.ml:204:30>>*/ bts
            ( /*<<string.ml:204:2>>*/ Stdlib_Bytes[39].call(null, _A_)) /*<<string.ml:204:37>>*/ ;
   }
   function starts_with(prefix, s){
    var
     len_s =  /*<<string.ml:208:2>>*/ caml_ml_string_length(s),
     len_pre = caml_ml_string_length(prefix),
     _A_ =  /*<<string.ml:214:5>>*/ len_pre <= len_s ? 1 : 0;
    if(! _A_) return _A_;
    var i = 0;
    for(;;){
      /*<<string.ml:211:4>>*/ if(i === len_pre)
       /*<<string.ml:211:24>>*/ return 1;
      /*<<string.ml:212:9>>*/ if
      (caml_string_unsafe_get(s, i) !== caml_string_unsafe_get(prefix, i))
       /*<<string.ml:212:55>>*/ return 0;
     var i$0 =  /*<<string.ml:213:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<string.ml:214:30>>*/ }
   function ends_with(suffix, s){
    var
     len_s =  /*<<string.ml:218:2>>*/ caml_ml_string_length(s),
     len_suf = caml_ml_string_length(suffix),
     diff =  /*<<string.ml:220:2>>*/ len_s - len_suf | 0,
     _A_ =  /*<<string.ml:225:5>>*/ 0 <= diff ? 1 : 0;
    if(! _A_) return _A_;
    var i = 0;
    for(;;){
      /*<<string.ml:222:4>>*/ if(i === len_suf)
       /*<<string.ml:222:24>>*/ return 1;
      /*<<string.ml:223:9>>*/ if
      (caml_string_unsafe_get(s, diff + i | 0)
       !== caml_string_unsafe_get(suffix, i))
       /*<<string.ml:223:64>>*/ return 0;
     var i$0 =  /*<<string.ml:224:9>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<string.ml:225:23>>*/ }
   function hash(x){
     /*<<string.ml:228:13>>*/ return caml_string_hash(0, x) /*<<string.ml:228:28>>*/ ;
   }
   function split_on_char(sep, s){
    var
     _y_ =  /*<<string.ml:233:2>>*/ caml_ml_string_length(s),
     _z_ =  /*<<string.ml:234:2>>*/ caml_ml_string_length(s) - 1 | 0,
     _x_ =  /*<<string.ml:232:2>>*/ 0;
     /*<<string.ml:234:2>>*/ if(_z_ < 0)
     var j$1 = _y_, r$1 = _x_;
    else{
     var j = _y_, r = _x_, i = _z_;
     for(;;){
       /*<<string.ml:235:4>>*/ if(caml_string_unsafe_get(s, i) === sep)
       var
        j$0 =  /*<<string.ml:237:6>>*/ i,
        r$0 =
          [0,
            /*<<string.ml:236:11>>*/ sub(s, i + 1 | 0, (j - i | 0) - 1 | 0),
           r];
      else
       var j$0 =  /*<<string.ml:235:4>>*/ j, r$0 = r;
      var _A_ = i - 1 | 0;
      if(0 === i){var j$1 = j$0, r$1 = r$0; break;}
      j = j$0;
      r = r$0;
      i = _A_;
     }
    }
     /*<<string.ml:240:2>>*/ return [0, sub(s, 0, j$1), r$1] /*<<string.ml:240:12>>*/ ;
    /*<<string.ml:240:18>>*/ }
   var compare =  /*<<?>>*/ runtime.caml_string_compare;
   function to_seq(s){
    var _x_ =  /*<<string.ml:249:15>>*/ bos(s);
     /*<<string.ml:249:20>>*/ return Stdlib_Bytes[47].call(null, _x_) /*<<string.ml:249:32>>*/ ;
   }
   function to_seqi(s){
    var _x_ =  /*<<string.ml:251:16>>*/ bos(s);
     /*<<string.ml:251:21>>*/ return Stdlib_Bytes[48].call(null, _x_) /*<<string.ml:251:34>>*/ ;
   }
   function of_seq(g){
     /*<<string.ml:253:15>>*/ return  /*<<string.ml:253:25>>*/ bts
            ( /*<<string.ml:253:15>>*/ Stdlib_Bytes[49].call(null, g)) /*<<string.ml:253:32>>*/ ;
   }
   function get_utf_8_uchar(s, i){
    var _x_ =  /*<<string.ml:257:44>>*/ bos(s);
     /*<<string.ml:257:51>>*/ return Stdlib_Bytes[50].call(null, _x_, i) /*<<string.ml:257:53>>*/ ;
   }
   function is_valid_utf_8(s){
    var _x_ =  /*<<string.ml:258:40>>*/ bos(s);
     /*<<string.ml:258:47>>*/ return Stdlib_Bytes[52].call(null, _x_);
   }
   function get_utf_16be_uchar(s, i){
    var _x_ =  /*<<string.ml:260:50>>*/ bos(s);
     /*<<string.ml:260:57>>*/ return Stdlib_Bytes[53].call(null, _x_, i) /*<<string.ml:260:59>>*/ ;
   }
   function is_valid_utf_16be(s){
    var _x_ =  /*<<string.ml:261:46>>*/ bos(s);
     /*<<string.ml:261:53>>*/ return Stdlib_Bytes[55].call(null, _x_);
   }
   function get_utf_16le_uchar(s, i){
    var _x_ =  /*<<string.ml:263:50>>*/ bos(s);
     /*<<string.ml:263:57>>*/ return Stdlib_Bytes[56].call(null, _x_, i) /*<<string.ml:263:59>>*/ ;
   }
   function is_valid_utf_16le(s){
    var _x_ =  /*<<string.ml:264:46>>*/ bos(s);
     /*<<string.ml:264:53>>*/ return Stdlib_Bytes[58].call(null, _x_);
   }
   function get_int8(s, i){
    var _x_ =  /*<<string.ml:273:30>>*/ bos(s);
     /*<<string.ml:273:37>>*/ return Stdlib_Bytes[60].call(null, _x_, i) /*<<string.ml:273:39>>*/ ;
   }
   function get_uint16_le(s, i){
    var _x_ =  /*<<string.ml:274:40>>*/ bos(s);
     /*<<string.ml:274:47>>*/ return Stdlib_Bytes[63].call(null, _x_, i) /*<<string.ml:274:49>>*/ ;
   }
   function get_uint16_be(s, i){
    var _x_ =  /*<<string.ml:275:40>>*/ bos(s);
     /*<<string.ml:275:47>>*/ return Stdlib_Bytes[62].call(null, _x_, i) /*<<string.ml:275:49>>*/ ;
   }
   function get_int16_ne(s, i){
    var _x_ =  /*<<string.ml:276:38>>*/ bos(s);
     /*<<string.ml:276:45>>*/ return Stdlib_Bytes[64].call(null, _x_, i) /*<<string.ml:276:47>>*/ ;
   }
   function get_int16_le(s, i){
    var _x_ =  /*<<string.ml:277:38>>*/ bos(s);
     /*<<string.ml:277:45>>*/ return Stdlib_Bytes[66].call(null, _x_, i) /*<<string.ml:277:47>>*/ ;
   }
   function get_int16_be(s, i){
    var _x_ =  /*<<string.ml:278:38>>*/ bos(s);
     /*<<string.ml:278:45>>*/ return Stdlib_Bytes[65].call(null, _x_, i) /*<<string.ml:278:47>>*/ ;
   }
   function get_int32_le(s, i){
    var _x_ =  /*<<string.ml:279:38>>*/ bos(s);
     /*<<string.ml:279:45>>*/ return Stdlib_Bytes[69].call(null, _x_, i) /*<<string.ml:279:47>>*/ ;
   }
   function get_int32_be(s, i){
    var _x_ =  /*<<string.ml:280:38>>*/ bos(s);
     /*<<string.ml:280:45>>*/ return Stdlib_Bytes[68].call(null, _x_, i) /*<<string.ml:280:47>>*/ ;
   }
   function get_int64_le(s, i){
    var _x_ =  /*<<string.ml:281:38>>*/ bos(s);
     /*<<string.ml:281:45>>*/ return Stdlib_Bytes[72].call(null, _x_, i) /*<<string.ml:281:47>>*/ ;
   }
   function get_int64_be(s, i){
    var _x_ =  /*<<string.ml:282:38>>*/ bos(s);
     /*<<string.ml:282:45>>*/ return Stdlib_Bytes[71].call(null, _x_, i) /*<<string.ml:282:47>>*/ ;
   }
   function uchar_array_of_utf_8_string(s){
    var
     slen =  /*<<string.ml:297:2>>*/ caml_ml_string_length(s),
     uchars =  /*<<string.ml:298:15>>*/ caml_array_make(slen, Stdlib_Uchar[2]),
     i =  /*<<string.ml:300:2>>*/ 0,
     k = 0;
    for(;;){
     if(i >= slen)  /*<<string.ml:306:2>>*/ return [0, uchars, k];
     var
      dec =  /*<<string.ml:301:14>>*/ get_utf_8_uchar(s, i),
      _w_ =  /*<<string.ml:302:14>>*/ i + Stdlib_Uchar[21].call(null, dec) | 0,
      _x_ =  /*<<string.ml:303:19>>*/ Stdlib_Uchar[20].call(null, dec);
      /*<<string.ml:303:4>>*/ caml_check_bound(uchars, k)[k + 1] = _x_;
     var k$0 =  /*<<string.ml:303:45>>*/ k + 1 | 0;
     i = _w_;
     k = k$0;
    }
    /*<<string.ml:306:12>>*/ }
   function edit_distance(opt, s, param, s1){
    var
     limit =  /*<<string.ml:308:19>>*/ opt ? opt[1] : Stdlib_Int[5],
     len0 = param[2],
     s0 = param[1];
     /*<<string.ml:309:2>>*/ if(1 >= limit)
      /*<<string.ml:309:35>>*/ return s === s1 ? 0 : limit;
    var
     match =  /*<<string.ml:311:17>>*/ uchar_array_of_utf_8_string(s1),
     len1 =  /*<<string.ml:311:47>>*/ match[2],
     s0$0 = match[1],
     _n_ =  /*<<string.ml:312:22>>*/ Stdlib_Int[11].call(null, len0, len1),
     limit$0 =  /*<<string.ml:312:14>>*/ Stdlib_Int[10].call(null, _n_, limit);
     /*<<string.ml:313:5>>*/ if
     (limit$0 <= Stdlib_Int[4].call(null, len1 - len0 | 0))
      /*<<string.ml:313:41>>*/ return limit$0;
     /*<<string.ml:314:2>>*/ if(len1 < len0)
     var s1$0 = s0$0, s0$1 = s0;
    else
     var s1$0 = s0, s0$1 = s0$0;
     /*<<string.ml:315:2>>*/ if(len1 < len0)
     var len1$0 = len1, len0$0 = len0;
    else
     var len1$0 = len0, len0$0 = len1;
    var
     ignore =  /*<<string.ml:350:2>>*/ limit$0 + 1 | 0,
     row_minus2$0 =
        /*<<string.ml:355:19>>*/ caml_array_make(len1$0 + 1 | 0, ignore),
     row_minus1$1 =
        /*<<string.ml:356:19>>*/ Stdlib_Array[1].call
        (null,
         len1$0 + 1 | 0,
         function(x){
           /*<<string.ml:356:51>>*/ return x;
          /*<<string.ml:356:52>>*/ }),
     row =  /*<<string.ml:357:12>>*/ caml_array_make(len1$0 + 1 | 0, ignore),
     row_minus2 =  /*<<string.ml:358:10>>*/ row_minus2$0,
     row_minus1$0 = row_minus1$1,
     row_minus1 = row,
     i = 1;
    for(;;){
      /*<<string.ml:317:4>>*/ if(len0$0 < i)
      var
       _a_ =  /*<<string.ml:317:21>>*/ row_minus1$0.length - 2 | 0,
       d =
          /*<<string.ml:317:61>>*/  /*<<string.ml:317:21>>*/ caml_check_bound
           (row_minus1$0, _a_)
          [_a_ + 1];
     else{
      var
       len1$1 =  /*<<string.ml:318:4>>*/ row_minus1.length - 2 | 0,
       row_min = Stdlib_Int[5];
       /*<<string.ml:320:4>>*/ caml_check_bound(row_minus1, 0)[1] = i;
      var
       jmax =
          /*<<string.ml:322:17>>*/ Stdlib_Int[10].call
          (null, len1$1, (i + limit$0 | 0) - 1 | 0),
       jmax$0 =  /*<<string.ml:323:6>>*/ 0 <= jmax ? jmax : len1$1,
       _b_ =
          /*<<string.ml:325:12>>*/ Stdlib_Int[11].call
          (null, 1, i - limit$0 | 0);
       /*<<string.ml:325:33>>*/ if(jmax$0 < _b_)
       var row_min$1 = row_min;
      else{
       var row_min$0 = row_min, j = _b_;
       for(;;){
        var
         _c_ =  /*<<string.ml:326:6>>*/ j - 1 | 0,
         _d_ =  /*<<string.ml:326:49>>*/ i - 1 | 0,
         _o_ =  /*<<string.ml:326:41>>*/ caml_check_bound(s1$0, _c_)[_c_ + 1],
         _p_ =  /*<<string.ml:326:32>>*/ caml_check_bound(s0$1, _d_)[_d_ + 1],
         cost =
            /*<<string.ml:326:20>>*/ Stdlib_Uchar[15].call(null, _p_, _o_)
            ? 0
            : 1,
         _e_ =  /*<<string.ml:327:6>>*/ j - 1 | 0,
         c =
            /*<<string.ml:330:11>>*/ caml_check_bound(row_minus1, _e_)
            [_e_ + 1]
           + 1
           | 0,
         b =
            /*<<string.ml:329:11>>*/ caml_check_bound(row_minus1$0, j)[j + 1]
           + 1
           | 0,
         _f_ =  /*<<string.ml:329:25>>*/ j - 1 | 0,
         a =
            /*<<string.ml:328:11>>*/ caml_check_bound(row_minus1$0, _f_)
            [_f_ + 1]
           + cost
           | 0,
         _m_ =  /*<<string.ml:310:41>>*/ Stdlib_Int[10].call(null, b, c),
         min =  /*<<string.ml:310:54>>*/ Stdlib_Int[10].call(null, a, _m_);
         /*<<string.ml:337:6>>*/ if(1 < i && 1 < j){
         var
          _g_ = j - 2 | 0,
          _h_ =  /*<<string.ml:339:41>>*/ i - 1 | 0,
          _q_ =  /*<<string.ml:339:33>>*/ caml_check_bound(s1$0, _g_)[_g_ + 1],
          _r_ =  /*<<string.ml:339:24>>*/ caml_check_bound(s0$1, _h_)[_h_ + 1];
          /*<<string.ml:339:12>>*/ if(Stdlib_Uchar[15].call(null, _r_, _q_)){
          var
           _i_ =  /*<<string.ml:339:41>>*/ j - 1 | 0,
           _j_ =  /*<<string.ml:340:41>>*/ i - 2 | 0,
           _s_ =
              /*<<string.ml:340:33>>*/ caml_check_bound(s1$0, _i_)[_i_ + 1],
           _t_ =
              /*<<string.ml:340:24>>*/ caml_check_bound(s0$1, _j_)[_j_ + 1];
           /*<<string.ml:340:12>>*/ if(Stdlib_Uchar[15].call(null, _t_, _s_))
           var
            _k_ =  /*<<string.ml:341:13>>*/ j - 2 | 0,
            _u_ =
               /*<<string.ml:341:26>>*/ caml_check_bound(row_minus2, _k_)
               [_k_ + 1]
              + cost
              | 0,
            min$0 =
               /*<<string.ml:341:50>>*/  /*<<string.ml:341:13>>*/ Stdlib_Int
                [10].call
               (null, min, _u_);
          else
           var min$0 =  /*<<string.ml:340:41>>*/ min;
         }
         else
          var min$0 =  /*<<string.ml:339:41>>*/ min;
        }
        else
         var min$0 =  /*<<string.ml:337:6>>*/ min;
         /*<<string.ml:344:6>>*/ caml_check_bound(row_minus1, j)[j + 1] = min$0;
        var
         _l_ =
            /*<<string.ml:345:17>>*/ Stdlib_Int[10].call
            (null, row_min$0, min$0),
         _v_ =  /*<<string.ml:345:37>>*/ j + 1 | 0;
        if(jmax$0 === j){var row_min$1 = _l_; break;}
        row_min$0 = _l_;
        j = _v_;
       }
      }
       /*<<string.ml:347:4>>*/ if(limit$0 > row_min$1){
       var i$0 =  /*<<string.ml:348:4>>*/ i + 1 | 0, _w_ = row_minus1;
       row_minus1 = row_minus2;
       row_minus2 = row_minus1$0;
       row_minus1$0 = _w_;
       i = i$0;
       continue;
      }
      var d =  /*<<string.ml:347:4>>*/ limit$0;
     }
      /*<<string.ml:359:2>>*/ return limit$0 < d ? limit$0 : d;
    }
   }
   function edit_distance$0(limit, s0, s1){
    var us0 =  /*<<string.ml:362:12>>*/ uchar_array_of_utf_8_string(s0);
     /*<<string.ml:363:2>>*/ return edit_distance(limit, s0, us0, s1) /*<<string.ml:363:33>>*/ ;
   }
   function default_max_dist(s){
    var
     slen =  /*<<string.ml:287:2>>*/ caml_ml_string_length(s),
     ulen =  /*<<string.ml:289:2>>*/ 0,
     i = 0;
    for(;;){
     if(i >= slen){
       /*<<string.ml:365:51>>*/ if(3 <= ulen){
       if(5 > ulen)  /*<<string.ml:367:13>>*/ return 1;
      }
      else if(0 <= ulen)  /*<<string.ml:366:17>>*/ return 0;
       /*<<string.ml:368:9>>*/ return 2;
     }
     var
      dec_len =
         /*<<string.ml:290:4>>*/  /*<<string.ml:290:18>>*/ Stdlib_Uchar[24].call
         (null,  /*<<string.ml:290:4>>*/ caml_string_unsafe_get(s, i)),
      _a_ =  /*<<string.ml:291:4>>*/ 0 === dec_len ? 1 : dec_len,
      ulen$0 =  /*<<string.ml:292:4>>*/ ulen + 1 | 0;
     ulen = ulen$0;
     i = i + _a_ | 0;
    }
    /*<<string.ml:368:10>>*/ }
   function spellcheck(opt, iter_dict, s){
    var
     max_dist =  /*<<string.ml:370:15>>*/ opt ? opt[1] : default_max_dist,
     min =  /*<<string.ml:371:16>>*/ [0, caml_call1(max_dist, s)],
     us =  /*<<string.ml:378:11>>*/ uchar_array_of_utf_8_string(s),
     acc =  /*<<string.ml:372:2>>*/ [0, 0];
     /*<<string.ml:379:2>>*/ caml_call1
     (iter_dict,
      function(word){
       var
        d =
           /*<<string.ml:374:12>>*/ edit_distance
           ([0, min[1] + 1 | 0], s, us, word);
        /*<<string.ml:375:4>>*/ return d === min[1]
               ? (acc[1] = [0, word, acc[1]], 0)
               : d < min[1] ? (min[1] = d, acc[1] = [0, word, 0], 0) : 0;
      });
     /*<<string.ml:379:31>>*/ return Stdlib_List[11].call(null, acc[1]) /*<<string.ml:380:15>>*/ ;
   }
   var
    Stdlib_String =
       /*<<?>>*/ [0,
       make,
       init,
       cst,
       of_bytes,
       to_bytes,
       blit,
       concat,
       cat,
       caml_string_equal,
       compare,
       starts_with,
       ends_with,
       contains_from,
       rcontains_from,
       contains,
       sub,
       split_on_char,
       map,
       mapi,
       fold_left,
       fold_right,
       for_all,
       exists,
       trim,
       escaped,
       uppercase_ascii,
       lowercase_ascii,
       capitalize_ascii,
       uncapitalize_ascii,
       iter,
       iteri,
       index_from,
       index_from_opt,
       rindex_from,
       rindex_from_opt,
       index,
       index_opt,
       rindex,
       rindex_opt,
       to_seq,
       to_seqi,
       of_seq,
       get_utf_8_uchar,
       is_valid_utf_8,
       get_utf_16be_uchar,
       is_valid_utf_16be,
       get_utf_16le_uchar,
       is_valid_utf_16le,
       edit_distance$0,
       spellcheck,
       runtime.caml_string_get,
       get_int8,
       runtime.caml_string_get16,
       get_uint16_be,
       get_uint16_le,
       get_int16_ne,
       get_int16_be,
       get_int16_le,
       runtime.caml_string_get32,
       hash,
       caml_string_hash,
       get_int32_be,
       get_int32_le,
       runtime.caml_string_get64,
       get_int64_be,
       get_int64_le];
   runtime.caml_register_global(16, Stdlib_String, "Stdlib__String");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Unit
//# shape: Stdlib__Unit:[F(2)*,F(2)*,F(1)*]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function equal(_a_, param){
     /*<<unit.ml:18:18>>*/ return 1;
    /*<<unit.ml:18:22>>*/ }
   function compare(_a_, param){
     /*<<unit.ml:19:20>>*/ return 0;
    /*<<unit.ml:19:21>>*/ }
   function to_string(param){
     /*<<unit.ml:20:19>>*/ return "()";
    /*<<unit.ml:20:23>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (1, [0, equal, compare, to_string], "Stdlib__Unit");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Marshal
//# unitInfo: Requires: Stdlib, Stdlib__Bytes
//# shape: Stdlib__Marshal:[F(3),F(5),F(1),F(2),F(2),N,F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_marshal_data_size = runtime.caml_marshal_data_size,
    caml_ml_bytes_length = runtime.caml_ml_bytes_length,
    global_data = runtime.caml_get_global_data(),
    Stdlib_Bytes = global_data.Stdlib__Bytes,
    Stdlib = global_data.Stdlib;
   function to_buffer(buff, ofs, len, v, flags){
     /*<<marshal.ml:34:2>>*/ if
     (0 <= ofs && 0 <= len && (caml_ml_bytes_length(buff) - len | 0) >= ofs)
      /*<<marshal.ml:36:7>>*/ return runtime.caml_output_value_to_buffer
             (buff, ofs, len, v, flags) /*<<marshal.ml:36:44>>*/ ;
     /*<<marshal.ml:35:7>>*/ return Stdlib[1].call
            (null, "Marshal.to_buffer: substring out of bounds") /*<<marshal.ml:36:44>>*/ ;
   }
   function data_size(buff, ofs){
     /*<<marshal.ml:50:2>>*/ if
     (0 <= ofs && (caml_ml_bytes_length(buff) - 16 | 0) >= ofs)
      /*<<marshal.ml:52:7>>*/ return caml_marshal_data_size(buff, ofs) /*<<marshal.ml:52:32>>*/ ;
     /*<<marshal.ml:51:7>>*/ return Stdlib[1].call(null, "Marshal.data_size") /*<<marshal.ml:52:32>>*/ ;
   }
   function total_size(buff, ofs){
     /*<<marshal.ml:53:40>>*/ return 16 + data_size(buff, ofs) | 0 /*<<marshal.ml:53:58>>*/ ;
   }
   function from_bytes(buff, ofs){
    var cst_Marshal_from_bytes =  /*<<?>>*/ "Marshal.from_bytes";
     /*<<marshal.ml:56:2>>*/ if
     (0 <= ofs && (caml_ml_bytes_length(buff) - 16 | 0) >= ofs){
     var len =  /*<<marshal.ml:59:14>>*/ caml_marshal_data_size(buff, ofs);
      /*<<marshal.ml:60:4>>*/ return (caml_ml_bytes_length(buff)
             - (16 + len | 0)
             | 0)
             < ofs
             ?  /*<<marshal.ml:61:9>>*/ Stdlib
                [1].call
               (null, cst_Marshal_from_bytes)
             :  /*<<marshal.ml:62:9>>*/ runtime.caml_input_value_from_bytes
               (buff, ofs) /*<<marshal.ml:63:5>>*/ ;
    }
     /*<<marshal.ml:57:7>>*/ return Stdlib[1].call
            (null, cst_Marshal_from_bytes) /*<<marshal.ml:63:5>>*/ ;
   }
   function from_string(buff, ofs){
     /*<<marshal.ml:68:13>>*/ return  /*<<marshal.ml:68:42>>*/ from_bytes
            ( /*<<marshal.ml:68:13>>*/ Stdlib_Bytes[45].call(null, buff), ofs) /*<<marshal.ml:68:46>>*/ ;
   }
   var
    Stdlib_Marshal =
       /*<<?>>*/ [0,
       runtime.caml_output_value,
       to_buffer,
       runtime.caml_input_value,
       from_bytes,
       from_string,
       16,
       data_size,
       total_size];
   runtime.caml_register_global(6, Stdlib_Marshal, "Stdlib__Marshal");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Float
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__List, Stdlib__Seq
//# shape: Stdlib__Float:[N,N,N,F(1)*,F(1)*,N,N,N,N,N,N,N,N,N,F(1)*,F(1)*,F(1)*,F(1)*,F(1),F(1),F(2)*,F(2)*,F(2)*,F(2)*,F(2)*,F(2)*,F(2)*,F(2)*,F(2)*,F(1)*,N,N]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_check_bound = runtime.caml_check_bound,
    caml_float_compare = runtime.caml_float_compare,
    caml_floatarray_concat = runtime.caml_floatarray_concat,
    caml_floatarray_create = runtime.caml_floatarray_create,
    caml_floatarray_make = runtime.caml_floatarray_make,
    caml_floatarray_sub = runtime.caml_floatarray_sub,
    caml_hash = runtime.caml_hash,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_nextafter_float = runtime.caml_nextafter_float,
    caml_signbit_float = runtime.caml_signbit_float,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib_List = global_data.Stdlib__List,
    Assert_failure = global_data.Assert_failure,
    Stdlib = global_data.Stdlib,
    infinity = Stdlib[22],
    neg_infinity = Stdlib[23],
    nan = Stdlib[24];
   function is_finite(x){
     /*<<float.ml:39:33>>*/ return x - x === 0. ? 1 : 0;
    /*<<float.ml:39:38>>*/ }
   function is_infinite(x){
     /*<<float.ml:40:36>>*/ return 1. / x === 0. ? 1 : 0;
    /*<<float.ml:40:41>>*/ }
   function is_nan(x){
     /*<<float.ml:41:24>>*/ return x !== x ? 1 : 0;
    /*<<float.ml:41:30>>*/ }
   var
    max_float =  /*<<float.ml:38:60>>*/ Stdlib[25],
    min_float = Stdlib[26],
    epsilon = Stdlib[27],
    of_string_opt = Stdlib[36],
    to_string = Stdlib[35];
   function is_integer(x){
    var
     _X_ =  /*<<float.ml:116:23>>*/ x === runtime.caml_trunc_float(x) ? 1 : 0;
     /*<<float.ml:116:30>>*/ return _X_ ? is_finite(x) : _X_ /*<<float.ml:116:45>>*/ ;
   }
   function succ(x){
     /*<<float.ml:121:13>>*/ return caml_nextafter_float(x, infinity) /*<<float.ml:121:34>>*/ ;
   }
   function pred(x){
     /*<<float.ml:122:13>>*/ return caml_nextafter_float(x, neg_infinity) /*<<float.ml:122:38>>*/ ;
   }
   function equal(x, y){
     /*<<float.ml:136:16>>*/ return 0 === caml_float_compare(x, y) ? 1 : 0;
    /*<<float.ml:136:31>>*/ }
   function min(x, y){
    a:
    if(! (x < y)){
      /*<<float.ml:139:18>>*/ if
      (!
       caml_signbit_float(y)
       &&  /*<<float.ml:139:34>>*/ caml_signbit_float(x))
      break a;
      /*<<float.ml:141:18>>*/ return x !== x ? x : y /*<<float.ml:141:32>>*/ ;
    }
     /*<<float.ml:140:15>>*/ return y !== y ? y : x /*<<float.ml:141:32>>*/ ;
   }
   function max(x, y){
    a:
    if(! (x < y)){
      /*<<float.ml:144:18>>*/ if
      (!
       caml_signbit_float(y)
       &&  /*<<float.ml:144:34>>*/ caml_signbit_float(x))
      break a;
      /*<<float.ml:146:18>>*/ return y !== y ? y : x /*<<float.ml:146:32>>*/ ;
    }
     /*<<float.ml:145:15>>*/ return x !== x ? x : y /*<<float.ml:146:32>>*/ ;
   }
   function min_max(x, y){
     /*<<float.ml:149:13>>*/ if(x === x && y === y){
     a:
     if(! (x < y)){
       /*<<float.ml:150:23>>*/ if
       (!
        caml_signbit_float(y)
        &&  /*<<float.ml:150:39>>*/ caml_signbit_float(x))
       break a;
       /*<<float.ml:150:68>>*/ return [0, y, x];
     }
      /*<<float.ml:150:56>>*/ return [0, x, y];
    }
     /*<<float.ml:149:31>>*/ return [0, nan, nan];
    /*<<float.ml:150:74>>*/ }
   function min_num(x, y){
    a:
    if(! (x < y)){
      /*<<float.ml:153:18>>*/ if
      (!
       caml_signbit_float(y)
       &&  /*<<float.ml:153:34>>*/ caml_signbit_float(x))
      break a;
      /*<<float.ml:155:18>>*/ return y !== y ? x : y /*<<float.ml:155:32>>*/ ;
    }
     /*<<float.ml:154:15>>*/ return x !== x ? y : x /*<<float.ml:155:32>>*/ ;
   }
   function max_num(x, y){
    a:
    if(! (x < y)){
      /*<<float.ml:158:18>>*/ if
      (!
       caml_signbit_float(y)
       &&  /*<<float.ml:158:34>>*/ caml_signbit_float(x))
      break a;
      /*<<float.ml:160:18>>*/ return x !== x ? y : x /*<<float.ml:160:32>>*/ ;
    }
     /*<<float.ml:159:15>>*/ return y !== y ? x : y /*<<float.ml:160:32>>*/ ;
   }
   function min_max_num(x, y){
     /*<<float.ml:163:13>>*/ if(x !== x)
      /*<<float.ml:163:19>>*/ return [0, y, y];
     /*<<float.ml:164:18>>*/ if(y !== y)
      /*<<float.ml:164:24>>*/ return [0, x, x];
    a:
    if(! (x < y)){
      /*<<float.ml:165:23>>*/ if
      (!
       caml_signbit_float(y)
       &&  /*<<float.ml:165:39>>*/ caml_signbit_float(x))
      break a;
      /*<<float.ml:165:67>>*/ return [0, y, x];
    }
     /*<<float.ml:165:56>>*/ return [0, x, y];
    /*<<float.ml:165:72>>*/ }
   function seeded_hash(seed, x){
     /*<<float.ml:169:25>>*/ return caml_hash(10, 100, seed, x) /*<<float.ml:169:56>>*/ ;
   }
   function hash(x){
     /*<<float.ml:170:13>>*/ return caml_hash(10, 100, 0, x) /*<<float.ml:170:41>>*/ ;
   }
   function check(a, ofs, len, msg){
    var _V_ =  /*<<float.ml:198:4>>*/ ofs < 0 ? 1 : 0;
    if(_V_)
     var _U_ = _V_;
    else{
     var _W_ = len < 0 ? 1 : 0;
     if(_W_)
      var _U_ = _W_;
     else
      var
       _X_ = (ofs + len | 0) < 0 ? 1 : 0,
       _U_ = _X_ || (a.length - 1 < (ofs + len | 0) ? 1 : 0);
    }
    return _U_ ?  /*<<float.ml:199:6>>*/ Stdlib[1].call(null, msg) : _U_ /*<<float.ml:199:21>>*/ ;
   }
   var empty =  /*<<float.ml:201:14>>*/ caml_floatarray_create(0);
   function init(l, f){
     /*<<float.ml:204:4>>*/ if(0 > l)
      /*<<float.ml:204:18>>*/ return Stdlib[1].call(null, "Float.Array.init") /*<<float.ml:210:9>>*/ ;
    var
     res =  /*<<float.ml:206:16>>*/ caml_floatarray_create(l),
     _T_ =  /*<<float.ml:207:6>>*/ l - 1 | 0;
    if(_T_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:208:25>>*/ res[i + 1] = caml_call1(f, i);
      var _U_ =  /*<<float.ml:208:30>>*/ i + 1 | 0;
      if(_T_ === i) break;
      i = _U_;
     }
    }
     /*<<float.ml:210:6>>*/ return res;
    /*<<float.ml:210:9>>*/ }
   function make_matrix(sx, sy, v){
     /*<<float.ml:214:4>>*/ if(sy < 0)
      /*<<float.ml:214:19>>*/ Stdlib[1].call(null, "Float.Array.make_matrix");
    var
     res =
        /*<<float.ml:215:28>>*/  /*<<float.ml:215:14>>*/ caml_array_make
        (sx,  /*<<float.ml:215:28>>*/ caml_floatarray_create(0));
     /*<<float.ml:216:4>>*/ if(0 < sy){
     var _S_ =  /*<<float.ml:216:19>>*/ sx - 1 | 0;
     if(_S_ >= 0){
      var x = 0;
      for(;;){
        /*<<float.ml:218:31>>*/ res[x + 1] = caml_floatarray_make(sy, v);
       var _T_ =  /*<<float.ml:218:42>>*/ x + 1 | 0;
       if(_S_ === x) break;
       x = _T_;
      }
     }
    }
     /*<<float.ml:221:4>>*/ return res;
    /*<<float.ml:221:7>>*/ }
   function init_matrix(sx, sy, f){
     /*<<float.ml:225:4>>*/ if(sy < 0)
      /*<<float.ml:225:19>>*/ Stdlib[1].call(null, "Float.Array.init_matrix");
    var
     res =
        /*<<float.ml:226:28>>*/  /*<<float.ml:226:14>>*/ caml_array_make
        (sx,  /*<<float.ml:226:28>>*/ caml_floatarray_create(0));
     /*<<float.ml:227:4>>*/ if(0 < sy){
     var _P_ =  /*<<float.ml:227:19>>*/ sx - 1 | 0;
     if(_P_ >= 0){
      var x = 0;
      for(;;){
       var
        row =  /*<<float.ml:229:18>>*/ caml_floatarray_create(sy),
        _Q_ =  /*<<float.ml:230:8>>*/ sy - 1 | 0;
       if(_Q_ >= 0){
        var y = 0;
        for(;;){
          /*<<float.ml:231:27>>*/ row[y + 1] = caml_call2(f, x, y);
         var _S_ =  /*<<float.ml:231:34>>*/ y + 1 | 0;
         if(_Q_ === y) break;
         y = _S_;
        }
       }
        /*<<float.ml:233:8>>*/ res[x + 1] = row;
       var _R_ = x + 1 | 0;
       if(_P_ === x) break;
       x = _R_;
      }
     }
    }
     /*<<float.ml:236:4>>*/ return res;
    /*<<float.ml:236:7>>*/ }
   function sub(a, ofs, len){
     /*<<float.ml:239:4>>*/ check(a, ofs, len, "Float.Array.sub");
     /*<<float.ml:240:4>>*/ return caml_floatarray_sub(a, ofs, len) /*<<float.ml:240:24>>*/ ;
   }
   function copy(a){
    var l =  /*<<float.ml:243:4>>*/ a.length - 1;
     /*<<float.ml:244:4>>*/ return 0 === l
            ? empty
            :  /*<<float.ml:245:9>>*/ caml_floatarray_sub(a, 0, l) /*<<float.ml:245:25>>*/ ;
   }
   function append(a1, a2){
    var l1 =  /*<<float.ml:248:4>>*/ a1.length - 1;
     /*<<float.ml:249:4>>*/ return 0 === l1
            ?  /*<<float.ml:249:19>>*/ copy(a2)
            : 0
              === a2.length - 1
              ?  /*<<float.ml:250:31>>*/ caml_floatarray_sub(a1, 0, l1)
              :  /*<<float.ml:251:9>>*/ runtime.caml_floatarray_append(a1, a2) /*<<float.ml:251:26>>*/ ;
   }
   function fill(a, ofs, len, v){
     /*<<float.ml:255:4>>*/ check(a, ofs, len, "Float.Array.fill");
     /*<<float.ml:256:4>>*/ return runtime.caml_floatarray_fill
            (a, ofs, len, v) /*<<float.ml:256:27>>*/ ;
   }
   function blit(src, sofs, dst, dofs, len){
    var cst_Float_array_blit =  /*<<?>>*/ "Float.array.blit";
     /*<<float.ml:259:4>>*/ check(src, sofs, len, cst_Float_array_blit);
     /*<<float.ml:260:4>>*/ check(dst, dofs, len, cst_Float_array_blit);
     /*<<float.ml:261:4>>*/ return runtime.caml_floatarray_blit
            (src, sofs, dst, dofs, len) /*<<float.ml:261:37>>*/ ;
   }
   function to_list(a){
     /*<<float.ml:264:39>>*/ return Stdlib_List[12].call
            (null,
             a.length - 1,
             function(_P_){ /*<<float.ml:264:25>>*/ return a[_P_ + 1];}) /*<<float.ml:264:39>>*/ ;
   }
   function of_list(l){
    var
     result =
        /*<<float.ml:267:24>>*/  /*<<float.ml:267:17>>*/ caml_floatarray_create
        ( /*<<float.ml:267:24>>*/ Stdlib_List[1].call(null, l)),
     i =  /*<<float.ml:273:4>>*/ 0,
     l$0 = l;
    for(;;){
      /*<<float.ml:269:6>>*/ if(! l$0)  /*<<float.ml:270:14>>*/ return result;
     var t =  /*<<float.ml:269:6>>*/ l$0[2], h = l$0[1];
      /*<<float.ml:271:18>>*/ result[i + 1] = h;
     var i$0 =  /*<<float.ml:271:39>>*/ i + 1 | 0;
     i = i$0;
     l$0 = t;
    }
    /*<<float.ml:273:12>>*/ }
   function equal$0(eq, a, b){
     /*<<float.ml:277:4>>*/ if(a.length - 1 !== b.length - 1)
      /*<<float.ml:277:33>>*/ return 0;
    var
     len =  /*<<float.ml:279:4>>*/ a.length - 1,
     i =  /*<<float.ml:280:4>>*/ 0;
    for(;;){
     if
      (i < len &&  /*<<float.ml:280:22>>*/ caml_call2(eq, a[i + 1], b[i + 1])){var i$0 =  /*<<float.ml:280:64>>*/ i + 1 | 0; i = i$0; continue;}
      /*<<float.ml:281:4>>*/ return i === len ? 1 : 0;
    }
    /*<<float.ml:281:12>>*/ }
   function compare(cmp, a, b){
    var
     len_a =  /*<<float.ml:286:4>>*/ a.length - 1,
     len_b = b.length - 1,
     diff =  /*<<float.ml:287:4>>*/ len_a - len_b | 0;
     /*<<float.ml:288:4>>*/ if(0 !== diff)
      /*<<float.ml:288:22>>*/ return 0 <= diff ? 1 : -1 /*<<float.ml:292:6>>*/ ;
    var c =  /*<<float.ml:290:4>>*/ 0, i = 0;
    for(;;){
     if(i < len_a && 0 === c){
      var i$0 =  /*<<float.ml:291:53>>*/ i + 1 | 0;
      c =  /*<<float.ml:291:12>>*/ caml_call2(cmp, a[i + 1], b[i + 1]);
       /*<<float.ml:291:53>>*/ i = i$0;
      continue;
     }
      /*<<float.ml:292:4>>*/ return c;
    }
    /*<<float.ml:292:6>>*/ }
   function iter(f, a){
    var _O_ =  /*<<float.ml:296:4>>*/ a.length - 2 | 0;
    if(_O_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:296:33>>*/ caml_call1(f, a[i + 1]);
      var _P_ =  /*<<float.ml:296:51>>*/ i + 1 | 0;
      if(_O_ === i) break;
      i = _P_;
     }
    }
     /*<<float.ml:296:4>>*/ return 0;
    /*<<float.ml:296:56>>*/ }
   function iter2(f, a, b){
     /*<<float.ml:300:4>>*/ if(a.length - 1 !== b.length - 1)
      /*<<float.ml:301:6>>*/ return Stdlib[1].call
             (null, "Float.Array.iter2: arrays must have the same length") /*<<float.ml:303:75>>*/ ;
    var _N_ =  /*<<float.ml:303:6>>*/ a.length - 2 | 0;
    if(_N_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:303:35>>*/ caml_call2(f, a[i + 1], b[i + 1]);
      var _O_ =  /*<<float.ml:303:70>>*/ i + 1 | 0;
      if(_N_ === i) break;
      i = _O_;
     }
    }
     /*<<float.ml:303:6>>*/ return 0;
    /*<<float.ml:303:75>>*/ }
   function map(f, a){
    var
     l =  /*<<float.ml:306:4>>*/ a.length - 1,
     r =  /*<<float.ml:307:12>>*/ caml_floatarray_create(l),
     _M_ =  /*<<float.ml:308:4>>*/ l - 1 | 0;
    if(_M_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:309:21>>*/ r[i + 1] = caml_call1(f, a[i + 1]);
      var _N_ =  /*<<float.ml:309:41>>*/ i + 1 | 0;
      if(_M_ === i) break;
      i = _N_;
     }
    }
     /*<<float.ml:311:4>>*/ return r;
    /*<<float.ml:311:5>>*/ }
   function map_inplace(f, a){
    var _L_ =  /*<<float.ml:315:4>>*/ a.length - 2 | 0;
    if(_L_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:316:21>>*/ a[i + 1] = caml_call1(f, a[i + 1]);
      var _M_ =  /*<<float.ml:316:41>>*/ i + 1 | 0;
      if(_L_ === i) break;
      i = _M_;
     }
    }
     /*<<float.ml:315:4>>*/ return 0;
    /*<<float.ml:317:8>>*/ }
   function map2(f, a, b){
    var
     la =  /*<<float.ml:320:4>>*/ a.length - 1,
     lb =  /*<<float.ml:321:4>>*/ b.length - 1;
     /*<<float.ml:322:4>>*/ if(la !== lb)
      /*<<float.ml:323:6>>*/ return Stdlib[1].call
             (null, "Float.Array.map2: arrays must have the same length") /*<<float.ml:330:7>>*/ ;
    var
     r =  /*<<float.ml:325:14>>*/ caml_floatarray_create(la),
     _K_ =  /*<<float.ml:326:6>>*/ la - 1 | 0;
    if(_K_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:327:23>>*/ r[i + 1] = caml_call2(f, a[i + 1], b[i + 1]);
      var _L_ =  /*<<float.ml:327:60>>*/ i + 1 | 0;
      if(_K_ === i) break;
      i = _L_;
     }
    }
     /*<<float.ml:329:6>>*/ return r;
    /*<<float.ml:330:7>>*/ }
   function iteri(f, a){
    var _J_ =  /*<<float.ml:334:4>>*/ a.length - 2 | 0;
    if(_J_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:334:33>>*/ caml_call2(f, i, a[i + 1]);
      var _K_ =  /*<<float.ml:334:53>>*/ i + 1 | 0;
      if(_J_ === i) break;
      i = _K_;
     }
    }
     /*<<float.ml:334:4>>*/ return 0;
    /*<<float.ml:334:58>>*/ }
   function mapi(f, a){
    var
     l =  /*<<float.ml:337:4>>*/ a.length - 1,
     r =  /*<<float.ml:338:12>>*/ caml_floatarray_create(l),
     _I_ =  /*<<float.ml:339:4>>*/ l - 1 | 0;
    if(_I_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:340:21>>*/ r[i + 1] = caml_call2(f, i, a[i + 1]);
      var _J_ =  /*<<float.ml:340:43>>*/ i + 1 | 0;
      if(_I_ === i) break;
      i = _J_;
     }
    }
     /*<<float.ml:342:4>>*/ return r;
    /*<<float.ml:342:5>>*/ }
   function mapi_inplace(f, a){
    var _H_ =  /*<<float.ml:346:4>>*/ a.length - 2 | 0;
    if(_H_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:347:21>>*/ a[i + 1] = caml_call2(f, i, a[i + 1]);
      var _I_ =  /*<<float.ml:347:43>>*/ i + 1 | 0;
      if(_H_ === i) break;
      i = _I_;
     }
    }
     /*<<float.ml:346:4>>*/ return 0;
    /*<<float.ml:348:8>>*/ }
   function fold_left(f, x, a){
    var _F_ =  /*<<float.ml:353:4>>*/ a.length - 2 | 0;
    if(_F_ < 0)
     var r$0 = x;
    else{
     var r = x, i = 0;
     for(;;){
      var
       _G_ =  /*<<float.ml:354:11>>*/ caml_call2(f, r, a[i + 1]),
       _H_ =  /*<<float.ml:354:32>>*/ i + 1 | 0;
      if(_F_ === i){var r$0 = _G_; break;}
      r = _G_;
      i = _H_;
     }
    }
     /*<<float.ml:356:4>>*/ return r$0;
    /*<<float.ml:356:6>>*/ }
   function fold_right(f, a, x){
    var _D_ =  /*<<float.ml:361:4>>*/ a.length - 2 | 0;
    if(_D_ < 0)
     var r$0 = x;
    else{
     var r = x, i = _D_;
     for(;;){
      var
       _E_ =  /*<<float.ml:362:11>>*/ caml_call2(f, a[i + 1], r),
       _F_ =  /*<<float.ml:362:32>>*/ i - 1 | 0;
      if(0 === i){var r$0 = _E_; break;}
      r = _E_;
      i = _F_;
     }
    }
     /*<<float.ml:364:4>>*/ return r$0;
    /*<<float.ml:364:6>>*/ }
   function exists(p, a){
    var
     n =  /*<<float.ml:368:4>>*/ a.length - 1,
     i =  /*<<float.ml:373:4>>*/ 0;
    for(;;){
      /*<<float.ml:370:6>>*/ if(i === n)  /*<<float.ml:370:20>>*/ return 0;
      /*<<float.ml:371:14>>*/ if(caml_call1(p, a[i + 1]))
       /*<<float.ml:371:38>>*/ return 1;
     var i$0 =  /*<<float.ml:372:11>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<float.ml:373:10>>*/ }
   function for_all(p, a){
    var
     n =  /*<<float.ml:377:4>>*/ a.length - 1,
     i =  /*<<float.ml:382:4>>*/ 0;
    for(;;){
      /*<<float.ml:379:6>>*/ if(i === n)  /*<<float.ml:379:20>>*/ return 1;
      /*<<float.ml:380:14>>*/ if(! caml_call1(p, a[i + 1]))
       /*<<float.ml:381:11>>*/ return 0;
     var i$0 =  /*<<float.ml:380:38>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<float.ml:382:10>>*/ }
   function mem(x, a){
    var
     n =  /*<<float.ml:386:4>>*/ a.length - 1,
     i =  /*<<float.ml:392:4>>*/ 0;
    for(;;){
      /*<<float.ml:388:6>>*/ if(i === n)  /*<<float.ml:388:20>>*/ return 0;
      /*<<float.ml:389:14>>*/ if(0 === caml_float_compare(a[i + 1], x))
       /*<<float.ml:389:56>>*/ return 1;
     var i$0 =  /*<<float.ml:390:11>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<float.ml:392:10>>*/ }
   function mem_ieee(x, a){
    var
     n =  /*<<float.ml:396:4>>*/ a.length - 1,
     i =  /*<<float.ml:402:4>>*/ 0;
    for(;;){
      /*<<float.ml:398:6>>*/ if(i === n)  /*<<float.ml:398:20>>*/ return 0;
      /*<<float.ml:399:34>>*/ if(x === a[i + 1])
       /*<<float.ml:399:40>>*/ return 1;
     var i$0 =  /*<<float.ml:400:11>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<float.ml:402:10>>*/ }
   function find_opt(p, a){
    var
     n =  /*<<float.ml:406:4>>*/ a.length - 1,
     i =  /*<<float.ml:414:4>>*/ 0;
    for(;;){
      /*<<float.ml:408:6>>*/ if(i === n)  /*<<float.ml:408:20>>*/ return 0;
     var x =  /*<<float.ml:410:16>>*/ a[i + 1];
      /*<<float.ml:411:11>>*/ if(caml_call1(p, x))
       /*<<float.ml:411:20>>*/ return [0, x];
     var i$0 =  /*<<float.ml:412:13>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<float.ml:414:10>>*/ }
   function find_index(p, a){
    var
     n =  /*<<float.ml:418:4>>*/ a.length - 1,
     i =  /*<<float.ml:423:4>>*/ 0;
    for(;;){
      /*<<float.ml:420:6>>*/ if(i === n)  /*<<float.ml:420:20>>*/ return 0;
      /*<<float.ml:421:14>>*/ if(caml_call1(p, a[i + 1]))
       /*<<float.ml:421:38>>*/ return [0, i];
     var i$0 =  /*<<float.ml:422:11>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<float.ml:423:10>>*/ }
   function find_map(f, a){
    var
     n =  /*<<float.ml:427:4>>*/ a.length - 1,
     i =  /*<<float.ml:435:4>>*/ 0;
    for(;;){
      /*<<float.ml:429:6>>*/ if(i === n)  /*<<float.ml:429:20>>*/ return 0;
     var r =  /*<<float.ml:431:14>>*/ caml_call1(f, a[i + 1]);
      /*<<float.ml:431:32>>*/ if(r)  /*<<float.ml:433:25>>*/ return r;
     var i$0 =  /*<<float.ml:432:18>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<float.ml:435:10>>*/ }
   function find_mapi(f, a){
    var
     n =  /*<<float.ml:439:4>>*/ a.length - 1,
     i =  /*<<float.ml:447:4>>*/ 0;
    for(;;){
      /*<<float.ml:441:6>>*/ if(i === n)  /*<<float.ml:441:20>>*/ return 0;
     var r =  /*<<float.ml:443:14>>*/ caml_call2(f, i, a[i + 1]);
      /*<<float.ml:443:34>>*/ if(r)  /*<<float.ml:445:25>>*/ return r;
     var i$0 =  /*<<float.ml:444:18>>*/ i + 1 | 0;
     i = i$0;
    }
    /*<<float.ml:447:10>>*/ }
   var
    Bottom =
       /*<<float.ml:201:22>>*/ [248,
       "Stdlib.Float.Array.Bottom",
       runtime.caml_fresh_oo_id(0)],
    _a_ = [0, "float.ml", 482, 6];
   function sort(cmp, a){
    function maxson(l, i){
     var i31 =  /*<<float.ml:453:6>>*/ ((i + i | 0) + i | 0) + 1 | 0;
      /*<<float.ml:455:6>>*/ if((i31 + 2 | 0) < l){
      var
       _y_ =  /*<<float.ml:455:24>>*/ i31 + 1 | 0,
       _B_ =  /*<<float.ml:456:27>>*/ caml_check_bound(a, _y_)[_y_ + 1],
       x =
          /*<<float.ml:456:15>>*/  /*<<float.ml:456:11>>*/ caml_call2
           (cmp,
             /*<<float.ml:456:15>>*/ caml_check_bound(a, i31)[i31 + 1],
            _B_)
          < 0
          ? i31 + 1 | 0
          : i31,
       _z_ =  /*<<float.ml:457:8>>*/ i31 + 2 | 0,
       _C_ =  /*<<float.ml:457:26>>*/ caml_check_bound(a, _z_)[_z_ + 1],
       x$0 =
          /*<<float.ml:457:15>>*/  /*<<float.ml:457:11>>*/ caml_call2
           (cmp,  /*<<float.ml:457:15>>*/ caml_check_bound(a, x)[x + 1], _C_)
          < 0
          ? i31 + 2 | 0
          : x;
       /*<<float.ml:458:8>>*/ return x$0;
     }
      /*<<float.ml:460:8>>*/ if((i31 + 1 | 0) < l){
      var
       _A_ = i31 + 1 | 0,
       _D_ =  /*<<float.ml:460:40>>*/ caml_check_bound(a, _A_)[_A_ + 1];
       /*<<float.ml:460:28>>*/ if
       (0
        >
          /*<<float.ml:460:24>>*/ caml_call2
          (cmp,
            /*<<float.ml:460:28>>*/ caml_check_bound(a, i31)[i31 + 1],
           _D_))
        /*<<float.ml:461:13>>*/ return i31 + 1 | 0;
     }
      /*<<float.ml:462:13>>*/ if(i31 < l)  /*<<float.ml:462:29>>*/ return i31;
      /*<<float.ml:462:38>>*/ throw caml_maybe_attach_backtrace
            ([0, Bottom, i], 1);
     /*<<float.ml:462:54>>*/ }
    var
     l =  /*<<float.ml:490:4>>*/ a.length - 1,
     _q_ =  /*<<float.ml:491:4>>*/ ((l + 1 | 0) / 3 | 0) - 1 | 0;
    if(_q_ >= 0){
     var i$5 = _q_;
     for(;;){
      var e$1 =  /*<<float.ml:491:52>>*/ caml_check_bound(a, i$5)[i$5 + 1];
       /*<<float.ml:473:24>>*/ try{
       var i = i$5;
       for(;;){
        var j =  /*<<float.ml:465:14>>*/ maxson(l, i);
         /*<<float.ml:466:13>>*/ if
         (0
          >=
            /*<<float.ml:466:9>>*/ caml_call2
            (cmp,  /*<<float.ml:466:13>>*/ caml_check_bound(a, j)[j + 1], e$1)){
          /*<<float.ml:469:15>>*/ caml_check_bound(a, i)[i + 1] = e$1;
         break;
        }
        var _u_ =  /*<<float.ml:467:16>>*/ caml_check_bound(a, j)[j + 1];
         /*<<float.ml:467:8>>*/ caml_check_bound(a, i)[i + 1] = _u_;
         /*<<float.ml:467:25>>*/ i = j;
       }
      }
      catch(exn$0){
       var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
       if(exn[1] !== Bottom) throw caml_maybe_attach_backtrace(exn, 0);
       var i$0 = exn[2];
        /*<<float.ml:473:63>>*/ caml_check_bound(a, i$0)[i$0 + 1] = e$1;
      }
      var _y_ =  /*<<float.ml:491:61>>*/ i$5 - 1 | 0;
      if(0 === i$5) break;
      i$5 = _y_;
     }
    }
    var _r_ =  /*<<float.ml:492:4>>*/ l - 1 | 0;
    if(_r_ >= 2){
     var i$4 = _r_;
     a:
     for(;;){
      var e$0 =  /*<<float.ml:493:14>>*/ caml_check_bound(a, i$4)[i$4 + 1];
       /*<<float.ml:494:14>>*/ a[i$4 + 1] = caml_check_bound(a, 0)[1];
       /*<<float.ml:479:21>>*/ try{
       var i$1 = 0;
       for(;;){
        var
         j$0 =  /*<<float.ml:475:14>>*/ maxson(i$4, i$1),
         _v_ =  /*<<float.ml:476:14>>*/ caml_check_bound(a, j$0)[j$0 + 1];
         /*<<float.ml:476:6>>*/ caml_check_bound(a, i$1)[i$1 + 1] = _v_;
         /*<<float.ml:476:23>>*/ i$1 = j$0;
       }
      }
      catch(exn){
       var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
       if(exn$0[1] !== Bottom) throw caml_maybe_attach_backtrace(exn$0, 0);
       var i$2 = exn$0[2], i$3 =  /*<<float.ml:495:6>>*/ i$2;
       for(;;){
        var father =  /*<<float.ml:481:6>>*/ (i$3 - 1 | 0) / 3 | 0;
         /*<<float.ml:482:6>>*/ if(i$3 === father)
         throw caml_maybe_attach_backtrace([0, Assert_failure, _a_], 1);
         /*<<float.ml:483:13>>*/ if
         (0
          <=
            /*<<float.ml:483:9>>*/ caml_call2
            (cmp,
              /*<<float.ml:483:13>>*/ caml_check_bound(a, father)[father + 1],
             e$0))
          /*<<float.ml:486:15>>*/ caml_check_bound(a, i$3)[i$3 + 1] = e$0;
        else{
         var
          _w_ =
             /*<<float.ml:484:16>>*/ caml_check_bound(a, father)[father + 1];
          /*<<float.ml:484:8>>*/ caml_check_bound(a, i$3)[i$3 + 1] = _w_;
          /*<<float.ml:484:30>>*/ if(0 < father){i$3 = father; continue;}
          /*<<float.ml:485:51>>*/ caml_check_bound(a, 0)[1] = e$0;
        }
        var _x_ =  /*<<float.ml:495:30>>*/ i$4 - 1 | 0;
        if(2 === i$4) break a;
        i$4 = _x_;
        break;
       }
      }
     }
    }
    var _s_ =  /*<<float.ml:497:4>>*/ 1 < l ? 1 : 0;
    if(_s_){
     var e =  /*<<float.ml:497:27>>*/ caml_check_bound(a, 1)[2];
      /*<<float.ml:497:48>>*/ a[2] = caml_check_bound(a, 0)[1];
      /*<<float.ml:497:59>>*/ a[1] = e;
     var _t_ =  /*<<float.ml:497:68>>*/ 0;
    }
    else
     var _t_ =  /*<<float.ml:497:4>>*/ _s_;
    return _t_;
    /*<<float.ml:497:69>>*/ }
   function stable_sort(cmp, a){
    function merge(src1ofs, src1len, src2, src2ofs, src2len, dst, dstofs){
     var
      src1r =  /*<<float.ml:503:6>>*/ src1ofs + src1len | 0,
      src2r = src2ofs + src2len | 0,
      s2$1 =
         /*<<float.ml:520:46>>*/ caml_check_bound(src2, src2ofs)[src2ofs + 1],
      s1$1 =
         /*<<float.ml:520:22>>*/ caml_check_bound(a, src1ofs)[src1ofs + 1],
      i1 =  /*<<float.ml:520:37>>*/ src1ofs,
      s1 = s1$1,
      i2 = src2ofs,
      s2 = s2$1,
      d = dstofs;
     for(;;)
       /*<<float.ml:505:11>>*/ if(0 < caml_call2(cmp, s1, s2)){
        /*<<float.ml:513:10>>*/ caml_check_bound(dst, d)[d + 1] = s2;
       var i2$0 =  /*<<float.ml:513:22>>*/ i2 + 1 | 0;
        /*<<float.ml:515:10>>*/ if(i2$0 >= src2r)
         /*<<float.ml:518:12>>*/ return blit
                (a, i1, dst, d + 1 | 0, src1r - i1 | 0) /*<<float.ml:520:72>>*/ ;
       var
        d$0 =  /*<<float.ml:516:12>>*/ d + 1 | 0,
        s2$0 =  /*<<float.ml:516:26>>*/ caml_check_bound(src2, i2$0)[i2$0 + 1];
        /*<<float.ml:516:39>>*/ i2 = i2$0;
       s2 = s2$0;
       d = d$0;
      }
      else{
        /*<<float.ml:506:10>>*/ caml_check_bound(dst, d)[d + 1] = s1;
       var i1$0 =  /*<<float.ml:506:22>>*/ i1 + 1 | 0;
        /*<<float.ml:508:10>>*/ if(i1$0 >= src1r)
         /*<<float.ml:511:12>>*/ return blit
                (src2, i2, dst, d + 1 | 0, src2r - i2 | 0) /*<<float.ml:520:72>>*/ ;
       var
        d$1 =  /*<<float.ml:509:12>>*/ d + 1 | 0,
        s1$0 =  /*<<float.ml:509:20>>*/ caml_check_bound(a, i1$0)[i1$0 + 1];
        /*<<float.ml:509:30>>*/ i1 = i1$0;
       s1 = s1$0;
       d = d$1;
      }
     /*<<float.ml:520:72>>*/ }
    function isortto(srcofs, dst, dstofs, len){
     var _l_ =  /*<<float.ml:523:6>>*/ len - 1 | 0;
     if(_l_ >= 0){
      var i = 0;
      a:
      for(;;){
       var
        _m_ =  /*<<float.ml:524:8>>*/ srcofs + i | 0,
        e =  /*<<float.ml:524:16>>*/ caml_check_bound(a, _m_)[_m_ + 1],
        j =  /*<<float.ml:526:8>>*/ (dstofs + i | 0) - 1 | 0;
       for(;;){
        if
         (dstofs <= j
          &&
           0
           <
             /*<<float.ml:526:31>>*/ caml_call2
             (cmp,
               /*<<float.ml:526:35>>*/ caml_check_bound(dst, j)[j + 1],
              e)){
         var
          _n_ =  /*<<float.ml:527:39>>*/ j + 1 | 0,
          _p_ =  /*<<float.ml:527:27>>*/ caml_check_bound(dst, j)[j + 1];
          /*<<float.ml:527:10>>*/ caml_check_bound(dst, _n_)[_n_ + 1] = _p_;
         var j$0 =  /*<<float.ml:527:39>>*/ j - 1 | 0;
         j = j$0;
         continue;
        }
        var _o_ =  /*<<float.ml:530:8>>*/ j + 1 | 0;
        caml_check_bound(dst, _o_)[_o_ + 1] = e;
        var _q_ =  /*<<float.ml:530:26>>*/ i + 1 | 0;
        if(_l_ === i) break a;
        i = _q_;
        break;
       }
      }
     }
      /*<<float.ml:523:6>>*/ return 0;
     /*<<float.ml:531:10>>*/ }
    function sortto(srcofs, dst, dstofs, len){
      /*<<float.ml:534:6>>*/ if(len <= 5)
       /*<<float.ml:534:28>>*/ return isortto(srcofs, dst, dstofs, len) /*<<float.ml:540:9>>*/ ;
     var
      l1 =  /*<<float.ml:534:63>>*/ len / 2 | 0,
      l2 =  /*<<float.ml:536:8>>*/ len - l1 | 0;
      /*<<float.ml:537:8>>*/ sortto(srcofs + l1 | 0, dst, dstofs + l1 | 0, l2);
      /*<<float.ml:538:8>>*/ sortto(srcofs, a, srcofs + l2 | 0, l1);
      /*<<float.ml:538:40>>*/ return merge
             (srcofs + l2 | 0, l1, dst, dstofs + l1 | 0, l2, dst, dstofs) /*<<float.ml:540:9>>*/ ;
    }
    var l =  /*<<float.ml:542:4>>*/ a.length - 1;
     /*<<float.ml:543:4>>*/ if(l <= 5)
      /*<<float.ml:543:24>>*/ return isortto(0, a, 0, l) /*<<float.ml:550:7>>*/ ;
    var
     l1 =  /*<<float.ml:543:45>>*/ l / 2 | 0,
     l2 =  /*<<float.ml:545:6>>*/ l - l1 | 0,
     t =  /*<<float.ml:546:14>>*/ caml_floatarray_create(l2);
     /*<<float.ml:547:6>>*/ sortto(l1, t, 0, l2);
     /*<<float.ml:548:6>>*/ sortto(0, a, l2, l1);
     /*<<float.ml:548:22>>*/ return merge(l2, l1, t, 0, l2, a, 0) /*<<float.ml:550:7>>*/ ;
   }
   function shuffle(rand, a){
    var _k_ =  /*<<float.ml:556:4>>*/ a.length - 2 | 0;
    if(_k_ >= 1){
     var i = _k_;
     for(;;){
      var
       j =  /*<<float.ml:557:14>>*/ caml_call1(rand, i + 1 | 0),
       v =  /*<<float.ml:558:14>>*/ a[i + 1];
       /*<<float.ml:559:21>>*/ a[i + 1] = caml_check_bound(a, j)[j + 1];
       /*<<float.ml:560:6>>*/ a[j + 1] = v;
      var _l_ =  /*<<float.ml:560:22>>*/ i - 1 | 0;
      if(1 === i) break;
      i = _l_;
     }
    }
     /*<<float.ml:556:4>>*/ return 0;
    /*<<float.ml:561:8>>*/ }
   function to_seq(a){
    function aux(i, param){
      /*<<float.ml:566:6>>*/ if(i >= a.length - 1)
       /*<<float.ml:570:11>>*/ return 0;
     var
      x =  /*<<float.ml:568:16>>*/ a[i + 1],
      _j_ =  /*<<float.ml:569:21>>*/ i + 1 | 0;
      /*<<float.ml:569:30>>*/ return [0,
             x,
             function(_k_){ /*<<float.ml:569:21>>*/ return aux(_j_, _k_);}] /*<<float.ml:569:30>>*/ ;
     /*<<float.ml:570:18>>*/ }
     /*<<float.ml:572:4>>*/ return function(_j_){
      /*<<?>>*/ return aux(0, _j_);} /*<<float.ml:572:4>>*/ ;
    /*<<float.ml:572:9>>*/ }
   function to_seqi(a){
    function aux(i, param){
      /*<<float.ml:577:6>>*/ if(i >= a.length - 1)
       /*<<float.ml:581:11>>*/ return 0;
     var
      x =  /*<<float.ml:579:16>>*/ a[i + 1],
      _i_ =  /*<<float.ml:580:25>>*/ i + 1 | 0;
      /*<<float.ml:580:34>>*/ return [0,
             [0, i, x],
             function(_j_){ /*<<float.ml:580:25>>*/ return aux(_i_, _j_);}] /*<<float.ml:580:34>>*/ ;
     /*<<float.ml:581:18>>*/ }
     /*<<float.ml:583:4>>*/ return function(_i_){
      /*<<?>>*/ return aux(0, _i_);} /*<<float.ml:583:4>>*/ ;
    /*<<float.ml:583:9>>*/ }
   function of_seq(i$2){
    var
     l =
        /*<<float.ml:597:12>>*/ Stdlib_Seq[5].call
        (null,
         function(acc, x){
           /*<<float.ml:597:40>>*/ return [0, x, acc];
          /*<<float.ml:597:46>>*/ },
         0,
         i$2),
     len =  /*<<float.ml:587:14>>*/ Stdlib_List[1].call(null, l),
     a =  /*<<float.ml:588:12>>*/ caml_floatarray_create(len),
     i$1 =  /*<<float.ml:593:4>>*/ len - 1 | 0,
     i = i$1,
     param = l;
    for(;;){
      /*<<float.ml:589:17>>*/ if(! param)  /*<<float.ml:590:14>>*/ return a;
     var tl =  /*<<float.ml:589:17>>*/ param[2], hd = param[1];
      /*<<float.ml:591:18>>*/ a[i + 1] = hd;
     var i$0 =  /*<<float.ml:591:35>>*/ i - 1 | 0;
     i = i$0;
     param = tl;
    }
    /*<<float.ml:598:17>>*/ }
   function map_to_array(f, a){
    var l =  /*<<float.ml:602:4>>*/ a.length - 1;
     /*<<float.ml:603:4>>*/ if(0 === l)  /*<<float.ml:603:18>>*/ return [0];
    var
     r =
        /*<<float.ml:604:27>>*/  /*<<float.ml:604:14>>*/ caml_array_make
        (l,  /*<<float.ml:604:27>>*/ caml_call1(f, a[1])),
     _h_ =  /*<<float.ml:605:6>>*/ l - 1 | 0;
    if(_h_ >= 1){
     var i = 1;
     for(;;){
       /*<<float.ml:606:29>>*/ r[i + 1] = caml_call1(f, a[i + 1]);
      var _i_ =  /*<<float.ml:606:49>>*/ i + 1 | 0;
      if(_h_ === i) break;
      i = _i_;
     }
    }
     /*<<float.ml:608:6>>*/ return r;
    /*<<float.ml:609:7>>*/ }
   function map_from_array(f, a){
    var
     l =  /*<<float.ml:612:4>>*/ a.length - 1,
     r =  /*<<float.ml:613:12>>*/ caml_floatarray_create(l),
     _g_ =  /*<<float.ml:614:4>>*/ l - 1 | 0;
    if(_g_ >= 0){
     var i = 0;
     for(;;){
       /*<<float.ml:615:21>>*/ r[i + 1] = caml_call1(f, a[i + 1]);
      var _h_ =  /*<<float.ml:615:47>>*/ i + 1 | 0;
      if(_g_ === i) break;
      i = _h_;
     }
    }
     /*<<float.ml:617:4>>*/ return r;
    /*<<float.ml:617:5>>*/ }
   var
    Stdlib_Float =
       /*<<float.ml:201:22>>*/ [0,
       0.,
       1.,
       -1.,
       succ,
       pred,
       infinity,
       neg_infinity,
       nan,
       NaN,
       nan,
       3.141592653589793,
       max_float,
       min_float,
       epsilon,
       is_finite,
       is_infinite,
       is_nan,
       is_integer,
       of_string_opt,
       to_string,
       caml_float_compare,
       equal,
       min,
       max,
       min_max,
       min_num,
       max_num,
       min_max_num,
       seeded_hash,
       hash,
       [0,
        function(_g_){ /*<<?>>*/ return _g_.length - 1;},
        function(_g_, _f_){return caml_check_bound(_g_, _f_)[_f_ + 1];},
        function(_f_, _d_, _e_){
         caml_check_bound(_f_, _d_)[_d_ + 1] = _e_;
         return 0;
        },
        caml_floatarray_make,
        caml_floatarray_create,
        init,
        make_matrix,
        init_matrix,
        append,
        caml_floatarray_concat,
        sub,
        copy,
        fill,
        blit,
        to_list,
        of_list,
        equal$0,
        compare,
        iter,
        iteri,
        map,
        map_inplace,
        mapi,
        mapi_inplace,
        fold_left,
        fold_right,
        iter2,
        map2,
        for_all,
        exists,
        mem,
        mem_ieee,
        find_opt,
        find_index,
        find_map,
        find_mapi,
        sort,
        stable_sort,
        stable_sort,
        shuffle,
        to_seq,
        to_seqi,
        of_seq,
        map_to_array,
        map_from_array],
       [0,
        function(_d_){return _d_.length - 1;},
        function(_d_, _c_){return caml_check_bound(_d_, _c_)[_c_ + 1];},
        function(_c_, _a_, _b_){
         caml_check_bound(_c_, _a_)[_a_ + 1] = _b_;
         return 0;
        },
        caml_floatarray_make,
        caml_floatarray_create,
        init,
        make_matrix,
        init_matrix,
        append,
        caml_floatarray_concat,
        sub,
        copy,
        fill,
        blit,
        to_list,
        of_list,
        equal$0,
        compare,
        iter,
        iteri,
        map,
        map_inplace,
        mapi,
        mapi_inplace,
        fold_left,
        fold_right,
        iter2,
        map2,
        for_all,
        exists,
        mem,
        mem_ieee,
        find_opt,
        find_index,
        find_map,
        find_mapi,
        sort,
        stable_sort,
        stable_sort,
        shuffle,
        to_seq,
        to_seqi,
        of_seq,
        map_to_array,
        map_from_array]];
    /*<<float.ml:201:22>>*/ runtime.caml_register_global
    (23, Stdlib_Float, "Stdlib__Float");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Int32
//# unitInfo: Requires: Stdlib, Stdlib__Sys
//# shape: Stdlib__Int32:[N,N,N,F(2),F(2),F(1)*,F(1)*,F(1),N,N,F(1)*,F(1),F(1),F(1)*,F(2)*,F(2)*,F(2),F(2),F(2),F(2)*,F(1)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_greaterequal = runtime.caml_greaterequal,
    caml_hash = runtime.caml_hash,
    caml_int_compare = runtime.caml_int_compare,
    caml_lessequal = runtime.caml_lessequal,
    caml_lessthan = runtime.caml_lessthan,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_mul = runtime.caml_mul,
    caml_wrap_exception = runtime.caml_wrap_exception,
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Assert_failure = global_data.Assert_failure;
   function succ(n){ /*<<int32.ml:48:21>>*/ return n + 1 | 0;}
   function pred(n){ /*<<int32.ml:49:21>>*/ return n - 1 | 0;}
   function abs(n){
     /*<<int32.ml:50:15>>*/ return caml_greaterequal(n, 0) ? n : - n | 0 /*<<int32.ml:50:40>>*/ ;
   }
   function lognot(n){ /*<<int32.ml:53:29>>*/ return n ^ -1;}
   var match =  /*<<?>>*/ Stdlib_Sys[10];
   if(32 === match)
    var
     max_int =  /*<<int32.ml:58:20>>*/ Stdlib[19],
     unsigned_to_int =
        /*<<int32.ml:59:6>>*/ function(n){
         /*<<int32.ml:60:11>>*/ if
         (caml_greaterequal(n, 0)
          &&  /*<<int32.ml:60:22>>*/ caml_lessequal(n, max_int))
          /*<<int32.ml:61:10>>*/ return [0, n];
         /*<<int32.ml:63:10>>*/ return 0;
        /*<<int32.ml:63:14>>*/ };
   else{
     /*<<?>>*/ if(64 !== match)
      /*<<int32.ml:69:6>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, [0, "int32.ml", 69, 6]], 1);
    var
     unsigned_to_int =
        /*<<int32.ml:67:6>>*/ function(n){
         /*<<int32.ml:67:15>>*/ return [0, n & -1];
        /*<<int32.ml:67:40>>*/ };
   }
   function to_string(n){
     /*<<int32.ml:72:18>>*/ return runtime.caml_format_int("%d", n) /*<<int32.ml:72:31>>*/ ;
   }
   function of_string_opt(s){
     /*<<int32.ml:77:2>>*/ try{
     var _a_ =  /*<<int32.ml:77:11>>*/ [0, runtime.caml_int_of_string(s)];
     return _a_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] === Stdlib[7])  /*<<int32.ml:78:20>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<int32.ml:78:24>>*/ }
   var equal =  /*<<?>>*/ runtime.caml_equal;
   function unsigned_compare(n, m){
    var
     y =  /*<<int32.ml:86:26>>*/ m + 2147483648 | 0,
     x =  /*<<int32.ml:86:10>>*/ n + 2147483648 | 0;
     /*<<int32.ml:82:28>>*/ return caml_int_compare(x, y) /*<<int32.ml:86:41>>*/ ;
   }
   function unsigned_lt(n, m){
     /*<<int32.ml:89:2>>*/ return caml_lessthan
            (n + 2147483648 | 0, m + 2147483648 | 0) /*<<int32.ml:89:31>>*/ ;
   }
   function min(x, y){
     /*<<int32.ml:91:21>>*/ return caml_lessequal(x, y) ? x : y /*<<int32.ml:91:41>>*/ ;
   }
   function max(x, y){
     /*<<int32.ml:92:21>>*/ return caml_greaterequal(x, y) ? x : y /*<<int32.ml:92:41>>*/ ;
   }
   var zero =  /*<<?>>*/ 0, one = 1;
   function unsigned_div(n, d){
     /*<<int32.ml:98:5>>*/ if(caml_lessthan(d, 0))
      /*<<int32.ml:99:7>>*/ return unsigned_lt(n, d) ? zero : one /*<<int32.ml:103:41>>*/ ;
    var
     q =  /*<<int32.ml:101:23>>*/ runtime.caml_div(n >>> 1 | 0, d) << 1,
     r =  /*<<int32.ml:102:18>>*/ n - caml_mul(q, d) | 0;
     /*<<int32.ml:103:7>>*/ return unsigned_lt(r, d) ? q : q + 1 | 0 /*<<int32.ml:103:41>>*/ ;
   }
   function unsigned_rem(n, d){
     /*<<int32.ml:106:13>>*/ return n
           -
             /*<<int32.ml:106:8>>*/ caml_mul
             ( /*<<int32.ml:106:13>>*/ unsigned_div(n, d), d)
           | 0 /*<<int32.ml:106:34>>*/ ;
   }
   function seeded_hash(seed, x){
     /*<<int32.ml:110:25>>*/ return caml_hash(10, 100, seed, x) /*<<int32.ml:110:56>>*/ ;
   }
   function hash(x){
     /*<<int32.ml:111:13>>*/ return caml_hash(10, 100, 0, x) /*<<int32.ml:111:41>>*/ ;
   }
   var
    Stdlib_Int32 =
       /*<<?>>*/ [0,
       zero,
       one,
       -1,
       unsigned_div,
       unsigned_rem,
       succ,
       pred,
       abs,
       2147483647,
       -2147483648,
       lognot,
       unsigned_to_int,
       of_string_opt,
       to_string,
       caml_int_compare,
       unsigned_compare,
       equal,
       min,
       max,
       seeded_hash,
       hash];
   runtime.caml_register_global(15, Stdlib_Int32, "Stdlib__Int32");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Int64
//# unitInfo: Requires: Stdlib
//# shape: Stdlib__Int64:[N,N,N,F(2),F(2),F(1)*,F(1)*,F(1),N,N,F(1)*,F(1),F(1),F(1)*,F(2)*,F(2)*,F(2),F(2),F(2),F(2)*,F(1)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_greaterequal = runtime.caml_greaterequal,
    caml_hash = runtime.caml_hash,
    caml_int64_add = runtime.caml_int64_add,
    caml_int64_compare = runtime.caml_int64_compare,
    caml_int64_create_lo_mi_hi = runtime.caml_int64_create_lo_mi_hi,
    caml_int64_mul = runtime.caml_int64_mul,
    caml_int64_sub = runtime.caml_int64_sub,
    caml_lessequal = runtime.caml_lessequal,
    caml_lessthan = runtime.caml_lessthan,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_wrap_exception = runtime.caml_wrap_exception,
    _a_ = caml_int64_create_lo_mi_hi(1, 0, 0),
    zero = caml_int64_create_lo_mi_hi(0, 0, 0),
    one = caml_int64_create_lo_mi_hi(1, 0, 0),
    minus_one = caml_int64_create_lo_mi_hi(16777215, 16777215, 65535),
    min_int = caml_int64_create_lo_mi_hi(0, 0, 32768),
    max_int = caml_int64_create_lo_mi_hi(16777215, 16777215, 32767),
    Stdlib = runtime.caml_get_global_data().Stdlib,
    _b_ = caml_int64_create_lo_mi_hi(1, 0, 0),
    _c_ = caml_int64_create_lo_mi_hi(0, 0, 0),
    _d_ = caml_int64_create_lo_mi_hi(16777215, 16777215, 65535);
   function succ(n){
     /*<<int64.ml:46:13>>*/ return caml_int64_add(n, _a_) /*<<int64.ml:46:21>>*/ ;
   }
   function pred(n){
     /*<<int64.ml:47:13>>*/ return caml_int64_sub(n, _b_) /*<<int64.ml:47:21>>*/ ;
   }
   function abs(n){
     /*<<int64.ml:48:15>>*/ return caml_greaterequal(n, _c_)
            ? n
            :  /*<<int64.ml:48:35>>*/ runtime.caml_int64_neg(n) /*<<int64.ml:48:40>>*/ ;
   }
   function lognot(n){
     /*<<int64.ml:51:15>>*/ return runtime.caml_int64_xor(n, _d_) /*<<int64.ml:51:29>>*/ ;
   }
   var
    max_int$0 =
       /*<<int64.ml:54:16>>*/ runtime.caml_int64_of_int32(Stdlib[19]),
    _e_ =  /*<<int64.ml:55:2>>*/ caml_int64_create_lo_mi_hi(0, 0, 0);
   function unsigned_to_int(n){
     /*<<int64.ml:56:7>>*/ if
     (caml_greaterequal(n, _e_)
      &&  /*<<int64.ml:56:18>>*/ caml_lessequal(n, max_int$0))
      /*<<int64.ml:57:6>>*/ return [0, runtime.caml_int64_to_int32(n)];
     /*<<int64.ml:59:6>>*/ return 0;
    /*<<int64.ml:59:10>>*/ }
   function to_string(n){
     /*<<int64.ml:62:18>>*/ return runtime.caml_int64_format("%d", n) /*<<int64.ml:62:31>>*/ ;
   }
   function of_string_opt(s){
     /*<<int64.ml:67:2>>*/ try{
     var _e_ =  /*<<int64.ml:67:11>>*/ [0, runtime.caml_int64_of_string(s)];
     return _e_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] === Stdlib[7])  /*<<int64.ml:68:20>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<int64.ml:68:24>>*/ }
   function compare(x, y){
     /*<<int64.ml:79:28>>*/ return caml_int64_compare(x, y) /*<<int64.ml:79:46>>*/ ;
   }
   var equal =  /*<<int64.ml:55:2>>*/ runtime.caml_equal;
   function unsigned_compare(n, m){
    var
     y =  /*<<int64.ml:83:26>>*/ caml_int64_sub(m, min_int),
     x =  /*<<int64.ml:83:10>>*/ caml_int64_sub(n, min_int);
     /*<<int64.ml:79:28>>*/ return caml_int64_compare(x, y) /*<<int64.ml:83:41>>*/ ;
   }
   function unsigned_lt(n, m){
     /*<<int64.ml:86:2>>*/ return caml_lessthan
            (caml_int64_sub(n, min_int),
              /*<<int64.ml:86:18>>*/ caml_int64_sub(m, min_int)) /*<<int64.ml:86:31>>*/ ;
   }
   function min(x, y){
     /*<<int64.ml:88:21>>*/ return caml_lessequal(x, y) ? x : y /*<<int64.ml:88:41>>*/ ;
   }
   function max(x, y){
     /*<<int64.ml:89:21>>*/ return caml_greaterequal(x, y) ? x : y /*<<int64.ml:89:41>>*/ ;
   }
   function unsigned_div(n, d){
     /*<<int64.ml:95:5>>*/ if(caml_lessthan(d, zero))
      /*<<int64.ml:96:7>>*/ return unsigned_lt(n, d) ? zero : one /*<<int64.ml:100:41>>*/ ;
    var
     q =
        /*<<int64.ml:98:28>>*/  /*<<int64.ml:98:12>>*/ runtime.caml_int64_shift_left
        ( /*<<int64.ml:98:23>>*/ runtime.caml_int64_div
          ( /*<<int64.ml:98:28>>*/ runtime.caml_int64_shift_right_unsigned
            (n, 1),
           d),
         1),
     r =
        /*<<int64.ml:99:18>>*/  /*<<int64.ml:99:12>>*/ caml_int64_sub
        (n,  /*<<int64.ml:99:18>>*/ caml_int64_mul(q, d));
     /*<<int64.ml:100:7>>*/ return unsigned_lt(r, d)
            ? q
            :  /*<<int64.ml:46:13>>*/ caml_int64_add(q, _a_) /*<<int64.ml:100:41>>*/ ;
   }
   function unsigned_rem(n, d){
     /*<<int64.ml:103:13>>*/ return  /*<<int64.ml:103:2>>*/ caml_int64_sub
            (n,
              /*<<int64.ml:103:8>>*/ caml_int64_mul
              ( /*<<int64.ml:103:13>>*/ unsigned_div(n, d), d)) /*<<int64.ml:103:34>>*/ ;
   }
   function seeded_hash(seed, x){
     /*<<int64.ml:107:25>>*/ return caml_hash(10, 100, seed, x) /*<<int64.ml:107:56>>*/ ;
   }
   function hash(x){
     /*<<int64.ml:108:13>>*/ return caml_hash(10, 100, 0, x) /*<<int64.ml:108:41>>*/ ;
   }
    /*<<int64.ml:55:2>>*/ runtime.caml_register_global
    (12,
     [0,
      zero,
      one,
      minus_one,
      unsigned_div,
      unsigned_rem,
      succ,
      pred,
      abs,
      max_int,
      min_int,
      lognot,
      unsigned_to_int,
      of_string_opt,
      to_string,
      compare,
      unsigned_compare,
      equal,
      min,
      max,
      seeded_hash,
      hash],
     "Stdlib__Int64");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Nativeint
//# unitInfo: Requires: Stdlib, Stdlib__Sys
//# shape: Stdlib__Nativeint:[N,N,N,F(2),F(2),F(1)*,F(1)*,F(1),N,N,N,F(1)*,F(1),F(1),F(1)*,F(2)*,F(2)*,F(2)*,F(2),F(2),F(2)*,F(1)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_greaterequal = runtime.caml_greaterequal,
    caml_hash = runtime.caml_hash,
    caml_int_compare = runtime.caml_int_compare,
    caml_lessequal = runtime.caml_lessequal,
    caml_lessthan = runtime.caml_lessthan,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_mul = runtime.caml_mul,
    caml_wrap_exception = runtime.caml_wrap_exception,
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Sys = global_data.Stdlib__Sys;
   function succ(n){ /*<<nativeint.ml:44:21>>*/ return n + 1 | 0;}
   function pred(n){ /*<<nativeint.ml:45:21>>*/ return n - 1 | 0;}
   function abs(n){
     /*<<nativeint.ml:46:15>>*/ return caml_greaterequal(n, 0) ? n : - n | 0 /*<<nativeint.ml:46:40>>*/ ;
   }
   var
    size =  /*<<?>>*/ Stdlib_Sys[10],
    min_int =  /*<<nativeint.ml:48:14>>*/ 1 << (size - 1 | 0),
    max_int =  /*<<nativeint.ml:49:14>>*/ min_int - 1 | 0;
   function lognot(n){ /*<<nativeint.ml:50:29>>*/ return n ^ -1;}
   var max_int$0 =  /*<<nativeint.ml:53:16>>*/ Stdlib[19];
   function unsigned_to_int(n){
     /*<<nativeint.ml:55:7>>*/ if
     (caml_greaterequal(n, 0)
      &&  /*<<nativeint.ml:55:18>>*/ caml_lessequal(n, max_int$0))
      /*<<nativeint.ml:56:6>>*/ return [0, n];
     /*<<nativeint.ml:58:6>>*/ return 0;
    /*<<nativeint.ml:58:10>>*/ }
   function to_string(n){
     /*<<nativeint.ml:61:18>>*/ return runtime.caml_format_int("%d", n) /*<<nativeint.ml:61:31>>*/ ;
   }
   function of_string_opt(s){
     /*<<nativeint.ml:66:2>>*/ try{
     var _a_ =  /*<<nativeint.ml:66:11>>*/ [0, runtime.caml_int_of_string(s)];
     return _a_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] === Stdlib[7])  /*<<nativeint.ml:67:20>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<nativeint.ml:67:24>>*/ }
   function equal(x, y){
     /*<<nativeint.ml:71:28>>*/ return 0 === caml_int_compare(x, y) ? 1 : 0 /*<<nativeint.ml:72:37>>*/ ;
    /*<<nativeint.ml:72:41>>*/ }
   function unsigned_compare(n, m){
    var
     y =  /*<<nativeint.ml:75:26>>*/ m - min_int | 0,
     x =  /*<<nativeint.ml:75:10>>*/ n - min_int | 0;
     /*<<nativeint.ml:71:28>>*/ return caml_int_compare(x, y) /*<<nativeint.ml:75:41>>*/ ;
   }
   function unsigned_lt(n, m){
     /*<<nativeint.ml:78:2>>*/ return caml_lessthan
            (n - min_int | 0, m - min_int | 0) /*<<nativeint.ml:78:31>>*/ ;
   }
   function min(x, y){
     /*<<nativeint.ml:80:21>>*/ return caml_lessequal(x, y) ? x : y /*<<nativeint.ml:80:41>>*/ ;
   }
   function max(x, y){
     /*<<nativeint.ml:81:21>>*/ return caml_greaterequal(x, y) ? x : y /*<<nativeint.ml:81:41>>*/ ;
   }
   var zero =  /*<<?>>*/ 0, one = 1;
   function unsigned_div(n, d){
     /*<<nativeint.ml:87:5>>*/ if(caml_lessthan(d, 0))
      /*<<nativeint.ml:88:7>>*/ return unsigned_lt(n, d) ? zero : one /*<<nativeint.ml:92:41>>*/ ;
    var
     q =  /*<<nativeint.ml:90:23>>*/ runtime.caml_div(n >>> 1 | 0, d) << 1,
     r =  /*<<nativeint.ml:91:18>>*/ n - caml_mul(q, d) | 0;
     /*<<nativeint.ml:92:7>>*/ return unsigned_lt(r, d) ? q : q + 1 | 0 /*<<nativeint.ml:92:41>>*/ ;
   }
   function unsigned_rem(n, d){
     /*<<nativeint.ml:95:13>>*/ return n
           -
             /*<<nativeint.ml:95:8>>*/ caml_mul
             ( /*<<nativeint.ml:95:13>>*/ unsigned_div(n, d), d)
           | 0 /*<<nativeint.ml:95:34>>*/ ;
   }
   function seeded_hash(seed, x){
     /*<<nativeint.ml:99:25>>*/ return caml_hash(10, 100, seed, x) /*<<nativeint.ml:99:56>>*/ ;
   }
   function hash(x){
     /*<<nativeint.ml:100:13>>*/ return caml_hash(10, 100, 0, x) /*<<nativeint.ml:100:41>>*/ ;
   }
    /*<<nativeint.ml:54:2>>*/ runtime.caml_register_global
    (13,
     [0,
      zero,
      one,
      -1,
      unsigned_div,
      unsigned_rem,
      succ,
      pred,
      abs,
      size,
      max_int,
      min_int,
      lognot,
      unsigned_to_int,
      of_string_opt,
      to_string,
      caml_int_compare,
      unsigned_compare,
      equal,
      min,
      max,
      seeded_hash,
      hash],
     "Stdlib__Nativeint");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Lexing
//# unitInfo: Requires: Stdlib, Stdlib__Bytes, Stdlib__Int, Stdlib__Sys
//# shape: Stdlib__Lexing:[N,F(2)*,F(2),F(2)*,F(2),F(2),F(1)*,F(1),F(2),F(1)*,F(1)*,F(1)*,F(1)*,F(1),F(1),F(3),F(3),F(2),F(2),F(3),F(3)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_bytes_get = runtime.caml_bytes_get,
    caml_check_bound = runtime.caml_check_bound,
    caml_create_bytes = runtime.caml_create_bytes,
    caml_ml_bytes_length = runtime.caml_ml_bytes_length;
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Bytes = global_data.Stdlib__Bytes,
    Stdlib = global_data.Stdlib,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Int = global_data.Stdlib__Int,
    cst = "",
    dummy_pos = [0, cst, 0, 0, -1];
   function engine(tbl, state, buf){
    var
     result =
        /*<<lexing.ml:65:15>>*/ runtime.caml_lex_engine(tbl, state, buf),
     _h_ =  /*<<lexing.ml:66:2>>*/ 0 <= result,
     _i_ = _h_ ? buf[12] !== dummy_pos : _h_;
    if(_i_){
      /*<<lexing.ml:66:53>>*/ buf[11] = buf[12];
     var _g_ =  /*<<lexing.ml:68:4>>*/ buf[12];
     buf[12] = [0, _g_[1], _g_[2], _g_[3], buf[4] + buf[6] | 0];
    }
     /*<<lexing.ml:71:2>>*/ return result;
    /*<<lexing.ml:71:8>>*/ }
   function new_engine(tbl, state, buf){
    var
     result =
        /*<<lexing.ml:75:15>>*/ runtime.caml_new_lex_engine(tbl, state, buf),
     _f_ =  /*<<lexing.ml:76:2>>*/ 0 <= result,
     _g_ = _f_ ? buf[12] !== dummy_pos : _f_;
    if(_g_){
      /*<<lexing.ml:76:53>>*/ buf[11] = buf[12];
     var _e_ =  /*<<lexing.ml:78:4>>*/ buf[12];
     buf[12] = [0, _e_[1], _e_[2], _e_[3], buf[4] + buf[6] | 0];
    }
     /*<<lexing.ml:81:2>>*/ return result;
    /*<<lexing.ml:81:8>>*/ }
   var zero_pos =  /*<<?>>*/ [0, cst, 1, 0, 0];
   function from_function(opt, read_fun){
    var
     with_positions =  /*<<lexing.ml:147:18>>*/ opt ? opt[1] : 1,
     _c_ =  /*<<lexing.ml:148:2>>*/ with_positions ? zero_pos : dummy_pos,
     _d_ = with_positions ? zero_pos : dummy_pos,
     aux_buffer =  /*<<lexing.ml:148:31>>*/ caml_create_bytes(512);
     /*<<lexing.ml:149:17>>*/ return [0,
            function(lexbuf){
             var
              read =
                 /*<<lexing.ml:84:2>>*/  /*<<lexing.ml:85:4>>*/ caml_call2
                 (read_fun,
                  aux_buffer,
                   /*<<lexing.ml:84:2>>*/ caml_ml_bytes_length(aux_buffer)),
              n =  /*<<lexing.ml:86:2>>*/ 0 < read ? read : (lexbuf[9] = 1, 0);
              /*<<lexing.ml:96:2>>*/ if
              (caml_ml_bytes_length(lexbuf[2]) < (lexbuf[3] + n | 0)){
               /*<<lexing.ml:96:69>>*/ if
               (((lexbuf[3] - lexbuf[5] | 0) + n | 0)
                <= caml_ml_bytes_length(lexbuf[2]))
                /*<<lexing.ml:100:9>>*/ Stdlib_Bytes[11].call
                (null,
                 lexbuf[2],
                 lexbuf[5],
                 lexbuf[2],
                 0,
                 lexbuf[3] - lexbuf[5] | 0);
              else{
               var
                newlen =
                   /*<<lexing.ml:106:13>>*/  /*<<lexing.ml:111:8>>*/ Stdlib_Int
                    [10].call
                   (null,
                    2
                    *  /*<<lexing.ml:106:13>>*/ caml_ml_bytes_length(lexbuf[2])
                    | 0,
                    Stdlib_Sys[13]);
                /*<<lexing.ml:112:6>>*/ if
                (newlen < ((lexbuf[3] - lexbuf[5] | 0) + n | 0))
                 /*<<lexing.ml:113:11>>*/ Stdlib[2].call
                 (null, "Lexing.lex_refill: cannot grow buffer");
               var
                newbuf =  /*<<lexing.ml:114:19>>*/ caml_create_bytes(newlen);
                /*<<lexing.ml:116:6>>*/ Stdlib_Bytes[11].call
                (null,
                 lexbuf[2],
                 lexbuf[5],
                 newbuf,
                 0,
                 lexbuf[3] - lexbuf[5] | 0);
                /*<<lexing.ml:118:64>>*/ lexbuf[2] = newbuf;
              }
              var s =  /*<<lexing.ml:123:4>>*/ lexbuf[5];
               /*<<lexing.ml:124:4>>*/ lexbuf[4] = lexbuf[4] + s | 0;
               /*<<lexing.ml:125:4>>*/ lexbuf[6] = lexbuf[6] - s | 0;
               /*<<lexing.ml:126:4>>*/ lexbuf[5] = 0;
               /*<<lexing.ml:127:4>>*/ lexbuf[7] = lexbuf[7] - s | 0;
               /*<<lexing.ml:128:4>>*/ lexbuf[3] = lexbuf[3] - s | 0;
              var
               t =  /*<<lexing.ml:129:4>>*/ lexbuf[10],
               _d_ =  /*<<lexing.ml:130:4>>*/ t.length - 2 | 0;
              if(_d_ >= 0){
               var i = 0;
               for(;;){
                var
                 v =  /*<<lexing.ml:131:14>>*/ caml_check_bound(t, i)[i + 1];
                 /*<<lexing.ml:132:6>>*/ if(0 <= v)
                  /*<<lexing.ml:133:8>>*/ caml_check_bound(t, i)[i + 1] = v - s | 0;
                var _e_ =  /*<<lexing.ml:132:6>>*/ i + 1 | 0;
                if(_d_ === i) break;
                i = _e_;
               }
              }
             }
              /*<<lexing.ml:137:2>>*/ Stdlib_Bytes[11].call
              (null, aux_buffer, 0, lexbuf[2], lexbuf[3], n);
              /*<<lexing.ml:137:67>>*/ lexbuf[3] = lexbuf[3] + n | 0;
             return 0;
            },
             /*<<lexing.ml:149:17>>*/ caml_create_bytes(1024),
            0,
            0,
            0,
            0,
            0,
            0,
            0,
            [0],
            _d_,
            _c_] /*<<lexing.ml:148:49>>*/ ;
    /*<<lexing.ml:160:3>>*/ }
   function from_channel(with_positions, ic){
     /*<<lexing.ml:163:2>>*/ return from_function
            (with_positions,
             function(buf, n){
               /*<<lexing.ml:163:46>>*/ return Stdlib[84].call
                      (null, ic, buf, 0, n) /*<<lexing.ml:163:62>>*/ ;
             }) /*<<lexing.ml:163:63>>*/ ;
   }
   function from_string(opt, s){
    var
     with_positions =  /*<<lexing.ml:165:16>>*/ opt ? opt[1] : 1,
     lex_buffer =  /*<<lexing.ml:169:19>>*/ Stdlib_Bytes[5].call(null, s),
     _b_ =  /*<<lexing.ml:170:2>>*/ with_positions ? zero_pos : dummy_pos,
     _c_ = with_positions ? zero_pos : dummy_pos;
    return [0,
            function(lexbuf){
              /*<<lexing.ml:170:33>>*/ lexbuf[9] = 1;
             return 0;
             /*<<lexing.ml:170:63>>*/ },
            lex_buffer,
             /*<<lexing.ml:170:2>>*/ caml_ml_bytes_length(lex_buffer),
            0,
            0,
            0,
            0,
            0,
            1,
            [0],
            _c_,
            _b_];
    /*<<lexing.ml:182:3>>*/ }
   function set_position(lexbuf, position){
     /*<<lexing.ml:185:2>>*/ lexbuf[12] =
     [0, lexbuf[12][1], position[2], position[3], position[4]];
     /*<<lexing.ml:186:2>>*/ lexbuf[4] = position[4];
    return 0;
    /*<<lexing.ml:186:41>>*/ }
   function set_filename(lexbuf, fname){
    var _b_ =  /*<<lexing.ml:189:2>>*/ lexbuf[12];
    lexbuf[12] = [0, fname, _b_[2], _b_[3], _b_[4]];
    return 0;
    /*<<lexing.ml:189:65>>*/ }
   function with_positions(lexbuf){
     /*<<lexing.ml:191:28>>*/ return lexbuf[12] !== dummy_pos ? 1 : 0;
    /*<<lexing.ml:191:58>>*/ }
   function lexeme(lexbuf){
    var len =  /*<<lexing.ml:194:2>>*/ lexbuf[6] - lexbuf[5] | 0;
     /*<<lexing.ml:195:2>>*/ return Stdlib_Bytes[8].call
            (null, lexbuf[2], lexbuf[5], len) /*<<lexing.ml:195:61>>*/ ;
   }
   function sub_lexeme(lexbuf, i1, i2){
    var len =  /*<<lexing.ml:198:2>>*/ i2 - i1 | 0;
     /*<<lexing.ml:199:2>>*/ return Stdlib_Bytes[8].call
            (null, lexbuf[2], i1, len) /*<<lexing.ml:199:43>>*/ ;
   }
   function sub_lexeme_opt(lexbuf, i1, i2){
     /*<<lexing.ml:202:2>>*/ if(0 > i1)  /*<<lexing.ml:205:11>>*/ return 0;
    var len =  /*<<lexing.ml:202:18>>*/ i2 - i1 | 0;
     /*<<lexing.ml:204:9>>*/ return [0,
            Stdlib_Bytes[8].call(null, lexbuf[2], i1, len)] /*<<lexing.ml:204:52>>*/ ;
    /*<<lexing.ml:207:5>>*/ }
   function sub_lexeme_char(lexbuf, i){
     /*<<lexing.ml:209:31>>*/ return caml_bytes_get(lexbuf[2], i) /*<<lexing.ml:209:60>>*/ ;
   }
   function sub_lexeme_char_opt(lexbuf, i){
     /*<<lexing.ml:212:2>>*/ return 0 <= i
            ? [0,  /*<<lexing.ml:213:9>>*/ caml_bytes_get(lexbuf[2], i)]
            : 0 /*<<lexing.ml:215:8>>*/ ;
   }
   function lexeme_char(lexbuf, i){
     /*<<lexing.ml:219:2>>*/ return caml_bytes_get
            (lexbuf[2], lexbuf[5] + i | 0) /*<<lexing.ml:219:56>>*/ ;
   }
   function lexeme_start(lexbuf){
     /*<<lexing.ml:221:26>>*/ return lexbuf[11][4];
    /*<<lexing.ml:221:53>>*/ }
   function lexeme_end(lexbuf){
     /*<<lexing.ml:222:24>>*/ return lexbuf[12][4];
    /*<<lexing.ml:222:50>>*/ }
   function lexeme_start_p(lexbuf){
     /*<<lexing.ml:224:28>>*/ return lexbuf[11];
    /*<<lexing.ml:224:46>>*/ }
   function lexeme_end_p(lexbuf){
     /*<<lexing.ml:225:26>>*/ return lexbuf[12];
    /*<<lexing.ml:225:43>>*/ }
   function new_line(lexbuf){
    var
     lcp =  /*<<lexing.ml:228:2>>*/ lexbuf[12],
     _a_ =  /*<<lexing.ml:229:2>>*/ lcp !== dummy_pos ? 1 : 0,
     _b_ =
       _a_
        ? (lexbuf[12] = [0, lcp[1], lcp[2] + 1 | 0, lcp[4], lcp[4]], 0)
        : _a_;
    return _b_;
    /*<<lexing.ml:234:7>>*/ }
   function flush_input(lb){
     /*<<lexing.ml:241:2>>*/ lb[6] = 0;
     /*<<lexing.ml:242:2>>*/ lb[4] = 0;
    var lcp =  /*<<lexing.ml:243:2>>*/ lb[12];
     /*<<lexing.ml:244:2>>*/ if(lcp !== dummy_pos)
      /*<<lexing.ml:245:4>>*/ lb[12] =
      [0, lcp[1], zero_pos[2], zero_pos[3], zero_pos[4]];
     /*<<lexing.ml:246:2>>*/ lb[3] = 0;
    return 0;
    /*<<lexing.ml:246:25>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (7,
     [0,
      dummy_pos,
      from_channel,
      from_string,
      from_function,
      set_position,
      set_filename,
      with_positions,
      lexeme,
      lexeme_char,
      lexeme_start,
      lexeme_end,
      lexeme_start_p,
      lexeme_end_p,
      new_line,
      flush_input,
      sub_lexeme,
      sub_lexeme_opt,
      sub_lexeme_char,
      sub_lexeme_char_opt,
      engine,
      new_engine],
     "Stdlib__Lexing");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Parsing
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Lexing, Stdlib__Obj
//# shape: Stdlib__Parsing:[F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),F(1),N,F(1),N,F(4),F(2),F(1),F(1)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_check_bound = runtime.caml_check_bound,
    caml_fresh_oo_id = runtime.caml_fresh_oo_id,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Obj = global_data.Stdlib__Obj,
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib_Lexing = global_data.Stdlib__Lexing,
    YYexit = [248, "Stdlib.Parsing.YYexit", caml_fresh_oo_id(0)],
    Parse_error = [248, "Stdlib.Parsing.Parse_error", caml_fresh_oo_id(0)],
    env =
       /*<<parsing.ml:90:14>>*/ [0,
       caml_array_make(100, 0),
        /*<<parsing.ml:91:14>>*/ caml_array_make(100, 0),
        /*<<parsing.ml:92:23>>*/ caml_array_make(100, Stdlib_Lexing[1]),
        /*<<parsing.ml:93:21>>*/ caml_array_make(100, Stdlib_Lexing[1]),
       100,
       0,
       0,
       0,
       Stdlib_Lexing[1],
       Stdlib_Lexing[1],
       0,
       0,
       0,
       0,
       0,
       0],
    dummy =  /*<<parsing.ml:90:30>>*/ 0;
   function grow_stacks(param){
    var
     oldsize =  /*<<parsing.ml:108:2>>*/ env[5],
     newsize =  /*<<parsing.ml:109:2>>*/ oldsize * 2 | 0,
     new_s =  /*<<parsing.ml:110:14>>*/ caml_array_make(newsize, 0),
     new_v =  /*<<parsing.ml:111:14>>*/ caml_array_make(newsize, 0),
     new_start =
        /*<<parsing.ml:112:18>>*/ caml_array_make(newsize, Stdlib_Lexing[1]),
     new_end =
        /*<<parsing.ml:113:16>>*/ caml_array_make(newsize, Stdlib_Lexing[1]);
     /*<<parsing.ml:114:4>>*/ Stdlib_Array[9].call
     (null, env[1], 0, new_s, 0, oldsize);
     /*<<parsing.ml:114:44>>*/ env[1] = new_s;
     /*<<parsing.ml:116:4>>*/ Stdlib_Array[9].call
     (null, env[2], 0, new_v, 0, oldsize);
     /*<<parsing.ml:116:44>>*/ env[2] = new_v;
     /*<<parsing.ml:118:4>>*/ Stdlib_Array[9].call
     (null, env[3], 0, new_start, 0, oldsize);
     /*<<parsing.ml:118:57>>*/ env[3] = new_start;
     /*<<parsing.ml:120:4>>*/ Stdlib_Array[9].call
     (null, env[4], 0, new_end, 0, oldsize);
     /*<<parsing.ml:120:53>>*/ env[4] = new_end;
     /*<<parsing.ml:122:4>>*/ env[5] = newsize;
    /*<<parsing.ml:122:28>>*/ }
   function clear_parser(param){
     /*<<parsing.ml:125:2>>*/ Stdlib_Array[8].call(null, env[2], 0, env[5], 0);
     /*<<parsing.ml:125:54>>*/ env[8] = 0;
    return 0;
    /*<<parsing.ml:126:25>>*/ }
   var
    current_lookahead_fun =
       /*<<parsing.ml:90:30>>*/ [0,
       function(param){
         /*<<parsing.ml:128:52>>*/ return 0;
        /*<<parsing.ml:128:57>>*/ }];
   function yyparse(tables, start, lexer, lexbuf){
    var
     init_asp =  /*<<parsing.ml:154:2>>*/ env[11],
     init_sp = env[14],
     init_stackbase = env[6],
     init_state = env[15],
     init_curr_char = env[7],
     init_lval = env[8],
     init_errflag = env[16];
     /*<<parsing.ml:161:2>>*/ env[6] = env[14] + 1 | 0;
     /*<<parsing.ml:162:2>>*/ env[7] = start;
     /*<<parsing.ml:163:2>>*/ env[10] = lexbuf[12];
     /*<<parsing.ml:164:2>>*/ try{
     var cmd =  /*<<parsing.ml:165:4>>*/ 0, arg = 0;
     for(;;)
       /*<<parsing.ml:132:10>>*/ switch
       (runtime.caml_parse_engine(tables, env, cmd, arg)){
        case 0:
         var arg$0 =  /*<<parsing.ml:134:24>>*/ caml_call1(lexer, lexbuf);
          /*<<parsing.ml:135:8>>*/ env[9] = lexbuf[11];
          /*<<parsing.ml:136:8>>*/ env[10] = lexbuf[12];
          /*<<parsing.ml:137:8>>*/ cmd = 1;
         arg = arg$0;
         break;
        case 1:
          /*<<parsing.ml:139:8>>*/ throw caml_maybe_attach_backtrace
                (Parse_error, 1);
        case 2:
          /*<<parsing.ml:148:8>>*/ grow_stacks(0);
          /*<<parsing.ml:148:21>>*/ cmd = 2;
         arg = 0;
         break;
        case 3:
          /*<<parsing.ml:150:8>>*/ grow_stacks(0);
          /*<<parsing.ml:150:21>>*/ cmd = 3;
         arg = 0;
         break;
        case 4:
          /*<<parsing.ml:132:41>>*/ try{
          var
           _c_ = env[13],
           _d_ =
              /*<<parsing.ml:143:39>>*/ caml_call1
              (caml_check_bound(tables[1], _c_)[_c_ + 1], env);
          cmd = 4;
          arg = _d_;
         }
         catch(exn$0){
          var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
          if(exn !== Parse_error) throw caml_maybe_attach_backtrace(exn, 0);
           /*<<parsing.ml:145:12>>*/ cmd = 5;
          arg = 0;
         }
         break;
        default:
          /*<<parsing.ml:152:8>>*/ caml_call1(tables[14], "syntax error");
          /*<<parsing.ml:152:44>>*/ cmd = 5;
         arg = 0;
      }
    }
    catch(exn){
     var
      exn$0 =  /*<<?>>*/ caml_wrap_exception(exn),
      curr_char =  /*<<parsing.ml:167:4>>*/ env[7];
      /*<<parsing.ml:168:4>>*/ env[11] = init_asp;
      /*<<parsing.ml:169:4>>*/ env[14] = init_sp;
      /*<<parsing.ml:170:4>>*/ env[6] = init_stackbase;
      /*<<parsing.ml:171:4>>*/ env[15] = init_state;
      /*<<parsing.ml:172:4>>*/ env[7] = init_curr_char;
      /*<<parsing.ml:173:4>>*/ env[8] = init_lval;
      /*<<parsing.ml:174:4>>*/ env[16] = init_errflag;
      /*<<parsing.ml:175:4>>*/ if(exn$0[1] === YYexit){
      var v = exn$0[2];
       /*<<parsing.ml:177:8>>*/ return v;
     }
      /*<<parsing.ml:179:8>>*/ current_lookahead_fun[1] =
      function(tok){
        /*<<parsing.ml:181:15>>*/ if(! Stdlib_Obj[1].call(null, tok))
         /*<<parsing.ml:183:17>>*/ return caml_check_bound(tables[2], tok)
                 [tok + 1]
                === curr_char
                ? 1
                : 0 /*<<parsing.ml:183:52>>*/ ;
       var _d_ =  /*<<parsing.ml:182:38>>*/ runtime.caml_obj_tag(tok);
        /*<<parsing.ml:182:17>>*/ return caml_check_bound(tables[3], _d_)
                [_d_ + 1]
               === curr_char
               ? 1
               : 0 /*<<parsing.ml:182:50>>*/ ;
       /*<<parsing.ml:183:64>>*/ };
      /*<<parsing.ml:184:8>>*/ throw caml_maybe_attach_backtrace(exn$0, 0);
    }
    /*<<parsing.ml:184:17>>*/ }
   function peek_val(env, n){
    var _c_ =  /*<<parsing.ml:187:2>>*/ env[11] - n | 0;
     /*<<parsing.ml:187:12>>*/ return caml_check_bound(env[2], _c_)[_c_ + 1] /*<<parsing.ml:187:37>>*/ ;
   }
   function symbol_start_pos(param){
    var i$1 =  /*<<parsing.ml:198:2>>*/ env[12], i = i$1;
    for(;;){
      /*<<parsing.ml:191:4>>*/ if(0 >= i){
      var _c_ =  /*<<parsing.ml:191:19>>*/ env[11];
      return caml_check_bound(env[4], _c_)[_c_ + 1] /*<<parsing.ml:191:47>>*/ ;
     }
     var
      _a_ =  /*<<parsing.ml:192:9>>*/ (env[11] - i | 0) + 1 | 0,
      st =  /*<<parsing.ml:193:15>>*/ caml_check_bound(env[3], _a_)[_a_ + 1],
      _b_ =  /*<<parsing.ml:194:6>>*/ (env[11] - i | 0) + 1 | 0,
      en =  /*<<parsing.ml:194:15>>*/ caml_check_bound(env[4], _b_)[_b_ + 1];
      /*<<parsing.ml:195:9>>*/ if(runtime.caml_notequal(st, en))
       /*<<parsing.ml:195:23>>*/ return st;
     var i$0 =  /*<<parsing.ml:195:31>>*/ i - 1 | 0;
     i = i$0;
    }
    /*<<parsing.ml:198:19>>*/ }
   function symbol_end_pos(param){
    var _a_ =  /*<<parsing.ml:200:24>>*/ env[11];
    return caml_check_bound(env[4], _a_)[_a_ + 1] /*<<parsing.ml:200:52>>*/ ;
   }
   function rhs_start_pos(n){
    var _a_ =  /*<<parsing.ml:201:22>>*/ env[11] - (env[12] - n | 0) | 0;
    return caml_check_bound(env[3], _a_)[_a_ + 1] /*<<parsing.ml:201:73>>*/ ;
   }
   function rhs_end_pos(n){
    var _a_ =  /*<<parsing.ml:202:20>>*/ env[11] - (env[12] - n | 0) | 0;
    return caml_check_bound(env[4], _a_)[_a_ + 1] /*<<parsing.ml:202:69>>*/ ;
   }
   function symbol_start(param){
     /*<<parsing.ml:204:22>>*/ return symbol_start_pos(0)[4] /*<<parsing.ml:204:43>>*/ ;
    /*<<parsing.ml:204:52>>*/ }
   function symbol_end(param){
     /*<<parsing.ml:205:20>>*/ return symbol_end_pos(0)[4] /*<<parsing.ml:205:39>>*/ ;
    /*<<parsing.ml:205:48>>*/ }
   function rhs_start(n){
     /*<<parsing.ml:206:18>>*/ return rhs_start_pos(n)[4] /*<<parsing.ml:206:35>>*/ ;
    /*<<parsing.ml:206:44>>*/ }
   function rhs_end(n){
     /*<<parsing.ml:207:16>>*/ return rhs_end_pos(n)[4] /*<<parsing.ml:207:31>>*/ ;
    /*<<parsing.ml:207:40>>*/ }
   function is_current_lookahead(tok){
     /*<<parsing.ml:210:2>>*/ return caml_call1(current_lookahead_fun[1], tok) /*<<parsing.ml:210:40>>*/ ;
   }
   function parse_error(param){
     /*<<parsing.ml:212:31>>*/ return 0;
    /*<<parsing.ml:212:33>>*/ }
   var
    Stdlib_Parsing =
       /*<<parsing.ml:90:30>>*/ [0,
       symbol_start,
       symbol_end,
       rhs_start,
       rhs_end,
       symbol_start_pos,
       symbol_end_pos,
       rhs_start_pos,
       rhs_end_pos,
       clear_parser,
       Parse_error,
       runtime.caml_set_parser_trace,
       YYexit,
       yyparse,
       peek_val,
       is_current_lookahead,
       parse_error];
   runtime.caml_register_global(7, Stdlib_Parsing, "Stdlib__Parsing");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Repr
//# unitInfo: Requires: Stdlib
//# shape: Stdlib__Repr:[F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    Stdlib = runtime.caml_get_global_data().Stdlib,
    min = Stdlib[16],
    max = Stdlib[17];
   runtime.caml_register_global(1, [0, min, max], "Stdlib__Repr");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Set
//# unitInfo: Requires: Stdlib, Stdlib__List, Stdlib__Seq
//# shape: Stdlib__Set:[F(1)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib_List = global_data.Stdlib__List,
    Assert_failure = global_data.Assert_failure,
    _a_ = [0, 0, 0, 0],
    _b_ = [0, 0, 0],
    _c_ = [0, "set.ml", 571, 18],
    Stdlib_Set =
      [0,
       function(Ord){
        function height(param){
          /*<<set.ml:81:17>>*/ if(! param)  /*<<set.ml:82:17>>*/ return 0;
         var h =  /*<<set.ml:81:17>>*/ param[4];
          /*<<set.ml:83:20>>*/ return h;
         /*<<set.ml:83:21>>*/ }
        function create(l, v, r){
          /*<<set.ml:91:6>>*/ if(l)
          var h = l[4], hl =  /*<<set.ml:91:53>>*/ h;
         else
          var hl =  /*<<set.ml:91:37>>*/ 0;
          /*<<set.ml:92:6>>*/ if(r)
          var h$0 = r[4], hr =  /*<<set.ml:92:53>>*/ h$0;
         else
          var hr =  /*<<set.ml:92:37>>*/ 0;
         var _y_ =  /*<<set.ml:93:6>>*/ hr <= hl ? hl + 1 | 0 : hr + 1 | 0;
         return [0, l, v, r, _y_];
         /*<<set.ml:93:60>>*/ }
        function bal(l, v, r){
          /*<<set.ml:101:6>>*/ if(l)
          var h = l[4], hl =  /*<<set.ml:101:53>>*/ h;
         else
          var hl =  /*<<set.ml:101:37>>*/ 0;
          /*<<set.ml:102:6>>*/ if(r)
          var h$0 = r[4], hr =  /*<<set.ml:102:53>>*/ h$0;
         else
          var hr =  /*<<set.ml:102:37>>*/ 0;
         var cst_Set_bal =  /*<<?>>*/ "Set.bal";
          /*<<set.ml:103:6>>*/ if((hr + 2 | 0) < hl){
           /*<<set.ml:103:26>>*/ if(! l)
            /*<<set.ml:105:19>>*/ return Stdlib[1].call(null, cst_Set_bal) /*<<set.ml:128:62>>*/ ;
          var
           lr =  /*<<set.ml:103:26>>*/ l[3],
           lv = l[2],
           ll = l[1],
           _u_ =  /*<<set.ml:107:28>>*/ height(lr);
           /*<<set.ml:107:15>>*/ if(_u_ <= height(ll))
            /*<<set.ml:108:27>>*/ return  /*<<set.ml:108:42>>*/ create
                   (ll, lv,  /*<<set.ml:108:27>>*/ create(lr, v, r)) /*<<set.ml:128:62>>*/ ;
           /*<<set.ml:109:17>>*/ if(! lr)
            /*<<set.ml:111:25>>*/ return Stdlib[1].call(null, cst_Set_bal) /*<<set.ml:128:62>>*/ ;
          var
           lrr =  /*<<set.ml:109:17>>*/ lr[3],
           lrv = lr[2],
           lrl = lr[1],
           _v_ =  /*<<set.ml:113:48>>*/ create(lrr, v, r);
           /*<<set.ml:113:25>>*/ return  /*<<set.ml:113:43>>*/ create
                  ( /*<<set.ml:113:25>>*/ create(ll, lv, lrl), lrv, _v_) /*<<set.ml:128:62>>*/ ;
         }
          /*<<set.ml:115:15>>*/ if((hl + 2 | 0) >= hr){
          var _y_ =  /*<<set.ml:128:8>>*/ hr <= hl ? hl + 1 | 0 : hr + 1 | 0;
          return [0, l, v, r, _y_];
         }
          /*<<set.ml:115:35>>*/ if(! r)
           /*<<set.ml:117:19>>*/ return Stdlib[1].call(null, cst_Set_bal) /*<<set.ml:128:62>>*/ ;
         var
          rr =  /*<<set.ml:115:35>>*/ r[3],
          rv = r[2],
          rl = r[1],
          _w_ =  /*<<set.ml:119:28>>*/ height(rl);
          /*<<set.ml:119:15>>*/ if(_w_ <= height(rr))
           /*<<set.ml:120:21>>*/ return  /*<<set.ml:120:36>>*/ create
                  ( /*<<set.ml:120:21>>*/ create(l, v, rl), rv, rr) /*<<set.ml:128:62>>*/ ;
          /*<<set.ml:121:17>>*/ if(! rl)
           /*<<set.ml:123:25>>*/ return Stdlib[1].call(null, cst_Set_bal) /*<<set.ml:128:62>>*/ ;
         var
          rlr =  /*<<set.ml:121:17>>*/ rl[3],
          rlv = rl[2],
          rll = rl[1],
          _x_ =  /*<<set.ml:125:46>>*/ create(rlr, rv, rr);
          /*<<set.ml:125:25>>*/ return  /*<<set.ml:125:41>>*/ create
                 ( /*<<set.ml:125:25>>*/ create(l, v, rll), rlv, _x_) /*<<set.ml:128:62>>*/ ;
        }
        function add(x, t){
          /*<<set.ml:132:16>>*/ if(! t)
           /*<<set.ml:133:17>>*/ return [0, 0, x, 0, 1];
         var
          r =  /*<<set.ml:132:16>>*/ t[3],
          v = t[2],
          l = t[1],
          c =  /*<<set.ml:135:18>>*/ caml_call2(Ord[1], x, v);
          /*<<set.ml:136:10>>*/ if(0 === c)  /*<<set.ml:136:24>>*/ return t;
          /*<<set.ml:137:10>>*/ if(0 <= c){
          var rr =  /*<<set.ml:141:21>>*/ add(x, r);
           /*<<set.ml:142:12>>*/ return r === rr
                  ? t
                  :  /*<<set.ml:142:35>>*/ bal(l, v, rr) /*<<set.ml:142:45>>*/ ;
         }
         var ll =  /*<<set.ml:138:21>>*/ add(x, l);
          /*<<set.ml:139:12>>*/ return l === ll
                 ? t
                 :  /*<<set.ml:139:35>>*/ bal(ll, v, r) /*<<set.ml:142:45>>*/ ;
        }
        function singleton(x){
          /*<<set.ml:144:22>>*/ return [0, 0, x, 0, 1];
         /*<<set.ml:144:54>>*/ }
        function add_min_element(x, param){
          /*<<set.ml:153:28>>*/ if(! param)
           /*<<set.ml:154:17>>*/ return singleton(x) /*<<set.ml:156:37>>*/ ;
         var r =  /*<<set.ml:153:28>>*/ param[3], v = param[2], l = param[1];
          /*<<set.ml:156:12>>*/ return  /*<<set.ml:156:33>>*/ bal
                 ( /*<<set.ml:156:12>>*/ add_min_element(x, l), v, r) /*<<set.ml:156:37>>*/ ;
        }
        function add_max_element(x, param){
          /*<<set.ml:158:28>>*/ if(! param)
           /*<<set.ml:159:17>>*/ return singleton(x) /*<<set.ml:161:37>>*/ ;
         var r =  /*<<set.ml:158:28>>*/ param[3], v = param[2], l = param[1];
          /*<<set.ml:161:16>>*/ return  /*<<set.ml:161:37>>*/ bal
                 (l, v,  /*<<set.ml:161:16>>*/ add_max_element(x, r)) /*<<set.ml:161:37>>*/ ;
        }
        function join(l, v, r){
          /*<<set.ml:167:6>>*/ if(! l)
           /*<<set.ml:168:22>>*/ return add_min_element(v, r) /*<<set.ml:173:22>>*/ ;
          /*<<set.ml:167:6>>*/ if(! r)
           /*<<set.ml:169:22>>*/ return add_max_element(v, l) /*<<set.ml:173:22>>*/ ;
         var
          rh =  /*<<set.ml:167:6>>*/ r[4],
          rr = r[3],
          rv = r[2],
          rl = r[1],
          lh = l[4],
          lr = l[3],
          lv = l[2],
          ll = l[1];
          /*<<set.ml:171:10>>*/ return (rh + 2 | 0) < lh
                 ?  /*<<set.ml:171:53>>*/ bal
                   (ll, lv,  /*<<set.ml:171:40>>*/ join(lr, v, r))
                 : (lh
                   + 2
                   | 0)
                   < rh
                   ?  /*<<set.ml:172:47>>*/ bal
                     ( /*<<set.ml:172:34>>*/ join(l, v, rl), rv, rr)
                   :  /*<<set.ml:173:10>>*/ create(l, v, r) /*<<set.ml:173:22>>*/ ;
        }
        function min_elt(param$0){
         var param =  /*<<set.ml:177:22>>*/ param$0;
         for(;;){
          if(! param)
            /*<<set.ml:178:17>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
          var l =  /*<<set.ml:177:22>>*/ param[1];
          if(! l){var v = param[2];  /*<<set.ml:179:28>>*/ return v;}
           /*<<set.ml:177:22>>*/ param = l;
         }
         /*<<set.ml:180:28>>*/ }
        function min_elt_opt(param$0){
         var param =  /*<<set.ml:182:26>>*/ param$0;
         for(;;){
          if(! param)  /*<<set.ml:183:17>>*/ return 0;
          var l =  /*<<set.ml:182:26>>*/ param[1];
          if(! l){var v = param[2];  /*<<set.ml:184:28>>*/ return [0, v];}
           /*<<set.ml:182:26>>*/ param = l;
         }
         /*<<set.ml:185:32>>*/ }
        function max_elt(param$0){
         var param =  /*<<set.ml:187:22>>*/ param$0;
         for(;;){
          if(! param)
            /*<<set.ml:188:17>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
           /*<<set.ml:187:22>>*/ if(! param[3]){
           var v = param[2];
            /*<<set.ml:189:28>>*/ return v;
          }
          var r =  /*<<set.ml:187:22>>*/ param[3];
           /*<<set.ml:190:19>>*/ param = r;
         }
         /*<<set.ml:190:28>>*/ }
        function max_elt_opt(param$0){
         var param =  /*<<set.ml:192:26>>*/ param$0;
         for(;;){
          if(! param)  /*<<set.ml:193:17>>*/ return 0;
           /*<<set.ml:192:26>>*/ if(! param[3]){
           var v = param[2];
            /*<<set.ml:194:28>>*/ return [0, v];
          }
          var r =  /*<<set.ml:192:26>>*/ param[3];
           /*<<set.ml:195:19>>*/ param = r;
         }
         /*<<set.ml:195:32>>*/ }
        function remove_min_elt(param){
          /*<<set.ml:199:29>>*/ if(! param)
           /*<<set.ml:200:17>>*/ return Stdlib[1].call
                  (null, "Set.remove_min_elt") /*<<set.ml:202:51>>*/ ;
         var l =  /*<<set.ml:199:29>>*/ param[1];
         if(l){
          var r = param[3], v = param[2];
           /*<<set.ml:202:29>>*/ return  /*<<set.ml:202:47>>*/ bal
                  ( /*<<set.ml:202:29>>*/ remove_min_elt(l), v, r) /*<<set.ml:202:51>>*/ ;
         }
         var r$0 =  /*<<set.ml:199:29>>*/ param[3];
          /*<<set.ml:201:28>>*/ return r$0;
         /*<<set.ml:202:51>>*/ }
        function concat(t1, t2){
          /*<<set.ml:219:6>>*/ if(! t1)  /*<<set.ml:220:22>>*/ return t2;
          /*<<set.ml:219:6>>*/ if(! t2)  /*<<set.ml:221:22>>*/ return t1;
         var _u_ =  /*<<set.ml:222:39>>*/ remove_min_elt(t2);
          /*<<set.ml:222:26>>*/ return  /*<<set.ml:222:38>>*/ join
                 (t1,  /*<<set.ml:222:26>>*/ min_elt(t2), _u_) /*<<set.ml:222:58>>*/ ;
        }
        function split(x, param){
          /*<<set.ml:230:18>>*/ if(! param)  /*<<set.ml:232:10>>*/ return _a_;
         var
          r =  /*<<set.ml:230:18>>*/ param[3],
          v = param[2],
          l = param[1],
          c =  /*<<set.ml:234:18>>*/ caml_call2(Ord[1], x, v);
          /*<<set.ml:235:10>>*/ if(0 === c)
           /*<<set.ml:235:24>>*/ return [0, l, 1, r];
          /*<<set.ml:236:15>>*/ if(0 <= c){
          var
           match =  /*<<set.ml:239:33>>*/ split(x, r),
           rr =  /*<<set.ml:239:42>>*/ match[3],
           pres = match[2],
           lr = match[1];
           /*<<set.ml:239:47>>*/ return [0, join(l, v, lr), pres, rr] /*<<set.ml:239:58>>*/ ;
         }
         var
          match$0 =  /*<<set.ml:237:33>>*/ split(x, l),
          rl =  /*<<set.ml:237:42>>*/ match$0[3],
          pres$0 = match$0[2],
          ll = match$0[1];
          /*<<set.ml:237:57>>*/ return [0, ll, pres$0, join(rl, v, r)] /*<<set.ml:237:68>>*/ ;
         /*<<set.ml:239:69>>*/ }
        function is_empty(param){
          /*<<set.ml:245:19>>*/ return param ? 0 : 1 /*<<set.ml:245:54>>*/ ;
        }
        function mem(x, param$0){
         var param =  /*<<set.ml:247:16>>*/ param$0;
         for(;;){
          if(! param)  /*<<set.ml:248:17>>*/ return 0;
          var
           r =  /*<<set.ml:247:16>>*/ param[3],
           v = param[2],
           l = param[1],
           c =  /*<<set.ml:250:18>>*/ caml_call2(Ord[1], x, v),
           _u_ =  /*<<set.ml:251:10>>*/ 0 === c ? 1 : 0;
          if(_u_) return _u_;
          param = 0 <= c ? r : l;
         }
         /*<<set.ml:251:49>>*/ }
        function remove(x, t){
          /*<<set.ml:253:19>>*/ if(! t)  /*<<set.ml:254:17>>*/ return 0;
         var
          t2 =  /*<<set.ml:253:19>>*/ t[3],
          v = t[2],
          t1 = t[1],
          c =  /*<<set.ml:256:18>>*/ caml_call2(Ord[1], x, v);
          /*<<set.ml:257:10>>*/ if(0 === c){
           /*<<set.ml:209:6>>*/ if(! t1)  /*<<set.ml:210:22>>*/ return t2;
           /*<<set.ml:209:6>>*/ if(! t2)  /*<<set.ml:211:22>>*/ return t1;
          var _u_ =  /*<<set.ml:212:38>>*/ remove_min_elt(t2);
           /*<<set.ml:212:25>>*/ return  /*<<set.ml:212:37>>*/ bal
                  (t1,  /*<<set.ml:212:25>>*/ min_elt(t2), _u_) /*<<set.ml:266:29>>*/ ;
         }
          /*<<set.ml:259:12>>*/ if(0 <= c){
          var rr =  /*<<set.ml:264:23>>*/ remove(x, t2);
           /*<<set.ml:265:14>>*/ return t2 === rr
                  ? t
                  :  /*<<set.ml:266:19>>*/ bal(t1, v, rr) /*<<set.ml:266:29>>*/ ;
         }
         var ll =  /*<<set.ml:260:23>>*/ remove(x, t1);
          /*<<set.ml:261:14>>*/ return t1 === ll
                 ? t
                 :  /*<<set.ml:262:19>>*/ bal(ll, v, t2) /*<<set.ml:266:29>>*/ ;
        }
        function union(s1, s2){
          /*<<set.ml:269:6>>*/ if(! s1)  /*<<set.ml:270:23>>*/ return s2;
          /*<<set.ml:269:6>>*/ if(! s2)  /*<<set.ml:271:23>>*/ return s1;
         var
          h2 =  /*<<set.ml:269:6>>*/ s2[4],
          r2 = s2[3],
          v2 = s2[2],
          l2 = s2[1],
          h1 = s1[4],
          r1 = s1[3],
          v1 = s1[2],
          l1 = s1[1];
          /*<<set.ml:273:10>>*/ if(h2 <= h1){
           /*<<set.ml:274:12>>*/ if(1 === h2)
            /*<<set.ml:274:27>>*/ return add(v2, s1) /*<<set.ml:282:15>>*/ ;
          var
           match =  /*<<set.ml:275:32>>*/ split(v1, s2),
           r2$0 =  /*<<set.ml:275:43>>*/ match[3],
           l2$0 = match[1],
           _t_ =  /*<<set.ml:276:36>>*/ union(r1, r2$0);
           /*<<set.ml:276:19>>*/ return  /*<<set.ml:276:32>>*/ join
                  ( /*<<set.ml:276:19>>*/ union(l1, l2$0), v1, _t_) /*<<set.ml:282:15>>*/ ;
         }
          /*<<set.ml:279:12>>*/ if(1 === h1)
           /*<<set.ml:279:27>>*/ return add(v1, s2) /*<<set.ml:282:15>>*/ ;
         var
          match$0 =  /*<<set.ml:280:32>>*/ split(v2, s1),
          r1$0 =  /*<<set.ml:280:43>>*/ match$0[3],
          l1$0 = match$0[1],
          _u_ =  /*<<set.ml:281:36>>*/ union(r1$0, r2);
          /*<<set.ml:281:19>>*/ return  /*<<set.ml:281:32>>*/ join
                 ( /*<<set.ml:281:19>>*/ union(l1$0, l2), v2, _u_) /*<<set.ml:282:15>>*/ ;
        }
        function inter(s1, s2){
          /*<<set.ml:285:6>>*/ if(! s1)  /*<<set.ml:286:22>>*/ return 0;
          /*<<set.ml:285:6>>*/ if(! s2)  /*<<set.ml:287:22>>*/ return 0;
         var
          r1 =  /*<<set.ml:285:6>>*/ s1[3],
          v1 = s1[2],
          l1 = s1[1],
          _r_ =  /*<<set.ml:289:16>>*/ split(v1, s2),
          l2 =  /*<<set.ml:289:27>>*/ _r_[1];
         if(_r_[2]){
          var r2 = _r_[3], _s_ =  /*<<set.ml:293:36>>*/ inter(r1, r2);
           /*<<set.ml:293:19>>*/ return  /*<<set.ml:293:32>>*/ join
                  ( /*<<set.ml:293:19>>*/ inter(l1, l2), v1, _s_) /*<<set.ml:293:49>>*/ ;
         }
         var
          r2$0 =  /*<<set.ml:289:27>>*/ _r_[3],
          _t_ =  /*<<set.ml:291:35>>*/ inter(r1, r2$0);
          /*<<set.ml:291:21>>*/ return  /*<<set.ml:291:34>>*/ concat
                 ( /*<<set.ml:291:21>>*/ inter(l1, l2), _t_) /*<<set.ml:293:49>>*/ ;
        }
        function split_bis(x, param){
          /*<<set.ml:303:22>>*/ if(! param)
           /*<<set.ml:305:10>>*/ return [0,
                  0,
                  function(param){
                    /*<<set.ml:305:38>>*/ return 0;
                   /*<<set.ml:305:43>>*/ }] /*<<set.ml:305:10>>*/ ;
         var
          r =  /*<<set.ml:303:22>>*/ param[3],
          v = param[2],
          l = param[1],
          c =  /*<<set.ml:307:18>>*/ caml_call2(Ord[1], x, v);
          /*<<set.ml:308:10>>*/ if(0 === c)  /*<<set.ml:308:24>>*/ return 0;
          /*<<set.ml:309:15>>*/ if(0 <= c){
          var match =  /*<<set.ml:314:18>>*/ split_bis(x, r);
           /*<<set.ml:314:31>>*/ if(! match)  /*<<set.ml:315:23>>*/ return 0;
          var rr =  /*<<set.ml:314:31>>*/ match[2], lr = match[1];
           /*<<set.ml:316:45>>*/ return [0, join(l, v, lr), rr] /*<<set.ml:316:56>>*/ ;
         }
         var match$0 =  /*<<set.ml:310:18>>*/ split_bis(x, l);
          /*<<set.ml:310:31>>*/ if(! match$0)  /*<<set.ml:311:23>>*/ return 0;
         var rl =  /*<<set.ml:310:31>>*/ match$0[2], ll = match$0[1];
          /*<<set.ml:312:35>>*/ return [0,
                 ll,
                 function(param){
                   /*<<set.ml:312:65>>*/ return  /*<<set.ml:312:72>>*/ join
                          ( /*<<set.ml:312:65>>*/ rl(0), v, r) /*<<set.ml:312:76>>*/ ;
                 }] /*<<set.ml:312:35>>*/ ;
         /*<<set.ml:316:61>>*/ }
        function disjoint(s1$0, s2$1){
         var s1 =  /*<<set.ml:319:6>>*/ s1$0, s2 = s2$1;
         for(;;){
          if(s1 && s2){
           var r1 = s1[3], v1 = s1[2], l1 = s1[1];
            /*<<set.ml:322:10>>*/ if(s1 === s2)
             /*<<set.ml:322:27>>*/ return 0;
           var match =  /*<<set.ml:323:21>>*/ split_bis(v1, s2);
            /*<<set.ml:323:36>>*/ if(! match)  /*<<set.ml:325:23>>*/ return 0;
           var
            r2 =  /*<<set.ml:323:36>>*/ match[2],
            l2 = match[1],
            _r_ =  /*<<set.ml:324:34>>*/ disjoint(l1, l2);
            /*<<set.ml:324:48>>*/ if(! _r_) return _r_;
           var s2$0 =  /*<<set.ml:324:64>>*/ r2(0);
            /*<<set.ml:324:71>>*/ s1 = r1;
           s2 = s2$0;
           continue;
          }
           /*<<set.ml:320:35>>*/ return 1;
         }
         /*<<set.ml:325:28>>*/ }
        function diff(s1, s2){
          /*<<set.ml:328:6>>*/ if(! s1)  /*<<set.ml:329:22>>*/ return 0;
          /*<<set.ml:328:6>>*/ if(! s2)  /*<<set.ml:330:23>>*/ return s1;
         var
          r1 =  /*<<set.ml:328:6>>*/ s1[3],
          v1 = s1[2],
          l1 = s1[1],
          _p_ =  /*<<set.ml:332:16>>*/ split(v1, s2),
          l2 =  /*<<set.ml:332:27>>*/ _p_[1];
         if(_p_[2]){
          var r2 = _p_[3], _q_ =  /*<<set.ml:336:34>>*/ diff(r1, r2);
           /*<<set.ml:336:21>>*/ return  /*<<set.ml:336:33>>*/ concat
                  ( /*<<set.ml:336:21>>*/ diff(l1, l2), _q_) /*<<set.ml:336:46>>*/ ;
         }
         var
          r2$0 =  /*<<set.ml:332:27>>*/ _p_[3],
          _r_ =  /*<<set.ml:334:35>>*/ diff(r1, r2$0);
          /*<<set.ml:334:19>>*/ return  /*<<set.ml:334:31>>*/ join
                 ( /*<<set.ml:334:19>>*/ diff(l1, l2), v1, _r_) /*<<set.ml:336:46>>*/ ;
        }
        function cons_enum(s$0, e$1){
         var s =  /*<<set.ml:341:6>>*/ s$0, e = e$1;
         for(;;){
          if(! s)  /*<<set.ml:342:17>>*/ return e;
          var
           r =  /*<<set.ml:341:6>>*/ s[3],
           v = s[2],
           l = s[1],
           e$0 =  /*<<set.ml:343:25>>*/ [0, v, r, e];
          s = l;
          e = e$0;
         }
         /*<<set.ml:343:52>>*/ }
        function compare(s1, s2){
         var
          e2$2 =  /*<<set.ml:357:37>>*/ cons_enum(s2, 0),
          e1$2 =  /*<<set.ml:357:18>>*/ cons_enum(s1, 0),
          e1 =  /*<<set.ml:357:36>>*/ e1$2,
          e2 = e2$2;
         for(;;){
           /*<<set.ml:346:8>>*/ if(! e1)
           return e2 ? -1 : 0 /*<<set.ml:357:55>>*/ ;
           /*<<set.ml:346:8>>*/ if(! e2)  /*<<set.ml:349:20>>*/ return 1;
          var
           e2$0 =  /*<<set.ml:346:8>>*/ e2[3],
           r2 = e2[2],
           v2 = e2[1],
           e1$0 = e1[3],
           r1 = e1[2],
           v1 = e1[1],
           c =  /*<<set.ml:351:18>>*/ caml_call2(Ord[1], v1, v2);
           /*<<set.ml:352:10>>*/ if(0 !== c)  /*<<set.ml:353:15>>*/ return c;
          var
           e2$1 =  /*<<set.ml:354:45>>*/ cons_enum(r2, e2$0),
           e1$1 =  /*<<set.ml:354:27>>*/ cons_enum(r1, e1$0);
           /*<<set.ml:354:44>>*/ e1 = e1$1;
          e2 = e2$1;
         }
         /*<<set.ml:357:55>>*/ }
        function equal(s1, s2){
          /*<<set.ml:360:6>>*/ return 0 === compare(s1, s2) ? 1 : 0 /*<<set.ml:360:19>>*/ ;
         /*<<set.ml:360:23>>*/ }
        function subset(s1$0, s2$0){
         var s1 =  /*<<set.ml:363:6>>*/ s1$0, s2 = s2$0;
         for(;;){
          if(! s1)  /*<<set.ml:365:10>>*/ return 1;
           /*<<set.ml:363:6>>*/ if(! s2)  /*<<set.ml:367:10>>*/ return 0;
          var
           r2 =  /*<<set.ml:363:6>>*/ s2[3],
           v2 = s2[2],
           l2 = s2[1],
           r1 = s1[3],
           v1 = s1[2],
           l1 = s1[1],
           c =  /*<<set.ml:369:18>>*/ caml_call2(Ord[1], v1, v2);
           /*<<set.ml:370:10>>*/ if(0 === c){
           var _n_ =  /*<<set.ml:371:12>>*/ subset(l1, l2);
            /*<<set.ml:371:24>>*/ if(! _n_) return _n_;
           s1 = r1;
           s2 = r2;
          }
          else if(0 <= c){
           var _o_ =  /*<<set.ml:375:12>>*/ subset([0, 0, v1, r1, 0], r2);
            /*<<set.ml:375:55>>*/ if(! _o_) return _o_;
           s1 = l1;
          }
          else{
           var _p_ =  /*<<set.ml:373:12>>*/ subset([0, l1, v1, 0, 0], l2);
            /*<<set.ml:373:55>>*/ if(! _p_) return _p_;
           s1 = r1;
          }
         }
         /*<<set.ml:375:71>>*/ }
        function iter(f, param$0){
         var param =  /*<<set.ml:377:17>>*/ param$0;
         for(;;){
          if(! param)  /*<<set.ml:378:17>>*/ return 0;
          var r =  /*<<set.ml:377:17>>*/ param[3], v = param[2], l = param[1];
           /*<<set.ml:379:25>>*/ iter(f, l);
           /*<<set.ml:379:35>>*/ caml_call1(f, v);
           /*<<set.ml:379:38>>*/ param = r;
         }
         /*<<set.ml:379:48>>*/ }
        function fold(f, s$0, accu$1){
         var s =  /*<<set.ml:382:6>>*/ s$0, accu = accu$1;
         for(;;){
          if(! s)  /*<<set.ml:383:17>>*/ return accu;
          var
           r =  /*<<set.ml:382:6>>*/ s[3],
           v = s[2],
           l = s[1],
           accu$0 =
              /*<<set.ml:384:39>>*/  /*<<set.ml:384:34>>*/ caml_call2
              (f, v,  /*<<set.ml:384:39>>*/ fold(f, l, accu));
           /*<<set.ml:384:55>>*/ s = r;
          accu = accu$0;
         }
        }
        function for_all(p, param$0){
         var param =  /*<<set.ml:386:20>>*/ param$0;
         for(;;){
          if(! param)  /*<<set.ml:387:17>>*/ return 1;
          var
           r =  /*<<set.ml:386:20>>*/ param[3],
           v = param[2],
           l = param[1],
           _l_ =  /*<<set.ml:388:25>>*/ caml_call1(p, v);
           /*<<set.ml:388:28>>*/ if(_l_){
           var _m_ =  /*<<set.ml:388:32>>*/ for_all(p, l);
            /*<<set.ml:388:43>>*/ if(_m_){param = r; continue;}
           var _n_ = _m_;
          }
          else
           var _n_ =  /*<<set.ml:388:28>>*/ _l_;
          return _n_;
         }
         /*<<set.ml:388:58>>*/ }
        function exists(p, param$0){
         var param =  /*<<set.ml:390:19>>*/ param$0;
         for(;;){
          if(! param)  /*<<set.ml:391:17>>*/ return 0;
          var
           r =  /*<<set.ml:390:19>>*/ param[3],
           v = param[2],
           l = param[1],
           _j_ =  /*<<set.ml:392:25>>*/ caml_call1(p, v);
           /*<<set.ml:392:28>>*/ if(_j_)
           var _k_ = _j_;
          else{
           var _l_ =  /*<<set.ml:392:32>>*/ exists(p, l);
            /*<<set.ml:392:42>>*/ if(! _l_){param = r; continue;}
           var _k_ = _l_;
          }
           /*<<set.ml:392:28>>*/ return _k_;
         }
         /*<<set.ml:392:56>>*/ }
        function filter(p, t){
          /*<<set.ml:394:19>>*/ if(! t)  /*<<set.ml:395:17>>*/ return 0;
         var
          r =  /*<<set.ml:394:19>>*/ t[3],
          v = t[2],
          l = t[1],
          l$0 =  /*<<set.ml:398:19>>*/ filter(p, l),
          pv =  /*<<set.ml:399:19>>*/ caml_call1(p, v),
          r$0 =  /*<<set.ml:400:19>>*/ filter(p, r);
          /*<<set.ml:401:10>>*/ if(! pv)
           /*<<set.ml:403:15>>*/ return concat(l$0, r$0) /*<<set.ml:403:27>>*/ ;
          /*<<set.ml:402:12>>*/ if(l === l$0 && r === r$0)
           /*<<set.ml:402:35>>*/ return t;
          /*<<set.ml:402:42>>*/ return join(l$0, v, r$0) /*<<set.ml:403:27>>*/ ;
        }
        function partition(p, param){
          /*<<set.ml:405:22>>*/ if(! param)  /*<<set.ml:406:17>>*/ return _b_;
         var
          r =  /*<<set.ml:405:22>>*/ param[3],
          v = param[2],
          l = param[1],
          match =  /*<<set.ml:409:25>>*/ partition(p, l),
          lf =  /*<<set.ml:409:38>>*/ match[2],
          lt = match[1],
          pv =  /*<<set.ml:410:19>>*/ caml_call1(p, v),
          match$0 =  /*<<set.ml:411:25>>*/ partition(p, r),
          rf =  /*<<set.ml:411:38>>*/ match$0[2],
          rt = match$0[1];
          /*<<set.ml:412:10>>*/ if(pv){
          var _i_ =  /*<<set.ml:413:30>>*/ concat(lf, rf);
           /*<<set.ml:413:16>>*/ return [0, join(lt, v, rt), _i_] /*<<set.ml:413:28>>*/ ;
         }
         var _j_ =  /*<<set.ml:414:30>>*/ join(lf, v, rf);
          /*<<set.ml:414:16>>*/ return [0, concat(lt, rt), _j_] /*<<set.ml:414:28>>*/ ;
         /*<<set.ml:414:43>>*/ }
        function cardinal(param){
          /*<<set.ml:416:23>>*/ if(! param)  /*<<set.ml:417:17>>*/ return 0;
         var
          r =  /*<<set.ml:416:23>>*/ param[3],
          l = param[1],
          _i_ =  /*<<set.ml:418:39>>*/ cardinal(r);
          /*<<set.ml:418:22>>*/ return (cardinal(l) + 1 | 0) + _i_ | 0 /*<<set.ml:418:32>>*/ ;
         /*<<set.ml:418:49>>*/ }
        function elements_aux(accu$1, param$0){
         var accu =  /*<<set.ml:420:25>>*/ accu$1, param = param$0;
         for(;;){
          if(! param)  /*<<set.ml:421:17>>*/ return accu;
          var
           r =  /*<<set.ml:420:25>>*/ param[3],
           v = param[2],
           l = param[1],
           accu$0 =  /*<<set.ml:422:44>>*/ [0, v, elements_aux(accu, r)];
           /*<<set.ml:422:63>>*/ accu = accu$0;
          param = l;
         }
         /*<<set.ml:422:66>>*/ }
        function elements(s){
          /*<<set.ml:425:6>>*/ return elements_aux(0, s) /*<<set.ml:425:23>>*/ ;
        }
        function find(x, param$0){
         var param =  /*<<set.ml:431:17>>*/ param$0;
         for(;;){
          if(! param)
            /*<<set.ml:432:17>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
          var
           r =  /*<<set.ml:431:17>>*/ param[3],
           v = param[2],
           l = param[1],
           c =  /*<<set.ml:434:18>>*/ caml_call2(Ord[1], x, v);
           /*<<set.ml:435:10>>*/ if(0 === c)  /*<<set.ml:435:24>>*/ return v;
           /*<<set.ml:436:15>>*/ param = 0 <= c ? r : l;
         }
         /*<<set.ml:436:46>>*/ }
        function find_first(f, param$1){
         var param$0 =  /*<<set.ml:447:23>>*/ param$1;
         for(;;){
          if(! param$0)
            /*<<set.ml:449:10>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
          var
           r$0 =  /*<<set.ml:447:23>>*/ param$0[3],
           v0$1 = param$0[2],
           l$0 = param$0[1];
           /*<<set.ml:451:13>>*/ if(caml_call1(f, v0$1)){
           var v0 =  /*<<set.ml:451:16>>*/ v0$1, param = l$0;
           break;
          }
          param$0 = r$0;
         }
          /*<<set.ml:447:23>>*/ for(;;){
           /*<<set.ml:438:27>>*/ if(! param)  /*<<set.ml:440:10>>*/ return v0;
          var
           r =  /*<<set.ml:438:27>>*/ param[3],
           v0$0 = param[2],
           l = param[1];
           /*<<set.ml:442:13>>*/ if(caml_call1(f, v0$0)){
            /*<<set.ml:442:16>>*/ v0 = v0$0;
           param = l;
          }
          else
           param = r;
         }
         /*<<set.ml:454:26>>*/ }
        function find_first_opt(f, param$1){
         var param$0 =  /*<<set.ml:465:27>>*/ param$1;
         for(;;){
          if(! param$0)  /*<<set.ml:467:10>>*/ return 0;
          var
           r$0 =  /*<<set.ml:465:27>>*/ param$0[3],
           v0$1 = param$0[2],
           l$0 = param$0[1];
           /*<<set.ml:469:13>>*/ if(caml_call1(f, v0$1)){
           var v0 =  /*<<set.ml:469:16>>*/ v0$1, param = l$0;
           break;
          }
          param$0 = r$0;
         }
          /*<<set.ml:465:27>>*/ for(;;){
           /*<<set.ml:456:31>>*/ if(! param)
            /*<<set.ml:458:10>>*/ return [0, v0];
          var
           r =  /*<<set.ml:456:31>>*/ param[3],
           v0$0 = param[2],
           l = param[1];
           /*<<set.ml:460:13>>*/ if(caml_call1(f, v0$0)){
            /*<<set.ml:460:16>>*/ v0 = v0$0;
           param = l;
          }
          else
           param = r;
         }
         /*<<set.ml:472:30>>*/ }
        function find_last(f, param$1){
         var param$0 =  /*<<set.ml:483:22>>*/ param$1;
         for(;;){
          if(! param$0)
            /*<<set.ml:485:10>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
          var
           r$0 =  /*<<set.ml:483:22>>*/ param$0[3],
           v0$1 = param$0[2],
           l$0 = param$0[1];
           /*<<set.ml:487:13>>*/ if(caml_call1(f, v0$1)){
           var v0 =  /*<<set.ml:487:16>>*/ v0$1, param = r$0;
           break;
          }
          param$0 = l$0;
         }
          /*<<set.ml:483:22>>*/ for(;;){
           /*<<set.ml:474:26>>*/ if(! param)  /*<<set.ml:476:10>>*/ return v0;
          var
           r =  /*<<set.ml:474:26>>*/ param[3],
           v0$0 = param[2],
           l = param[1];
           /*<<set.ml:478:13>>*/ if(caml_call1(f, v0$0)){
            /*<<set.ml:478:16>>*/ v0 = v0$0;
           param = r;
          }
          else
           param = l;
         }
         /*<<set.ml:490:25>>*/ }
        function find_last_opt(f, param$1){
         var param$0 =  /*<<set.ml:501:26>>*/ param$1;
         for(;;){
          if(! param$0)  /*<<set.ml:503:10>>*/ return 0;
          var
           r$0 =  /*<<set.ml:501:26>>*/ param$0[3],
           v0$1 = param$0[2],
           l$0 = param$0[1];
           /*<<set.ml:505:13>>*/ if(caml_call1(f, v0$1)){
           var v0 =  /*<<set.ml:505:16>>*/ v0$1, param = r$0;
           break;
          }
          param$0 = l$0;
         }
          /*<<set.ml:501:26>>*/ for(;;){
           /*<<set.ml:492:30>>*/ if(! param)
            /*<<set.ml:494:10>>*/ return [0, v0];
          var
           r =  /*<<set.ml:492:30>>*/ param[3],
           v0$0 = param[2],
           l = param[1];
           /*<<set.ml:496:13>>*/ if(caml_call1(f, v0$0)){
            /*<<set.ml:496:16>>*/ v0 = v0$0;
           param = r;
          }
          else
           param = l;
         }
         /*<<set.ml:508:29>>*/ }
        function find_opt(x, param$0){
         var param =  /*<<set.ml:510:21>>*/ param$0;
         for(;;){
          if(! param)  /*<<set.ml:511:17>>*/ return 0;
          var
           r =  /*<<set.ml:510:21>>*/ param[3],
           v = param[2],
           l = param[1],
           c =  /*<<set.ml:513:18>>*/ caml_call2(Ord[1], x, v);
           /*<<set.ml:514:10>>*/ if(0 === c)
            /*<<set.ml:514:24>>*/ return [0, v];
           /*<<set.ml:515:15>>*/ param = 0 <= c ? r : l;
         }
         /*<<set.ml:515:50>>*/ }
        function try_join(l, v, r){
         a:
         {
           /*<<set.ml:521:6>>*/ if(0 !== l){
           var _i_ =  /*<<set.ml:521:35>>*/ max_elt(l);
            /*<<set.ml:521:23>>*/ if(0 <= caml_call2(Ord[1], _i_, v)) break a;
          }
           /*<<set.ml:521:6>>*/ if(0 !== r){
           var _h_ =  /*<<set.ml:522:37>>*/ min_elt(r);
            /*<<set.ml:522:23>>*/ if(0 <= caml_call2(Ord[1], v, _h_)) break a;
          }
           /*<<set.ml:523:11>>*/ return join(l, v, r) /*<<set.ml:524:28>>*/ ;
         }
          /*<<set.ml:524:19>>*/ return  /*<<set.ml:524:28>>*/ union
                 (l,  /*<<set.ml:524:19>>*/ add(v, r)) /*<<set.ml:524:28>>*/ ;
        }
        function map(f, t){
          /*<<set.ml:526:16>>*/ if(! t)  /*<<set.ml:527:17>>*/ return 0;
         var
          r =  /*<<set.ml:526:16>>*/ t[3],
          v = t[2],
          l = t[1],
          l$0 =  /*<<set.ml:530:18>>*/ map(f, l),
          v$0 =  /*<<set.ml:531:18>>*/ caml_call1(f, v),
          r$0 =  /*<<set.ml:532:18>>*/ map(f, r);
          /*<<set.ml:533:9>>*/ if(l === l$0 && v === v$0 && r === r$0)
           /*<<set.ml:533:47>>*/ return t;
          /*<<set.ml:534:14>>*/ return try_join(l$0, v$0, r$0) /*<<set.ml:534:31>>*/ ;
        }
        function filter_map(f, t){
          /*<<set.ml:542:23>>*/ if(! t)  /*<<set.ml:543:17>>*/ return 0;
         var
          r =  /*<<set.ml:542:23>>*/ t[3],
          v = t[2],
          l = t[1],
          t1 =  /*<<set.ml:546:18>>*/ filter_map(f, l),
          v$0 =  /*<<set.ml:547:18>>*/ caml_call1(f, v),
          t2 =  /*<<set.ml:548:18>>*/ filter_map(f, r);
          /*<<set.ml:549:9>>*/ if(v$0){
          var v$1 = v$0[1];
           /*<<set.ml:551:14>>*/ if(l === t1 && v === v$1 && r === t2)
            /*<<set.ml:551:52>>*/ return t;
           /*<<set.ml:552:19>>*/ return try_join(t1, v$1, t2) /*<<set.ml:555:12>>*/ ;
         }
          /*<<set.ml:537:6>>*/ if(! t1)  /*<<set.ml:538:22>>*/ return t2;
          /*<<set.ml:537:6>>*/ if(! t2)  /*<<set.ml:539:22>>*/ return t1;
         var _h_ =  /*<<set.ml:540:43>>*/ remove_min_elt(t2);
          /*<<set.ml:540:30>>*/ return  /*<<set.ml:540:42>>*/ try_join
                 (t1,  /*<<set.ml:540:30>>*/ min_elt(t2), _h_) /*<<set.ml:555:12>>*/ ;
        }
        var empty =  /*<<?>>*/ 0;
        function of_list(l){
          /*<<set.ml:581:6>>*/ if(! l)  /*<<set.ml:582:14>>*/ return empty;
         var match =  /*<<set.ml:581:6>>*/ l[2], x0 = l[1];
         if(! match)
           /*<<set.ml:583:16>>*/ return singleton(x0) /*<<set.ml:588:58>>*/ ;
         var match$0 =  /*<<set.ml:581:6>>*/ match[2], x1 = match[1];
         if(! match$0)
           /*<<set.ml:584:27>>*/ return  /*<<set.ml:584:41>>*/ add
                  (x1,  /*<<set.ml:584:27>>*/ singleton(x0)) /*<<set.ml:588:58>>*/ ;
         var match$1 =  /*<<set.ml:581:6>>*/ match$0[2], x2 = match$0[1];
         if(! match$1)
           /*<<set.ml:585:39>>*/ return  /*<<set.ml:585:54>>*/ add
                  (x2,
                    /*<<set.ml:585:31>>*/ add
                    (x1,  /*<<set.ml:585:39>>*/ singleton(x0))) /*<<set.ml:588:58>>*/ ;
         var match$2 =  /*<<set.ml:581:6>>*/ match$1[2], x3 = match$1[1];
         if(! match$2)
           /*<<set.ml:586:51>>*/ return  /*<<set.ml:586:67>>*/ add
                  (x3,
                    /*<<set.ml:586:35>>*/ add
                    (x2,
                      /*<<set.ml:586:43>>*/ add
                      (x1,  /*<<set.ml:586:51>>*/ singleton(x0)))) /*<<set.ml:588:58>>*/ ;
          /*<<set.ml:581:6>>*/ if(match$2[2]){
          var
           l$0 =  /*<<set.ml:588:28>>*/ Stdlib_List[67].call(null, Ord[1], l),
           sub =
              /*<<set.ml:558:6>>*/ function(n, l){
               /*<<set.ml:559:8>>*/ if(3 >= n >>> 0)
               switch(n){
                 case 0:
                   /*<<set.ml:560:18>>*/ return [0, 0, l];
                 case 1:
                   /*<<set.ml:559:8>>*/ if(l){
                   var l$3 = l[2], x0 = l[1];
                    /*<<set.ml:561:24>>*/ return [0, [0, 0, x0, 0, 1], l$3];
                  }
                  break;
                 case 2:
                   /*<<set.ml:559:8>>*/ if(l){
                   var match$1 = l[2];
                   if(match$1){
                    var l$4 = match$1[2], x1 = match$1[1], x0$0 = l[1];
                     /*<<set.ml:563:12>>*/ return [0,
                            [0, [0, 0, x0$0, 0, 1], x1, 0, 2],
                            l$4];
                   }
                  }
                  break;
                 default:
                   /*<<set.ml:559:8>>*/ if(l){
                   var _h_ = l[2];
                   if(_h_){
                    var match$2 = _h_[2];
                    if(match$2){
                     var
                      l$5 = match$2[2],
                      x2 = match$2[1],
                      x1$0 = _h_[1],
                      x0$1 = l[1];
                      /*<<set.ml:565:12>>*/ return [0,
                             [0, [0, 0, x0$1, 0, 1], x1$0, [0, 0, x2, 0, 1], 2],
                             l$5];
                    }
                   }
                  }
               }
              var
               nl =  /*<<set.ml:568:10>>*/ n / 2 | 0,
               match =  /*<<set.ml:569:24>>*/ sub(nl, l),
               l$0 =  /*<<set.ml:569:32>>*/ match[2],
               left = match[1];
               /*<<set.ml:570:10>>*/ if(! l$0)
                /*<<set.ml:571:18>>*/ throw caml_maybe_attach_backtrace
                      ([0, Assert_failure, _c_], 1);
              var
               l$1 =  /*<<set.ml:570:10>>*/ l$0[2],
               mid = l$0[1],
               match$0 =  /*<<set.ml:573:27>>*/ sub((n - nl | 0) - 1 | 0, l$1),
               l$2 =  /*<<set.ml:573:45>>*/ match$0[2],
               right = match$0[1];
               /*<<set.ml:574:12>>*/ return [0, create(left, mid, right), l$2] /*<<set.ml:574:33>>*/ ;
              /*<<set.ml:574:36>>*/ };
           /*<<set.ml:576:15>>*/ return  /*<<set.ml:576:10>>*/ sub
                   ( /*<<set.ml:576:15>>*/ Stdlib_List[1].call(null, l$0), l$0)
                  [1] /*<<set.ml:576:33>>*/ ;
         }
         var x4 =  /*<<set.ml:581:6>>*/ match$2[1];
          /*<<set.ml:587:63>>*/ return  /*<<set.ml:587:80>>*/ add
                 (x4,
                   /*<<set.ml:587:39>>*/ add
                   (x3,
                     /*<<set.ml:587:47>>*/ add
                     (x2,
                       /*<<set.ml:587:55>>*/ add
                       (x1,  /*<<set.ml:587:63>>*/ singleton(x0))))) /*<<set.ml:588:58>>*/ ;
        }
        function add_seq(i, m){
          /*<<set.ml:591:6>>*/ return Stdlib_Seq[5].call
                 (null,
                  function(s, x){
                    /*<<set.ml:591:32>>*/ return add(x, s) /*<<set.ml:591:39>>*/ ;
                  },
                  m,
                  i) /*<<set.ml:591:44>>*/ ;
        }
        function of_seq(i){
          /*<<set.ml:593:19>>*/ return add_seq(i, empty) /*<<set.ml:593:34>>*/ ;
        }
        function seq_of_enum(c, param){
          /*<<set.ml:595:32>>*/ if(! c)  /*<<set.ml:596:15>>*/ return 0;
         var
          rest =  /*<<set.ml:595:32>>*/ c[3],
          t = c[2],
          x = c[1],
          _g_ =  /*<<set.ml:597:55>>*/ cons_enum(t, rest);
          /*<<set.ml:597:73>>*/ return [0,
                 x,
                 function(_h_){
                   /*<<set.ml:597:42>>*/ return seq_of_enum(_g_, _h_);
                 }] /*<<set.ml:597:73>>*/ ;
         /*<<set.ml:597:74>>*/ }
        function to_seq(c){
         var _f_ =  /*<<set.ml:599:32>>*/ cons_enum(c, 0);
          /*<<set.ml:599:49>>*/ return function(_g_){
          return seq_of_enum(_f_, _g_);};
        }
        function snoc_enum(s$0, e$1){
         var s =  /*<<set.ml:602:6>>*/ s$0, e = e$1;
         for(;;){
          if(! s)  /*<<set.ml:603:17>>*/ return e;
          var
           r =  /*<<set.ml:602:6>>*/ s[3],
           v = s[2],
           l = s[1],
           e$0 =  /*<<set.ml:604:25>>*/ [0, v, l, e];
          s = r;
          e = e$0;
         }
         /*<<set.ml:604:52>>*/ }
        function rev_seq_of_enum(c, param){
          /*<<set.ml:606:36>>*/ if(! c)  /*<<set.ml:607:15>>*/ return 0;
         var
          rest =  /*<<set.ml:606:36>>*/ c[3],
          t = c[2],
          x = c[1],
          _e_ =  /*<<set.ml:608:59>>*/ snoc_enum(t, rest);
          /*<<set.ml:608:77>>*/ return [0,
                 x,
                 function(_f_){
                   /*<<set.ml:608:42>>*/ return rev_seq_of_enum(_e_, _f_);
                 }] /*<<set.ml:608:77>>*/ ;
         /*<<set.ml:608:78>>*/ }
        function to_rev_seq(c){
         var _d_ =  /*<<set.ml:610:40>>*/ snoc_enum(c, 0);
          /*<<set.ml:610:57>>*/ return function(_e_){
          return rev_seq_of_enum(_d_, _e_);};
        }
        function to_seq_from(low, s){
         a:
         {
          var s$0 =  /*<<set.ml:622:19>>*/ s, c = 0;
          for(;;){
            /*<<set.ml:613:28>>*/ if(! s$0){var _c_ = c; break a;}
           var
            r = s$0[3],
            v = s$0[2],
            l = s$0[1],
            n =  /*<<set.ml:616:24>>*/ caml_call2(Ord[1], v, low);
            /*<<set.ml:616:41>>*/ if(0 === n) break;
            /*<<set.ml:618:23>>*/ if(0 <= n){
            var c$0 =  /*<<set.ml:619:21>>*/ [0, v, r, c];
            s$0 = l;
            c = c$0;
           }
           else
             /*<<set.ml:618:23>>*/ s$0 = r;
          }
          var _c_ =  /*<<set.ml:617:21>>*/ [0, v, r, c];
         }
          /*<<set.ml:622:34>>*/ return function(_d_){
          return seq_of_enum(_c_, _d_);};
        }
         /*<<?>>*/ return [0,
                empty,
                add,
                singleton,
                remove,
                union,
                inter,
                disjoint,
                diff,
                cardinal,
                elements,
                min_elt,
                min_elt_opt,
                max_elt,
                max_elt_opt,
                min_elt,
                min_elt_opt,
                find,
                find_opt,
                find_first,
                find_first_opt,
                find_last,
                find_last_opt,
                iter,
                fold,
                map,
                filter,
                filter_map,
                partition,
                split,
                is_empty,
                mem,
                equal,
                compare,
                subset,
                for_all,
                exists,
                elements,
                of_list,
                to_seq_from,
                to_seq,
                to_rev_seq,
                add_seq,
                of_seq];
       }];
   runtime.caml_register_global(12, Stdlib_Set, "Stdlib__Set");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Map
//# unitInfo: Requires: Stdlib, Stdlib__List, Stdlib__Seq
//# shape: Stdlib__Map:[F(1)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Assert_failure = global_data.Assert_failure,
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib_List = global_data.Stdlib__List,
    _a_ = [0, 0, 0, 0],
    _b_ = [0, "map.ml", 408, 10],
    _c_ = [0, 0, 0],
    Stdlib_Map =
      [0,
       function(Ord){
        function height(param){
          /*<<map.ml:81:17>>*/ if(! param)  /*<<map.ml:82:17>>*/ return 0;
         var h =  /*<<map.ml:81:17>>*/ param[5];
          /*<<map.ml:83:20>>*/ return h;
         /*<<map.ml:83:21>>*/ }
        function create(l, x, d, r){
         var
          hl =  /*<<map.ml:86:15>>*/ height(l),
          hr =  /*<<map.ml:86:33>>*/ height(r),
          _w_ =  /*<<map.ml:87:6>>*/ hr <= hl ? hl + 1 | 0 : hr + 1 | 0;
         return [0, l, x, d, r, _w_];
         /*<<map.ml:87:65>>*/ }
        function singleton(x, d){
          /*<<map.ml:89:24>>*/ return [0, 0, x, d, 0, 1];
         /*<<map.ml:89:59>>*/ }
        function bal(l, x, d, r){
          /*<<map.ml:92:6>>*/ if(l)
          var h = l[5], hl =  /*<<map.ml:92:53>>*/ h;
         else
          var hl =  /*<<map.ml:92:37>>*/ 0;
          /*<<map.ml:93:6>>*/ if(r)
          var h$0 = r[5], hr =  /*<<map.ml:93:53>>*/ h$0;
         else
          var hr =  /*<<map.ml:93:37>>*/ 0;
         var cst_Map_bal =  /*<<?>>*/ "Map.bal";
          /*<<map.ml:94:6>>*/ if((hr + 2 | 0) < hl){
           /*<<map.ml:94:26>>*/ if(! l)
            /*<<map.ml:96:19>>*/ return Stdlib[1].call(null, cst_Map_bal) /*<<map.ml:119:67>>*/ ;
          var
           lr =  /*<<map.ml:94:26>>*/ l[4],
           ld = l[3],
           lv = l[2],
           ll = l[1],
           _s_ =  /*<<map.ml:98:28>>*/ height(lr);
           /*<<map.ml:98:15>>*/ if(_s_ <= height(ll))
            /*<<map.ml:99:30>>*/ return  /*<<map.ml:99:47>>*/ create
                   (ll, lv, ld,  /*<<map.ml:99:30>>*/ create(lr, x, d, r)) /*<<map.ml:119:67>>*/ ;
           /*<<map.ml:100:17>>*/ if(! lr)
            /*<<map.ml:102:25>>*/ return Stdlib[1].call(null, cst_Map_bal) /*<<map.ml:119:67>>*/ ;
          var
           lrr =  /*<<map.ml:100:17>>*/ lr[4],
           lrd = lr[3],
           lrv = lr[2],
           lrl = lr[1],
           _t_ =  /*<<map.ml:104:55>>*/ create(lrr, x, d, r);
           /*<<map.ml:104:25>>*/ return  /*<<map.ml:104:46>>*/ create
                  ( /*<<map.ml:104:25>>*/ create(ll, lv, ld, lrl),
                   lrv,
                   lrd,
                   _t_) /*<<map.ml:119:67>>*/ ;
         }
          /*<<map.ml:106:15>>*/ if((hl + 2 | 0) >= hr){
          var _w_ =  /*<<map.ml:119:8>>*/ hr <= hl ? hl + 1 | 0 : hr + 1 | 0;
          return [0, l, x, d, r, _w_];
         }
          /*<<map.ml:106:35>>*/ if(! r)
           /*<<map.ml:108:19>>*/ return Stdlib[1].call(null, cst_Map_bal) /*<<map.ml:119:67>>*/ ;
         var
          rr =  /*<<map.ml:106:35>>*/ r[4],
          rd = r[3],
          rv = r[2],
          rl = r[1],
          _u_ =  /*<<map.ml:110:28>>*/ height(rl);
          /*<<map.ml:110:15>>*/ if(_u_ <= height(rr))
           /*<<map.ml:111:21>>*/ return  /*<<map.ml:111:38>>*/ create
                  ( /*<<map.ml:111:21>>*/ create(l, x, d, rl), rv, rd, rr) /*<<map.ml:119:67>>*/ ;
          /*<<map.ml:112:17>>*/ if(! rl)
           /*<<map.ml:114:25>>*/ return Stdlib[1].call(null, cst_Map_bal) /*<<map.ml:119:67>>*/ ;
         var
          rlr =  /*<<map.ml:112:17>>*/ rl[4],
          rld = rl[3],
          rlv = rl[2],
          rll = rl[1],
          _v_ =  /*<<map.ml:116:52>>*/ create(rlr, rv, rd, rr);
          /*<<map.ml:116:25>>*/ return  /*<<map.ml:116:43>>*/ create
                 ( /*<<map.ml:116:25>>*/ create(l, x, d, rll), rlv, rld, _v_) /*<<map.ml:119:67>>*/ ;
        }
        function is_empty(param){
          /*<<map.ml:123:19>>*/ return param ? 0 : 1 /*<<map.ml:123:54>>*/ ;
        }
        function add(x, data, m){
          /*<<map.ml:125:16>>*/ if(! m)
           /*<<map.ml:127:10>>*/ return [0, 0, x, data, 0, 1];
         var
          h =  /*<<map.ml:125:16>>*/ m[5],
          r = m[4],
          d = m[3],
          v = m[2],
          l = m[1],
          c =  /*<<map.ml:129:18>>*/ caml_call2(Ord[1], x, v);
          /*<<map.ml:130:10>>*/ if(0 === c)
           /*<<map.ml:131:12>>*/ return d === data ? m : [0, l, x, data, r, h] /*<<map.ml:137:47>>*/ ;
          /*<<map.ml:132:15>>*/ if(0 <= c){
          var rr =  /*<<map.ml:136:21>>*/ add(x, data, r);
           /*<<map.ml:137:12>>*/ return r === rr
                  ? m
                  :  /*<<map.ml:137:35>>*/ bal(l, v, d, rr) /*<<map.ml:137:47>>*/ ;
         }
         var ll =  /*<<map.ml:133:21>>*/ add(x, data, l);
          /*<<map.ml:134:12>>*/ return l === ll
                 ? m
                 :  /*<<map.ml:134:35>>*/ bal(ll, v, d, r) /*<<map.ml:137:47>>*/ ;
        }
        function find(x, param$0){
         var param =  /*<<map.ml:139:17>>*/ param$0;
         for(;;){
          if(! param)
            /*<<map.ml:141:10>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
          var
           r =  /*<<map.ml:139:17>>*/ param[4],
           d = param[3],
           v = param[2],
           l = param[1],
           c =  /*<<map.ml:143:18>>*/ caml_call2(Ord[1], x, v);
           /*<<map.ml:144:10>>*/ if(0 === c)  /*<<map.ml:144:24>>*/ return d;
           /*<<map.ml:145:15>>*/ param = 0 <= c ? r : l;
         }
         /*<<map.ml:145:46>>*/ }
        function find_first(f, param$1){
         var param$0 =  /*<<map.ml:156:23>>*/ param$1;
         for(;;){
          if(! param$0)
            /*<<map.ml:158:10>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
          var
           r$0 =  /*<<map.ml:156:23>>*/ param$0[4],
           d0$1 = param$0[3],
           v0$1 = param$0[2],
           l$0 = param$0[1];
           /*<<map.ml:160:13>>*/ if(caml_call1(f, v0$1)){
           var v0 =  /*<<map.ml:160:16>>*/ v0$1, d0 = d0$1, param = l$0;
           break;
          }
          param$0 = r$0;
         }
          /*<<map.ml:156:23>>*/ for(;;){
           /*<<map.ml:147:27>>*/ if(! param)
            /*<<map.ml:149:10>>*/ return [0, v0, d0];
          var
           r =  /*<<map.ml:147:27>>*/ param[4],
           d0$0 = param[3],
           v0$0 = param[2],
           l = param[1];
           /*<<map.ml:151:13>>*/ if(caml_call1(f, v0$0)){
            /*<<map.ml:151:16>>*/ v0 = v0$0;
           d0 = d0$0;
           param = l;
          }
          else
           param = r;
         }
         /*<<map.ml:163:26>>*/ }
        function find_first_opt(f, param$1){
         var param$0 =  /*<<map.ml:174:27>>*/ param$1;
         for(;;){
          if(! param$0)  /*<<map.ml:176:10>>*/ return 0;
          var
           r$0 =  /*<<map.ml:174:27>>*/ param$0[4],
           d0$1 = param$0[3],
           v0$1 = param$0[2],
           l$0 = param$0[1];
           /*<<map.ml:178:13>>*/ if(caml_call1(f, v0$1)){
           var v0 =  /*<<map.ml:178:16>>*/ v0$1, d0 = d0$1, param = l$0;
           break;
          }
          param$0 = r$0;
         }
          /*<<map.ml:174:27>>*/ for(;;){
           /*<<map.ml:165:31>>*/ if(! param)
            /*<<map.ml:167:10>>*/ return [0, [0, v0, d0]];
          var
           r =  /*<<map.ml:165:31>>*/ param[4],
           d0$0 = param[3],
           v0$0 = param[2],
           l = param[1];
           /*<<map.ml:169:13>>*/ if(caml_call1(f, v0$0)){
            /*<<map.ml:169:16>>*/ v0 = v0$0;
           d0 = d0$0;
           param = l;
          }
          else
           param = r;
         }
         /*<<map.ml:181:30>>*/ }
        function find_last(f, param$1){
         var param$0 =  /*<<map.ml:192:22>>*/ param$1;
         for(;;){
          if(! param$0)
            /*<<map.ml:194:10>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
          var
           r$0 =  /*<<map.ml:192:22>>*/ param$0[4],
           d0$1 = param$0[3],
           v0$1 = param$0[2],
           l$0 = param$0[1];
           /*<<map.ml:196:13>>*/ if(caml_call1(f, v0$1)){
           var v0 =  /*<<map.ml:196:16>>*/ v0$1, d0 = d0$1, param = r$0;
           break;
          }
          param$0 = l$0;
         }
          /*<<map.ml:192:22>>*/ for(;;){
           /*<<map.ml:183:26>>*/ if(! param)
            /*<<map.ml:185:10>>*/ return [0, v0, d0];
          var
           r =  /*<<map.ml:183:26>>*/ param[4],
           d0$0 = param[3],
           v0$0 = param[2],
           l = param[1];
           /*<<map.ml:187:13>>*/ if(caml_call1(f, v0$0)){
            /*<<map.ml:187:16>>*/ v0 = v0$0;
           d0 = d0$0;
           param = r;
          }
          else
           param = l;
         }
         /*<<map.ml:199:25>>*/ }
        function find_last_opt(f, param$1){
         var param$0 =  /*<<map.ml:210:26>>*/ param$1;
         for(;;){
          if(! param$0)  /*<<map.ml:212:10>>*/ return 0;
          var
           r$0 =  /*<<map.ml:210:26>>*/ param$0[4],
           d0$1 = param$0[3],
           v0$1 = param$0[2],
           l$0 = param$0[1];
           /*<<map.ml:214:13>>*/ if(caml_call1(f, v0$1)){
           var v0 =  /*<<map.ml:214:16>>*/ v0$1, d0 = d0$1, param = r$0;
           break;
          }
          param$0 = l$0;
         }
          /*<<map.ml:210:26>>*/ for(;;){
           /*<<map.ml:201:30>>*/ if(! param)
            /*<<map.ml:203:10>>*/ return [0, [0, v0, d0]];
          var
           r =  /*<<map.ml:201:30>>*/ param[4],
           d0$0 = param[3],
           v0$0 = param[2],
           l = param[1];
           /*<<map.ml:205:13>>*/ if(caml_call1(f, v0$0)){
            /*<<map.ml:205:16>>*/ v0 = v0$0;
           d0 = d0$0;
           param = r;
          }
          else
           param = l;
         }
         /*<<map.ml:217:29>>*/ }
        function find_opt(x, param$0){
         var param =  /*<<map.ml:219:21>>*/ param$0;
         for(;;){
          if(! param)  /*<<map.ml:221:10>>*/ return 0;
          var
           r =  /*<<map.ml:219:21>>*/ param[4],
           d = param[3],
           v = param[2],
           l = param[1],
           c =  /*<<map.ml:223:18>>*/ caml_call2(Ord[1], x, v);
           /*<<map.ml:224:10>>*/ if(0 === c)
            /*<<map.ml:224:24>>*/ return [0, d];
           /*<<map.ml:225:15>>*/ param = 0 <= c ? r : l;
         }
         /*<<map.ml:225:50>>*/ }
        function mem(x, param$0){
         var param =  /*<<map.ml:227:16>>*/ param$0;
         for(;;){
          if(! param)  /*<<map.ml:229:10>>*/ return 0;
          var
           r =  /*<<map.ml:227:16>>*/ param[4],
           v = param[2],
           l = param[1],
           c =  /*<<map.ml:231:18>>*/ caml_call2(Ord[1], x, v),
           _s_ =  /*<<map.ml:232:10>>*/ 0 === c ? 1 : 0;
          if(_s_) return _s_;
          param = 0 <= c ? r : l;
         }
         /*<<map.ml:232:49>>*/ }
        function min_binding(param$0){
         var param =  /*<<map.ml:234:26>>*/ param$0;
         for(;;){
          if(! param)
            /*<<map.ml:235:17>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
          var l =  /*<<map.ml:234:26>>*/ param[1];
          if(! l){
           var d = param[3], v = param[2];
            /*<<map.ml:236:32>>*/ return [0, v, d];
          }
           /*<<map.ml:234:26>>*/ param = l;
         }
         /*<<map.ml:237:33>>*/ }
        function min_binding_opt(param$0){
         var param =  /*<<map.ml:239:30>>*/ param$0;
         for(;;){
          if(! param)  /*<<map.ml:240:17>>*/ return 0;
          var l =  /*<<map.ml:239:30>>*/ param[1];
          if(! l){
           var d = param[3], v = param[2];
            /*<<map.ml:241:32>>*/ return [0, [0, v, d]];
          }
           /*<<map.ml:239:30>>*/ param = l;
         }
         /*<<map.ml:242:36>>*/ }
        function max_binding(param$0){
         var param =  /*<<map.ml:244:26>>*/ param$0;
         for(;;){
          if(! param)
            /*<<map.ml:245:17>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
           /*<<map.ml:244:26>>*/ if(! param[4]){
           var d = param[3], v = param[2];
            /*<<map.ml:246:32>>*/ return [0, v, d];
          }
          var r =  /*<<map.ml:244:26>>*/ param[4];
           /*<<map.ml:247:20>>*/ param = r;
         }
         /*<<map.ml:247:33>>*/ }
        function max_binding_opt(param$0){
         var param =  /*<<map.ml:249:30>>*/ param$0;
         for(;;){
          if(! param)  /*<<map.ml:250:17>>*/ return 0;
           /*<<map.ml:249:30>>*/ if(! param[4]){
           var d = param[3], v = param[2];
            /*<<map.ml:251:32>>*/ return [0, [0, v, d]];
          }
          var r =  /*<<map.ml:249:30>>*/ param[4];
           /*<<map.ml:252:20>>*/ param = r;
         }
         /*<<map.ml:252:37>>*/ }
        function remove_min_binding(param){
          /*<<map.ml:254:33>>*/ if(! param)
           /*<<map.ml:255:17>>*/ return Stdlib[1].call
                  (null, "Map.remove_min_elt") /*<<map.ml:257:61>>*/ ;
         var l =  /*<<map.ml:254:33>>*/ param[1];
         if(l){
          var r = param[4], d = param[3], v = param[2];
           /*<<map.ml:257:33>>*/ return  /*<<map.ml:257:55>>*/ bal
                  ( /*<<map.ml:257:33>>*/ remove_min_binding(l), v, d, r) /*<<map.ml:257:61>>*/ ;
         }
         var r$0 =  /*<<map.ml:254:33>>*/ param[4];
          /*<<map.ml:256:29>>*/ return r$0;
         /*<<map.ml:257:61>>*/ }
        function _d_(t1, t2){
          /*<<map.ml:260:6>>*/ if(! t1)  /*<<map.ml:261:22>>*/ return t2;
          /*<<map.ml:260:6>>*/ if(! t2)  /*<<map.ml:262:22>>*/ return t1;
         var
          match =  /*<<map.ml:264:23>>*/ min_binding(t2),
          d =  /*<<map.ml:264:37>>*/ match[2],
          x = match[1];
          /*<<map.ml:265:21>>*/ return  /*<<map.ml:265:44>>*/ bal
                 (t1, x, d,  /*<<map.ml:265:21>>*/ remove_min_binding(t2)) /*<<map.ml:265:44>>*/ ;
        }
        function remove(x, m){
          /*<<map.ml:267:19>>*/ if(! m)  /*<<map.ml:269:10>>*/ return 0;
         var
          r =  /*<<map.ml:267:19>>*/ m[4],
          d = m[3],
          v = m[2],
          l = m[1],
          c =  /*<<map.ml:271:18>>*/ caml_call2(Ord[1], x, v);
          /*<<map.ml:272:10>>*/ if(0 === c)
           /*<<map.ml:272:24>>*/ return _d_(l, r) /*<<map.ml:276:70>>*/ ;
          /*<<map.ml:273:15>>*/ if(0 <= c){
          var rr =  /*<<map.ml:276:21>>*/ remove(x, r);
           /*<<map.ml:276:35>>*/ return r === rr
                  ? m
                  :  /*<<map.ml:276:58>>*/ bal(l, v, d, rr) /*<<map.ml:276:70>>*/ ;
         }
         var ll =  /*<<map.ml:274:21>>*/ remove(x, l);
          /*<<map.ml:274:35>>*/ return l === ll
                 ? m
                 :  /*<<map.ml:274:58>>*/ bal(ll, v, d, r) /*<<map.ml:276:70>>*/ ;
        }
        function update(x, f, m){
          /*<<map.ml:278:19>>*/ if(! m){
          var match$0 =  /*<<map.ml:280:22>>*/ caml_call1(f, 0);
           /*<<map.ml:280:28>>*/ if(! match$0)
            /*<<map.ml:281:20>>*/ return 0;
          var data$0 =  /*<<map.ml:280:28>>*/ match$0[1];
           /*<<map.ml:282:25>>*/ return [0, 0, x, data$0, 0, 1];
         }
         var
          h =  /*<<map.ml:278:19>>*/ m[5],
          r = m[4],
          d = m[3],
          v = m[2],
          l = m[1],
          c =  /*<<map.ml:285:18>>*/ caml_call2(Ord[1], x, v);
          /*<<map.ml:286:10>>*/ if(0 === c){
          var match =  /*<<map.ml:287:18>>*/ caml_call1(f, [0, d]);
           /*<<map.ml:287:28>>*/ if(! match)
            /*<<map.ml:288:22>>*/ return _d_(l, r) /*<<map.ml:296:47>>*/ ;
          var data =  /*<<map.ml:287:28>>*/ match[1];
           /*<<map.ml:290:16>>*/ return d === data ? m : [0, l, x, data, r, h] /*<<map.ml:296:47>>*/ ;
         }
          /*<<map.ml:291:19>>*/ if(0 <= c){
          var rr =  /*<<map.ml:295:21>>*/ update(x, f, r);
           /*<<map.ml:296:12>>*/ return r === rr
                  ? m
                  :  /*<<map.ml:296:35>>*/ bal(l, v, d, rr) /*<<map.ml:296:47>>*/ ;
         }
         var ll =  /*<<map.ml:292:21>>*/ update(x, f, l);
          /*<<map.ml:293:12>>*/ return l === ll
                 ? m
                 :  /*<<map.ml:293:35>>*/ bal(ll, v, d, r) /*<<map.ml:296:47>>*/ ;
        }
        function add_to_list(x, data, m){
         function add(param){
           /*<<map.ml:299:16>>*/ if(! param)
            /*<<map.ml:299:33>>*/ return [0, [0, data, 0]];
          var l =  /*<<map.ml:299:16>>*/ param[1];
           /*<<map.ml:299:57>>*/ return [0, [0, data, l]];
          /*<<map.ml:299:73>>*/ }
          /*<<map.ml:300:6>>*/ return update(x, add, m) /*<<map.ml:300:20>>*/ ;
        }
        function iter(f, param$0){
         var param =  /*<<map.ml:302:17>>*/ param$0;
         for(;;){
          if(! param)  /*<<map.ml:303:17>>*/ return 0;
          var
           r =  /*<<map.ml:302:17>>*/ param[4],
           d = param[3],
           v = param[2],
           l = param[1];
           /*<<map.ml:305:10>>*/ iter(f, l);
           /*<<map.ml:305:20>>*/ caml_call2(f, v, d);
           /*<<map.ml:305:25>>*/ param = r;
         }
         /*<<map.ml:305:35>>*/ }
        function map(f, param){
          /*<<map.ml:307:16>>*/ if(! param)  /*<<map.ml:309:10>>*/ return 0;
         var
          h =  /*<<map.ml:307:16>>*/ param[5],
          r = param[4],
          d = param[3],
          v = param[2],
          l = param[1],
          l$0 =  /*<<map.ml:311:19>>*/ map(f, l),
          d$0 =  /*<<map.ml:312:19>>*/ caml_call1(f, d),
          r$0 =  /*<<map.ml:313:19>>*/ map(f, r);
          /*<<map.ml:314:10>>*/ return [0, l$0, v, d$0, r$0, h];
         /*<<map.ml:314:38>>*/ }
        function mapi(f, param){
          /*<<map.ml:316:17>>*/ if(! param)  /*<<map.ml:318:10>>*/ return 0;
         var
          h =  /*<<map.ml:316:17>>*/ param[5],
          r = param[4],
          d = param[3],
          v = param[2],
          l = param[1],
          l$0 =  /*<<map.ml:320:19>>*/ mapi(f, l),
          d$0 =  /*<<map.ml:321:19>>*/ caml_call2(f, v, d),
          r$0 =  /*<<map.ml:322:19>>*/ mapi(f, r);
          /*<<map.ml:323:10>>*/ return [0, l$0, v, d$0, r$0, h];
         /*<<map.ml:323:38>>*/ }
        function fold(f, m$0, accu$1){
         var m =  /*<<map.ml:326:6>>*/ m$0, accu = accu$1;
         for(;;){
          if(! m)  /*<<map.ml:327:17>>*/ return accu;
          var
           r =  /*<<map.ml:326:6>>*/ m[4],
           d = m[3],
           v = m[2],
           l = m[1],
           accu$0 =
              /*<<map.ml:329:26>>*/  /*<<map.ml:329:19>>*/ caml_call3
              (f, v, d,  /*<<map.ml:329:26>>*/ fold(f, l, accu));
           /*<<map.ml:329:42>>*/ m = r;
          accu = accu$0;
         }
        }
        function for_all(p, param$0){
         var param =  /*<<map.ml:331:20>>*/ param$0;
         for(;;){
          if(! param)  /*<<map.ml:332:17>>*/ return 1;
          var
           r =  /*<<map.ml:331:20>>*/ param[4],
           d = param[3],
           v = param[2],
           l = param[1],
           _q_ =  /*<<map.ml:333:29>>*/ caml_call2(p, v, d);
           /*<<map.ml:333:34>>*/ if(_q_){
           var _r_ =  /*<<map.ml:333:38>>*/ for_all(p, l);
            /*<<map.ml:333:49>>*/ if(_r_){param = r; continue;}
           var _s_ = _r_;
          }
          else
           var _s_ =  /*<<map.ml:333:34>>*/ _q_;
          return _s_;
         }
         /*<<map.ml:333:64>>*/ }
        function exists(p, param$0){
         var param =  /*<<map.ml:335:19>>*/ param$0;
         for(;;){
          if(! param)  /*<<map.ml:336:17>>*/ return 0;
          var
           r =  /*<<map.ml:335:19>>*/ param[4],
           d = param[3],
           v = param[2],
           l = param[1],
           _o_ =  /*<<map.ml:337:29>>*/ caml_call2(p, v, d);
           /*<<map.ml:337:34>>*/ if(_o_)
           var _p_ = _o_;
          else{
           var _q_ =  /*<<map.ml:337:38>>*/ exists(p, l);
            /*<<map.ml:337:48>>*/ if(! _q_){param = r; continue;}
           var _p_ = _q_;
          }
           /*<<map.ml:337:34>>*/ return _p_;
         }
         /*<<map.ml:337:62>>*/ }
        function add_min_binding(k, x, param){
          /*<<map.ml:347:28>>*/ if(! param)
           /*<<map.ml:348:17>>*/ return singleton(k, x) /*<<map.ml:350:41>>*/ ;
         var
          r =  /*<<map.ml:347:28>>*/ param[4],
          d = param[3],
          v = param[2],
          l = param[1];
          /*<<map.ml:350:12>>*/ return  /*<<map.ml:350:35>>*/ bal
                 ( /*<<map.ml:350:12>>*/ add_min_binding(k, x, l), v, d, r) /*<<map.ml:350:41>>*/ ;
        }
        function add_max_binding(k, x, param){
          /*<<map.ml:352:28>>*/ if(! param)
           /*<<map.ml:353:17>>*/ return singleton(k, x) /*<<map.ml:355:41>>*/ ;
         var
          r =  /*<<map.ml:352:28>>*/ param[4],
          d = param[3],
          v = param[2],
          l = param[1];
          /*<<map.ml:355:18>>*/ return  /*<<map.ml:355:41>>*/ bal
                 (l, v, d,  /*<<map.ml:355:18>>*/ add_max_binding(k, x, r)) /*<<map.ml:355:41>>*/ ;
        }
        function join(l, v, d, r){
          /*<<map.ml:361:6>>*/ if(! l)
           /*<<map.ml:362:22>>*/ return add_min_binding(v, d, r) /*<<map.ml:368:24>>*/ ;
          /*<<map.ml:361:6>>*/ if(! r)
           /*<<map.ml:363:22>>*/ return add_max_binding(v, d, l) /*<<map.ml:368:24>>*/ ;
         var
          rh =  /*<<map.ml:361:6>>*/ r[5],
          rr = r[4],
          rd = r[3],
          rv = r[2],
          rl = r[1],
          lh = l[5],
          lr = l[4],
          ld = l[3],
          lv = l[2],
          ll = l[1];
          /*<<map.ml:366:10>>*/ return (rh + 2 | 0) < lh
                 ?  /*<<map.ml:366:58>>*/ bal
                   (ll, lv, ld,  /*<<map.ml:366:43>>*/ join(lr, v, d, r))
                 : (lh
                   + 2
                   | 0)
                   < rh
                   ?  /*<<map.ml:367:49>>*/ bal
                     ( /*<<map.ml:367:34>>*/ join(l, v, d, rl), rv, rd, rr)
                   :  /*<<map.ml:368:10>>*/ create(l, v, d, r) /*<<map.ml:368:24>>*/ ;
        }
        function concat(t1, t2){
          /*<<map.ml:375:6>>*/ if(! t1)  /*<<map.ml:376:22>>*/ return t2;
          /*<<map.ml:375:6>>*/ if(! t2)  /*<<map.ml:377:22>>*/ return t1;
         var
          match =  /*<<map.ml:379:23>>*/ min_binding(t2),
          d =  /*<<map.ml:379:37>>*/ match[2],
          x = match[1];
          /*<<map.ml:380:22>>*/ return  /*<<map.ml:380:45>>*/ join
                 (t1, x, d,  /*<<map.ml:380:22>>*/ remove_min_binding(t2)) /*<<map.ml:380:45>>*/ ;
        }
        function concat_or_join(t1, v, d, t2){
          /*<<map.ml:383:6>>*/ if(! d)
           /*<<map.ml:385:16>>*/ return concat(t1, t2) /*<<map.ml:385:28>>*/ ;
         var d$0 =  /*<<map.ml:383:6>>*/ d[1];
          /*<<map.ml:384:18>>*/ return join(t1, v, d$0, t2) /*<<map.ml:385:28>>*/ ;
        }
        function split(x, param){
          /*<<map.ml:387:18>>*/ if(! param)  /*<<map.ml:389:10>>*/ return _a_;
         var
          r =  /*<<map.ml:387:18>>*/ param[4],
          d = param[3],
          v = param[2],
          l = param[1],
          c =  /*<<map.ml:391:18>>*/ caml_call2(Ord[1], x, v);
          /*<<map.ml:392:10>>*/ if(0 === c)
           /*<<map.ml:392:24>>*/ return [0, l, [0, d], r];
          /*<<map.ml:393:15>>*/ if(0 <= c){
          var
           match =  /*<<map.ml:396:33>>*/ split(x, r),
           rr =  /*<<map.ml:396:42>>*/ match[3],
           pres = match[2],
           lr = match[1];
           /*<<map.ml:396:47>>*/ return [0, join(l, v, d, lr), pres, rr] /*<<map.ml:396:60>>*/ ;
         }
         var
          match$0 =  /*<<map.ml:394:33>>*/ split(x, l),
          rl =  /*<<map.ml:394:42>>*/ match$0[3],
          pres$0 = match$0[2],
          ll = match$0[1];
          /*<<map.ml:394:57>>*/ return [0, ll, pres$0, join(rl, v, d, r)] /*<<map.ml:394:70>>*/ ;
         /*<<map.ml:396:71>>*/ }
        function merge(f, s1, s2){
          /*<<map.ml:399:6>>*/ if(s1){
          var h1 = s1[5], r1 = s1[4], d1 = s1[3], v1 = s1[2], l1 = s1[1];
           /*<<map.ml:401:60>>*/ if(height(s2) <= h1){
           var
            match =  /*<<map.ml:402:29>>*/ split(v1, s2),
            r2 =  /*<<map.ml:402:40>>*/ match[3],
            d2 = match[2],
            l2 = match[1],
            _l_ =  /*<<map.ml:403:64>>*/ merge(f, r1, r2),
            _m_ =  /*<<map.ml:403:44>>*/ caml_call3(f, v1, [0, d1], d2);
            /*<<map.ml:403:25>>*/ return  /*<<map.ml:403:40>>*/ concat_or_join
                   ( /*<<map.ml:403:25>>*/ merge(f, l1, l2), v1, _m_, _l_) /*<<map.ml:408:22>>*/ ;
          }
         }
         else if(! s2)  /*<<map.ml:400:26>>*/ return 0;
          /*<<map.ml:399:6>>*/ if(! s2)
           /*<<map.ml:408:10>>*/ throw caml_maybe_attach_backtrace
                 ([0, Assert_failure, _b_], 1);
         var
          r2$0 =  /*<<map.ml:399:6>>*/ s2[4],
          d2$0 = s2[3],
          v2 = s2[2],
          l2$0 = s2[1],
          match$0 =  /*<<map.ml:405:29>>*/ split(v2, s1),
          r1$0 =  /*<<map.ml:405:40>>*/ match$0[3],
          d1$0 = match$0[2],
          l1$0 = match$0[1],
          _n_ =  /*<<map.ml:406:64>>*/ merge(f, r1$0, r2$0),
          _o_ =  /*<<map.ml:406:44>>*/ caml_call3(f, v2, d1$0, [0, d2$0]);
          /*<<map.ml:406:25>>*/ return  /*<<map.ml:406:40>>*/ concat_or_join
                 ( /*<<map.ml:406:25>>*/ merge(f, l1$0, l2$0), v2, _o_, _n_) /*<<map.ml:408:22>>*/ ;
        }
        function union(f, s1, s2){
          /*<<map.ml:411:6>>*/ if(s1){
          if(s2){
           var
            h2 = s2[5],
            r2 = s2[4],
            d2 = s2[3],
            v2 = s2[2],
            l2 = s2[1],
            h1 = s1[5],
            r1 = s1[4],
            d1 = s1[3],
            v1 = s1[2],
            l1 = s1[1];
            /*<<map.ml:415:10>>*/ if(h2 <= h1){
            var
             match =  /*<<map.ml:416:31>>*/ split(v1, s2),
             r2$0 =  /*<<map.ml:416:42>>*/ match[3],
             d2$0 = match[2],
             l2$0 = match[1],
             l =  /*<<map.ml:417:20>>*/ union(f, l1, l2$0),
             r =  /*<<map.ml:417:42>>*/ union(f, r1, r2$0);
             /*<<map.ml:418:12>>*/ if(! d2$0)
              /*<<map.ml:419:22>>*/ return join(l, v1, d1, r) /*<<map.ml:426:59>>*/ ;
            var d2$1 =  /*<<map.ml:418:12>>*/ d2$0[1];
             /*<<map.ml:420:45>>*/ return  /*<<map.ml:420:57>>*/ concat_or_join
                    (l,
                     v1,
                      /*<<map.ml:420:45>>*/ caml_call3(f, v1, d1, d2$1),
                     r) /*<<map.ml:426:59>>*/ ;
           }
           var
            match$0 =  /*<<map.ml:422:31>>*/ split(v2, s1),
            r1$0 =  /*<<map.ml:422:42>>*/ match$0[3],
            d1$0 = match$0[2],
            l1$0 = match$0[1],
            l$0 =  /*<<map.ml:423:20>>*/ union(f, l1$0, l2),
            r$0 =  /*<<map.ml:423:42>>*/ union(f, r1$0, r2);
            /*<<map.ml:424:12>>*/ if(! d1$0)
             /*<<map.ml:425:22>>*/ return join(l$0, v2, d2, r$0) /*<<map.ml:426:59>>*/ ;
           var d1$1 =  /*<<map.ml:424:12>>*/ d1$0[1];
            /*<<map.ml:426:45>>*/ return  /*<<map.ml:426:57>>*/ concat_or_join
                   (l$0,
                    v2,
                     /*<<map.ml:426:45>>*/ caml_call3(f, v2, d1$1, d2),
                    r$0) /*<<map.ml:426:59>>*/ ;
          }
          var s =  /*<<map.ml:411:6>>*/ s1;
         }
         else
          var s = s2;
          /*<<map.ml:412:35>>*/ return s;
         /*<<map.ml:426:59>>*/ }
        function filter(p, m){
          /*<<map.ml:428:19>>*/ if(! m)  /*<<map.ml:429:17>>*/ return 0;
         var
          r =  /*<<map.ml:428:19>>*/ m[4],
          d = m[3],
          v = m[2],
          l = m[1],
          l$0 =  /*<<map.ml:432:19>>*/ filter(p, l),
          pvd =  /*<<map.ml:433:20>>*/ caml_call2(p, v, d),
          r$0 =  /*<<map.ml:434:19>>*/ filter(p, r);
          /*<<map.ml:435:10>>*/ if(! pvd)
           /*<<map.ml:436:15>>*/ return concat(l$0, r$0) /*<<map.ml:436:27>>*/ ;
          /*<<map.ml:435:22>>*/ if(l === l$0 && r === r$0)
           /*<<map.ml:435:45>>*/ return m;
          /*<<map.ml:435:52>>*/ return join(l$0, v, d, r$0) /*<<map.ml:436:27>>*/ ;
        }
        function filter_map(f, param){
          /*<<map.ml:438:23>>*/ if(! param)  /*<<map.ml:439:17>>*/ return 0;
         var
          r =  /*<<map.ml:438:23>>*/ param[4],
          d = param[3],
          v = param[2],
          l = param[1],
          l$0 =  /*<<map.ml:442:19>>*/ filter_map(f, l),
          fvd =  /*<<map.ml:443:20>>*/ caml_call2(f, v, d),
          r$0 =  /*<<map.ml:444:19>>*/ filter_map(f, r);
          /*<<map.ml:445:10>>*/ if(! fvd)
           /*<<map.ml:447:22>>*/ return concat(l$0, r$0) /*<<map.ml:448:13>>*/ ;
         var d$0 =  /*<<map.ml:445:10>>*/ fvd[1];
          /*<<map.ml:446:25>>*/ return join(l$0, v, d$0, r$0) /*<<map.ml:448:13>>*/ ;
        }
        function partition(p, param){
          /*<<map.ml:450:22>>*/ if(! param)  /*<<map.ml:451:17>>*/ return _c_;
         var
          r =  /*<<map.ml:450:22>>*/ param[4],
          d = param[3],
          v = param[2],
          l = param[1],
          match =  /*<<map.ml:454:25>>*/ partition(p, l),
          lf =  /*<<map.ml:454:38>>*/ match[2],
          lt = match[1],
          pvd =  /*<<map.ml:455:20>>*/ caml_call2(p, v, d),
          match$0 =  /*<<map.ml:456:25>>*/ partition(p, r),
          rf =  /*<<map.ml:456:38>>*/ match$0[2],
          rt = match$0[1];
          /*<<map.ml:457:10>>*/ if(pvd){
          var _k_ =  /*<<map.ml:458:32>>*/ concat(lf, rf);
           /*<<map.ml:458:16>>*/ return [0, join(lt, v, d, rt), _k_] /*<<map.ml:458:30>>*/ ;
         }
         var _l_ =  /*<<map.ml:459:30>>*/ join(lf, v, d, rf);
          /*<<map.ml:459:16>>*/ return [0, concat(lt, rt), _l_] /*<<map.ml:459:28>>*/ ;
         /*<<map.ml:459:45>>*/ }
        function cons_enum(m$0, e$1){
         var m =  /*<<map.ml:464:6>>*/ m$0, e = e$1;
         for(;;){
          if(! m)  /*<<map.ml:465:17>>*/ return e;
          var
           r =  /*<<map.ml:464:6>>*/ m[4],
           d = m[3],
           v = m[2],
           l = m[1],
           e$0 =  /*<<map.ml:466:29>>*/ [0, v, d, r, e];
          m = l;
          e = e$0;
         }
         /*<<map.ml:466:59>>*/ }
        function compare(cmp, m1, m2){
         var
          e2$2 =  /*<<map.ml:480:40>>*/ cons_enum(m2, 0),
          e1$2 =  /*<<map.ml:480:21>>*/ cons_enum(m1, 0),
          e1 =  /*<<map.ml:480:39>>*/ e1$2,
          e2 = e2$2;
         for(;;){
           /*<<map.ml:470:10>>*/ if(! e1)
           return e2 ? -1 : 0 /*<<map.ml:480:58>>*/ ;
           /*<<map.ml:470:10>>*/ if(! e2)  /*<<map.ml:473:22>>*/ return 1;
          var
           e2$0 =  /*<<map.ml:470:10>>*/ e2[4],
           r2 = e2[3],
           d2 = e2[2],
           v2 = e2[1],
           e1$0 = e1[4],
           r1 = e1[3],
           d1 = e1[2],
           v1 = e1[1],
           c =  /*<<map.ml:475:20>>*/ caml_call2(Ord[1], v1, v2);
           /*<<map.ml:476:12>>*/ if(0 !== c)  /*<<map.ml:476:27>>*/ return c;
          var c$0 =  /*<<map.ml:477:20>>*/ caml_call2(cmp, d1, d2);
           /*<<map.ml:478:12>>*/ if(0 !== c$0)
            /*<<map.ml:478:27>>*/ return c$0;
          var
           e2$1 =  /*<<map.ml:479:42>>*/ cons_enum(r2, e2$0),
           e1$1 =  /*<<map.ml:479:24>>*/ cons_enum(r1, e1$0);
           /*<<map.ml:479:41>>*/ e1 = e1$1;
          e2 = e2$1;
         }
         /*<<map.ml:480:58>>*/ }
        function equal(cmp, m1, m2){
         var
          e2$2 =  /*<<map.ml:491:38>>*/ cons_enum(m2, 0),
          e1$2 =  /*<<map.ml:491:19>>*/ cons_enum(m1, 0),
          e1 =  /*<<map.ml:491:37>>*/ e1$2,
          e2 = e2$2;
         for(;;){
           /*<<map.ml:484:10>>*/ if(! e1)
           return e2 ? 0 : 1 /*<<map.ml:491:56>>*/ ;
           /*<<map.ml:484:10>>*/ if(! e2)  /*<<map.ml:487:22>>*/ return 0;
          var
           e2$0 =  /*<<map.ml:484:10>>*/ e2[4],
           r2 = e2[3],
           d2 = e2[2],
           v2 = e2[1],
           e1$0 = e1[4],
           r1 = e1[3],
           d1 = e1[2],
           v1 = e1[1],
           _i_ =
              /*<<map.ml:489:12>>*/ 0 === caml_call2(Ord[1], v1, v2) ? 1 : 0;
           /*<<map.ml:489:29>>*/ if(_i_){
           var _j_ =  /*<<map.ml:489:37>>*/ caml_call2(cmp, d1, d2);
            /*<<map.ml:489:46>>*/ if(_j_){
            var
             e2$1 =  /*<<map.ml:490:40>>*/ cons_enum(r2, e2$0),
             e1$1 =  /*<<map.ml:490:22>>*/ cons_enum(r1, e1$0);
             /*<<map.ml:490:39>>*/ e1 = e1$1;
            e2 = e2$1;
            continue;
           }
           var _k_ =  /*<<map.ml:489:46>>*/ _j_;
          }
          else
           var _k_ =  /*<<map.ml:489:29>>*/ _i_;
          return _k_;
         }
         /*<<map.ml:491:56>>*/ }
        function cardinal(param){
          /*<<map.ml:493:23>>*/ if(! param)  /*<<map.ml:494:17>>*/ return 0;
         var
          r =  /*<<map.ml:493:23>>*/ param[4],
          l = param[1],
          _i_ =  /*<<map.ml:495:40>>*/ cardinal(r);
          /*<<map.ml:495:23>>*/ return (cardinal(l) + 1 | 0) + _i_ | 0 /*<<map.ml:495:33>>*/ ;
         /*<<map.ml:495:50>>*/ }
        function bindings_aux(accu$1, param$0){
         var accu =  /*<<map.ml:497:25>>*/ accu$1, param = param$0;
         for(;;){
          if(! param)  /*<<map.ml:498:17>>*/ return accu;
          var
           r =  /*<<map.ml:497:25>>*/ param[4],
           d = param[3],
           v = param[2],
           l = param[1],
           accu$0 =
              /*<<map.ml:499:53>>*/ [0, [0, v, d], bindings_aux(accu, r)];
           /*<<map.ml:499:72>>*/ accu = accu$0;
          param = l;
         }
         /*<<map.ml:499:75>>*/ }
        function bindings(s){
          /*<<map.ml:502:6>>*/ return bindings_aux(0, s) /*<<map.ml:502:23>>*/ ;
        }
        var empty =  /*<<?>>*/ 0;
        function of_list(bs){
          /*<<map.ml:509:21>>*/ return Stdlib_List[27].call
                 (null,
                  function(m, param){
                   var v =  /*<<map.ml:509:36>>*/ param[2], k = param[1];
                    /*<<map.ml:509:53>>*/ return add(k, v, m) /*<<map.ml:509:63>>*/ ;
                  },
                  empty,
                  bs) /*<<map.ml:509:72>>*/ ;
        }
        function add_seq(i, m){
          /*<<map.ml:512:6>>*/ return Stdlib_Seq[5].call
                 (null,
                  function(m, param){
                   var v =  /*<<map.ml:512:20>>*/ param[2], k = param[1];
                    /*<<map.ml:512:36>>*/ return add(k, v, m) /*<<map.ml:512:46>>*/ ;
                  },
                  m,
                  i) /*<<map.ml:512:50>>*/ ;
        }
        function of_seq(i){
          /*<<map.ml:514:19>>*/ return add_seq(i, empty) /*<<map.ml:514:34>>*/ ;
        }
        function seq_of_enum(c, param){
          /*<<map.ml:516:32>>*/ if(! c)  /*<<map.ml:517:15>>*/ return 0;
         var
          rest =  /*<<map.ml:516:32>>*/ c[4],
          t = c[3],
          v = c[2],
          k = c[1],
          _h_ =  /*<<map.ml:518:59>>*/ cons_enum(t, rest);
          /*<<map.ml:518:77>>*/ return [0,
                 [0, k, v],
                 function(_i_){
                   /*<<map.ml:518:46>>*/ return seq_of_enum(_h_, _i_);
                 }] /*<<map.ml:518:77>>*/ ;
         /*<<map.ml:518:78>>*/ }
        function to_seq(m){
         var _g_ =  /*<<map.ml:521:19>>*/ cons_enum(m, 0);
          /*<<map.ml:521:36>>*/ return function(_h_){
          return seq_of_enum(_g_, _h_);};
        }
        function snoc_enum(s$0, e$1){
         var s =  /*<<map.ml:524:6>>*/ s$0, e = e$1;
         for(;;){
          if(! s)  /*<<map.ml:525:17>>*/ return e;
          var
           r =  /*<<map.ml:524:6>>*/ s[4],
           d = s[3],
           v = s[2],
           l = s[1],
           e$0 =  /*<<map.ml:526:28>>*/ [0, v, d, l, e];
          s = r;
          e = e$0;
         }
         /*<<map.ml:526:58>>*/ }
        function rev_seq_of_enum(c, param){
          /*<<map.ml:528:36>>*/ if(! c)  /*<<map.ml:529:15>>*/ return 0;
         var
          rest =  /*<<map.ml:528:36>>*/ c[4],
          t = c[3],
          v = c[2],
          k = c[1],
          _f_ =  /*<<map.ml:531:44>>*/ snoc_enum(t, rest);
          /*<<map.ml:531:62>>*/ return [0,
                 [0, k, v],
                 function(_g_){
                   /*<<map.ml:531:27>>*/ return rev_seq_of_enum(_f_, _g_);
                 }] /*<<map.ml:531:62>>*/ ;
         /*<<map.ml:531:63>>*/ }
        function to_rev_seq(c){
         var _e_ =  /*<<map.ml:534:23>>*/ snoc_enum(c, 0);
          /*<<map.ml:534:40>>*/ return function(_f_){
          return rev_seq_of_enum(_e_, _f_);};
        }
        function to_seq_from(low, m){
         a:
         {
          var m$0 =  /*<<map.ml:546:19>>*/ m, c = 0;
          for(;;){
            /*<<map.ml:537:28>>*/ if(! m$0){var _d_ = c; break a;}
           var
            r = m$0[4],
            d = m$0[3],
            v = m$0[2],
            l = m$0[1],
            n =  /*<<map.ml:540:24>>*/ caml_call2(Ord[1], v, low);
            /*<<map.ml:540:41>>*/ if(0 === n) break;
            /*<<map.ml:542:23>>*/ if(0 <= n){
            var c$0 =  /*<<map.ml:543:21>>*/ [0, v, d, r, c];
            m$0 = l;
            c = c$0;
           }
           else
             /*<<map.ml:542:23>>*/ m$0 = r;
          }
          var _d_ =  /*<<map.ml:541:21>>*/ [0, v, d, r, c];
         }
          /*<<map.ml:546:34>>*/ return function(_e_){
          return seq_of_enum(_d_, _e_);};
        }
         /*<<?>>*/ return [0,
                empty,
                add,
                add_to_list,
                update,
                singleton,
                remove,
                merge,
                union,
                cardinal,
                bindings,
                min_binding,
                min_binding_opt,
                max_binding,
                max_binding_opt,
                min_binding,
                min_binding_opt,
                find,
                find_opt,
                find_first,
                find_first_opt,
                find_last,
                find_last_opt,
                iter,
                fold,
                map,
                mapi,
                filter,
                filter_map,
                partition,
                split,
                is_empty,
                mem,
                equal,
                compare,
                for_all,
                exists,
                bindings,
                of_list,
                to_seq,
                to_rev_seq,
                to_seq_from,
                add_seq,
                of_seq];
       }];
   runtime.caml_register_global(12, Stdlib_Map, "Stdlib__Map");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Stack
//# unitInfo: Requires: Stdlib__List, Stdlib__Seq
//# shape: Stdlib__Stack:[N,F(1)*,F(2),F(1),F(1),F(1),F(1),F(1)*,F(1),F(1)*,F(1)*,F(1)*,F(2),F(3),F(1)*,F(2),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    global_data = runtime.caml_get_global_data(),
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib_List = global_data.Stdlib__List,
    Empty = [248, "Stdlib.Stack.Empty", runtime.caml_fresh_oo_id(0)];
   function create(param){
     /*<<stack.ml:20:16>>*/ return [0, 0, 0];
    /*<<stack.ml:20:36>>*/ }
   function clear(s){
     /*<<stack.ml:22:14>>*/ s[1] = 0;
     /*<<stack.ml:22:25>>*/ s[2] = 0;
    return 0;
    /*<<stack.ml:22:35>>*/ }
   function copy(s){
     /*<<stack.ml:24:13>>*/ return [0, s[1], s[2]];
    /*<<stack.ml:24:38>>*/ }
   function push(x, s){
     /*<<stack.ml:26:15>>*/ s[1] = [0, x, s[1]];
     /*<<stack.ml:26:32>>*/ s[2] = s[2] + 1 | 0;
    return 0;
    /*<<stack.ml:26:50>>*/ }
   function pop(s){
    var match =  /*<<stack.ml:29:2>>*/ s[1];
    if(! match)
      /*<<stack.ml:31:14>>*/ throw caml_maybe_attach_backtrace(Empty, 1);
    var tl =  /*<<stack.ml:29:2>>*/ match[2], hd = match[1];
     /*<<stack.ml:30:14>>*/ s[1] = tl;
     /*<<stack.ml:30:25>>*/ s[2] = s[2] - 1 | 0;
     /*<<stack.ml:30:45>>*/ return hd;
    /*<<stack.ml:31:25>>*/ }
   function pop_opt(s){
    var match =  /*<<stack.ml:34:2>>*/ s[1];
    if(! match)  /*<<stack.ml:36:14>>*/ return 0;
    var tl =  /*<<stack.ml:34:2>>*/ match[2], hd = match[1];
     /*<<stack.ml:35:14>>*/ s[1] = tl;
     /*<<stack.ml:35:25>>*/ s[2] = s[2] - 1 | 0;
     /*<<stack.ml:35:45>>*/ return [0, hd];
    /*<<stack.ml:36:18>>*/ }
   function drop(s){
    var match =  /*<<stack.ml:39:2>>*/ s[1];
    if(! match)
      /*<<stack.ml:41:10>>*/ throw caml_maybe_attach_backtrace(Empty, 1);
    var tl =  /*<<stack.ml:39:2>>*/ match[2];
     /*<<stack.ml:40:15>>*/ s[1] = tl;
     /*<<stack.ml:40:26>>*/ s[2] = s[2] - 1 | 0;
    return 0;
    /*<<stack.ml:41:21>>*/ }
   function top(s){
    var match =  /*<<stack.ml:44:2>>*/ s[1];
    if(! match)
      /*<<stack.ml:46:13>>*/ throw caml_maybe_attach_backtrace(Empty, 1);
    var hd =  /*<<stack.ml:44:2>>*/ match[1];
     /*<<stack.ml:45:13>>*/ return hd;
    /*<<stack.ml:46:24>>*/ }
   function top_opt(s){
    var match =  /*<<stack.ml:49:2>>*/ s[1];
    if(! match)  /*<<stack.ml:51:13>>*/ return 0;
    var hd =  /*<<stack.ml:49:2>>*/ match[1];
     /*<<stack.ml:50:13>>*/ return [0, hd];
    /*<<stack.ml:51:17>>*/ }
   function is_empty(s){
     /*<<stack.ml:53:17>>*/ return 0 === s[1] ? 1 : 0;
    /*<<stack.ml:53:27>>*/ }
   function length(s){
     /*<<stack.ml:55:15>>*/ return s[2];
    /*<<stack.ml:55:20>>*/ }
   function iter(f, s){
     /*<<stack.ml:57:15>>*/ return Stdlib_List[19].call(null, f, s[1]) /*<<stack.ml:57:30>>*/ ;
   }
   function fold(f, acc, s){
     /*<<stack.ml:59:19>>*/ return Stdlib_List[27].call(null, f, acc, s[1]) /*<<stack.ml:59:43>>*/ ;
   }
   function to_seq(s){
     /*<<stack.ml:63:15>>*/ return Stdlib_List[69].call(null, s[1]) /*<<stack.ml:63:30>>*/ ;
   }
   function add_seq(q, i){
     /*<<stack.ml:65:18>>*/ return Stdlib_Seq[4].call
            (null,
             function(x){
               /*<<stack.ml:65:37>>*/ return push(x, q) /*<<stack.ml:65:45>>*/ ;
             },
             i) /*<<stack.ml:65:48>>*/ ;
   }
   function of_seq(g){
    var s =  /*<<stack.ml:68:10>>*/ create(0);
     /*<<stack.ml:69:2>>*/ add_seq(s, g);
     /*<<stack.ml:69:13>>*/ return s;
    /*<<stack.ml:70:3>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (3,
     [0,
      Empty,
      create,
      push,
      pop,
      pop_opt,
      drop,
      top,
      top_opt,
      clear,
      copy,
      is_empty,
      length,
      iter,
      fold,
      to_seq,
      add_seq,
      of_seq],
     "Stdlib__Stack");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Queue
//# unitInfo: Requires: Stdlib__Seq
//# shape: Stdlib__Queue:[N,F(1)*,F(2),F(2),F(1),F(1),F(1),F(1),F(1)*,F(1),F(1),F(1),F(1),F(1)*,F(1)*,F(2),F(3),F(2),F(1)*->F(1)*,F(2),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    Stdlib_Seq = runtime.caml_get_global_data().Stdlib__Seq,
    Empty = [248, "Stdlib.Queue.Empty", runtime.caml_fresh_oo_id(0)];
   function create(param){
     /*<<queue.ml:29:16>>*/ return [0, 0, 0, 0];
    /*<<queue.ml:33:1>>*/ }
   function clear(q){
     /*<<queue.ml:36:2>>*/ q[1] = 0;
     /*<<queue.ml:37:2>>*/ q[2] = 0;
     /*<<queue.ml:38:2>>*/ q[3] = 0;
    return 0;
    /*<<queue.ml:38:15>>*/ }
   function add(x, q){
    var
     cell =  /*<<queue.ml:41:2>>*/ [0, x, 0],
     match =  /*<<queue.ml:45:2>>*/ q[3];
    return match
            ? (q[1] = q[1] + 1 | 0, match[2] = cell, q[3] = cell, 0)
            : (q[1] = 1, q[2] = cell, q[3] = cell, 0) /*<<queue.ml:53:18>>*/ ;
   }
   function peek(q){
    var match =  /*<<queue.ml:59:2>>*/ q[2];
    if(! match)
      /*<<queue.ml:60:11>>*/ throw caml_maybe_attach_backtrace(Empty, 1);
    var content =  /*<<queue.ml:59:2>>*/ match[1];
     /*<<queue.ml:61:24>>*/ return content;
    /*<<queue.ml:61:31>>*/ }
   function peek_opt(q){
    var match =  /*<<queue.ml:64:2>>*/ q[2];
    if(! match)  /*<<queue.ml:65:11>>*/ return 0;
    var content =  /*<<queue.ml:64:2>>*/ match[1];
     /*<<queue.ml:66:24>>*/ return [0, content];
    /*<<queue.ml:66:36>>*/ }
   function take(q){
    var match =  /*<<queue.ml:72:2>>*/ q[2];
    if(! match)
      /*<<queue.ml:73:11>>*/ throw caml_maybe_attach_backtrace(Empty, 1);
    var content =  /*<<queue.ml:72:2>>*/ match[1];
    if(match[2]){
     var next = match[2];
      /*<<queue.ml:78:4>>*/ q[1] = q[1] - 1 | 0;
      /*<<queue.ml:79:4>>*/ q[2] = next;
      /*<<queue.ml:80:4>>*/ return content;
    }
     /*<<queue.ml:75:4>>*/ clear(q);
     /*<<queue.ml:75:11>>*/ return content;
    /*<<queue.ml:80:11>>*/ }
   function take_opt(q){
    var match =  /*<<queue.ml:83:2>>*/ q[2];
    if(! match)  /*<<queue.ml:84:11>>*/ return 0;
    var content =  /*<<queue.ml:83:2>>*/ match[1];
    if(match[2]){
     var next = match[2];
      /*<<queue.ml:89:4>>*/ q[1] = q[1] - 1 | 0;
      /*<<queue.ml:90:4>>*/ q[2] = next;
      /*<<queue.ml:91:4>>*/ return [0, content];
    }
     /*<<queue.ml:86:4>>*/ clear(q);
     /*<<queue.ml:86:11>>*/ return [0, content];
    /*<<queue.ml:91:16>>*/ }
   function drop(q){
    var match =  /*<<queue.ml:97:2>>*/ q[2];
    if(! match)
      /*<<queue.ml:98:11>>*/ throw caml_maybe_attach_backtrace(Empty, 1);
     /*<<queue.ml:97:2>>*/ if(! match[2])
      /*<<queue.ml:100:4>>*/ return clear(q) /*<<queue.ml:103:19>>*/ ;
    var next =  /*<<queue.ml:97:2>>*/ match[2];
     /*<<queue.ml:102:4>>*/ q[1] = q[1] - 1 | 0;
     /*<<queue.ml:103:4>>*/ q[2] = next;
    return 0;
    /*<<queue.ml:103:19>>*/ }
   function copy(q){
    var
     cell$0 =  /*<<queue.ml:117:11>>*/ q[2],
     q_res = [0, q[1], 0, 0],
     prev = 0,
     cell = cell$0;
    for(;;){
      /*<<queue.ml:107:4>>*/ if(! cell){
       /*<<queue.ml:108:13>>*/ q_res[3] = prev;
       /*<<queue.ml:108:33>>*/ return q_res;
     }
     var
      content =  /*<<queue.ml:107:4>>*/ cell[1],
      next = cell[2],
      prev$0 =  /*<<queue.ml:110:6>>*/ [0, content, 0];
      /*<<queue.ml:111:6>>*/ if(prev){
       /*<<queue.ml:113:18>>*/ prev[2] = prev$0;
      prev = prev$0;
      cell = next;
     }
     else{
       /*<<queue.ml:112:15>>*/ q_res[2] = prev$0;
       /*<<queue.ml:115:6>>*/ prev = prev$0;
      cell = next;
     }
    }
    /*<<queue.ml:117:74>>*/ }
   function is_empty(q){
     /*<<queue.ml:120:2>>*/ return 0 === q[1] ? 1 : 0;
    /*<<queue.ml:120:14>>*/ }
   function length(q){
     /*<<queue.ml:123:2>>*/ return q[1];
    /*<<queue.ml:123:10>>*/ }
   function iter(f, q){
    var cell$0 =  /*<<queue.ml:133:13>>*/ q[2], cell = cell$0;
    for(;;){
      /*<<queue.ml:127:4>>*/ if(! cell)  /*<<queue.ml:128:13>>*/ return 0;
     var content =  /*<<queue.ml:127:4>>*/ cell[1], next = cell[2];
      /*<<queue.ml:130:6>>*/ caml_call1(f, content);
      /*<<queue.ml:130:15>>*/ cell = next;
    }
    /*<<queue.ml:133:27>>*/ }
   function fold(f, accu$1, q){
    var cell$0 =  /*<<queue.ml:143:18>>*/ q[2], accu = accu$1, cell = cell$0;
    for(;;){
      /*<<queue.ml:137:4>>*/ if(! cell)  /*<<queue.ml:138:13>>*/ return accu;
     var
      content =  /*<<queue.ml:137:4>>*/ cell[1],
      next = cell[2],
      accu$0 =  /*<<queue.ml:140:17>>*/ caml_call2(f, accu, content);
      /*<<queue.ml:141:6>>*/ accu = accu$0;
     cell = next;
    }
    /*<<queue.ml:143:37>>*/ }
   function transfer(q1, q2){
    var _b_ =  /*<<queue.ml:146:2>>*/ 0 < q1[1] ? 1 : 0;
    if(! _b_) return _b_;
    var match =  /*<<queue.ml:147:4>>*/ q2[3];
    return match
            ? (q2
               [1]
              = q2[1] + q1[1] | 0,
              match[2] = q1[2],
              q2[3] = q1[3],
               /*<<queue.ml:157:6>>*/ clear(q1))
            : (q2
               [1]
              = q1[1],
              q2[2] = q1[2],
              q2[3] = q1[3],
               /*<<queue.ml:152:6>>*/ clear(q1)) /*<<queue.ml:157:14>>*/ ;
   }
   function to_seq(q){
    function aux(c, param){
      /*<<queue.ml:162:21>>*/ if(! c)  /*<<queue.ml:163:13>>*/ return 0;
     var x =  /*<<queue.ml:162:21>>*/ c[1], next = c[2];
      /*<<queue.ml:164:56>>*/ return [0,
             x,
             function(_b_){ /*<<queue.ml:164:48>>*/ return aux(next, _b_);}] /*<<queue.ml:164:56>>*/ ;
     /*<<queue.ml:164:57>>*/ }
    var _a_ =  /*<<queue.ml:166:2>>*/ q[2];
    return function(_b_){
      /*<<?>>*/ return aux(_a_, _b_);} /*<<queue.ml:166:2>>*/ ;
    /*<<queue.ml:166:13>>*/ }
   function add_seq(q, i){
     /*<<queue.ml:168:18>>*/ return Stdlib_Seq[4].call
            (null,
             function(x){
               /*<<queue.ml:168:37>>*/ return add(x, q) /*<<queue.ml:168:45>>*/ ;
             },
             i) /*<<queue.ml:168:48>>*/ ;
   }
   function of_seq(g){
    var q =  /*<<queue.ml:171:10>>*/ create(0);
     /*<<queue.ml:172:2>>*/ add_seq(q, g);
     /*<<queue.ml:172:13>>*/ return q;
    /*<<queue.ml:173:3>>*/ }
    /*<<queue.ml:143:2>>*/ runtime.caml_register_global
    (2,
     [0,
      Empty,
      create,
      add,
      add,
      take,
      take_opt,
      take,
      peek,
      peek_opt,
      peek,
      drop,
      clear,
      copy,
      is_empty,
      length,
      iter,
      fold,
      transfer,
      to_seq,
      add_seq,
      of_seq],
     "Stdlib__Queue");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Buffer
//# unitInfo: Requires: Stdlib, Stdlib__Bytes, Stdlib__Seq, Stdlib__String, Stdlib__Sys
//# shape: Stdlib__Buffer:[F(1)*,F(1),F(1),F(3),F(5),F(2),F(1)*,F(1),F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(4),F(4),F(3),F(2),F(3),F(1)*->F(1),F(1)*->F(1),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_bswap16 = runtime.caml_bswap16,
    caml_bytes_get = runtime.caml_bytes_get,
    caml_bytes_set = runtime.caml_bytes_set,
    caml_bytes_set16 = runtime.caml_bytes_set16,
    caml_bytes_set32 = runtime.caml_bytes_set32,
    caml_bytes_set64 = runtime.caml_bytes_set64,
    caml_bytes_unsafe_set = runtime.caml_bytes_unsafe_set,
    caml_create_bytes = runtime.caml_create_bytes,
    caml_int32_bswap = runtime.caml_int32_bswap,
    caml_int64_bswap = runtime.caml_int64_bswap,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_bytes_length = runtime.caml_ml_bytes_length,
    caml_ml_string_length = runtime.caml_ml_string_length,
    caml_string_get = runtime.caml_string_get,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Bytes = global_data.Stdlib__Bytes,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib = global_data.Stdlib,
    Stdlib_String = global_data.Stdlib__String,
    Assert_failure = global_data.Assert_failure,
    dummy = 0;
   function create(n){
    var
     n$0 =  /*<<buffer.ml:41:1>>*/ 1 <= n ? n : 1,
     n$1 =  /*<<buffer.ml:42:1>>*/ Stdlib_Sys[13] < n$0 ? Stdlib_Sys[13] : n$0,
     s =  /*<<buffer.ml:43:9>>*/ caml_create_bytes(n$1);
     /*<<buffer.ml:44:1>>*/ return [0, [0, s, n$1], 0, s];
    /*<<buffer.ml:44:71>>*/ }
   function contents(b){
     /*<<buffer.ml:46:17>>*/ return Stdlib_Bytes[8].call
            (null, b[1][1], 0, b[2]) /*<<buffer.ml:46:61>>*/ ;
   }
   function to_bytes(b){
     /*<<buffer.ml:47:17>>*/ return Stdlib_Bytes[7].call
            (null, b[1][1], 0, b[2]) /*<<buffer.ml:47:54>>*/ ;
   }
   function sub(b, ofs, len){
     /*<<buffer.ml:50:2>>*/ if
     (0 <= ofs && 0 <= len && (b[2] - len | 0) >= ofs)
      /*<<buffer.ml:52:7>>*/ return Stdlib_Bytes[8].call
             (null, b[1][1], ofs, len) /*<<buffer.ml:52:46>>*/ ;
     /*<<buffer.ml:51:7>>*/ return Stdlib[1].call(null, "Buffer.sub") /*<<buffer.ml:52:46>>*/ ;
   }
   function blit(src, srcoff, dst, dstoff, len){
     /*<<buffer.ml:56:2>>*/ if
     (0 <= len
      &&
       0 <= srcoff
       &&
        (src[2] - len | 0) >= srcoff
        && 0 <= dstoff && (caml_ml_bytes_length(dst) - len | 0) >= dstoff)
      /*<<buffer.ml:60:4>>*/ return Stdlib_Bytes[11].call
             (null, src[1][1], srcoff, dst, dstoff, len) /*<<buffer.ml:60:53>>*/ ;
     /*<<buffer.ml:58:7>>*/ return Stdlib[1].call(null, "Buffer.blit") /*<<buffer.ml:60:53>>*/ ;
   }
   function nth(b, ofs){
    var
     position =  /*<<buffer.ml:64:2>>*/ b[2],
     match =  /*<<buffer.ml:65:2>>*/ b[1],
     length = match[2],
     buffer = match[1];
     /*<<buffer.ml:66:2>>*/ if
     (0 <= ofs && position > ofs && length >= position)
      /*<<buffer.ml:68:7>>*/ return runtime.caml_bytes_unsafe_get(buffer, ofs) /*<<buffer.ml:68:34>>*/ ;
     /*<<buffer.ml:67:3>>*/ return Stdlib[1].call(null, "Buffer.nth") /*<<buffer.ml:68:34>>*/ ;
   }
   function length(b){
     /*<<buffer.ml:71:15>>*/ return b[2];
    /*<<buffer.ml:71:25>>*/ }
   function clear(b){
     /*<<buffer.ml:73:14>>*/ b[2] = 0;
    return 0;
    /*<<buffer.ml:73:29>>*/ }
   function reset(b){
     /*<<buffer.ml:76:2>>*/ b[2] = 0;
    var inner =  /*<<buffer.ml:77:2>>*/ [0, b[3], caml_ml_bytes_length(b[3])];
     /*<<buffer.ml:80:2>>*/ b[1] = inner;
    return 0;
    /*<<buffer.ml:80:18>>*/ }
   function resize(b, more){
    var
     old_pos =  /*<<buffer.ml:87:2>>*/ b[2],
     old_len =  /*<<buffer.ml:88:2>>*/ b[1][2],
     new_len =  /*<<buffer.ml:90:2>>*/ old_len;
    for(;;){
     if(new_len >= (old_pos + more | 0)) break;
      /*<<buffer.ml:90:37>>*/ new_len = 2 * new_len | 0;
    }
    var
     new_len$0 =
        /*<<buffer.ml:91:2>>*/ Stdlib_Sys[13] < new_len
        ? (old_pos
          + more
          | 0)
          <= Stdlib_Sys[13]
          ? Stdlib_Sys[13]
          : ( /*<<buffer.ml:94:9>>*/ Stdlib
              [2].call
             (null, "Buffer.add: cannot grow buffer"),
            new_len)
        : new_len,
     new_buffer =  /*<<buffer.ml:96:19>>*/ caml_create_bytes(new_len$0);
     /*<<buffer.ml:99:2>>*/ Stdlib_Bytes[11].call
     (null, b[1][1], 0, new_buffer, 0, b[2]);
     /*<<buffer.ml:99:53>>*/ b[1] = [0, new_buffer, new_len$0];
    /*<<buffer.ml:100:55>>*/ }
   function add_char(b, c){
    var
     pos =  /*<<buffer.ml:113:2>>*/ b[2],
     match =  /*<<buffer.ml:114:2>>*/ b[1],
     length = match[2],
     buffer = match[1];
     /*<<buffer.ml:115:2>>*/ if(length <= pos){
      /*<<buffer.ml:116:4>>*/ resize(b, 1);
      /*<<buffer.ml:117:4>>*/ caml_bytes_set(b[1][1], b[2], c);
    }
    else
      /*<<buffer.ml:119:4>>*/ caml_bytes_unsafe_set(buffer, pos, c);
     /*<<buffer.ml:120:2>>*/ b[2] = pos + 1 | 0;
    return 0;
    /*<<buffer.ml:120:23>>*/ }
   function add_utf_8_uchar(b, u){
     /*<<buffer.ml:126:2>>*/ for(;;){
     var pos = b[2], uchar_utf_8_byte_length_max =  /*<<?>>*/ 4;
      /*<<buffer.ml:127:2>>*/ if(b[1][2] <= pos)
       /*<<buffer.ml:127:32>>*/ resize(b, uchar_utf_8_byte_length_max);
     var
      n =
         /*<<buffer.ml:128:10>>*/ Stdlib_Bytes[51].call(null, b[1][1], pos, u);
      /*<<buffer.ml:129:2>>*/ if(0 !== n){
       /*<<buffer.ml:131:7>>*/ b[2] = pos + n | 0;
      return 0;
     }
      /*<<buffer.ml:130:8>>*/ resize(b, uchar_utf_8_byte_length_max);
    }
    /*<<buffer.ml:131:30>>*/ }
   var uchar_utf_16_byte_length_max =  /*<<?>>*/ 4;
   function add_utf_16be_uchar(b, u){
     /*<<buffer.ml:134:2>>*/ for(;;){
     var pos = b[2];
      /*<<buffer.ml:135:2>>*/ if(b[1][2] <= pos)
       /*<<buffer.ml:135:32>>*/ resize(b, uchar_utf_16_byte_length_max);
     var
      n =
         /*<<buffer.ml:136:10>>*/ Stdlib_Bytes[54].call(null, b[1][1], pos, u);
      /*<<buffer.ml:137:2>>*/ if(0 !== n){
       /*<<buffer.ml:139:7>>*/ b[2] = pos + n | 0;
      return 0;
     }
      /*<<buffer.ml:138:8>>*/ resize(b, uchar_utf_16_byte_length_max);
    }
    /*<<buffer.ml:139:30>>*/ }
   function add_utf_16le_uchar(b, u){
     /*<<buffer.ml:142:2>>*/ for(;;){
     var pos = b[2];
      /*<<buffer.ml:143:2>>*/ if(b[1][2] <= pos)
       /*<<buffer.ml:143:32>>*/ resize(b, uchar_utf_16_byte_length_max);
     var
      n =
         /*<<buffer.ml:144:10>>*/ Stdlib_Bytes[57].call(null, b[1][1], pos, u);
      /*<<buffer.ml:145:2>>*/ if(0 !== n){
       /*<<buffer.ml:147:7>>*/ b[2] = pos + n | 0;
      return 0;
     }
      /*<<buffer.ml:146:8>>*/ resize(b, uchar_utf_16_byte_length_max);
    }
    /*<<buffer.ml:147:30>>*/ }
   function add_substring(b, s, offset, len){
    var _f_ =  /*<<buffer.ml:150:2>>*/ offset < 0;
    if(_f_)
     var _g_ = _f_;
    else
     var
      _h_ = len < 0,
      _g_ = _h_ || (caml_ml_string_length(s) - len | 0) < offset;
    if(_g_)
      /*<<buffer.ml:151:7>>*/ Stdlib[1].call(null, "Buffer.add_substring");
    var
     position =  /*<<buffer.ml:152:2>>*/ b[2],
     match =  /*<<buffer.ml:153:2>>*/ b[1],
     length = match[2],
     buffer = match[1],
     new_position =  /*<<buffer.ml:154:2>>*/ position + len | 0;
     /*<<buffer.ml:155:2>>*/ if(length < new_position){
      /*<<buffer.ml:156:4>>*/ resize(b, len);
      /*<<buffer.ml:157:4>>*/ Stdlib_Bytes[12].call
      (null, s, offset, b[1][1], b[2], len);
    }
    else
      /*<<buffer.ml:159:4>>*/ runtime.caml_blit_string
      (s, offset, buffer, position, len);
     /*<<buffer.ml:160:2>>*/ b[2] = new_position;
    return 0;
    /*<<buffer.ml:160:28>>*/ }
   function add_subbytes(b, bytes, offset, len){
    var _d_ =  /*<<buffer.ml:163:2>>*/ offset < 0;
    if(_d_)
     var _e_ = _d_;
    else
     var
      _f_ = len < 0,
      _e_ = _f_ || (caml_ml_bytes_length(bytes) - len | 0) < offset;
    if(_e_)
      /*<<buffer.ml:164:7>>*/ Stdlib[1].call(null, "Buffer.add_subbytes");
    var
     position =  /*<<buffer.ml:165:2>>*/ b[2],
     match =  /*<<buffer.ml:166:2>>*/ b[1],
     length = match[2],
     buffer = match[1],
     new_position =  /*<<buffer.ml:167:2>>*/ position + len | 0;
     /*<<buffer.ml:168:2>>*/ if(length < new_position){
      /*<<buffer.ml:169:4>>*/ resize(b, len);
      /*<<buffer.ml:170:4>>*/ Stdlib_Bytes[11].call
      (null, bytes, offset, b[1][1], b[2], len);
    }
    else
      /*<<buffer.ml:172:4>>*/ runtime.caml_blit_bytes
      (bytes, offset, buffer, position, len);
     /*<<buffer.ml:173:2>>*/ b[2] = new_position;
    return 0;
    /*<<buffer.ml:173:28>>*/ }
   function add_string(b, s){
     /*<<buffer.ml:176:2>>*/ return add_substring
            (b, s, 0, caml_ml_string_length(s)) /*<<buffer.ml:176:39>>*/ ;
   }
   function add_bytes(b, bytes){
     /*<<buffer.ml:179:2>>*/ return add_subbytes
            (b, bytes, 0, caml_ml_bytes_length(bytes)) /*<<buffer.ml:179:45>>*/ ;
   }
   function add_buffer(b, bs){
     /*<<buffer.ml:182:2>>*/ return add_subbytes(b, bs[1][1], 0, bs[2]) /*<<buffer.ml:182:46>>*/ ;
   }
   function add_channel(b, ic, to_read$1){
    var
     _c_ =  /*<<buffer.ml:208:2>>*/ to_read$1 < 0,
     _d_ = _c_ || Stdlib_Sys[13] < to_read$1;
    if(_d_)
      /*<<buffer.ml:209:4>>*/ Stdlib[1].call(null, "Buffer.add_channel");
     /*<<buffer.ml:202:2>>*/ if(b[1][2] < (b[2] + to_read$1 | 0))
      /*<<buffer.ml:202:44>>*/ resize(b, to_read$1);
    var
     ofs$1 =  /*<<buffer.ml:203:2>>*/ b[2],
     buf = b[1][1],
     already_read =  /*<<buffer.ml:198:5>>*/ 0,
     ofs = ofs$1,
     to_read = to_read$1;
    for(;;){
      /*<<buffer.ml:187:4>>*/ if(0 !== to_read){
      var
       r =
          /*<<buffer.ml:189:14>>*/ Stdlib[84].call
          (null, ic, buf, ofs, to_read);
       /*<<buffer.ml:190:6>>*/ if(0 !== r){
       var
        already_read$0 =  /*<<buffer.ml:191:11>>*/ already_read + r | 0,
        ofs$0 =  /*<<buffer.ml:193:8>>*/ ofs + r | 0,
        to_read$0 =  /*<<buffer.ml:194:8>>*/ to_read - r | 0;
        /*<<buffer.ml:195:8>>*/ already_read = already_read$0;
       ofs = ofs$0;
       to_read = to_read$0;
       continue;
      }
     }
      /*<<buffer.ml:204:2>>*/ b[2] = b[2] + already_read | 0;
      /*<<buffer.ml:213:2>>*/ if(already_read < to_read$1)
       /*<<buffer.ml:213:18>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[12], 1);
      /*<<buffer.ml:214:2>>*/ return 0;
    }
    /*<<buffer.ml:214:4>>*/ }
   function output_buffer(oc, b){
     /*<<buffer.ml:217:2>>*/ return Stdlib[68].call
            (null, oc, b[1][1], 0, b[2]) /*<<buffer.ml:217:39>>*/ ;
   }
   var _a_ =  /*<<?>>*/ [0, "buffer.ml", 222, 9];
   function add_substitute(b, f, s){
    var
     lim$1 =  /*<<buffer.ml:263:2>>*/ caml_ml_string_length(s),
     previous =  /*<<buffer.ml:286:2>>*/ 32,
     i$4 = 0;
    for(;;){
      /*<<buffer.ml:265:4>>*/ if(i$4 >= lim$1){
      var _c_ =  /*<<buffer.ml:285:4>>*/ 92 === previous ? 1 : 0;
      return _c_ ?  /*<<buffer.ml:285:28>>*/ add_char(b, previous) : _c_ /*<<buffer.ml:286:13>>*/ ;
     }
     var previous$0 =  /*<<buffer.ml:266:12>>*/ caml_string_get(s, i$4);
      /*<<buffer.ml:266:17>>*/ if(36 === previous$0)
       /*<<buffer.ml:267:28>>*/ if(92 === previous){
        /*<<buffer.ml:268:9>>*/ add_char(b, previous$0);
       var i$5 =  /*<<buffer.ml:268:27>>*/ i$4 + 1 | 0;
       previous = 32;
       i$4 = i$5;
      }
      else{
       var start =  /*<<buffer.ml:271:9>>*/ i$4 + 1 | 0;
        /*<<buffer.ml:272:9>>*/ try{
         /*<<buffer.ml:247:2>>*/ if(lim$1 <= start)
          /*<<buffer.ml:247:23>>*/ throw caml_maybe_attach_backtrace
                (Stdlib[8], 1);
        var opening =  /*<<buffer.ml:248:8>>*/ caml_string_get(s, start);
        a:
        {
          /*<<buffer.ml:248:17>>*/ if(40 !== opening && 123 !== opening){
          var
           lim$0 =  /*<<buffer.ml:243:2>>*/ caml_ml_string_length(s),
           i$2 = start;
          for(;;){
           b:
           {
             /*<<buffer.ml:239:4>>*/ if(lim$0 > i$2){
             var match =  /*<<buffer.ml:240:10>>*/ caml_string_get(s, i$2);
              /*<<buffer.ml:240:15>>*/ if(91 <= match){
              if(97 <= match){
               if(123 <= match){var stop$0 = i$2; break b;}
              }
              else if(95 !== match){var stop$0 = i$2; break b;}
             }
             else
              if(58 <= match){
               if(65 > match){var stop$0 = i$2; break b;}
              }
              else if(48 > match){var stop$0 = i$2; break b;}
             var i$3 =  /*<<buffer.ml:241:52>>*/ i$2 + 1 | 0;
             i$2 = i$3;
             continue;
            }
            var stop$0 =  /*<<buffer.ml:239:4>>*/ lim$0;
           }
            /*<<buffer.ml:257:5>>*/ if(stop$0 === start)
             /*<<buffer.ml:257:26>>*/ throw caml_maybe_attach_backtrace
                   (Stdlib[8], 1);
           var
            val =
               /*<<buffer.ml:258:38>>*/ [0,
                /*<<buffer.ml:258:5>>*/ Stdlib_String[16].call
                (null, s, start, stop$0 - start | 0),
               stop$0];
           break a;
          }
         }
         var new_start =  /*<<buffer.ml:251:5>>*/ start + 1 | 0;
          /*<<buffer.ml:219:14>>*/ if(40 === opening)
          var closing =  /*<<buffer.ml:220:11>>*/ 41;
         else{
           /*<<buffer.ml:219:14>>*/ if(123 !== opening)
            /*<<buffer.ml:222:9>>*/ throw caml_maybe_attach_backtrace
                  ([0, Assert_failure, _a_], 1);
          var closing =  /*<<buffer.ml:221:11>>*/ 125;
         }
         var
          lim =  /*<<buffer.ml:235:2>>*/ caml_ml_string_length(s),
          k = 0,
          stop = new_start;
         for(;;){
           /*<<buffer.ml:230:4>>*/ if(lim <= stop)
            /*<<buffer.ml:230:21>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
           /*<<buffer.ml:231:7>>*/ if(caml_string_get(s, stop) === opening){
           var i =  /*<<buffer.ml:231:28>>*/ stop + 1 | 0, k$0 = k + 1 | 0;
           k = k$0;
           stop = i;
          }
          else if
           ( /*<<buffer.ml:232:7>>*/ caml_string_get(s, stop) === closing){
            /*<<buffer.ml:233:6>>*/ if(0 === k){
            var
             val =
                /*<<buffer.ml:253:46>>*/ [0,
                 /*<<buffer.ml:253:5>>*/ Stdlib_String[16].call
                 (null, s, new_start, (stop - start | 0) - 1 | 0),
                stop + 1 | 0];
            break;
           }
           var i$0 =  /*<<buffer.ml:233:27>>*/ stop + 1 | 0, k$1 = k - 1 | 0;
           k = k$1;
           stop = i$0;
          }
          else{var i$1 =  /*<<buffer.ml:234:9>>*/ stop + 1 | 0; stop = i$1;}
         }
        }
       }
       catch(exn$0){
        var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
        if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
         /*<<buffer.ml:277:11>>*/ add_char(b, 36);
         /*<<buffer.ml:277:25>>*/ previous = 32;
        i$4 = start;
        continue;
       }
       var next_i =  /*<<buffer.ml:272:9>>*/ val[2], ident = val[1];
        /*<<buffer.ml:274:24>>*/  /*<<buffer.ml:274:11>>*/ add_string
        (b,  /*<<buffer.ml:274:24>>*/ caml_call1(f, ident));
        /*<<buffer.ml:274:33>>*/ previous = 32;
       i$4 = next_i;
      }
     else{
       /*<<buffer.ml:281:9>>*/ if(92 === previous)
        /*<<buffer.ml:281:33>>*/ add_char(b, previous);
       /*<<buffer.ml:282:9>>*/ if(92 !== previous$0)
        /*<<buffer.ml:282:33>>*/ add_char(b, previous$0);
      var i$6 =  /*<<buffer.ml:283:9>>*/ i$4 + 1 | 0;
      previous = previous$0;
      i$4 = i$6;
     }
    }
    /*<<buffer.ml:286:13>>*/ }
   function truncate(b, len){
     /*<<buffer.ml:289:4>>*/ if(0 <= len && b[2] >= len){
      /*<<buffer.ml:292:6>>*/ b[2] = len;
     return 0;
    }
     /*<<buffer.ml:290:6>>*/ return Stdlib[1].call(null, "Buffer.truncate") /*<<buffer.ml:292:23>>*/ ;
   }
   function to_seq(b){
    function aux(i, param){
      /*<<buffer.ml:299:4>>*/ if(b[2] <= i)
       /*<<buffer.ml:299:28>>*/ return 0;
     var
      x =  /*<<buffer.ml:301:14>>*/ caml_bytes_get(b[1][1], i),
      _b_ =  /*<<buffer.ml:302:19>>*/ i + 1 | 0;
      /*<<buffer.ml:302:28>>*/ return [0,
             x,
             function(_c_){ /*<<buffer.ml:302:19>>*/ return aux(_b_, _c_);}] /*<<buffer.ml:302:28>>*/ ;
     /*<<buffer.ml:302:29>>*/ }
     /*<<buffer.ml:304:2>>*/ return function(_b_){
      /*<<?>>*/ return aux(0, _b_);} /*<<buffer.ml:304:2>>*/ ;
    /*<<buffer.ml:304:7>>*/ }
   function to_seqi(b){
    function aux(i, param){
      /*<<buffer.ml:309:4>>*/ if(b[2] <= i)
       /*<<buffer.ml:309:28>>*/ return 0;
     var
      x =  /*<<buffer.ml:311:14>>*/ caml_bytes_get(b[1][1], i),
      _a_ =  /*<<buffer.ml:312:23>>*/ i + 1 | 0;
      /*<<buffer.ml:312:32>>*/ return [0,
             [0, i, x],
             function(_b_){ /*<<buffer.ml:312:23>>*/ return aux(_a_, _b_);}] /*<<buffer.ml:312:32>>*/ ;
     /*<<buffer.ml:312:33>>*/ }
     /*<<buffer.ml:314:2>>*/ return function(_a_){
      /*<<?>>*/ return aux(0, _a_);} /*<<buffer.ml:314:2>>*/ ;
    /*<<buffer.ml:314:7>>*/ }
   function add_seq(b, seq){
     /*<<buffer.ml:316:41>>*/ return Stdlib_Seq[4].call
            (null,
             function(_a_){ /*<<buffer.ml:316:29>>*/ return add_char(b, _a_);},
             seq) /*<<buffer.ml:316:45>>*/ ;
   }
   function of_seq(i){
    var b =  /*<<buffer.ml:319:10>>*/ create(32);
     /*<<buffer.ml:320:2>>*/ add_seq(b, i);
     /*<<buffer.ml:320:13>>*/ return b;
    /*<<buffer.ml:321:3>>*/ }
   function add_int8(b, x){
    var
     position =  /*<<buffer.ml:340:2>>*/ b[2],
     match =  /*<<buffer.ml:341:2>>*/ b[1],
     length = match[2],
     buffer = match[1],
     new_position =  /*<<buffer.ml:342:2>>*/ position + 1 | 0;
     /*<<buffer.ml:343:2>>*/ if(length < new_position){
      /*<<buffer.ml:344:4>>*/ resize(b, 1);
      /*<<buffer.ml:345:4>>*/ caml_bytes_set(b[1][1], b[2], x);
    }
    else
      /*<<buffer.ml:347:4>>*/ caml_bytes_unsafe_set(buffer, position, x);
     /*<<buffer.ml:348:2>>*/ b[2] = new_position;
    return 0;
    /*<<buffer.ml:348:28>>*/ }
   function add_int16_ne(b, x){
    var
     position =  /*<<buffer.ml:351:2>>*/ b[2],
     match =  /*<<buffer.ml:352:2>>*/ b[1],
     length = match[2],
     buffer = match[1],
     new_position =  /*<<buffer.ml:353:2>>*/ position + 2 | 0;
     /*<<buffer.ml:354:2>>*/ if(length < new_position){
      /*<<buffer.ml:355:4>>*/ resize(b, 2);
      /*<<buffer.ml:356:4>>*/ caml_bytes_set16(b[1][1], b[2], x);
    }
    else
      /*<<buffer.ml:358:4>>*/ caml_bytes_set16(buffer, position, x);
     /*<<buffer.ml:359:2>>*/ b[2] = new_position;
    return 0;
    /*<<buffer.ml:359:28>>*/ }
   function add_int32_ne(b, x){
    var
     position =  /*<<buffer.ml:362:2>>*/ b[2],
     match =  /*<<buffer.ml:363:2>>*/ b[1],
     length = match[2],
     buffer = match[1],
     new_position =  /*<<buffer.ml:364:2>>*/ position + 4 | 0;
     /*<<buffer.ml:365:2>>*/ if(length < new_position){
      /*<<buffer.ml:366:4>>*/ resize(b, 4);
      /*<<buffer.ml:367:4>>*/ caml_bytes_set32(b[1][1], b[2], x);
    }
    else
      /*<<buffer.ml:369:4>>*/ caml_bytes_set32(buffer, position, x);
     /*<<buffer.ml:370:2>>*/ b[2] = new_position;
    return 0;
    /*<<buffer.ml:370:28>>*/ }
   function add_int64_ne(b, x){
    var
     position =  /*<<buffer.ml:373:2>>*/ b[2],
     match =  /*<<buffer.ml:374:2>>*/ b[1],
     length = match[2],
     buffer = match[1],
     new_position =  /*<<buffer.ml:375:2>>*/ position + 8 | 0;
     /*<<buffer.ml:376:2>>*/ if(length < new_position){
      /*<<buffer.ml:377:4>>*/ resize(b, 8);
      /*<<buffer.ml:378:4>>*/ caml_bytes_set64(b[1][1], b[2], x);
    }
    else
      /*<<buffer.ml:380:4>>*/ caml_bytes_set64(buffer, position, x);
     /*<<buffer.ml:381:2>>*/ b[2] = new_position;
    return 0;
    /*<<buffer.ml:381:28>>*/ }
   function add_int16_le(b, x){
    var
     _a_ =
        /*<<buffer.ml:384:2>>*/ Stdlib_Sys[12]
        ?  /*<<buffer.ml:384:41>>*/ caml_bswap16(x)
        : x;
     /*<<buffer.ml:384:2>>*/ return add_int16_ne(b, _a_) /*<<buffer.ml:384:57>>*/ ;
   }
   function add_int16_be(b, x){
    var
     x$0 =
        /*<<buffer.ml:387:2>>*/ Stdlib_Sys[12]
        ? x
        :  /*<<buffer.ml:387:48>>*/ caml_bswap16(x);
     /*<<buffer.ml:387:2>>*/ return add_int16_ne(b, x$0) /*<<buffer.ml:387:57>>*/ ;
   }
   function add_int32_le(b, x){
    var
     _a_ =
        /*<<buffer.ml:390:2>>*/ Stdlib_Sys[12]
        ?  /*<<buffer.ml:390:41>>*/ caml_int32_bswap(x)
        : x;
     /*<<buffer.ml:390:2>>*/ return add_int32_ne(b, _a_) /*<<buffer.ml:390:57>>*/ ;
   }
   function add_int32_be(b, x){
    var
     x$0 =
        /*<<buffer.ml:393:2>>*/ Stdlib_Sys[12]
        ? x
        :  /*<<buffer.ml:393:48>>*/ caml_int32_bswap(x);
     /*<<buffer.ml:393:2>>*/ return add_int32_ne(b, x$0) /*<<buffer.ml:393:57>>*/ ;
   }
   function add_int64_le(b, x){
    var
     _a_ =
        /*<<buffer.ml:396:2>>*/ Stdlib_Sys[12]
        ?  /*<<buffer.ml:396:41>>*/ caml_int64_bswap(x)
        : x;
     /*<<buffer.ml:396:2>>*/ return add_int64_ne(b, _a_) /*<<buffer.ml:396:57>>*/ ;
   }
   function add_int64_be(b, x){
    var
     x$0 =
        /*<<buffer.ml:399:2>>*/ Stdlib_Sys[12]
        ? x
        :  /*<<buffer.ml:399:48>>*/ caml_int64_bswap(x);
     /*<<buffer.ml:399:2>>*/ return add_int64_ne(b, x$0) /*<<buffer.ml:399:57>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (15,
     [0,
      create,
      contents,
      to_bytes,
      sub,
      blit,
      nth,
      length,
      clear,
      reset,
      output_buffer,
      truncate,
      add_char,
      add_utf_8_uchar,
      add_utf_16le_uchar,
      add_utf_16be_uchar,
      add_string,
      add_bytes,
      add_substring,
      add_subbytes,
      add_substitute,
      add_buffer,
      add_channel,
      to_seq,
      to_seqi,
      add_seq,
      of_seq,
      add_int8,
      add_int8,
      add_int16_ne,
      add_int16_be,
      add_int16_le,
      add_int16_ne,
      add_int16_be,
      add_int16_le,
      add_int32_ne,
      add_int32_be,
      add_int32_le,
      add_int64_ne,
      add_int64_be,
      add_int64_le],
     "Stdlib__Buffer");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Mutex
//# shape: Stdlib__Mutex:[F(1),F(1),F(1),F(1),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_mutex_lock = runtime.caml_ml_mutex_lock,
    caml_ml_mutex_unlock = runtime.caml_ml_mutex_unlock,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function protect(m, f){
     /*<<mutex.ml:27:2>>*/ caml_ml_mutex_lock(m);
     /*<<mutex.ml:27:8>>*/ try{
     var x =  /*<<mutex.ml:28:8>>*/ caml_call1(f, 0);
    }
    catch(e$0){
     var e =  /*<<?>>*/ caml_wrap_exception(e$0);
      /*<<mutex.ml:33:4>>*/ caml_ml_mutex_unlock(m);
      /*<<mutex.ml:33:12>>*/ throw caml_maybe_attach_backtrace(e, 0);
    }
     /*<<mutex.ml:30:4>>*/ caml_ml_mutex_unlock(m);
     /*<<mutex.ml:30:12>>*/ return x;
    /*<<mutex.ml:34:13>>*/ }
   var
    Stdlib_Mutex =
       /*<<?>>*/ [0,
       runtime.caml_ml_mutex_new,
       caml_ml_mutex_lock,
       runtime.caml_ml_mutex_try_lock,
       caml_ml_mutex_unlock,
       protect];
   runtime.caml_register_global(0, Stdlib_Mutex, "Stdlib__Mutex");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Condition
//# shape: Stdlib__Condition:[F(1),F(2),F(1),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    Stdlib_Condition =
      [0,
       runtime.caml_ml_condition_new,
       runtime.caml_ml_condition_wait,
       runtime.caml_ml_condition_signal,
       runtime.caml_ml_condition_broadcast];
   runtime.caml_register_global(0, Stdlib_Condition, "Stdlib__Condition");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Semaphore
//# unitInfo: Requires: Stdlib, Stdlib__Condition, Stdlib__Mutex
//# shape: Stdlib__Semaphore:[[F(1),F(1),F(1),F(1),F(1)*],[F(1),F(1),F(1),F(1)]]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    global_data = runtime.caml_get_global_data(),
    Stdlib_Mutex = global_data.Stdlib__Mutex,
    Stdlib_Condition = global_data.Stdlib__Condition,
    Stdlib = global_data.Stdlib;
   function make(v){
     /*<<semaphore.ml:29:2>>*/ if(v < 0)
      /*<<semaphore.ml:29:16>>*/ Stdlib[1].call
      (null, "Semaphore.Counting.init: wrong initial value");
    var _b_ =  /*<<semaphore.ml:30:39>>*/ Stdlib_Condition[1].call(null, 0);
     /*<<semaphore.ml:30:10>>*/ return [0,
            Stdlib_Mutex[1].call(null, 0),
            v,
            _b_] /*<<semaphore.ml:30:24>>*/ ;
    /*<<semaphore.ml:30:59>>*/ }
   function release(s){
     /*<<semaphore.ml:33:2>>*/ Stdlib_Mutex[2].call(null, s[1]);
     /*<<semaphore.ml:33:18>>*/ if(s[2] < Stdlib[19]){
      /*<<semaphore.ml:34:24>>*/ s[2] = s[2] + 1 | 0;
      /*<<semaphore.ml:36:4>>*/ Stdlib_Condition[3].call(null, s[3]);
      /*<<semaphore.ml:36:30>>*/ return Stdlib_Mutex[4].call(null, s[1]) /*<<semaphore.ml:41:5>>*/ ;
    }
     /*<<semaphore.ml:39:4>>*/ Stdlib_Mutex[4].call(null, s[1]);
     /*<<semaphore.ml:39:22>>*/ throw caml_maybe_attach_backtrace
           ([0, Stdlib[11], "Semaphore.Counting.release: overflow"], 1);
    /*<<semaphore.ml:41:5>>*/ }
   function acquire(s){
     /*<<semaphore.ml:44:2>>*/ Stdlib_Mutex[2].call(null, s[1]);
     /*<<semaphore.ml:44:18>>*/ for(;;){
     if(0 !== s[2]){
       /*<<semaphore.ml:46:2>>*/ s[2] = s[2] - 1 | 0;
       /*<<semaphore.ml:47:2>>*/ return Stdlib_Mutex[4].call(null, s[1]) /*<<semaphore.ml:47:20>>*/ ;
     }
      /*<<semaphore.ml:45:19>>*/ Stdlib_Condition[2].call(null, s[3], s[1]);
    }
    /*<<semaphore.ml:47:20>>*/ }
   function try_acquire(s){
     /*<<semaphore.ml:50:2>>*/ Stdlib_Mutex[2].call(null, s[1]);
    var
     ret =
        /*<<semaphore.ml:50:18>>*/ 0 === s[2] ? 0 : (s[2] = s[2] - 1 | 0, 1);
     /*<<semaphore.ml:52:2>>*/ Stdlib_Mutex[4].call(null, s[1]);
     /*<<semaphore.ml:52:20>>*/ return ret;
    /*<<semaphore.ml:53:5>>*/ }
   function get_value(s){
     /*<<semaphore.ml:55:18>>*/ return s[2];
    /*<<semaphore.ml:55:21>>*/ }
   function make$0(b){
    var
     _a_ =  /*<<semaphore.ml:66:14>>*/ Stdlib_Condition[1].call(null, 0),
     _b_ =  /*<<semaphore.ml:66:32>>*/ b ? 1 : 0;
     /*<<semaphore.ml:64:10>>*/ return [0,
            Stdlib_Mutex[1].call(null, 0),
            _b_,
            _a_] /*<<semaphore.ml:64:24>>*/ ;
    /*<<semaphore.ml:66:34>>*/ }
   function release$0(s){
     /*<<semaphore.ml:69:2>>*/ Stdlib_Mutex[2].call(null, s[1]);
     /*<<semaphore.ml:69:18>>*/ s[2] = 1;
     /*<<semaphore.ml:71:2>>*/ Stdlib_Condition[3].call(null, s[3]);
     /*<<semaphore.ml:71:28>>*/ return Stdlib_Mutex[4].call(null, s[1]) /*<<semaphore.ml:72:20>>*/ ;
   }
   function acquire$0(s){
     /*<<semaphore.ml:75:2>>*/ Stdlib_Mutex[2].call(null, s[1]);
     /*<<semaphore.ml:75:18>>*/ for(;;){
     if(0 !== s[2]){
       /*<<semaphore.ml:77:2>>*/ s[2] = 0;
       /*<<semaphore.ml:78:2>>*/ return Stdlib_Mutex[4].call(null, s[1]) /*<<semaphore.ml:78:20>>*/ ;
     }
      /*<<semaphore.ml:76:19>>*/ Stdlib_Condition[2].call(null, s[3], s[1]);
    }
    /*<<semaphore.ml:78:20>>*/ }
   function try_acquire$0(s){
     /*<<semaphore.ml:81:2>>*/ Stdlib_Mutex[2].call(null, s[1]);
    var ret =  /*<<semaphore.ml:81:18>>*/ 0 === s[2] ? 0 : (s[2] = 0, 1);
     /*<<semaphore.ml:83:2>>*/ Stdlib_Mutex[4].call(null, s[1]);
     /*<<semaphore.ml:83:20>>*/ return ret;
    /*<<semaphore.ml:84:5>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (5,
     [0,
      [0, make, release, acquire, try_acquire, get_value],
      [0, make$0, release$0, acquire$0, try_acquire$0]],
     "Stdlib__Semaphore");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Domain
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Atomic, Stdlib__Condition, Stdlib__List, Stdlib__Mutex
//# shape: Stdlib__Domain:[F(1),F(1),F(1)*,F(1),F(1),F(1),F(1),F(1),F(1),F(1),N]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_check_bound = runtime.caml_check_bound,
    caml_domain_dls_get = runtime.caml_domain_dls_get,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_domain_id = runtime.caml_ml_domain_id,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    dummy = 0,
    global_data = runtime.caml_get_global_data(),
    Stdlib_Condition = global_data.Stdlib__Condition,
    Stdlib_Mutex = global_data.Stdlib__Mutex,
    Stdlib_Atomic = global_data.Stdlib__Atomic,
    Stdlib = global_data.Stdlib,
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib_List = global_data.Stdlib__List,
    Assert_failure = global_data.Assert_failure;
   function cpu_relax(param){
     /*<<domain.ml:47:19>>*/ return runtime.caml_ml_domain_cpu_relax(0) /*<<domain.ml:47:35>>*/ ;
   }
   var none =  /*<<?>>*/ [0, 0];
   function create_dls(param){
    var st =  /*<<domain.ml:89:13>>*/ caml_array_make(8, none);
     /*<<domain.ml:90:4>>*/ runtime.caml_domain_dls_set(st);
    /*<<domain.ml:90:20>>*/ }
    /*<<domain.ml:92:10>>*/ create_dls(0);
   var
    key_counter =  /*<<domain.ml:96:20>>*/ Stdlib_Atomic[1].call(null, 0),
    parent_keys =  /*<<domain.ml:101:20>>*/ Stdlib_Atomic[1].call(null, 0);
   function new_key(split_from_parent, init_orphan){
    var
     idx =
        /*<<domain.ml:109:14>>*/ Stdlib_Atomic[7].call(null, key_counter, 1),
     k =  /*<<domain.ml:110:4>>*/ [0, idx, init_orphan];
     /*<<domain.ml:111:4>>*/ if(split_from_parent){
     var
      split = split_from_parent[1],
      ki =  /*<<domain.ml:113:20>>*/ [0, k, split];
      /*<<domain.ml:104:4>>*/ for(;;){
      var
       l =  /*<<domain.ml:104:12>>*/ Stdlib_Atomic[3].call(null, parent_keys);
       /*<<domain.ml:105:11>>*/ if
       (! (1 - Stdlib_Atomic[6].call(null, parent_keys, l, [0, ki, l])))
       break;
     }
    }
     /*<<domain.ml:115:4>>*/ return k;
    /*<<domain.ml:115:5>>*/ }
   function maybe_grow(idx){
     /*<<domain.ml:120:4>>*/ for(;;){
     var
      st = caml_domain_dls_get(0),
      sz =  /*<<domain.ml:121:4>>*/ st.length - 1;
      /*<<domain.ml:122:4>>*/ if(idx < sz)
       /*<<domain.ml:122:21>>*/ return st;
     var new_sz =  /*<<domain.ml:122:4>>*/ sz;
     for(;;){
       /*<<domain.ml:125:8>>*/ if(idx < new_sz){
       var new_st =  /*<<domain.ml:128:19>>*/ caml_array_make(new_sz, none);
        /*<<domain.ml:129:6>>*/ Stdlib_Array[9].call
        (null, st, 0, new_st, 0, sz);
        /*<<domain.ml:136:9>>*/ if
        (runtime.caml_domain_dls_compare_and_set(st, new_st))
         /*<<domain.ml:137:11>>*/ return new_st;
       break;
      }
      var s =  /*<<domain.ml:125:31>>*/ 2 * new_sz | 0;
      new_sz = s;
     }
    }
    /*<<domain.ml:139:7>>*/ }
   function set(param, x){
    var
     idx =  /*<<domain.ml:141:10>>*/ param[1],
     st =  /*<<domain.ml:142:13>>*/ maybe_grow(idx);
     /*<<domain.ml:146:4>>*/ caml_check_bound(st, idx)[idx + 1] = x;
     /*<<domain.ml:146:52>>*/ return 0;
   }
   var _a_ =  /*<<domain.ml:101:59>>*/ [0, "domain.ml", 184, 13];
   function get(param){
    var
     init =  /*<<domain.ml:158:10>>*/ param[2],
     idx = param[1],
     st =  /*<<domain.ml:159:13>>*/ maybe_grow(idx),
     oldval =  /*<<domain.ml:160:14>>*/ caml_check_bound(st, idx)[idx + 1];
     /*<<domain.ml:161:26>>*/ if(oldval !== none)
      /*<<domain.ml:75:25>>*/ return oldval;
    var
     new_obj =  /*<<domain.ml:164:18>>*/ caml_call1(init, 0),
     st$0 =  /*<<domain.ml:175:6>>*/ caml_domain_dls_get(0),
     curval =  /*<<domain.ml:152:17>>*/ caml_check_bound(st$0, idx)[idx + 1],
     _b_ =
        /*<<domain.ml:153:4>>*/ curval === oldval
        ? (st$0[idx + 1] = new_obj, 1)
        : 0;
     /*<<domain.ml:176:49>>*/ if(_b_)
      /*<<domain.ml:177:11>>*/ return new_obj;
    var
     updated_obj =
        /*<<domain.ml:181:26>>*/ caml_check_bound(st$0, idx)[idx + 1];
     /*<<domain.ml:182:38>>*/ if(updated_obj !== none)
      /*<<domain.ml:75:25>>*/ return updated_obj;
     /*<<domain.ml:184:13>>*/ throw caml_maybe_attach_backtrace
           ([0, Assert_failure, _a_], 1);
    /*<<domain.ml:186:7>>*/ }
   function set_initial_keys(l){
     /*<<domain.ml:196:4>>*/ return Stdlib_List[19].call
            (null,
             function(param){
              var v =  /*<<domain.ml:196:14>>*/ param[2], k = param[1];
               /*<<domain.ml:196:34>>*/ return set(k, v) /*<<domain.ml:196:42>>*/ ;
             },
             l) /*<<domain.ml:196:44>>*/ ;
   }
   function get_id(param){
    var domain =  /*<<domain.ml:201:11>>*/ param[1];
     /*<<domain.ml:201:27>>*/ return domain;
    /*<<domain.ml:201:33>>*/ }
   function self(param){
     /*<<domain.ml:203:14>>*/ return caml_ml_domain_id(0) /*<<domain.ml:203:25>>*/ ;
   }
   function is_main_domain(param){
     /*<<domain.ml:203:14>>*/ return 0 === caml_ml_domain_id(0) ? 1 : 0 /*<<domain.ml:205:32>>*/ ;
    /*<<domain.ml:205:44>>*/ }
   var
    first_domain_spawned =
       /*<<domain.ml:213:27>>*/ Stdlib_Atomic[1].call(null, 0),
    first_spawn_function =
       /*<<domain.ml:213:44>>*/ [0,
       function(param){ /*<<domain.ml:215:44>>*/ }];
   function before_first_spawn(f){
     /*<<domain.ml:218:5>>*/ if
     (Stdlib_Atomic[3].call(null, first_domain_spawned))
      /*<<domain.ml:219:4>>*/ throw caml_maybe_attach_backtrace
            ([0, Stdlib[6], "first domain already spawned"], 1);
    var old_f =  /*<<domain.ml:220:7>>*/ first_spawn_function[1];
    function new_f(param){
      /*<<domain.ml:222:19>>*/ caml_call1(old_f, 0);
      /*<<domain.ml:222:27>>*/ return caml_call1(f, 0) /*<<domain.ml:222:33>>*/ ;
    }
     /*<<domain.ml:223:4>>*/ first_spawn_function[1] = new_f;
    return 0;
    /*<<domain.ml:224:5>>*/ }
   var
    at_exit_key =
       /*<<domain.ml:234:18>>*/ new_key
       (0,
        function(param){
          /*<<domain.ml:234:41>>*/ return function(param){
           /*<<domain.ml:234:52>>*/ return 0; /*<<domain.ml:234:54>>*/ } /*<<domain.ml:234:41>>*/ ;
         /*<<domain.ml:234:55>>*/ });
   function at_exit(f){
    var old_exit =  /*<<domain.ml:237:32>>*/ get(at_exit_key);
    function new_exit(param){
      /*<<domain.ml:239:4>>*/ caml_call1(f, 0);
      /*<<domain.ml:239:8>>*/ return caml_call1(old_exit, 0) /*<<domain.ml:239:21>>*/ ;
    }
     /*<<domain.ml:241:2>>*/ return set(at_exit_key, new_exit) /*<<domain.ml:241:30>>*/ ;
   }
   function do_at_exit(param){
    var f =  /*<<domain.ml:244:25>>*/ get(at_exit_key);
     /*<<domain.ml:245:2>>*/ return caml_call1(f, 0) /*<<domain.ml:245:6>>*/ ;
   }
    /*<<domain.ml:234:56>>*/ Stdlib[104][1] = do_at_exit;
   function spawn(f){
     /*<<domain.ml:227:9>>*/ if
     (1 - Stdlib_Atomic[3].call(null, first_domain_spawned)){
      /*<<domain.ml:228:4>>*/ Stdlib_Atomic[4].call
      (null, first_domain_spawned, 1);
      /*<<domain.ml:229:4>>*/ caml_call1(first_spawn_function[1], 0);
      /*<<domain.ml:229:27>>*/ first_spawn_function[1] =
      function(param){
        /*<<domain.ml:231:39>>*/ return 0;
       /*<<domain.ml:231:41>>*/ };
    }
    var
     _a_ =  /*<<domain.ml:193:6>>*/ Stdlib_Atomic[3].call(null, parent_keys),
     pk =
        /*<<domain.ml:193:30>>*/ Stdlib_List[21].call
        (null,
         function(param){
          var split =  /*<<domain.ml:192:6>>*/ param[2], k = param[1];
           /*<<domain.ml:192:44>>*/ return [0,
                  k,
                   /*<<domain.ml:192:37>>*/ caml_call1
                   (split,  /*<<domain.ml:192:44>>*/ get(k))] /*<<domain.ml:192:52>>*/ ;
          /*<<domain.ml:192:54>>*/ },
         _a_),
     _b_ =  /*<<domain.ml:259:17>>*/ Stdlib_Condition[1].call(null, 0),
     term_sync =
        /*<<domain.ml:258:16>>*/ [0, 0, Stdlib_Mutex[1].call(null, 0), _b_];
    function body(param){
      /*<<domain.ml:263:4>>*/ try{
       /*<<domain.ml:264:6>>*/ create_dls(0);
       /*<<domain.ml:265:6>>*/ set_initial_keys(pk);
      var res =  /*<<domain.ml:266:16>>*/ caml_call1(f, 0);
     }
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      try{ /*<<domain.ml:281:13>>*/ do_at_exit(0);}catch(exn){}
       /*<<domain.ml:282:8>>*/ throw caml_maybe_attach_backtrace(exn, 0);
     }
      /*<<domain.ml:275:8>>*/ do_at_exit(0);
      /*<<domain.ml:275:21>>*/ return res;
     /*<<domain.ml:282:17>>*/ }
    var
     domain =
        /*<<domain.ml:284:15>>*/ runtime.caml_domain_spawn(body, term_sync);
     /*<<domain.ml:285:2>>*/ return [0, domain, term_sync];
    /*<<domain.ml:285:24>>*/ }
   function join(param){
    var term_sync =  /*<<domain.ml:287:9>>*/ param[2];
    function loop(param){
      /*<<domain.ml:290:4>>*/ for(;;){
      var match = term_sync[1];
      if(match){var res = match[1];  /*<<domain.ml:295:8>>*/ return res;}
       /*<<domain.ml:292:8>>*/ Stdlib_Condition[2].call
       (null, term_sync[3], term_sync[2]);
     }
     /*<<domain.ml:295:11>>*/ }
    var
     match =
        /*<<domain.ml:297:8>>*/ Stdlib_Mutex[5].call(null, term_sync[2], loop);
     /*<<domain.ml:297:40>>*/ if(0 === match[0]){
     var x = match[1];
      /*<<domain.ml:298:12>>*/ return x;
    }
    var ex =  /*<<domain.ml:297:40>>*/ match[1];
    throw caml_maybe_attach_backtrace(ex, 1);
    /*<<domain.ml:299:24>>*/ }
   var
    recommended_domain_count =
       /*<<domain.ml:234:56>>*/ runtime.caml_recommended_domain_count,
    Stdlib_Domain =
      [0,
       spawn,
       join,
       get_id,
       self,
       before_first_spawn,
       at_exit,
       cpu_relax,
       is_main_domain,
       recommended_domain_count,
       runtime.caml_ml_domain_index,
       [0, new_key, get, set]];
   runtime.caml_register_global(9, Stdlib_Domain, "Stdlib__Domain");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: CamlinternalFormat
//# unitInfo: Requires: CamlinternalFormatBasics, Stdlib, Stdlib__Buffer, Stdlib__Bytes, Stdlib__Char, Stdlib__Int, Stdlib__String, Stdlib__Sys
//# shape: CamlinternalFormat:[F(2),F(1),F(1),F(2),F(1),F(2)*,F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1)*,F(1),F(1),F(1),F(1),F(1),F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_blit_string = runtime.caml_blit_string,
    caml_bytes_set = runtime.caml_bytes_set,
    caml_create_bytes = runtime.caml_create_bytes,
    caml_format_float = runtime.caml_format_float,
    caml_format_int = runtime.caml_format_int,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_string_length = runtime.caml_ml_string_length,
    caml_notequal = runtime.caml_notequal,
    caml_string_get = runtime.caml_string_get,
    caml_string_unsafe_get = runtime.caml_string_unsafe_get,
    caml_trampoline = runtime.caml_trampoline,
    caml_trampoline_return = runtime.caml_trampoline_return,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   function caml_call4(f, a0, a1, a2, a3){
    return (f.l >= 0 ? f.l : f.l = f.length) === 4
            ? f(a0, a1, a2, a3)
            : runtime.caml_call_gen(f, [a0, a1, a2, a3]);
   }
   function caml_call5(f, a0, a1, a2, a3, a4){
    return (f.l >= 0 ? f.l : f.l = f.length) === 5
            ? f(a0, a1, a2, a3, a4)
            : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4]);
   }
   var
    dummy = 0,
    global_data = runtime.caml_get_global_data(),
    Assert_failure = global_data.Assert_failure,
    CamlinternalFormatBasics = global_data.CamlinternalFormatBasics,
    Stdlib = global_data.Stdlib,
    Stdlib_Buffer = global_data.Stdlib__Buffer,
    Stdlib_String = global_data.Stdlib__String,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Char = global_data.Stdlib__Char,
    Stdlib_Bytes = global_data.Stdlib__Bytes,
    Stdlib_Int = global_data.Stdlib__Int;
   function create_char_set(param){
     /*<<camlinternalFormat.ml:24:25>>*/ return Stdlib_Bytes[1].call
            (null, 32, 0) /*<<camlinternalFormat.ml:24:45>>*/ ;
   }
   function add_in_char_set(char_set, c){
    var
     str_ind =  /*<<camlinternalFormat.ml:29:2>>*/ c >>> 3 | 0,
     mask = 1 << (c & 7),
     _a3_ =
        /*<<camlinternalFormat.ml:31:30>>*/ runtime.caml_bytes_get
        (char_set, str_ind)
       | mask;
     /*<<camlinternalFormat.ml:31:4>>*/ return  /*<<camlinternalFormat.ml:30:2>>*/ caml_bytes_set
            (char_set,
             str_ind,
              /*<<camlinternalFormat.ml:31:4>>*/ Stdlib[29].call(null, _a3_)) /*<<camlinternalFormat.ml:31:69>>*/ ;
   }
   function freeze_char_set(char_set){
     /*<<camlinternalFormat.ml:34:2>>*/ return Stdlib_Bytes[6].call
            (null, char_set) /*<<camlinternalFormat.ml:34:26>>*/ ;
   }
   function rev_char_set(char_set){
    var
     char_set$0 =  /*<<camlinternalFormat.ml:38:18>>*/ create_char_set(0),
     i =  /*<<camlinternalFormat.ml:39:2>>*/ 0;
    for(;;){
     var
      _a2_ =
         /*<<camlinternalFormat.ml:41:32>>*/ caml_string_get(char_set, i)
        ^ 255;
      /*<<camlinternalFormat.ml:41:6>>*/  /*<<camlinternalFormat.ml:40:4>>*/ caml_bytes_set
      (char_set$0,
       i,
        /*<<camlinternalFormat.ml:41:6>>*/ Stdlib[29].call(null, _a2_));
     var _a3_ =  /*<<camlinternalFormat.ml:41:67>>*/ i + 1 | 0;
     if(31 === i)
       /*<<camlinternalFormat.ml:43:2>>*/ return Stdlib_Bytes[44].call
              (null, char_set$0) /*<<camlinternalFormat.ml:43:34>>*/ ;
      /*<<camlinternalFormat.ml:41:67>>*/ i = _a3_;
    }
    /*<<camlinternalFormat.ml:43:34>>*/ }
   function is_in_char_set(char_set, c){
    var
     str_ind =  /*<<camlinternalFormat.ml:48:2>>*/ c >>> 3 | 0,
     mask = 1 << (c & 7);
     /*<<camlinternalFormat.ml:49:15>>*/ return 0
            !== (caml_string_get(char_set, str_ind) & mask)
            ? 1
            : 0 /*<<camlinternalFormat.ml:49:44>>*/ ;
    /*<<camlinternalFormat.ml:49:60>>*/ }
   function pad_of_pad_opt(pad_opt){
     /*<<camlinternalFormat.ml:62:29>>*/ if(! pad_opt)
      /*<<camlinternalFormat.ml:63:12>>*/ return 0;
    var width =  /*<<camlinternalFormat.ml:62:29>>*/ pad_opt[1];
     /*<<camlinternalFormat.ml:64:18>>*/ return [0, 1, width];
    /*<<camlinternalFormat.ml:64:44>>*/ }
   var _a_ =  /*<<?>>*/ [0, 0, 0];
   function param_format_of_ignored_format(ign, fmt){
     /*<<camlinternalFormat.ml:76:15>>*/ if(typeof ign === "number")
     switch(ign){
       case 0:
         /*<<camlinternalFormat.ml:78:4>>*/ return [0, [0, fmt]];
       case 1:
         /*<<camlinternalFormat.ml:80:4>>*/ return [0, [1, fmt]];
       case 2:
         /*<<camlinternalFormat.ml:108:4>>*/ return [0, [19, fmt]];
       default:  /*<<camlinternalFormat.ml:114:4>>*/ return [0, [22, fmt]];
     }
     /*<<camlinternalFormat.ml:76:15>>*/ switch(ign[0]){
      case 0:
       var pad_opt = ign[1];
        /*<<camlinternalFormat.ml:82:30>>*/ return [0,
               [2, pad_of_pad_opt(pad_opt), fmt]] /*<<camlinternalFormat.ml:82:52>>*/ ;
      case 1:
       var pad_opt$0 =  /*<<camlinternalFormat.ml:76:15>>*/ ign[1];
        /*<<camlinternalFormat.ml:84:35>>*/ return [0,
               [3, pad_of_pad_opt(pad_opt$0), fmt]] /*<<camlinternalFormat.ml:84:57>>*/ ;
      case 2:
       var
        pad_opt$1 =  /*<<camlinternalFormat.ml:76:15>>*/ ign[2],
        iconv = ign[1];
        /*<<camlinternalFormat.ml:86:34>>*/ return [0,
               [4, iconv, pad_of_pad_opt(pad_opt$1), 0, fmt]] /*<<camlinternalFormat.ml:86:56>>*/ ;
      case 3:
       var
        pad_opt$2 =  /*<<camlinternalFormat.ml:76:15>>*/ ign[2],
        iconv$0 = ign[1];
        /*<<camlinternalFormat.ml:89:21>>*/ return [0,
               [5, iconv$0, pad_of_pad_opt(pad_opt$2), 0, fmt]] /*<<camlinternalFormat.ml:89:43>>*/ ;
      case 4:
       var
        pad_opt$3 =  /*<<camlinternalFormat.ml:76:15>>*/ ign[2],
        iconv$1 = ign[1];
        /*<<camlinternalFormat.ml:92:25>>*/ return [0,
               [6, iconv$1, pad_of_pad_opt(pad_opt$3), 0, fmt]] /*<<camlinternalFormat.ml:92:47>>*/ ;
      case 5:
       var
        pad_opt$4 =  /*<<camlinternalFormat.ml:76:15>>*/ ign[2],
        iconv$2 = ign[1];
        /*<<camlinternalFormat.ml:95:21>>*/ return [0,
               [7, iconv$2, pad_of_pad_opt(pad_opt$4), 0, fmt]] /*<<camlinternalFormat.ml:95:43>>*/ ;
      case 6:
       var
        prec_opt =  /*<<camlinternalFormat.ml:76:15>>*/ ign[2],
        pad_opt$5 = ign[1];
        /*<<camlinternalFormat.ml:67:32>>*/ if(prec_opt)
        var
         ndec = prec_opt[1],
         _a2_ =  /*<<camlinternalFormat.ml:69:17>>*/ [0, ndec];
       else
        var _a2_ =  /*<<camlinternalFormat.ml:68:12>>*/ 0;
        /*<<camlinternalFormat.ml:99:14>>*/ return [0,
               [8, _a_, pad_of_pad_opt(pad_opt$5), _a2_, fmt]] /*<<camlinternalFormat.ml:99:36>>*/ ;
      case 7:
       var pad_opt$6 =  /*<<camlinternalFormat.ml:76:15>>*/ ign[1];
        /*<<camlinternalFormat.ml:101:28>>*/ return [0,
               [9, pad_of_pad_opt(pad_opt$6), fmt]] /*<<camlinternalFormat.ml:101:50>>*/ ;
      case 8:
       var
        fmtty =  /*<<camlinternalFormat.ml:76:15>>*/ ign[2],
        pad_opt$7 = ign[1];
        /*<<camlinternalFormat.ml:103:4>>*/ return [0,
               [13, pad_opt$7, fmtty, fmt]];
      case 9:
       var
        fmtty$0 =  /*<<camlinternalFormat.ml:76:15>>*/ ign[2],
        pad_opt$8 = ign[1];
        /*<<camlinternalFormat.ml:105:4>>*/ return [0,
               [14, pad_opt$8, fmtty$0, fmt]];
      case 10:
       var
        char_set =  /*<<camlinternalFormat.ml:76:15>>*/ ign[2],
        width_opt = ign[1];
        /*<<camlinternalFormat.ml:110:4>>*/ return [0,
               [20, width_opt, char_set, fmt]];
      default:
       var counter =  /*<<camlinternalFormat.ml:76:15>>*/ ign[1];
        /*<<camlinternalFormat.ml:112:4>>*/ return [0, [21, counter, fmt]];
    }
    /*<<camlinternalFormat.ml:114:41>>*/ }
   function default_float_precision(fconv){
     /*<<camlinternalFormat.ml:221:2>>*/ return 5 === fconv[2] ? 12 : -6 /*<<camlinternalFormat.ml:227:17>>*/ ;
   }
   function buffer_create(init_size){
     /*<<camlinternalFormat.ml:256:49>>*/ return [0,
            0,
            caml_create_bytes(init_size)] /*<<camlinternalFormat.ml:256:71>>*/ ;
    /*<<camlinternalFormat.ml:256:73>>*/ }
   function buffer_check_size(buf, overhead){
    var
     len =
        /*<<camlinternalFormat.ml:260:2>>*/ runtime.caml_ml_bytes_length
        (buf[2]),
     min_len =  /*<<camlinternalFormat.ml:261:2>>*/ buf[1] + overhead | 0;
     /*<<camlinternalFormat.ml:262:2>>*/ if(len < min_len){
     var
      new_len =
         /*<<camlinternalFormat.ml:263:18>>*/ Stdlib_Int[11].call
         (null, len * 2 | 0, min_len),
      new_str =
         /*<<camlinternalFormat.ml:264:18>>*/ caml_create_bytes(new_len);
      /*<<camlinternalFormat.ml:265:4>>*/ Stdlib_Bytes[11].call
      (null, buf[2], 0, new_str, 0, len);
      /*<<camlinternalFormat.ml:265:40>>*/ buf[2] = new_str;
    }
    /*<<camlinternalFormat.ml:267:3>>*/ }
   function buffer_add_char(buf, c){
     /*<<camlinternalFormat.ml:271:2>>*/ buffer_check_size(buf, 1);
     /*<<camlinternalFormat.ml:272:2>>*/ caml_bytes_set(buf[2], buf[1], c);
     /*<<camlinternalFormat.ml:272:31>>*/ buf[1] = buf[1] + 1 | 0;
    /*<<camlinternalFormat.ml:273:24>>*/ }
   function buffer_add_string(buf, s){
    var
     str_len =  /*<<camlinternalFormat.ml:277:2>>*/ caml_ml_string_length(s);
     /*<<camlinternalFormat.ml:278:2>>*/ buffer_check_size(buf, str_len);
     /*<<camlinternalFormat.ml:279:2>>*/ Stdlib_String[6].call
     (null, s, 0, buf[2], buf[1], str_len);
     /*<<camlinternalFormat.ml:279:43>>*/ buf[1] = buf[1] + str_len | 0;
    /*<<camlinternalFormat.ml:280:30>>*/ }
   function buffer_contents(buf){
     /*<<camlinternalFormat.ml:284:2>>*/ return Stdlib_Bytes[8].call
            (null, buf[2], 0, buf[1]) /*<<camlinternalFormat.ml:284:38>>*/ ;
   }
   function char_of_iconv(iconv){
     /*<<camlinternalFormat.ml:289:26>>*/ switch(iconv){
      case 6:
      case 7:
        /*<<camlinternalFormat.ml:291:38>>*/ return 120;
      case 8:
      case 9:
        /*<<camlinternalFormat.ml:291:62>>*/ return 88;
      case 10:
      case 11:
        /*<<camlinternalFormat.ml:292:14>>*/ return 111;
      case 12:
      case 15:
        /*<<camlinternalFormat.ml:292:38>>*/ return 117;
      case 0:
      case 1:
      case 2:
      case 13:
        /*<<camlinternalFormat.ml:290:40>>*/ return 100;
      default:  /*<<camlinternalFormat.ml:291:14>>*/ return 105;
    }
    /*<<camlinternalFormat.ml:292:41>>*/ }
   function char_of_fconv(opt, fconv){
    var cF =  /*<<camlinternalFormat.ml:296:18>>*/ opt ? opt[1] : 70;
     /*<<camlinternalFormat.ml:296:36>>*/ switch(fconv[2]){
      case 0:
        /*<<camlinternalFormat.ml:297:15>>*/ return 102;
      case 1:
        /*<<camlinternalFormat.ml:297:32>>*/ return 101;
      case 2:
        /*<<camlinternalFormat.ml:298:15>>*/ return 69;
      case 3:
        /*<<camlinternalFormat.ml:298:32>>*/ return 103;
      case 4:
        /*<<camlinternalFormat.ml:299:15>>*/ return 71;
      case 5:
        /*<<camlinternalFormat.ml:299:32>>*/ return cF;
      case 6:
        /*<<camlinternalFormat.ml:300:15>>*/ return 104;
      case 7:
        /*<<camlinternalFormat.ml:300:32>>*/ return 72;
      default:  /*<<camlinternalFormat.ml:301:16>>*/ return 70;
    }
    /*<<camlinternalFormat.ml:301:19>>*/ }
   function bprint_char_set(buf, char_set){
    function print_char(buf, i){
     var c =  /*<<camlinternalFormat.ml:358:31>>*/ Stdlib[29].call(null, i);
      /*<<camlinternalFormat.ml:358:44>>*/ return 37 === c
             ? ( /*<<camlinternalFormat.ml:359:13>>*/ buffer_add_char
                (buf, 37),
                /*<<camlinternalFormat.ml:359:36>>*/ buffer_add_char(buf, 37))
             : 64
               === c
               ? ( /*<<camlinternalFormat.ml:360:13>>*/ buffer_add_char
                  (buf, 37),
                  /*<<camlinternalFormat.ml:360:36>>*/ buffer_add_char
                  (buf, 64))
               :  /*<<camlinternalFormat.ml:361:13>>*/ buffer_add_char(buf, c) /*<<camlinternalFormat.ml:361:35>>*/ ;
    }
     /*<<camlinternalFormat.ml:363:2>>*/ buffer_add_char(buf, 91);
    var
     set =
        /*<<camlinternalFormat.ml:365:7>>*/ is_in_char_set(char_set, 0)
        ? ( /*<<camlinternalFormat.ml:366:11>>*/ buffer_add_char
           (buf, 94),
           /*<<camlinternalFormat.ml:366:36>>*/ rev_char_set(char_set))
        : char_set;
    function is_alone(c){
     var
      after =
         /*<<camlinternalFormat.ml:316:50>>*/ Stdlib_Char[1].call
         (null, c + 1 | 0),
      before =
         /*<<camlinternalFormat.ml:316:32>>*/ Stdlib_Char[1].call
         (null, c - 1 | 0),
      _aZ_ =  /*<<camlinternalFormat.ml:317:6>>*/ is_in_char_set(set, c);
      /*<<camlinternalFormat.ml:317:26>>*/ if(_aZ_)
      var
       _a0_ =
          /*<<camlinternalFormat.ml:318:14>>*/ is_in_char_set(set, before),
       _a2_ =
          /*<<camlinternalFormat.ml:318:39>>*/ _a0_
          ?  /*<<camlinternalFormat.ml:318:43>>*/ is_in_char_set(set, after)
          : _a0_,
       _a1_ =  /*<<camlinternalFormat.ml:318:39>>*/ 1 - _a2_;
     else
      var _a1_ =  /*<<camlinternalFormat.ml:317:26>>*/ _aZ_;
     return _a1_;
     /*<<camlinternalFormat.ml:318:68>>*/ }
     /*<<camlinternalFormat.ml:319:7>>*/ if(is_alone(93))
      /*<<camlinternalFormat.ml:319:25>>*/ buffer_add_char(buf, 93);
    var i =  /*<<camlinternalFormat.ml:323:4>>*/ 1;
    a:
    for(;;){
     b:
     if(i < 256){
       /*<<camlinternalFormat.ml:324:28>>*/ if
       (!
         /*<<camlinternalFormat.ml:324:9>>*/ is_in_char_set
         (set,  /*<<camlinternalFormat.ml:324:28>>*/ Stdlib[29].call(null, i))){
       var i$0 =  /*<<camlinternalFormat.ml:325:11>>*/ i + 1 | 0;
       i = i$0;
       continue;
      }
      var
       switcher =
          /*<<camlinternalFormat.ml:327:10>>*/ Stdlib[29].call(null, i) - 45
         | 0;
       /*<<camlinternalFormat.ml:327:23>>*/ if(48 < switcher >>> 0){
       if(210 <= switcher){
         /*<<camlinternalFormat.ml:328:16>>*/ print_char(buf, 255);
        break b;
       }
      }
      else if(46 < switcher - 1 >>> 0){
       var i$2 =  /*<<camlinternalFormat.ml:329:19>>*/ i + 1 | 0;
       i = i$2;
       continue;
      }
      var i$1 =  /*<<camlinternalFormat.ml:330:11>>*/ i + 1 | 0;
       /*<<camlinternalFormat.ml:332:26>>*/ if
       (!
         /*<<camlinternalFormat.ml:332:7>>*/ is_in_char_set
         (set,
           /*<<camlinternalFormat.ml:332:26>>*/ Stdlib[29].call(null, i$1))){
        /*<<camlinternalFormat.ml:347:6>>*/ print_char(buf, i$1 - 1 | 0);
       var i$6 =  /*<<camlinternalFormat.ml:347:28>>*/ i$1 + 1 | 0;
       i = i$6;
       continue;
      }
      var
       switcher$0 =
          /*<<camlinternalFormat.ml:333:12>>*/ Stdlib[29].call(null, i$1) - 45
         | 0;
       /*<<camlinternalFormat.ml:333:25>>*/ if(48 < switcher$0 >>> 0){
       if(210 <= switcher$0){
         /*<<camlinternalFormat.ml:335:8>>*/ print_char(buf, 254);
         /*<<camlinternalFormat.ml:335:26>>*/ print_char(buf, 255);
        break b;
       }
      }
      else if
       (46 < switcher$0 - 1 >>> 0
        &&
         !
          /*<<camlinternalFormat.ml:337:27>>*/ is_in_char_set
          (set,
            /*<<camlinternalFormat.ml:337:47>>*/ Stdlib[29].call
            (null, i$1 + 1 | 0))){
        /*<<camlinternalFormat.ml:338:8>>*/ print_char(buf, i$1 - 1 | 0);
       var i$5 =  /*<<camlinternalFormat.ml:338:30>>*/ i$1 + 1 | 0;
       i = i$5;
       continue;
      }
       /*<<camlinternalFormat.ml:340:39>>*/ if
       (!
         /*<<camlinternalFormat.ml:340:19>>*/ is_in_char_set
         (set,
           /*<<camlinternalFormat.ml:340:39>>*/ Stdlib[29].call
           (null, i$1 + 1 | 0))){
        /*<<camlinternalFormat.ml:341:8>>*/ print_char(buf, i$1 - 1 | 0);
        /*<<camlinternalFormat.ml:342:8>>*/ print_char(buf, i$1);
       var i$4 =  /*<<camlinternalFormat.ml:342:24>>*/ i$1 + 2 | 0;
       i = i$4;
       continue;
      }
      var
       j =  /*<<camlinternalFormat.ml:345:8>>*/ i$1 + 2 | 0,
       i$3 = i$1 - 1 | 0,
       j$0 = j;
      for(;;){
        /*<<camlinternalFormat.ml:351:4>>*/ if
        (256 !== j$0
         &&
           /*<<camlinternalFormat.ml:351:22>>*/ is_in_char_set
           (set,
             /*<<camlinternalFormat.ml:351:42>>*/ Stdlib[29].call(null, j$0))){
        var j$1 =  /*<<camlinternalFormat.ml:357:6>>*/ j$0 + 1 | 0;
        j$0 = j$1;
        continue;
       }
        /*<<camlinternalFormat.ml:352:6>>*/ print_char(buf, i$3);
        /*<<camlinternalFormat.ml:353:6>>*/ print_char(buf, 45);
        /*<<camlinternalFormat.ml:354:6>>*/ print_char(buf, j$0 - 1 | 0);
        /*<<camlinternalFormat.ml:354:28>>*/ if(j$0 >= 256) break;
       var i$7 =  /*<<camlinternalFormat.ml:355:22>>*/ j$0 + 1 | 0;
       i = i$7;
       continue a;
      }
     }
      /*<<camlinternalFormat.ml:321:7>>*/ if(is_alone(45))
       /*<<camlinternalFormat.ml:321:25>>*/ buffer_add_char(buf, 45);
      /*<<camlinternalFormat.ml:368:3>>*/ return buffer_add_char(buf, 93) /*<<camlinternalFormat.ml:369:25>>*/ ;
    }
   }
   function bprint_padty(buf, padty){
     /*<<camlinternalFormat.ml:374:29>>*/ switch(padty){
      case 0:
        /*<<camlinternalFormat.ml:375:13>>*/ return buffer_add_char(buf, 45) /*<<camlinternalFormat.ml:377:36>>*/ ;
      case 1:
        /*<<camlinternalFormat.ml:376:13>>*/ return;
      default:
        /*<<camlinternalFormat.ml:377:13>>*/ return buffer_add_char(buf, 48) /*<<camlinternalFormat.ml:377:36>>*/ ;
    }
   }
   function bprint_ignored_flag(buf, ign_flag){
     /*<<camlinternalFormat.ml:381:2>>*/ return ign_flag
            ?  /*<<camlinternalFormat.ml:381:19>>*/ buffer_add_char(buf, 95)
            : ign_flag /*<<camlinternalFormat.ml:381:42>>*/ ;
   }
   function bprint_pad_opt(buf, pad_opt){
     /*<<camlinternalFormat.ml:385:33>>*/ if(! pad_opt)
      /*<<camlinternalFormat.ml:386:12>>*/ return;
    var width =  /*<<camlinternalFormat.ml:385:33>>*/ pad_opt[1];
     /*<<camlinternalFormat.ml:387:40>>*/ return  /*<<camlinternalFormat.ml:387:61>>*/ buffer_add_string
            (buf,
              /*<<camlinternalFormat.ml:387:40>>*/ Stdlib_Int[12].call
              (null, width)) /*<<camlinternalFormat.ml:387:61>>*/ ;
   }
   function bprint_padding(buf, pad){
     /*<<camlinternalFormat.ml:393:15>>*/ if(typeof pad === "number")
      /*<<camlinternalFormat.ml:394:18>>*/ return;
     /*<<camlinternalFormat.ml:393:15>>*/ if(0 === pad[0]){
     var n = pad[2], padty = pad[1];
      /*<<camlinternalFormat.ml:396:4>>*/ bprint_padty(buf, padty);
      /*<<camlinternalFormat.ml:397:26>>*/ return  /*<<camlinternalFormat.ml:397:43>>*/ buffer_add_string
             (buf,
               /*<<camlinternalFormat.ml:397:26>>*/ Stdlib_Int[12].call
               (null, n)) /*<<camlinternalFormat.ml:400:27>>*/ ;
    }
    var padty$0 =  /*<<camlinternalFormat.ml:393:15>>*/ pad[1];
     /*<<camlinternalFormat.ml:399:4>>*/ bprint_padty(buf, padty$0);
     /*<<camlinternalFormat.ml:399:26>>*/ return buffer_add_char(buf, 42) /*<<camlinternalFormat.ml:400:27>>*/ ;
   }
   function bprint_precision(buf, prec){
     /*<<camlinternalFormat.ml:404:18>>*/ if(typeof prec !== "number"){
     var n = prec[1];
      /*<<camlinternalFormat.ml:407:4>>*/ buffer_add_char(buf, 46);
      /*<<camlinternalFormat.ml:408:26>>*/ return  /*<<camlinternalFormat.ml:408:43>>*/ buffer_add_string
             (buf,
               /*<<camlinternalFormat.ml:408:26>>*/ Stdlib_Int[12].call
               (null, n)) /*<<camlinternalFormat.ml:410:30>>*/ ;
    }
     /*<<camlinternalFormat.ml:404:18>>*/ if(prec)
      /*<<camlinternalFormat.ml:410:4>>*/ return buffer_add_string(buf, ".*") /*<<camlinternalFormat.ml:410:30>>*/ ;
   }
   function bprint_iconv_flag(buf, iconv){
     /*<<camlinternalFormat.ml:415:34>>*/ switch(iconv){
      case 1:
      case 4:
        /*<<camlinternalFormat.ml:416:23>>*/ return buffer_add_char(buf, 43) /*<<camlinternalFormat.ml:420:55>>*/ ;
      case 2:
      case 5:
        /*<<camlinternalFormat.ml:417:23>>*/ return buffer_add_char(buf, 32) /*<<camlinternalFormat.ml:420:55>>*/ ;
      case 7:
      case 9:
      case 11:
      case 13:
      case 14:
      case 15:
        /*<<camlinternalFormat.ml:419:6>>*/ return buffer_add_char(buf, 35) /*<<camlinternalFormat.ml:420:55>>*/ ;
      default:  /*<<camlinternalFormat.ml:420:53>>*/ return;
    }
    /*<<camlinternalFormat.ml:420:55>>*/ }
   function bprint_altint_fmt(buf, ign_flag, iconv, pad, prec, c){
     /*<<camlinternalFormat.ml:433:2>>*/ buffer_add_char(buf, 37);
     /*<<camlinternalFormat.ml:434:2>>*/ bprint_ignored_flag(buf, ign_flag);
     /*<<camlinternalFormat.ml:435:2>>*/ bprint_iconv_flag(buf, iconv);
     /*<<camlinternalFormat.ml:436:2>>*/ bprint_padding(buf, pad);
     /*<<camlinternalFormat.ml:437:2>>*/ bprint_precision(buf, prec);
     /*<<camlinternalFormat.ml:438:2>>*/ buffer_add_char(buf, c);
     /*<<camlinternalFormat.ml:439:22>>*/ return  /*<<camlinternalFormat.ml:439:43>>*/ buffer_add_char
            (buf,  /*<<camlinternalFormat.ml:439:22>>*/ char_of_iconv(iconv)) /*<<camlinternalFormat.ml:439:43>>*/ ;
   }
   function bprint_fconv_flag(buf, fconv){
     /*<<camlinternalFormat.ml:445:2>>*/ switch(fconv[1]){
      case 1:
        /*<<camlinternalFormat.ml:446:20>>*/ buffer_add_char(buf, 43); break;
      case 2:
        /*<<camlinternalFormat.ml:447:20>>*/ buffer_add_char(buf, 32); break;
    }
     /*<<camlinternalFormat.ml:449:2>>*/ if(8 <= fconv[2])
      /*<<camlinternalFormat.ml:450:16>>*/ return buffer_add_char(buf, 35) /*<<camlinternalFormat.ml:452:37>>*/ ;
   }
   function string_of_formatting_lit(formatting_lit){
     /*<<camlinternalFormat.ml:465:46>>*/ if
     (typeof formatting_lit === "number")
     switch(formatting_lit){
       case 0:
         /*<<camlinternalFormat.ml:466:28>>*/ return "@]";
       case 1:
         /*<<camlinternalFormat.ml:467:28>>*/ return "@}";
       case 2:
         /*<<camlinternalFormat.ml:469:28>>*/ return "@?";
       case 3:
         /*<<camlinternalFormat.ml:470:28>>*/ return "@\n";
       case 4:
         /*<<camlinternalFormat.ml:471:28>>*/ return "@.";
       case 5:
         /*<<camlinternalFormat.ml:473:28>>*/ return "@@";
       default:  /*<<camlinternalFormat.ml:474:28>>*/ return "@%";
     }
     /*<<camlinternalFormat.ml:465:46>>*/ if(2 === formatting_lit[0]){
     var
      c = formatting_lit[1],
      _aZ_ =
         /*<<camlinternalFormat.ml:475:26>>*/ Stdlib_String[1].call
         (null, 1, c);
      /*<<camlinternalFormat.ml:475:43>>*/ return Stdlib[28].call
             (null, "@", _aZ_);
    }
    var str =  /*<<camlinternalFormat.ml:465:46>>*/ formatting_lit[1];
    return str;
    /*<<camlinternalFormat.ml:475:43>>*/ }
   function bprint_char_literal(buf, chr){
     /*<<camlinternalFormat.ml:480:34>>*/ return 37 === chr
            ?  /*<<camlinternalFormat.ml:481:11>>*/ buffer_add_string
              (buf, "%%")
            :  /*<<camlinternalFormat.ml:482:9>>*/ buffer_add_char(buf, chr) /*<<camlinternalFormat.ml:482:32>>*/ ;
   }
   function bprint_string_literal(buf, str){
    var
     _aY_ =
        /*<<camlinternalFormat.ml:486:2>>*/ caml_ml_string_length(str) - 1 | 0;
    if(_aY_ >= 0){
     var i = 0;
     for(;;){
       /*<<camlinternalFormat.ml:487:28>>*/  /*<<camlinternalFormat.ml:487:4>>*/ bprint_char_literal
       (buf,  /*<<camlinternalFormat.ml:487:28>>*/ caml_string_get(str, i));
      var _aZ_ =  /*<<camlinternalFormat.ml:487:35>>*/ i + 1 | 0;
      if(_aY_ === i) break;
      i = _aZ_;
     }
    }
    /*<<camlinternalFormat.ml:488:6>>*/ }
   var
    cst_Li =  /*<<?>>*/ "%Li",
    cst_i = "%i",
    cst_li = "%li",
    cst_ni = "%ni";
   function bprint_fmtty(buf, fmtty$15){
    var fmtty =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty$15;
    for(;;){
     if(typeof fmtty === "number")
       /*<<camlinternalFormat.ml:521:20>>*/ return;
      /*<<camlinternalFormat.ml:496:17>>*/ switch(fmtty[0]){
       case 0:
        var fmtty$0 = fmtty[1];
         /*<<camlinternalFormat.ml:497:25>>*/ buffer_add_string(buf, "%c");
         /*<<camlinternalFormat.ml:497:51>>*/ fmtty = fmtty$0;
        break;
       case 1:
        var fmtty$1 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:498:25>>*/ buffer_add_string(buf, "%s");
         /*<<camlinternalFormat.ml:498:51>>*/ fmtty = fmtty$1;
        break;
       case 2:
        var fmtty$2 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:499:25>>*/ buffer_add_string(buf, cst_i);
         /*<<camlinternalFormat.ml:499:51>>*/ fmtty = fmtty$2;
        break;
       case 3:
        var fmtty$3 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:500:25>>*/ buffer_add_string(buf, cst_li);
         /*<<camlinternalFormat.ml:500:52>>*/ fmtty = fmtty$3;
        break;
       case 4:
        var fmtty$4 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:501:25>>*/ buffer_add_string(buf, cst_ni);
         /*<<camlinternalFormat.ml:501:52>>*/ fmtty = fmtty$4;
        break;
       case 5:
        var fmtty$5 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:502:25>>*/ buffer_add_string(buf, cst_Li);
         /*<<camlinternalFormat.ml:502:52>>*/ fmtty = fmtty$5;
        break;
       case 6:
        var fmtty$6 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:503:25>>*/ buffer_add_string(buf, "%f");
         /*<<camlinternalFormat.ml:503:51>>*/ fmtty = fmtty$6;
        break;
       case 7:
        var fmtty$7 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:504:25>>*/ buffer_add_string(buf, "%B");
         /*<<camlinternalFormat.ml:504:51>>*/ fmtty = fmtty$7;
        break;
       case 8:
        var
         fmtty$8 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[2],
         sub_fmtty = fmtty[1];
         /*<<camlinternalFormat.ml:515:4>>*/ buffer_add_string(buf, "%{");
         /*<<camlinternalFormat.ml:515:32>>*/ bprint_fmtty(buf, sub_fmtty);
         /*<<camlinternalFormat.ml:516:4>>*/ buffer_add_string(buf, "%}");
         /*<<camlinternalFormat.ml:516:30>>*/ fmtty = fmtty$8;
        break;
       case 9:
        var
         fmtty$9 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[3],
         sub_fmtty$0 = fmtty[1];
         /*<<camlinternalFormat.ml:518:4>>*/ buffer_add_string(buf, "%(");
         /*<<camlinternalFormat.ml:518:32>>*/ bprint_fmtty(buf, sub_fmtty$0);
         /*<<camlinternalFormat.ml:519:4>>*/ buffer_add_string(buf, "%)");
         /*<<camlinternalFormat.ml:519:30>>*/ fmtty = fmtty$9;
        break;
       case 10:
        var fmtty$10 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:505:25>>*/ buffer_add_string(buf, "%a");
         /*<<camlinternalFormat.ml:505:51>>*/ fmtty = fmtty$10;
        break;
       case 11:
        var fmtty$11 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:506:25>>*/ buffer_add_string(buf, "%t");
         /*<<camlinternalFormat.ml:506:51>>*/ fmtty = fmtty$11;
        break;
       case 12:
        var fmtty$12 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:507:25>>*/ buffer_add_string(buf, "%?");
         /*<<camlinternalFormat.ml:507:51>>*/ fmtty = fmtty$12;
        break;
       case 13:
        var fmtty$13 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:508:25>>*/ buffer_add_string(buf, "%r");
         /*<<camlinternalFormat.ml:508:51>>*/ fmtty = fmtty$13;
        break;
       default:
        var fmtty$14 =  /*<<camlinternalFormat.ml:496:17>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:511:4>>*/ buffer_add_string(buf, "%_r");
         /*<<camlinternalFormat.ml:511:31>>*/ fmtty = fmtty$14;
     }
    }
    /*<<camlinternalFormat.ml:521:22>>*/ }
   function int_of_custom_arity(param){
     /*<<camlinternalFormat.ml:525:8>>*/ if(! param)
      /*<<camlinternalFormat.ml:528:19>>*/ return 0;
    var x =  /*<<camlinternalFormat.ml:525:8>>*/ param[1];
     /*<<camlinternalFormat.ml:529:25>>*/ return 1 + int_of_custom_arity(x)
           | 0 /*<<camlinternalFormat.ml:529:46>>*/ ;
   }
   var cst$0 =  /*<<?>>*/ "@[", cst = "@{";
   function string_of_fmt(fmt){
    var buf =  /*<<camlinternalFormat.ml:644:12>>*/ buffer_create(16);
    function fmtiter(fmt$1, ign_flag$0){
     var
      fmt =  /*<<camlinternalFormat.ml:535:22>>*/ fmt$1,
      ign_flag = ign_flag$0;
     for(;;){
      if(typeof fmt === "number")
        /*<<camlinternalFormat.ml:636:23>>*/ return;
       /*<<camlinternalFormat.ml:535:22>>*/ switch(fmt[0]){
        case 0:
         var rest = fmt[1];
          /*<<camlinternalFormat.ml:562:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:562:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:563:6>>*/ buffer_add_char(buf, 99);
          /*<<camlinternalFormat.ml:563:29>>*/ fmt = rest;
         ign_flag = 0;
         break;
        case 1:
         var rest$0 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[1];
          /*<<camlinternalFormat.ml:565:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:565:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:566:6>>*/ buffer_add_char(buf, 67);
          /*<<camlinternalFormat.ml:566:29>>*/ fmt = rest$0;
         ign_flag = 0;
         break;
        case 2:
         var
          rest$1 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[2],
          pad = fmt[1];
          /*<<camlinternalFormat.ml:537:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:537:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:538:6>>*/ bprint_padding(buf, pad);
          /*<<camlinternalFormat.ml:538:30>>*/ buffer_add_char(buf, 115);
          /*<<camlinternalFormat.ml:538:53>>*/ fmt = rest$1;
         ign_flag = 0;
         break;
        case 3:
         var
          rest$2 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[2],
          pad$0 = fmt[1];
          /*<<camlinternalFormat.ml:541:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:541:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:542:6>>*/ bprint_padding(buf, pad$0);
          /*<<camlinternalFormat.ml:542:30>>*/ buffer_add_char(buf, 83);
          /*<<camlinternalFormat.ml:542:53>>*/ fmt = rest$2;
         ign_flag = 0;
         break;
        case 4:
         var
          rest$3 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[4],
          prec = fmt[3],
          pad$1 = fmt[2],
          iconv = fmt[1];
          /*<<camlinternalFormat.ml:424:2>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:425:2>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:426:2>>*/ bprint_iconv_flag(buf, iconv);
          /*<<camlinternalFormat.ml:427:2>>*/ bprint_padding(buf, pad$1);
          /*<<camlinternalFormat.ml:428:2>>*/ bprint_precision(buf, prec);
          /*<<camlinternalFormat.ml:429:22>>*/  /*<<camlinternalFormat.ml:429:43>>*/ buffer_add_char
          (buf,  /*<<camlinternalFormat.ml:429:22>>*/ char_of_iconv(iconv));
          /*<<camlinternalFormat.ml:546:48>>*/ fmt = rest$3;
         ign_flag = 0;
         break;
        case 5:
         var
          rest$4 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[4],
          prec$0 = fmt[3],
          pad$2 = fmt[2],
          iconv$0 = fmt[1];
          /*<<camlinternalFormat.ml:549:6>>*/ bprint_altint_fmt
          (buf, ign_flag, iconv$0, pad$2, prec$0, 108);
          /*<<camlinternalFormat.ml:549:55>>*/ fmt = rest$4;
         ign_flag = 0;
         break;
        case 6:
         var
          rest$5 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[4],
          prec$1 = fmt[3],
          pad$3 = fmt[2],
          iconv$1 = fmt[1];
          /*<<camlinternalFormat.ml:552:6>>*/ bprint_altint_fmt
          (buf, ign_flag, iconv$1, pad$3, prec$1, 110);
          /*<<camlinternalFormat.ml:552:55>>*/ fmt = rest$5;
         ign_flag = 0;
         break;
        case 7:
         var
          rest$6 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[4],
          prec$2 = fmt[3],
          pad$4 = fmt[2],
          iconv$2 = fmt[1];
          /*<<camlinternalFormat.ml:555:6>>*/ bprint_altint_fmt
          (buf, ign_flag, iconv$2, pad$4, prec$2, 76);
          /*<<camlinternalFormat.ml:555:55>>*/ fmt = rest$6;
         ign_flag = 0;
         break;
        case 8:
         var
          rest$7 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[4],
          prec$3 = fmt[3],
          pad$5 = fmt[2],
          fconv = fmt[1];
          /*<<camlinternalFormat.ml:456:2>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:457:2>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:458:2>>*/ bprint_fconv_flag(buf, fconv);
          /*<<camlinternalFormat.ml:459:2>>*/ bprint_padding(buf, pad$5);
          /*<<camlinternalFormat.ml:460:2>>*/ bprint_precision(buf, prec$3);
          /*<<camlinternalFormat.ml:461:22>>*/  /*<<camlinternalFormat.ml:461:43>>*/ buffer_add_char
          (buf,  /*<<camlinternalFormat.ml:461:22>>*/ char_of_fconv(0, fconv));
          /*<<camlinternalFormat.ml:558:50>>*/ fmt = rest$7;
         ign_flag = 0;
         break;
        case 9:
         var
          rest$8 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[2],
          pad$6 = fmt[1];
          /*<<camlinternalFormat.ml:568:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:568:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:569:6>>*/ bprint_padding(buf, pad$6);
          /*<<camlinternalFormat.ml:569:30>>*/ buffer_add_char(buf, 66);
          /*<<camlinternalFormat.ml:569:53>>*/ fmt = rest$8;
         ign_flag = 0;
         break;
        case 10:
         var rest$9 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[1];
          /*<<camlinternalFormat.ml:587:6>>*/ buffer_add_string(buf, "%!");
          /*<<camlinternalFormat.ml:587:32>>*/ fmt = rest$9;
         break;
        case 11:
         var
          rest$10 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[2],
          str = fmt[1];
          /*<<camlinternalFormat.ml:591:6>>*/ bprint_string_literal(buf, str);
          /*<<camlinternalFormat.ml:591:35>>*/ fmt = rest$10;
         break;
        case 12:
         var
          rest$11 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[2],
          chr = fmt[1];
          /*<<camlinternalFormat.ml:594:6>>*/ bprint_char_literal(buf, chr);
          /*<<camlinternalFormat.ml:594:33>>*/ fmt = rest$11;
         break;
        case 13:
         var
          rest$12 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[3],
          fmtty = fmt[2],
          pad_opt = fmt[1];
          /*<<camlinternalFormat.ml:598:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:598:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:599:6>>*/ bprint_pad_opt(buf, pad_opt);
          /*<<camlinternalFormat.ml:599:34>>*/ buffer_add_char(buf, 123);
          /*<<camlinternalFormat.ml:600:6>>*/ bprint_fmtty(buf, fmtty);
          /*<<camlinternalFormat.ml:600:30>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:600:55>>*/ buffer_add_char(buf, 125);
          /*<<camlinternalFormat.ml:600:78>>*/ fmt = rest$12;
         ign_flag = 0;
         break;
        case 14:
         var
          rest$13 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[3],
          fmtty$0 = fmt[2],
          pad_opt$0 = fmt[1];
          /*<<camlinternalFormat.ml:603:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:603:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:604:6>>*/ bprint_pad_opt(buf, pad_opt$0);
          /*<<camlinternalFormat.ml:604:34>>*/ buffer_add_char(buf, 40);
          /*<<camlinternalFormat.ml:605:6>>*/ bprint_fmtty(buf, fmtty$0);
          /*<<camlinternalFormat.ml:605:30>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:605:55>>*/ buffer_add_char(buf, 41);
          /*<<camlinternalFormat.ml:605:78>>*/ fmt = rest$13;
         ign_flag = 0;
         break;
        case 15:
         var rest$14 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[1];
          /*<<camlinternalFormat.ml:572:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:572:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:573:6>>*/ buffer_add_char(buf, 97);
          /*<<camlinternalFormat.ml:573:29>>*/ fmt = rest$14;
         ign_flag = 0;
         break;
        case 16:
         var rest$15 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[1];
          /*<<camlinternalFormat.ml:575:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:575:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:576:6>>*/ buffer_add_char(buf, 116);
          /*<<camlinternalFormat.ml:576:29>>*/ fmt = rest$15;
         ign_flag = 0;
         break;
        case 17:
         var
          rest$16 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[2],
          fmting_lit = fmt[1];
          /*<<camlinternalFormat.ml:625:32>>*/  /*<<camlinternalFormat.ml:625:6>>*/ bprint_string_literal
          (buf,
            /*<<camlinternalFormat.ml:625:32>>*/ string_of_formatting_lit
            (fmting_lit));
          /*<<camlinternalFormat.ml:625:69>>*/ fmt = rest$16;
         break;
        case 18:
         var
          rest$17 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[2],
          fmting_gen = fmt[1];
          /*<<camlinternalFormat.ml:628:6>>*/ if(0 === fmting_gen[0]){
          var str$0 = fmting_gen[1][2];
           /*<<camlinternalFormat.ml:630:8>>*/ buffer_add_string(buf, cst);
           /*<<camlinternalFormat.ml:630:36>>*/ buffer_add_string(buf, str$0);
           /*<<camlinternalFormat.ml:630:61>>*/ fmt = rest$17;
         }
         else{
          var str$1 =  /*<<camlinternalFormat.ml:628:6>>*/ fmting_gen[1][2];
           /*<<camlinternalFormat.ml:632:8>>*/ buffer_add_string(buf, cst$0);
           /*<<camlinternalFormat.ml:632:36>>*/ buffer_add_string(buf, str$1);
           /*<<camlinternalFormat.ml:632:61>>*/ fmt = rest$17;
         }
         break;
        case 19:
         var rest$18 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[1];
          /*<<camlinternalFormat.ml:584:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:584:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:585:6>>*/ buffer_add_char(buf, 114);
          /*<<camlinternalFormat.ml:585:29>>*/ fmt = rest$18;
         ign_flag = 0;
         break;
        case 20:
         var
          rest$19 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[3],
          char_set = fmt[2],
          width_opt = fmt[1];
          /*<<camlinternalFormat.ml:609:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:609:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:610:6>>*/ bprint_pad_opt(buf, width_opt);
          /*<<camlinternalFormat.ml:610:36>>*/ bprint_char_set(buf, char_set);
          /*<<camlinternalFormat.ml:610:64>>*/ fmt = rest$19;
         ign_flag = 0;
         break;
        case 21:
         var
          rest$20 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[2],
          counter = fmt[1];
          /*<<camlinternalFormat.ml:613:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:613:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:305:30>>*/ switch(counter){
           case 0:
            var _aW_ =  /*<<camlinternalFormat.ml:306:21>>*/ 108; break;
           case 1:
            var _aW_ =  /*<<camlinternalFormat.ml:307:21>>*/ 110; break;
           default: var _aW_ =  /*<<camlinternalFormat.ml:308:21>>*/ 78;
         }
          /*<<camlinternalFormat.ml:614:6>>*/ buffer_add_char(buf, _aW_);
          /*<<camlinternalFormat.ml:614:51>>*/ fmt = rest$20;
         ign_flag = 0;
         break;
        case 22:
         var rest$21 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[1];
          /*<<camlinternalFormat.ml:617:6>>*/ buffer_add_char(buf, 37);
          /*<<camlinternalFormat.ml:617:31>>*/ bprint_ignored_flag
          (buf, ign_flag);
          /*<<camlinternalFormat.ml:618:6>>*/ bprint_string_literal(buf, "0c");
          /*<<camlinternalFormat.ml:618:36>>*/ fmt = rest$21;
         ign_flag = 0;
         break;
        case 23:
         var
          rest$22 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[2],
          ign = fmt[1],
          fmt$0 =
             /*<<camlinternalFormat.ml:621:34>>*/ param_format_of_ignored_format
              (ign, rest$22)
             [1];
          /*<<camlinternalFormat.ml:622:6>>*/ fmt = fmt$0;
         ign_flag = 1;
         break;
        default:
         var
          rest$23 =  /*<<camlinternalFormat.ml:535:22>>*/ fmt[3],
          arity = fmt[1],
          _aX_ =
             /*<<camlinternalFormat.ml:578:20>>*/ int_of_custom_arity(arity);
          /*<<camlinternalFormat.ml:578:45>>*/ if(_aX_ >= 1){
          var i = 1;
          for(;;){
            /*<<camlinternalFormat.ml:579:8>>*/ buffer_add_char(buf, 37);
            /*<<camlinternalFormat.ml:579:33>>*/ bprint_ignored_flag
            (buf, ign_flag);
            /*<<camlinternalFormat.ml:580:8>>*/ buffer_add_char(buf, 63);
           var _aY_ =  /*<<camlinternalFormat.ml:580:31>>*/ i + 1 | 0;
           if(_aX_ === i) break;
           i = _aY_;
          }
         }
          /*<<camlinternalFormat.ml:582:6>>*/ fmt = rest$23;
         ign_flag = 0;
      }
     }
     /*<<camlinternalFormat.ml:636:25>>*/ }
     /*<<camlinternalFormat.ml:638:5>>*/ fmtiter(fmt, 0);
     /*<<camlinternalFormat.ml:645:20>>*/ return buffer_contents(buf) /*<<camlinternalFormat.ml:646:21>>*/ ;
   }
   function symm(param){
     /*<<camlinternalFormat.ml:657:8>>*/ if(typeof param === "number")
      /*<<camlinternalFormat.ml:680:20>>*/ return 0;
     /*<<camlinternalFormat.ml:657:8>>*/ switch(param[0]){
      case 0:
       var rest = param[1];
        /*<<camlinternalFormat.ml:663:28>>*/ return [0, symm(rest)] /*<<camlinternalFormat.ml:663:39>>*/ ;
      case 1:
       var rest$0 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:670:32>>*/ return [1, symm(rest$0)] /*<<camlinternalFormat.ml:670:43>>*/ ;
      case 2:
       var rest$1 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:664:26>>*/ return [2, symm(rest$1)] /*<<camlinternalFormat.ml:664:37>>*/ ;
      case 3:
       var rest$2 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:665:30>>*/ return [3, symm(rest$2)] /*<<camlinternalFormat.ml:665:41>>*/ ;
      case 4:
       var rest$3 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:667:38>>*/ return [4, symm(rest$3)] /*<<camlinternalFormat.ml:667:49>>*/ ;
      case 5:
       var rest$4 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:666:30>>*/ return [5, symm(rest$4)] /*<<camlinternalFormat.ml:666:41>>*/ ;
      case 6:
       var rest$5 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:668:30>>*/ return [6, symm(rest$5)] /*<<camlinternalFormat.ml:668:41>>*/ ;
      case 7:
       var rest$6 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:669:28>>*/ return [7, symm(rest$6)] /*<<camlinternalFormat.ml:669:39>>*/ ;
      case 8:
       var
        rest$7 =  /*<<camlinternalFormat.ml:657:8>>*/ param[2],
        ty = param[1];
        /*<<camlinternalFormat.ml:677:23>>*/ return [8, ty, symm(rest$7)] /*<<camlinternalFormat.ml:677:32>>*/ ;
      case 9:
       var
        rest$8 =  /*<<camlinternalFormat.ml:657:8>>*/ param[3],
        ty2 = param[2],
        ty1 = param[1];
        /*<<camlinternalFormat.ml:679:31>>*/ return [9,
               ty2,
               ty1,
               symm(rest$8)] /*<<camlinternalFormat.ml:679:40>>*/ ;
      case 10:
       var rest$9 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:672:30>>*/ return [10, symm(rest$9)] /*<<camlinternalFormat.ml:672:41>>*/ ;
      case 11:
       var rest$10 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:671:30>>*/ return [11, symm(rest$10)] /*<<camlinternalFormat.ml:671:41>>*/ ;
      case 12:
       var rest$11 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:673:26>>*/ return [12, symm(rest$11)] /*<<camlinternalFormat.ml:673:37>>*/ ;
      case 13:
       var rest$12 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:674:32>>*/ return [13, symm(rest$12)] /*<<camlinternalFormat.ml:674:43>>*/ ;
      default:
       var rest$13 =  /*<<camlinternalFormat.ml:657:8>>*/ param[1];
        /*<<camlinternalFormat.ml:675:48>>*/ return [14, symm(rest$13)] /*<<camlinternalFormat.ml:675:59>>*/ ;
    }
    /*<<camlinternalFormat.ml:680:32>>*/ }
   function fmtty_rel_det(param){
     /*<<camlinternalFormat.ml:682:8>>*/ if(typeof param === "number")
      /*<<camlinternalFormat.ml:691:4>>*/ return [0,
             ,
             function(param){ /*<<camlinternalFormat.ml:692:21>>*/ },
             ,
             function(param){ /*<<camlinternalFormat.ml:694:21>>*/ }] /*<<camlinternalFormat.ml:691:4>>*/ ;
     /*<<camlinternalFormat.ml:682:8>>*/ switch(param[0]){
      case 0:
       var
        rest = param[1],
        match =  /*<<camlinternalFormat.ml:696:25>>*/ fmtty_rel_det(rest),
        de =  /*<<camlinternalFormat.ml:696:43>>*/ match[4],
        af = match[2];
        /*<<camlinternalFormat.ml:697:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:698:28>>*/ af(0);
                /*<<camlinternalFormat.ml:698:43>>*/ },
               ,
               de] /*<<camlinternalFormat.ml:697:4>>*/ ;
      case 1:
       var
        rest$0 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$0 =  /*<<camlinternalFormat.ml:701:25>>*/ fmtty_rel_det(rest$0),
        de$0 =  /*<<camlinternalFormat.ml:701:43>>*/ match$0[4],
        af$0 = match$0[2];
        /*<<camlinternalFormat.ml:702:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:703:28>>*/ af$0(0);
                /*<<camlinternalFormat.ml:703:43>>*/ },
               ,
               de$0] /*<<camlinternalFormat.ml:702:4>>*/ ;
      case 2:
       var
        rest$1 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$1 =  /*<<camlinternalFormat.ml:706:25>>*/ fmtty_rel_det(rest$1),
        de$1 =  /*<<camlinternalFormat.ml:706:43>>*/ match$1[4],
        af$1 = match$1[2];
        /*<<camlinternalFormat.ml:707:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:708:28>>*/ af$1(0);
                /*<<camlinternalFormat.ml:708:43>>*/ },
               ,
               de$1] /*<<camlinternalFormat.ml:707:4>>*/ ;
      case 3:
       var
        rest$2 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$2 =  /*<<camlinternalFormat.ml:711:25>>*/ fmtty_rel_det(rest$2),
        de$2 =  /*<<camlinternalFormat.ml:711:43>>*/ match$2[4],
        af$2 = match$2[2];
        /*<<camlinternalFormat.ml:712:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:713:28>>*/ af$2(0);
                /*<<camlinternalFormat.ml:713:43>>*/ },
               ,
               de$2] /*<<camlinternalFormat.ml:712:4>>*/ ;
      case 4:
       var
        rest$3 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$3 =  /*<<camlinternalFormat.ml:721:25>>*/ fmtty_rel_det(rest$3),
        de$3 =  /*<<camlinternalFormat.ml:721:43>>*/ match$3[4],
        af$3 = match$3[2];
        /*<<camlinternalFormat.ml:722:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:723:28>>*/ af$3(0);
                /*<<camlinternalFormat.ml:723:43>>*/ },
               ,
               de$3] /*<<camlinternalFormat.ml:722:4>>*/ ;
      case 5:
       var
        rest$4 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$4 =  /*<<camlinternalFormat.ml:716:25>>*/ fmtty_rel_det(rest$4),
        de$4 =  /*<<camlinternalFormat.ml:716:43>>*/ match$4[4],
        af$4 = match$4[2];
        /*<<camlinternalFormat.ml:717:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:718:28>>*/ af$4(0);
                /*<<camlinternalFormat.ml:718:43>>*/ },
               ,
               de$4] /*<<camlinternalFormat.ml:717:4>>*/ ;
      case 6:
       var
        rest$5 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$5 =  /*<<camlinternalFormat.ml:726:25>>*/ fmtty_rel_det(rest$5),
        de$5 =  /*<<camlinternalFormat.ml:726:43>>*/ match$5[4],
        af$5 = match$5[2];
        /*<<camlinternalFormat.ml:727:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:728:28>>*/ af$5(0);
                /*<<camlinternalFormat.ml:728:43>>*/ },
               ,
               de$5] /*<<camlinternalFormat.ml:727:4>>*/ ;
      case 7:
       var
        rest$6 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$6 =  /*<<camlinternalFormat.ml:731:25>>*/ fmtty_rel_det(rest$6),
        de$6 =  /*<<camlinternalFormat.ml:731:43>>*/ match$6[4],
        af$6 = match$6[2];
        /*<<camlinternalFormat.ml:732:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:733:28>>*/ af$6(0);
                /*<<camlinternalFormat.ml:733:43>>*/ },
               ,
               de$6] /*<<camlinternalFormat.ml:732:4>>*/ ;
      case 8:
       var
        rest$7 =  /*<<camlinternalFormat.ml:682:8>>*/ param[2],
        match$7 =  /*<<camlinternalFormat.ml:764:25>>*/ fmtty_rel_det(rest$7),
        de$7 =  /*<<camlinternalFormat.ml:764:43>>*/ match$7[4],
        af$7 = match$7[2];
        /*<<camlinternalFormat.ml:765:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:766:28>>*/ af$7(0);
                /*<<camlinternalFormat.ml:766:43>>*/ },
               ,
               de$7] /*<<camlinternalFormat.ml:765:4>>*/ ;
      case 9:
       var
        rest$8 =  /*<<camlinternalFormat.ml:682:8>>*/ param[3],
        ty2 = param[2],
        ty1 = param[1],
        match$8 =  /*<<camlinternalFormat.ml:769:25>>*/ fmtty_rel_det(rest$8),
        de$8 =  /*<<camlinternalFormat.ml:769:43>>*/ match$8[4],
        af$8 = match$8[2],
        ty =
           /*<<camlinternalFormat.ml:770:19>>*/  /*<<camlinternalFormat.ml:770:13>>*/ trans
           ( /*<<camlinternalFormat.ml:770:19>>*/ symm(ty1), ty2),
        match$9 =  /*<<camlinternalFormat.ml:771:25>>*/ fmtty_rel_det(ty),
        jd =  /*<<camlinternalFormat.ml:771:41>>*/ match$9[4],
        ga = match$9[2];
        /*<<camlinternalFormat.ml:772:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:773:28>>*/ ga(0);
                 /*<<camlinternalFormat.ml:773:50>>*/ af$8(0);
                /*<<camlinternalFormat.ml:773:65>>*/ },
               ,
               function(param){
                 /*<<camlinternalFormat.ml:775:28>>*/ jd(0);
                 /*<<camlinternalFormat.ml:775:50>>*/ de$8(0);
                /*<<camlinternalFormat.ml:775:65>>*/ }] /*<<camlinternalFormat.ml:772:4>>*/ ;
      case 10:
       var
        rest$9 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$10 =  /*<<camlinternalFormat.ml:742:25>>*/ fmtty_rel_det(rest$9),
        de$9 =  /*<<camlinternalFormat.ml:742:43>>*/ match$10[4],
        af$9 = match$10[2];
        /*<<camlinternalFormat.ml:743:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:744:28>>*/ af$9(0);
                /*<<camlinternalFormat.ml:744:43>>*/ },
               ,
               de$9] /*<<camlinternalFormat.ml:743:4>>*/ ;
      case 11:
       var
        rest$10 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$11 =
           /*<<camlinternalFormat.ml:737:25>>*/ fmtty_rel_det(rest$10),
        de$10 =  /*<<camlinternalFormat.ml:737:43>>*/ match$11[4],
        af$10 = match$11[2];
        /*<<camlinternalFormat.ml:738:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:739:28>>*/ af$10(0);
                /*<<camlinternalFormat.ml:739:43>>*/ },
               ,
               de$10] /*<<camlinternalFormat.ml:738:4>>*/ ;
      case 12:
       var
        rest$11 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$12 =
           /*<<camlinternalFormat.ml:747:25>>*/ fmtty_rel_det(rest$11),
        de$11 =  /*<<camlinternalFormat.ml:747:43>>*/ match$12[4],
        af$11 = match$12[2];
        /*<<camlinternalFormat.ml:748:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:749:28>>*/ af$11(0);
                /*<<camlinternalFormat.ml:749:43>>*/ },
               ,
               de$11] /*<<camlinternalFormat.ml:748:4>>*/ ;
      case 13:
       var
        rest$12 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$13 =
           /*<<camlinternalFormat.ml:752:25>>*/ fmtty_rel_det(rest$12),
        de$12 =  /*<<camlinternalFormat.ml:752:43>>*/ match$13[4],
        af$12 = match$13[2];
        /*<<camlinternalFormat.ml:753:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:754:28>>*/ af$12(0);
                /*<<camlinternalFormat.ml:754:43>>*/ },
               ,
               function(param){
                 /*<<camlinternalFormat.ml:756:28>>*/ de$12(0);
                /*<<camlinternalFormat.ml:756:43>>*/ }] /*<<camlinternalFormat.ml:753:4>>*/ ;
      default:
       var
        rest$13 =  /*<<camlinternalFormat.ml:682:8>>*/ param[1],
        match$14 =
           /*<<camlinternalFormat.ml:758:25>>*/ fmtty_rel_det(rest$13),
        de$13 =  /*<<camlinternalFormat.ml:758:43>>*/ match$14[4],
        af$13 = match$14[2];
        /*<<camlinternalFormat.ml:759:4>>*/ return [0,
               ,
               function(param){
                 /*<<camlinternalFormat.ml:760:28>>*/ af$13(0);
                /*<<camlinternalFormat.ml:760:43>>*/ },
               ,
               function(param){
                 /*<<camlinternalFormat.ml:762:28>>*/ de$13(0);
                /*<<camlinternalFormat.ml:762:43>>*/ }] /*<<camlinternalFormat.ml:759:4>>*/ ;
    }
    /*<<camlinternalFormat.ml:775:66>>*/ }
   var
    cst_camlinternalFormat_ml =  /*<<?>>*/ "camlinternalFormat.ml",
    _b_ = [0, cst_camlinternalFormat_ml, 850, 23],
    _c_ = [0, cst_camlinternalFormat_ml, 837, 26],
    _d_ = [0, cst_camlinternalFormat_ml, 847, 28],
    _e_ = [0, cst_camlinternalFormat_ml, 815, 21],
    _f_ = [0, cst_camlinternalFormat_ml, 819, 21],
    _g_ = [0, cst_camlinternalFormat_ml, 823, 19],
    _h_ = [0, cst_camlinternalFormat_ml, 827, 22],
    _i_ = [0, cst_camlinternalFormat_ml, 832, 30],
    _j_ = [0, cst_camlinternalFormat_ml, 851, 23],
    _k_ = [0, cst_camlinternalFormat_ml, 836, 26],
    _l_ = [0, cst_camlinternalFormat_ml, 846, 28],
    _m_ = [0, cst_camlinternalFormat_ml, 814, 21],
    _n_ = [0, cst_camlinternalFormat_ml, 818, 21],
    _o_ = [0, cst_camlinternalFormat_ml, 822, 19],
    _p_ = [0, cst_camlinternalFormat_ml, 826, 22],
    _q_ = [0, cst_camlinternalFormat_ml, 831, 30];
   function trans(ty1, ty2){
    a:
    {
     b:
     {
      c:
      {
       d:
       {
        e:
        {
         f:
         {
          g:
          {
            /*<<camlinternalFormat.ml:803:17>>*/ if(typeof ty1 !== "number"){
            switch(ty1[0]){
              case 0:
               var rest1 = ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 0:
                   var rest2 = ty2[1];
                    /*<<camlinternalFormat.ml:804:44>>*/ return [0,
                           trans(rest1, rest2)] /*<<camlinternalFormat.ml:804:63>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                  case 8:
                   break f;
                  case 9:
                   break g;
                }
               break;
              case 1:
               var rest1$0 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 1:
                   var rest2$0 = ty2[1];
                    /*<<camlinternalFormat.ml:805:50>>*/ return [1,
                           trans(rest1$0, rest2$0)] /*<<camlinternalFormat.ml:805:69>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                  case 8:
                   break f;
                  case 9:
                   break g;
                }
               break;
              case 2:
               var rest1$1 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 2:
                   var rest2$1 = ty2[1];
                    /*<<camlinternalFormat.ml:807:41>>*/ return [2,
                           trans(rest1$1, rest2$1)] /*<<camlinternalFormat.ml:807:60>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                  case 8:
                   break f;
                  case 9:
                   break g;
                }
               break;
              case 3:
               var rest1$2 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 3:
                   var rest2$2 = ty2[1];
                    /*<<camlinternalFormat.ml:808:47>>*/ return [3,
                           trans(rest1$2, rest2$2)] /*<<camlinternalFormat.ml:808:66>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                  case 8:
                   break f;
                  case 9:
                   break g;
                }
               break;
              case 4:
               var rest1$3 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 4:
                   var rest2$3 = ty2[1];
                    /*<<camlinternalFormat.ml:810:59>>*/ return [4,
                           trans(rest1$3, rest2$3)] /*<<camlinternalFormat.ml:810:78>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                  case 8:
                   break f;
                  case 9:
                   break g;
                }
               break;
              case 5:
               var rest1$4 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 5:
                   var rest2$4 = ty2[1];
                    /*<<camlinternalFormat.ml:809:47>>*/ return [5,
                           trans(rest1$4, rest2$4)] /*<<camlinternalFormat.ml:809:66>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                  case 8:
                   break f;
                  case 9:
                   break g;
                }
               break;
              case 6:
               var rest1$5 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 6:
                   var rest2$5 = ty2[1];
                    /*<<camlinternalFormat.ml:811:47>>*/ return [6,
                           trans(rest1$5, rest2$5)] /*<<camlinternalFormat.ml:811:66>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                  case 8:
                   break f;
                  case 9:
                   break g;
                }
               break;
              case 7:
               var rest1$6 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 7:
                   var rest2$6 = ty2[1];
                    /*<<camlinternalFormat.ml:806:44>>*/ return [7,
                           trans(rest1$6, rest2$6)] /*<<camlinternalFormat.ml:806:63>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                  case 8:
                   break f;
                  case 9:
                   break g;
                }
               break;
              case 8:
               var
                rest1$7 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[2],
                ty1$0 = ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 8:
                   var
                    rest2$7 = ty2[2],
                    ty2$0 = ty2[1],
                    _aW_ =
                       /*<<camlinternalFormat.ml:835:34>>*/ trans
                       (rest1$7, rest2$7);
                    /*<<camlinternalFormat.ml:835:19>>*/ return [8,
                           trans(ty1$0, ty2$0),
                           _aW_] /*<<camlinternalFormat.ml:835:32>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                }
                /*<<camlinternalFormat.ml:836:26>>*/ throw caml_maybe_attach_backtrace
                      ([0, Assert_failure, _k_], 1);
              case 9:
               var
                rest1$8 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[3],
                ty12 = ty1[2],
                ty11 = ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 9:
                   var
                    rest2$8 = ty2[3],
                    ty22 = ty2[2],
                    ty21 = ty2[1],
                    ty =
                       /*<<camlinternalFormat.ml:841:19>>*/  /*<<camlinternalFormat.ml:841:13>>*/ trans
                       ( /*<<camlinternalFormat.ml:841:19>>*/ symm(ty12), ty21),
                    match =
                       /*<<camlinternalFormat.ml:842:23>>*/ fmtty_rel_det(ty),
                    f4 =  /*<<camlinternalFormat.ml:842:39>>*/ match[4],
                    f2 = match[2];
                    /*<<camlinternalFormat.ml:843:15>>*/ f2(0);
                    /*<<camlinternalFormat.ml:844:15>>*/ f4(0);
                    /*<<camlinternalFormat.ml:845:33>>*/ return [9,
                           ty11,
                           ty22,
                           trans(rest1$8, rest2$8)] /*<<camlinternalFormat.ml:845:50>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                  case 14:
                   break e;
                  case 8:
                   break f;
                }
                /*<<camlinternalFormat.ml:846:28>>*/ throw caml_maybe_attach_backtrace
                      ([0, Assert_failure, _l_], 1);
              case 10:
               var rest1$9 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number" && 10 === ty2[0]){
                var rest2$9 = ty2[1];
                 /*<<camlinternalFormat.ml:813:47>>*/ return [10,
                        trans(rest1$9, rest2$9)] /*<<camlinternalFormat.ml:813:66>>*/ ;
               }
                /*<<camlinternalFormat.ml:814:21>>*/ throw caml_maybe_attach_backtrace
                      ([0, Assert_failure, _m_], 1);
              case 11:
               var rest1$10 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 11:
                   var rest2$10 = ty2[1];
                    /*<<camlinternalFormat.ml:817:47>>*/ return [11,
                           trans(rest1$10, rest2$10)] /*<<camlinternalFormat.ml:817:66>>*/ ;
                  case 10:
                   break a;
                }
                /*<<camlinternalFormat.ml:818:21>>*/ throw caml_maybe_attach_backtrace
                      ([0, Assert_failure, _n_], 1);
              case 12:
               var rest1$11 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 12:
                   var rest2$11 = ty2[1];
                    /*<<camlinternalFormat.ml:821:41>>*/ return [12,
                           trans(rest1$11, rest2$11)] /*<<camlinternalFormat.ml:821:60>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                }
                /*<<camlinternalFormat.ml:822:19>>*/ throw caml_maybe_attach_backtrace
                      ([0, Assert_failure, _o_], 1);
              case 13:
               var rest1$12 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 13:
                   var rest2$12 = ty2[1];
                    /*<<camlinternalFormat.ml:825:50>>*/ return [13,
                           trans(rest1$12, rest2$12)] /*<<camlinternalFormat.ml:825:69>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                }
                /*<<camlinternalFormat.ml:826:22>>*/ throw caml_maybe_attach_backtrace
                      ([0, Assert_failure, _p_], 1);
              default:
               var rest1$13 =  /*<<camlinternalFormat.ml:803:17>>*/ ty1[1];
               if(typeof ty2 !== "number")
                switch(ty2[0]){
                  case 14:
                   var rest2$13 = ty2[1];
                    /*<<camlinternalFormat.ml:830:22>>*/ return [14,
                           trans(rest1$13, rest2$13)] /*<<camlinternalFormat.ml:830:41>>*/ ;
                  case 10:
                   break a;
                  case 11:
                   break b;
                  case 12:
                   break c;
                  case 13:
                   break d;
                }
                /*<<camlinternalFormat.ml:831:30>>*/ throw caml_maybe_attach_backtrace
                      ([0, Assert_failure, _q_], 1);
            }
             /*<<camlinternalFormat.ml:851:23>>*/ throw caml_maybe_attach_backtrace
                   ([0, Assert_failure, _j_], 1);
           }
            /*<<camlinternalFormat.ml:803:17>>*/ if(typeof ty2 === "number")
             /*<<camlinternalFormat.ml:849:34>>*/ return 0;
            /*<<camlinternalFormat.ml:803:17>>*/ switch(ty2[0]){
             case 10:
              break a;
             case 11:
              break b;
             case 12:
              break c;
             case 13:
              break d;
             case 14:
              break e;
             case 8:
              break f;
             case 9: break;
             default:
               /*<<camlinternalFormat.ml:850:23>>*/ throw caml_maybe_attach_backtrace
                     ([0, Assert_failure, _b_], 1);
           }
          }
           /*<<camlinternalFormat.ml:847:28>>*/ throw caml_maybe_attach_backtrace
                 ([0, Assert_failure, _d_], 1);
         }
          /*<<camlinternalFormat.ml:837:26>>*/ throw caml_maybe_attach_backtrace
                ([0, Assert_failure, _c_], 1);
        }
         /*<<camlinternalFormat.ml:832:30>>*/ throw caml_maybe_attach_backtrace
               ([0, Assert_failure, _i_], 1);
       }
        /*<<camlinternalFormat.ml:827:22>>*/ throw caml_maybe_attach_backtrace
              ([0, Assert_failure, _h_], 1);
      }
       /*<<camlinternalFormat.ml:823:19>>*/ throw caml_maybe_attach_backtrace
             ([0, Assert_failure, _g_], 1);
     }
      /*<<camlinternalFormat.ml:819:21>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _f_], 1);
    }
     /*<<camlinternalFormat.ml:815:21>>*/ throw caml_maybe_attach_backtrace
           ([0, Assert_failure, _e_], 1);
    /*<<camlinternalFormat.ml:851:35>>*/ }
   function fmtty_of_fmt(fmtty$4){
    var fmtty =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty$4;
    for(;;){
     if(typeof fmtty === "number")
       /*<<camlinternalFormat.ml:916:34>>*/ return 0;
      /*<<camlinternalFormat.ml:863:13>>*/ switch(fmtty[0]){
       case 4:
        var
         rest$1 = fmtty[4],
         prec = fmtty[3],
         pad$0 = fmtty[2],
         ty_rest =  /*<<camlinternalFormat.ml:870:18>>*/ fmtty_of_fmt(rest$1),
         prec_ty =
            /*<<camlinternalFormat.ml:871:18>>*/ fmtty_of_precision_fmtty
            (prec, [2, ty_rest]);
         /*<<camlinternalFormat.ml:872:4>>*/ return fmtty_of_padding_fmtty
                (pad$0, prec_ty) /*<<camlinternalFormat.ml:916:46>>*/ ;
       case 5:
        var
         rest$2 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[4],
         prec$0 = fmtty[3],
         pad$1 = fmtty[2],
         ty_rest$0 =
            /*<<camlinternalFormat.ml:874:18>>*/ fmtty_of_fmt(rest$2),
         prec_ty$0 =
            /*<<camlinternalFormat.ml:875:18>>*/ fmtty_of_precision_fmtty
            (prec$0, [3, ty_rest$0]);
         /*<<camlinternalFormat.ml:876:4>>*/ return fmtty_of_padding_fmtty
                (pad$1, prec_ty$0) /*<<camlinternalFormat.ml:916:46>>*/ ;
       case 6:
        var
         rest$3 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[4],
         prec$1 = fmtty[3],
         pad$2 = fmtty[2],
         ty_rest$1 =
            /*<<camlinternalFormat.ml:878:18>>*/ fmtty_of_fmt(rest$3),
         prec_ty$1 =
            /*<<camlinternalFormat.ml:879:18>>*/ fmtty_of_precision_fmtty
            (prec$1, [4, ty_rest$1]);
         /*<<camlinternalFormat.ml:880:4>>*/ return fmtty_of_padding_fmtty
                (pad$2, prec_ty$1) /*<<camlinternalFormat.ml:916:46>>*/ ;
       case 7:
        var
         rest$4 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[4],
         prec$2 = fmtty[3],
         pad$3 = fmtty[2],
         ty_rest$2 =
            /*<<camlinternalFormat.ml:882:18>>*/ fmtty_of_fmt(rest$4),
         prec_ty$2 =
            /*<<camlinternalFormat.ml:883:18>>*/ fmtty_of_precision_fmtty
            (prec$2, [5, ty_rest$2]);
         /*<<camlinternalFormat.ml:884:4>>*/ return fmtty_of_padding_fmtty
                (pad$3, prec_ty$2) /*<<camlinternalFormat.ml:916:46>>*/ ;
       case 8:
        var
         rest$5 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[4],
         prec$3 = fmtty[3],
         pad$4 = fmtty[2],
         ty_rest$3 =
            /*<<camlinternalFormat.ml:886:18>>*/ fmtty_of_fmt(rest$5),
         prec_ty$3 =
            /*<<camlinternalFormat.ml:887:18>>*/ fmtty_of_precision_fmtty
            (prec$3, [6, ty_rest$3]);
         /*<<camlinternalFormat.ml:888:4>>*/ return fmtty_of_padding_fmtty
                (pad$4, prec_ty$3) /*<<camlinternalFormat.ml:916:46>>*/ ;
       case 9:
        var
         rest$6 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[2],
         pad$5 = fmtty[1];
         /*<<camlinternalFormat.ml:893:42>>*/ return  /*<<camlinternalFormat.ml:893:61>>*/ fmtty_of_padding_fmtty
                (pad$5,
                 [7,
                   /*<<camlinternalFormat.ml:893:42>>*/ fmtty_of_fmt(rest$6)]) /*<<camlinternalFormat.ml:916:46>>*/ ;
       case 10:
        var fmtty$0 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:904:34>>*/ fmtty = fmtty$0;
        break;
       case 13:
        var
         rest$7 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[3],
         ty = fmtty[2];
         /*<<camlinternalFormat.ml:900:23>>*/ return [8,
                ty,
                fmtty_of_fmt(rest$7)] /*<<camlinternalFormat.ml:900:40>>*/ ;
       case 14:
        var
         rest$8 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[3],
         ty$0 = fmtty[2];
         /*<<camlinternalFormat.ml:902:29>>*/ return [9,
                ty$0,
                ty$0,
                fmtty_of_fmt(rest$8)] /*<<camlinternalFormat.ml:902:46>>*/ ;
       case 15:
        var rest$9 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:894:43>>*/ return [10,
                fmtty_of_fmt(rest$9)] /*<<camlinternalFormat.ml:894:62>>*/ ;
       case 16:
        var rest$10 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:895:43>>*/ return [11,
                fmtty_of_fmt(rest$10)] /*<<camlinternalFormat.ml:895:62>>*/ ;
       case 18:
        var
         rest$11 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[2],
         formatting_gen = fmtty[1],
         _aV_ =  /*<<camlinternalFormat.ml:914:54>>*/ fmtty_of_fmt(rest$11);
         /*<<camlinternalFormat.ml:856:22>>*/ if(0 === formatting_gen[0])
         var
          fmt = formatting_gen[1][1],
          _aU_ =  /*<<camlinternalFormat.ml:857:34>>*/ fmtty_of_fmt(fmt);
        else
         var
          fmt$0 =  /*<<camlinternalFormat.ml:856:22>>*/ formatting_gen[1][1],
          _aU_ =  /*<<camlinternalFormat.ml:858:34>>*/ fmtty_of_fmt(fmt$0);
         /*<<camlinternalFormat.ml:914:53>>*/ return CamlinternalFormatBasics
                 [1].call
                (null, _aU_, _aV_) /*<<camlinternalFormat.ml:916:46>>*/ ;
       case 19:
        var rest$12 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[1];
         /*<<camlinternalFormat.ml:897:44>>*/ return [13,
                fmtty_of_fmt(rest$12)] /*<<camlinternalFormat.ml:897:63>>*/ ;
       case 20:
        var rest$13 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[3];
         /*<<camlinternalFormat.ml:908:44>>*/ return [1,
                fmtty_of_fmt(rest$13)] /*<<camlinternalFormat.ml:908:63>>*/ ;
       case 21:
        var rest$14 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[2];
         /*<<camlinternalFormat.ml:909:41>>*/ return [2,
                fmtty_of_fmt(rest$14)] /*<<camlinternalFormat.ml:909:60>>*/ ;
       case 23:
        var
         fmtty$2 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[2],
         ign = fmtty[1];
         /*<<camlinternalFormat.ml:931:15>>*/ if(typeof ign === "number"){
         if(2 === ign)
           /*<<camlinternalFormat.ml:944:57>>*/ return [14,
                  fmtty_of_fmt(fmtty$2)] /*<<camlinternalFormat.ml:944:75>>*/ ;
          /*<<camlinternalFormat.ml:931:15>>*/ fmtty = fmtty$2;
        }
        else{
         if(9 === ign[0]){
          var
           fmtty$3 = ign[2],
           _aW_ =  /*<<camlinternalFormat.ml:943:58>>*/ fmtty_of_fmt(fmtty$2);
           /*<<camlinternalFormat.ml:943:76>>*/ return CamlinternalFormatBasics
                   [1].call
                  (null, fmtty$3, _aW_) /*<<camlinternalFormat.ml:916:46>>*/ ;
         }
          /*<<camlinternalFormat.ml:931:15>>*/ fmtty = fmtty$2;
        }
        break;
       case 24:
        var
         rest$15 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[3],
         arity = fmtty[1];
         /*<<camlinternalFormat.ml:896:56>>*/ return  /*<<camlinternalFormat.ml:896:75>>*/ fmtty_of_custom
                (arity,
                  /*<<camlinternalFormat.ml:896:56>>*/ fmtty_of_fmt(rest$15)) /*<<camlinternalFormat.ml:916:46>>*/ ;
       case 2:
       case 3:
        var
         rest$0 =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[2],
         pad = fmtty[1];
        return fmtty_of_padding_fmtty(pad, [1, fmtty_of_fmt(rest$0)]) /*<<camlinternalFormat.ml:916:46>>*/ ;
       case 0:
       case 1:
       case 22:
        var rest =  /*<<camlinternalFormat.ml:863:13>>*/ fmtty[1];
        return [0, fmtty_of_fmt(rest)];
       default: var fmtty$1 = fmtty[2]; fmtty = fmtty$1;
     }
    }
    /*<<camlinternalFormat.ml:916:46>>*/ }
   function fmtty_of_custom(arity, fmtty){
     /*<<camlinternalFormat.ml:921:19>>*/ if(! arity)
      /*<<camlinternalFormat.ml:922:19>>*/ return fmtty;
    var arity$0 =  /*<<camlinternalFormat.ml:921:19>>*/ arity[1];
     /*<<camlinternalFormat.ml:923:32>>*/ return [12,
            fmtty_of_custom(arity$0, fmtty)] /*<<camlinternalFormat.ml:923:61>>*/ ;
   }
   function fmtty_of_padding_fmtty(pad, fmtty){
     /*<<camlinternalFormat.ml:952:19>>*/ return typeof pad === "number"
            ? fmtty
            : 0 === pad[0] ? fmtty : [2, fmtty] /*<<camlinternalFormat.ml:955:35>>*/ ;
   }
   function fmtty_of_precision_fmtty(prec, fmtty){
     /*<<camlinternalFormat.ml:960:20>>*/ return typeof prec === "number"
            ? prec ? [2, fmtty] : fmtty
            : fmtty /*<<camlinternalFormat.ml:963:37>>*/ ;
   }
   var
    Type_mismatch =
       /*<<?>>*/ [248,
       "CamlinternalFormat.Type_mismatch",
       runtime.caml_fresh_oo_id(0)];
   function type_padding(pad, fmtty){
     /*<<camlinternalFormat.ml:977:17>>*/ if(typeof pad === "number")
      /*<<camlinternalFormat.ml:978:21>>*/ return [0, 0, fmtty];
     /*<<camlinternalFormat.ml:977:17>>*/ if(0 === pad[0]){
     var w = pad[2], padty = pad[1];
      /*<<camlinternalFormat.ml:979:33>>*/ return [0, [0, padty, w], fmtty];
    }
     /*<<camlinternalFormat.ml:977:17>>*/ if
     (typeof fmtty !== "number" && 2 === fmtty[0]){
     var rest = fmtty[1], padty$0 = pad[1];
      /*<<camlinternalFormat.ml:980:38>>*/ return [0, [1, padty$0], rest];
    }
     /*<<camlinternalFormat.ml:981:9>>*/ throw caml_maybe_attach_backtrace
           (Type_mismatch, 1);
    /*<<camlinternalFormat.ml:981:28>>*/ }
   function type_padprec(pad, prec, fmtty){
    var
     match =  /*<<camlinternalFormat.ml:989:34>>*/ type_padding(pad, fmtty);
     /*<<camlinternalFormat.ml:989:56>>*/ if(typeof prec !== "number"){
     var rest$1 = match[2], pad$2 = match[1], p = prec[1];
      /*<<camlinternalFormat.ml:993:4>>*/ return [0, pad$2, [0, p], rest$1];
    }
     /*<<camlinternalFormat.ml:989:56>>*/ if(! prec){
     var rest$0 = match[2], pad$1 = match[1];
      /*<<camlinternalFormat.ml:991:4>>*/ return [0, pad$1, 0, rest$0];
    }
    var match$0 =  /*<<camlinternalFormat.ml:989:56>>*/ match[2];
    if(typeof match$0 !== "number" && 2 === match$0[0]){
     var rest = match$0[1], pad$0 = match[1];
      /*<<camlinternalFormat.ml:995:4>>*/ return [0, pad$0, 1, rest];
    }
     /*<<camlinternalFormat.ml:996:35>>*/ throw caml_maybe_attach_backtrace
           (Type_mismatch, 1);
    /*<<camlinternalFormat.ml:996:54>>*/ }
   function type_format(fmt, fmtty){
    var
     _aU_ =  /*<<camlinternalFormat.ml:1008:25>>*/ type_format_gen(fmt, fmtty);
     /*<<camlinternalFormat.ml:1008:50>>*/ if(typeof _aU_[2] !== "number")
      /*<<camlinternalFormat.ml:1010:9>>*/ throw caml_maybe_attach_backtrace
            (Type_mismatch, 1);
    var fmt$0 =  /*<<camlinternalFormat.ml:1008:50>>*/ _aU_[1];
     /*<<camlinternalFormat.ml:1009:42>>*/ return fmt$0;
    /*<<camlinternalFormat.ml:1010:28>>*/ }
   function type_format_gen(fmt, fmtty0){
     /*<<camlinternalFormat.ml:1018:19>>*/ if(typeof fmt === "number")
      /*<<camlinternalFormat.ml:1133:33>>*/ return [0, 0, fmtty0];
     /*<<camlinternalFormat.ml:1018:19>>*/ switch(fmt[0]){
      case 0:
       if(typeof fmtty0 !== "number" && 0 === fmtty0[0]){
        var
         fmtty_rest = fmtty0[1],
         fmt_rest = fmt[1],
         match =
            /*<<camlinternalFormat.ml:1020:39>>*/ type_format_gen
            (fmt_rest, fmtty_rest),
         fmtty =  /*<<camlinternalFormat.ml:1020:74>>*/ match[2],
         fmt$0 = match[1];
         /*<<camlinternalFormat.ml:1021:4>>*/ return [0, [0, fmt$0], fmtty];
       }
       break;
      case 1:
        /*<<camlinternalFormat.ml:1018:19>>*/ if
        (typeof fmtty0 !== "number" && 0 === fmtty0[0]){
        var
         fmtty_rest$0 = fmtty0[1],
         fmt_rest$0 = fmt[1],
         match$0 =
            /*<<camlinternalFormat.ml:1023:39>>*/ type_format_gen
            (fmt_rest$0, fmtty_rest$0),
         fmtty$0 =  /*<<camlinternalFormat.ml:1023:74>>*/ match$0[2],
         fmt$1 = match$0[1];
         /*<<camlinternalFormat.ml:1024:4>>*/ return [0, [1, fmt$1], fmtty$0];
       }
       break;
      case 2:
       var
        fmt_rest$1 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[2],
        pad = fmt[1],
        match$1 =
           /*<<camlinternalFormat.ml:1026:10>>*/ type_padding(pad, fmtty0),
        pad$0 =  /*<<camlinternalFormat.ml:1026:32>>*/ match$1[1],
        match$2 = match$1[2];
       if(typeof match$2 !== "number" && 1 === match$2[0]){
        var
         fmtty_rest$1 = match$2[1],
         match$3 =
            /*<<camlinternalFormat.ml:1028:41>>*/ type_format_gen
            (fmt_rest$1, fmtty_rest$1),
         fmtty$1 =  /*<<camlinternalFormat.ml:1028:76>>*/ match$3[2],
         fmt$2 = match$3[1];
         /*<<camlinternalFormat.ml:1029:6>>*/ return [0,
                [2, pad$0, fmt$2],
                fmtty$1];
       }
        /*<<camlinternalFormat.ml:1030:34>>*/ throw caml_maybe_attach_backtrace
              (Type_mismatch, 1);
      case 3:
       var
        fmt_rest$2 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[2],
        pad$1 = fmt[1],
        match$4 =
           /*<<camlinternalFormat.ml:1033:10>>*/ type_padding(pad$1, fmtty0),
        pad$2 =  /*<<camlinternalFormat.ml:1033:32>>*/ match$4[1],
        match$5 = match$4[2];
       if(typeof match$5 !== "number" && 1 === match$5[0]){
        var
         fmtty_rest$2 = match$5[1],
         match$6 =
            /*<<camlinternalFormat.ml:1035:41>>*/ type_format_gen
            (fmt_rest$2, fmtty_rest$2),
         fmtty$2 =  /*<<camlinternalFormat.ml:1035:76>>*/ match$6[2],
         fmt$3 = match$6[1];
         /*<<camlinternalFormat.ml:1036:6>>*/ return [0,
                [3, pad$2, fmt$3],
                fmtty$2];
       }
        /*<<camlinternalFormat.ml:1037:34>>*/ throw caml_maybe_attach_backtrace
              (Type_mismatch, 1);
      case 4:
       var
        fmt_rest$3 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[4],
        prec = fmt[3],
        pad$3 = fmt[2],
        iconv = fmt[1],
        match$7 =
           /*<<camlinternalFormat.ml:1040:10>>*/ type_padprec
           (pad$3, prec, fmtty0),
        pad$4 =  /*<<camlinternalFormat.ml:1040:37>>*/ match$7[1],
        match$8 = match$7[3];
       if(typeof match$8 !== "number" && 2 === match$8[0]){
        var
         fmtty_rest$3 = match$8[1],
         prec$0 = match$7[2],
         match$9 =
            /*<<camlinternalFormat.ml:1042:41>>*/ type_format_gen
            (fmt_rest$3, fmtty_rest$3),
         fmtty$3 =  /*<<camlinternalFormat.ml:1042:76>>*/ match$9[2],
         fmt$4 = match$9[1];
         /*<<camlinternalFormat.ml:1043:6>>*/ return [0,
                [4, iconv, pad$4, prec$0, fmt$4],
                fmtty$3];
       }
        /*<<camlinternalFormat.ml:1044:37>>*/ throw caml_maybe_attach_backtrace
              (Type_mismatch, 1);
      case 5:
       var
        fmt_rest$4 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[4],
        prec$1 = fmt[3],
        pad$5 = fmt[2],
        iconv$0 = fmt[1],
        match$10 =
           /*<<camlinternalFormat.ml:1047:10>>*/ type_padprec
           (pad$5, prec$1, fmtty0),
        pad$6 =  /*<<camlinternalFormat.ml:1047:37>>*/ match$10[1],
        match$11 = match$10[3];
       if(typeof match$11 !== "number" && 3 === match$11[0]){
        var
         fmtty_rest$4 = match$11[1],
         prec$2 = match$10[2],
         match$12 =
            /*<<camlinternalFormat.ml:1049:41>>*/ type_format_gen
            (fmt_rest$4, fmtty_rest$4),
         fmtty$4 =  /*<<camlinternalFormat.ml:1049:76>>*/ match$12[2],
         fmt$5 = match$12[1];
         /*<<camlinternalFormat.ml:1050:6>>*/ return [0,
                [5, iconv$0, pad$6, prec$2, fmt$5],
                fmtty$4];
       }
        /*<<camlinternalFormat.ml:1051:37>>*/ throw caml_maybe_attach_backtrace
              (Type_mismatch, 1);
      case 6:
       var
        fmt_rest$5 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[4],
        prec$3 = fmt[3],
        pad$7 = fmt[2],
        iconv$1 = fmt[1],
        match$13 =
           /*<<camlinternalFormat.ml:1054:10>>*/ type_padprec
           (pad$7, prec$3, fmtty0),
        pad$8 =  /*<<camlinternalFormat.ml:1054:37>>*/ match$13[1],
        match$14 = match$13[3];
       if(typeof match$14 !== "number" && 4 === match$14[0]){
        var
         fmtty_rest$5 = match$14[1],
         prec$4 = match$13[2],
         match$15 =
            /*<<camlinternalFormat.ml:1056:41>>*/ type_format_gen
            (fmt_rest$5, fmtty_rest$5),
         fmtty$5 =  /*<<camlinternalFormat.ml:1056:76>>*/ match$15[2],
         fmt$6 = match$15[1];
         /*<<camlinternalFormat.ml:1057:6>>*/ return [0,
                [6, iconv$1, pad$8, prec$4, fmt$6],
                fmtty$5];
       }
        /*<<camlinternalFormat.ml:1058:37>>*/ throw caml_maybe_attach_backtrace
              (Type_mismatch, 1);
      case 7:
       var
        fmt_rest$6 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[4],
        prec$5 = fmt[3],
        pad$9 = fmt[2],
        iconv$2 = fmt[1],
        match$16 =
           /*<<camlinternalFormat.ml:1061:10>>*/ type_padprec
           (pad$9, prec$5, fmtty0),
        pad$10 =  /*<<camlinternalFormat.ml:1061:37>>*/ match$16[1],
        match$17 = match$16[3];
       if(typeof match$17 !== "number" && 5 === match$17[0]){
        var
         fmtty_rest$6 = match$17[1],
         prec$6 = match$16[2],
         match$18 =
            /*<<camlinternalFormat.ml:1063:41>>*/ type_format_gen
            (fmt_rest$6, fmtty_rest$6),
         fmtty$6 =  /*<<camlinternalFormat.ml:1063:76>>*/ match$18[2],
         fmt$7 = match$18[1];
         /*<<camlinternalFormat.ml:1064:6>>*/ return [0,
                [7, iconv$2, pad$10, prec$6, fmt$7],
                fmtty$6];
       }
        /*<<camlinternalFormat.ml:1065:37>>*/ throw caml_maybe_attach_backtrace
              (Type_mismatch, 1);
      case 8:
       var
        fmt_rest$7 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[4],
        prec$7 = fmt[3],
        pad$11 = fmt[2],
        fconv = fmt[1],
        match$19 =
           /*<<camlinternalFormat.ml:1068:10>>*/ type_padprec
           (pad$11, prec$7, fmtty0),
        pad$12 =  /*<<camlinternalFormat.ml:1068:37>>*/ match$19[1],
        match$20 = match$19[3];
       if(typeof match$20 !== "number" && 6 === match$20[0]){
        var
         fmtty_rest$7 = match$20[1],
         prec$8 = match$19[2],
         match$21 =
            /*<<camlinternalFormat.ml:1070:41>>*/ type_format_gen
            (fmt_rest$7, fmtty_rest$7),
         fmtty$7 =  /*<<camlinternalFormat.ml:1070:76>>*/ match$21[2],
         fmt$8 = match$21[1];
         /*<<camlinternalFormat.ml:1071:6>>*/ return [0,
                [8, fconv, pad$12, prec$8, fmt$8],
                fmtty$7];
       }
        /*<<camlinternalFormat.ml:1072:37>>*/ throw caml_maybe_attach_backtrace
              (Type_mismatch, 1);
      case 9:
       var
        fmt_rest$8 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[2],
        pad$13 = fmt[1],
        match$22 =
           /*<<camlinternalFormat.ml:1075:10>>*/ type_padding(pad$13, fmtty0),
        pad$14 =  /*<<camlinternalFormat.ml:1075:32>>*/ match$22[1],
        match$23 = match$22[2];
       if(typeof match$23 !== "number" && 7 === match$23[0]){
        var
         fmtty_rest$8 = match$23[1],
         match$24 =
            /*<<camlinternalFormat.ml:1077:41>>*/ type_format_gen
            (fmt_rest$8, fmtty_rest$8),
         fmtty$8 =  /*<<camlinternalFormat.ml:1077:76>>*/ match$24[2],
         fmt$9 = match$24[1];
         /*<<camlinternalFormat.ml:1078:6>>*/ return [0,
                [9, pad$14, fmt$9],
                fmtty$8];
       }
        /*<<camlinternalFormat.ml:1079:34>>*/ throw caml_maybe_attach_backtrace
              (Type_mismatch, 1);
      case 10:
       var
        fmt_rest$9 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[1],
        match$25 =
           /*<<camlinternalFormat.ml:1082:39>>*/ type_format_gen
           (fmt_rest$9, fmtty0),
        fmtty$9 =  /*<<camlinternalFormat.ml:1082:74>>*/ match$25[2],
        fmt$10 = match$25[1];
        /*<<camlinternalFormat.ml:1083:4>>*/ return [0, [10, fmt$10], fmtty$9];
      case 11:
       var
        fmt_rest$10 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[2],
        str = fmt[1],
        match$26 =
           /*<<camlinternalFormat.ml:1086:39>>*/ type_format_gen
           (fmt_rest$10, fmtty0),
        fmtty$10 =  /*<<camlinternalFormat.ml:1086:74>>*/ match$26[2],
        fmt$11 = match$26[1];
        /*<<camlinternalFormat.ml:1087:4>>*/ return [0,
               [11, str, fmt$11],
               fmtty$10];
      case 12:
       var
        fmt_rest$11 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[2],
        chr = fmt[1],
        match$27 =
           /*<<camlinternalFormat.ml:1089:39>>*/ type_format_gen
           (fmt_rest$11, fmtty0),
        fmtty$11 =  /*<<camlinternalFormat.ml:1089:74>>*/ match$27[2],
        fmt$12 = match$27[1];
        /*<<camlinternalFormat.ml:1090:4>>*/ return [0,
               [12, chr, fmt$12],
               fmtty$11];
      case 13:
        /*<<camlinternalFormat.ml:1018:19>>*/ if
        (typeof fmtty0 !== "number" && 8 === fmtty0[0]){
        var
         fmtty_rest$9 = fmtty0[2],
         sub_fmtty = fmtty0[1],
         fmt_rest$12 = fmt[3],
         sub_fmtty$0 = fmt[2],
         pad_opt = fmt[1];
         /*<<camlinternalFormat.ml:1094:7>>*/ if
         (caml_notequal([0, sub_fmtty$0], [0, sub_fmtty]))
          /*<<camlinternalFormat.ml:1094:56>>*/ throw caml_maybe_attach_backtrace
                (Type_mismatch, 1);
        var
         match$28 =
            /*<<camlinternalFormat.ml:1095:39>>*/ type_format_gen
            (fmt_rest$12, fmtty_rest$9),
         fmtty$12 =  /*<<camlinternalFormat.ml:1095:74>>*/ match$28[2],
         fmt$13 = match$28[1];
         /*<<camlinternalFormat.ml:1096:4>>*/ return [0,
                [13, pad_opt, sub_fmtty, fmt$13],
                fmtty$12];
       }
       break;
      case 14:
        /*<<camlinternalFormat.ml:1018:19>>*/ if
        (typeof fmtty0 !== "number" && 9 === fmtty0[0]){
        var
         fmtty_rest$10 = fmtty0[3],
         sub_fmtty1 = fmtty0[1],
         fmt_rest$13 = fmt[3],
         sub_fmtty$1 = fmt[2],
         pad_opt$0 = fmt[1],
         _aU_ =
            /*<<camlinternalFormat.ml:1099:52>>*/ [0,
            CamlinternalFormatBasics[2].call(null, sub_fmtty1)];
         /*<<camlinternalFormat.ml:1099:17>>*/ if
         ( /*<<camlinternalFormat.ml:1099:7>>*/ caml_notequal
           ([0,
              /*<<camlinternalFormat.ml:1099:17>>*/ CamlinternalFormatBasics
               [2].call
              (null, sub_fmtty$1)],
            _aU_))
          /*<<camlinternalFormat.ml:1100:6>>*/ throw caml_maybe_attach_backtrace
                (Type_mismatch, 1);
        var
         match$29 =
            /*<<camlinternalFormat.ml:1102:31>>*/  /*<<camlinternalFormat.ml:1102:6>>*/ type_format_gen
            (fmt_rest$13,
              /*<<camlinternalFormat.ml:1102:31>>*/ CamlinternalFormatBasics
               [2].call
              (null, fmtty_rest$10)),
         fmtty$13 =  /*<<camlinternalFormat.ml:1102:53>>*/ match$29[2],
         fmt$14 = match$29[1];
         /*<<camlinternalFormat.ml:1104:4>>*/ return [0,
                [14, pad_opt$0, sub_fmtty1, fmt$14],
                fmtty$13];
       }
       break;
      case 15:
        /*<<camlinternalFormat.ml:1018:19>>*/ if
        (typeof fmtty0 !== "number" && 10 === fmtty0[0]){
        var
         fmtty_rest$11 = fmtty0[1],
         fmt_rest$14 = fmt[1],
         match$30 =
            /*<<camlinternalFormat.ml:1107:39>>*/ type_format_gen
            (fmt_rest$14, fmtty_rest$11),
         fmtty$14 =  /*<<camlinternalFormat.ml:1107:74>>*/ match$30[2],
         fmt$15 = match$30[1];
         /*<<camlinternalFormat.ml:1108:4>>*/ return [0,
                [15, fmt$15],
                fmtty$14];
       }
       break;
      case 16:
        /*<<camlinternalFormat.ml:1018:19>>*/ if
        (typeof fmtty0 !== "number" && 11 === fmtty0[0]){
        var
         fmtty_rest$12 = fmtty0[1],
         fmt_rest$15 = fmt[1],
         match$31 =
            /*<<camlinternalFormat.ml:1110:39>>*/ type_format_gen
            (fmt_rest$15, fmtty_rest$12),
         fmtty$15 =  /*<<camlinternalFormat.ml:1110:74>>*/ match$31[2],
         fmt$16 = match$31[1];
         /*<<camlinternalFormat.ml:1111:4>>*/ return [0,
                [16, fmt$16],
                fmtty$15];
       }
       break;
      case 17:
       var
        fmt_rest$16 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[2],
        formatting_lit = fmt[1],
        match$32 =
           /*<<camlinternalFormat.ml:1115:39>>*/ type_format_gen
           (fmt_rest$16, fmtty0),
        fmtty$16 =  /*<<camlinternalFormat.ml:1115:74>>*/ match$32[2],
        fmt$17 = match$32[1];
        /*<<camlinternalFormat.ml:1116:4>>*/ return [0,
               [17, formatting_lit, fmt$17],
               fmtty$16];
      case 18:
       var
        fmt_rest$17 =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[2],
        formatting_gen = fmt[1];
        /*<<camlinternalFormat.ml:1142:34>>*/ if(0 === formatting_gen[0]){
        var
         match$36 = formatting_gen[1],
         str$0 = match$36[2],
         fmt1 = match$36[1],
         match$37 =
            /*<<camlinternalFormat.ml:1144:39>>*/ type_format_gen
            (fmt1, fmtty0),
         fmtty2 =  /*<<camlinternalFormat.ml:1144:66>>*/ match$37[2],
         fmt2 = match$37[1],
         match$38 =
            /*<<camlinternalFormat.ml:1145:39>>*/ type_format_gen
            (fmt_rest$17, fmtty2),
         fmtty3 =  /*<<camlinternalFormat.ml:1145:66>>*/ match$38[2],
         fmt3 = match$38[1];
         /*<<camlinternalFormat.ml:1146:4>>*/ return [0,
                [18, [0, [0, fmt2, str$0]], fmt3],
                fmtty3];
       }
       var
        match$39 =  /*<<camlinternalFormat.ml:1142:34>>*/ formatting_gen[1],
        str$1 = match$39[2],
        fmt1$0 = match$39[1],
        match$40 =
           /*<<camlinternalFormat.ml:1148:39>>*/ type_format_gen
           (fmt1$0, fmtty0),
        fmtty2$0 =  /*<<camlinternalFormat.ml:1148:66>>*/ match$40[2],
        fmt2$0 = match$40[1],
        match$41 =
           /*<<camlinternalFormat.ml:1149:39>>*/ type_format_gen
           (fmt_rest$17, fmtty2$0),
        fmtty3$0 =  /*<<camlinternalFormat.ml:1149:66>>*/ match$41[2],
        fmt3$0 = match$41[1];
        /*<<camlinternalFormat.ml:1150:4>>*/ return [0,
               [18, [1, [0, fmt2$0, str$1]], fmt3$0],
               fmtty3$0];
      case 19:
        /*<<camlinternalFormat.ml:1018:19>>*/ if
        (typeof fmtty0 !== "number" && 13 === fmtty0[0]){
        var
         fmtty_rest$13 = fmtty0[1],
         fmt_rest$18 = fmt[1],
         match$33 =
            /*<<camlinternalFormat.ml:1122:39>>*/ type_format_gen
            (fmt_rest$18, fmtty_rest$13),
         fmtty$17 =  /*<<camlinternalFormat.ml:1122:74>>*/ match$33[2],
         fmt$18 = match$33[1];
         /*<<camlinternalFormat.ml:1123:4>>*/ return [0,
                [19, fmt$18],
                fmtty$17];
       }
       break;
      case 20:
        /*<<camlinternalFormat.ml:1018:19>>*/ if
        (typeof fmtty0 !== "number" && 1 === fmtty0[0]){
        var
         fmtty_rest$14 = fmtty0[1],
         fmt_rest$19 = fmt[3],
         char_set = fmt[2],
         width_opt = fmt[1],
         match$34 =
            /*<<camlinternalFormat.ml:1125:39>>*/ type_format_gen
            (fmt_rest$19, fmtty_rest$14),
         fmtty$18 =  /*<<camlinternalFormat.ml:1125:74>>*/ match$34[2],
         fmt$19 = match$34[1];
         /*<<camlinternalFormat.ml:1126:4>>*/ return [0,
                [20, width_opt, char_set, fmt$19],
                fmtty$18];
       }
       break;
      case 21:
        /*<<camlinternalFormat.ml:1018:19>>*/ if
        (typeof fmtty0 !== "number" && 2 === fmtty0[0]){
        var
         fmtty_rest$15 = fmtty0[1],
         fmt_rest$20 = fmt[2],
         counter = fmt[1],
         match$35 =
            /*<<camlinternalFormat.ml:1128:39>>*/ type_format_gen
            (fmt_rest$20, fmtty_rest$15),
         fmtty$19 =  /*<<camlinternalFormat.ml:1128:74>>*/ match$35[2],
         fmt$20 = match$35[1];
         /*<<camlinternalFormat.ml:1129:4>>*/ return [0,
                [21, counter, fmt$20],
                fmtty$19];
       }
       break;
      case 23:
       var rest =  /*<<camlinternalFormat.ml:1018:19>>*/ fmt[2], ign = fmt[1];
        /*<<camlinternalFormat.ml:1158:21>>*/ if(typeof ign !== "number")
        switch(ign[0]){
          case 8:
           var sub_fmtty$2 = ign[2], pad_opt$1 = ign[1];
            /*<<camlinternalFormat.ml:1173:4>>*/ return type_ignored_param_one
                   ([8, pad_opt$1, sub_fmtty$2], rest, fmtty0) /*<<camlinternalFormat.ml:1135:28>>*/ ;
          case 9:
           var
            sub_fmtty$3 =  /*<<camlinternalFormat.ml:1158:21>>*/ ign[2],
            pad_opt$2 = ign[1],
            _aT_ =
               /*<<camlinternalFormat.ml:1176:6>>*/ type_ignored_format_substituti
               (sub_fmtty$3, rest, fmtty0),
            match$43 =  /*<<camlinternalFormat.ml:1176:58>>*/ _aT_[2],
            fmtty$21 = match$43[2],
            fmt$22 = match$43[1],
            sub_fmtty$4 = _aT_[1];
            /*<<camlinternalFormat.ml:1177:4>>*/ return [0,
                   [23, [9, pad_opt$2, sub_fmtty$4], fmt$22],
                   fmtty$21];
          default:
            /*<<camlinternalFormat.ml:1158:21>>*/ return type_ignored_param_one
                   (ign, rest, fmtty0) /*<<camlinternalFormat.ml:1135:28>>*/ ;
        }
        /*<<camlinternalFormat.ml:1158:21>>*/ if(2 !== ign)
        return type_ignored_param_one(ign, rest, fmtty0) /*<<camlinternalFormat.ml:1135:28>>*/ ;
        /*<<camlinternalFormat.ml:1180:22>>*/ if
        (typeof fmtty0 !== "number" && 14 === fmtty0[0]){
        var
         fmtty_rest$16 = fmtty0[1],
         match$42 =
            /*<<camlinternalFormat.ml:1183:41>>*/ type_format_gen
            (rest, fmtty_rest$16),
         fmtty$20 =  /*<<camlinternalFormat.ml:1183:71>>*/ match$42[2],
         fmt$21 = match$42[1];
         /*<<camlinternalFormat.ml:1184:6>>*/ return [0,
                [23, 2, fmt$21],
                fmtty$20];
       }
        /*<<camlinternalFormat.ml:1185:11>>*/ throw caml_maybe_attach_backtrace
              (Type_mismatch, 1);
    }
     /*<<camlinternalFormat.ml:1135:9>>*/ throw caml_maybe_attach_backtrace
           (Type_mismatch, 1);
    /*<<camlinternalFormat.ml:1135:28>>*/ }
   function type_ignored_param_one(ign, fmt, fmtty){
    var
     match =
        /*<<camlinternalFormat.ml:1194:37>>*/ type_format_gen(fmt, fmtty),
     fmtty$0 =  /*<<camlinternalFormat.ml:1194:62>>*/ match[2],
     fmt$0 = match[1];
     /*<<camlinternalFormat.ml:1195:2>>*/ return [0,
            [23, ign, fmt$0],
            fmtty$0];
    /*<<camlinternalFormat.ml:1195:51>>*/ }
   function type_ignored_format_substituti(sub_fmtty, fmt, fmtty){
     /*<<camlinternalFormat.ml:1202:27>>*/ if(typeof sub_fmtty === "number")
      /*<<camlinternalFormat.ml:1276:33>>*/ return [0,
             0,
             type_format_gen(fmt, fmtty)] /*<<camlinternalFormat.ml:1276:58>>*/ ;
     /*<<camlinternalFormat.ml:1202:27>>*/ switch(sub_fmtty[0]){
      case 0:
       if(typeof fmtty !== "number" && 0 === fmtty[0]){
        var
         fmtty_rest = fmtty[1],
         sub_fmtty_rest = sub_fmtty[1],
         match =
            /*<<camlinternalFormat.ml:1205:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest, fmt, fmtty_rest),
         fmt$0 =  /*<<camlinternalFormat.ml:1205:68>>*/ match[2],
         sub_fmtty_rest$0 = match[1];
         /*<<camlinternalFormat.ml:1206:4>>*/ return [0,
                [0, sub_fmtty_rest$0],
                fmt$0];
       }
       break;
      case 1:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 1 === fmtty[0]){
        var
         fmtty_rest$0 = fmtty[1],
         sub_fmtty_rest$1 = sub_fmtty[1],
         match$0 =
            /*<<camlinternalFormat.ml:1209:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$1, fmt, fmtty_rest$0),
         fmt$1 =  /*<<camlinternalFormat.ml:1209:68>>*/ match$0[2],
         sub_fmtty_rest$2 = match$0[1];
         /*<<camlinternalFormat.ml:1210:4>>*/ return [0,
                [1, sub_fmtty_rest$2],
                fmt$1];
       }
       break;
      case 2:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 2 === fmtty[0]){
        var
         fmtty_rest$1 = fmtty[1],
         sub_fmtty_rest$3 = sub_fmtty[1],
         match$1 =
            /*<<camlinternalFormat.ml:1213:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$3, fmt, fmtty_rest$1),
         fmt$2 =  /*<<camlinternalFormat.ml:1213:68>>*/ match$1[2],
         sub_fmtty_rest$4 = match$1[1];
         /*<<camlinternalFormat.ml:1214:4>>*/ return [0,
                [2, sub_fmtty_rest$4],
                fmt$2];
       }
       break;
      case 3:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 3 === fmtty[0]){
        var
         fmtty_rest$2 = fmtty[1],
         sub_fmtty_rest$5 = sub_fmtty[1],
         match$2 =
            /*<<camlinternalFormat.ml:1217:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$5, fmt, fmtty_rest$2),
         fmt$3 =  /*<<camlinternalFormat.ml:1217:68>>*/ match$2[2],
         sub_fmtty_rest$6 = match$2[1];
         /*<<camlinternalFormat.ml:1218:4>>*/ return [0,
                [3, sub_fmtty_rest$6],
                fmt$3];
       }
       break;
      case 4:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 4 === fmtty[0]){
        var
         fmtty_rest$3 = fmtty[1],
         sub_fmtty_rest$7 = sub_fmtty[1],
         match$3 =
            /*<<camlinternalFormat.ml:1221:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$7, fmt, fmtty_rest$3),
         fmt$4 =  /*<<camlinternalFormat.ml:1221:68>>*/ match$3[2],
         sub_fmtty_rest$8 = match$3[1];
         /*<<camlinternalFormat.ml:1222:4>>*/ return [0,
                [4, sub_fmtty_rest$8],
                fmt$4];
       }
       break;
      case 5:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 5 === fmtty[0]){
        var
         fmtty_rest$4 = fmtty[1],
         sub_fmtty_rest$9 = sub_fmtty[1],
         match$4 =
            /*<<camlinternalFormat.ml:1225:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$9, fmt, fmtty_rest$4),
         fmt$5 =  /*<<camlinternalFormat.ml:1225:68>>*/ match$4[2],
         sub_fmtty_rest$10 = match$4[1];
         /*<<camlinternalFormat.ml:1226:4>>*/ return [0,
                [5, sub_fmtty_rest$10],
                fmt$5];
       }
       break;
      case 6:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 6 === fmtty[0]){
        var
         fmtty_rest$5 = fmtty[1],
         sub_fmtty_rest$11 = sub_fmtty[1],
         match$5 =
            /*<<camlinternalFormat.ml:1229:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$11, fmt, fmtty_rest$5),
         fmt$6 =  /*<<camlinternalFormat.ml:1229:68>>*/ match$5[2],
         sub_fmtty_rest$12 = match$5[1];
         /*<<camlinternalFormat.ml:1230:4>>*/ return [0,
                [6, sub_fmtty_rest$12],
                fmt$6];
       }
       break;
      case 7:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 7 === fmtty[0]){
        var
         fmtty_rest$6 = fmtty[1],
         sub_fmtty_rest$13 = sub_fmtty[1],
         match$6 =
            /*<<camlinternalFormat.ml:1233:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$13, fmt, fmtty_rest$6),
         fmt$7 =  /*<<camlinternalFormat.ml:1233:68>>*/ match$6[2],
         sub_fmtty_rest$14 = match$6[1];
         /*<<camlinternalFormat.ml:1234:4>>*/ return [0,
                [7, sub_fmtty_rest$14],
                fmt$7];
       }
       break;
      case 8:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 8 === fmtty[0]){
        var
         fmtty_rest$7 = fmtty[2],
         sub2_fmtty = fmtty[1],
         sub_fmtty_rest$15 = sub_fmtty[2],
         sub2_fmtty$0 = sub_fmtty[1];
         /*<<camlinternalFormat.ml:1254:7>>*/ if
         (caml_notequal([0, sub2_fmtty$0], [0, sub2_fmtty]))
          /*<<camlinternalFormat.ml:1254:58>>*/ throw caml_maybe_attach_backtrace
                (Type_mismatch, 1);
        var
         match$7 =
            /*<<camlinternalFormat.ml:1256:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$15, fmt, fmtty_rest$7),
         fmt$8 =  /*<<camlinternalFormat.ml:1256:68>>*/ match$7[2],
         sub_fmtty_rest$16 = match$7[1];
         /*<<camlinternalFormat.ml:1257:4>>*/ return [0,
                [8, sub2_fmtty, sub_fmtty_rest$16],
                fmt$8];
       }
       break;
      case 9:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 9 === fmtty[0]){
        var
         fmtty_rest$8 = fmtty[3],
         sub2_fmtty$1 = fmtty[2],
         sub1_fmtty = fmtty[1],
         sub_fmtty_rest$17 = sub_fmtty[3],
         sub2_fmtty$2 = sub_fmtty[2],
         sub1_fmtty$0 = sub_fmtty[1],
         _aS_ =
            /*<<camlinternalFormat.ml:1261:53>>*/ [0,
            CamlinternalFormatBasics[2].call(null, sub1_fmtty)];
         /*<<camlinternalFormat.ml:1261:17>>*/ if
         ( /*<<camlinternalFormat.ml:1261:7>>*/ caml_notequal
           ([0,
              /*<<camlinternalFormat.ml:1261:17>>*/ CamlinternalFormatBasics
               [2].call
              (null, sub1_fmtty$0)],
            _aS_))
          /*<<camlinternalFormat.ml:1262:9>>*/ throw caml_maybe_attach_backtrace
                (Type_mismatch, 1);
        var
         _aT_ =
            /*<<camlinternalFormat.ml:1263:53>>*/ [0,
            CamlinternalFormatBasics[2].call(null, sub2_fmtty$1)];
         /*<<camlinternalFormat.ml:1263:17>>*/ if
         ( /*<<camlinternalFormat.ml:1263:7>>*/ caml_notequal
           ([0,
              /*<<camlinternalFormat.ml:1263:17>>*/ CamlinternalFormatBasics
               [2].call
              (null, sub2_fmtty$2)],
            _aT_))
          /*<<camlinternalFormat.ml:1264:9>>*/ throw caml_maybe_attach_backtrace
                (Type_mismatch, 1);
        var
         sub_fmtty$0 =
            /*<<camlinternalFormat.ml:1265:27>>*/  /*<<camlinternalFormat.ml:1265:21>>*/ trans
            ( /*<<camlinternalFormat.ml:1265:27>>*/ symm(sub1_fmtty),
             sub2_fmtty$1),
         match$8 =
            /*<<camlinternalFormat.ml:1266:23>>*/ fmtty_rel_det(sub_fmtty$0),
         f4 =  /*<<camlinternalFormat.ml:1266:47>>*/ match$8[4],
         f2 = match$8[2];
         /*<<camlinternalFormat.ml:1267:15>>*/ f2(0);
         /*<<camlinternalFormat.ml:1268:15>>*/ f4(0);
        var
         match$9 =
            /*<<camlinternalFormat.ml:1270:39>>*/  /*<<camlinternalFormat.ml:1270:6>>*/ type_ignored_format_substituti
            ( /*<<camlinternalFormat.ml:1270:39>>*/ CamlinternalFormatBasics
               [2].call
              (null, sub_fmtty_rest$17),
             fmt,
             fmtty_rest$8),
         fmt$9 =  /*<<camlinternalFormat.ml:1270:80>>*/ match$9[2],
         sub_fmtty_rest$18 = match$9[1];
         /*<<camlinternalFormat.ml:1273:36>>*/ return [0,
                [9, sub1_fmtty, sub2_fmtty$1, symm(sub_fmtty_rest$18)],
                fmt$9] /*<<camlinternalFormat.ml:1273:56>>*/ ;
       }
       break;
      case 10:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 10 === fmtty[0]){
        var
         fmtty_rest$9 = fmtty[1],
         sub_fmtty_rest$19 = sub_fmtty[1],
         match$10 =
            /*<<camlinternalFormat.ml:1237:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$19, fmt, fmtty_rest$9),
         fmt$10 =  /*<<camlinternalFormat.ml:1237:68>>*/ match$10[2],
         sub_fmtty_rest$20 = match$10[1];
         /*<<camlinternalFormat.ml:1238:4>>*/ return [0,
                [10, sub_fmtty_rest$20],
                fmt$10];
       }
       break;
      case 11:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 11 === fmtty[0]){
        var
         fmtty_rest$10 = fmtty[1],
         sub_fmtty_rest$21 = sub_fmtty[1],
         match$11 =
            /*<<camlinternalFormat.ml:1241:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$21, fmt, fmtty_rest$10),
         fmt$11 =  /*<<camlinternalFormat.ml:1241:68>>*/ match$11[2],
         sub_fmtty_rest$22 = match$11[1];
         /*<<camlinternalFormat.ml:1242:4>>*/ return [0,
                [11, sub_fmtty_rest$22],
                fmt$11];
       }
       break;
      case 13:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 13 === fmtty[0]){
        var
         fmtty_rest$11 = fmtty[1],
         sub_fmtty_rest$23 = sub_fmtty[1],
         match$12 =
            /*<<camlinternalFormat.ml:1245:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$23, fmt, fmtty_rest$11),
         fmt$12 =  /*<<camlinternalFormat.ml:1245:68>>*/ match$12[2],
         sub_fmtty_rest$24 = match$12[1];
         /*<<camlinternalFormat.ml:1246:4>>*/ return [0,
                [13, sub_fmtty_rest$24],
                fmt$12];
       }
       break;
      case 14:
        /*<<camlinternalFormat.ml:1202:27>>*/ if
        (typeof fmtty !== "number" && 14 === fmtty[0]){
        var
         fmtty_rest$12 = fmtty[1],
         sub_fmtty_rest$25 = sub_fmtty[1],
         match$13 =
            /*<<camlinternalFormat.ml:1249:6>>*/ type_ignored_format_substituti
            (sub_fmtty_rest$25, fmt, fmtty_rest$12),
         fmt$13 =  /*<<camlinternalFormat.ml:1249:68>>*/ match$13[2],
         sub_fmtty_rest$26 = match$13[1];
         /*<<camlinternalFormat.ml:1250:4>>*/ return [0,
                [14, sub_fmtty_rest$26],
                fmt$13];
       }
       break;
    }
     /*<<camlinternalFormat.ml:1277:9>>*/ throw caml_maybe_attach_backtrace
           (Type_mismatch, 1);
    /*<<camlinternalFormat.ml:1277:28>>*/ }
   function recast(fmt, fmtty){
    var _aS_ =  /*<<camlinternalFormat.ml:1312:29>>*/ symm(fmtty);
     /*<<camlinternalFormat.ml:1312:18>>*/ return  /*<<camlinternalFormat.ml:1312:42>>*/ type_format
            (fmt,
              /*<<camlinternalFormat.ml:1312:18>>*/ CamlinternalFormatBasics
               [2].call
              (null, _aS_)) /*<<camlinternalFormat.ml:1312:42>>*/ ;
   }
   function fix_padding(padty, width, str){
    var
     len =  /*<<camlinternalFormat.ml:1319:2>>*/ caml_ml_string_length(str),
     padty$0 =  /*<<camlinternalFormat.ml:1320:2>>*/ 0 <= width ? padty : 0,
     width$0 =
        /*<<camlinternalFormat.ml:1321:4>>*/ Stdlib[18].call(null, width);
     /*<<camlinternalFormat.ml:1332:2>>*/ if(width$0 <= len)
      /*<<camlinternalFormat.ml:1332:23>>*/ return str;
    var
     _aS_ =  /*<<camlinternalFormat.ml:1333:4>>*/ 2 === padty$0 ? 48 : 32,
     res =
        /*<<camlinternalFormat.ml:1333:14>>*/ Stdlib_Bytes[1].call
        (null, width$0, _aS_);
     /*<<camlinternalFormat.ml:1334:4>>*/ switch(padty$0){
      case 0:
        /*<<camlinternalFormat.ml:1335:15>>*/ Stdlib_String[6].call
        (null, str, 0, res, 0, len);
       break;
      case 1:
        /*<<camlinternalFormat.ml:1336:15>>*/ Stdlib_String[6].call
        (null, str, 0, res, width$0 - len | 0, len);
       break;
      default:
       a:
       if(0 < len){
         /*<<camlinternalFormat.ml:1337:29>>*/ if
         (43 !== caml_string_get(str, 0)
          &&
           45
           !==  /*<<camlinternalFormat.ml:1337:46>>*/ caml_string_get(str, 0)
           &&
            32
            !==  /*<<camlinternalFormat.ml:1337:63>>*/ caml_string_get(str, 0))
         break a;
         /*<<camlinternalFormat.ml:1338:22>>*/  /*<<camlinternalFormat.ml:1338:6>>*/ caml_bytes_set
         (res,
          0,
           /*<<camlinternalFormat.ml:1338:22>>*/ caml_string_get(str, 0));
         /*<<camlinternalFormat.ml:1339:6>>*/ Stdlib_String[6].call
         (null, str, 1, res, (width$0 - len | 0) + 1 | 0, len - 1 | 0);
        break;
       }
       a:
       if
        (1 < len
         &&
          48
          ===  /*<<camlinternalFormat.ml:1340:28>>*/ caml_string_get(str, 0)){
         /*<<camlinternalFormat.ml:1340:46>>*/ if
         (120 !== caml_string_get(str, 1)
          &&
           88
           !==  /*<<camlinternalFormat.ml:1340:63>>*/ caml_string_get(str, 1))
         break a;
         /*<<camlinternalFormat.ml:1341:22>>*/  /*<<camlinternalFormat.ml:1341:6>>*/ caml_bytes_set
         (res,
          1,
           /*<<camlinternalFormat.ml:1341:22>>*/ caml_string_get(str, 1));
         /*<<camlinternalFormat.ml:1342:6>>*/ Stdlib_String[6].call
         (null, str, 2, res, (width$0 - len | 0) + 2 | 0, len - 2 | 0);
        break;
       }
        /*<<camlinternalFormat.ml:1344:6>>*/ Stdlib_String[6].call
        (null, str, 0, res, width$0 - len | 0, len);
    }
     /*<<camlinternalFormat.ml:1346:4>>*/ return Stdlib_Bytes[44].call
            (null, res) /*<<camlinternalFormat.ml:1346:30>>*/ ;
   }
   function fix_int_precision(prec, str){
    var
     prec$0 =
        /*<<camlinternalFormat.ml:1350:13>>*/ Stdlib[18].call(null, prec),
     len =  /*<<camlinternalFormat.ml:1351:2>>*/ caml_ml_string_length(str),
     c =  /*<<camlinternalFormat.ml:1352:8>>*/ caml_string_get(str, 0);
    a:
    {
     b:
     {
       /*<<camlinternalFormat.ml:1352:15>>*/ if(58 > c){
       if(32 !== c){
        if(43 > c) break a;
        switch(c - 43 | 0){
          case 5:
            /*<<camlinternalFormat.ml:1358:13>>*/ if(len >= (prec$0 + 2 | 0))
            break b;
           if(1 >= len) break b;
            /*<<camlinternalFormat.ml:1358:43>>*/ if
            (120 !== caml_string_get(str, 1)
             &&
              88
              !==
                /*<<camlinternalFormat.ml:1358:60>>*/ caml_string_get(str, 1))
            break b;
           var
            res$1 =
               /*<<camlinternalFormat.ml:1359:14>>*/ Stdlib_Bytes[1].call
               (null, prec$0 + 2 | 0, 48);
            /*<<camlinternalFormat.ml:1360:20>>*/  /*<<camlinternalFormat.ml:1360:4>>*/ caml_bytes_set
            (res$1,
             1,
              /*<<camlinternalFormat.ml:1360:20>>*/ caml_string_get(str, 1));
            /*<<camlinternalFormat.ml:1361:4>>*/ Stdlib_String[6].call
            (null, str, 2, res$1, (prec$0 - len | 0) + 4 | 0, len - 2 | 0);
            /*<<camlinternalFormat.ml:1361:52>>*/ return Stdlib_Bytes[44].call
                   (null, res$1) /*<<camlinternalFormat.ml:1368:7>>*/ ;
          case 0:
          case 2: break;
          case 1:
          case 3:
          case 4:
           break a;
          default: break b;
        }
       }
        /*<<camlinternalFormat.ml:1353:32>>*/ if(len >= (prec$0 + 1 | 0))
        break a;
       var
        res$0 =
           /*<<camlinternalFormat.ml:1354:14>>*/ Stdlib_Bytes[1].call
           (null, prec$0 + 1 | 0, 48);
        /*<<camlinternalFormat.ml:1355:4>>*/ caml_bytes_set(res$0, 0, c);
        /*<<camlinternalFormat.ml:1356:4>>*/ Stdlib_String[6].call
        (null, str, 1, res$0, (prec$0 - len | 0) + 2 | 0, len - 1 | 0);
        /*<<camlinternalFormat.ml:1356:52>>*/ return Stdlib_Bytes[44].call
               (null, res$0) /*<<camlinternalFormat.ml:1368:7>>*/ ;
      }
       /*<<camlinternalFormat.ml:1352:15>>*/ if(71 <= c){
       if(5 < c - 97 >>> 0) break a;
      }
      else if(65 > c) break a;
     }
      /*<<camlinternalFormat.ml:1363:46>>*/ if(len < prec$0){
      var
       res =
          /*<<camlinternalFormat.ml:1364:14>>*/ Stdlib_Bytes[1].call
          (null, prec$0, 48);
       /*<<camlinternalFormat.ml:1365:4>>*/ Stdlib_String[6].call
       (null, str, 0, res, prec$0 - len | 0, len);
       /*<<camlinternalFormat.ml:1365:42>>*/ return Stdlib_Bytes[44].call
              (null, res) /*<<camlinternalFormat.ml:1368:7>>*/ ;
     }
    }
     /*<<camlinternalFormat.ml:1368:4>>*/ return str;
    /*<<camlinternalFormat.ml:1368:7>>*/ }
   function string_to_caml_string(str){
    var
     str$0 =
        /*<<camlinternalFormat.ml:1372:12>>*/ Stdlib_String[25].call
        (null, str),
     l =  /*<<camlinternalFormat.ml:1373:2>>*/ caml_ml_string_length(str$0),
     res =
        /*<<camlinternalFormat.ml:1374:12>>*/ Stdlib_Bytes[1].call
        (null, l + 2 | 0, 34);
     /*<<camlinternalFormat.ml:1375:2>>*/ caml_blit_string
     (str$0, 0, res, 1, l);
     /*<<camlinternalFormat.ml:1375:34>>*/ return Stdlib_Bytes[44].call
            (null, res) /*<<camlinternalFormat.ml:1376:28>>*/ ;
   }
   var _r_ =  /*<<?>>*/ [0, 103];
   function format_of_fconv(fconv, prec){
    var
     prec$0 =
        /*<<camlinternalFormat.ml:1414:15>>*/ Stdlib[18].call(null, prec),
     symb =  /*<<camlinternalFormat.ml:1415:15>>*/ char_of_fconv(_r_, fconv),
     buf =  /*<<camlinternalFormat.ml:1416:14>>*/ buffer_create(16);
     /*<<camlinternalFormat.ml:1417:4>>*/ buffer_add_char(buf, 37);
     /*<<camlinternalFormat.ml:1418:4>>*/ bprint_fconv_flag(buf, fconv);
     /*<<camlinternalFormat.ml:1419:4>>*/ buffer_add_char(buf, 46);
     /*<<camlinternalFormat.ml:1420:26>>*/  /*<<camlinternalFormat.ml:1420:4>>*/ buffer_add_string
     (buf,
       /*<<camlinternalFormat.ml:1420:26>>*/ Stdlib_Int[12].call(null, prec$0));
     /*<<camlinternalFormat.ml:1421:4>>*/ buffer_add_char(buf, symb);
     /*<<camlinternalFormat.ml:1421:28>>*/ return buffer_contents(buf) /*<<camlinternalFormat.ml:1422:23>>*/ ;
   }
   function transform_int_alt(iconv, s){
     /*<<camlinternalFormat.ml:1425:2>>*/ if(13 > iconv)
      /*<<camlinternalFormat.ml:1447:9>>*/ return s;
    var
     _aO_ =
        /*<<camlinternalFormat.ml:1429:6>>*/ caml_ml_string_length(s) - 1 | 0,
     _aN_ =  /*<<camlinternalFormat.ml:1427:4>>*/ 0;
     /*<<camlinternalFormat.ml:1429:6>>*/ if(_aO_ < 0)
     var n$2 = _aN_;
    else{
     var n = _aN_, i$0 = 0;
     for(;;){
       /*<<camlinternalFormat.ml:1430:8>>*/ if
       (9 < caml_string_unsafe_get(s, i$0) - 48 >>> 0)
       var n$1 = n;
      else
       var n$0 =  /*<<camlinternalFormat.ml:1431:22>>*/ n + 1 | 0, n$1 = n$0;
      var _aS_ =  /*<<camlinternalFormat.ml:1430:8>>*/ i$0 + 1 | 0;
      if(_aO_ === i$0){var n$2 = n$1; break;}
      n = n$1;
      i$0 = _aS_;
     }
    }
    var
     buf =
        /*<<camlinternalFormat.ml:1436:4>>*/  /*<<camlinternalFormat.ml:1436:14>>*/ caml_create_bytes
        ( /*<<camlinternalFormat.ml:1436:4>>*/ caml_ml_string_length(s)
         + ((n$2 - 1 | 0) / 3 | 0)
         | 0),
     pos =  /*<<camlinternalFormat.ml:1437:4>>*/ [0, 0];
    function put(c){
      /*<<camlinternalFormat.ml:1438:16>>*/ caml_bytes_set(buf, pos[1], c);
      /*<<camlinternalFormat.ml:1438:36>>*/ pos[1]++;
     /*<<camlinternalFormat.ml:1438:46>>*/ }
    var
     _aP_ =
        /*<<camlinternalFormat.ml:1440:4>>*/ caml_ml_string_length(s) - 1 | 0,
     _aQ_ = ((n$2 - 1 | 0) % 3 | 0) + 1 | 0;
    if(_aP_ >= 0){
     var left = _aQ_, i = 0;
     for(;;){
      var
       c =  /*<<camlinternalFormat.ml:1441:6>>*/ caml_string_unsafe_get(s, i);
      if(9 < c - 48 >>> 0){
        /*<<camlinternalFormat.ml:1444:13>>*/ put(c);
       var left$2 =  /*<<camlinternalFormat.ml:1444:18>>*/ left;
      }
      else{
       var
        left$0 =
           /*<<camlinternalFormat.ml:1443:10>>*/ 0 === left
           ? ( /*<<camlinternalFormat.ml:1443:29>>*/ put(95), 3)
           : left,
        left$1 =  /*<<camlinternalFormat.ml:1443:50>>*/ left$0 - 1 | 0;
        /*<<camlinternalFormat.ml:1443:61>>*/ put(c);
       var left$2 =  /*<<camlinternalFormat.ml:1443:66>>*/ left$1;
      }
      var _aR_ =  /*<<camlinternalFormat.ml:1441:6>>*/ i + 1 | 0;
      if(_aP_ === i) break;
      left = left$2;
      i = _aR_;
     }
    }
     /*<<camlinternalFormat.ml:1446:4>>*/ return Stdlib_Bytes[44].call
            (null, buf) /*<<camlinternalFormat.ml:1447:10>>*/ ;
   }
   var cst_u =  /*<<?>>*/ "%u";
   function convert_int(iconv, n){
     /*<<camlinternalFormat.ml:1380:22>>*/ switch(iconv){
      case 1:
       var _aN_ = "%+d"; break;
      case 2:
       var _aN_ = "% d"; break;
      case 4:
       var _aN_ = "%+i"; break;
      case 5:
       var _aN_ = "% i"; break;
      case 6:
       var _aN_ = "%x"; break;
      case 7:
       var _aN_ = "%#x"; break;
      case 8:
       var _aN_ = "%X"; break;
      case 9:
       var _aN_ = "%#X"; break;
      case 10:
       var _aN_ = "%o"; break;
      case 11:
       var _aN_ = "%#o"; break;
      case 0:
      case 13:
       var _aN_ = "%d"; break;
      case 3:
      case 14:
       var _aN_ = cst_i; break;
      default: var _aN_ = cst_u;
    }
     /*<<camlinternalFormat.ml:1451:26>>*/ return  /*<<camlinternalFormat.ml:1451:64>>*/ transform_int_alt
            (iconv,
              /*<<camlinternalFormat.ml:1451:26>>*/ caml_format_int(_aN_, n)) /*<<camlinternalFormat.ml:1451:64>>*/ ;
   }
   function convert_int32(iconv, n){
     /*<<camlinternalFormat.ml:1396:23>>*/ switch(iconv){
      case 1:
       var _aN_ = "%+ld"; break;
      case 2:
       var _aN_ = "% ld"; break;
      case 4:
       var _aN_ = "%+li"; break;
      case 5:
       var _aN_ = "% li"; break;
      case 6:
       var _aN_ = "%lx"; break;
      case 7:
       var _aN_ = "%#lx"; break;
      case 8:
       var _aN_ = "%lX"; break;
      case 9:
       var _aN_ = "%#lX"; break;
      case 10:
       var _aN_ = "%lo"; break;
      case 11:
       var _aN_ = "%#lo"; break;
      case 0:
      case 13:
       var _aN_ = "%ld"; break;
      case 3:
      case 14:
       var _aN_ = cst_li; break;
      default: var _aN_ = "%lu";
    }
     /*<<camlinternalFormat.ml:1453:26>>*/ return  /*<<camlinternalFormat.ml:1453:67>>*/ transform_int_alt
            (iconv,
              /*<<camlinternalFormat.ml:1453:26>>*/ caml_format_int(_aN_, n)) /*<<camlinternalFormat.ml:1453:67>>*/ ;
   }
   function convert_nativeint(iconv, n){
     /*<<camlinternalFormat.ml:1404:23>>*/ switch(iconv){
      case 1:
       var _aN_ = "%+nd"; break;
      case 2:
       var _aN_ = "% nd"; break;
      case 4:
       var _aN_ = "%+ni"; break;
      case 5:
       var _aN_ = "% ni"; break;
      case 6:
       var _aN_ = "%nx"; break;
      case 7:
       var _aN_ = "%#nx"; break;
      case 8:
       var _aN_ = "%nX"; break;
      case 9:
       var _aN_ = "%#nX"; break;
      case 10:
       var _aN_ = "%no"; break;
      case 11:
       var _aN_ = "%#no"; break;
      case 0:
      case 13:
       var _aN_ = "%nd"; break;
      case 3:
      case 14:
       var _aN_ = cst_ni; break;
      default: var _aN_ = "%nu";
    }
     /*<<camlinternalFormat.ml:1455:26>>*/ return  /*<<camlinternalFormat.ml:1455:71>>*/ transform_int_alt
            (iconv,
              /*<<camlinternalFormat.ml:1455:26>>*/ caml_format_int(_aN_, n)) /*<<camlinternalFormat.ml:1455:71>>*/ ;
   }
   function convert_int64(iconv, n){
     /*<<camlinternalFormat.ml:1388:23>>*/ switch(iconv){
      case 1:
       var _aN_ = "%+Ld"; break;
      case 2:
       var _aN_ = "% Ld"; break;
      case 4:
       var _aN_ = "%+Li"; break;
      case 5:
       var _aN_ = "% Li"; break;
      case 6:
       var _aN_ = "%Lx"; break;
      case 7:
       var _aN_ = "%#Lx"; break;
      case 8:
       var _aN_ = "%LX"; break;
      case 9:
       var _aN_ = "%#LX"; break;
      case 10:
       var _aN_ = "%Lo"; break;
      case 11:
       var _aN_ = "%#Lo"; break;
      case 0:
      case 13:
       var _aN_ = "%Ld"; break;
      case 3:
      case 14:
       var _aN_ = cst_Li; break;
      default: var _aN_ = "%Lu";
    }
     /*<<camlinternalFormat.ml:1457:26>>*/ return  /*<<camlinternalFormat.ml:1457:67>>*/ transform_int_alt
            (iconv,
              /*<<camlinternalFormat.ml:1457:26>>*/ runtime.caml_int64_format
              (_aN_, n)) /*<<camlinternalFormat.ml:1457:67>>*/ ;
   }
   function convert_float(fconv, prec, x){
    function hex(param){
      /*<<camlinternalFormat.ml:1463:4>>*/ switch(fconv[1]){
       case 0:
        var sign =  /*<<camlinternalFormat.ml:1467:13>>*/ 45; break;
       case 1:
        var sign =  /*<<camlinternalFormat.ml:1465:24>>*/ 43; break;
       default: var sign =  /*<<camlinternalFormat.ml:1466:24>>*/ 32;
     }
      /*<<camlinternalFormat.ml:1468:4>>*/ return runtime.caml_hexstring_of_float
             (x, prec, sign) /*<<camlinternalFormat.ml:1468:34>>*/ ;
    }
    function caml_special_val(str){
     var
      match =
         /*<<camlinternalFormat.ml:1477:35>>*/ runtime.caml_classify_float(x);
      /*<<camlinternalFormat.ml:1477:51>>*/ return 3 === match
             ? x < 0. ? "neg_infinity" : "infinity"
             : 4 <= match ? "nan" : str /*<<camlinternalFormat.ml:1480:21>>*/ ;
    }
     /*<<camlinternalFormat.ml:1481:2>>*/ switch(fconv[2]){
      case 5:
       var
        str =
           /*<<camlinternalFormat.ml:1486:27>>*/  /*<<camlinternalFormat.ml:1486:14>>*/ caml_format_float
           ( /*<<camlinternalFormat.ml:1486:27>>*/ format_of_fconv
             (fconv, prec),
            x),
        len =  /*<<camlinternalFormat.ml:1470:4>>*/ caml_ml_string_length(str),
        i =  /*<<camlinternalFormat.ml:1476:7>>*/ 0;
       for(;;){
        a:
        {
          /*<<camlinternalFormat.ml:1472:6>>*/ if(i !== len){
          var
           _aK_ =
              /*<<camlinternalFormat.ml:1473:14>>*/ caml_string_get(str, i)
             - 46
             | 0;
          b:
          {
            /*<<camlinternalFormat.ml:1473:21>>*/ if(23 < _aK_ >>> 0){
            if(55 !== _aK_) break b;
           }
           else if(21 >= _aK_ - 1 >>> 0) break b;
           var _aL_ =  /*<<camlinternalFormat.ml:1474:29>>*/ 1;
           break a;
          }
          var i$0 =  /*<<camlinternalFormat.ml:1475:15>>*/ i + 1 | 0;
          i = i$0;
          continue;
         }
         var _aL_ =  /*<<camlinternalFormat.ml:1472:22>>*/ 0;
        }
        var
         _aM_ =
            /*<<camlinternalFormat.ml:1476:17>>*/ _aL_
            ? str
            :  /*<<camlinternalFormat.ml:1476:32>>*/ Stdlib
               [28].call
              (null, str, ".");
         /*<<camlinternalFormat.ml:1487:44>>*/ return caml_special_val(_aM_) /*<<camlinternalFormat.ml:1489:47>>*/ ;
       }
      case 6:
        /*<<camlinternalFormat.ml:1482:15>>*/ return hex(0) /*<<camlinternalFormat.ml:1489:47>>*/ ;
      case 7:
       var _aN_ =  /*<<camlinternalFormat.ml:1483:38>>*/ hex(0);
        /*<<camlinternalFormat.ml:1483:46>>*/ return Stdlib_String[26].call
               (null, _aN_) /*<<camlinternalFormat.ml:1489:47>>*/ ;
      case 8:
        /*<<camlinternalFormat.ml:1484:33>>*/ return  /*<<camlinternalFormat.ml:1484:41>>*/ caml_special_val
               ( /*<<camlinternalFormat.ml:1484:33>>*/ hex(0)) /*<<camlinternalFormat.ml:1489:47>>*/ ;
      default:
        /*<<camlinternalFormat.ml:1489:17>>*/ return  /*<<camlinternalFormat.ml:1489:4>>*/ caml_format_float
               ( /*<<camlinternalFormat.ml:1489:17>>*/ format_of_fconv
                 (fconv, prec),
                x) /*<<camlinternalFormat.ml:1489:47>>*/ ;
    }
   }
   function string_of_fmtty(fmtty){
    var buf =  /*<<camlinternalFormat.ml:1501:12>>*/ buffer_create(16);
     /*<<camlinternalFormat.ml:1502:2>>*/ bprint_fmtty(buf, fmtty);
     /*<<camlinternalFormat.ml:1502:24>>*/ return buffer_contents(buf) /*<<camlinternalFormat.ml:1503:21>>*/ ;
   }
   var _s_ =  /*<<?>>*/ [0, cst_camlinternalFormat_ml, 1558, 4];
   function make_printf$0(counter, k$2, acc$4, fmt$2){
    a:
    {
     b:
     {
      c:
      {
       d:
       {
        e:
        {
         f:
         {
          g:
          {
           h:
           {
            i:
            {
             j:
             {
              var
               k =  /*<<camlinternalFormat.ml:1518:17>>*/ k$2,
               acc = acc$4,
               fmt = fmt$2;
              k:
              for(;;){
               if(typeof fmt === "number")
                 /*<<camlinternalFormat.ml:1605:4>>*/ return caml_call1
                        (k, acc) /*<<camlinternalFormat.ml:1605:9>>*/ ;
                /*<<camlinternalFormat.ml:1518:17>>*/ switch(fmt[0]){
                 case 0:
                  break a;
                 case 1:
                  break b;
                 case 2:
                  break c;
                 case 3:
                  var rest$2 = fmt[2], pad$0 = fmt[1];
                   /*<<camlinternalFormat.ml:1530:4>>*/ return make_padding
                          (k, acc, rest$2, pad$0, string_to_caml_string) /*<<camlinternalFormat.ml:1605:9>>*/ ;
                 case 4:
                  var
                   rest$3 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[4],
                   prec = fmt[3],
                   pad$1 = fmt[2],
                   iconv = fmt[1];
                   /*<<camlinternalFormat.ml:1532:4>>*/ return make_int_padding_precision
                          (k, acc, rest$3, pad$1, prec, convert_int, iconv) /*<<camlinternalFormat.ml:1605:9>>*/ ;
                 case 5:
                  var
                   rest$4 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[4],
                   prec$0 = fmt[3],
                   pad$2 = fmt[2],
                   iconv$0 = fmt[1];
                   /*<<camlinternalFormat.ml:1534:4>>*/ return make_int_padding_precision
                          (k, acc, rest$4, pad$2, prec$0, convert_int32, iconv$0) /*<<camlinternalFormat.ml:1605:9>>*/ ;
                 case 6:
                  var
                   rest$5 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[4],
                   prec$1 = fmt[3],
                   pad$3 = fmt[2],
                   iconv$1 = fmt[1];
                   /*<<camlinternalFormat.ml:1536:4>>*/ return make_int_padding_precision
                          (k, acc, rest$5, pad$3, prec$1, convert_nativeint, iconv$1) /*<<camlinternalFormat.ml:1605:9>>*/ ;
                 case 7:
                  var
                   rest$6 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[4],
                   prec$2 = fmt[3],
                   pad$4 = fmt[2],
                   iconv$2 = fmt[1];
                   /*<<camlinternalFormat.ml:1538:4>>*/ return make_int_padding_precision
                          (k, acc, rest$6, pad$4, prec$2, convert_int64, iconv$2) /*<<camlinternalFormat.ml:1605:9>>*/ ;
                 case 8:
                  break d;
                 case 9:
                  var
                   rest$8 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[2],
                   pad$6 = fmt[1];
                   /*<<camlinternalFormat.ml:1542:4>>*/ return make_padding
                          (k, acc, rest$8, pad$6, Stdlib[30]) /*<<camlinternalFormat.ml:1605:9>>*/ ;
                 case 10:
                  var
                   rest$9 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[1],
                   acc$0 =  /*<<camlinternalFormat.ml:1560:4>>*/ [7, acc];
                  acc = acc$0;
                  fmt = rest$9;
                  break;
                 case 11:
                  var
                   rest$10 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[2],
                   str = fmt[1],
                   acc$1 =  /*<<camlinternalFormat.ml:1563:4>>*/ [2, acc, str];
                  acc = acc$1;
                  fmt = rest$10;
                  break;
                 case 12:
                  var
                   rest$11 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[2],
                   chr = fmt[1],
                   acc$2 =  /*<<camlinternalFormat.ml:1565:4>>*/ [3, acc, chr];
                  acc = acc$2;
                  fmt = rest$11;
                  break;
                 case 13:
                  break e;
                 case 14:
                  break f;
                 case 15:
                  break g;
                 case 16:
                  break h;
                 case 17:
                  var
                   rest$16 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[2],
                   fmting_lit = fmt[1],
                   acc$3 =
                      /*<<camlinternalFormat.ml:1594:4>>*/ [0, acc, fmting_lit];
                  acc = acc$3;
                  fmt = rest$16;
                  break;
                 case 18:
                  var _aJ_ =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[1];
                  if(0 === _aJ_[0]){
                   var rest$17 = fmt[2], fmt$0 = _aJ_[1][1];
                   let
                    acc$0 =  /*<<camlinternalFormat.ml:1596:4>>*/ acc,
                    k$1 = k,
                    rest = rest$17;
                   var
                    k$0 =
                      function(kacc){
                        /*<<camlinternalFormat.ml:1597:6>>*/ return make_printf
                               (k$1, [1, acc$0, [0, kacc]], rest) /*<<camlinternalFormat.ml:1597:70>>*/ ;
                      };
                    /*<<camlinternalFormat.ml:1598:4>>*/ k = k$0;
                   acc = 0;
                   fmt = fmt$0;
                  }
                  else{
                   var
                    rest$18 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[2],
                    fmt$1 = _aJ_[1][1];
                   let
                    acc$0 =  /*<<camlinternalFormat.ml:1600:4>>*/ acc,
                    k$0 = k,
                    rest = rest$18;
                   var
                    k$1 =
                      function(kacc){
                        /*<<camlinternalFormat.ml:1601:6>>*/ return make_printf
                               (k$0, [1, acc$0, [1, kacc]], rest) /*<<camlinternalFormat.ml:1601:70>>*/ ;
                      };
                    /*<<camlinternalFormat.ml:1602:4>>*/ k = k$1;
                   acc = 0;
                   fmt = fmt$1;
                  }
                  break;
                 case 19:
                   /*<<camlinternalFormat.ml:1558:4>>*/ throw caml_maybe_attach_backtrace
                         ([0, Assert_failure, _s_], 1);
                 case 20:
                  break i;
                 case 21:
                  break j;
                 case 22:
                  break k;
                 case 23:
                  var
                   rest$22 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[2],
                   ign = fmt[1];
                   /*<<camlinternalFormat.ml:1591:4>>*/ return counter < 50
                          ? make_ignored_param$0
                            (counter + 1 | 0, k, acc, ign, rest$22)
                          : caml_trampoline_return
                            (make_ignored_param$0, [0, k, acc, ign, rest$22]) /*<<camlinternalFormat.ml:1605:9>>*/ ;
                 default:
                  var
                   rest$23 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[3],
                   f = fmt[2],
                   arity = fmt[1],
                   _aK_ =
                      /*<<camlinternalFormat.ml:1548:33>>*/ caml_call1(f, 0);
                   /*<<camlinternalFormat.ml:1548:39>>*/ return counter < 50
                          ? make_custom$0
                            (counter + 1 | 0, k, acc, rest$23, arity, _aK_)
                          : caml_trampoline_return
                            (make_custom$0, [0, k, acc, rest$23, arity, _aK_]) /*<<camlinternalFormat.ml:1605:9>>*/ ;
               }
              }
              var rest$21 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[1];
               /*<<camlinternalFormat.ml:1587:4>>*/ return function(c){
               var
                new_acc =  /*<<camlinternalFormat.ml:1588:6>>*/ [5, acc, c];
                /*<<camlinternalFormat.ml:1589:6>>*/ return make_printf
                       (k, new_acc, rest$21) /*<<camlinternalFormat.ml:1589:32>>*/ ;} /*<<camlinternalFormat.ml:1587:4>>*/ ;
             }
             var rest$20 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[2];
              /*<<camlinternalFormat.ml:1583:4>>*/ return function(n){
              var
               new_acc =
                  /*<<camlinternalFormat.ml:1584:42>>*/ [4,
                  acc,
                  caml_format_int(cst_u, n)];
               /*<<camlinternalFormat.ml:1585:6>>*/ return make_printf
                      (k, new_acc, rest$20) /*<<camlinternalFormat.ml:1585:32>>*/ ;} /*<<camlinternalFormat.ml:1583:4>>*/ ;
            }
            var
             rest$19 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[3],
             new_acc =
                /*<<camlinternalFormat.ml:1577:4>>*/ [8,
                acc,
                "Printf: bad conversion %["];
             /*<<camlinternalFormat.ml:1578:4>>*/ return function(param){
              /*<<camlinternalFormat.ml:1578:13>>*/ return make_printf
                     (k, new_acc, rest$19) /*<<camlinternalFormat.ml:1578:39>>*/ ;} /*<<camlinternalFormat.ml:1578:4>>*/ ;
           }
           var rest$15 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[1];
            /*<<camlinternalFormat.ml:1546:4>>*/ return function(f){
             /*<<camlinternalFormat.ml:1546:13>>*/ return make_printf
                    (k, [6, acc, f], rest$15) /*<<camlinternalFormat.ml:1546:52>>*/ ;} /*<<camlinternalFormat.ml:1546:4>>*/ ;
          }
          var rest$14 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[1];
           /*<<camlinternalFormat.ml:1544:4>>*/ return function(f, x){
            /*<<camlinternalFormat.ml:1544:15>>*/ return make_printf
                   (k,
                    [6,
                     acc,
                     function(o){
                       /*<<camlinternalFormat.ml:1544:55>>*/ return caml_call2
                              (f, o, x) /*<<camlinternalFormat.ml:1544:60>>*/ ;
                     }],
                    rest$14) /*<<camlinternalFormat.ml:1544:67>>*/ ;} /*<<camlinternalFormat.ml:1544:4>>*/ ;
         }
         var
          rest$13 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[3],
          fmtty = fmt[2];
          /*<<camlinternalFormat.ml:1573:4>>*/ return function(param){
          var
           fmt = param[1],
           _aK_ =  /*<<camlinternalFormat.ml:1574:18>>*/ recast(fmt, fmtty);
           /*<<camlinternalFormat.ml:1574:6>>*/ return  /*<<camlinternalFormat.ml:1574:42>>*/ make_printf
                  (k,
                   acc,
                    /*<<camlinternalFormat.ml:1574:6>>*/ CamlinternalFormatBasics
                     [3].call
                    (null, _aK_, rest$13)) /*<<camlinternalFormat.ml:1574:42>>*/ ;} /*<<camlinternalFormat.ml:1573:4>>*/ ;
        }
        var
         rest$12 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[3],
         sub_fmtty = fmt[2],
         ty =
            /*<<camlinternalFormat.ml:1568:13>>*/ string_of_fmtty(sub_fmtty);
         /*<<camlinternalFormat.ml:1569:4>>*/ return function(str){
          /*<<camlinternalFormat.ml:1571:6>>*/ return make_printf
                 (k, [4, acc, ty], rest$12) /*<<camlinternalFormat.ml:1571:52>>*/ ;} /*<<camlinternalFormat.ml:1569:4>>*/ ;
       }
       var
        rest$7 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[4],
        prec$3 = fmt[3],
        pad$5 = fmt[2],
        fconv = fmt[1];
        /*<<camlinternalFormat.ml:1735:34>>*/ if(typeof pad$5 === "number"){
        if(typeof prec$3 === "number")
         return prec$3
                 ? function
                  (p, x){
                   var
                    str =
                       /*<<camlinternalFormat.ml:1746:16>>*/ convert_float
                       (fconv, p, x);
                    /*<<camlinternalFormat.ml:1747:6>>*/ return make_printf
                           (k, [4, acc, str], rest$7) /*<<camlinternalFormat.ml:1747:52>>*/ ;
                  }
                 : function
                  (x){
                   var
                    str =
                       /*<<camlinternalFormat.ml:1738:36>>*/  /*<<camlinternalFormat.ml:1738:16>>*/ convert_float
                       (fconv,
                         /*<<camlinternalFormat.ml:1738:36>>*/ default_float_precision
                         (fconv),
                        x);
                    /*<<camlinternalFormat.ml:1739:6>>*/ return make_printf
                           (k, [4, acc, str], rest$7) /*<<camlinternalFormat.ml:1739:52>>*/ ;
                  } /*<<camlinternalFormat.ml:1605:9>>*/ ;
        var p =  /*<<camlinternalFormat.ml:1735:34>>*/ prec$3[1];
         /*<<camlinternalFormat.ml:1741:4>>*/ return function(x){
         var
          str =
             /*<<camlinternalFormat.ml:1742:16>>*/ convert_float(fconv, p, x);
          /*<<camlinternalFormat.ml:1743:6>>*/ return make_printf
                 (k, [4, acc, str], rest$7) /*<<camlinternalFormat.ml:1743:52>>*/ ;} /*<<camlinternalFormat.ml:1741:4>>*/ ;
       }
        /*<<camlinternalFormat.ml:1735:34>>*/ if(0 === pad$5[0]){
        var w = pad$5[2], padty = pad$5[1];
        if(typeof prec$3 === "number")
         return prec$3
                 ? function
                  (p, x){
                   var
                    str =
                       /*<<camlinternalFormat.ml:1759:36>>*/  /*<<camlinternalFormat.ml:1759:16>>*/ fix_padding
                       (padty,
                        w,
                         /*<<camlinternalFormat.ml:1759:36>>*/ convert_float
                         (fconv, p, x));
                    /*<<camlinternalFormat.ml:1760:6>>*/ return make_printf
                           (k, [4, acc, str], rest$7) /*<<camlinternalFormat.ml:1760:52>>*/ ;
                  }
                 : function
                  (x){
                   var
                    str =
                       /*<<camlinternalFormat.ml:1750:36>>*/  /*<<camlinternalFormat.ml:1750:16>>*/ convert_float
                       (fconv,
                         /*<<camlinternalFormat.ml:1750:36>>*/ default_float_precision
                         (fconv),
                        x),
                    str$0 =
                       /*<<camlinternalFormat.ml:1751:17>>*/ fix_padding
                       (padty, w, str);
                    /*<<camlinternalFormat.ml:1752:6>>*/ return make_printf
                           (k, [4, acc, str$0], rest$7) /*<<camlinternalFormat.ml:1752:53>>*/ ;
                  } /*<<camlinternalFormat.ml:1605:9>>*/ ;
        var p$0 =  /*<<camlinternalFormat.ml:1735:34>>*/ prec$3[1];
         /*<<camlinternalFormat.ml:1754:4>>*/ return function(x){
         var
          str =
             /*<<camlinternalFormat.ml:1755:36>>*/  /*<<camlinternalFormat.ml:1755:16>>*/ fix_padding
             (padty,
              w,
               /*<<camlinternalFormat.ml:1755:36>>*/ convert_float
               (fconv, p$0, x));
          /*<<camlinternalFormat.ml:1756:6>>*/ return make_printf
                 (k, [4, acc, str], rest$7) /*<<camlinternalFormat.ml:1756:52>>*/ ;} /*<<camlinternalFormat.ml:1754:4>>*/ ;
       }
       var padty$0 =  /*<<camlinternalFormat.ml:1735:34>>*/ pad$5[1];
       if(typeof prec$3 === "number")
        return prec$3
                ? function
                 (w, p, x){
                  var
                   str =
                      /*<<camlinternalFormat.ml:1772:36>>*/  /*<<camlinternalFormat.ml:1772:16>>*/ fix_padding
                      (padty$0,
                       w,
                        /*<<camlinternalFormat.ml:1772:36>>*/ convert_float
                        (fconv, p, x));
                   /*<<camlinternalFormat.ml:1773:6>>*/ return make_printf
                          (k, [4, acc, str], rest$7) /*<<camlinternalFormat.ml:1773:52>>*/ ;
                 }
                : function
                 (w, x){
                  var
                   str =
                      /*<<camlinternalFormat.ml:1763:36>>*/  /*<<camlinternalFormat.ml:1763:16>>*/ convert_float
                      (fconv,
                        /*<<camlinternalFormat.ml:1763:36>>*/ default_float_precision
                        (fconv),
                       x),
                   str$0 =
                      /*<<camlinternalFormat.ml:1764:17>>*/ fix_padding
                      (padty$0, w, str);
                   /*<<camlinternalFormat.ml:1765:6>>*/ return make_printf
                          (k, [4, acc, str$0], rest$7) /*<<camlinternalFormat.ml:1765:53>>*/ ;
                 } /*<<camlinternalFormat.ml:1605:9>>*/ ;
       var p$1 =  /*<<camlinternalFormat.ml:1735:34>>*/ prec$3[1];
        /*<<camlinternalFormat.ml:1767:4>>*/ return function(w, x){
        var
         str =
            /*<<camlinternalFormat.ml:1768:36>>*/  /*<<camlinternalFormat.ml:1768:16>>*/ fix_padding
            (padty$0,
             w,
              /*<<camlinternalFormat.ml:1768:36>>*/ convert_float
              (fconv, p$1, x));
         /*<<camlinternalFormat.ml:1769:6>>*/ return make_printf
                (k, [4, acc, str], rest$7) /*<<camlinternalFormat.ml:1769:52>>*/ ;} /*<<camlinternalFormat.ml:1767:4>>*/ ;
      }
      var
       rest$1 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[2],
       pad = fmt[1];
       /*<<camlinternalFormat.ml:1528:4>>*/ return make_padding
              (k,
               acc,
               rest$1,
               pad,
               function(str){
                 /*<<camlinternalFormat.ml:1528:44>>*/ return str;
                /*<<camlinternalFormat.ml:1528:47>>*/ }) /*<<camlinternalFormat.ml:1605:9>>*/ ;
     }
     var rest$0 =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[1];
      /*<<camlinternalFormat.ml:1524:4>>*/ return function(c){
      var
       str =
          /*<<camlinternalFormat.ml:1493:12>>*/ Stdlib_Char[2].call(null, c),
       l =  /*<<camlinternalFormat.ml:1494:2>>*/ caml_ml_string_length(str),
       res =
          /*<<camlinternalFormat.ml:1495:12>>*/ Stdlib_Bytes[1].call
          (null, l + 2 | 0, 39);
       /*<<camlinternalFormat.ml:1496:2>>*/ caml_blit_string
       (str, 0, res, 1, l);
      var
       new_acc =
          /*<<camlinternalFormat.ml:1496:34>>*/ [4,
          acc,
          Stdlib_Bytes[44].call(null, res)];
       /*<<camlinternalFormat.ml:1526:6>>*/ return make_printf
              (k, new_acc, rest$0) /*<<camlinternalFormat.ml:1526:32>>*/ ;} /*<<camlinternalFormat.ml:1524:4>>*/ ;
    }
    var rest =  /*<<camlinternalFormat.ml:1518:17>>*/ fmt[1];
     /*<<camlinternalFormat.ml:1520:4>>*/ return function(c){
     var new_acc =  /*<<camlinternalFormat.ml:1521:6>>*/ [5, acc, c];
      /*<<camlinternalFormat.ml:1522:6>>*/ return make_printf
             (k, new_acc, rest) /*<<camlinternalFormat.ml:1522:32>>*/ ;} /*<<camlinternalFormat.ml:1520:4>>*/ ;
    /*<<camlinternalFormat.ml:1605:9>>*/ }
   function make_printf(k, acc, fmt){
     /*<<camlinternalFormat.ml:1518:17>>*/ return  /*<<?>>*/ caml_trampoline
            ( /*<<camlinternalFormat.ml:1518:17>>*/ make_printf$0
              (0, k, acc, fmt)) /*<<camlinternalFormat.ml:1605:9>>*/ ;
   }
   var _t_ =  /*<<?>>*/ [0, cst_camlinternalFormat_ml, 1626, 39];
   function make_ignored_param$0(counter, k, acc, ign, fmt){
     /*<<camlinternalFormat.ml:1613:21>>*/ if(typeof ign === "number"){
     if(2 === ign)
       /*<<camlinternalFormat.ml:1626:39>>*/ throw caml_maybe_attach_backtrace
             ([0, Assert_failure, _t_], 1);
      /*<<camlinternalFormat.ml:1613:21>>*/ return counter < 50
             ? make_invalid_arg(counter + 1 | 0, k, acc, fmt)
             : caml_trampoline_return(make_invalid_arg, [0, k, acc, fmt]) /*<<camlinternalFormat.ml:1629:65>>*/ ;
    }
     /*<<camlinternalFormat.ml:1613:21>>*/ if(9 !== ign[0])
     return counter < 50
             ? make_invalid_arg(counter + 1 | 0, k, acc, fmt)
             : caml_trampoline_return(make_invalid_arg, [0, k, acc, fmt]) /*<<camlinternalFormat.ml:1629:65>>*/ ;
    var fmtty =  /*<<camlinternalFormat.ml:1613:21>>*/ ign[2];
     /*<<camlinternalFormat.ml:1625:39>>*/ return counter < 50
            ? make_from_fmtty$0(counter + 1 | 0, k, acc, fmtty, fmt)
            : caml_trampoline_return
              (make_from_fmtty$0, [0, k, acc, fmtty, fmt]) /*<<camlinternalFormat.ml:1629:65>>*/ ;
   }
   function make_ignored_param(k, acc, ign, fmt){
     /*<<camlinternalFormat.ml:1613:21>>*/ return  /*<<?>>*/ caml_trampoline
            ( /*<<camlinternalFormat.ml:1613:21>>*/ make_ignored_param$0
              (0, k, acc, ign, fmt)) /*<<camlinternalFormat.ml:1629:65>>*/ ;
   }
   var
    _u_ =  /*<<?>>*/ [0, cst_camlinternalFormat_ml, 1649, 31],
    _v_ = [0, cst_camlinternalFormat_ml, 1650, 31];
   function make_from_fmtty$0(counter, k, acc, fmtty, fmt){
     /*<<camlinternalFormat.ml:1637:23>>*/ if(typeof fmtty === "number")
      /*<<camlinternalFormat.ml:1652:31>>*/ return counter < 50
             ? make_invalid_arg(counter + 1 | 0, k, acc, fmt)
             : caml_trampoline_return(make_invalid_arg, [0, k, acc, fmt]) /*<<camlinternalFormat.ml:1655:61>>*/ ;
     /*<<camlinternalFormat.ml:1637:23>>*/ switch(fmtty[0]){
      case 0:
       var rest = fmtty[1];
        /*<<camlinternalFormat.ml:1638:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1638:40>>*/ return make_from_fmtty
                (k, acc, rest, fmt) /*<<camlinternalFormat.ml:1638:70>>*/ ;} /*<<camlinternalFormat.ml:1638:31>>*/ ;
      case 1:
       var rest$0 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1639:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1639:40>>*/ return make_from_fmtty
                (k, acc, rest$0, fmt) /*<<camlinternalFormat.ml:1639:70>>*/ ;} /*<<camlinternalFormat.ml:1639:31>>*/ ;
      case 2:
       var rest$1 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1640:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1640:40>>*/ return make_from_fmtty
                (k, acc, rest$1, fmt) /*<<camlinternalFormat.ml:1640:70>>*/ ;} /*<<camlinternalFormat.ml:1640:31>>*/ ;
      case 3:
       var rest$2 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1641:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1641:40>>*/ return make_from_fmtty
                (k, acc, rest$2, fmt) /*<<camlinternalFormat.ml:1641:70>>*/ ;} /*<<camlinternalFormat.ml:1641:31>>*/ ;
      case 4:
       var rest$3 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1642:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1642:40>>*/ return make_from_fmtty
                (k, acc, rest$3, fmt) /*<<camlinternalFormat.ml:1642:70>>*/ ;} /*<<camlinternalFormat.ml:1642:31>>*/ ;
      case 5:
       var rest$4 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1643:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1643:40>>*/ return make_from_fmtty
                (k, acc, rest$4, fmt) /*<<camlinternalFormat.ml:1643:70>>*/ ;} /*<<camlinternalFormat.ml:1643:31>>*/ ;
      case 6:
       var rest$5 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1644:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1644:40>>*/ return make_from_fmtty
                (k, acc, rest$5, fmt) /*<<camlinternalFormat.ml:1644:70>>*/ ;} /*<<camlinternalFormat.ml:1644:31>>*/ ;
      case 7:
       var rest$6 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1645:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1645:40>>*/ return make_from_fmtty
                (k, acc, rest$6, fmt) /*<<camlinternalFormat.ml:1645:70>>*/ ;} /*<<camlinternalFormat.ml:1645:31>>*/ ;
      case 8:
       var rest$7 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[2];
        /*<<camlinternalFormat.ml:1651:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1651:40>>*/ return make_from_fmtty
                (k, acc, rest$7, fmt) /*<<camlinternalFormat.ml:1651:70>>*/ ;} /*<<camlinternalFormat.ml:1651:31>>*/ ;
      case 9:
       var
        rest$8 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[3],
        ty2 = fmtty[2],
        ty1 = fmtty[1],
        ty =
           /*<<camlinternalFormat.ml:1654:19>>*/  /*<<camlinternalFormat.ml:1654:13>>*/ trans
           ( /*<<camlinternalFormat.ml:1654:19>>*/ symm(ty1), ty2);
        /*<<camlinternalFormat.ml:1655:4>>*/ return function(param){
         /*<<camlinternalFormat.ml:1655:35>>*/ return  /*<<camlinternalFormat.ml:1655:57>>*/ make_from_fmtty
                (k,
                 acc,
                  /*<<camlinternalFormat.ml:1655:35>>*/ CamlinternalFormatBasics
                   [1].call
                  (null, ty, rest$8),
                 fmt) /*<<camlinternalFormat.ml:1655:61>>*/ ;} /*<<camlinternalFormat.ml:1655:4>>*/ ;
      case 10:
       var rest$9 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1646:31>>*/ return function(_aJ_, param){
         /*<<camlinternalFormat.ml:1646:42>>*/ return make_from_fmtty
                (k, acc, rest$9, fmt) /*<<camlinternalFormat.ml:1646:72>>*/ ;} /*<<camlinternalFormat.ml:1646:31>>*/ ;
      case 11:
       var rest$10 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1647:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1647:40>>*/ return make_from_fmtty
                (k, acc, rest$10, fmt) /*<<camlinternalFormat.ml:1647:70>>*/ ;} /*<<camlinternalFormat.ml:1647:31>>*/ ;
      case 12:
       var rest$11 =  /*<<camlinternalFormat.ml:1637:23>>*/ fmtty[1];
        /*<<camlinternalFormat.ml:1648:31>>*/ return function(param){
         /*<<camlinternalFormat.ml:1648:40>>*/ return make_from_fmtty
                (k, acc, rest$11, fmt) /*<<camlinternalFormat.ml:1648:70>>*/ ;} /*<<camlinternalFormat.ml:1648:31>>*/ ;
      case 13:
        /*<<camlinternalFormat.ml:1649:31>>*/ throw caml_maybe_attach_backtrace
              ([0, Assert_failure, _u_], 1);
      default:
        /*<<camlinternalFormat.ml:1650:31>>*/ throw caml_maybe_attach_backtrace
              ([0, Assert_failure, _v_], 1);
    }
    /*<<camlinternalFormat.ml:1655:61>>*/ }
   function make_from_fmtty(k, acc, fmtty, fmt){
     /*<<camlinternalFormat.ml:1637:23>>*/ return  /*<<?>>*/ caml_trampoline
            ( /*<<camlinternalFormat.ml:1637:23>>*/ make_from_fmtty$0
              (0, k, acc, fmtty, fmt)) /*<<camlinternalFormat.ml:1655:61>>*/ ;
   }
   function make_invalid_arg(counter, k, acc, fmt){
    var
     _aJ_ =
        /*<<camlinternalFormat.ml:1663:2>>*/ [8,
        acc,
        "Printf: bad conversion %_"];
    return counter < 50
            ? make_printf$0(counter + 1 | 0, k, _aJ_, fmt)
            : caml_trampoline_return(make_printf$0, [0, k, _aJ_, fmt]) /*<<camlinternalFormat.ml:1663:72>>*/ ;
   }
   function make_padding(k, acc, fmt, pad, trans){
     /*<<camlinternalFormat.ml:1670:29>>*/ if(typeof pad === "number")
      /*<<camlinternalFormat.ml:1672:4>>*/ return function(x){
      var
       new_acc =
          /*<<camlinternalFormat.ml:1673:42>>*/ [4, acc, caml_call1(trans, x)];
       /*<<camlinternalFormat.ml:1674:6>>*/ return make_printf
              (k, new_acc, fmt) /*<<camlinternalFormat.ml:1674:31>>*/ ;} /*<<camlinternalFormat.ml:1672:4>>*/ ;
     /*<<camlinternalFormat.ml:1670:29>>*/ if(0 === pad[0]){
     var width = pad[2], padty = pad[1];
      /*<<camlinternalFormat.ml:1676:4>>*/ return function(x){
      var
       new_acc =
          /*<<camlinternalFormat.ml:1677:66>>*/ [4,
          acc,
           /*<<camlinternalFormat.ml:1677:42>>*/ fix_padding
           (padty,
            width,
             /*<<camlinternalFormat.ml:1677:66>>*/ caml_call1(trans, x))];
       /*<<camlinternalFormat.ml:1678:6>>*/ return make_printf
              (k, new_acc, fmt) /*<<camlinternalFormat.ml:1678:31>>*/ ;} /*<<camlinternalFormat.ml:1676:4>>*/ ;
    }
    var padty$0 =  /*<<camlinternalFormat.ml:1670:29>>*/ pad[1];
     /*<<camlinternalFormat.ml:1680:4>>*/ return function(w, x){
     var
      new_acc =
         /*<<camlinternalFormat.ml:1681:62>>*/ [4,
         acc,
          /*<<camlinternalFormat.ml:1681:42>>*/ fix_padding
          (padty$0,
           w,
            /*<<camlinternalFormat.ml:1681:62>>*/ caml_call1(trans, x))];
      /*<<camlinternalFormat.ml:1682:6>>*/ return make_printf(k, new_acc, fmt) /*<<camlinternalFormat.ml:1682:31>>*/ ;} /*<<camlinternalFormat.ml:1680:4>>*/ ;
    /*<<camlinternalFormat.ml:1682:31>>*/ }
   function make_int_padding_precision(k, acc, fmt, pad, prec, trans, iconv){
     /*<<camlinternalFormat.ml:1691:40>>*/ if(typeof pad === "number"){
     if(typeof prec === "number")
      return prec
              ? function
               (p, x){
                var
                 str =
                    /*<<camlinternalFormat.ml:1702:36>>*/  /*<<camlinternalFormat.ml:1702:16>>*/ fix_int_precision
                    (p,
                      /*<<camlinternalFormat.ml:1702:36>>*/ caml_call2
                      (trans, iconv, x));
                 /*<<camlinternalFormat.ml:1703:6>>*/ return make_printf
                        (k, [4, acc, str], fmt) /*<<camlinternalFormat.ml:1703:52>>*/ ;
               }
              : function
               (x){
                var
                 str =
                    /*<<camlinternalFormat.ml:1694:16>>*/ caml_call2
                    (trans, iconv, x);
                 /*<<camlinternalFormat.ml:1695:6>>*/ return make_printf
                        (k, [4, acc, str], fmt) /*<<camlinternalFormat.ml:1695:52>>*/ ;
               } /*<<camlinternalFormat.ml:1727:52>>*/ ;
     var p =  /*<<camlinternalFormat.ml:1691:40>>*/ prec[1];
      /*<<camlinternalFormat.ml:1697:4>>*/ return function(x){
      var
       str =
          /*<<camlinternalFormat.ml:1698:36>>*/  /*<<camlinternalFormat.ml:1698:16>>*/ fix_int_precision
          (p,
            /*<<camlinternalFormat.ml:1698:36>>*/ caml_call2(trans, iconv, x));
       /*<<camlinternalFormat.ml:1699:6>>*/ return make_printf
              (k, [4, acc, str], fmt) /*<<camlinternalFormat.ml:1699:52>>*/ ;} /*<<camlinternalFormat.ml:1697:4>>*/ ;
    }
     /*<<camlinternalFormat.ml:1691:40>>*/ if(0 === pad[0]){
     var w = pad[2], padty = pad[1];
     if(typeof prec === "number")
      return prec
              ? function
               (p, x){
                var
                 str =
                    /*<<camlinternalFormat.ml:1714:57>>*/  /*<<camlinternalFormat.ml:1714:16>>*/ fix_padding
                    (padty,
                     w,
                      /*<<camlinternalFormat.ml:1714:36>>*/ fix_int_precision
                      (p,
                        /*<<camlinternalFormat.ml:1714:57>>*/ caml_call2
                        (trans, iconv, x)));
                 /*<<camlinternalFormat.ml:1715:6>>*/ return make_printf
                        (k, [4, acc, str], fmt) /*<<camlinternalFormat.ml:1715:52>>*/ ;
               }
              : function
               (x){
                var
                 str =
                    /*<<camlinternalFormat.ml:1706:36>>*/  /*<<camlinternalFormat.ml:1706:16>>*/ fix_padding
                    (padty,
                     w,
                      /*<<camlinternalFormat.ml:1706:36>>*/ caml_call2
                      (trans, iconv, x));
                 /*<<camlinternalFormat.ml:1707:6>>*/ return make_printf
                        (k, [4, acc, str], fmt) /*<<camlinternalFormat.ml:1707:52>>*/ ;
               } /*<<camlinternalFormat.ml:1727:52>>*/ ;
     var p$0 =  /*<<camlinternalFormat.ml:1691:40>>*/ prec[1];
      /*<<camlinternalFormat.ml:1709:4>>*/ return function(x){
      var
       str =
          /*<<camlinternalFormat.ml:1710:57>>*/  /*<<camlinternalFormat.ml:1710:16>>*/ fix_padding
          (padty,
           w,
            /*<<camlinternalFormat.ml:1710:36>>*/ fix_int_precision
            (p$0,
              /*<<camlinternalFormat.ml:1710:57>>*/ caml_call2
              (trans, iconv, x)));
       /*<<camlinternalFormat.ml:1711:6>>*/ return make_printf
              (k, [4, acc, str], fmt) /*<<camlinternalFormat.ml:1711:52>>*/ ;} /*<<camlinternalFormat.ml:1709:4>>*/ ;
    }
    var padty$0 =  /*<<camlinternalFormat.ml:1691:40>>*/ pad[1];
    if(typeof prec === "number")
     return prec
             ? function
              (w, p, x){
               var
                str =
                   /*<<camlinternalFormat.ml:1726:57>>*/  /*<<camlinternalFormat.ml:1726:16>>*/ fix_padding
                   (padty$0,
                    w,
                     /*<<camlinternalFormat.ml:1726:36>>*/ fix_int_precision
                     (p,
                       /*<<camlinternalFormat.ml:1726:57>>*/ caml_call2
                       (trans, iconv, x)));
                /*<<camlinternalFormat.ml:1727:6>>*/ return make_printf
                       (k, [4, acc, str], fmt) /*<<camlinternalFormat.ml:1727:52>>*/ ;
              }
             : function
              (w, x){
               var
                str =
                   /*<<camlinternalFormat.ml:1718:36>>*/  /*<<camlinternalFormat.ml:1718:16>>*/ fix_padding
                   (padty$0,
                    w,
                     /*<<camlinternalFormat.ml:1718:36>>*/ caml_call2
                     (trans, iconv, x));
                /*<<camlinternalFormat.ml:1719:6>>*/ return make_printf
                       (k, [4, acc, str], fmt) /*<<camlinternalFormat.ml:1719:52>>*/ ;
              } /*<<camlinternalFormat.ml:1727:52>>*/ ;
    var p$1 =  /*<<camlinternalFormat.ml:1691:40>>*/ prec[1];
     /*<<camlinternalFormat.ml:1721:4>>*/ return function(w, x){
     var
      str =
         /*<<camlinternalFormat.ml:1722:57>>*/  /*<<camlinternalFormat.ml:1722:16>>*/ fix_padding
         (padty$0,
          w,
           /*<<camlinternalFormat.ml:1722:36>>*/ fix_int_precision
           (p$1,
             /*<<camlinternalFormat.ml:1722:57>>*/ caml_call2(trans, iconv, x)));
      /*<<camlinternalFormat.ml:1723:6>>*/ return make_printf
             (k, [4, acc, str], fmt) /*<<camlinternalFormat.ml:1723:52>>*/ ;} /*<<camlinternalFormat.ml:1721:4>>*/ ;
    /*<<camlinternalFormat.ml:1727:52>>*/ }
   function make_custom$0(counter, k, acc, rest, arity, f){
     /*<<camlinternalFormat.ml:1778:28>>*/ if(arity){
     var arity$0 = arity[1];
      /*<<camlinternalFormat.ml:1781:4>>*/ return function(x){
       /*<<camlinternalFormat.ml:1782:35>>*/ return  /*<<camlinternalFormat.ml:1782:40>>*/ make_custom
              (k,
               acc,
               rest,
               arity$0,
                /*<<camlinternalFormat.ml:1782:35>>*/ caml_call1(f, x)) /*<<camlinternalFormat.ml:1782:40>>*/ ;} /*<<camlinternalFormat.ml:1781:4>>*/ ;
    }
    var _aJ_ =  /*<<camlinternalFormat.ml:1779:19>>*/ [4, acc, f];
    return counter < 50
            ? make_printf$0(counter + 1 | 0, k, _aJ_, rest)
            : caml_trampoline_return(make_printf$0, [0, k, _aJ_, rest]) /*<<camlinternalFormat.ml:1782:40>>*/ ;
   }
   function make_custom(k, acc, rest, arity, f){
     /*<<camlinternalFormat.ml:1778:28>>*/ return  /*<<?>>*/ caml_trampoline
            ( /*<<camlinternalFormat.ml:1778:28>>*/ make_custom$0
              (0, k, acc, rest, arity, f)) /*<<camlinternalFormat.ml:1782:40>>*/ ;
   }
   var _w_ =  /*<<?>>*/ [0, cst_camlinternalFormat_ml, 1830, 8];
   function make_iprintf$0(counter, k$2, o, fmt$2){
    a:
    {
     b:
     {
      c:
      {
       d:
       {
        e:
        {
         f:
         {
          g:
          {
           h:
           {
            i:
            {
             var k =  /*<<camlinternalFormat.ml:1788:17>>*/ k$2, fmt = fmt$2;
             j:
             for(;;){
              if(typeof fmt === "number")
                /*<<camlinternalFormat.ml:1858:8>>*/ return caml_call1(k, o) /*<<camlinternalFormat.ml:1858:11>>*/ ;
               /*<<camlinternalFormat.ml:1788:17>>*/ switch(fmt[0]){
                case 2:
                 break b;
                case 3:
                 break c;
                case 9:
                 break e;
                case 10:
                 var rest$10 = fmt[1];
                  /*<<camlinternalFormat.ml:1832:8>>*/ fmt = rest$10;
                 break;
                case 14:
                 break g;
                case 15:
                 break h;
                case 18:
                 var _aJ_ =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[1];
                 if(0 === _aJ_[0]){
                  var rest$15 = fmt[2], fmt$0 = _aJ_[1][1];
                  let
                   k$1 =  /*<<camlinternalFormat.ml:1854:8>>*/ k,
                   rest = rest$15;
                  var
                   k$0 =
                     function(koc){
                       /*<<camlinternalFormat.ml:1854:33>>*/ return make_iprintf
                              (k$1, koc, rest) /*<<camlinternalFormat.ml:1854:56>>*/ ;
                     };
                   /*<<camlinternalFormat.ml:1854:8>>*/ k = k$0;
                  fmt = fmt$0;
                 }
                 else{
                  var
                   rest$16 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[2],
                   fmt$1 = _aJ_[1][1];
                  let
                   k$0 =  /*<<camlinternalFormat.ml:1856:8>>*/ k,
                   rest = rest$16;
                  var
                   k$1 =
                     function(koc){
                       /*<<camlinternalFormat.ml:1856:33>>*/ return make_iprintf
                              (k$0, koc, rest) /*<<camlinternalFormat.ml:1856:56>>*/ ;
                     };
                   /*<<camlinternalFormat.ml:1856:8>>*/ k = k$1;
                  fmt = fmt$1;
                 }
                 break;
                case 19:
                  /*<<camlinternalFormat.ml:1830:8>>*/ throw caml_maybe_attach_backtrace
                        ([0, Assert_failure, _w_], 1);
                case 21:
                 break i;
                case 23:
                 break j;
                case 24:
                 var
                  rest$19 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[3],
                  arity = fmt[1];
                  /*<<camlinternalFormat.ml:1826:8>>*/ return counter < 50
                         ? fn_of_custom_arity$0
                           (counter + 1 | 0, k, o, rest$19, arity)
                         : caml_trampoline_return
                           (fn_of_custom_arity$0, [0, k, o, rest$19, arity]) /*<<camlinternalFormat.ml:1858:11>>*/ ;
                case 13:
                case 20:
                 break f;
                case 11:
                case 12:
                case 17:
                 var rest$11 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[2];
                 fmt = rest$11;
                 break;
                case 0:
                case 1:
                case 16:
                case 22:
                 break a;
                default: break d;
              }
             }
             var rest$18 = fmt[2], ign = fmt[1];
              /*<<camlinternalFormat.ml:1850:8>>*/ return make_ignored_param
                     (function(param){
                        /*<<camlinternalFormat.ml:1850:37>>*/ return caml_call1
                               (k, o) /*<<camlinternalFormat.ml:1850:40>>*/ ;
                      },
                      0,
                      ign,
                      rest$18) /*<<camlinternalFormat.ml:1858:11>>*/ ;
            }
            var
             rest$17 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[2],
             x$15 =
                /*<<camlinternalFormat.ml:1846:14>>*/ make_iprintf
                (k, o, rest$17);
             /*<<camlinternalFormat.ml:1846:37>>*/ return function(param){
              /*<<camlinternalFormat.ml:1784:16>>*/ return x$15;} /*<<camlinternalFormat.ml:1846:37>>*/ ;
           }
           var
            rest$14 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[1],
            x$13 =
               /*<<camlinternalFormat.ml:1822:21>>*/ make_iprintf
               (k, o, rest$14),
            x$14 =
               /*<<camlinternalFormat.ml:1822:14>>*/ function(param){
                /*<<camlinternalFormat.ml:1784:16>>*/ return x$13;
              };
            /*<<camlinternalFormat.ml:1822:45>>*/ return function(param){
             /*<<camlinternalFormat.ml:1784:16>>*/ return x$14;} /*<<camlinternalFormat.ml:1822:45>>*/ ;
          }
          var
           rest$13 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[3],
           fmtty = fmt[2];
           /*<<camlinternalFormat.ml:1840:8>>*/ return function(param){
           var
            fmt = param[1],
            _aJ_ =  /*<<camlinternalFormat.ml:1842:24>>*/ recast(fmt, fmtty);
            /*<<camlinternalFormat.ml:1842:12>>*/ return  /*<<camlinternalFormat.ml:1842:48>>*/ make_iprintf
                   (k,
                    o,
                     /*<<camlinternalFormat.ml:1842:12>>*/ CamlinternalFormatBasics
                      [3].call
                     (null, _aJ_, rest$13)) /*<<camlinternalFormat.ml:1842:48>>*/ ;} /*<<camlinternalFormat.ml:1840:8>>*/ ;
         }
         var
          rest$12 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[3],
          x$12 = make_iprintf(k, o, rest$12);
         return function(param){
           /*<<camlinternalFormat.ml:1784:16>>*/ return x$12;} /*<<camlinternalFormat.ml:1788:17>>*/ ;
        }
        var match$1 = fmt[1];
        if(typeof match$1 === "number"){
         var
          rest$7 = fmt[2],
          x$8 =
             /*<<camlinternalFormat.ml:1816:14>>*/ make_iprintf(k, o, rest$7);
          /*<<camlinternalFormat.ml:1816:37>>*/ return function(param){
           /*<<camlinternalFormat.ml:1784:16>>*/ return x$8;} /*<<camlinternalFormat.ml:1816:37>>*/ ;
        }
         /*<<camlinternalFormat.ml:1788:17>>*/ if(0 === match$1[0]){
         var
          rest$8 = fmt[2],
          x$9 =
             /*<<camlinternalFormat.ml:1818:14>>*/ make_iprintf(k, o, rest$8);
          /*<<camlinternalFormat.ml:1818:37>>*/ return function(param){
           /*<<camlinternalFormat.ml:1784:16>>*/ return x$9;} /*<<camlinternalFormat.ml:1818:37>>*/ ;
        }
        var
         rest$9 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[2],
         x$10 =
            /*<<camlinternalFormat.ml:1820:21>>*/ make_iprintf(k, o, rest$9),
         x$11 =
            /*<<camlinternalFormat.ml:1820:14>>*/ function(param){
             /*<<camlinternalFormat.ml:1784:16>>*/ return x$10;
           };
         /*<<camlinternalFormat.ml:1820:45>>*/ return function(param){
          /*<<camlinternalFormat.ml:1784:16>>*/ return x$11;} /*<<camlinternalFormat.ml:1820:45>>*/ ;
       }
       var
        rest$6 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[4],
        prec = fmt[3],
        pad = fmt[2];
        /*<<camlinternalFormat.ml:1863:26>>*/ if(typeof pad === "number"){
        if(typeof prec !== "number"){
         var
          x$19 =
             /*<<camlinternalFormat.ml:1867:14>>*/ make_iprintf(k, o, rest$6);
          /*<<camlinternalFormat.ml:1867:36>>*/ return function(param){
           /*<<camlinternalFormat.ml:1784:16>>*/ return x$19;} /*<<camlinternalFormat.ml:1867:36>>*/ ;
        }
         /*<<camlinternalFormat.ml:1863:26>>*/ if(prec){
         var
          x$16 =
             /*<<camlinternalFormat.ml:1869:21>>*/ make_iprintf(k, o, rest$6),
          x$17 =
             /*<<camlinternalFormat.ml:1869:14>>*/ function(param){
              /*<<camlinternalFormat.ml:1784:16>>*/ return x$16;
            };
          /*<<camlinternalFormat.ml:1869:44>>*/ return function(param){
           /*<<camlinternalFormat.ml:1784:16>>*/ return x$17;} /*<<camlinternalFormat.ml:1869:44>>*/ ;
        }
        var
         x$18 =
            /*<<camlinternalFormat.ml:1865:14>>*/ make_iprintf(k, o, rest$6);
         /*<<camlinternalFormat.ml:1865:36>>*/ return function(param){
          /*<<camlinternalFormat.ml:1784:16>>*/ return x$18;} /*<<camlinternalFormat.ml:1865:36>>*/ ;
       }
        /*<<camlinternalFormat.ml:1863:26>>*/ if(0 === pad[0]){
        if(typeof prec !== "number"){
         var
          x$23 =
             /*<<camlinternalFormat.ml:1873:14>>*/ make_iprintf(k, o, rest$6);
          /*<<camlinternalFormat.ml:1873:36>>*/ return function(param){
           /*<<camlinternalFormat.ml:1784:16>>*/ return x$23;} /*<<camlinternalFormat.ml:1873:36>>*/ ;
        }
         /*<<camlinternalFormat.ml:1863:26>>*/ if(prec){
         var
          x$20 =
             /*<<camlinternalFormat.ml:1875:21>>*/ make_iprintf(k, o, rest$6),
          x$21 =
             /*<<camlinternalFormat.ml:1875:14>>*/ function(param){
              /*<<camlinternalFormat.ml:1784:16>>*/ return x$20;
            };
          /*<<camlinternalFormat.ml:1875:44>>*/ return function(param){
           /*<<camlinternalFormat.ml:1784:16>>*/ return x$21;} /*<<camlinternalFormat.ml:1875:44>>*/ ;
        }
        var
         x$22 =
            /*<<camlinternalFormat.ml:1871:14>>*/ make_iprintf(k, o, rest$6);
         /*<<camlinternalFormat.ml:1871:36>>*/ return function(param){
          /*<<camlinternalFormat.ml:1784:16>>*/ return x$22;} /*<<camlinternalFormat.ml:1871:36>>*/ ;
       }
        /*<<camlinternalFormat.ml:1863:26>>*/ if(typeof prec !== "number"){
        var
         x$29 =
            /*<<camlinternalFormat.ml:1879:21>>*/ make_iprintf(k, o, rest$6),
         x$30 =
            /*<<camlinternalFormat.ml:1879:14>>*/ function(param){
             /*<<camlinternalFormat.ml:1784:16>>*/ return x$29;
           };
         /*<<camlinternalFormat.ml:1879:44>>*/ return function(param){
          /*<<camlinternalFormat.ml:1784:16>>*/ return x$30;} /*<<camlinternalFormat.ml:1879:44>>*/ ;
       }
        /*<<camlinternalFormat.ml:1863:26>>*/ if(prec){
        var
         x$24 =
            /*<<camlinternalFormat.ml:1881:28>>*/ make_iprintf(k, o, rest$6),
         x$25 =
            /*<<camlinternalFormat.ml:1881:21>>*/ function(param){
             /*<<camlinternalFormat.ml:1784:16>>*/ return x$24;
           },
         x$26 =
            /*<<camlinternalFormat.ml:1881:14>>*/ function(param){
             /*<<camlinternalFormat.ml:1784:16>>*/ return x$25;
           };
         /*<<camlinternalFormat.ml:1881:52>>*/ return function(param){
          /*<<camlinternalFormat.ml:1784:16>>*/ return x$26;} /*<<camlinternalFormat.ml:1881:52>>*/ ;
       }
       var
        x$27 =
           /*<<camlinternalFormat.ml:1877:21>>*/ make_iprintf(k, o, rest$6),
        x$28 =
           /*<<camlinternalFormat.ml:1877:14>>*/ function(param){
            /*<<camlinternalFormat.ml:1784:16>>*/ return x$27;
          };
        /*<<camlinternalFormat.ml:1877:44>>*/ return function(param){
         /*<<camlinternalFormat.ml:1784:16>>*/ return x$28;} /*<<camlinternalFormat.ml:1877:44>>*/ ;
      }
      var match$0 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[1];
      if(typeof match$0 === "number"){
       var
        rest$3 = fmt[2],
        x$4 =
           /*<<camlinternalFormat.ml:1800:14>>*/ make_iprintf(k, o, rest$3);
        /*<<camlinternalFormat.ml:1800:37>>*/ return function(param){
         /*<<camlinternalFormat.ml:1784:16>>*/ return x$4;} /*<<camlinternalFormat.ml:1800:37>>*/ ;
      }
       /*<<camlinternalFormat.ml:1788:17>>*/ if(0 === match$0[0]){
       var
        rest$4 = fmt[2],
        x$5 =
           /*<<camlinternalFormat.ml:1802:14>>*/ make_iprintf(k, o, rest$4);
        /*<<camlinternalFormat.ml:1802:37>>*/ return function(param){
         /*<<camlinternalFormat.ml:1784:16>>*/ return x$5;} /*<<camlinternalFormat.ml:1802:37>>*/ ;
      }
      var
       rest$5 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[2],
       x$6 =  /*<<camlinternalFormat.ml:1804:21>>*/ make_iprintf(k, o, rest$5),
       x$7 =
          /*<<camlinternalFormat.ml:1804:14>>*/ function(param){
           /*<<camlinternalFormat.ml:1784:16>>*/ return x$6;
         };
       /*<<camlinternalFormat.ml:1804:45>>*/ return function(param){
        /*<<camlinternalFormat.ml:1784:16>>*/ return x$7;} /*<<camlinternalFormat.ml:1804:45>>*/ ;
     }
     var match =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[1];
     if(typeof match === "number"){
      var
       rest$0 = fmt[2],
       x$0 =  /*<<camlinternalFormat.ml:1794:14>>*/ make_iprintf(k, o, rest$0);
       /*<<camlinternalFormat.ml:1794:37>>*/ return function(param){
        /*<<camlinternalFormat.ml:1784:16>>*/ return x$0;} /*<<camlinternalFormat.ml:1794:37>>*/ ;
     }
      /*<<camlinternalFormat.ml:1788:17>>*/ if(0 === match[0]){
      var
       rest$1 = fmt[2],
       x$1 =  /*<<camlinternalFormat.ml:1796:14>>*/ make_iprintf(k, o, rest$1);
       /*<<camlinternalFormat.ml:1796:37>>*/ return function(param){
        /*<<camlinternalFormat.ml:1784:16>>*/ return x$1;} /*<<camlinternalFormat.ml:1796:37>>*/ ;
     }
     var
      rest$2 =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[2],
      x$2 =  /*<<camlinternalFormat.ml:1798:21>>*/ make_iprintf(k, o, rest$2),
      x$3 =
         /*<<camlinternalFormat.ml:1798:14>>*/ function(param){
          /*<<camlinternalFormat.ml:1784:16>>*/ return x$2;
        };
      /*<<camlinternalFormat.ml:1798:45>>*/ return function(param){
       /*<<camlinternalFormat.ml:1784:16>>*/ return x$3;} /*<<camlinternalFormat.ml:1798:45>>*/ ;
    }
    var
     rest =  /*<<camlinternalFormat.ml:1788:17>>*/ fmt[1],
     x = make_iprintf(k, o, rest);
    return function(param){
      /*<<camlinternalFormat.ml:1784:16>>*/ return x;} /*<<camlinternalFormat.ml:1788:17>>*/ ;
    /*<<camlinternalFormat.ml:1858:11>>*/ }
   function make_iprintf(k, o, fmt){
     /*<<camlinternalFormat.ml:1788:17>>*/ return  /*<<?>>*/ caml_trampoline
            ( /*<<camlinternalFormat.ml:1788:17>>*/ make_iprintf$0
              (0, k, o, fmt)) /*<<camlinternalFormat.ml:1858:11>>*/ ;
   }
   function fn_of_custom_arity$0(counter, k, o, fmt, param){
     /*<<camlinternalFormat.ml:1882:4>>*/ if(! param)
      /*<<camlinternalFormat.ml:1887:8>>*/ return counter < 50
             ? make_iprintf$0(counter + 1 | 0, k, o, fmt)
             : caml_trampoline_return(make_iprintf$0, [0, k, o, fmt]) /*<<camlinternalFormat.ml:1889:48>>*/ ;
    var
     arity =  /*<<camlinternalFormat.ml:1882:4>>*/ param[1],
     x =
        /*<<camlinternalFormat.ml:1889:14>>*/ fn_of_custom_arity
        (k, o, fmt, arity);
     /*<<camlinternalFormat.ml:1889:48>>*/ return function(param){
      /*<<camlinternalFormat.ml:1784:16>>*/ return x;} /*<<camlinternalFormat.ml:1889:48>>*/ ;
   }
   function fn_of_custom_arity(k, o, fmt, param){
     /*<<camlinternalFormat.ml:1882:4>>*/ return  /*<<?>>*/ caml_trampoline
            ( /*<<camlinternalFormat.ml:1882:4>>*/ fn_of_custom_arity$0
              (0, k, o, fmt, param)) /*<<camlinternalFormat.ml:1889:48>>*/ ;
   }
   function output_acc(o, acc$2){
    var acc =  /*<<camlinternalFormat.ml:1897:27>>*/ acc$2;
    for(;;){
     if(typeof acc === "number")
       /*<<camlinternalFormat.ml:1912:32>>*/ return 0;
      /*<<camlinternalFormat.ml:1897:27>>*/ switch(acc[0]){
       case 0:
        var
         fmting_lit = acc[2],
         p = acc[1],
         s =
            /*<<camlinternalFormat.ml:1899:12>>*/ string_of_formatting_lit
            (fmting_lit);
         /*<<camlinternalFormat.ml:1900:4>>*/ output_acc(o, p);
         /*<<camlinternalFormat.ml:1900:18>>*/ return Stdlib[66].call
                (null, o, s) /*<<camlinternalFormat.ml:1912:34>>*/ ;
       case 1:
        var
         match =  /*<<camlinternalFormat.ml:1897:27>>*/ acc[2],
         p$0 = acc[1];
        if(0 === match[0]){
         var acc$0 = match[1];
          /*<<camlinternalFormat.ml:1902:4>>*/ output_acc(o, p$0);
          /*<<camlinternalFormat.ml:1902:20>>*/ Stdlib[66].call(null, o, cst);
          /*<<camlinternalFormat.ml:1902:40>>*/ acc = acc$0;
        }
        else{
         var acc$1 =  /*<<camlinternalFormat.ml:1897:27>>*/ match[1];
          /*<<camlinternalFormat.ml:1904:4>>*/ output_acc(o, p$0);
          /*<<camlinternalFormat.ml:1904:20>>*/ Stdlib[66].call
          (null, o, cst$0);
          /*<<camlinternalFormat.ml:1904:40>>*/ acc = acc$1;
        }
        break;
       case 6:
        var f =  /*<<camlinternalFormat.ml:1897:27>>*/ acc[2], p$3 = acc[1];
         /*<<camlinternalFormat.ml:1909:32>>*/ output_acc(o, p$3);
         /*<<camlinternalFormat.ml:1909:46>>*/ return caml_call1(f, o) /*<<camlinternalFormat.ml:1912:34>>*/ ;
       case 7:
        var p$4 =  /*<<camlinternalFormat.ml:1897:27>>*/ acc[1];
         /*<<camlinternalFormat.ml:1910:32>>*/ output_acc(o, p$4);
         /*<<camlinternalFormat.ml:1910:46>>*/ return Stdlib[63].call(null, o) /*<<camlinternalFormat.ml:1912:34>>*/ ;
       case 8:
        var msg =  /*<<camlinternalFormat.ml:1897:27>>*/ acc[2], p$5 = acc[1];
         /*<<camlinternalFormat.ml:1911:32>>*/ output_acc(o, p$5);
         /*<<camlinternalFormat.ml:1911:46>>*/ return Stdlib[1].call
                (null, msg) /*<<camlinternalFormat.ml:1912:34>>*/ ;
       case 2:
       case 4:
        var s$0 =  /*<<camlinternalFormat.ml:1897:27>>*/ acc[2], p$1 = acc[1];
         /*<<camlinternalFormat.ml:1906:32>>*/ output_acc(o, p$1);
         /*<<camlinternalFormat.ml:1906:46>>*/ return Stdlib[66].call
                (null, o, s$0) /*<<camlinternalFormat.ml:1912:34>>*/ ;
       default:
        var c =  /*<<camlinternalFormat.ml:1897:27>>*/ acc[2], p$2 = acc[1];
         /*<<camlinternalFormat.ml:1908:32>>*/ output_acc(o, p$2);
         /*<<camlinternalFormat.ml:1908:46>>*/ return Stdlib[65].call
                (null, o, c) /*<<camlinternalFormat.ml:1912:34>>*/ ;
     }
    }
   }
   function bufput_acc(b, acc$3){
    var acc =  /*<<camlinternalFormat.ml:1917:27>>*/ acc$3;
    for(;;){
     if(typeof acc === "number")
       /*<<camlinternalFormat.ml:1932:32>>*/ return 0;
      /*<<camlinternalFormat.ml:1917:27>>*/ switch(acc[0]){
       case 0:
        var
         fmting_lit = acc[2],
         p = acc[1],
         s =
            /*<<camlinternalFormat.ml:1919:12>>*/ string_of_formatting_lit
            (fmting_lit);
         /*<<camlinternalFormat.ml:1920:4>>*/ bufput_acc(b, p);
         /*<<camlinternalFormat.ml:1920:18>>*/ return Stdlib_Buffer[16].call
                (null, b, s) /*<<camlinternalFormat.ml:1932:34>>*/ ;
       case 1:
        var
         match =  /*<<camlinternalFormat.ml:1917:27>>*/ acc[2],
         p$0 = acc[1];
        if(0 === match[0]){
         var acc$0 = match[1];
          /*<<camlinternalFormat.ml:1922:4>>*/ bufput_acc(b, p$0);
          /*<<camlinternalFormat.ml:1922:20>>*/ Stdlib_Buffer[16].call
          (null, b, cst);
          /*<<camlinternalFormat.ml:1922:44>>*/ acc = acc$0;
        }
        else{
         var acc$1 =  /*<<camlinternalFormat.ml:1917:27>>*/ match[1];
          /*<<camlinternalFormat.ml:1924:4>>*/ bufput_acc(b, p$0);
          /*<<camlinternalFormat.ml:1924:20>>*/ Stdlib_Buffer[16].call
          (null, b, cst$0);
          /*<<camlinternalFormat.ml:1924:44>>*/ acc = acc$1;
        }
        break;
       case 6:
        var f =  /*<<camlinternalFormat.ml:1917:27>>*/ acc[2], p$3 = acc[1];
         /*<<camlinternalFormat.ml:1929:32>>*/ bufput_acc(b, p$3);
         /*<<camlinternalFormat.ml:1929:46>>*/ return caml_call1(f, b) /*<<camlinternalFormat.ml:1932:34>>*/ ;
       case 7:
        var acc$2 =  /*<<camlinternalFormat.ml:1917:27>>*/ acc[1];
         /*<<camlinternalFormat.ml:1930:32>>*/ acc = acc$2;
        break;
       case 8:
        var msg =  /*<<camlinternalFormat.ml:1917:27>>*/ acc[2], p$4 = acc[1];
         /*<<camlinternalFormat.ml:1931:32>>*/ bufput_acc(b, p$4);
         /*<<camlinternalFormat.ml:1931:46>>*/ return Stdlib[1].call
                (null, msg) /*<<camlinternalFormat.ml:1932:34>>*/ ;
       case 2:
       case 4:
        var s$0 =  /*<<camlinternalFormat.ml:1917:27>>*/ acc[2], p$1 = acc[1];
         /*<<camlinternalFormat.ml:1926:32>>*/ bufput_acc(b, p$1);
         /*<<camlinternalFormat.ml:1926:46>>*/ return Stdlib_Buffer[16].call
                (null, b, s$0) /*<<camlinternalFormat.ml:1932:34>>*/ ;
       default:
        var c =  /*<<camlinternalFormat.ml:1917:27>>*/ acc[2], p$2 = acc[1];
         /*<<camlinternalFormat.ml:1928:32>>*/ bufput_acc(b, p$2);
         /*<<camlinternalFormat.ml:1928:46>>*/ return Stdlib_Buffer[12].call
                (null, b, c) /*<<camlinternalFormat.ml:1932:34>>*/ ;
     }
    }
   }
   function strput_acc(b, acc$3){
    var acc =  /*<<camlinternalFormat.ml:1938:27>>*/ acc$3;
    for(;;){
     if(typeof acc === "number")
       /*<<camlinternalFormat.ml:1953:32>>*/ return 0;
      /*<<camlinternalFormat.ml:1938:27>>*/ switch(acc[0]){
       case 0:
        var
         fmting_lit = acc[2],
         p = acc[1],
         s =
            /*<<camlinternalFormat.ml:1940:12>>*/ string_of_formatting_lit
            (fmting_lit);
         /*<<camlinternalFormat.ml:1941:4>>*/ strput_acc(b, p);
         /*<<camlinternalFormat.ml:1941:18>>*/ return Stdlib_Buffer[16].call
                (null, b, s) /*<<camlinternalFormat.ml:1953:34>>*/ ;
       case 1:
        var
         match =  /*<<camlinternalFormat.ml:1938:27>>*/ acc[2],
         p$0 = acc[1];
        if(0 === match[0]){
         var acc$0 = match[1];
          /*<<camlinternalFormat.ml:1943:4>>*/ strput_acc(b, p$0);
          /*<<camlinternalFormat.ml:1943:20>>*/ Stdlib_Buffer[16].call
          (null, b, cst);
          /*<<camlinternalFormat.ml:1943:44>>*/ acc = acc$0;
        }
        else{
         var acc$1 =  /*<<camlinternalFormat.ml:1938:27>>*/ match[1];
          /*<<camlinternalFormat.ml:1945:4>>*/ strput_acc(b, p$0);
          /*<<camlinternalFormat.ml:1945:20>>*/ Stdlib_Buffer[16].call
          (null, b, cst$0);
          /*<<camlinternalFormat.ml:1945:44>>*/ acc = acc$1;
        }
        break;
       case 6:
        var f =  /*<<camlinternalFormat.ml:1938:27>>*/ acc[2], p$3 = acc[1];
         /*<<camlinternalFormat.ml:1950:32>>*/ strput_acc(b, p$3);
        var _aJ_ =  /*<<camlinternalFormat.ml:1950:68>>*/ caml_call1(f, 0);
         /*<<camlinternalFormat.ml:1950:74>>*/ return Stdlib_Buffer[16].call
                (null, b, _aJ_) /*<<camlinternalFormat.ml:1953:34>>*/ ;
       case 7:
        var acc$2 =  /*<<camlinternalFormat.ml:1938:27>>*/ acc[1];
         /*<<camlinternalFormat.ml:1951:32>>*/ acc = acc$2;
        break;
       case 8:
        var msg =  /*<<camlinternalFormat.ml:1938:27>>*/ acc[2], p$4 = acc[1];
         /*<<camlinternalFormat.ml:1952:32>>*/ strput_acc(b, p$4);
         /*<<camlinternalFormat.ml:1952:46>>*/ return Stdlib[1].call
                (null, msg) /*<<camlinternalFormat.ml:1953:34>>*/ ;
       case 2:
       case 4:
        var s$0 =  /*<<camlinternalFormat.ml:1938:27>>*/ acc[2], p$1 = acc[1];
         /*<<camlinternalFormat.ml:1947:32>>*/ strput_acc(b, p$1);
         /*<<camlinternalFormat.ml:1947:46>>*/ return Stdlib_Buffer[16].call
                (null, b, s$0) /*<<camlinternalFormat.ml:1953:34>>*/ ;
       default:
        var c =  /*<<camlinternalFormat.ml:1938:27>>*/ acc[2], p$2 = acc[1];
         /*<<camlinternalFormat.ml:1949:32>>*/ strput_acc(b, p$2);
         /*<<camlinternalFormat.ml:1949:46>>*/ return Stdlib_Buffer[12].call
                (null, b, c) /*<<camlinternalFormat.ml:1953:34>>*/ ;
     }
    }
   }
   function failwith_message(param){
    var
     fmt =  /*<<camlinternalFormat.ml:1959:21>>*/ param[1],
     buf =
        /*<<camlinternalFormat.ml:1960:12>>*/ Stdlib_Buffer[1].call(null, 256);
    function k(acc){
      /*<<camlinternalFormat.ml:1961:14>>*/ strput_acc(buf, acc);
     var
      _aJ_ =
         /*<<camlinternalFormat.ml:1961:43>>*/ Stdlib_Buffer[2].call
         (null, buf);
      /*<<camlinternalFormat.ml:1961:64>>*/ return Stdlib[2].call(null, _aJ_);
    }
     /*<<camlinternalFormat.ml:1962:2>>*/ return make_printf(k, 0, fmt) /*<<camlinternalFormat.ml:1962:30>>*/ ;
   }
   var
    cst$1 =  /*<<?>>*/ "",
    _x_ = [0, 0, 4],
    _y_ =
      [0,
       [11, "invalid box description ", [3, 0, 0]],
       "invalid box description %S"];
   function open_box_of_string(str){
     /*<<camlinternalFormat.ml:1969:13>>*/ if(str === cst$1)
      /*<<camlinternalFormat.ml:1969:19>>*/ return _x_;
    var
     len =  /*<<camlinternalFormat.ml:1970:4>>*/ caml_ml_string_length(str);
    function invalid_box(param){
      /*<<camlinternalFormat.ml:1971:25>>*/ return caml_call1
             (failwith_message(_y_), str) /*<<camlinternalFormat.ml:1971:74>>*/ ;
    }
    function parse_spaces(i$1){
     var i =  /*<<camlinternalFormat.ml:1973:6>>*/ i$1;
     for(;;){
      if(i === len)  /*<<camlinternalFormat.ml:1973:22>>*/ return i;
      var
       match =  /*<<camlinternalFormat.ml:1974:14>>*/ caml_string_get(str, i);
       /*<<camlinternalFormat.ml:1974:21>>*/ if(9 !== match && 32 !== match)
        /*<<camlinternalFormat.ml:1976:15>>*/ return i;
      var i$0 =  /*<<camlinternalFormat.ml:1975:24>>*/ i + 1 | 0;
      i = i$0;
     }
     /*<<camlinternalFormat.ml:1976:16>>*/ }
    var
     wstart =  /*<<camlinternalFormat.ml:1987:17>>*/ parse_spaces(0),
     wend =  /*<<camlinternalFormat.ml:1988:15>>*/ wstart;
    for(;;){
      /*<<camlinternalFormat.ml:1978:6>>*/ if(wend === len) break;
      /*<<camlinternalFormat.ml:1979:14>>*/ if
      (25 < caml_string_get(str, wend) - 97 >>> 0)
      break;
     var j =  /*<<camlinternalFormat.ml:1980:24>>*/ wend + 1 | 0;
     wend = j;
    }
    var
     box_name =
        /*<<camlinternalFormat.ml:1989:19>>*/ Stdlib_String[16].call
        (null, str, wstart, wend - wstart | 0),
     nstart =  /*<<camlinternalFormat.ml:1990:17>>*/ parse_spaces(wend),
     nend =  /*<<camlinternalFormat.ml:1991:15>>*/ nstart;
    for(;;){
      /*<<camlinternalFormat.ml:1983:6>>*/ if(nend === len) break;
     var
      match =
         /*<<camlinternalFormat.ml:1984:14>>*/ caml_string_get(str, nend);
      /*<<camlinternalFormat.ml:1984:21>>*/ if(48 <= match){
      if(58 <= match) break;
     }
     else if(45 !== match) break;
     var j$0 =  /*<<camlinternalFormat.ml:1985:30>>*/ nend + 1 | 0;
     nend = j$0;
    }
     /*<<camlinternalFormat.ml:1992:4>>*/ if(nstart === nend)
     var indent =  /*<<camlinternalFormat.ml:1993:28>>*/ 0;
    else
      /*<<camlinternalFormat.ml:1992:4>>*/ try{
      var
       _aJ_ =
          /*<<camlinternalFormat.ml:1994:26>>*/  /*<<camlinternalFormat.ml:1994:12>>*/ runtime.caml_int_of_string
          ( /*<<camlinternalFormat.ml:1994:26>>*/ Stdlib_String[16].call
            (null, str, nstart, nend - nstart | 0)),
       indent = _aJ_;
     }
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn[1] !== Stdlib[7]) throw caml_maybe_attach_backtrace(exn, 0);
      var
       indent =
          /*<<camlinternalFormat.ml:1995:40>>*/  /*<<camlinternalFormat.ml:1995:26>>*/ invalid_box
          (0);
     }
    var exp_end =  /*<<camlinternalFormat.ml:1996:18>>*/ parse_spaces(nend);
     /*<<camlinternalFormat.ml:1997:4>>*/ if(exp_end !== len)
      /*<<camlinternalFormat.ml:1997:27>>*/ invalid_box(0);
    a:
    {
      /*<<camlinternalFormat.ml:1998:4>>*/ if
      (box_name !== cst$1 && box_name !== "b"){
      if(box_name === "h"){
       var box_type =  /*<<camlinternalFormat.ml:2000:20>>*/ 0;
       break a;
      }
       /*<<camlinternalFormat.ml:1998:4>>*/ if(box_name === "hov"){
       var box_type =  /*<<camlinternalFormat.ml:2003:20>>*/ 3;
       break a;
      }
       /*<<camlinternalFormat.ml:1998:4>>*/ if(box_name === "hv"){
       var box_type =  /*<<camlinternalFormat.ml:2002:20>>*/ 2;
       break a;
      }
       /*<<camlinternalFormat.ml:1998:4>>*/ if(box_name !== "v"){
       var
        box_type =
           /*<<camlinternalFormat.ml:2004:34>>*/  /*<<camlinternalFormat.ml:2004:20>>*/ invalid_box
           (0);
       break a;
      }
      var box_type =  /*<<camlinternalFormat.ml:2001:20>>*/ 1;
      break a;
     }
     var box_type =  /*<<camlinternalFormat.ml:1999:20>>*/ 4;
    }
     /*<<camlinternalFormat.ml:2005:4>>*/ return [0, indent, box_type];
    /*<<camlinternalFormat.ml:2005:22>>*/ }
   function make_padding_fmt_ebb(pad, fmt){
     /*<<camlinternalFormat.ml:2015:15>>*/ if(typeof pad === "number")
      /*<<camlinternalFormat.ml:2016:26>>*/ return [0, 0, fmt];
     /*<<camlinternalFormat.ml:2015:15>>*/ if(0 === pad[0]){
     var w = pad[2], s = pad[1];
      /*<<camlinternalFormat.ml:2017:26>>*/ return [0, [0, s, w], fmt];
    }
    var s$0 =  /*<<camlinternalFormat.ml:2015:15>>*/ pad[1];
     /*<<camlinternalFormat.ml:2018:26>>*/ return [0, [1, s$0], fmt];
    /*<<camlinternalFormat.ml:2018:62>>*/ }
   function make_padprec_fmt_ebb(pad, prec, fmt){
     /*<<camlinternalFormat.ml:2025:16>>*/ if(typeof prec === "number")
     var match = prec ? [0, 1] : [0, 0];
    else
     var
      p = prec[1],
      match =  /*<<camlinternalFormat.ml:2027:23>>*/ [0, [0, p]];
    var prec$0 =  /*<<camlinternalFormat.ml:2038:70>>*/ match[1];
     /*<<camlinternalFormat.ml:2039:2>>*/ if(typeof pad === "number")
      /*<<camlinternalFormat.ml:2040:26>>*/ return [0, 0, prec$0, fmt];
     /*<<camlinternalFormat.ml:2039:2>>*/ if(0 === pad[0]){
     var w = pad[2], s = pad[1];
      /*<<camlinternalFormat.ml:2041:26>>*/ return [0, [0, s, w], prec$0, fmt];
    }
    var s$0 =  /*<<camlinternalFormat.ml:2039:2>>*/ pad[1];
     /*<<camlinternalFormat.ml:2042:26>>*/ return [0, [1, s$0], prec$0, fmt];
    /*<<camlinternalFormat.ml:2042:69>>*/ }
   var
    cst$2 =  /*<<?>>*/ ", ",
    cst_at_character_number = ": at character number ",
    cst_invalid_format = "invalid format ",
    sub_format = [0, 0, cst$1],
    formatting_lit = [0, "@;", 1, 0],
    _z_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11, cst_at_character_number, [4, 0, 0, 0, [11, cst$2, [2, 0, 0]]]]]],
       "invalid format %S: at character number %d, %s"],
    _A_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11,
          cst_at_character_number,
          [4, 0, 0, 0, [11, ", '", [0, [11, "' without ", [2, 0, 0]]]]]]]],
       "invalid format %S: at character number %d, '%c' without %s"],
    _B_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11,
          cst_at_character_number,
          [4, 0, 0, 0, [11, cst$2, [2, 0, [11, " expected, read ", [1, 0]]]]]]]],
       "invalid format %S: at character number %d, %s expected, read %C"],
    _C_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11,
          cst_at_character_number,
          [4, 0, 0, 0, [11, ", duplicate flag ", [1, 0]]]]]],
       "invalid format %S: at character number %d, duplicate flag %C"],
    _D_ = [0, 1, 0],
    _E_ = [0, 0],
    _F_ = [1, 0],
    _G_ = [1, 1],
    _H_ = [1, 1],
    _I_ = [1, 1],
    _J_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11,
          cst_at_character_number,
          [4,
           0,
           0,
           0,
           [11, ', invalid conversion "', [12, 37, [0, [12, 34, 0]]]]]]]],
       'invalid format %S: at character number %d, invalid conversion "%%%c"'],
    _K_ = [0, 0],
    _L_ = [0, 0],
    _M_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11,
          cst_at_character_number,
          [4,
           0,
           0,
           0,
           [11,
            ", flag ",
            [1,
             [11,
              " is only allowed after the '",
              [12, 37, [11, "', before padding and precision", 0]]]]]]]]],
       "invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision"],
    _N_ = [0, [12, 64, 0]],
    _O_ = [0, "@ ", 1, 0],
    _P_ = [0, "@,", 0, 0],
    _Q_ = [2, 60],
    _R_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11,
          ": '",
          [12,
           37,
           [11,
            "' alone is not accepted in character sets, use ",
            [12,
             37,
             [12,
              37,
              [11, " instead at position ", [4, 0, 0, 0, [12, 46, 0]]]]]]]]]],
       "invalid format %S: '%%' alone is not accepted in character sets, use %%%% instead at position %d."],
    _S_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11,
          ": integer ",
          [4, 0, 0, 0, [11, " is greater than the limit ", [4, 0, 0, 0, 0]]]]]],
       "invalid format %S: integer %d is greater than the limit %d"],
    _T_ = [0, cst_camlinternalFormat_ml, 2837, 11],
    _U_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11,
          ': unclosed sub-format, expected "',
          [12, 37, [0, [11, '" at character number ', [4, 0, 0, 0, 0]]]]]]],
       'invalid format %S: unclosed sub-format, expected "%%%c" at character number %d'],
    _V_ = [0, cst_camlinternalFormat_ml, 2899, 34],
    _W_ = [0, cst_camlinternalFormat_ml, 2935, 28],
    _X_ = [0, cst_camlinternalFormat_ml, 2957, 11],
    _Y_ =
      [0,
       [11,
        cst_invalid_format,
        [3,
         0,
         [11,
          cst_at_character_number,
          [4,
           0,
           0,
           0,
           [11,
            cst$2,
            [2,
             0,
             [11,
              " is incompatible with '",
              [0, [11, "' in sub-format ", [3, 0, 0]]]]]]]]]],
       "invalid format %S: at character number %d, %s is incompatible with '%c' in sub-format %S"];
   function fmt_ebb_of_string(legacy_behavior, str){
     /*<<camlinternalFormat.ml:2066:2>>*/ if(legacy_behavior)
     var
      flag = legacy_behavior[1],
      legacy_behavior$0 =  /*<<camlinternalFormat.ml:2067:19>>*/ flag;
    else
     var legacy_behavior$0 =  /*<<camlinternalFormat.ml:2068:14>>*/ 1;
    function invalid_format_message(str_ind, msg){
      /*<<camlinternalFormat.ml:2084:4>>*/ return caml_call3
             (failwith_message(_z_), str, str_ind, msg) /*<<camlinternalFormat.ml:2086:21>>*/ ;
    }
    function invalid_format_without(str_ind, c, s){
      /*<<camlinternalFormat.ml:2104:4>>*/ return caml_call4
             (failwith_message(_A_), str, str_ind, c, s) /*<<camlinternalFormat.ml:2106:21>>*/ ;
    }
    function expected_character(str_ind, expected, read){
      /*<<camlinternalFormat.ml:2112:4>>*/ return caml_call4
             (failwith_message(_B_), str, str_ind, expected, read) /*<<camlinternalFormat.ml:2114:31>>*/ ;
    }
    var cst_unexpected_end_of_format =  /*<<?>>*/ "unexpected end of format";
    function parse(lit_start, end_ind){
     var str_ind =  /*<<camlinternalFormat.ml:2119:25>>*/ lit_start;
     for(;;){
       /*<<camlinternalFormat.ml:2124:4>>*/ if(str_ind === end_ind)
        /*<<camlinternalFormat.ml:2124:30>>*/ return add_literal
               (lit_start, str_ind, 0) /*<<camlinternalFormat.ml:2119:62>>*/ ;
      var
       match =
          /*<<camlinternalFormat.ml:2125:12>>*/ caml_string_get(str, str_ind);
       /*<<camlinternalFormat.ml:2125:25>>*/ if(37 === match) break;
      if(64 === match){
       var
        fmt_rest$0 =
           /*<<camlinternalFormat.ml:2130:31>>*/ parse_after_at
            (str_ind + 1 | 0, end_ind)
           [1];
        /*<<camlinternalFormat.ml:2131:8>>*/ return add_literal
               (lit_start, str_ind, fmt_rest$0) /*<<camlinternalFormat.ml:2119:62>>*/ ;
      }
      var str_ind$0 =  /*<<camlinternalFormat.ml:2133:8>>*/ str_ind + 1 | 0;
      str_ind = str_ind$0;
     }
     var str_ind$1 =  /*<<camlinternalFormat.ml:2137:25>>*/ str_ind + 1 | 0;
      /*<<camlinternalFormat.ml:2141:4>>*/ if(str_ind$1 === end_ind)
       /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
       (end_ind, cst_unexpected_end_of_format);
     var
      match$0 =
         /*<<camlinternalFormat.ml:2142:10>>*/ 95
         === caml_string_get(str, str_ind$1)
         ?  /*<<camlinternalFormat.ml:2143:15>>*/ parse_flags
           (str_ind, str_ind$1 + 1 | 0, end_ind, 1)
         :  /*<<camlinternalFormat.ml:2144:13>>*/ parse_flags
           (str_ind, str_ind$1, end_ind, 0),
      fmt_rest =  /*<<camlinternalFormat.ml:2127:59>>*/ match$0[1];
      /*<<camlinternalFormat.ml:2128:8>>*/ return add_literal
             (lit_start, str_ind, fmt_rest) /*<<camlinternalFormat.ml:2119:62>>*/ ;
    }
    var cst_0 =  /*<<?>>*/ "0";
    function parse_flags(pct_ind, str_ind, end_ind, ign){
     function set_flag(str_ind, flag){
      var
       _aH_ =  /*<<camlinternalFormat.ml:2154:6>>*/ flag[1],
       _aI_ = _aH_ ? 1 - legacy_behavior$0 : _aH_;
      if(_aI_){
       var
        _aJ_ =
           /*<<camlinternalFormat.ml:2157:22>>*/ caml_string_get(str, str_ind);
        /*<<camlinternalFormat.ml:2155:8>>*/ caml_call3
        (failwith_message(_C_), str, str_ind, _aJ_);
      }
       /*<<camlinternalFormat.ml:2158:6>>*/ flag[1] = 1;
      /*<<camlinternalFormat.ml:2158:19>>*/ }
     var
      str_ind$0 =  /*<<camlinternalFormat.ml:2173:4>>*/ str_ind,
      zero =  /*<<camlinternalFormat.ml:2149:4>>*/ [0, 0],
      minus = [0, 0],
      plus = [0, 0],
      space = [0, 0],
      hash = [0, 0];
     a:
      /*<<camlinternalFormat.ml:2173:4>>*/ for(;;){
       /*<<camlinternalFormat.ml:2161:6>>*/ if(str_ind$0 === end_ind)
        /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
        (end_ind, cst_unexpected_end_of_format);
      var
       switcher =
          /*<<camlinternalFormat.ml:2162:18>>*/ caml_string_get
          (str, str_ind$0)
         - 32
         | 0;
       /*<<camlinternalFormat.ml:2162:31>>*/ if(16 < switcher >>> 0) break;
      switch(switcher){
        case 0:
          /*<<camlinternalFormat.ml:2167:15>>*/ set_flag(str_ind$0, space);
         var
          str_ind$1 =  /*<<camlinternalFormat.ml:2167:37>>*/ str_ind$0 + 1 | 0;
         str_ind$0 = str_ind$1;
         break;
        case 3:
          /*<<camlinternalFormat.ml:2166:15>>*/ set_flag(str_ind$0, hash);
         var
          str_ind$2 =  /*<<camlinternalFormat.ml:2166:36>>*/ str_ind$0 + 1 | 0;
         str_ind$0 = str_ind$2;
         break;
        case 11:
          /*<<camlinternalFormat.ml:2165:15>>*/ set_flag(str_ind$0, plus);
         var
          str_ind$3 =  /*<<camlinternalFormat.ml:2165:36>>*/ str_ind$0 + 1 | 0;
         str_ind$0 = str_ind$3;
         break;
        case 13:
          /*<<camlinternalFormat.ml:2164:15>>*/ set_flag(str_ind$0, minus);
         var
          str_ind$4 =  /*<<camlinternalFormat.ml:2164:37>>*/ str_ind$0 + 1 | 0;
         str_ind$0 = str_ind$4;
         break;
        case 16:
          /*<<camlinternalFormat.ml:2163:15>>*/ set_flag(str_ind$0, zero);
         var
          str_ind$5 =  /*<<camlinternalFormat.ml:2163:36>>*/ str_ind$0 + 1 | 0;
         str_ind$0 = str_ind$5;
         break;
        default: break a;
      }
     }
     var
      space$0 =  /*<<camlinternalFormat.ml:2169:8>>*/ space[1],
      hash$0 = hash[1],
      plus$0 = plus[1],
      minus$0 = minus[1],
      zero$0 = zero[1];
      /*<<camlinternalFormat.ml:2180:4>>*/ if(str_ind$0 === end_ind)
       /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
       (end_ind, cst_unexpected_end_of_format);
     var
      padty =
         /*<<camlinternalFormat.ml:2181:4>>*/ zero$0
         ? minus$0
           ? legacy_behavior$0
             ? 0
             :  /*<<camlinternalFormat.ml:2187:13>>*/ incompatible_flag
               (pct_ind, str_ind$0, 45, cst_0)
           : 2
         : minus$0 ? 0 : 1,
      match =
         /*<<camlinternalFormat.ml:2188:10>>*/ caml_string_get(str, str_ind$0);
      /*<<camlinternalFormat.ml:2188:23>>*/ if(48 <= match){
      if(58 > match){
       var
        match$0 =
           /*<<camlinternalFormat.ml:2190:27>>*/ parse_positive
           (str_ind$0, end_ind, 0),
        width =  /*<<camlinternalFormat.ml:2190:59>>*/ match$0[2],
        new_ind = match$0[1];
        /*<<camlinternalFormat.ml:2191:6>>*/ return parse_after_padding
               (pct_ind,
                new_ind,
                end_ind,
                minus$0,
                plus$0,
                hash$0,
                space$0,
                ign,
                [0, padty, width]) /*<<camlinternalFormat.ml:2173:22>>*/ ;
      }
     }
     else if(42 === match)
       /*<<camlinternalFormat.ml:2194:6>>*/ return parse_after_padding
              (pct_ind,
               str_ind$0 + 1 | 0,
               end_ind,
               minus$0,
               plus$0,
               hash$0,
               space$0,
               ign,
               [1, padty]) /*<<camlinternalFormat.ml:2173:22>>*/ ;
      /*<<camlinternalFormat.ml:2197:6>>*/ switch(padty){
       case 0:
         /*<<camlinternalFormat.ml:2199:8>>*/ if(1 - legacy_behavior$0)
          /*<<camlinternalFormat.ml:2200:10>>*/ invalid_format_without
          (str_ind$0 - 1 | 0, 45, "padding");
         /*<<camlinternalFormat.ml:2201:8>>*/ return parse_after_padding
                (pct_ind,
                 str_ind$0,
                 end_ind,
                 minus$0,
                 plus$0,
                 hash$0,
                 space$0,
                 ign,
                 0) /*<<camlinternalFormat.ml:2173:22>>*/ ;
       case 1:
         /*<<camlinternalFormat.ml:2210:8>>*/ return parse_after_padding
                (pct_ind,
                 str_ind$0,
                 end_ind,
                 minus$0,
                 plus$0,
                 hash$0,
                 space$0,
                 ign,
                 0) /*<<camlinternalFormat.ml:2173:22>>*/ ;
       default:
         /*<<camlinternalFormat.ml:2207:8>>*/ return parse_after_padding
                (pct_ind,
                 str_ind$0,
                 end_ind,
                 minus$0,
                 plus$0,
                 hash$0,
                 space$0,
                 ign,
                 _D_) /*<<camlinternalFormat.ml:2173:22>>*/ ;
     }
    }
    var cst_precision =  /*<<?>>*/ "precision";
    function parse_after_padding
    (pct_ind, str_ind, end_ind, minus, plus, hash, space, ign, pad){
      /*<<camlinternalFormat.ml:2219:4>>*/ if(str_ind === end_ind)
       /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
       (end_ind, cst_unexpected_end_of_format);
     var
      symb =
         /*<<camlinternalFormat.ml:2220:10>>*/ caml_string_get(str, str_ind);
      /*<<camlinternalFormat.ml:2220:23>>*/ if(46 !== symb)
       /*<<camlinternalFormat.ml:2225:6>>*/ return parse_conversion
              (pct_ind,
               str_ind + 1 | 0,
               end_ind,
               plus,
               hash,
               space,
               ign,
               pad,
               0,
               pad,
               symb) /*<<camlinternalFormat.ml:2226:29>>*/ ;
     var str_ind$0 =  /*<<camlinternalFormat.ml:2222:6>>*/ str_ind + 1 | 0;
      /*<<camlinternalFormat.ml:2233:4>>*/ if(str_ind$0 === end_ind)
       /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
       (end_ind, cst_unexpected_end_of_format);
     function parse_literal(minus, str_ind){
      var
       match =
          /*<<camlinternalFormat.ml:2235:26>>*/ parse_positive
          (str_ind, end_ind, 0),
       prec =  /*<<camlinternalFormat.ml:2235:58>>*/ match[2],
       new_ind = match[1];
       /*<<camlinternalFormat.ml:2236:6>>*/ return parse_after_precision
              (pct_ind,
               new_ind,
               end_ind,
               minus,
               plus,
               hash,
               space,
               ign,
               pad,
               [0, prec]) /*<<camlinternalFormat.ml:2237:32>>*/ ;
     }
     var
      symb$0 =
         /*<<camlinternalFormat.ml:2238:10>>*/ caml_string_get(str, str_ind$0);
      /*<<camlinternalFormat.ml:2238:23>>*/ if(48 <= symb$0){
      if(58 > symb$0)
        /*<<camlinternalFormat.ml:2239:20>>*/ return parse_literal
               (minus, str_ind$0) /*<<camlinternalFormat.ml:2226:29>>*/ ;
     }
     else if(42 <= symb$0)
       /*<<camlinternalFormat.ml:2238:23>>*/ switch(symb$0 - 42 | 0){
        case 0:
          /*<<camlinternalFormat.ml:2251:6>>*/ return parse_after_precision
                 (pct_ind,
                  str_ind$0 + 1 | 0,
                  end_ind,
                  minus,
                  plus,
                  hash,
                  space,
                  ign,
                  pad,
                  1) /*<<camlinternalFormat.ml:2226:29>>*/ ;
        case 1:
        case 3:
          /*<<camlinternalFormat.ml:2240:31>>*/ if(legacy_behavior$0){
          var
           _aH_ =  /*<<camlinternalFormat.ml:2249:6>>*/ str_ind$0 + 1 | 0,
           minus$0 = minus || (45 === symb$0 ? 1 : 0);
          return parse_literal(minus$0, _aH_) /*<<camlinternalFormat.ml:2226:29>>*/ ;
         }
         break;
      }
      /*<<camlinternalFormat.ml:2254:6>>*/ return legacy_behavior$0
             ?  /*<<camlinternalFormat.ml:2258:8>>*/ parse_after_precision
               (pct_ind,
                str_ind$0,
                end_ind,
                minus,
                plus,
                hash,
                space,
                ign,
                pad,
                _E_)
             :  /*<<camlinternalFormat.ml:2261:8>>*/ invalid_format_without
               (str_ind$0 - 1 | 0, 46, cst_precision) /*<<camlinternalFormat.ml:2226:29>>*/ ;
    }
    function parse_after_precision
    (pct_ind, str_ind, end_ind, minus, plus, hash, space, ign, pad, prec){
      /*<<camlinternalFormat.ml:2268:4>>*/ if(str_ind === end_ind)
       /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
       (end_ind, cst_unexpected_end_of_format);
     function parse_conv(padprec){
       /*<<camlinternalFormat.ml:2271:21>>*/ return  /*<<camlinternalFormat.ml:2271:34>>*/ parse_conversion
              (pct_ind,
               str_ind + 1 | 0,
               end_ind,
               plus,
               hash,
               space,
               ign,
               pad,
               prec,
               padprec,
                /*<<camlinternalFormat.ml:2271:21>>*/ caml_string_get
                (str, str_ind)) /*<<camlinternalFormat.ml:2271:34>>*/ ;
     }
      /*<<camlinternalFormat.ml:2278:4>>*/ if(typeof pad !== "number")
       /*<<camlinternalFormat.ml:2287:13>>*/ return parse_conv(pad) /*<<camlinternalFormat.ml:2287:27>>*/ ;
      /*<<camlinternalFormat.ml:2279:20>>*/ if
      (typeof prec === "number" && ! prec)
       /*<<camlinternalFormat.ml:2281:29>>*/ return parse_conv(0) /*<<camlinternalFormat.ml:2287:27>>*/ ;
      /*<<camlinternalFormat.ml:2279:20>>*/ if(minus){
      if(typeof prec === "number")
        /*<<camlinternalFormat.ml:2285:33>>*/ return parse_conv(_F_) /*<<camlinternalFormat.ml:2287:27>>*/ ;
      var n =  /*<<camlinternalFormat.ml:2279:20>>*/ prec[1];
       /*<<camlinternalFormat.ml:2283:35>>*/ return parse_conv([0, 0, n]) /*<<camlinternalFormat.ml:2287:27>>*/ ;
     }
      /*<<camlinternalFormat.ml:2279:20>>*/ if(typeof prec === "number")
       /*<<camlinternalFormat.ml:2284:34>>*/ return parse_conv(_G_) /*<<camlinternalFormat.ml:2287:27>>*/ ;
     var n$0 =  /*<<camlinternalFormat.ml:2279:20>>*/ prec[1];
      /*<<camlinternalFormat.ml:2282:36>>*/ return parse_conv([0, 1, n$0]) /*<<camlinternalFormat.ml:2287:27>>*/ ;
    }
    var cst$1 =  /*<<?>>*/ "' '", cst$0 = "'#'", cst = "'+'";
    function parse_conversion
    (pct_ind,
     str_ind,
     end_ind,
     plus,
     hash,
     space,
     ign,
     pad,
     prec,
     padprec,
     symb){
     var plus_used =  /*<<camlinternalFormat.ml:2295:4>>*/ [0, 0];
     function get_plus(param){
       /*<<camlinternalFormat.ml:2300:25>>*/ plus_used[1] = 1;
       /*<<camlinternalFormat.ml:2300:45>>*/ return plus;
      /*<<camlinternalFormat.ml:2300:49>>*/ }
     var hash_used =  /*<<camlinternalFormat.ml:2295:4>>*/ [0, 0];
     function get_hash(param){
       /*<<camlinternalFormat.ml:2301:24>>*/ hash_used[1] = 1;
       /*<<camlinternalFormat.ml:2301:43>>*/ return hash;
      /*<<camlinternalFormat.ml:2301:47>>*/ }
     var space_used =  /*<<camlinternalFormat.ml:2295:4>>*/ [0, 0];
     function get_space(param){
       /*<<camlinternalFormat.ml:2302:25>>*/ space_used[1] = 1;
       /*<<camlinternalFormat.ml:2302:45>>*/ return space;
      /*<<camlinternalFormat.ml:2302:50>>*/ }
     var ign_used =  /*<<camlinternalFormat.ml:2295:4>>*/ [0, 0];
     function get_ign(param){
       /*<<camlinternalFormat.ml:2303:25>>*/ ign_used[1] = 1;
       /*<<camlinternalFormat.ml:2303:45>>*/ return ign;
      /*<<camlinternalFormat.ml:2303:48>>*/ }
     var pad_used =  /*<<camlinternalFormat.ml:2295:4>>*/ [0, 0];
     function get_pad(param){
       /*<<camlinternalFormat.ml:2304:25>>*/ pad_used[1] = 1;
       /*<<camlinternalFormat.ml:2304:45>>*/ return pad;
      /*<<camlinternalFormat.ml:2304:48>>*/ }
     var prec_used =  /*<<camlinternalFormat.ml:2295:4>>*/ [0, 0];
     function get_prec(param){
       /*<<camlinternalFormat.ml:2305:25>>*/ prec_used[1] = 1;
       /*<<camlinternalFormat.ml:2305:45>>*/ return prec;
      /*<<camlinternalFormat.ml:2305:49>>*/ }
     function get_padprec(param){
       /*<<camlinternalFormat.ml:2306:25>>*/ pad_used[1] = 1;
       /*<<camlinternalFormat.ml:2306:45>>*/ return padprec;
      /*<<camlinternalFormat.ml:2306:52>>*/ }
     function get_int_pad(param){
      var
       pad =  /*<<camlinternalFormat.ml:2320:13>>*/ get_pad(0),
       match =  /*<<camlinternalFormat.ml:2320:25>>*/ get_prec(0);
       /*<<camlinternalFormat.ml:2320:36>>*/ if
       (typeof match === "number" && ! match)
        /*<<camlinternalFormat.ml:2321:32>>*/ return pad;
       /*<<camlinternalFormat.ml:2320:36>>*/ if(typeof pad === "number")
        /*<<camlinternalFormat.ml:2322:32>>*/ return 0;
       /*<<camlinternalFormat.ml:2320:36>>*/ if(0 !== pad[0])
       return 2 <= pad[1]
               ? legacy_behavior$0
                 ? _H_
                 :  /*<<camlinternalFormat.ml:2328:16>>*/ incompatible_flag
                   (pct_ind, str_ind, 48, cst_precision)
               : pad /*<<camlinternalFormat.ml:2330:41>>*/ ;
       /*<<camlinternalFormat.ml:2320:36>>*/ if(2 > pad[1])
        /*<<camlinternalFormat.ml:2329:38>>*/ return pad;
      var n =  /*<<camlinternalFormat.ml:2320:36>>*/ pad[2];
       /*<<camlinternalFormat.ml:2324:11>>*/ return legacy_behavior$0
              ? [0, 1, n]
              :  /*<<camlinternalFormat.ml:2325:16>>*/ incompatible_flag
                (pct_ind, str_ind, 48, cst_precision) /*<<camlinternalFormat.ml:2330:41>>*/ ;
     }
     function check_no_0(symb, pad){
       /*<<camlinternalFormat.ml:2334:6>>*/ if(typeof pad === "number")
        /*<<camlinternalFormat.ml:2335:22>>*/ return pad;
       /*<<camlinternalFormat.ml:2334:6>>*/ if(0 !== pad[0])
       return 2 <= pad[1]
               ? legacy_behavior$0
                 ? _I_
                 :  /*<<camlinternalFormat.ml:2343:13>>*/ incompatible_flag
                   (pct_ind, str_ind, symb, cst_0)
               : pad /*<<camlinternalFormat.ml:2343:55>>*/ ;
       /*<<camlinternalFormat.ml:2334:6>>*/ if(2 > pad[1])
        /*<<camlinternalFormat.ml:2336:43>>*/ return pad;
      var width =  /*<<camlinternalFormat.ml:2334:6>>*/ pad[2];
       /*<<camlinternalFormat.ml:2339:8>>*/ return legacy_behavior$0
              ? [0, 1, width]
              :  /*<<camlinternalFormat.ml:2340:13>>*/ incompatible_flag
                (pct_ind, str_ind, symb, cst_0) /*<<camlinternalFormat.ml:2343:55>>*/ ;
     }
     var cst$2 =  /*<<?>>*/ "'*'";
     function opt_of_pad(c, pad){
       /*<<camlinternalFormat.ml:2349:64>>*/ if(typeof pad === "number")
        /*<<camlinternalFormat.ml:2350:22>>*/ return 0;
       /*<<camlinternalFormat.ml:2349:64>>*/ if(0 === pad[0])
       switch(pad[1]){
         case 0:
          var width = pad[2];
           /*<<camlinternalFormat.ml:2356:8>>*/ return legacy_behavior$0
                  ? [0, width]
                  :  /*<<camlinternalFormat.ml:2357:13>>*/ incompatible_flag
                    (pct_ind, str_ind, c, "'-'") /*<<camlinternalFormat.ml:2358:66>>*/ ;
         case 1:
          var width$0 =  /*<<camlinternalFormat.ml:2349:64>>*/ pad[2];
           /*<<camlinternalFormat.ml:2351:38>>*/ return [0, width$0];
         default:
          var width$1 =  /*<<camlinternalFormat.ml:2349:64>>*/ pad[2];
           /*<<camlinternalFormat.ml:2353:8>>*/ return legacy_behavior$0
                  ? [0, width$1]
                  :  /*<<camlinternalFormat.ml:2354:13>>*/ incompatible_flag
                    (pct_ind, str_ind, c, "'0'") /*<<camlinternalFormat.ml:2358:66>>*/ ;
       }
       /*<<camlinternalFormat.ml:2358:25>>*/ return incompatible_flag
              (pct_ind, str_ind, c, cst$2) /*<<camlinternalFormat.ml:2358:66>>*/ ;
     }
     function get_pad_opt(c){
       /*<<camlinternalFormat.ml:2360:37>>*/ return  /*<<camlinternalFormat.ml:2360:49>>*/ opt_of_pad
              (c,  /*<<camlinternalFormat.ml:2360:37>>*/ get_pad(0)) /*<<camlinternalFormat.ml:2360:49>>*/ ;
     }
     function get_padprec_opt(c){
       /*<<camlinternalFormat.ml:2361:41>>*/ return  /*<<camlinternalFormat.ml:2361:57>>*/ opt_of_pad
              (c,  /*<<camlinternalFormat.ml:2361:41>>*/ get_padprec(0)) /*<<camlinternalFormat.ml:2361:57>>*/ ;
     }
     a:
     {
       /*<<camlinternalFormat.ml:2372:4>>*/ if(124 > symb)
       switch(symb){
         case 33:
          var
           fmt_rest$5 =
              /*<<camlinternalFormat.ml:2515:29>>*/ parse(str_ind, end_ind)[1],
           fmt_result =
              /*<<camlinternalFormat.ml:2516:6>>*/ [0, [10, fmt_rest$5]];
          break a;
         case 40:
          var
           sub_end =
              /*<<camlinternalFormat.ml:2531:20>>*/ search_subformat_end
              (str_ind, end_ind, 41),
           fmt_rest$7 =
              /*<<camlinternalFormat.ml:2532:29>>*/ parse
               (sub_end + 2 | 0, end_ind)
              [1],
           sub_fmt =
              /*<<camlinternalFormat.ml:2533:28>>*/ parse(str_ind, sub_end)[1],
           sub_fmtty =
              /*<<camlinternalFormat.ml:2534:22>>*/ fmtty_of_fmt(sub_fmt);
           /*<<camlinternalFormat.ml:2535:9>>*/ if(get_ign(0)){
           var
            ignored$2 =
               /*<<camlinternalFormat.ml:2536:44>>*/ [9,
               get_pad_opt(95),
               sub_fmtty],
            fmt_result =
               /*<<camlinternalFormat.ml:2537:8>>*/ [0,
               [23, ignored$2, fmt_rest$7]];
           break a;
          }
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2539:46>>*/ [0,
              [14,
                /*<<camlinternalFormat.ml:2539:31>>*/ get_pad_opt(40),
               sub_fmtty,
               fmt_rest$7]];
          break a;
         case 44:
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2374:27>>*/  /*<<camlinternalFormat.ml:2374:6>>*/ parse
              (str_ind, end_ind);
          break a;
         case 67:
          var
           fmt_rest$10 =
              /*<<camlinternalFormat.ml:2396:29>>*/ parse(str_ind, end_ind)[1];
           /*<<camlinternalFormat.ml:2397:9>>*/ if(get_ign(0)){
           var
            fmt_result =
               /*<<camlinternalFormat.ml:2397:25>>*/ [0, [23, 1, fmt_rest$10]];
           break a;
          }
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2398:11>>*/ [0, [1, fmt_rest$10]];
          break a;
         case 78:
          var
           fmt_rest$14 =
              /*<<camlinternalFormat.ml:2431:29>>*/ parse(str_ind, end_ind)[1],
           counter$0 =  /*<<camlinternalFormat.ml:2431:50>>*/ 2;
           /*<<camlinternalFormat.ml:2433:9>>*/ if(get_ign(0)){
           var
            fmt_result =
               /*<<camlinternalFormat.ml:2435:8>>*/ [0,
               [23, [11, counter$0], fmt_rest$14]];
           break a;
          }
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2437:8>>*/ [0,
              [21, counter$0, fmt_rest$14]];
          break a;
         case 83:
          var
           pad$6 =
              /*<<camlinternalFormat.ml:2410:32>>*/  /*<<camlinternalFormat.ml:2410:16>>*/ check_no_0
              (symb,  /*<<camlinternalFormat.ml:2410:32>>*/ get_padprec(0)),
           fmt_rest$15 =
              /*<<camlinternalFormat.ml:2411:29>>*/ parse(str_ind, end_ind)[1];
           /*<<camlinternalFormat.ml:2412:9>>*/ if(get_ign(0)){
           var
            ignored$6 =
               /*<<camlinternalFormat.ml:2413:42>>*/ [1, get_padprec_opt(95)],
            fmt_result =
               /*<<camlinternalFormat.ml:2414:8>>*/ [0,
               [23, ignored$6, fmt_rest$15]];
           break a;
          }
          var
           match$5 =
              /*<<camlinternalFormat.ml:2417:10>>*/ make_padding_fmt_ebb
              (pad$6, fmt_rest$15),
           fmt_rest$16 =  /*<<camlinternalFormat.ml:2417:43>>*/ match$5[2],
           pad$7 = match$5[1],
           fmt_result =
              /*<<camlinternalFormat.ml:2418:8>>*/ [0,
              [3, pad$7, fmt_rest$16]];
          break a;
         case 91:
          var
           match$7 =
              /*<<camlinternalFormat.ml:2541:31>>*/ parse_char_set
              (str_ind, end_ind),
           char_set =  /*<<camlinternalFormat.ml:2541:61>>*/ match$7[2],
           next_ind = match$7[1],
           fmt_rest$19 =
              /*<<camlinternalFormat.ml:2542:29>>*/ parse(next_ind, end_ind)
              [1];
           /*<<camlinternalFormat.ml:2543:9>>*/ if(get_ign(0)){
           var
            ignored$8 =
               /*<<camlinternalFormat.ml:2544:45>>*/ [10,
               get_pad_opt(95),
               char_set],
            fmt_result =
               /*<<camlinternalFormat.ml:2545:8>>*/ [0,
               [23, ignored$8, fmt_rest$19]];
           break a;
          }
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2547:47>>*/ [0,
              [20,
                /*<<camlinternalFormat.ml:2547:32>>*/ get_pad_opt(91),
               char_set,
               fmt_rest$19]];
          break a;
         case 97:
          var
           fmt_rest$20 =
              /*<<camlinternalFormat.ml:2505:29>>*/ parse(str_ind, end_ind)[1],
           fmt_result =
              /*<<camlinternalFormat.ml:2506:6>>*/ [0, [15, fmt_rest$20]];
          break a;
         case 99:
          var
           char_format =
              /*<<camlinternalFormat.ml:2376:6>>*/ function(fmt_rest){
               /*<<camlinternalFormat.ml:2377:11>>*/ return get_ign(0)
                      ? [0, [23, 0, fmt_rest]]
                      : [0, [0, fmt_rest]] /*<<camlinternalFormat.ml:2379:36>>*/ ;
             },
           fmt_rest$21 =
              /*<<camlinternalFormat.ml:2386:29>>*/ parse(str_ind, end_ind)[1],
           match$8 =  /*<<camlinternalFormat.ml:2387:18>>*/ get_pad_opt(99);
           /*<<camlinternalFormat.ml:2387:33>>*/ if(! match$8){
           var
            fmt_result =
               /*<<camlinternalFormat.ml:2388:38>>*/  /*<<camlinternalFormat.ml:2388:18>>*/ char_format
               (fmt_rest$21);
           break a;
          }
          var n =  /*<<camlinternalFormat.ml:2387:33>>*/ match$8[1];
          if(0 === n){
            /*<<camlinternalFormat.ml:2382:11>>*/ if(get_ign(0)){
            var
             fmt_result =
                /*<<camlinternalFormat.ml:2383:13>>*/ [0,
                [23, 3, fmt_rest$21]];
            break a;
           }
           var
            fmt_result =
               /*<<camlinternalFormat.ml:2384:13>>*/ [0, [22, fmt_rest$21]];
           break a;
          }
           /*<<camlinternalFormat.ml:2391:11>>*/ if(legacy_behavior$0){
           var
            fmt_result =
               /*<<camlinternalFormat.ml:2393:67>>*/  /*<<camlinternalFormat.ml:2393:47>>*/ char_format
               (fmt_rest$21);
           break a;
          }
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2392:50>>*/  /*<<camlinternalFormat.ml:2098:4>>*/ invalid_format_message
              (str_ind, "non-zero widths are unsupported for %c conversions");
          break a;
         case 114:
          var
           fmt_rest$22 =
              /*<<camlinternalFormat.ml:2511:29>>*/ parse(str_ind, end_ind)[1];
           /*<<camlinternalFormat.ml:2512:9>>*/ if(get_ign(0)){
           var
            fmt_result =
               /*<<camlinternalFormat.ml:2512:25>>*/ [0, [23, 2, fmt_rest$22]];
           break a;
          }
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2513:11>>*/ [0, [19, fmt_rest$22]];
          break a;
         case 115:
          var
           pad$9 =
              /*<<camlinternalFormat.ml:2400:32>>*/  /*<<camlinternalFormat.ml:2400:16>>*/ check_no_0
              (symb,  /*<<camlinternalFormat.ml:2400:32>>*/ get_padprec(0)),
           fmt_rest$23 =
              /*<<camlinternalFormat.ml:2401:29>>*/ parse(str_ind, end_ind)[1];
           /*<<camlinternalFormat.ml:2402:9>>*/ if(get_ign(0)){
           var
            ignored$9 =
               /*<<camlinternalFormat.ml:2403:37>>*/ [0, get_padprec_opt(95)],
            fmt_result =
               /*<<camlinternalFormat.ml:2404:8>>*/ [0,
               [23, ignored$9, fmt_rest$23]];
           break a;
          }
          var
           match$9 =
              /*<<camlinternalFormat.ml:2407:10>>*/ make_padding_fmt_ebb
              (pad$9, fmt_rest$23),
           fmt_rest$24 =  /*<<camlinternalFormat.ml:2407:43>>*/ match$9[2],
           pad$10 = match$9[1],
           fmt_result =
              /*<<camlinternalFormat.ml:2408:8>>*/ [0,
              [2, pad$10, fmt_rest$24]];
          break a;
         case 116:
          var
           fmt_rest$25 =
              /*<<camlinternalFormat.ml:2508:29>>*/ parse(str_ind, end_ind)[1],
           fmt_result =
              /*<<camlinternalFormat.ml:2509:6>>*/ [0, [16, fmt_rest$25]];
          break a;
         case 123:
          var
           sub_end$0 =
              /*<<camlinternalFormat.ml:2521:20>>*/ search_subformat_end
              (str_ind, end_ind, 125),
           sub_fmt$0 =
              /*<<camlinternalFormat.ml:2522:28>>*/ parse(str_ind, sub_end$0)
              [1],
           fmt_rest$26 =
              /*<<camlinternalFormat.ml:2523:29>>*/ parse
               (sub_end$0 + 2 | 0, end_ind)
              [1],
           sub_fmtty$0 =
              /*<<camlinternalFormat.ml:2524:22>>*/ fmtty_of_fmt(sub_fmt$0);
           /*<<camlinternalFormat.ml:2525:9>>*/ if(get_ign(0)){
           var
            ignored$10 =
               /*<<camlinternalFormat.ml:2526:42>>*/ [8,
               get_pad_opt(95),
               sub_fmtty$0],
            fmt_result =
               /*<<camlinternalFormat.ml:2527:8>>*/ [0,
               [23, ignored$10, fmt_rest$26]];
           break a;
          }
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2529:44>>*/ [0,
              [13,
                /*<<camlinternalFormat.ml:2529:29>>*/ get_pad_opt(123),
               sub_fmtty$0,
               fmt_rest$26]];
          break a;
         case 66:
         case 98:
          var
           pad$3 =
              /*<<camlinternalFormat.ml:2495:32>>*/  /*<<camlinternalFormat.ml:2495:16>>*/ check_no_0
              (symb,  /*<<camlinternalFormat.ml:2495:32>>*/ get_padprec(0)),
           fmt_rest$8 =
              /*<<camlinternalFormat.ml:2496:29>>*/ parse(str_ind, end_ind)[1];
           /*<<camlinternalFormat.ml:2497:9>>*/ if(get_ign(0)){
           var
            ignored$3 =
               /*<<camlinternalFormat.ml:2498:35>>*/ [7, get_padprec_opt(95)],
            fmt_result =
               /*<<camlinternalFormat.ml:2499:8>>*/ [0,
               [23, ignored$3, fmt_rest$8]];
           break a;
          }
          var
           match$3 =
              /*<<camlinternalFormat.ml:2502:10>>*/ make_padding_fmt_ebb
              (pad$3, fmt_rest$8),
           fmt_rest$9 =  /*<<camlinternalFormat.ml:2502:43>>*/ match$3[2],
           pad$4 = match$3[1],
           fmt_result =
              /*<<camlinternalFormat.ml:2503:8>>*/ [0, [9, pad$4, fmt_rest$9]];
          break a;
         case 37:
         case 64:
          var
           fmt_rest$6 =
              /*<<camlinternalFormat.ml:2518:29>>*/ parse(str_ind, end_ind)[1],
           fmt_result =
              /*<<camlinternalFormat.ml:2519:6>>*/ [0, [12, symb, fmt_rest$6]];
          break a;
         case 76:
         case 108:
         case 110:
           /*<<camlinternalFormat.ml:2438:27>>*/ if(str_ind !== end_ind){
           var
            symb$0 =
               /*<<camlinternalFormat.ml:2438:63>>*/ caml_string_get
               (str, str_ind),
            _ao_ =  /*<<camlinternalFormat.ml:2892:25>>*/ symb$0 - 88 | 0;
           b:
           {
            if(32 >= _ao_ >>> 0)
             switch(_ao_){
               case 0:
               case 12:
               case 17:
               case 23:
               case 29:
               case 32:
                var _an_ =  /*<<camlinternalFormat.ml:2893:43>>*/ 1; break b;
             }
            var _an_ =  /*<<camlinternalFormat.ml:2894:11>>*/ 0;
           }
            /*<<camlinternalFormat.ml:2438:77>>*/ if(_an_) break;
          }
          var
           fmt_rest$13 =
              /*<<camlinternalFormat.ml:2439:29>>*/ parse(str_ind, end_ind)[1];
          b:
          {
            /*<<camlinternalFormat.ml:2897:29>>*/ if(108 <= symb){
            if(111 > symb)
             switch(symb - 108 | 0){
               case 0:
                var counter =  /*<<camlinternalFormat.ml:2898:13>>*/ 0;
                break b;
               case 2:
                var counter =  /*<<camlinternalFormat.ml:2898:36>>*/ 1;
                break b;
             }
           }
           else if(76 === symb){
            var counter =  /*<<camlinternalFormat.ml:2899:13>>*/ 2;
            break b;
           }
            /*<<camlinternalFormat.ml:2899:34>>*/ throw caml_maybe_attach_backtrace
                  ([0, Assert_failure, _V_], 1);
          }
           /*<<camlinternalFormat.ml:2441:9>>*/ if(get_ign(0)){
           var
            ignored$5 =  /*<<camlinternalFormat.ml:2442:8>>*/ [11, counter],
            fmt_result =
               /*<<camlinternalFormat.ml:2443:8>>*/ [0,
               [23, ignored$5, fmt_rest$13]];
           break a;
          }
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2445:8>>*/ [0,
              [21, counter, fmt_rest$13]];
          break a;
         case 32:
         case 35:
         case 43:
         case 45:
         case 95:
          var
           fmt_result =
              /*<<camlinternalFormat.ml:2552:24>>*/  /*<<camlinternalFormat.ml:2549:6>>*/ caml_call3
              (failwith_message(_M_), str, pct_ind, symb);
          break a;
         case 88:
         case 100:
         case 105:
         case 111:
         case 117:
         case 120:
          var
           _aF_ =  /*<<camlinternalFormat.ml:2421:8>>*/ get_space(0),
           _aG_ =  /*<<camlinternalFormat.ml:2420:65>>*/ get_hash(0),
           iconv$2 =
              /*<<camlinternalFormat.ml:2420:51>>*/  /*<<camlinternalFormat.ml:2420:18>>*/ compute_int_conv
              (pct_ind,
               str_ind,
                /*<<camlinternalFormat.ml:2420:51>>*/ get_plus(0),
               _aG_,
               _aF_,
               symb),
           fmt_rest$17 =
              /*<<camlinternalFormat.ml:2422:29>>*/ parse(str_ind, end_ind)[1];
           /*<<camlinternalFormat.ml:2423:9>>*/ if(get_ign(0)){
           var
            ignored$7 =
               /*<<camlinternalFormat.ml:2424:42>>*/ [2,
               iconv$2,
               get_pad_opt(95)],
            fmt_result =
               /*<<camlinternalFormat.ml:2425:8>>*/ [0,
               [23, ignored$7, fmt_rest$17]];
           break a;
          }
          var
           _aH_ =  /*<<camlinternalFormat.ml:2428:48>>*/ get_prec(0),
           match$6 =
              /*<<camlinternalFormat.ml:2428:31>>*/  /*<<camlinternalFormat.ml:2428:10>>*/ make_padprec_fmt_ebb
              ( /*<<camlinternalFormat.ml:2428:31>>*/ get_int_pad(0),
               _aH_,
               fmt_rest$17),
           fmt_rest$18 =  /*<<camlinternalFormat.ml:2428:70>>*/ match$6[3],
           prec$4 = match$6[2],
           pad$8 = match$6[1],
           fmt_result =
              /*<<camlinternalFormat.ml:2429:8>>*/ [0,
              [4, iconv$2, pad$8, prec$4, fmt_rest$18]];
          break a;
         case 69:
         case 70:
         case 71:
         case 72:
         case 101:
         case 102:
         case 103:
         case 104:
          var
           space$1 =  /*<<camlinternalFormat.ml:2485:38>>*/ get_space(0),
           hash$1 =  /*<<camlinternalFormat.ml:2485:24>>*/ get_hash(0),
           plus$2 =  /*<<camlinternalFormat.ml:2485:10>>*/ get_plus(0),
           flag =
              /*<<camlinternalFormat.ml:2939:4>>*/ plus$2
              ? space$1
                ? legacy_behavior$0
                  ? 1
                  :  /*<<camlinternalFormat.ml:2946:11>>*/ incompatible_flag
                    (pct_ind, str_ind, 32, cst)
                : 1
              : space$1 ? 2 : 0;
          b:
          {
            /*<<camlinternalFormat.ml:2947:4>>*/ if(73 <= symb){
            var switcher = symb - 101 | 0;
            if(3 >= switcher >>> 0)
             switch(switcher){
               case 0:
                var kind =  /*<<camlinternalFormat.ml:2949:16>>*/ 1; break b;
               case 1:
                var kind =  /*<<camlinternalFormat.ml:2948:16>>*/ 0; break b;
               case 2:
                var kind =  /*<<camlinternalFormat.ml:2951:16>>*/ 3; break b;
               default:
                var kind =  /*<<camlinternalFormat.ml:2953:16>>*/ 6; break b;
             }
           }
           else if(69 <= symb)
             /*<<camlinternalFormat.ml:2947:4>>*/ switch(symb - 69 | 0){
              case 0:
               var kind =  /*<<camlinternalFormat.ml:2950:16>>*/ 2; break b;
              case 2:
               var kind =  /*<<camlinternalFormat.ml:2952:16>>*/ 4; break b;
              case 3:
               var kind =  /*<<camlinternalFormat.ml:2954:16>>*/ 7; break b;
            }
            /*<<camlinternalFormat.ml:2947:4>>*/ if(hash$1){
            if(70 === symb){
             var kind =  /*<<camlinternalFormat.ml:2956:19>>*/ 8;
             break b;
            }
           }
           else if(70 === symb){
            var kind =  /*<<camlinternalFormat.ml:2955:20>>*/ 5;
            break b;
           }
            /*<<camlinternalFormat.ml:2957:11>>*/ throw caml_maybe_attach_backtrace
                  ([0, Assert_failure, _X_], 1);
          }
          var
           fconv =  /*<<camlinternalFormat.ml:2958:4>>*/ [0, flag, kind],
           fmt_rest$11 =
              /*<<camlinternalFormat.ml:2486:29>>*/ parse(str_ind, end_ind)[1];
           /*<<camlinternalFormat.ml:2487:9>>*/ if(! get_ign(0)){
           var
            _aE_ =  /*<<camlinternalFormat.ml:2492:44>>*/ get_prec(0),
            match$4 =
               /*<<camlinternalFormat.ml:2492:31>>*/  /*<<camlinternalFormat.ml:2492:10>>*/ make_padprec_fmt_ebb
               ( /*<<camlinternalFormat.ml:2492:31>>*/ get_pad(0),
                _aE_,
                fmt_rest$11),
            fmt_rest$12 =  /*<<camlinternalFormat.ml:2492:66>>*/ match$4[3],
            prec$3 = match$4[2],
            pad$5 = match$4[1],
            fmt_result =
               /*<<camlinternalFormat.ml:2493:8>>*/ [0,
               [8, fconv, pad$5, prec$3, fmt_rest$12]];
           break a;
          }
          var match =  /*<<camlinternalFormat.ml:2366:32>>*/ get_prec(0);
           /*<<camlinternalFormat.ml:2366:43>>*/ if(typeof match === "number")
           var
            _am_ =
              match
               ?  /*<<camlinternalFormat.ml:2369:30>>*/ incompatible_flag
                 (pct_ind, str_ind, 95, cst$2)
               : 0;
          else
           var
            ndec =  /*<<camlinternalFormat.ml:2366:43>>*/ match[1],
            _am_ =  /*<<camlinternalFormat.ml:2368:30>>*/ [0, ndec];
          var
           ignored$4 =
              /*<<camlinternalFormat.ml:2488:37>>*/ [6, get_pad_opt(95), _am_],
           fmt_result =
              /*<<camlinternalFormat.ml:2489:8>>*/ [0,
              [23, ignored$4, fmt_rest$11]];
          break a;
       }
       /*<<camlinternalFormat.ml:2372:4>>*/ if(108 <= symb){
       if(111 > symb)
        switch(symb - 108 | 0){
          case 0:
           var
            _as_ =
               /*<<camlinternalFormat.ml:2449:25>>*/ caml_string_get
               (str, str_ind),
            _at_ =  /*<<camlinternalFormat.ml:2449:10>>*/ get_space(0),
            _au_ =  /*<<camlinternalFormat.ml:2448:61>>*/ get_hash(0),
            iconv =
               /*<<camlinternalFormat.ml:2448:47>>*/  /*<<camlinternalFormat.ml:2448:8>>*/ compute_int_conv
               (pct_ind,
                str_ind + 1 | 0,
                 /*<<camlinternalFormat.ml:2448:47>>*/ get_plus(0),
                _au_,
                _at_,
                _as_),
            fmt_rest =
               /*<<camlinternalFormat.ml:2450:29>>*/ parse
                (str_ind + 1 | 0, end_ind)
               [1];
            /*<<camlinternalFormat.ml:2451:9>>*/ if(get_ign(0)){
            var
             ignored =
                /*<<camlinternalFormat.ml:2452:44>>*/ [3,
                iconv,
                get_pad_opt(95)],
             fmt_result =
                /*<<camlinternalFormat.ml:2453:8>>*/ [0,
                [23, ignored, fmt_rest]];
            break a;
           }
           var
            _av_ =  /*<<camlinternalFormat.ml:2456:48>>*/ get_prec(0),
            match$0 =
               /*<<camlinternalFormat.ml:2456:31>>*/  /*<<camlinternalFormat.ml:2456:10>>*/ make_padprec_fmt_ebb
               ( /*<<camlinternalFormat.ml:2456:31>>*/ get_int_pad(0),
                _av_,
                fmt_rest),
            fmt_rest$0 =  /*<<camlinternalFormat.ml:2456:70>>*/ match$0[3],
            prec$0 = match$0[2],
            pad$0 = match$0[1],
            fmt_result =
               /*<<camlinternalFormat.ml:2457:8>>*/ [0,
               [5, iconv, pad$0, prec$0, fmt_rest$0]];
           break a;
          case 2:
           var
            _aw_ =
               /*<<camlinternalFormat.ml:2461:39>>*/ caml_string_get
               (str, str_ind),
            _ax_ =  /*<<camlinternalFormat.ml:2461:24>>*/ get_space(0),
            _ay_ =  /*<<camlinternalFormat.ml:2461:10>>*/ get_hash(0),
            iconv$0 =
               /*<<camlinternalFormat.ml:2460:47>>*/  /*<<camlinternalFormat.ml:2460:8>>*/ compute_int_conv
               (pct_ind,
                str_ind + 1 | 0,
                 /*<<camlinternalFormat.ml:2460:47>>*/ get_plus(0),
                _ay_,
                _ax_,
                _aw_),
            fmt_rest$1 =
               /*<<camlinternalFormat.ml:2462:29>>*/ parse
                (str_ind + 1 | 0, end_ind)
               [1];
            /*<<camlinternalFormat.ml:2463:9>>*/ if(get_ign(0)){
            var
             ignored$0 =
                /*<<camlinternalFormat.ml:2464:48>>*/ [4,
                iconv$0,
                get_pad_opt(95)],
             fmt_result =
                /*<<camlinternalFormat.ml:2465:8>>*/ [0,
                [23, ignored$0, fmt_rest$1]];
            break a;
           }
           var
            _az_ =  /*<<camlinternalFormat.ml:2468:48>>*/ get_prec(0),
            match$1 =
               /*<<camlinternalFormat.ml:2468:31>>*/  /*<<camlinternalFormat.ml:2468:10>>*/ make_padprec_fmt_ebb
               ( /*<<camlinternalFormat.ml:2468:31>>*/ get_int_pad(0),
                _az_,
                fmt_rest$1),
            fmt_rest$2 =  /*<<camlinternalFormat.ml:2468:70>>*/ match$1[3],
            prec$1 = match$1[2],
            pad$1 = match$1[1],
            fmt_result =
               /*<<camlinternalFormat.ml:2469:8>>*/ [0,
               [6, iconv$0, pad$1, prec$1, fmt_rest$2]];
           break a;
        }
      }
      else if(76 === symb){
       var
        _aA_ =
           /*<<camlinternalFormat.ml:2473:25>>*/ caml_string_get(str, str_ind),
        _aB_ =  /*<<camlinternalFormat.ml:2473:10>>*/ get_space(0),
        _aC_ =  /*<<camlinternalFormat.ml:2472:61>>*/ get_hash(0),
        iconv$1 =
           /*<<camlinternalFormat.ml:2472:47>>*/  /*<<camlinternalFormat.ml:2472:8>>*/ compute_int_conv
           (pct_ind,
            str_ind + 1 | 0,
             /*<<camlinternalFormat.ml:2472:47>>*/ get_plus(0),
            _aC_,
            _aB_,
            _aA_),
        fmt_rest$3 =
           /*<<camlinternalFormat.ml:2474:29>>*/ parse
            (str_ind + 1 | 0, end_ind)
           [1];
        /*<<camlinternalFormat.ml:2475:9>>*/ if(get_ign(0)){
        var
         ignored$1 =
            /*<<camlinternalFormat.ml:2476:44>>*/ [5,
            iconv$1,
            get_pad_opt(95)],
         fmt_result =
            /*<<camlinternalFormat.ml:2477:8>>*/ [0,
            [23, ignored$1, fmt_rest$3]];
        break a;
       }
       var
        _aD_ =  /*<<camlinternalFormat.ml:2480:48>>*/ get_prec(0),
        match$2 =
           /*<<camlinternalFormat.ml:2480:31>>*/  /*<<camlinternalFormat.ml:2480:10>>*/ make_padprec_fmt_ebb
           ( /*<<camlinternalFormat.ml:2480:31>>*/ get_int_pad(0),
            _aD_,
            fmt_rest$3),
        fmt_rest$4 =  /*<<camlinternalFormat.ml:2480:70>>*/ match$2[3],
        prec$2 = match$2[2],
        pad$2 = match$2[1],
        fmt_result =
           /*<<camlinternalFormat.ml:2481:8>>*/ [0,
           [7, iconv$1, pad$2, prec$2, fmt_rest$4]];
       break a;
      }
      var
       fmt_result =
          /*<<camlinternalFormat.ml:2556:60>>*/  /*<<camlinternalFormat.ml:2554:6>>*/ caml_call3
          (failwith_message(_J_), str, str_ind - 1 | 0, symb);
     }
      /*<<camlinternalFormat.ml:2562:4>>*/ if(1 - legacy_behavior$0){
      var
       _ag_ =  /*<<camlinternalFormat.ml:2562:32>>*/ 1 - plus_used[1],
       plus$0 = _ag_ ? plus : _ag_;
      if(plus$0)
        /*<<camlinternalFormat.ml:2564:6>>*/ incompatible_flag
        (pct_ind, str_ind, symb, cst);
      var
       _ah_ =  /*<<camlinternalFormat.ml:2565:4>>*/ 1 - hash_used[1],
       hash$0 = _ah_ ? hash : _ah_;
      if(hash$0)
        /*<<camlinternalFormat.ml:2566:6>>*/ incompatible_flag
        (pct_ind, str_ind, symb, cst$0);
      var
       _ai_ =  /*<<camlinternalFormat.ml:2567:4>>*/ 1 - space_used[1],
       space$0 = _ai_ ? space : _ai_;
      if(space$0)
        /*<<camlinternalFormat.ml:2568:6>>*/ incompatible_flag
        (pct_ind, str_ind, symb, cst$1);
      var
       _aj_ =  /*<<camlinternalFormat.ml:2569:4>>*/ 1 - pad_used[1],
       _ap_ =
         _aj_
          ?  /*<<camlinternalFormat.ml:2569:25>>*/ caml_notequal
            ([0, pad], _K_)
          : _aj_;
       /*<<camlinternalFormat.ml:2569:4>>*/ if(_ap_)
        /*<<camlinternalFormat.ml:2570:6>>*/ incompatible_flag
        (pct_ind, str_ind, symb, "`padding'");
      var
       _ak_ =  /*<<camlinternalFormat.ml:2571:4>>*/ 1 - prec_used[1],
       _aq_ =
         _ak_
          ?  /*<<camlinternalFormat.ml:2571:25>>*/ caml_notequal
            ([0, prec], _L_)
          : _ak_;
       /*<<camlinternalFormat.ml:2571:4>>*/ if(_aq_){
       var _ar_ =  /*<<camlinternalFormat.ml:2572:6>>*/ ign ? 95 : symb;
       incompatible_flag(pct_ind, str_ind, _ar_, "`precision'");
      }
      var plus$1 =  /*<<camlinternalFormat.ml:2574:4>>*/ ign ? plus : ign;
      if(plus$1)
        /*<<camlinternalFormat.ml:2574:24>>*/ incompatible_flag
        (pct_ind, str_ind, 95, cst);
     }
     var
      _al_ =  /*<<camlinternalFormat.ml:2579:4>>*/ 1 - ign_used[1],
      ign$0 = _al_ ? ign : _al_;
     a:
     if(ign$0){
      b:
      {
        /*<<camlinternalFormat.ml:2580:6>>*/ if(38 <= symb){
        if(44 !== symb && 64 !== symb) break b;
       }
       else if(33 !== symb && 37 > symb) break b;
        /*<<camlinternalFormat.ml:2582:39>>*/ if(legacy_behavior$0) break a;
      }
       /*<<camlinternalFormat.ml:2584:10>>*/ incompatible_flag
       (pct_ind, str_ind, symb, "'_'");
     }
      /*<<camlinternalFormat.ml:2586:4>>*/ return fmt_result;
    }
    function parse_after_at(str_ind, end_ind){
      /*<<camlinternalFormat.ml:2591:4>>*/ if(str_ind === end_ind)
       /*<<camlinternalFormat.ml:2591:30>>*/ return _N_;
     var
      c =  /*<<camlinternalFormat.ml:2593:12>>*/ caml_string_get(str, str_ind);
      /*<<camlinternalFormat.ml:2593:25>>*/ if(65 <= c){
      if(94 <= c){
       var switcher = c - 123 | 0;
       if(2 >= switcher >>> 0)
        switch(switcher){
          case 0:
            /*<<camlinternalFormat.ml:2600:8>>*/ return parse_tag
                   (1, str_ind + 1 | 0, end_ind) /*<<camlinternalFormat.ml:2634:57>>*/ ;
          case 2:
           var
            fmt_rest$0 =
               /*<<camlinternalFormat.ml:2602:31>>*/ parse
                (str_ind + 1 | 0, end_ind)
               [1];
            /*<<camlinternalFormat.ml:2603:8>>*/ return [0,
                   [17, 1, fmt_rest$0]];
        }
      }
      else if(91 <= c)
        /*<<camlinternalFormat.ml:2593:25>>*/ switch(c - 91 | 0){
         case 0:
           /*<<camlinternalFormat.ml:2595:8>>*/ return parse_tag
                  (0, str_ind + 1 | 0, end_ind) /*<<camlinternalFormat.ml:2634:57>>*/ ;
         case 2:
          var
           fmt_rest$1 =
              /*<<camlinternalFormat.ml:2597:31>>*/ parse
               (str_ind + 1 | 0, end_ind)
              [1];
           /*<<camlinternalFormat.ml:2598:8>>*/ return [0,
                  [17, 0, fmt_rest$1]];
       }
     }
     else{
       /*<<camlinternalFormat.ml:2593:25>>*/ if(10 === c){
       var
        fmt_rest$2 =
           /*<<camlinternalFormat.ml:2616:31>>*/ parse
            (str_ind + 1 | 0, end_ind)
           [1];
        /*<<camlinternalFormat.ml:2617:8>>*/ return [0, [17, 3, fmt_rest$2]];
      }
       /*<<camlinternalFormat.ml:2593:25>>*/ if(32 <= c)
       switch(c - 32 | 0){
         case 0:
          var
           fmt_rest$3 =
              /*<<camlinternalFormat.ml:2608:31>>*/ parse
               (str_ind + 1 | 0, end_ind)
              [1];
           /*<<camlinternalFormat.ml:2609:8>>*/ return [0,
                  [17, _O_, fmt_rest$3]];
         case 5:
           /*<<camlinternalFormat.ml:2626:17>>*/ if
           ((str_ind + 1 | 0) < end_ind
            &&
             37
             ===
               /*<<camlinternalFormat.ml:2626:42>>*/ caml_string_get
               (str, str_ind + 1 | 0)){
           var
            fmt_rest$4 =
               /*<<camlinternalFormat.ml:2627:31>>*/ parse
                (str_ind + 2 | 0, end_ind)
               [1];
            /*<<camlinternalFormat.ml:2628:8>>*/ return [0,
                   [17, 6, fmt_rest$4]];
          }
          var
           fmt_rest$5 =
              /*<<camlinternalFormat.ml:2630:31>>*/ parse(str_ind, end_ind)[1];
           /*<<camlinternalFormat.ml:2631:8>>*/ return [0,
                  [12, 64, fmt_rest$5]];
         case 12:
          var
           fmt_rest$6 =
              /*<<camlinternalFormat.ml:2605:31>>*/ parse
               (str_ind + 1 | 0, end_ind)
              [1];
           /*<<camlinternalFormat.ml:2606:8>>*/ return [0,
                  [17, _P_, fmt_rest$6]];
         case 14:
          var
           fmt_rest$7 =
              /*<<camlinternalFormat.ml:2619:31>>*/ parse
               (str_ind + 1 | 0, end_ind)
              [1];
           /*<<camlinternalFormat.ml:2620:8>>*/ return [0,
                  [17, 4, fmt_rest$7]];
         case 27:
          var
           str_ind$0 =  /*<<camlinternalFormat.ml:2611:8>>*/ str_ind + 1 | 0;
          a:
          try{
           var
            _ad_ = str_ind$0 === end_ind,
            _ae_ =
              _ad_
              ||
               60
               !==
                 /*<<camlinternalFormat.ml:2666:32>>*/ caml_string_get
                 (str, str_ind$0);
           if(_ae_)
             /*<<camlinternalFormat.ml:2666:58>>*/ throw caml_maybe_attach_backtrace
                   (Stdlib[8], 1);
           var
            str_ind_1 =
               /*<<camlinternalFormat.ml:2667:24>>*/ parse_spaces
               (str_ind$0 + 1 | 0, end_ind),
            match =
               /*<<camlinternalFormat.ml:2668:14>>*/ caml_string_get
               (str, str_ind_1);
           b:
           {
             /*<<camlinternalFormat.ml:2668:29>>*/ if(48 <= match){
             if(58 <= match) break b;
            }
            else if(45 !== match) break b;
            var
             match$0 =
                /*<<camlinternalFormat.ml:2670:33>>*/ parse_integer
                (str_ind_1, end_ind),
             width =  /*<<camlinternalFormat.ml:2670:64>>*/ match$0[2],
             str_ind_2 = match$0[1],
             str_ind_3 =
                /*<<camlinternalFormat.ml:2671:28>>*/ parse_spaces
                (str_ind_2, end_ind),
             switcher$0 =
                /*<<camlinternalFormat.ml:2672:18>>*/ caml_string_get
                (str, str_ind_3)
               - 45
               | 0;
             /*<<camlinternalFormat.ml:2672:33>>*/ if(12 < switcher$0 >>> 0){
             if(17 === switcher$0){
              var
               s =
                  /*<<camlinternalFormat.ml:2674:24>>*/ Stdlib_String[16].call
                  (null,
                   str,
                   str_ind$0 - 2 | 0,
                   (str_ind_3 - str_ind$0 | 0) + 3 | 0),
               _af_ =  /*<<camlinternalFormat.ml:2675:16>>*/ str_ind_3 + 1 | 0,
               formatting_lit$0 = [0, s, width, 0],
               next_ind = _af_;
              break a;
             }
            }
            else if(1 < switcher$0 - 1 >>> 0){
             var
              match$1 =
                 /*<<camlinternalFormat.ml:2677:40>>*/ parse_integer
                 (str_ind_3, end_ind),
              offset =  /*<<camlinternalFormat.ml:2677:71>>*/ match$1[2],
              str_ind_4 = match$1[1],
              str_ind_5 =
                 /*<<camlinternalFormat.ml:2678:32>>*/ parse_spaces
                 (str_ind_4, end_ind);
              /*<<camlinternalFormat.ml:2679:19>>*/ if
              (62 !== caml_string_get(str, str_ind_5))
               /*<<camlinternalFormat.ml:2679:47>>*/ throw caml_maybe_attach_backtrace
                     (Stdlib[8], 1);
             var
              s$0 =
                 /*<<camlinternalFormat.ml:2680:24>>*/ Stdlib_String[16].call
                 (null,
                  str,
                  str_ind$0 - 2 | 0,
                  (str_ind_5 - str_ind$0 | 0) + 3 | 0),
              _ag_ =  /*<<camlinternalFormat.ml:2681:16>>*/ str_ind_5 + 1 | 0,
              formatting_lit$0 = [0, s$0, width, offset],
              next_ind = _ag_;
             break a;
            }
             /*<<camlinternalFormat.ml:2682:21>>*/ throw caml_maybe_attach_backtrace
                   (Stdlib[8], 1);
           }
            /*<<camlinternalFormat.ml:2684:15>>*/ throw caml_maybe_attach_backtrace
                  (Stdlib[8], 1);
          }
          catch(exn$0){
           var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
           if(exn === Stdlib[8])
            var formatting_lit$0 = formatting_lit, next_ind = str_ind$0;
           else{
            if(exn[1] !== Stdlib[7])
             throw caml_maybe_attach_backtrace(exn, 0);
            var formatting_lit$0 = formatting_lit, next_ind = str_ind$0;
           }
          }
          var
           fmt_rest$10 =
              /*<<camlinternalFormat.ml:2688:27>>*/ parse(next_ind, end_ind)
              [1];
           /*<<camlinternalFormat.ml:2689:4>>*/ return [0,
                  [17, formatting_lit$0, fmt_rest$10]];
         case 28:
          var
           str_ind$1 =  /*<<camlinternalFormat.ml:2622:8>>*/ str_ind + 1 | 0;
           /*<<camlinternalFormat.ml:2694:4>>*/ try{
           var
            str_ind_1$0 =
               /*<<camlinternalFormat.ml:2696:24>>*/ parse_spaces
               (str_ind$1, end_ind),
            match$4 =
               /*<<camlinternalFormat.ml:2697:14>>*/ caml_string_get
               (str, str_ind_1$0);
           a:
           {
            b:
            {
              /*<<camlinternalFormat.ml:2697:29>>*/ if(48 <= match$4){
              if(58 <= match$4) break b;
             }
             else if(45 !== match$4) break b;
             var
              match$5 =
                 /*<<camlinternalFormat.ml:2699:32>>*/ parse_integer
                 (str_ind_1$0, end_ind),
              size =  /*<<camlinternalFormat.ml:2699:63>>*/ match$5[2],
              str_ind_2$0 = match$5[1],
              str_ind_3$0 =
                 /*<<camlinternalFormat.ml:2700:26>>*/ parse_spaces
                 (str_ind_2$0, end_ind);
              /*<<camlinternalFormat.ml:2701:13>>*/ if
              (62 !== caml_string_get(str, str_ind_3$0))
               /*<<camlinternalFormat.ml:2701:41>>*/ throw caml_maybe_attach_backtrace
                     (Stdlib[8], 1);
             var
              s$1 =
                 /*<<camlinternalFormat.ml:2702:18>>*/ Stdlib_String[16].call
                 (null,
                  str,
                  str_ind$1 - 2 | 0,
                  (str_ind_3$0 - str_ind$1 | 0) + 3 | 0),
              _ac_ =
                 /*<<camlinternalFormat.ml:2703:10>>*/ [0,
                 [0, str_ind_3$0 + 1 | 0, [1, s$1, size]]];
             break a;
            }
            var _ac_ =  /*<<camlinternalFormat.ml:2704:15>>*/ 0;
           }
           var match$2 = _ac_;
          }
          catch(exn){
           var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
           if(exn$0 !== Stdlib[8] && exn$0[1] !== Stdlib[7])
            throw caml_maybe_attach_backtrace(exn$0, 0);
           var match$2 =  /*<<camlinternalFormat.ml:2706:8>>*/ 0;
          }
           /*<<camlinternalFormat.ml:2694:4>>*/ if(match$2){
           var
            match$3 = match$2[1],
            formatting_lit$1 = match$3[2],
            next_ind$0 = match$3[1],
            fmt_rest$11 =
               /*<<camlinternalFormat.ml:2709:29>>*/ parse
                (next_ind$0, end_ind)
               [1];
            /*<<camlinternalFormat.ml:2710:6>>*/ return [0,
                   [17, formatting_lit$1, fmt_rest$11]];
          }
          var
           fmt_rest$12 =
              /*<<camlinternalFormat.ml:2712:29>>*/ parse(str_ind$1, end_ind)
              [1];
           /*<<camlinternalFormat.ml:2713:6>>*/ return [0,
                  [17, _Q_, fmt_rest$12]];
         case 31:
          var
           fmt_rest$8 =
              /*<<camlinternalFormat.ml:2613:31>>*/ parse
               (str_ind + 1 | 0, end_ind)
              [1];
           /*<<camlinternalFormat.ml:2614:8>>*/ return [0,
                  [17, 2, fmt_rest$8]];
         case 32:
          var
           fmt_rest$9 =
              /*<<camlinternalFormat.ml:2624:31>>*/ parse
               (str_ind + 1 | 0, end_ind)
              [1];
           /*<<camlinternalFormat.ml:2625:8>>*/ return [0,
                  [17, 5, fmt_rest$9]];
       }
     }
     var
      fmt_rest =
         /*<<camlinternalFormat.ml:2633:31>>*/ parse(str_ind + 1 | 0, end_ind)
         [1];
      /*<<camlinternalFormat.ml:2634:8>>*/ return [0, [17, [2, c], fmt_rest]];
     /*<<camlinternalFormat.ml:2634:57>>*/ }
    function parse_tag(is_open_tag, str_ind, end_ind){
      /*<<camlinternalFormat.ml:2639:4>>*/ try{
      if(str_ind === end_ind)
        /*<<camlinternalFormat.ml:2640:32>>*/ throw caml_maybe_attach_backtrace
              (Stdlib[8], 1);
       /*<<camlinternalFormat.ml:2641:12>>*/ if
       (60 !== caml_string_get(str, str_ind))
        /*<<camlinternalFormat.ml:2653:8>>*/ throw caml_maybe_attach_backtrace
              (Stdlib[8], 1);
      var
       ind =
          /*<<camlinternalFormat.ml:2643:18>>*/ Stdlib_String[32].call
          (null, str, str_ind + 1 | 0, 62);
       /*<<camlinternalFormat.ml:2644:8>>*/ if(end_ind <= ind)
        /*<<camlinternalFormat.ml:2644:31>>*/ throw caml_maybe_attach_backtrace
              (Stdlib[8], 1);
      var
       sub_str =
          /*<<camlinternalFormat.ml:2645:22>>*/ Stdlib_String[16].call
          (null, str, str_ind, (ind - str_ind | 0) + 1 | 0),
       fmt_rest$0 =
          /*<<camlinternalFormat.ml:2646:31>>*/ parse(ind + 1 | 0, end_ind)[1],
       sub_fmt =
          /*<<camlinternalFormat.ml:2647:30>>*/ parse(str_ind, ind + 1 | 0)[1],
       sub_format$0 =
          /*<<camlinternalFormat.ml:2648:8>>*/ [0, sub_fmt, sub_str],
       formatting$0 =
          /*<<camlinternalFormat.ml:2649:8>>*/ is_open_tag
          ? [0, sub_format$0]
          : [1, sub_format$0];
      return [0, [18, formatting$0, fmt_rest$0]];
     }
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
      var
       fmt_rest =
          /*<<camlinternalFormat.ml:2655:29>>*/ parse(str_ind, end_ind)[1],
       formatting =
          /*<<camlinternalFormat.ml:2657:6>>*/ is_open_tag
          ? [0, sub_format]
          : [1, sub_format];
       /*<<camlinternalFormat.ml:2659:6>>*/ return [0,
              [18, formatting, fmt_rest]];
     }
     /*<<camlinternalFormat.ml:2659:53>>*/ }
    function parse_char_set(str_ind, end_ind){
      /*<<camlinternalFormat.ml:2717:4>>*/ if(str_ind === end_ind)
       /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
       (end_ind, cst_unexpected_end_of_format);
     var char_set =  /*<<camlinternalFormat.ml:2719:19>>*/ create_char_set(0);
     function add_range(c$0, c){
       /*<<camlinternalFormat.ml:2724:6>>*/ if(c >= c$0){
       var i = c$0;
       for(;;){
         /*<<camlinternalFormat.ml:2725:33>>*/  /*<<camlinternalFormat.ml:2725:8>>*/ add_in_char_set
         (char_set,
           /*<<camlinternalFormat.ml:2725:33>>*/ Stdlib[29].call(null, i));
        var _ac_ =  /*<<camlinternalFormat.ml:2725:48>>*/ i + 1 | 0;
        if(c === i) break;
        i = _ac_;
       }
      }
      /*<<camlinternalFormat.ml:2726:10>>*/ }
     function fail_single_percent(str_ind){
       /*<<camlinternalFormat.ml:2730:6>>*/ return caml_call2
              (failwith_message(_R_), str, str_ind) /*<<camlinternalFormat.ml:2732:54>>*/ ;
     }
     function parse_char_set_content(counter, str_ind$1, end_ind){
      var str_ind =  /*<<camlinternalFormat.ml:2743:6>>*/ str_ind$1;
      for(;;){
       if(str_ind === end_ind)
         /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
         (end_ind, cst_unexpected_end_of_format);
       var
        c =
           /*<<camlinternalFormat.ml:2744:12>>*/ caml_string_get(str, str_ind);
        /*<<camlinternalFormat.ml:2744:25>>*/ if(45 !== c){
        if(93 === c)
          /*<<camlinternalFormat.ml:2746:8>>*/ return str_ind + 1 | 0;
        var _ac_ =  /*<<camlinternalFormat.ml:2751:8>>*/ str_ind + 1 | 0;
        return counter < 50
                ? parse_char_set_after_char$0
                  (counter + 1 | 0, _ac_, end_ind, c)
                : caml_trampoline_return
                  (parse_char_set_after_char$0, [0, _ac_, end_ind, c]) /*<<camlinternalFormat.ml:2751:57>>*/ ;
       }
        /*<<camlinternalFormat.ml:2721:6>>*/ add_in_char_set(char_set, 45);
       var str_ind$0 =  /*<<camlinternalFormat.ml:2748:20>>*/ str_ind + 1 | 0;
       str_ind = str_ind$0;
      }
      /*<<camlinternalFormat.ml:2751:57>>*/ }
     function parse_char_set_after_char$0(counter, str_ind$2, end_ind, c$3){
      var str_ind =  /*<<camlinternalFormat.ml:2755:6>>*/ str_ind$2, c = c$3;
      for(;;){
       if(str_ind === end_ind)
         /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
         (end_ind, cst_unexpected_end_of_format);
       var
        c$0 =
           /*<<camlinternalFormat.ml:2756:12>>*/ caml_string_get(str, str_ind);
       a:
       {
         /*<<camlinternalFormat.ml:2756:25>>*/ if(46 <= c$0){
         if(64 !== c$0){
          if(93 !== c$0) break a;
           /*<<camlinternalFormat.ml:2721:6>>*/ add_in_char_set(char_set, c);
           /*<<camlinternalFormat.ml:2758:18>>*/ return str_ind + 1 | 0;
         }
        }
        else if(37 !== c$0){
          /*<<camlinternalFormat.ml:2756:25>>*/ if(45 <= c$0) break;
         break a;
        }
         /*<<camlinternalFormat.ml:2762:31>>*/ if(37 === c){
          /*<<camlinternalFormat.ml:2721:6>>*/ add_in_char_set(char_set, c$0);
         var _aa_ =  /*<<camlinternalFormat.ml:2763:19>>*/ str_ind + 1 | 0;
         return counter < 50
                 ? parse_char_set_content(counter + 1 | 0, _aa_, end_ind)
                 : caml_trampoline_return
                   (parse_char_set_content, [0, _aa_, end_ind]) /*<<camlinternalFormat.ml:2771:58>>*/ ;
        }
       }
        /*<<camlinternalFormat.ml:2766:8>>*/ if(37 === c)
         /*<<camlinternalFormat.ml:2766:24>>*/ fail_single_percent(str_ind);
        /*<<camlinternalFormat.ml:2721:6>>*/ add_in_char_set(char_set, c);
       var str_ind$0 =  /*<<camlinternalFormat.ml:2770:18>>*/ str_ind + 1 | 0;
       str_ind = str_ind$0;
       c = c$0;
      }
      var str_ind$1 =  /*<<camlinternalFormat.ml:2761:8>>*/ str_ind + 1 | 0;
       /*<<camlinternalFormat.ml:2775:6>>*/ if(str_ind$1 === end_ind)
        /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
        (end_ind, cst_unexpected_end_of_format);
      var
       c$1 =
          /*<<camlinternalFormat.ml:2776:12>>*/ caml_string_get
          (str, str_ind$1);
       /*<<camlinternalFormat.ml:2776:25>>*/ if(37 === c$1){
        /*<<camlinternalFormat.ml:2782:8>>*/ if
        ((str_ind$1 + 1 | 0) === end_ind)
         /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
         (end_ind, cst_unexpected_end_of_format);
       var
        c$2 =
           /*<<camlinternalFormat.ml:2783:20>>*/ caml_string_get
           (str, str_ind$1 + 1 | 0);
        /*<<camlinternalFormat.ml:2783:37>>*/ if(37 !== c$2 && 64 !== c$2)
         /*<<camlinternalFormat.ml:2787:17>>*/ return fail_single_percent
                (str_ind$1) /*<<camlinternalFormat.ml:2771:58>>*/ ;
        /*<<camlinternalFormat.ml:2785:12>>*/ add_range(c, c$2);
       var _ab_ =  /*<<camlinternalFormat.ml:2785:26>>*/ str_ind$1 + 2 | 0;
       return counter < 50
               ? parse_char_set_content(counter + 1 | 0, _ab_, end_ind)
               : caml_trampoline_return
                 (parse_char_set_content, [0, _ab_, end_ind]) /*<<camlinternalFormat.ml:2771:58>>*/ ;
      }
       /*<<camlinternalFormat.ml:2776:25>>*/ if(93 === c$1){
        /*<<camlinternalFormat.ml:2721:6>>*/ add_in_char_set(char_set, c);
       add_in_char_set(char_set, 45);
        /*<<camlinternalFormat.ml:2779:20>>*/ return str_ind$1 + 1 | 0;
      }
       /*<<camlinternalFormat.ml:2790:8>>*/ add_range(c, c$1);
      var _ac_ =  /*<<camlinternalFormat.ml:2790:22>>*/ str_ind$1 + 1 | 0;
      return counter < 50
              ? parse_char_set_content(counter + 1 | 0, _ac_, end_ind)
              : caml_trampoline_return
                (parse_char_set_content, [0, _ac_, end_ind]) /*<<camlinternalFormat.ml:2771:58>>*/ ;
     }
     function parse_char_set_after_char(str_ind, end_ind, c){
       /*<<camlinternalFormat.ml:2755:6>>*/ return  /*<<?>>*/ caml_trampoline
              ( /*<<camlinternalFormat.ml:2755:6>>*/ parse_char_set_after_char$0
                (0, str_ind, end_ind, c)) /*<<camlinternalFormat.ml:2771:58>>*/ ;
     }
      /*<<camlinternalFormat.ml:2793:4>>*/ if(str_ind === end_ind)
       /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
       (end_ind, cst_unexpected_end_of_format);
      /*<<camlinternalFormat.ml:2795:12>>*/ if
      (94 === caml_string_get(str, str_ind))
      var
       str_ind$0 =  /*<<camlinternalFormat.ml:2796:17>>*/ str_ind + 1 | 0,
       reverse =  /*<<camlinternalFormat.ml:2798:4>>*/ 1,
       str_ind$1 = str_ind$0;
     else
      var
       reverse =  /*<<camlinternalFormat.ml:2797:15>>*/ 0,
       str_ind$1 = str_ind;
      /*<<camlinternalFormat.ml:2737:6>>*/ if(str_ind$1 === end_ind)
       /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
       (end_ind, cst_unexpected_end_of_format);
     var
      c =
         /*<<camlinternalFormat.ml:2738:14>>*/ caml_string_get(str, str_ind$1),
      next_ind =
         /*<<camlinternalFormat.ml:2739:6>>*/ parse_char_set_after_char
         (str_ind$1 + 1 | 0, end_ind, c),
      char_set$0 =
         /*<<camlinternalFormat.ml:2799:19>>*/ freeze_char_set(char_set),
      _aa_ =
         /*<<camlinternalFormat.ml:2800:4>>*/ reverse
         ?  /*<<camlinternalFormat.ml:2800:31>>*/ rev_char_set(char_set$0)
         : char_set$0;
      /*<<camlinternalFormat.ml:2800:4>>*/ return [0, next_ind, _aa_];
     /*<<camlinternalFormat.ml:2800:67>>*/ }
    function parse_spaces(str_ind$1, end_ind){
     var str_ind =  /*<<camlinternalFormat.ml:2804:4>>*/ str_ind$1;
     for(;;){
      if(str_ind === end_ind)
        /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
        (end_ind, cst_unexpected_end_of_format);
       /*<<camlinternalFormat.ml:2805:7>>*/ if
       (32 !== caml_string_get(str, str_ind))
        /*<<camlinternalFormat.ml:2805:72>>*/ return str_ind;
      var str_ind$0 =  /*<<camlinternalFormat.ml:2805:32>>*/ str_ind + 1 | 0;
      str_ind = str_ind$0;
     }
     /*<<camlinternalFormat.ml:2805:79>>*/ }
    function parse_positive(str_ind$1, end_ind, acc$0){
     var
      str_ind =  /*<<camlinternalFormat.ml:2810:4>>*/ str_ind$1,
      acc = acc$0;
     for(;;){
      if(str_ind === end_ind)
        /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
        (end_ind, cst_unexpected_end_of_format);
      var
       c =
          /*<<camlinternalFormat.ml:2811:10>>*/ caml_string_get(str, str_ind);
       /*<<camlinternalFormat.ml:2811:23>>*/ if(9 < c - 48 >>> 0)
        /*<<camlinternalFormat.ml:2820:11>>*/ return [0, str_ind, acc];
      var
       new_acc =
          /*<<camlinternalFormat.ml:2813:6>>*/ (acc * 10 | 0) + (c - 48 | 0)
         | 0;
       /*<<camlinternalFormat.ml:2814:6>>*/ if(Stdlib_Sys[13] < new_acc){
       var _aa_ =  /*<<camlinternalFormat.ml:2815:8>>*/ Stdlib_Sys[13];
       return caml_call3(failwith_message(_S_), str, new_acc, _aa_) /*<<camlinternalFormat.ml:2820:23>>*/ ;
      }
      var str_ind$0 =  /*<<camlinternalFormat.ml:2819:8>>*/ str_ind + 1 | 0;
      str_ind = str_ind$0;
      acc = new_acc;
     }
     /*<<camlinternalFormat.ml:2820:23>>*/ }
    function parse_integer(str_ind, end_ind){
      /*<<camlinternalFormat.ml:2825:4>>*/ if(str_ind === end_ind)
       /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
       (end_ind, cst_unexpected_end_of_format);
     var
      match =
         /*<<camlinternalFormat.ml:2826:10>>*/ caml_string_get(str, str_ind);
      /*<<camlinternalFormat.ml:2826:23>>*/ if(48 <= match){
      if(58 > match)
        /*<<camlinternalFormat.ml:2827:20>>*/ return parse_positive
               (str_ind, end_ind, 0) /*<<camlinternalFormat.ml:2837:23>>*/ ;
     }
     else if(45 === match){
       /*<<camlinternalFormat.ml:2828:13>>*/ if((str_ind + 1 | 0) === end_ind)
        /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
        (end_ind, cst_unexpected_end_of_format);
      var
       c =
          /*<<camlinternalFormat.ml:2830:12>>*/ caml_string_get
          (str, str_ind + 1 | 0);
       /*<<camlinternalFormat.ml:2830:29>>*/ if(9 < c - 48 >>> 0)
        /*<<camlinternalFormat.ml:2835:8>>*/ return expected_character
               (str_ind + 1 | 0, "digit", c) /*<<camlinternalFormat.ml:2837:23>>*/ ;
      var
       match$0 =
          /*<<camlinternalFormat.ml:2832:26>>*/ parse_positive
          (str_ind + 1 | 0, end_ind, 0),
       n =  /*<<camlinternalFormat.ml:2832:64>>*/ match$0[2],
       next_ind = match$0[1];
       /*<<camlinternalFormat.ml:2833:8>>*/ return [0, next_ind, - n | 0];
     }
      /*<<camlinternalFormat.ml:2837:11>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _T_], 1);
     /*<<camlinternalFormat.ml:2837:23>>*/ }
    function add_literal(lit_start, str_ind, fmt){
     var
      size =  /*<<camlinternalFormat.ml:2843:31>>*/ str_ind - lit_start | 0;
     return 0 === size
             ? [0, fmt]
             : 1
               === size
               ? [0,
                 [12,
                   /*<<camlinternalFormat.ml:2845:37>>*/ caml_string_get
                   (str, lit_start),
                  fmt]]
               : [0,
                 [11,
                   /*<<camlinternalFormat.ml:2846:39>>*/ Stdlib_String[16].call
                   (null, str, lit_start, size),
                  fmt]] /*<<camlinternalFormat.ml:2846:75>>*/ ;
    }
    function search_subformat_end(str_ind$7, end_ind, c){
     var str_ind =  /*<<camlinternalFormat.ml:2851:4>>*/ str_ind$7;
     for(;;){
      if(str_ind === end_ind)
        /*<<camlinternalFormat.ml:2852:6>>*/ caml_call3
        (failwith_message(_U_), str, c, end_ind);
       /*<<camlinternalFormat.ml:2855:10>>*/ if
       (37 === caml_string_get(str, str_ind)){
        /*<<camlinternalFormat.ml:2857:6>>*/ if((str_ind + 1 | 0) === end_ind)
         /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
         (end_ind, cst_unexpected_end_of_format);
        /*<<camlinternalFormat.ml:2858:9>>*/ if
        (caml_string_get(str, str_ind + 1 | 0) === c)
         /*<<camlinternalFormat.ml:2858:62>>*/ return str_ind;
       var
        match =
           /*<<camlinternalFormat.ml:2859:20>>*/ caml_string_get
           (str, str_ind + 1 | 0);
        /*<<camlinternalFormat.ml:2859:37>>*/ if(95 <= match){
        if(123 <= match){
         if(126 > match)
          switch(match - 123 | 0){
            case 0:
             var
              sub_end =
                 /*<<camlinternalFormat.ml:2874:24>>*/ search_subformat_end
                 (str_ind + 2 | 0, end_ind, 125),
              str_ind$1 =
                 /*<<camlinternalFormat.ml:2875:10>>*/ sub_end + 2 | 0;
             str_ind = str_ind$1;
             continue;
            case 2:
              /*<<camlinternalFormat.ml:2882:10>>*/ return expected_character
                     (str_ind + 1 | 0, "character ')'", 125) /*<<camlinternalFormat.ml:2889:55>>*/ ;
          }
        }
        else if(96 > match){
          /*<<camlinternalFormat.ml:2862:10>>*/ if
          ((str_ind + 2 | 0) === end_ind)
           /*<<camlinternalFormat.ml:2092:4>>*/ invalid_format_message
           (end_ind, cst_unexpected_end_of_format);
         var
          match$0 =
             /*<<camlinternalFormat.ml:2863:22>>*/ caml_string_get
             (str, str_ind + 2 | 0);
          /*<<camlinternalFormat.ml:2863:39>>*/ if(40 === match$0){
          var
           sub_end$0 =
              /*<<camlinternalFormat.ml:2868:26>>*/ search_subformat_end
              (str_ind + 3 | 0, end_ind, 41),
           str_ind$2 =
              /*<<camlinternalFormat.ml:2869:12>>*/ sub_end$0 + 2 | 0;
          str_ind = str_ind$2;
          continue;
         }
          /*<<camlinternalFormat.ml:2863:39>>*/ if(123 === match$0){
          var
           sub_end$1 =
              /*<<camlinternalFormat.ml:2865:26>>*/ search_subformat_end
              (str_ind + 3 | 0, end_ind, 125),
           str_ind$3 =
              /*<<camlinternalFormat.ml:2866:12>>*/ sub_end$1 + 2 | 0;
          str_ind = str_ind$3;
          continue;
         }
         var
          str_ind$4 =  /*<<camlinternalFormat.ml:2870:17>>*/ str_ind + 3 | 0;
         str_ind = str_ind$4;
         continue;
        }
       }
       else{
         /*<<camlinternalFormat.ml:2859:37>>*/ if(40 === match){
         var
          sub_end$2 =
             /*<<camlinternalFormat.ml:2878:24>>*/ search_subformat_end
             (str_ind + 2 | 0, end_ind, 41),
          str_ind$5 =  /*<<camlinternalFormat.ml:2879:10>>*/ sub_end$2 + 2 | 0;
         str_ind = str_ind$5;
         continue;
        }
         /*<<camlinternalFormat.ml:2859:37>>*/ if(41 === match)
          /*<<camlinternalFormat.ml:2885:10>>*/ return expected_character
                 (str_ind + 1 | 0, "character '}'", 41) /*<<camlinternalFormat.ml:2889:55>>*/ ;
       }
       var str_ind$0 =  /*<<camlinternalFormat.ml:2887:10>>*/ str_ind + 2 | 0;
       str_ind = str_ind$0;
      }
      else{
       var str_ind$6 =  /*<<camlinternalFormat.ml:2889:11>>*/ str_ind + 1 | 0;
       str_ind = str_ind$6;
      }
     }
     /*<<camlinternalFormat.ml:2889:55>>*/ }
    function compute_int_conv(pct_ind, str_ind, plus$0, hash$0, space$0, symb){
     var
      plus =  /*<<camlinternalFormat.ml:2903:4>>*/ plus$0,
      hash = hash$0,
      space = space$0;
     for(;;){
      a:
      {
       if(plus){
        if(! hash){
         if(space) break a;
         if(100 === symb)  /*<<camlinternalFormat.ml:2906:34>>*/ return 1;
          /*<<camlinternalFormat.ml:2903:4>>*/ if(105 === symb)
           /*<<camlinternalFormat.ml:2906:71>>*/ return 4;
         break a;
        }
       }
       else{
         /*<<camlinternalFormat.ml:2903:4>>*/ if(! hash){
         if(space){
          if(100 === symb)  /*<<camlinternalFormat.ml:2905:34>>*/ return 2;
           /*<<camlinternalFormat.ml:2903:4>>*/ if(105 === symb)
            /*<<camlinternalFormat.ml:2905:71>>*/ return 5;
          break a;
         }
         var switcher$1 =  /*<<camlinternalFormat.ml:2903:4>>*/ symb - 88 | 0;
         if(32 < switcher$1 >>> 0) break a;
         switch(switcher$1){
           case 0:
             /*<<camlinternalFormat.ml:2907:71>>*/ return 8;
           case 12:
             /*<<camlinternalFormat.ml:2904:34>>*/ return 0;
           case 17:
             /*<<camlinternalFormat.ml:2904:71>>*/ return 3;
           case 23:
             /*<<camlinternalFormat.ml:2909:34>>*/ return 10;
           case 29:
             /*<<camlinternalFormat.ml:2911:34>>*/ return 12;
           case 32:
             /*<<camlinternalFormat.ml:2907:34>>*/ return 6;
           default: break a;
         }
        }
         /*<<camlinternalFormat.ml:2903:4>>*/ if(! space){
         var switcher$0 = symb - 88 | 0;
         if(32 >= switcher$0 >>> 0)
          switch(switcher$0){
            case 0:
              /*<<camlinternalFormat.ml:2908:71>>*/ return 9;
            case 12:
              /*<<camlinternalFormat.ml:2912:34>>*/ return 13;
            case 17:
              /*<<camlinternalFormat.ml:2913:34>>*/ return 14;
            case 23:
              /*<<camlinternalFormat.ml:2910:34>>*/ return 11;
            case 29:
              /*<<camlinternalFormat.ml:2914:34>>*/ return 15;
            case 32:
              /*<<camlinternalFormat.ml:2908:34>>*/ return 7;
          }
        }
       }
       var switcher =  /*<<camlinternalFormat.ml:2903:4>>*/ symb - 88 | 0;
       if(32 >= switcher >>> 0)
        switch(switcher){
          case 0:
            /*<<camlinternalFormat.ml:2916:27>>*/ if(legacy_behavior$0)
             /*<<camlinternalFormat.ml:2916:46>>*/ return 9;
           break;
          case 23:
            /*<<camlinternalFormat.ml:2917:27>>*/ if(legacy_behavior$0)
             /*<<camlinternalFormat.ml:2917:46>>*/ return 11;
           break;
          case 32:
            /*<<camlinternalFormat.ml:2915:27>>*/ if(legacy_behavior$0)
             /*<<camlinternalFormat.ml:2915:46>>*/ return 7;
           break;
          case 12:
          case 17:
          case 29:
            /*<<camlinternalFormat.ml:2919:6>>*/ if(! legacy_behavior$0)
             /*<<camlinternalFormat.ml:2921:11>>*/ return incompatible_flag
                    (pct_ind, str_ind, symb, cst$0) /*<<camlinternalFormat.ml:2935:40>>*/ ;
            /*<<camlinternalFormat.ml:2920:8>>*/ hash = 0;
           continue;
        }
      }
       /*<<camlinternalFormat.ml:2903:4>>*/ if(plus)
       if(space){
         /*<<camlinternalFormat.ml:2923:6>>*/ if(! legacy_behavior$0)
          /*<<camlinternalFormat.ml:2926:11>>*/ return incompatible_flag
                 (pct_ind, str_ind, 32, cst) /*<<camlinternalFormat.ml:2935:40>>*/ ;
         /*<<camlinternalFormat.ml:2925:8>>*/ space = 0;
       }
       else{
         /*<<camlinternalFormat.ml:2932:6>>*/ if(! legacy_behavior$0)
          /*<<camlinternalFormat.ml:2934:11>>*/ return incompatible_flag
                 (pct_ind, str_ind, symb, cst) /*<<camlinternalFormat.ml:2935:40>>*/ ;
         /*<<camlinternalFormat.ml:2933:8>>*/ plus = 0;
       }
      else{
        /*<<camlinternalFormat.ml:2903:4>>*/ if(! space)
         /*<<camlinternalFormat.ml:2935:28>>*/ throw caml_maybe_attach_backtrace
               ([0, Assert_failure, _W_], 1);
        /*<<camlinternalFormat.ml:2928:6>>*/ if(! legacy_behavior$0)
         /*<<camlinternalFormat.ml:2930:11>>*/ return incompatible_flag
                (pct_ind, str_ind, symb, cst$1) /*<<camlinternalFormat.ml:2935:40>>*/ ;
        /*<<camlinternalFormat.ml:2929:8>>*/ space = 0;
      }
     }
     /*<<camlinternalFormat.ml:2935:40>>*/ }
    function incompatible_flag(pct_ind, str_ind, symb, option){
     var
      subfmt =
         /*<<camlinternalFormat.ml:2963:19>>*/ Stdlib_String[16].call
         (null, str, pct_ind, str_ind - pct_ind | 0);
      /*<<camlinternalFormat.ml:2964:6>>*/ return caml_call5
             (failwith_message(_Y_), str, pct_ind, option, symb, subfmt) /*<<camlinternalFormat.ml:2967:38>>*/ ;
    }
     /*<<camlinternalFormat.ml:2969:5>>*/ return parse
            (0, caml_ml_string_length(str));
   }
   var
    cst_and =  /*<<?>>*/ " and ",
    cst_bad_input_format_type_mism =
      "bad input: format type mismatch between ",
    cst_bad_input_format_type_mism$0 =
      "bad input: format type mismatch between %S and %S",
    _Z_ =
      [0,
       [11, cst_bad_input_format_type_mism, [3, 0, [11, cst_and, [3, 0, 0]]]],
       cst_bad_input_format_type_mism$0];
   function format_of_string_fmtty(str, fmtty){
    var
     fmt =  /*<<camlinternalFormat.ml:2977:20>>*/ fmt_ebb_of_string(0, str)[1];
     /*<<camlinternalFormat.ml:2978:2>>*/ try{
     var
      _aa_ =
         /*<<camlinternalFormat.ml:2978:14>>*/ [0,
         type_format(fmt, fmtty),
         str];
     return _aa_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn !== Type_mismatch) throw caml_maybe_attach_backtrace(exn, 0);
     var _$_ =  /*<<camlinternalFormat.ml:2982:10>>*/ string_of_fmtty(fmtty);
      /*<<camlinternalFormat.ml:2982:33>>*/ return caml_call2
             (failwith_message(_Z_), str, _$_);
    }
   }
   var
    ___ =
       /*<<?>>*/ [0,
       [11, cst_bad_input_format_type_mism, [3, 0, [11, cst_and, [3, 0, 0]]]],
       cst_bad_input_format_type_mism$0];
   function format_of_string_format(str, param){
    var
     str$0 =  /*<<camlinternalFormat.ml:2986:28>>*/ param[2],
     fmt = param[1],
     fmt$0 =
        /*<<camlinternalFormat.ml:2987:20>>*/ fmt_ebb_of_string(0, str)[1];
     /*<<camlinternalFormat.ml:2988:2>>*/ try{
     var
      _$_ =
         /*<<camlinternalFormat.ml:2988:30>>*/ [0,
          /*<<camlinternalFormat.ml:2988:14>>*/ type_format
          (fmt$0,  /*<<camlinternalFormat.ml:2988:30>>*/ fmtty_of_fmt(fmt)),
         str];
     return _$_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Type_mismatch)
       /*<<camlinternalFormat.ml:2990:4>>*/ return caml_call2
              (failwith_message(___), str, str$0) /*<<camlinternalFormat.ml:2991:66>>*/ ;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<camlinternalFormat.ml:2991:66>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (197,
     [0,
      is_in_char_set,
      rev_char_set,
      create_char_set,
      add_in_char_set,
      freeze_char_set,
      param_format_of_ignored_format,
      make_printf,
      make_iprintf,
      output_acc,
      bufput_acc,
      strput_acc,
      type_format,
      fmt_ebb_of_string,
      format_of_string_fmtty,
      format_of_string_format,
      char_of_iconv,
      string_of_formatting_lit,
      string_of_fmtty,
      string_of_fmt,
      open_box_of_string,
      symm,
      trans,
      recast],
     "CamlinternalFormat");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Printf
//# unitInfo: Requires: CamlinternalFormat, Stdlib, Stdlib__Buffer
//# shape: Stdlib__Printf:[F(2),F(1),F(1),F(1),F(2),F(2),F(2),F(3),F(3),F(2),F(3),F(3),F(2)]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Buffer = global_data.Stdlib__Buffer,
    CamlinternalFormat = global_data.CamlinternalFormat,
    Stdlib = global_data.Stdlib;
   function kfprintf(k, o, param){
    var fmt =  /*<<printf.ml:19:13>>*/ param[1];
     /*<<printf.ml:20:2>>*/ return CamlinternalFormat[7].call
            (null,
             function(acc){
               /*<<printf.ml:20:26>>*/ CamlinternalFormat[9].call
               (null, o, acc);
               /*<<printf.ml:20:42>>*/ return caml_call1(k, o) /*<<printf.ml:20:47>>*/ ;
             },
             0,
             fmt) /*<<printf.ml:20:63>>*/ ;
   }
   function kbprintf(k, b, param){
    var fmt =  /*<<printf.ml:21:13>>*/ param[1];
     /*<<printf.ml:22:2>>*/ return CamlinternalFormat[7].call
            (null,
             function(acc){
               /*<<printf.ml:22:26>>*/ CamlinternalFormat[10].call
               (null, b, acc);
               /*<<printf.ml:22:42>>*/ return caml_call1(k, b) /*<<printf.ml:22:47>>*/ ;
             },
             0,
             fmt) /*<<printf.ml:22:63>>*/ ;
   }
   function ikfprintf(k, oc, param){
    var fmt =  /*<<printf.ml:23:14>>*/ param[1];
     /*<<printf.ml:24:2>>*/ return CamlinternalFormat[8].call
            (null, k, oc, fmt) /*<<printf.ml:24:23>>*/ ;
   }
   function fprintf(oc, fmt){
     /*<<printf.ml:27:21>>*/ return kfprintf
            (function(_a_){ /*<<?>>*/ return 0;}, oc, fmt) /*<<printf.ml:27:43>>*/ ;
   }
   function bprintf(b, fmt){
     /*<<printf.ml:28:20>>*/ return kbprintf
            (function(_a_){ /*<<?>>*/ return 0;}, b, fmt) /*<<printf.ml:28:41>>*/ ;
   }
   function ifprintf(oc, fmt){
     /*<<printf.ml:29:22>>*/ return ikfprintf
            (function(_a_){ /*<<?>>*/ return 0;}, oc, fmt) /*<<printf.ml:29:45>>*/ ;
   }
   function ibprintf(b, fmt){
     /*<<printf.ml:30:21>>*/ return ikfprintf
            (function(_a_){ /*<<?>>*/ return 0;}, b, fmt) /*<<printf.ml:30:43>>*/ ;
   }
   function printf(fmt){
     /*<<printf.ml:31:17>>*/ return fprintf(Stdlib[39], fmt) /*<<printf.ml:31:35>>*/ ;
   }
   function eprintf(fmt){
     /*<<printf.ml:32:18>>*/ return fprintf(Stdlib[40], fmt) /*<<printf.ml:32:36>>*/ ;
   }
   function ksprintf(k, param){
    var fmt =  /*<<printf.ml:34:13>>*/ param[1];
    function k$0(acc){
     var buf =  /*<<printf.ml:36:14>>*/ Stdlib_Buffer[1].call(null, 64);
      /*<<printf.ml:37:4>>*/ CamlinternalFormat[11].call(null, buf, acc);
      /*<<printf.ml:38:6>>*/ return  /*<<printf.ml:38:27>>*/ caml_call1
             (k,  /*<<printf.ml:38:6>>*/ Stdlib_Buffer[2].call(null, buf)) /*<<printf.ml:38:27>>*/ ;
    }
     /*<<printf.ml:39:2>>*/ return CamlinternalFormat[7].call
            (null, k$0, 0, fmt) /*<<printf.ml:39:31>>*/ ;
   }
   function sprintf(fmt){
     /*<<printf.ml:41:18>>*/ return ksprintf
            (function(s){
               /*<<printf.ml:41:37>>*/ return s;
              /*<<printf.ml:41:38>>*/ },
             fmt) /*<<printf.ml:41:43>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (3,
     [0,
      fprintf,
      printf,
      eprintf,
      sprintf,
      bprintf,
      ifprintf,
      ibprintf,
      kfprintf,
      ikfprintf,
      ksprintf,
      kbprintf,
      ikfprintf,
      ksprintf],
     "Stdlib__Printf");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Arg
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Buffer, Stdlib__Int, Stdlib__List, Stdlib__Printf, Stdlib__String, Stdlib__Sys
//# shape: Stdlib__Arg:[F(3),F(3),F(5),F(5),F(5),F(3),N,N,F(2),F(2),F(2),N,F(1),F(1),F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_check_bound = runtime.caml_check_bound,
    caml_equal = runtime.caml_equal,
    caml_fresh_oo_id = runtime.caml_fresh_oo_id,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_string_length = runtime.caml_ml_string_length,
    caml_string_get = runtime.caml_string_get,
    caml_sys_argv = runtime.caml_sys_argv,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   function caml_call4(f, a0, a1, a2, a3){
    return (f.l >= 0 ? f.l : f.l = f.length) === 4
            ? f(a0, a1, a2, a3)
            : runtime.caml_call_gen(f, [a0, a1, a2, a3]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Printf = global_data.Stdlib__Printf,
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib_Buffer = global_data.Stdlib__Buffer,
    Stdlib_List = global_data.Stdlib__List,
    Stdlib_String = global_data.Stdlib__String,
    Stdlib_Int = global_data.Stdlib__Int,
    Bad = [248, "Stdlib.Arg.Bad", caml_fresh_oo_id(0)],
    Help = [248, "Stdlib.Arg.Help", caml_fresh_oo_id(0)],
    Stop = [248, "Stdlib.Arg.Stop", caml_fresh_oo_id(0)];
   function assoc3(x, l$0){
    var l =  /*<<arg.ml:64:2>>*/ l$0;
    for(;;){
     if(! l)
       /*<<arg.ml:65:10>>*/ throw caml_maybe_attach_backtrace(Stdlib[8], 1);
     var match =  /*<<arg.ml:64:2>>*/ l[1], y2 = match[2], y1 = match[1];
      /*<<arg.ml:66:26>>*/ if(caml_equal(y1, x))
       /*<<arg.ml:66:36>>*/ return y2;
     var t =  /*<<arg.ml:66:32>>*/ l[2];
      /*<<arg.ml:67:14>>*/ l = t;
    }
    /*<<arg.ml:67:24>>*/ }
   function make_symlist(prefix, sep, suffix, l){
     /*<<arg.ml:77:2>>*/ if(! l)  /*<<arg.ml:78:10>>*/ return "<none>";
    var
     t =  /*<<arg.ml:77:2>>*/ l[2],
     h = l[1],
     _D_ =  /*<<arg.ml:79:53>>*/ Stdlib[28].call(null, prefix, h),
     _E_ =
        /*<<arg.ml:79:12>>*/ Stdlib_List[27].call
        (null,
         function(x, y){
          var _E_ =  /*<<arg.ml:79:44>>*/ Stdlib[28].call(null, sep, y);
           /*<<arg.ml:79:51>>*/ return Stdlib[28].call(null, x, _E_);
         },
         _D_,
         t);
     /*<<arg.ml:79:68>>*/ return Stdlib[28].call(null, _E_, suffix) /*<<arg.ml:79:77>>*/ ;
   }
   var cst_help =  /*<<?>>*/ "-help", _c_ = [0, cst_help];
   function help_action(param){
     /*<<arg.ml:91:21>>*/ throw caml_maybe_attach_backtrace([0, Stop, _c_], 1);
    /*<<arg.ml:91:51>>*/ }
   var cst_help$0 =  /*<<?>>*/ "--help";
   function add_help(speclist){
    var cst_Display_this_list_of_optio = " Display this list of options";
     /*<<arg.ml:94:2>>*/ try{
      /*<<arg.ml:95:15>>*/ assoc3(cst_help, speclist);
     var add1 = 0;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
     var
      add1 =
         /*<<arg.ml:97:12>>*/ [0,
         [0, cst_help, [0, help_action], cst_Display_this_list_of_optio],
         0];
    }
     /*<<arg.ml:94:2>>*/ try{
      /*<<arg.ml:99:15>>*/ assoc3(cst_help$0, speclist);
     var add2 = 0;
    }
    catch(exn){
     var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
     if(exn$0 !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn$0, 0);
     var
      add2 =
         /*<<arg.ml:101:12>>*/ [0,
         [0, cst_help$0, [0, help_action], cst_Display_this_list_of_optio],
         0];
    }
    var _D_ =  /*<<arg.ml:103:13>>*/ Stdlib[37].call(null, add1, add2);
     /*<<arg.ml:103:26>>*/ return Stdlib[37].call(null, speclist, _D_);
   }
   var
    cst$1 =  /*<<?>>*/ "  ",
    _a_ = [0, [11, cst$1, [2, 0, [12, 32, [2, 0, [12, 10, 0]]]]], "  %s %s\n"],
    _b_ =
      [0,
       [11, cst$1, [2, 0, [12, 32, [2, 0, [2, 0, [12, 10, 0]]]]]],
       "  %s %s%s\n"],
    _d_ = [0, [2, 0, [12, 10, 0]], "%s\n"];
   function usage_b(buf, speclist, errmsg){
     /*<<arg.ml:107:2>>*/ caml_call1
     (Stdlib_Printf[5].call(null, buf, _d_), errmsg);
    var _C_ =  /*<<arg.ml:108:29>>*/ add_help(speclist);
     /*<<arg.ml:108:28>>*/ return Stdlib_List[19].call
            (null,
             function(param){
              var
               doc =  /*<<arg.ml:82:15>>*/ param[3],
               spec = param[2],
               key = param[1],
               _C_ =
                  /*<<arg.ml:83:2>>*/ 0 < caml_ml_string_length(doc) ? 1 : 0;
              if(! _C_) return _C_;
               /*<<arg.ml:84:4>>*/ if(11 !== spec[0])
                /*<<arg.ml:88:8>>*/ return caml_call2
                       (Stdlib_Printf[5].call(null, buf, _a_), key, doc);
              var
               l =  /*<<arg.ml:84:4>>*/ spec[1],
               _D_ =  /*<<arg.ml:86:38>>*/ make_symlist("{", "|", "}", l);
               /*<<arg.ml:86:66>>*/ return caml_call3
                      (Stdlib_Printf[5].call(null, buf, _b_), key, _D_, doc);
             },
             _C_) /*<<arg.ml:108:48>>*/ ;
   }
   function usage_string(speclist, errmsg){
    var b =  /*<<arg.ml:112:10>>*/ Stdlib_Buffer[1].call(null, 200);
     /*<<arg.ml:113:2>>*/ usage_b(b, speclist, errmsg);
     /*<<arg.ml:113:27>>*/ return Stdlib_Buffer[2].call(null, b) /*<<arg.ml:114:19>>*/ ;
   }
   var cst_s =  /*<<?>>*/ "%s", _e_ = [0, [2, 0, 0], cst_s];
   function usage(speclist, errmsg){
    var _C_ =  /*<<arg.ml:118:15>>*/ usage_string(speclist, errmsg);
     /*<<arg.ml:118:45>>*/ return caml_call1
            (Stdlib_Printf[3].call(null, _e_), _C_);
   }
   var
    dummy =  /*<<?>>*/ 0,
    cst = "",
    cst$0 = ".\n",
    _f_ =
      [0,
       [2, 0, [11, ": unknown option '", [2, 0, [11, "'.\n", 0]]]],
       "%s: unknown option '%s'.\n"],
    _g_ = [0, cst_help],
    _h_ = [0, cst_help$0],
    _i_ =
      [0,
       [2,
        0,
        [11,
         ": wrong argument '",
         [2,
          0,
          [11,
           "'; option '",
           [2, 0, [11, "' expects ", [2, 0, [11, cst$0, 0]]]]]]]],
       "%s: wrong argument '%s'; option '%s' expects %s.\n"],
    _j_ =
      [0,
       [2, 0, [11, ": option '", [2, 0, [11, "' needs an argument.\n", 0]]]],
       "%s: option '%s' needs an argument.\n"],
    _k_ = [0, [2, 0, [11, ": ", [2, 0, [11, cst$0, 0]]]], "%s: %s.\n"];
   function parse_and_expand_argv_dynamic_
   (allow_expand, current, argv, speclist, anonfun, errmsg){
    var initpos =  /*<<arg.ml:125:2>>*/ current[1];
    function convert_error(error){
     var
      b =  /*<<arg.ml:131:12>>*/ Stdlib_Buffer[1].call(null, 200),
      progname =
         /*<<arg.ml:132:4>>*/ initpos < argv[1].length - 1
         ?  /*<<arg.ml:133:45>>*/ caml_check_bound
            (argv[1], initpos)
           [initpos + 1]
         : "(?)";
      /*<<arg.ml:134:4>>*/ switch(error[0]){
       case 0:
        var s = error[1];
        if(s !== cst_help$0 && s !== cst_help)
          /*<<arg.ml:138:10>>*/ caml_call2
          (Stdlib_Printf[5].call(null, b, _f_), progname, s);
        break;
       case 1:
        var
         expected =  /*<<arg.ml:134:4>>*/ error[3],
         arg = error[2],
         opt = error[1];
         /*<<arg.ml:142:10>>*/ caml_call4
         (Stdlib_Printf[5].call(null, b, _i_), progname, arg, opt, expected);
        break;
       case 2:
        var s$0 =  /*<<arg.ml:134:4>>*/ error[1];
         /*<<arg.ml:140:10>>*/ caml_call2
         (Stdlib_Printf[5].call(null, b, _j_), progname, s$0);
        break;
       default:
        var s$1 =  /*<<arg.ml:134:4>>*/ error[1];
         /*<<arg.ml:145:10>>*/ caml_call2
         (Stdlib_Printf[5].call(null, b, _k_), progname, s$1);
     }
      /*<<arg.ml:147:4>>*/ usage_b(b, speclist[1], errmsg);
      /*<<arg.ml:148:7>>*/ if
      (!
       caml_equal(error, _g_)
       && !  /*<<arg.ml:148:34>>*/ caml_equal(error, _h_))
       /*<<arg.ml:150:13>>*/ return [0, Bad, Stdlib_Buffer[2].call(null, b)] /*<<arg.ml:150:32>>*/ ;
      /*<<arg.ml:149:14>>*/ return [0, Help, Stdlib_Buffer[2].call(null, b)] /*<<arg.ml:149:33>>*/ ;
     /*<<arg.ml:150:32>>*/ }
     /*<<arg.ml:152:2>>*/ current[1]++;
     /*<<arg.ml:153:2>>*/ for(;;){
     if(current[1] >= argv[1].length - 1) return 0;
     try{
      var
       _x_ = current[1],
       s =  /*<<arg.ml:155:14>>*/ caml_check_bound(argv[1], _x_)[_x_ + 1];
       /*<<arg.ml:156:9>>*/ if(Stdlib_String[11].call(null, "-", s)){
        /*<<arg.ml:156:41>>*/ try{
        var
         _z_ =  /*<<arg.ml:158:14>>*/ assoc3(s, speclist[1]),
         follow = 0,
         action = _z_;
       }
       catch(exn){
        var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
        if(exn$0 !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn$0, 0);
        try{
         var
          i =  /*<<arg.ml:71:10>>*/ Stdlib_String[36].call(null, s, 61),
          len =  /*<<arg.ml:72:2>>*/ caml_ml_string_length(s),
          arg =
             /*<<arg.ml:73:20>>*/ Stdlib_String[16].call
             (null, s, i + 1 | 0, len - (i + 1 | 0) | 0),
          keyword =  /*<<arg.ml:73:2>>*/ Stdlib_String[16].call(null, s, 0, i),
          _y_ =  /*<<arg.ml:162:12>>*/ assoc3(keyword, speclist[1]),
          follow = [0, arg],
          action = _y_;
        }
        catch(exn){
         var exn$1 =  /*<<?>>*/ caml_wrap_exception(exn);
         if(exn$1 === Stdlib[8])
           /*<<arg.ml:163:28>>*/ throw caml_maybe_attach_backtrace
                 ([0, Stop, [0, s]], 1);
          /*<<?>>*/ throw caml_maybe_attach_backtrace(exn$1, 0);
        }
       }
       let s$0 =  /*<<arg.ml:181:8>>*/ s, follow$0 = follow;
       var
        no_arg =
           /*<<arg.ml:165:8>>*/ function(param){
            /*<<arg.ml:166:10>>*/ if(! follow$0)
             /*<<arg.ml:167:20>>*/ return;
           var arg =  /*<<arg.ml:166:10>>*/ follow$0[1];
            /*<<arg.ml:168:24>>*/ throw caml_maybe_attach_backtrace
                  ([0, Stop, [1, s$0, arg, "no argument"]], 1);
           /*<<arg.ml:168:68>>*/ },
        get_arg =
           /*<<arg.ml:169:8>>*/ function(param){
            /*<<arg.ml:170:10>>*/ if(follow$0){
            var arg = follow$0[1];
             /*<<arg.ml:174:24>>*/ return arg;
           }
            /*<<arg.ml:172:14>>*/ if
            ((current[1] + 1 | 0) >= argv[1].length - 1)
             /*<<arg.ml:173:19>>*/ throw caml_maybe_attach_backtrace
                   ([0, Stop, [2, s$0]], 1);
           var _C_ =  /*<<arg.ml:172:58>>*/ current[1] + 1 | 0;
           return caml_check_bound(argv[1], _C_)[_C_ + 1] /*<<arg.ml:172:78>>*/ ;
           /*<<arg.ml:174:27>>*/ },
        consume_arg =
           /*<<arg.ml:176:8>>*/ function(param){
            /*<<arg.ml:177:10>>*/ return follow$0 ? 0 : (current[1]++, 0) /*<<arg.ml:179:24>>*/ ;
          },
        treat_action =
           /*<<arg.ml:181:8>>*/ function(param){
           var
            cst_a_float =  /*<<?>>*/ "a float",
            cst_an_integer = "an integer";
            /*<<arg.ml:181:31>>*/ switch(param[0]){
             case 0:
              var f = param[1];
               /*<<arg.ml:182:20>>*/ no_arg$0(0);
               /*<<arg.ml:182:29>>*/ return caml_call1(f, 0) /*<<arg.ml:264:54>>*/ ;
             case 1:
              var
               f$0 =  /*<<arg.ml:181:31>>*/ param[1],
               arg =  /*<<arg.ml:184:22>>*/ get_arg$0(0),
               match =  /*<<arg.ml:185:24>>*/ Stdlib[31].call(null, arg);
               /*<<arg.ml:185:46>>*/ if(! match)
                /*<<arg.ml:186:22>>*/ throw caml_maybe_attach_backtrace
                      ([0, Stop, [1, s$0, arg, "a boolean"]], 1);
              var s =  /*<<arg.ml:185:46>>*/ match[1];
               /*<<arg.ml:187:24>>*/ caml_call1(f$0, s);
               /*<<arg.ml:189:12>>*/ return consume_arg$0(0) /*<<arg.ml:264:54>>*/ ;
             case 2:
              var r =  /*<<arg.ml:181:31>>*/ param[1];
               /*<<arg.ml:190:19>>*/ no_arg$0(0);
               /*<<arg.ml:190:28>>*/ r[1] = 1;
              return 0;
             case 3:
              var r$0 =  /*<<arg.ml:181:31>>*/ param[1];
               /*<<arg.ml:191:21>>*/ no_arg$0(0);
               /*<<arg.ml:191:30>>*/ r$0[1] = 0;
              return 0;
             case 4:
              var
               f$1 =  /*<<arg.ml:181:31>>*/ param[1],
               arg$0 =  /*<<arg.ml:193:22>>*/ get_arg$0(0);
               /*<<arg.ml:194:12>>*/ caml_call1(f$1, arg$0);
               /*<<arg.ml:194:17>>*/ return consume_arg$0(0) /*<<arg.ml:264:54>>*/ ;
             case 5:
              var r$1 =  /*<<arg.ml:181:31>>*/ param[1];
               /*<<arg.ml:206:17>>*/ r$1[1] = get_arg$0(0);
               /*<<arg.ml:207:12>>*/ return consume_arg$0(0) /*<<arg.ml:264:54>>*/ ;
             case 6:
              var
               f$2 =  /*<<arg.ml:181:31>>*/ param[1],
               arg$1 =  /*<<arg.ml:209:22>>*/ get_arg$0(0),
               match$0 =  /*<<arg.ml:210:24>>*/ Stdlib[34].call(null, arg$1);
               /*<<arg.ml:210:45>>*/ if(! match$0)
                /*<<arg.ml:211:22>>*/ throw caml_maybe_attach_backtrace
                      ([0, Stop, [1, s$0, arg$1, cst_an_integer]], 1);
              var x =  /*<<arg.ml:210:45>>*/ match$0[1];
               /*<<arg.ml:212:24>>*/ caml_call1(f$2, x);
               /*<<arg.ml:214:12>>*/ return consume_arg$0(0) /*<<arg.ml:264:54>>*/ ;
             case 7:
              var
               r$2 =  /*<<arg.ml:181:31>>*/ param[1],
               arg$2 =  /*<<arg.ml:216:22>>*/ get_arg$0(0),
               match$1 =  /*<<arg.ml:217:24>>*/ Stdlib[34].call(null, arg$2);
               /*<<arg.ml:217:45>>*/ if(! match$1)
                /*<<arg.ml:218:22>>*/ throw caml_maybe_attach_backtrace
                      ([0, Stop, [1, s$0, arg$2, cst_an_integer]], 1);
              var x$0 =  /*<<arg.ml:217:45>>*/ match$1[1];
               /*<<arg.ml:219:24>>*/ r$2[1] = x$0;
               /*<<arg.ml:221:12>>*/ return consume_arg$0(0) /*<<arg.ml:264:54>>*/ ;
             case 8:
              var
               f$3 =  /*<<arg.ml:181:31>>*/ param[1],
               arg$3 =  /*<<arg.ml:223:22>>*/ get_arg$0(0),
               match$2 =  /*<<arg.ml:224:24>>*/ Stdlib[36].call(null, arg$3);
               /*<<arg.ml:224:47>>*/ if(! match$2)
                /*<<arg.ml:225:22>>*/ throw caml_maybe_attach_backtrace
                      ([0, Stop, [1, s$0, arg$3, cst_a_float]], 1);
              var x$1 =  /*<<arg.ml:224:47>>*/ match$2[1];
               /*<<arg.ml:226:24>>*/ caml_call1(f$3, x$1);
               /*<<arg.ml:228:12>>*/ return consume_arg$0(0) /*<<arg.ml:264:54>>*/ ;
             case 9:
              var
               r$3 =  /*<<arg.ml:181:31>>*/ param[1],
               arg$4 =  /*<<arg.ml:230:22>>*/ get_arg$0(0),
               match$3 =  /*<<arg.ml:231:24>>*/ Stdlib[36].call(null, arg$4);
               /*<<arg.ml:231:47>>*/ if(! match$3)
                /*<<arg.ml:232:22>>*/ throw caml_maybe_attach_backtrace
                      ([0, Stop, [1, s$0, arg$4, cst_a_float]], 1);
              var x$2 =  /*<<arg.ml:231:47>>*/ match$3[1];
               /*<<arg.ml:233:24>>*/ r$3[1] = x$2;
               /*<<arg.ml:235:12>>*/ return consume_arg$0(0) /*<<arg.ml:264:54>>*/ ;
             case 10:
              var specs =  /*<<arg.ml:181:31>>*/ param[1];
               /*<<arg.ml:237:12>>*/ no_arg$0(0);
               /*<<arg.ml:237:21>>*/ return Stdlib_List[19].call
                      (null, treat_action$0, specs) /*<<arg.ml:264:54>>*/ ;
             case 11:
              var
               f$4 =  /*<<arg.ml:181:31>>*/ param[2],
               symb = param[1],
               arg$5 =  /*<<arg.ml:197:22>>*/ get_arg$0(0);
               /*<<arg.ml:198:15>>*/ if
               (Stdlib_List[38].call(null, arg$5, symb)){
                /*<<arg.ml:199:14>>*/ caml_call1(f$4, arg$5);
                /*<<arg.ml:199:19>>*/ return consume_arg$0(0) /*<<arg.ml:264:54>>*/ ;
              }
              var
               _B_ =  /*<<arg.ml:203:44>>*/ make_symlist(cst, " ", cst, symb);
               /*<<arg.ml:202:42>>*/ throw caml_maybe_attach_backtrace
                     ([0,
                       Stop,
                       [1, s$0, arg$5, Stdlib[28].call(null, "one of: ", _B_)]],
                      1);
             case 12:
              var f$5 =  /*<<arg.ml:181:31>>*/ param[1];
               /*<<arg.ml:240:12>>*/ no_arg$0(0);
               /*<<arg.ml:240:21>>*/ for(;;){
               if(current[1] >= (argv[1].length - 2 | 0)) return 0;
               var _z_ =  /*<<arg.ml:242:14>>*/ current[1] + 1 | 0;
                /*<<arg.ml:242:16>>*/  /*<<arg.ml:242:14>>*/ caml_call1
                (f$5,
                  /*<<arg.ml:242:16>>*/ caml_check_bound(argv[1], _z_)
                  [_z_ + 1]);
                /*<<arg.ml:243:14>>*/ consume_arg$0(0);
              }
              break;
             case 13:
              var f$6 =  /*<<arg.ml:181:31>>*/ param[1];
               /*<<arg.ml:246:12>>*/ no_arg$0(0);
              var acc =  /*<<arg.ml:248:12>>*/ 0;
              for(;;){
               if(current[1] >= (argv[1].length - 2 | 0))
                 /*<<arg.ml:252:14>>*/ return  /*<<arg.ml:252:29>>*/ caml_call1
                        (f$6,
                          /*<<arg.ml:252:14>>*/ Stdlib_List[11].call(null, acc)) /*<<arg.ml:264:54>>*/ ;
               var
                _A_ =  /*<<arg.ml:249:14>>*/ current[1] + 1 | 0,
                _C_ =
                   /*<<arg.ml:249:21>>*/ [0,
                   caml_check_bound(argv[1], _A_)[_A_ + 1],
                   acc];
                /*<<arg.ml:250:14>>*/ consume_arg$0(0);
                /*<<arg.ml:250:28>>*/ acc = _C_;
              }
              break;
             default:
              var f$7 =  /*<<arg.ml:181:31>>*/ param[1];
               /*<<arg.ml:254:12>>*/ if(1 - allow_expand)
                /*<<arg.ml:255:14>>*/ throw caml_maybe_attach_backtrace
                      ([0,
                        Stdlib[6],
                        "Arg.Expand is is only allowed with Arg.parse_and_expand_argv_dynamic"],
                       1);
              var
               arg$6 =  /*<<arg.ml:257:22>>*/ get_arg$0(0),
               newarg =  /*<<arg.ml:258:25>>*/ caml_call1(f$7, arg$6);
               /*<<arg.ml:259:12>>*/ consume_arg$0(0);
              var
               before =
                  /*<<arg.ml:260:25>>*/ Stdlib_Array[6].call
                  (null, argv[1], 0, current[1] + 1 | 0),
               after =
                  /*<<arg.ml:262:14>>*/ Stdlib_Array[6].call
                  (null,
                   argv[1],
                   current[1] + 1 | 0,
                   (argv[1].length - 1 - current[1] | 0) - 1 | 0);
               /*<<arg.ml:264:19>>*/ argv[1] =
               Stdlib_Array[5].call
                (null, [0, before, [0, newarg, [0, after, 0]]]);
               /*<<arg.ml:264:53>>*/ return 0;
           }
           /*<<arg.ml:264:54>>*/ };
       let
        no_arg$0 = no_arg,
        get_arg$0 = get_arg,
        consume_arg$0 = consume_arg,
        treat_action$0 = treat_action;
        /*<<arg.ml:266:8>>*/ treat_action(action);
      }
      else
        /*<<arg.ml:267:11>>*/ caml_call1(anonfun, s);
     }
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn[1] === Bad){
       var m = exn[2];
        /*<<arg.ml:268:26>>*/ throw caml_maybe_attach_backtrace
              (convert_error([3, m]), 1);
      }
       /*<<?>>*/ if(exn[1] !== Stop)
       throw caml_maybe_attach_backtrace(exn, 0);
      var e = exn[2];
       /*<<arg.ml:269:27>>*/ throw caml_maybe_attach_backtrace
             (convert_error(e), 1);
     }
      /*<<arg.ml:271:4>>*/ current[1]++;
    }
    /*<<arg.ml:272:6>>*/ }
   function parse_and_expand_argv_dynamic
   (current, argv, speclist, anonfun, errmsg){
     /*<<arg.ml:275:2>>*/ return parse_and_expand_argv_dynamic_
            (1, current, argv, speclist, anonfun, errmsg) /*<<arg.ml:275:77>>*/ ;
   }
   var current =  /*<<?>>*/ [0, 0];
   function parse_argv_dynamic(opt, argv, speclist, anonfun, errmsg){
    var current$0 =  /*<<arg.ml:277:23>>*/ opt ? opt[1] : current;
     /*<<arg.ml:278:2>>*/ return parse_and_expand_argv_dynamic_
            (0, current$0, [0, argv], speclist, anonfun, errmsg) /*<<arg.ml:279:10>>*/ ;
   }
   function parse_argv(opt, argv, speclist, anonfun, errmsg){
    var current$0 =  /*<<arg.ml:282:15>>*/ opt ? opt[1] : current;
     /*<<arg.ml:283:2>>*/ return parse_argv_dynamic
            ([0, current$0], argv, [0, speclist], anonfun, errmsg) /*<<arg.ml:283:72>>*/ ;
   }
   var _l_ =  /*<<?>>*/ [0, [2, 0, 0], cst_s], _m_ = [0, [2, 0, 0], cst_s];
   function parse(l, f, msg){
     /*<<arg.ml:287:2>>*/ try{
     var
      _x_ =  /*<<arg.ml:288:4>>*/ parse_argv(0, caml_sys_argv(0), l, f, msg);
     return _x_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] === Bad){
      var msg$0 = exn[2];
       /*<<arg.ml:290:15>>*/ caml_call1
       (Stdlib_Printf[3].call(null, _l_), msg$0);
       /*<<arg.ml:290:31>>*/ return Stdlib[99].call(null, 2) /*<<arg.ml:291:39>>*/ ;
     }
      /*<<?>>*/ if(exn[1] !== Help) throw caml_maybe_attach_backtrace(exn, 0);
     var msg$1 = exn[2];
      /*<<arg.ml:291:16>>*/ caml_call1
      (Stdlib_Printf[2].call(null, _m_), msg$1);
      /*<<arg.ml:291:31>>*/ return Stdlib[99].call(null, 0) /*<<arg.ml:291:39>>*/ ;
    }
   }
   var _n_ =  /*<<?>>*/ [0, [2, 0, 0], cst_s], _o_ = [0, [2, 0, 0], cst_s];
   function parse_dynamic(l, f, msg){
     /*<<arg.ml:295:2>>*/ try{
     var
      _x_ =
         /*<<arg.ml:296:4>>*/ parse_argv_dynamic
         (0, caml_sys_argv(0), l, f, msg);
     return _x_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] === Bad){
      var msg$0 = exn[2];
       /*<<arg.ml:298:15>>*/ caml_call1
       (Stdlib_Printf[3].call(null, _n_), msg$0);
       /*<<arg.ml:298:31>>*/ return Stdlib[99].call(null, 2) /*<<arg.ml:299:39>>*/ ;
     }
      /*<<?>>*/ if(exn[1] !== Help) throw caml_maybe_attach_backtrace(exn, 0);
     var msg$1 = exn[2];
      /*<<arg.ml:299:16>>*/ caml_call1
      (Stdlib_Printf[2].call(null, _o_), msg$1);
      /*<<arg.ml:299:31>>*/ return Stdlib[99].call(null, 0) /*<<arg.ml:299:39>>*/ ;
    }
   }
   var _p_ =  /*<<?>>*/ [0, [2, 0, 0], cst_s], _q_ = [0, [2, 0, 0], cst_s];
   function parse_expand(l, f, msg){
     /*<<arg.ml:302:2>>*/ try{
     var
      argv = [0, caml_sys_argv(0)],
      spec =  /*<<arg.ml:304:4>>*/ [0, l],
      current$0 =  /*<<arg.ml:305:4>>*/ [0, current[1]],
      _x_ =
         /*<<arg.ml:306:4>>*/ parse_and_expand_argv_dynamic
         (current$0, argv, spec, f, msg);
     return _x_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] === Bad){
      var msg$0 = exn[2];
       /*<<arg.ml:308:15>>*/ caml_call1
       (Stdlib_Printf[3].call(null, _p_), msg$0);
       /*<<arg.ml:308:31>>*/ return Stdlib[99].call(null, 2) /*<<arg.ml:309:39>>*/ ;
     }
      /*<<?>>*/ if(exn[1] !== Help) throw caml_maybe_attach_backtrace(exn, 0);
     var msg$1 = exn[2];
      /*<<arg.ml:309:16>>*/ caml_call1
      (Stdlib_Printf[2].call(null, _q_), msg$1);
      /*<<arg.ml:309:31>>*/ return Stdlib[99].call(null, 0) /*<<arg.ml:309:39>>*/ ;
    }
   }
   function second_word(s){
    var len =  /*<<arg.ml:313:2>>*/ caml_ml_string_length(s);
    function loop(n$1){
     var n =  /*<<arg.ml:315:4>>*/ n$1;
     for(;;){
      if(len <= n)  /*<<arg.ml:315:21>>*/ return len;
       /*<<arg.ml:316:12>>*/ if(32 !== caml_string_get(s, n))
        /*<<arg.ml:317:9>>*/ return n;
      var n$0 =  /*<<arg.ml:316:29>>*/ n + 1 | 0;
      n = n$0;
     }
     /*<<arg.ml:317:10>>*/ }
     /*<<arg.ml:319:2>>*/ try{
     var n$0 =  /*<<arg.ml:319:8>>*/ Stdlib_String[36].call(null, s, 9);
    }
    catch(exn$1){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$1);
     if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
     try{var n =  /*<<arg.ml:322:18>>*/ Stdlib_String[36].call(null, s, 32);}
     catch(exn){
      var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
      if(exn$0 === Stdlib[8])  /*<<arg.ml:324:31>>*/ return len;
       /*<<?>>*/ throw caml_maybe_attach_backtrace(exn$0, 0);
     }
      /*<<arg.ml:323:13>>*/ return loop(n + 1 | 0) /*<<arg.ml:325:9>>*/ ;
    }
     /*<<arg.ml:320:9>>*/ return loop(n$0 + 1 | 0) /*<<arg.ml:325:9>>*/ ;
   }
   function max_arg_len(cur, param){
    var
     doc =  /*<<arg.ml:328:16>>*/ param[3],
     spec = param[2],
     kwd = param[1];
     /*<<arg.ml:329:2>>*/ if(11 === spec[0])
      /*<<arg.ml:330:16>>*/ return Stdlib_Int[11].call
             (null, cur, caml_ml_string_length(kwd)) /*<<arg.ml:331:58>>*/ ;
    var
     _x_ =
        /*<<arg.ml:331:57>>*/ caml_ml_string_length(kwd)
       +  /*<<arg.ml:331:42>>*/ second_word(doc)
       | 0;
     /*<<arg.ml:331:57>>*/ return Stdlib_Int[11].call(null, cur, _x_) /*<<arg.ml:331:58>>*/ ;
   }
   function replace_leading_tab(s){
    var seen =  /*<<arg.ml:335:2>>*/ [0, 0];
     /*<<arg.ml:336:2>>*/ return Stdlib_String[18].call
            (null,
             function(c){
               /*<<arg.ml:336:13>>*/ if(9 === c && ! seen[1]){
                /*<<arg.ml:336:46>>*/ seen[1] = 1;
                /*<<arg.ml:336:60>>*/ return 32;
              }
               /*<<arg.ml:336:71>>*/ return c;
              /*<<arg.ml:336:73>>*/ },
             s) /*<<arg.ml:336:75>>*/ ;
   }
   function align(opt, speclist){
    var
     limit =  /*<<arg.ml:361:10>>*/ opt ? opt[1] : Stdlib[19],
     completed =  /*<<arg.ml:362:18>>*/ add_help(speclist),
     len =
        /*<<arg.ml:363:12>>*/ Stdlib_List[27].call
        (null, max_arg_len, 0, completed),
     len$0 =  /*<<arg.ml:364:12>>*/ Stdlib_Int[10].call(null, len, limit);
     /*<<arg.ml:365:28>>*/ return Stdlib_List[21].call
            (null,
             function(ksd){
              var kwd =  /*<<arg.ml:339:2>>*/ ksd[1], spec = ksd[2];
              if(ksd[3] === cst)  /*<<arg.ml:343:6>>*/ return ksd;
               /*<<arg.ml:339:2>>*/ if(11 === spec[0]){
               var
                msg$0 = ksd[3],
                cutcol$0 =  /*<<arg.ml:345:19>>*/ second_word(msg$0),
                _v_ =
                   /*<<arg.ml:346:32>>*/ Stdlib_Int[11].call
                   (null, 0, len$0 - cutcol$0 | 0)
                  + 3
                  | 0,
                spaces$0 =
                   /*<<arg.ml:346:19>>*/ Stdlib_String[1].call(null, _v_, 32),
                _w_ =  /*<<arg.ml:347:34>>*/ replace_leading_tab(msg$0),
                _x_ =
                   /*<<arg.ml:347:25>>*/ Stdlib[28].call(null, spaces$0, _w_);
                /*<<arg.ml:347:18>>*/ return [0,
                       kwd,
                       spec,
                       Stdlib[28].call(null, "\n", _x_)] /*<<arg.ml:347:57>>*/ ;
              }
              var
               msg =  /*<<arg.ml:339:2>>*/ ksd[3],
               spec$0 = ksd[2],
               cutcol =  /*<<arg.ml:349:19>>*/ second_word(msg),
               kwd_len =  /*<<arg.ml:350:6>>*/ caml_ml_string_length(kwd),
               diff =  /*<<arg.ml:351:6>>*/ (len$0 - kwd_len | 0) - cutcol | 0;
               /*<<arg.ml:352:6>>*/ if(0 >= diff)
                /*<<arg.ml:353:20>>*/ return [0,
                       kwd,
                       spec$0,
                       replace_leading_tab(msg)] /*<<arg.ml:353:43>>*/ ;
              var
               spaces =
                  /*<<arg.ml:355:21>>*/ Stdlib_String[1].call(null, diff, 32),
               _t_ =  /*<<arg.ml:356:32>>*/ replace_leading_tab(msg),
               prefix =
                  /*<<arg.ml:356:21>>*/ Stdlib_String[16].call
                  (null, _t_, 0, cutcol),
               suffix =
                  /*<<arg.ml:357:8>>*/  /*<<arg.ml:357:21>>*/ Stdlib_String
                   [16].call
                  (null,
                   msg,
                   cutcol,
                    /*<<arg.ml:357:8>>*/ caml_ml_string_length(msg) - cutcol
                   | 0),
               _u_ =
                  /*<<arg.ml:358:29>>*/ Stdlib[28].call(null, spaces, suffix);
               /*<<arg.ml:358:20>>*/ return [0,
                      kwd,
                      spec$0,
                      Stdlib[28].call(null, prefix, _u_)] /*<<arg.ml:358:44>>*/ ;
             },
             completed) /*<<arg.ml:365:38>>*/ ;
   }
   function read_aux(trim, sep, file){
    var
     ic =  /*<<arg.ml:375:11>>*/ Stdlib[80].call(null, file),
     buf =  /*<<arg.ml:376:12>>*/ Stdlib_Buffer[1].call(null, 200),
     words =  /*<<arg.ml:377:2>>*/ [0, 0];
    function stash(param){
     var word =  /*<<arg.ml:379:15>>*/ Stdlib_Buffer[2].call(null, buf);
      /*<<arg.ml:380:4>>*/ if(trim)
      var
       len =  /*<<arg.ml:368:2>>*/ caml_ml_string_length(word),
       word$0 =
          /*<<arg.ml:369:2>>*/ 0 < len
          ? 13
            ===  /*<<arg.ml:369:16>>*/ caml_string_get(word, len - 1 | 0)
            ?  /*<<arg.ml:370:4>>*/ Stdlib_String
               [16].call
              (null, word, 0, len - 1 | 0)
            : word
          : word;
     else
      var word$0 =  /*<<arg.ml:380:4>>*/ word;
      /*<<arg.ml:381:4>>*/ words[1] = [0, word$0, words[1]];
      /*<<arg.ml:382:4>>*/ return Stdlib_Buffer[8].call(null, buf) /*<<arg.ml:382:20>>*/ ;
    }
     /*<<arg.ml:384:2>>*/ try{
     for(;;){
      var c =  /*<<arg.ml:386:16>>*/ Stdlib[82].call(null, ic);
       /*<<arg.ml:387:8>>*/ if(c === sep)
        /*<<arg.ml:387:24>>*/ stash(0);
      else
        /*<<arg.ml:387:38>>*/ Stdlib_Buffer[12].call(null, buf, c);
     }
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn !== Stdlib[12]) throw caml_maybe_attach_backtrace(exn, 0);
      /*<<arg.ml:391:5>>*/ if(0 < Stdlib_Buffer[7].call(null, buf))
       /*<<arg.ml:391:32>>*/ stash(0);
      /*<<arg.ml:392:2>>*/ Stdlib[93].call(null, ic);
     var _t_ =  /*<<arg.ml:393:16>>*/ Stdlib_List[11].call(null, words[1]);
      /*<<arg.ml:393:33>>*/ return Stdlib_Array[11].call(null, _t_);
    }
   }
   function read_arg(_t_){ /*<<arg.ml:395:15>>*/ return read_aux(1, 10, _t_);}
   function read_arg0(_t_){ /*<<arg.ml:397:16>>*/ return read_aux(0, 0, _t_);}
   var _r_ =  /*<<arg.ml:397:37>>*/ [0, [2, 0, [0, 0]], "%s%c"];
   function write_aux(sep, file, args){
    var oc =  /*<<arg.ml:400:11>>*/ Stdlib[61].call(null, file);
     /*<<arg.ml:401:2>>*/ Stdlib_Array[14].call
     (null,
      function(s){
        /*<<arg.ml:401:23>>*/ return caml_call2
               (Stdlib_Printf[1].call(null, oc, _r_), s, sep) /*<<arg.ml:401:46>>*/ ;
      },
      args);
     /*<<arg.ml:401:52>>*/ return Stdlib[76].call(null, oc) /*<<arg.ml:402:14>>*/ ;
   }
   function write_arg(_s_, _t_){
     /*<<arg.ml:404:16>>*/ return write_aux(10, _s_, _t_);
   }
   function write_arg0(_r_, _s_){
     /*<<arg.ml:406:17>>*/ return write_aux(0, _r_, _s_);
   }
    /*<<arg.ml:406:33>>*/ runtime.caml_register_global
    (55,
     [0,
      parse,
      parse_dynamic,
      parse_argv,
      parse_argv_dynamic,
      parse_and_expand_argv_dynamic,
      parse_expand,
      Help,
      Bad,
      usage,
      usage_string,
      align,
      current,
      read_arg,
      read_arg0,
      write_arg,
      write_arg0],
     "Stdlib__Arg");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Printexc
//# unitInfo: Requires: Stdlib, Stdlib__Atomic, Stdlib__Buffer, Stdlib__Obj, Stdlib__Printf
//# shape: Stdlib__Printexc:[F(1),F(1),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(1),F(1)*,F(1)*,F(2),F(1),F(2),F(1),F(1),F(1),N,F(1)*,F(2),F(1),F(1),F(1),F(1),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_check_bound = runtime.caml_check_bound,
    caml_get_exception_raw_backtra = runtime.caml_get_exception_raw_backtrace,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_obj_tag = runtime.caml_obj_tag,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call5(f, a0, a1, a2, a3, a4){
    return (f.l >= 0 ? f.l : f.l = f.length) === 5
            ? f(a0, a1, a2, a3, a4)
            : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4]);
   }
   function caml_call7(f, a0, a1, a2, a3, a4, a5, a6){
    return (f.l >= 0 ? f.l : f.l = f.length) === 7
            ? f(a0, a1, a2, a3, a4, a5, a6)
            : runtime.caml_call_gen(f, [a0, a1, a2, a3, a4, a5, a6]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Printf = global_data.Stdlib__Printf,
    Stdlib_Atomic = global_data.Stdlib__Atomic,
    Stdlib = global_data.Stdlib,
    Stdlib_Buffer = global_data.Stdlib__Buffer,
    Stdlib_Obj = global_data.Stdlib__Obj,
    printers =  /*<<printexc.ml:20:15>>*/ Stdlib_Atomic[1].call(null, 0),
    _a_ =  /*<<printexc.ml:20:29>>*/ [0, [3, 0, 0], "%S"],
    _b_ = [0, [4, 0, 0, 0, 0], "%d"];
   function field(x, i){
    var f =  /*<<printexc.ml:25:10>>*/ x[i + 1];
     /*<<printexc.ml:26:9>>*/ if(! Stdlib_Obj[1].call(null, f))
      /*<<printexc.ml:27:4>>*/ return caml_call1
             (Stdlib_Printf[4].call(null, _b_), f) /*<<printexc.ml:33:7>>*/ ;
    var _P_ =  /*<<printexc.ml:28:10>>*/ Stdlib_Obj[15];
    if(caml_obj_tag(f) === _P_)
      /*<<printexc.ml:29:4>>*/ return caml_call1
             (Stdlib_Printf[4].call(null, _a_), f) /*<<printexc.ml:33:7>>*/ ;
    var _Q_ =  /*<<printexc.ml:30:10>>*/ Stdlib_Obj[16];
    return caml_obj_tag(f) === _Q_
            ?  /*<<printexc.ml:31:4>>*/ Stdlib[35].call(null, f)
            : "_" /*<<printexc.ml:33:7>>*/ ;
   }
   var
    cst =  /*<<?>>*/ "",
    _c_ =
       /*<<printexc.ml:20:29>>*/ [0, [11, ", ", [2, 0, [2, 0, 0]]], ", %s%s"];
   function other_fields(x, i){
     /*<<printexc.ml:36:2>>*/ if(x.length - 1 <= i)
      /*<<printexc.ml:36:26>>*/ return cst;
    var
     _O_ =  /*<<printexc.ml:37:36>>*/ other_fields(x, i + 1 | 0),
     _P_ =  /*<<printexc.ml:37:24>>*/ field(x, i);
     /*<<printexc.ml:37:35>>*/ return caml_call2
            (Stdlib_Printf[4].call(null, _c_), _P_, _O_) /*<<printexc.ml:37:58>>*/ ;
   }
   function use_printers(x){
    var
     param =
        /*<<printexc.ml:53:28>>*/  /*<<printexc.ml:53:7>>*/ Stdlib_Atomic[3].call
        (null, printers);
     /*<<printexc.ml:53:28>>*/ for(;;){
      /*<<printexc.ml:47:17>>*/ if(! param)
       /*<<printexc.ml:52:12>>*/ return 0;
     var tl =  /*<<printexc.ml:47:17>>*/ param[2], hd = param[1];
      /*<<printexc.ml:49:8>>*/ try{
      var val =  /*<<printexc.ml:49:15>>*/ caml_call1(hd, x);
     }
     catch(_O_){ /*<<?>>*/ param = tl; continue;}
      /*<<printexc.ml:49:8>>*/ if(val){
      var s = val[1];
       /*<<printexc.ml:51:21>>*/ return [0, s];
     }
      /*<<printexc.ml:49:8>>*/ param = tl;
    }
    /*<<printexc.ml:53:28>>*/ }
   var
    _d_ =
       /*<<printexc.ml:20:29>>*/ [0,
       [12, 40, [2, 0, [2, 0, [12, 41, 0]]]],
       "(%s%s)"],
    _e_ = [0, [12, 40, [2, 0, [12, 41, 0]]], "(%s)"];
   function string_of_extension_constructo(t){
     /*<<printexc.ml:56:5>>*/ if(0 === caml_obj_tag(t)){
     var
      constructor =  /*<<printexc.ml:60:17>>*/ t[1][1],
      match =  /*<<printexc.ml:40:2>>*/ t.length - 1;
     if(2 < match >>> 0)
      var
       _M_ =  /*<<printexc.ml:44:38>>*/ other_fields(t, 2),
       _N_ =  /*<<printexc.ml:44:26>>*/ field(t, 1),
       _L_ =
          /*<<printexc.ml:44:37>>*/ caml_call2
          (Stdlib_Printf[4].call(null, _d_), _N_, _M_);
     else
       /*<<printexc.ml:40:2>>*/ switch(match){
        case 2:
         var
          _O_ =  /*<<printexc.ml:43:24>>*/ field(t, 1),
          _L_ =
             /*<<printexc.ml:43:35>>*/ caml_call1
             (Stdlib_Printf[4].call(null, _e_), _O_);
         break;
        case 0:
         var _L_ =  /*<<printexc.ml:40:2>>*/ cst; break;
        default: var _L_ = cst;
      }
     var match$0 =  /*<<printexc.ml:61:33>>*/ [0, constructor, [0, _L_]];
    }
    else
     var match$0 =  /*<<printexc.ml:57:31>>*/ [0, t[1], 0];
    var
     fields_opt =  /*<<printexc.ml:64:58>>*/ match$0[2],
     constructor$0 = match$0[1];
     /*<<printexc.ml:65:2>>*/ if(! fields_opt)
      /*<<printexc.ml:66:12>>*/ return constructor$0;
    var f =  /*<<printexc.ml:65:2>>*/ fields_opt[1];
     /*<<printexc.ml:67:14>>*/ return Stdlib[28].call(null, constructor$0, f) /*<<printexc.ml:67:29>>*/ ;
   }
   var
    cst_characters =  /*<<?>>*/ ", characters ",
    locfmt =
      [0,
       [11,
        'File "',
        [2,
         0,
         [11,
          '", line ',
          [4,
           0,
           0,
           0,
           [11,
            cst_characters,
            [4, 0, 0, 0, [12, 45, [4, 0, 0, 0, [11, ": ", [2, 0, 0]]]]]]]]]],
       'File "%s", line %d, characters %d-%d: %s'];
   function to_string_default(x){
     /*<<printexc.ml:69:24>>*/ if(x === Stdlib[9])
      /*<<printexc.ml:70:21>>*/ return "Out of memory";
     /*<<printexc.ml:69:24>>*/ if(x === Stdlib[10])
      /*<<printexc.ml:71:22>>*/ return "Stack overflow";
     /*<<printexc.ml:69:24>>*/ if(x[1] === Stdlib[4]){
     var match = x[2], char = match[3], line = match[2], file = match[1];
      /*<<printexc.ml:73:6>>*/ return caml_call5
             (Stdlib_Printf[4].call(null, locfmt),
              file,
              line,
              char,
              char + 5 | 0,
              "Pattern matching failed") /*<<printexc.ml:79:50>>*/ ;
    }
     /*<<printexc.ml:69:24>>*/ if(x[1] === Stdlib[5]){
     var
      match$0 = x[2],
      char$0 = match$0[3],
      line$0 = match$0[2],
      file$0 = match$0[1];
      /*<<printexc.ml:75:6>>*/ return caml_call5
             (Stdlib_Printf[4].call(null, locfmt),
              file$0,
              line$0,
              char$0,
              char$0 + 6 | 0,
              "Assertion failed") /*<<printexc.ml:79:50>>*/ ;
    }
     /*<<printexc.ml:69:24>>*/ if(x[1] !== Stdlib[15])
      /*<<printexc.ml:79:6>>*/ return string_of_extension_constructo(x) /*<<printexc.ml:79:50>>*/ ;
    var
     match$1 =  /*<<printexc.ml:69:24>>*/ x[2],
     char$1 = match$1[3],
     line$1 = match$1[2],
     file$1 = match$1[1];
     /*<<printexc.ml:77:6>>*/ return caml_call5
            (Stdlib_Printf[4].call(null, locfmt),
             file$1,
             line$1,
             char$1,
             char$1 + 6 | 0,
             "Undefined recursive module") /*<<printexc.ml:79:50>>*/ ;
   }
   function to_string(e){
    var match =  /*<<printexc.ml:82:8>>*/ use_printers(e);
     /*<<printexc.ml:82:22>>*/ if(! match)
      /*<<printexc.ml:84:12>>*/ return to_string_default(e) /*<<printexc.ml:84:31>>*/ ;
    var s =  /*<<printexc.ml:82:22>>*/ match[1];
     /*<<printexc.ml:83:14>>*/ return s;
    /*<<printexc.ml:84:31>>*/ }
   var
    cst_Uncaught_exception =  /*<<?>>*/ "Uncaught exception: ",
    cst_Uncaught_exception_s = "Uncaught exception: %s\n",
    _f_ =
       /*<<printexc.ml:20:29>>*/ [0,
       [11, cst_Uncaught_exception, [2, 0, [12, 10, 0]]],
       cst_Uncaught_exception_s];
   function print(fct, arg){
     /*<<printexc.ml:87:2>>*/ try{
     var _L_ =  /*<<printexc.ml:88:4>>*/ caml_call1(fct, arg);
     return _L_;
    }
    catch(x$0){
     var
      x =  /*<<?>>*/ caml_wrap_exception(x$0),
      _K_ =  /*<<printexc.ml:90:39>>*/ to_string(x);
      /*<<printexc.ml:90:4>>*/ caml_call1
      (Stdlib_Printf[3].call(null, _f_), _K_);
      /*<<printexc.ml:91:4>>*/ Stdlib[63].call(null, Stdlib[40]);
      /*<<printexc.ml:91:16>>*/ throw caml_maybe_attach_backtrace(x, 0);
    }
    /*<<printexc.ml:92:11>>*/ }
   var
    _g_ =
       /*<<printexc.ml:20:29>>*/ [0,
       [11, cst_Uncaught_exception, [2, 0, [12, 10, 0]]],
       cst_Uncaught_exception_s];
   function catch$(fct, arg){
     /*<<printexc.ml:95:2>>*/ try{
     var _K_ =  /*<<printexc.ml:96:4>>*/ caml_call1(fct, arg);
     return _K_;
    }
    catch(x$0){
     var x =  /*<<?>>*/ caml_wrap_exception(x$0);
      /*<<printexc.ml:98:4>>*/ Stdlib[63].call(null, Stdlib[39]);
     var _J_ =  /*<<printexc.ml:99:39>>*/ to_string(x);
      /*<<printexc.ml:99:4>>*/ caml_call1
      (Stdlib_Printf[3].call(null, _g_), _J_);
      /*<<printexc.ml:99:52>>*/ return Stdlib[99].call(null, 2) /*<<printexc.ml:100:10>>*/ ;
    }
   }
   function raw_backtrace_entries(bt){
     /*<<printexc.ml:106:31>>*/ return bt;
    /*<<printexc.ml:106:33>>*/ }
   function convert_raw_backtrace(bt){
     /*<<printexc.ml:138:11>>*/ return [0,
            runtime.caml_convert_raw_backtrace(bt)] /*<<printexc.ml:138:37>>*/ ;
    /*<<printexc.ml:139:24>>*/ }
   var
    _h_ =  /*<<printexc.ml:20:29>>*/ [0, [12, 32, [4, 0, 0, 0, 0]], " %d"],
    _i_ =
      [0,
       [2,
        0,
        [12,
         32,
         [2,
          0,
          [11,
           ' in file "',
           [2,
            0,
            [12,
             34,
             [2,
              0,
              [11,
               ", line",
               [2,
                0,
                [11, cst_characters, [4, 0, 0, 0, [12, 45, [4, 0, 0, 0, 0]]]]]]]]]]]]],
       '%s %s in file "%s"%s, line%s, characters %d-%d'],
    _j_ = [0, [11, "s ", [4, 0, 0, 0, [12, 45, [4, 0, 0, 0, 0]]]], "s %d-%d"],
    _k_ = [0, [2, 0, [11, " unknown location", 0]], "%s unknown location"];
   function format_backtrace_slot(pos, slot){
    function info(is_raise){
      /*<<printexc.ml:143:4>>*/ return is_raise
             ? 0 === pos ? "Raised at" : "Re-raised at"
             : 0 === pos ? "Raised by primitive operation at" : "Called from" /*<<printexc.ml:146:75>>*/ ;
    }
     /*<<printexc.ml:148:2>>*/ if(0 !== slot[0]){
      /*<<printexc.ml:150:6>>*/ if(slot[1])
       /*<<printexc.ml:151:50>>*/ return 0;
     var _J_ =  /*<<printexc.ml:153:44>>*/ info(0);
      /*<<printexc.ml:153:13>>*/ return [0,
             caml_call1(Stdlib_Printf[4].call(null, _k_), _J_)] /*<<printexc.ml:153:57>>*/ ;
    }
     /*<<printexc.ml:155:6>>*/ if(slot[3] === slot[6])
     var
      _A_ =  /*<<printexc.ml:157:10>>*/ slot[3],
      lines =
         /*<<printexc.ml:157:43>>*/  /*<<printexc.ml:157:10>>*/ caml_call1
         (Stdlib_Printf[4].call(null, _h_), _A_);
    else
     var
      _H_ =  /*<<printexc.ml:159:10>>*/ slot[6],
      _I_ = slot[3],
      lines =
         /*<<printexc.ml:159:58>>*/  /*<<printexc.ml:159:10>>*/ caml_call2
         (Stdlib_Printf[4].call(null, _j_), _I_, _H_);
    var
     _B_ =  /*<<printexc.ml:161:6>>*/ slot[7],
     _C_ = slot[4],
     _D_ = slot[8] ? " (inlined)" : cst,
     _E_ =  /*<<printexc.ml:162:14>>*/ slot[2],
     _F_ = slot[9],
     _G_ = info(slot[1]);
     /*<<printexc.ml:161:11>>*/ return [0,
            caml_call7
             (Stdlib_Printf[4].call(null, _i_),
              _G_,
              _F_,
              _E_,
              _D_,
              lines,
              _C_,
              _B_)] /*<<printexc.ml:164:44>>*/ ;
   }
   var
    cst_s =  /*<<?>>*/ "%s\n",
    cst_Program_not_linked_with_g_ =
      "(Program not linked with -g, cannot print stack backtrace)\n",
    _l_ =  /*<<printexc.ml:20:29>>*/ [0, [2, 0, [12, 10, 0]], cst_s],
    _m_ =
      [0,
       [11, cst_Program_not_linked_with_g_, 0],
       cst_Program_not_linked_with_g_];
   function print_raw_backtrace(outchan, raw_backtrace){
    var
     backtrace =
        /*<<printexc.ml:179:36>>*/ convert_raw_backtrace(raw_backtrace);
     /*<<printexc.ml:167:2>>*/ if(! backtrace)
      /*<<printexc.ml:169:6>>*/ return Stdlib_Printf[1].call
             (null, outchan, _m_) /*<<printexc.ml:179:73>>*/ ;
    var
     a =  /*<<printexc.ml:167:2>>*/ backtrace[1],
     _z_ =  /*<<printexc.ml:172:6>>*/ a.length - 2 | 0;
    if(_z_ >= 0){
     var i = 0;
     for(;;){
      var
       match =
          /*<<printexc.ml:173:38>>*/  /*<<printexc.ml:173:14>>*/ format_backtrace_slot
          (i,  /*<<printexc.ml:173:38>>*/ caml_check_bound(a, i)[i + 1]);
       /*<<printexc.ml:173:43>>*/ if(match){
       var str = match[1];
        /*<<printexc.ml:175:24>>*/ caml_call1
        (Stdlib_Printf[1].call(null, outchan, _l_), str);
      }
      var _A_ =  /*<<printexc.ml:173:43>>*/ i + 1 | 0;
      if(_z_ === i) break;
      i = _A_;
     }
    }
     /*<<printexc.ml:172:6>>*/ return 0;
    /*<<printexc.ml:179:73>>*/ }
   function print_backtrace(outchan){
     /*<<printexc.ml:183:30>>*/ return  /*<<printexc.ml:183:52>>*/ print_raw_backtrace
            (outchan,
              /*<<printexc.ml:183:30>>*/ caml_get_exception_raw_backtra(0)) /*<<printexc.ml:183:52>>*/ ;
   }
   var _n_ =  /*<<printexc.ml:20:29>>*/ [0, [2, 0, [12, 10, 0]], cst_s];
   function raw_backtrace_to_string(raw_backtrace){
    var
     backtrace =
        /*<<printexc.ml:199:22>>*/ convert_raw_backtrace(raw_backtrace);
     /*<<printexc.ml:186:2>>*/ if(! backtrace)
      /*<<printexc.ml:188:5>>*/ return cst_Program_not_linked_with_g_;
    var
     a =  /*<<printexc.ml:186:2>>*/ backtrace[1],
     b =  /*<<printexc.ml:190:14>>*/ Stdlib_Buffer[1].call(null, 1024),
     _y_ =  /*<<printexc.ml:191:6>>*/ a.length - 2 | 0;
    if(_y_ >= 0){
     var i = 0;
     for(;;){
      var
       match =
          /*<<printexc.ml:192:38>>*/  /*<<printexc.ml:192:14>>*/ format_backtrace_slot
          (i,  /*<<printexc.ml:192:38>>*/ caml_check_bound(a, i)[i + 1]);
       /*<<printexc.ml:192:43>>*/ if(match){
       var str = match[1];
        /*<<printexc.ml:194:24>>*/ caml_call1
        (Stdlib_Printf[5].call(null, b, _n_), str);
      }
      var _z_ =  /*<<printexc.ml:192:43>>*/ i + 1 | 0;
      if(_y_ === i) break;
      i = _z_;
     }
    }
     /*<<printexc.ml:196:6>>*/ return Stdlib_Buffer[2].call(null, b) /*<<printexc.ml:199:59>>*/ ;
   }
   function backtrace_slot_is_raise(param){
     /*<<printexc.ml:201:30>>*/ return 0 === param[0] ? param[1] : param[1] /*<<printexc.ml:203:36>>*/ ;
   }
   function backtrace_slot_is_inline(param){
     /*<<printexc.ml:205:31>>*/ return 0 === param[0] ? param[8] : 0 /*<<printexc.ml:207:31>>*/ ;
   }
   function backtrace_slot_location(param){
     /*<<printexc.ml:218:30>>*/ return 0 === param[0]
            ? [0,
              [0, param[2], param[3], param[4], param[5], param[6], param[7]]]
            : 0 /*<<printexc.ml:228:5>>*/ ;
   }
   function backtrace_slot_defname(param){
     /*<<printexc.ml:230:29>>*/ if(0 === param[0] && param[9] !== cst)
      /*<<printexc.ml:233:24>>*/ return [0, param[9]];
     /*<<printexc.ml:232:39>>*/ return 0;
    /*<<printexc.ml:233:38>>*/ }
   function backtrace_slots(raw_backtrace){
    var
     match =  /*<<printexc.ml:242:8>>*/ convert_raw_backtrace(raw_backtrace);
     /*<<printexc.ml:242:43>>*/ if(! match)
      /*<<printexc.ml:243:14>>*/ return 0;
    var
     backtrace =  /*<<printexc.ml:242:43>>*/ match[1],
     i$1 =  /*<<printexc.ml:251:6>>*/ backtrace.length - 2 | 0,
     i =  /*<<printexc.ml:251:9>>*/ i$1;
    for(;;){
      /*<<printexc.ml:248:30>>*/ if(-1 === i)
      var _y_ =  /*<<printexc.ml:249:18>>*/ 0;
     else{
      var
       _x_ =
          /*<<printexc.ml:250:27>>*/ 0
          === caml_check_bound(backtrace, i)[i + 1][0]
          ? 1
          : 0;
       /*<<printexc.ml:250:40>>*/ if(! _x_){
       var i$0 = i - 1 | 0;
       i = i$0;
       continue;
      }
      var _y_ = _x_;
     }
      /*<<printexc.ml:251:51>>*/ return _y_ ? [0, backtrace] : 0 /*<<printexc.ml:253:15>>*/ ;
    }
   }
   function backtrace_slots_of_raw_entry(entry){
     /*<<printexc.ml:256:2>>*/ return backtrace_slots([0, entry]) /*<<printexc.ml:256:29>>*/ ;
   }
   function raw_backtrace_length(bt){
     /*<<printexc.ml:267:30>>*/ return bt.length - 1;
    /*<<printexc.ml:267:45>>*/ }
   function get_backtrace(param){
     /*<<printexc.ml:278:47>>*/ return  /*<<printexc.ml:278:69>>*/ raw_backtrace_to_string
            ( /*<<printexc.ml:278:47>>*/ caml_get_exception_raw_backtra(0)) /*<<printexc.ml:278:69>>*/ ;
   }
   function register_printer(fn){
     /*<<printexc.ml:284:2>>*/ for(;;){
     var
      old_printers =
         /*<<printexc.ml:284:21>>*/ Stdlib_Atomic[3].call(null, printers),
      new_printers =  /*<<printexc.ml:285:2>>*/ [0, fn, old_printers],
      success =
         /*<<printexc.ml:286:16>>*/ Stdlib_Atomic[6].call
         (null, printers, old_printers, new_printers),
      _x_ =  /*<<printexc.ml:287:2>>*/ 1 - success;
     if(! _x_) return _x_;
    }
    /*<<printexc.ml:287:41>>*/ }
   function exn_slot(x){
     /*<<printexc.ml:293:5>>*/ return 0 === caml_obj_tag(x) ? x[1] : x /*<<printexc.ml:293:44>>*/ ;
   }
   function exn_slot_id(x){
    var slot =  /*<<printexc.ml:296:13>>*/ exn_slot(x);
     /*<<printexc.ml:297:29>>*/ return slot[2];
    /*<<printexc.ml:297:36>>*/ }
   function exn_slot_name(x){
    var slot =  /*<<printexc.ml:300:13>>*/ exn_slot(x);
     /*<<printexc.ml:301:29>>*/ return slot[1];
    /*<<printexc.ml:301:39>>*/ }
   var
    errors =
       /*<<printexc.ml:20:29>>*/ runtime.caml_obj_dup
       ([0,
         cst,
         "(Cannot print locations:\n bytecode executable program file not found)",
         "(Cannot print locations:\n bytecode executable program file appears to be corrupt)",
         "(Cannot print locations:\n bytecode executable program file has wrong magic number)",
         "(Cannot print locations:\n bytecode executable program file cannot be opened;\n -- too many open files. Try running with OCAMLRUNPARAM=b=2)"]),
    cst_Fatal_error_exception =  /*<<?>>*/ "Fatal error: exception ",
    cst_Fatal_error_exception_s = "Fatal error: exception %s\n",
    _o_ =
       /*<<printexc.ml:20:29>>*/ [0,
       [11, cst_Fatal_error_exception, [2, 0, [12, 10, 0]]],
       cst_Fatal_error_exception_s];
   function default_uncaught_exception_han(exn, raw_backtrace){
    var _w_ =  /*<<printexc.ml:323:40>>*/ to_string(exn);
     /*<<printexc.ml:323:2>>*/ caml_call1
     (Stdlib_Printf[3].call(null, _o_), _w_);
     /*<<printexc.ml:324:2>>*/ print_raw_backtrace(Stdlib[40], raw_backtrace);
    var
     status =  /*<<printexc.ml:325:15>>*/ runtime.caml_ml_debug_info_status(0);
     /*<<printexc.ml:326:2>>*/ if(status < 0){
     var
      _v_ =  /*<<printexc.ml:327:26>>*/ Stdlib[18].call(null, status),
      _x_ =  /*<<printexc.ml:327:18>>*/ caml_check_bound(errors, _v_)[_v_ + 1];
      /*<<printexc.ml:327:4>>*/ Stdlib[53].call(null, _x_);
    }
     /*<<printexc.ml:328:2>>*/ return Stdlib[63].call(null, Stdlib[40]) /*<<printexc.ml:328:14>>*/ ;
   }
   var
    uncaught_exception_handler =
       /*<<printexc.ml:20:29>>*/ [0, default_uncaught_exception_han];
   function set_uncaught_exception_handler(fn){
     /*<<printexc.ml:332:40>>*/ uncaught_exception_handler[1] = fn;
    return 0;
    /*<<printexc.ml:332:72>>*/ }
   var
    empty_backtrace =  /*<<printexc.ml:20:29>>*/ [0],
    _p_ =
      [0,
       [11, cst_Fatal_error_exception, [2, 0, [12, 10, 0]]],
       cst_Fatal_error_exception_s],
    _q_ =
      [0,
       [11,
        "Fatal error in uncaught exception handler: exception ",
        [2, 0, [12, 10, 0]]],
       "Fatal error in uncaught exception handler: exception %s\n"];
   function handle_uncaught_exception(exn$1, debugger_in_use){
     /*<<printexc.ml:371:2>>*/ try{
      /*<<printexc.ml:343:2>>*/ try{
      var
       raw_backtrace =
         debugger_in_use
          ? empty_backtrace
          :  /*<<printexc.ml:338:4>>*/ caml_get_exception_raw_backtra(0);
       /*<<printexc.ml:352:4>>*/ try{
        /*<<printexc.ml:352:9>>*/ Stdlib[103].call(null, 0);
      }
      catch(exn){}
       /*<<printexc.ml:353:4>>*/ try{
       var
        _v_ =
           /*<<printexc.ml:354:6>>*/ caml_call2
           (uncaught_exception_handler[1], exn$1, raw_backtrace),
        _r_ = _v_;
      }
      catch(exn){
       var
        exn$0 =  /*<<?>>*/ caml_wrap_exception(exn),
        raw_backtrace$0 =
           /*<<printexc.ml:338:4>>*/ caml_get_exception_raw_backtra(0),
        _t_ =  /*<<printexc.ml:357:44>>*/ to_string(exn$1);
        /*<<printexc.ml:357:6>>*/ caml_call1
        (Stdlib_Printf[3].call(null, _p_), _t_);
        /*<<printexc.ml:358:6>>*/ print_raw_backtrace
        (Stdlib[40], raw_backtrace);
       var _u_ =  /*<<printexc.ml:360:8>>*/ to_string(exn$0);
        /*<<printexc.ml:359:6>>*/ caml_call1
        (Stdlib_Printf[3].call(null, _q_), _u_);
        /*<<printexc.ml:361:6>>*/ print_raw_backtrace
        (Stdlib[40], raw_backtrace$0);
       var
        _r_ =
           /*<<printexc.ml:362:18>>*/  /*<<printexc.ml:362:6>>*/ Stdlib[63].call
           (null, Stdlib[40]);
      }
      var _s_ = _r_;
     }
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn !== Stdlib[9]) throw caml_maybe_attach_backtrace(exn, 0);
      var
       _s_ =
          /*<<printexc.ml:365:8>>*/ Stdlib[53].call
          (null, "Fatal error: out of memory in uncaught exception handler");
     }
     return _s_;
    }
    catch(exn){ /*<<printexc.ml:375:4>>*/ return 0;}
    /*<<printexc.ml:375:6>>*/ }
    /*<<printexc.ml:381:2>>*/ runtime.caml_register_named_value
    ("Printexc.handle_uncaught_exception", handle_uncaught_exception);
   var
    Stdlib_Printexc =
       /*<<printexc.ml:382:29>>*/ [0,
       to_string,
       to_string_default,
       print,
       catch$,
       print_backtrace,
       get_backtrace,
       runtime.caml_record_backtrace,
       runtime.caml_backtrace_status,
       register_printer,
       use_printers,
       raw_backtrace_entries,
       caml_get_exception_raw_backtra,
       print_raw_backtrace,
       raw_backtrace_to_string,
       default_uncaught_exception_han,
       set_uncaught_exception_handler,
       backtrace_slots,
       backtrace_slots_of_raw_entry,
       [0,
        backtrace_slot_is_raise,
        backtrace_slot_is_inline,
        backtrace_slot_location,
        backtrace_slot_defname,
        format_backtrace_slot],
       raw_backtrace_length,
       runtime.caml_raw_backtrace_slot,
       runtime.caml_convert_raw_backtrace_slot,
       runtime.caml_raw_backtrace_next_slot,
       exn_slot_id,
       exn_slot_name,
       string_of_extension_constructo];
   runtime.caml_register_global(43, Stdlib_Printexc, "Stdlib__Printexc");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Fun
//# unitInfo: Requires: Stdlib, Stdlib__Printexc
//# shape: Stdlib__Fun:[F(2)*,F(3),F(3),F(2),F(2),N]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_restore_raw_backtrace = runtime.caml_restore_raw_backtrace,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Printexc = global_data.Stdlib__Printexc,
    Stdlib = global_data.Stdlib;
   function const$(c, param){
     /*<<fun.ml:17:16>>*/ return c;
    /*<<fun.ml:17:17>>*/ }
   function compose(f, g, x){
     /*<<fun.ml:18:22>>*/ return  /*<<fun.ml:18:27>>*/ caml_call1
            (f,  /*<<fun.ml:18:22>>*/ caml_call1(g, x)) /*<<fun.ml:18:27>>*/ ;
   }
   function flip(f, x, y){
     /*<<fun.ml:19:17>>*/ return caml_call2(f, y, x) /*<<fun.ml:19:22>>*/ ;
   }
   function negate(p, v){
     /*<<fun.ml:20:21>>*/ return 1 - caml_call1(p, v) /*<<fun.ml:20:26>>*/ ;
   }
   var
    Finally_raised =
       /*<<?>>*/ [248,
       "Stdlib.Fun.Finally_raised",
       runtime.caml_fresh_oo_id(0)];
    /*<<fun.ml:24:9>>*/ Stdlib_Printexc[9].call
    (null,
     function(param){
       /*<<fun.ml:24:38>>*/ if(param[1] !== Finally_raised)
        /*<<fun.ml:26:7>>*/ return 0;
      var
       exn =  /*<<fun.ml:24:38>>*/ param[2],
       _a_ =  /*<<fun.ml:25:55>>*/ Stdlib_Printexc[1].call(null, exn);
       /*<<fun.ml:25:29>>*/ return [0,
              Stdlib[28].call(null, "Fun.Finally_raised: ", _a_)] /*<<fun.ml:25:78>>*/ ;
      /*<<fun.ml:26:11>>*/ });
   var dummy = 0;
   function protect(finally$, work){
    function finally_no_exn(param){
      /*<<fun.ml:30:4>>*/ try{
       /*<<fun.ml:30:8>>*/ caml_call1(finally$, 0);
      return;
     }
     catch(e$0){
      var
       e =  /*<<?>>*/ caml_wrap_exception(e$0),
       bt =  /*<<fun.ml:31:15>>*/ Stdlib_Printexc[12].call(null, 0),
       exn =  /*<<fun.ml:32:6>>*/ [0, Finally_raised, e];
      caml_restore_raw_backtrace(exn, bt);
      throw caml_maybe_attach_backtrace(exn, 0);
     }
     /*<<fun.ml:32:57>>*/ }
     /*<<fun.ml:34:2>>*/ try{
     var result =  /*<<fun.ml:34:8>>*/ caml_call1(work, 0);
    }
    catch(work_exn$0){
     var
      work_exn =  /*<<?>>*/ caml_wrap_exception(work_exn$0),
      work_bt =  /*<<fun.ml:37:20>>*/ Stdlib_Printexc[12].call(null, 0);
      /*<<fun.ml:38:6>>*/ finally_no_exn(0);
      /*<<fun.ml:38:23>>*/ caml_restore_raw_backtrace(work_exn, work_bt);
     throw caml_maybe_attach_backtrace(work_exn, 0);
    }
     /*<<fun.ml:35:14>>*/ finally_no_exn(0);
     /*<<fun.ml:35:31>>*/ return result;
    /*<<fun.ml:39:52>>*/ }
    /*<<fun.ml:26:11>>*/ runtime.caml_register_global
    (4,
     [0, const$, compose, flip, negate, protect, Finally_raised],
     "Stdlib__Fun");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Gc
//# unitInfo: Requires: Stdlib, Stdlib__Atomic, Stdlib__Domain, Stdlib__Fun, Stdlib__Printf, Stdlib__Sys
//# shape: Stdlib__Gc:[F(1),F(1),F(2)*,F(2),F(1)*,F(1),F(1),F(1)*,F(1)*,N]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_ml_string_length = runtime.caml_ml_string_length;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Atomic = global_data.Stdlib__Atomic;
   global_data.Stdlib__Fun;
   var
    Stdlib = global_data.Stdlib,
    Stdlib_Domain = global_data.Stdlib__Domain,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Printf = global_data.Stdlib__Printf;
   function eventlog_pause(param){
     /*<<gc.ml:65:24>>*/ return 0;
    /*<<gc.ml:65:26>>*/ }
   function eventlog_resume(param){ /*<<gc.ml:66:25>>*/ return 0;
    /*<<gc.ml:66:27>>*/ }
   var
    cst =  /*<<?>>*/ "\n",
    _a_ =
      [0,
       [11, "minor_collections:      ", [4, 0, 0, 0, [12, 10, 0]]],
       "minor_collections:      %d\n"],
    _b_ =
      [0,
       [11, "major_collections:      ", [4, 0, 0, 0, [12, 10, 0]]],
       "major_collections:      %d\n"],
    _c_ =
      [0,
       [11, "compactions:            ", [4, 0, 0, 0, [12, 10, 0]]],
       "compactions:            %d\n"],
    _d_ =
      [0,
       [11, "forced_major_collections: ", [4, 0, 0, 0, [12, 10, 0]]],
       "forced_major_collections: %d\n"],
    _e_ = [0, [12, 10, 0], cst],
    _f_ = [0, [8, [0, 0, 0], 0, [0, 0], 0], "%.0f"],
    _g_ =
      [0,
       [11, "minor_words:    ", [8, [0, 0, 0], [1, 1], [0, 0], [12, 10, 0]]],
       "minor_words:    %*.0f\n"],
    _h_ =
      [0,
       [11, "promoted_words: ", [8, [0, 0, 0], [1, 1], [0, 0], [12, 10, 0]]],
       "promoted_words: %*.0f\n"],
    _i_ =
      [0,
       [11, "major_words:    ", [8, [0, 0, 0], [1, 1], [0, 0], [12, 10, 0]]],
       "major_words:    %*.0f\n"],
    _j_ = [0, [12, 10, 0], cst],
    _k_ = [0, [4, 0, 0, 0, 0], "%d"],
    _l_ =
      [0,
       [11, "top_heap_words: ", [4, 0, [1, 1], 0, [12, 10, 0]]],
       "top_heap_words: %*d\n"],
    _m_ =
      [0,
       [11, "heap_words:     ", [4, 0, [1, 1], 0, [12, 10, 0]]],
       "heap_words:     %*d\n"],
    _n_ =
      [0,
       [11, "live_words:     ", [4, 0, [1, 1], 0, [12, 10, 0]]],
       "live_words:     %*d\n"],
    _o_ =
      [0,
       [11, "free_words:     ", [4, 0, [1, 1], 0, [12, 10, 0]]],
       "free_words:     %*d\n"],
    _p_ =
      [0,
       [11, "largest_free:   ", [4, 0, [1, 1], 0, [12, 10, 0]]],
       "largest_free:   %*d\n"],
    _q_ =
      [0,
       [11, "fragments:      ", [4, 0, [1, 1], 0, [12, 10, 0]]],
       "fragments:      %*d\n"],
    _r_ = [0, [12, 10, 0], cst],
    _s_ =
      [0,
       [11, "live_blocks: ", [4, 0, 0, 0, [12, 10, 0]]],
       "live_blocks: %d\n"],
    _t_ =
      [0,
       [11, "free_blocks: ", [4, 0, 0, 0, [12, 10, 0]]],
       "free_blocks: %d\n"],
    _u_ =
      [0,
       [11, "heap_chunks: ", [4, 0, 0, 0, [12, 10, 0]]],
       "heap_chunks: %d\n"];
   function print_stat(c){
    var
     st =  /*<<gc.ml:71:11>>*/ runtime.caml_gc_stat(0),
     _v_ =  /*<<gc.ml:72:2>>*/ st[4];
    caml_call1(Stdlib_Printf[1].call(null, c, _a_), _v_);
    var _w_ =  /*<<gc.ml:73:2>>*/ st[5];
    caml_call1(Stdlib_Printf[1].call(null, c, _b_), _w_);
    var _x_ =  /*<<gc.ml:74:2>>*/ st[14];
    caml_call1(Stdlib_Printf[1].call(null, c, _c_), _x_);
    var _y_ =  /*<<gc.ml:75:2>>*/ st[17];
    caml_call1(Stdlib_Printf[1].call(null, c, _d_), _y_);
     /*<<gc.ml:76:2>>*/ Stdlib_Printf[1].call(null, c, _e_);
    var
     _z_ =  /*<<gc.ml:77:25>>*/ st[1],
     l1 =
        /*<<gc.ml:77:56>>*/ caml_ml_string_length
        ( /*<<gc.ml:77:25>>*/ caml_call1
          (Stdlib_Printf[4].call(null, _f_), _z_)),
     _A_ =  /*<<gc.ml:78:2>>*/ st[1];
    caml_call2(Stdlib_Printf[1].call(null, c, _g_), l1, _A_);
    var _B_ =  /*<<gc.ml:79:2>>*/ st[2];
    caml_call2(Stdlib_Printf[1].call(null, c, _h_), l1, _B_);
    var _C_ =  /*<<gc.ml:80:2>>*/ st[3];
    caml_call2(Stdlib_Printf[1].call(null, c, _i_), l1, _C_);
     /*<<gc.ml:81:2>>*/ Stdlib_Printf[1].call(null, c, _j_);
    var
     _D_ =  /*<<gc.ml:82:25>>*/ st[15],
     l2 =
        /*<<gc.ml:82:57>>*/ caml_ml_string_length
        ( /*<<gc.ml:82:25>>*/ caml_call1
          (Stdlib_Printf[4].call(null, _k_), _D_)),
     _E_ =  /*<<gc.ml:83:2>>*/ st[15];
    caml_call2(Stdlib_Printf[1].call(null, c, _l_), l2, _E_);
    var _F_ =  /*<<gc.ml:84:2>>*/ st[6];
    caml_call2(Stdlib_Printf[1].call(null, c, _m_), l2, _F_);
    var _G_ =  /*<<gc.ml:85:2>>*/ st[8];
    caml_call2(Stdlib_Printf[1].call(null, c, _n_), l2, _G_);
    var _H_ =  /*<<gc.ml:86:2>>*/ st[10];
    caml_call2(Stdlib_Printf[1].call(null, c, _o_), l2, _H_);
    var _I_ =  /*<<gc.ml:87:2>>*/ st[12];
    caml_call2(Stdlib_Printf[1].call(null, c, _p_), l2, _I_);
    var _J_ =  /*<<gc.ml:88:2>>*/ st[13];
    caml_call2(Stdlib_Printf[1].call(null, c, _q_), l2, _J_);
     /*<<gc.ml:89:2>>*/ Stdlib_Printf[1].call(null, c, _r_);
    var _K_ =  /*<<gc.ml:90:2>>*/ st[9];
    caml_call1(Stdlib_Printf[1].call(null, c, _s_), _K_);
    var _L_ =  /*<<gc.ml:91:2>>*/ st[11];
    caml_call1(Stdlib_Printf[1].call(null, c, _t_), _L_);
    var _M_ =  /*<<gc.ml:91:46>>*/ st[7];
    return caml_call1(Stdlib_Printf[1].call(null, c, _u_), _M_) /*<<gc.ml:92:46>>*/ ;
   }
   function allocated_bytes(param){
    var
     match =  /*<<gc.ml:96:22>>*/ runtime.caml_gc_counters(0),
     ma =  /*<<gc.ml:96:33>>*/ match[3],
     pro = match[2],
     mi = match[1];
     /*<<gc.ml:97:55>>*/ return (mi + ma - pro) * (Stdlib_Sys[10] / 8 | 0);
   }
   function delete_alarm(a){
     /*<<gc.ml:115:21>>*/ return Stdlib_Atomic[4].call(null, a, 0) /*<<gc.ml:115:39>>*/ ;
   }
   function create_alarm(f){
    var alarm =  /*<<gc.ml:119:14>>*/ Stdlib_Atomic[1].call(null, 1);
     /*<<gc.ml:120:2>>*/ Stdlib_Domain[6].call
     (null,
      function(param){
        /*<<gc.ml:120:28>>*/ return delete_alarm(alarm) /*<<gc.ml:120:46>>*/ ;
      });
     /*<<gc.ml:122:26>>*/ return alarm;
    /*<<gc.ml:123:7>>*/ }
   function string_of_allocation_source(param){
     /*<<gc.ml:131:38>>*/ switch(param){
      case 0:
        /*<<gc.ml:132:18>>*/ return "Normal";
      case 1:
        /*<<gc.ml:133:19>>*/ return "Marshal";
      case 2:
        /*<<gc.ml:134:18>>*/ return "Custom";
      default:  /*<<gc.ml:135:20>>*/ return "Map_file";
    }
    /*<<gc.ml:135:30>>*/ }
   var
    null_tracker =
       /*<<?>>*/ [0,
       function(param){ /*<<gc.ml:152:30>>*/ return 0; /*<<gc.ml:152:34>>*/ },
       function(param){ /*<<gc.ml:153:30>>*/ return 0; /*<<gc.ml:153:34>>*/ },
       function(param){ /*<<gc.ml:154:26>>*/ return 0; /*<<gc.ml:154:30>>*/ },
       function(param){ /*<<gc.ml:155:32>>*/ return 0; /*<<gc.ml:155:34>>*/ },
       function(param){ /*<<gc.ml:156:32>>*/ return 0; /*<<gc.ml:156:34>>*/ }];
   function start(sampling_rate, opt, tracker){
    var callstack_size =  /*<<gc.ml:164:6>>*/ opt ? opt[1] : Stdlib[19];
     /*<<gc.ml:167:6>>*/ return runtime.caml_memprof_start
            (sampling_rate, callstack_size, tracker) /*<<gc.ml:167:50>>*/ ;
   }
   var
    Stdlib_Gc =
       /*<<?>>*/ [0,
       print_stat,
       allocated_bytes,
       runtime.caml_final_register,
       runtime.caml_final_register_called_without_value,
       runtime.caml_final_release,
       create_alarm,
       delete_alarm,
       eventlog_pause,
       eventlog_resume,
       [0,
        string_of_allocation_source,
        null_tracker,
        start,
        runtime.caml_memprof_stop,
        runtime.caml_memprof_discard]];
   runtime.caml_register_global(31, Stdlib_Gc, "Stdlib__Gc");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__In_channel
//# unitInfo: Requires: Stdlib, Stdlib__Bytes, Stdlib__Fun, Stdlib__Sys
//# shape: Stdlib__In_channel:[N,F(1),F(1),F(3),F(2),F(2),F(4),F(1),F(1),F(1),F(1),F(1),F(2),F(1),F(1),F(4),F(4),F(4),F(4),F(3),N,N,N,F(2),F(1),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_ba_dim_1 = runtime.caml_ba_dim_1,
    caml_create_bytes = runtime.caml_create_bytes,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_bytes_length = runtime.caml_ml_bytes_length,
    caml_ml_input_bigarray = runtime.caml_ml_input_bigarray,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Bytes = global_data.Stdlib__Bytes,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Fun = global_data.Stdlib__Fun,
    stdin = Stdlib[38],
    open_bin = Stdlib[80],
    open_text = Stdlib[79],
    open_gen = Stdlib[81];
   function with_open(openfun, s, f){
    var ic =  /*<<in_channel.ml:35:11>>*/ caml_call1(openfun, s);
     /*<<in_channel.ml:36:2>>*/ return Stdlib_Fun[5].call
            (null,
             function(param){
               /*<<in_channel.ml:36:34>>*/ return Stdlib[94].call(null, ic) /*<<in_channel.ml:36:58>>*/ ;
             },
             function(param){
               /*<<in_channel.ml:37:15>>*/ return caml_call1(f, ic) /*<<in_channel.ml:37:19>>*/ ;
             }) /*<<in_channel.ml:37:20>>*/ ;
   }
   function with_open_bin(s, f){
     /*<<in_channel.ml:40:2>>*/ return with_open(Stdlib[80], s, f) /*<<in_channel.ml:40:34>>*/ ;
   }
   function with_open_text(s, f){
     /*<<in_channel.ml:43:2>>*/ return with_open(Stdlib[79], s, f) /*<<in_channel.ml:43:30>>*/ ;
   }
   function with_open_gen(flags, perm, s, f){
    var _c_ =  /*<<in_channel.ml:46:12>>*/ Stdlib[81];
     /*<<in_channel.ml:46:43>>*/ return with_open
            (function(_d_){
               /*<<in_channel.ml:46:12>>*/ return _c_(flags, perm, _d_);
             },
             s,
             f) /*<<in_channel.ml:46:47>>*/ ;
   }
   var
    seek =  /*<<?>>*/ Stdlib[96][4],
    pos = Stdlib[96][5],
    length = Stdlib[96][6],
    close = Stdlib[93],
    close_noerr = Stdlib[94];
   function input_char(ic){
     /*<<in_channel.ml:55:2>>*/ try{
     var c =  /*<<in_channel.ml:55:8>>*/ Stdlib[82].call(null, ic);
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[12])  /*<<in_channel.ml:57:29>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
     /*<<in_channel.ml:56:9>>*/ return [0, c];
    /*<<in_channel.ml:57:33>>*/ }
   function input_byte(ic){
     /*<<in_channel.ml:60:2>>*/ try{
     var n =  /*<<in_channel.ml:60:8>>*/ Stdlib[87].call(null, ic);
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[12])  /*<<in_channel.ml:62:29>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
     /*<<in_channel.ml:61:9>>*/ return [0, n];
    /*<<in_channel.ml:62:33>>*/ }
   function input_line(ic){
     /*<<in_channel.ml:65:2>>*/ try{
     var s =  /*<<in_channel.ml:65:8>>*/ Stdlib[83].call(null, ic);
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[12])  /*<<in_channel.ml:67:29>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
     /*<<in_channel.ml:66:9>>*/ return [0, s];
    /*<<in_channel.ml:67:33>>*/ }
   var input =  /*<<?>>*/ Stdlib[84];
   function input_bigarray(ic, buf, ofs, len){
     /*<<in_channel.ml:76:2>>*/ if
     (0 <= ofs
      &&
       0 <= len
       && ( /*<<in_channel.ml:76:33>>*/ caml_ba_dim_1(buf) - len | 0) >= ofs)
      /*<<in_channel.ml:78:7>>*/ return caml_ml_input_bigarray
             (ic, buf, ofs, len) /*<<in_channel.ml:78:43>>*/ ;
     /*<<in_channel.ml:77:7>>*/ return Stdlib[1].call(null, "input_bigarray") /*<<in_channel.ml:78:43>>*/ ;
   }
   var _a_ =  /*<<?>>*/ [0, 0];
   function really_input(ic, buf, pos, len){
     /*<<in_channel.ml:81:2>>*/ try{
      /*<<in_channel.ml:81:8>>*/ Stdlib[85].call(null, ic, buf, pos, len);
      /*<<in_channel.ml:82:10>>*/ return _a_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[12])  /*<<in_channel.ml:83:29>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<in_channel.ml:83:33>>*/ }
   var _b_ =  /*<<?>>*/ [0, 0];
   function really_input_bigarray(ic, buf, ofs$1, len$1){
     /*<<in_channel.ml:94:2>>*/ if
     (0 <= ofs$1
      &&
       0 <= len$1
       &&
        ( /*<<in_channel.ml:94:33>>*/ caml_ba_dim_1(buf) - len$1 | 0) >= ofs$1){
     var ofs =  /*<<in_channel.ml:94:56>>*/ ofs$1, len = len$1;
     for(;;){
       /*<<in_channel.ml:86:2>>*/ if(0 >= len)
        /*<<in_channel.ml:86:19>>*/ return _b_;
      var
       r =
          /*<<in_channel.ml:87:12>>*/ caml_ml_input_bigarray
          (ic, buf, ofs, len);
       /*<<in_channel.ml:88:4>>*/ if(0 === r)
        /*<<in_channel.ml:89:9>>*/ return 0;
      var
       len$0 =  /*<<in_channel.ml:90:9>>*/ len - r | 0,
       ofs$0 = ofs + r | 0;
      ofs = ofs$0;
      len = len$0;
     }
    }
     /*<<in_channel.ml:95:7>>*/ return Stdlib[1].call
            (null, "really_input_bigarray") /*<<in_channel.ml:96:50>>*/ ;
   }
   function really_input_string(ic, len){
     /*<<in_channel.ml:99:2>>*/ try{
     var s =  /*<<in_channel.ml:99:8>>*/ Stdlib[86].call(null, ic, len);
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[12])  /*<<in_channel.ml:101:29>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
     /*<<in_channel.ml:100:9>>*/ return [0, s];
    /*<<in_channel.ml:101:33>>*/ }
   function read_upto(ic, buf, ofs, len){
    var ofs$0 =  /*<<in_channel.ml:116:2>>*/ ofs, len$0 = len;
    for(;;){
      /*<<in_channel.ml:107:4>>*/ if(0 !== len$0){
      var
       r =
          /*<<in_channel.ml:109:14>>*/ Stdlib[84].call
          (null, ic, buf, ofs$0, len$0);
       /*<<in_channel.ml:110:6>>*/ if(0 !== r){
       var
        len$1 =  /*<<in_channel.ml:113:8>>*/ len$0 - r | 0,
        ofs$1 = ofs$0 + r | 0;
       ofs$0 = ofs$1;
       len$0 = len$1;
       continue;
      }
     }
      /*<<in_channel.ml:116:14>>*/ return ofs$0 - ofs | 0;
    }
    /*<<in_channel.ml:116:20>>*/ }
   function ensure(buf, ofs, n){
    var len =  /*<<in_channel.ml:131:2>>*/ caml_ml_bytes_length(buf);
     /*<<in_channel.ml:132:2>>*/ if((ofs + n | 0) <= len)
      /*<<in_channel.ml:132:25>>*/ return buf;
    var new_len$0 =  /*<<in_channel.ml:132:2>>*/ len;
    for(;;){
     if(new_len$0 >= (ofs + n | 0)) break;
      /*<<in_channel.ml:136:6>>*/ new_len$0 = (2 * new_len$0 | 0) + 1 | 0;
    }
    var
     new_len =
        /*<<in_channel.ml:139:4>>*/ new_len$0 <= Stdlib_Sys[13]
        ? new_len$0
        : ofs
          < Stdlib_Sys[13]
          ? Stdlib_Sys[13]
          :  /*<<in_channel.ml:145:8>>*/ Stdlib
             [2].call
            (null,
             "In_channel.input_all: channel content is larger than maximum string length"),
     new_buf =  /*<<in_channel.ml:148:18>>*/ caml_create_bytes(new_len);
     /*<<in_channel.ml:149:4>>*/ Stdlib_Bytes[11].call
     (null, buf, 0, new_buf, 0, ofs);
     /*<<in_channel.ml:149:34>>*/ return new_buf;
    /*<<in_channel.ml:151:5>>*/ }
   function input_all(ic){
    var chunk_size =  /*<<in_channel.ml:154:2>>*/ Stdlib_Sys[3];
     /*<<in_channel.ml:155:2>>*/ try{
     var
      _b_ =  /*<<in_channel.ml:157:36>>*/ Stdlib[91].call(null, ic),
      _c_ =  /*<<in_channel.ml:157:6>>*/ Stdlib[92].call(null, ic) - _b_ | 0,
      initial_size = _c_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] !== Stdlib[11]) throw caml_maybe_attach_backtrace(exn, 0);
     var initial_size =  /*<<in_channel.ml:159:6>>*/ -1;
    }
    var
     initial_size$0 =
        /*<<in_channel.ml:161:2>>*/ 0 <= initial_size
        ? initial_size
        : chunk_size,
     initial_size$1 =
        /*<<in_channel.ml:162:2>>*/ initial_size$0 <= Stdlib_Sys[13]
        ? initial_size$0
        : Stdlib_Sys[13],
     buf =  /*<<in_channel.ml:168:12>>*/ caml_create_bytes(initial_size$1),
     nread =
        /*<<in_channel.ml:169:14>>*/ read_upto(ic, buf, 0, initial_size$1);
     /*<<in_channel.ml:170:2>>*/ if(nread < initial_size$1)
      /*<<in_channel.ml:171:4>>*/ return Stdlib_Bytes[8].call
             (null, buf, 0, nread) /*<<in_channel.ml:193:5>>*/ ;
     /*<<in_channel.ml:170:2>>*/ try{
     var c =  /*<<in_channel.ml:173:10>>*/ Stdlib[82].call(null, ic);
    }
    catch(exn){
     var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
     if(exn$0 === Stdlib[12])
       /*<<in_channel.ml:176:8>>*/ return Stdlib_Bytes[44].call(null, buf) /*<<in_channel.ml:193:5>>*/ ;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn$0, 0);
    }
    var
     buf$2 =
        /*<<in_channel.ml:190:18>>*/ ensure(buf, nread, chunk_size + 1 | 0);
     /*<<in_channel.ml:191:8>>*/ runtime.caml_bytes_set(buf$2, nread, c);
    var
     ofs$1 =  /*<<in_channel.ml:191:29>>*/ nread + 1 | 0,
     buf$0 = buf$2,
     ofs = ofs$1;
    for(;;){
     var
      buf$1 =  /*<<in_channel.ml:180:20>>*/ ensure(buf$0, ofs, chunk_size),
      rem =
         /*<<in_channel.ml:181:10>>*/ caml_ml_bytes_length(buf$1) - ofs | 0,
      r =  /*<<in_channel.ml:184:18>>*/ read_upto(ic, buf$1, ofs, rem);
      /*<<in_channel.ml:185:10>>*/ if(r < rem)
       /*<<in_channel.ml:186:12>>*/ return Stdlib_Bytes[8].call
              (null, buf$1, 0, ofs + r | 0) /*<<in_channel.ml:193:5>>*/ ;
     var ofs$0 =  /*<<in_channel.ml:188:12>>*/ ofs + rem | 0;
     buf$0 = buf$1;
     ofs = ofs$0;
    }
    /*<<in_channel.ml:193:5>>*/ }
   function input_lines(ic){
     /*<<in_channel.ml:196:2>>*/ try{
     var line =  /*<<in_channel.ml:196:8>>*/ Stdlib[83].call(null, ic);
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[12])  /*<<in_channel.ml:198:29>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    var
     block =  /*<<in_channel.ml:197:12>>*/ [0, line, 24029],
     dst =  /*<<in_channel.ml:197:20>>*/ block,
     offset = 1;
    for(;;){
      /*<<in_channel.ml:196:2>>*/ try{
      var line$0 =  /*<<in_channel.ml:196:8>>*/ Stdlib[83].call(null, ic);
     }
     catch(exn){
      var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
      if(exn$0 !== Stdlib[12]) throw caml_maybe_attach_backtrace(exn$0, 0);
       /*<<in_channel.ml:198:29>>*/ dst[offset + 1] = 0;
       /*<<in_channel.ml:197:34>>*/ return block;
     }
     var dst$0 =  /*<<in_channel.ml:197:12>>*/ [0, line$0, 24029];
     dst[offset + 1] = dst$0;
     dst = dst$0;
     offset = 1;
    }
    /*<<in_channel.ml:198:31>>*/ }
   function fold_lines(f, accu$1, ic){
    var accu =  /*<<in_channel.ml:201:2>>*/ accu$1;
    for(;;){
     try{var line =  /*<<in_channel.ml:201:8>>*/ Stdlib[83].call(null, ic);}
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn === Stdlib[12])  /*<<in_channel.ml:203:29>>*/ return accu;
       /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
     }
     var accu$0 =  /*<<in_channel.ml:202:25>>*/ caml_call2(f, accu, line);
      /*<<in_channel.ml:202:38>>*/ accu = accu$0;
    }
    /*<<in_channel.ml:203:33>>*/ }
   var
    set_binary_mode =  /*<<?>>*/ Stdlib[95],
    Stdlib_In_channel =
      [0,
       stdin,
       open_bin,
       open_text,
       open_gen,
       with_open_bin,
       with_open_text,
       with_open_gen,
       close,
       close_noerr,
       input_char,
       input_byte,
       input_line,
       really_input_string,
       input_all,
       input_lines,
       input,
       input_bigarray,
       really_input,
       really_input_bigarray,
       fold_lines,
       seek,
       pos,
       length,
       set_binary_mode,
       runtime.caml_ml_is_binary_mode,
       runtime.caml_sys_isatty];
   runtime.caml_register_global(9, Stdlib_In_channel, "Stdlib__In_channel");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Out_channel
//# unitInfo: Requires: Stdlib, Stdlib__Fun
//# shape: Stdlib__Out_channel:[N,N,F(1),F(1),F(3),F(2),F(2),F(4),F(1),F(1),F(2),F(2),F(2),F(2),F(4),F(4),F(4),F(1),F(1),N,N,N,F(2),F(1),F(2),F(1),F(1)]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Fun = global_data.Stdlib__Fun,
    stdout = Stdlib[39],
    stderr = Stdlib[40],
    open_bin = Stdlib[61],
    open_text = Stdlib[60],
    open_gen = Stdlib[62];
   function with_open(openfun, s, f){
    var oc =  /*<<out_channel.ml:36:11>>*/ caml_call1(openfun, s);
     /*<<out_channel.ml:37:2>>*/ return Stdlib_Fun[5].call
            (null,
             function(param){
               /*<<out_channel.ml:37:34>>*/ return Stdlib[77].call(null, oc) /*<<out_channel.ml:37:59>>*/ ;
             },
             function(param){
               /*<<out_channel.ml:38:15>>*/ return caml_call1(f, oc) /*<<out_channel.ml:38:19>>*/ ;
             }) /*<<out_channel.ml:38:20>>*/ ;
   }
   function with_open_bin(s, f){
     /*<<out_channel.ml:41:2>>*/ return with_open(Stdlib[61], s, f) /*<<out_channel.ml:41:35>>*/ ;
   }
   function with_open_text(s, f){
     /*<<out_channel.ml:44:2>>*/ return with_open(Stdlib[60], s, f) /*<<out_channel.ml:44:31>>*/ ;
   }
   function with_open_gen(flags, perm, s, f){
    var _a_ =  /*<<out_channel.ml:47:12>>*/ Stdlib[62];
     /*<<out_channel.ml:47:44>>*/ return with_open
            (function(_b_){
               /*<<out_channel.ml:47:12>>*/ return _a_(flags, perm, _b_);
             },
             s,
             f) /*<<out_channel.ml:47:48>>*/ ;
   }
   var
    seek =  /*<<?>>*/ Stdlib[96][1],
    pos = Stdlib[96][2],
    length = Stdlib[96][3],
    close = Stdlib[76],
    close_noerr = Stdlib[77],
    flush = Stdlib[63],
    flush_all = Stdlib[64],
    output_char = Stdlib[65],
    output_byte = Stdlib[70],
    output_string = Stdlib[66],
    output_bytes = Stdlib[67],
    output = Stdlib[68],
    output_substring = Stdlib[69];
   function output_bigarray(oc, buf, ofs, len){
     /*<<out_channel.ml:67:2>>*/ if
     (0 <= ofs
      &&
       0 <= len
       &&
        ( /*<<out_channel.ml:67:33>>*/ runtime.caml_ba_dim_1(buf) - len | 0)
        >= ofs)
      /*<<out_channel.ml:69:7>>*/ return runtime.caml_ml_output_bigarray
             (oc, buf, ofs, len) /*<<out_channel.ml:69:44>>*/ ;
     /*<<out_channel.ml:68:7>>*/ return Stdlib[1].call
            (null, "output_bigarray") /*<<out_channel.ml:69:44>>*/ ;
   }
   var
    set_binary_mode =  /*<<?>>*/ Stdlib[78],
    Stdlib_Out_channel =
      [0,
       stdout,
       stderr,
       open_bin,
       open_text,
       open_gen,
       with_open_bin,
       with_open_text,
       with_open_gen,
       close,
       close_noerr,
       output_char,
       output_byte,
       output_string,
       output_bytes,
       output,
       output_substring,
       output_bigarray,
       flush,
       flush_all,
       seek,
       pos,
       length,
       set_binary_mode,
       runtime.caml_ml_is_binary_mode,
       runtime.caml_ml_set_buffered,
       runtime.caml_ml_is_buffered,
       runtime.caml_sys_isatty];
   runtime.caml_register_global(3, Stdlib_Out_channel, "Stdlib__Out_channel");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Digest
//# unitInfo: Requires: Stdlib, Stdlib__Bytes, Stdlib__Char, Stdlib__In_channel, Stdlib__Int, Stdlib__String
//# shape: Stdlib__Digest:[F(2)*,F(2)*,F(1),F(1),F(3),F(3),F(2),F(1),F(2),F(1),F(1),F(1),F(1),N,N,N,N]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_blake2_bytes = runtime.caml_blake2_bytes,
    caml_blake2_final = runtime.caml_blake2_final,
    caml_blake2_string = runtime.caml_blake2_string,
    caml_blake2_update = runtime.caml_blake2_update,
    caml_bytes_unsafe_set = runtime.caml_bytes_unsafe_set,
    caml_create_bytes = runtime.caml_create_bytes,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_md5_bytes = runtime.caml_md5_bytes,
    caml_md5_chan = runtime.caml_md5_chan,
    caml_md5_string = runtime.caml_md5_string,
    caml_ml_bytes_length = runtime.caml_ml_bytes_length,
    caml_ml_string_length = runtime.caml_ml_string_length,
    caml_string_get = runtime.caml_string_get,
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_In_channel = global_data.Stdlib__In_channel,
    Stdlib_Int = global_data.Stdlib__Int,
    Stdlib_String = global_data.Stdlib__String,
    Stdlib_Char = global_data.Stdlib__Char,
    Stdlib_Bytes = global_data.Stdlib__Bytes;
   function hex_of_string(d){
    function char_hex(n){
     var
      _h_ =
         /*<<digest.ml:20:4>>*/ 10 <= n ? (97 + n | 0) - 10 | 0 : 48 + n | 0;
     return Stdlib_Char[1].call(null, _h_) /*<<digest.ml:21:52>>*/ ;
    }
    var
     len =  /*<<digest.ml:22:2>>*/ caml_ml_string_length(d),
     result =  /*<<digest.ml:23:15>>*/ caml_create_bytes(len * 2 | 0),
     _g_ =  /*<<digest.ml:24:2>>*/ len - 1 | 0;
    if(_g_ >= 0){
     var i = 0;
     for(;;){
      var x =  /*<<digest.ml:25:22>>*/ caml_string_get(d, i);
       /*<<digest.ml:26:34>>*/  /*<<digest.ml:26:54>>*/ caml_bytes_unsafe_set
       (result, i * 2 | 0,  /*<<digest.ml:26:34>>*/ char_hex(x >>> 4 | 0));
       /*<<digest.ml:27:36>>*/  /*<<digest.ml:27:60>>*/ caml_bytes_unsafe_set
       (result,
        (i * 2 | 0) + 1 | 0,
         /*<<digest.ml:27:36>>*/ char_hex(x & 15));
      var _h_ =  /*<<digest.ml:27:60>>*/ i + 1 | 0;
      if(_g_ === i) break;
      i = _h_;
     }
    }
     /*<<digest.ml:29:2>>*/ return Stdlib_Bytes[44].call(null, result) /*<<digest.ml:29:31>>*/ ;
   }
   var cst_Digest_of_hex =  /*<<?>>*/ "Digest.of_hex";
   function string_of_hex(s){
    function digit(c){
      /*<<digest.ml:33:4>>*/ if(65 <= c){
      if(97 <= c){
       if(103 > c)  /*<<digest.ml:36:18>>*/ return (c - 97 | 0) + 10 | 0;
      }
      else if(71 > c)  /*<<digest.ml:35:18>>*/ return (c - 65 | 0) + 10 | 0;
     }
     else if(9 >= c - 48 >>> 0)  /*<<digest.ml:34:18>>*/ return c - 48 | 0;
      /*<<digest.ml:37:11>>*/ return Stdlib[1].call(null, cst_Digest_of_hex) /*<<digest.ml:37:38>>*/ ;
    }
     /*<<digest.ml:39:2>>*/ return Stdlib_String[2].call
            (null,
             caml_ml_string_length(s) / 2 | 0,
             function(i){
              var
               i$0 =  /*<<digest.ml:39:46>>*/ 2 * i | 0,
               _f_ =
                  /*<<digest.ml:38:41>>*/  /*<<digest.ml:38:35>>*/ digit
                  ( /*<<digest.ml:38:41>>*/ caml_string_get(s, i$0 + 1 | 0)),
               _g_ =
                  /*<<digest.ml:38:21>>*/ ( /*<<digest.ml:38:15>>*/ digit
                  ( /*<<digest.ml:38:21>>*/ caml_string_get(s, i$0))
                 << 4)
                 + _f_
                 | 0;
               /*<<digest.ml:39:69>>*/ return Stdlib_Char[1].call(null, _g_);
             }) /*<<digest.ml:39:70>>*/ ;
   }
   var
    cst_Digest_subbytes =  /*<<?>>*/ "Digest.subbytes",
    cst_Digest_substring = "Digest.substring",
    cst_Digest_to_hex = "Digest.to_hex";
   function BLAKE2(X){
    var _a_ = X[1] < 1, _b_ = _a_ || 64 < X[1];
    if(_b_)
      /*<<digest.ml:68:9>>*/ Stdlib[1].call
      (null, "Digest.BLAKE2: wrong hash size");
    var
     hash_length =  /*<<digest.ml:69:4>>*/ X[1],
     compare = Stdlib_String[10],
     equal = Stdlib_String[9],
     cst =  /*<<?>>*/ "";
    function string(str){
      /*<<digest.ml:87:4>>*/ return caml_blake2_string
             (hash_length, cst, str, 0, caml_ml_string_length(str)) /*<<digest.ml:87:58>>*/ ;
    }
    function bytes(b){
      /*<<digest.ml:90:4>>*/ return caml_blake2_bytes
             (hash_length, cst, b, 0, caml_ml_bytes_length(b)) /*<<digest.ml:90:52>>*/ ;
    }
    function substring(str, ofs, len){
     var _d_ =  /*<<digest.ml:93:4>>*/ ofs < 0;
     if(_d_)
      var _e_ = _d_;
     else
      var
       _f_ = len < 0,
       _e_ = _f_ || (caml_ml_string_length(str) - len | 0) < ofs;
     if(_e_)
       /*<<digest.ml:94:9>>*/ Stdlib[1].call(null, cst_Digest_substring);
      /*<<digest.ml:95:4>>*/ return caml_blake2_string
             (hash_length, cst, str, ofs, len) /*<<digest.ml:95:44>>*/ ;
    }
    function subbytes(b, ofs, len){
     var _b_ =  /*<<digest.ml:98:4>>*/ ofs < 0;
     if(_b_)
      var _c_ = _b_;
     else
      var
       _d_ = len < 0,
       _c_ = _d_ || (caml_ml_bytes_length(b) - len | 0) < ofs;
     if(_c_)
       /*<<digest.ml:99:9>>*/ Stdlib[1].call(null, cst_Digest_subbytes);
      /*<<digest.ml:100:4>>*/ return caml_blake2_bytes
             (hash_length, cst, b, ofs, len) /*<<digest.ml:100:41>>*/ ;
    }
    function channel(ic, toread){
     var
      buf =  /*<<digest.ml:104:14>>*/ caml_create_bytes(4096),
      ctx =
         /*<<digest.ml:84:18>>*/ runtime.caml_blake2_create(hash_length, cst),
      buf_size =  /*<<digest.ml:103:4>>*/ 4096;
      /*<<digest.ml:106:4>>*/ if(0 <= toread){
      var toread$0 = toread;
      for(;;){
        /*<<digest.ml:115:8>>*/ if(0 === toread$0)
         /*<<digest.ml:115:27>>*/ return caml_blake2_final(ctx, hash_length) /*<<digest.ml:125:7>>*/ ;
       var
        _b_ =
           /*<<digest.ml:116:44>>*/ Stdlib_Int[10].call
           (null, buf_size, toread$0),
        n =
           /*<<digest.ml:116:18>>*/ Stdlib_In_channel[16].call
           (null, ic, buf, 0, _b_);
        /*<<digest.ml:117:10>>*/ if(0 === n)
         /*<<digest.ml:118:15>>*/ throw caml_maybe_attach_backtrace
               (Stdlib[12], 1);
        /*<<digest.ml:120:12>>*/ caml_blake2_update(ctx, buf, 0, n);
       var toread$1 =  /*<<digest.ml:120:30>>*/ toread$0 - n | 0;
       toread$0 = toread$1;
      }
     }
     else
       /*<<digest.ml:106:4>>*/ for(;;){
       var
        n$0 =
           /*<<digest.ml:108:16>>*/ Stdlib_In_channel[16].call
           (null, ic, buf, 0, buf_size);
        /*<<digest.ml:109:8>>*/ if(0 === n$0)
         /*<<digest.ml:110:13>>*/ return caml_blake2_final(ctx, hash_length) /*<<digest.ml:125:7>>*/ ;
        /*<<digest.ml:111:14>>*/ caml_blake2_update(ctx, buf, 0, n$0);
      }
     /*<<digest.ml:125:7>>*/ }
    function file(filename){
      /*<<digest.ml:128:4>>*/ return Stdlib_In_channel[5].call
             (null,
              filename,
              function(ic){
                /*<<digest.ml:128:49>>*/ return channel(ic, -1) /*<<digest.ml:128:64>>*/ ;
              }) /*<<digest.ml:128:65>>*/ ;
    }
    function output(chan, digest){
      /*<<digest.ml:130:27>>*/ return Stdlib[66].call(null, chan, digest) /*<<digest.ml:130:52>>*/ ;
    }
    function input(chan){
      /*<<digest.ml:132:19>>*/ return Stdlib[86].call(null, chan, hash_length) /*<<digest.ml:132:55>>*/ ;
    }
    function to_hex(d){
      /*<<digest.ml:135:4>>*/ if(caml_ml_string_length(d) !== hash_length)
       /*<<digest.ml:135:43>>*/ Stdlib[1].call(null, cst_Digest_to_hex);
      /*<<digest.ml:136:4>>*/ return hex_of_string(d) /*<<digest.ml:136:19>>*/ ;
    }
    function of_hex(s){
      /*<<digest.ml:139:4>>*/ if
      (caml_ml_string_length(s) !== (hash_length * 2 | 0))
       /*<<digest.ml:139:47>>*/ Stdlib[1].call(null, cst_Digest_of_hex);
      /*<<digest.ml:140:4>>*/ return string_of_hex(s) /*<<digest.ml:140:19>>*/ ;
    }
     /*<<digest.ml:69:4>>*/ return [0,
            hash_length,
            compare,
            equal,
            string,
            bytes,
            substring,
            subbytes,
            channel,
            file,
            output,
            input,
            to_hex,
            of_hex];
   }
   var
    BLAKE128 =  /*<<?>>*/ BLAKE2([0, 16]),
    BLAKE256 = BLAKE2([0, 32]),
    BLAKE512 = BLAKE2([0, 64]),
    compare = Stdlib_String[10],
    equal = Stdlib_String[9];
   function string(str){
     /*<<digest.ml:164:4>>*/ return caml_md5_string
            (str, 0, caml_ml_string_length(str)) /*<<digest.ml:164:43>>*/ ;
   }
   function bytes(b){
     /*<<digest.ml:167:4>>*/ return caml_md5_bytes
            (b, 0, caml_ml_bytes_length(b)) /*<<digest.ml:167:37>>*/ ;
   }
   function substring(str, ofs, len){
     /*<<digest.ml:170:4>>*/ if
     (0 <= ofs && 0 <= len && (caml_ml_string_length(str) - len | 0) >= ofs)
      /*<<digest.ml:172:9>>*/ return caml_md5_string(str, ofs, len) /*<<digest.ml:172:34>>*/ ;
     /*<<digest.ml:171:9>>*/ return Stdlib[1].call(null, cst_Digest_substring) /*<<digest.ml:172:34>>*/ ;
   }
   function subbytes(b, ofs, len){
     /*<<digest.ml:175:4>>*/ if
     (0 <= ofs && 0 <= len && (caml_ml_bytes_length(b) - len | 0) >= ofs)
      /*<<digest.ml:177:9>>*/ return caml_md5_bytes(b, ofs, len) /*<<digest.ml:177:31>>*/ ;
     /*<<digest.ml:176:9>>*/ return Stdlib[1].call(null, cst_Digest_subbytes) /*<<digest.ml:177:31>>*/ ;
   }
   function file(filename){
     /*<<digest.ml:180:4>>*/ return Stdlib_In_channel[5].call
            (null,
             filename,
             function(ic){
               /*<<digest.ml:180:49>>*/ return caml_md5_chan(ic, -1) /*<<digest.ml:180:64>>*/ ;
             }) /*<<digest.ml:180:65>>*/ ;
   }
   function output(chan, digest){
     /*<<digest.ml:182:27>>*/ return Stdlib[66].call(null, chan, digest) /*<<digest.ml:182:52>>*/ ;
   }
   function input(chan){
     /*<<digest.ml:184:19>>*/ return Stdlib[86].call(null, chan, 16) /*<<digest.ml:184:46>>*/ ;
   }
   function to_hex(d){
     /*<<digest.ml:187:4>>*/ if(16 !== caml_ml_string_length(d))
      /*<<digest.ml:187:34>>*/ Stdlib[1].call(null, cst_Digest_to_hex);
     /*<<digest.ml:188:4>>*/ return hex_of_string(d) /*<<digest.ml:188:19>>*/ ;
   }
   function of_hex(s){
     /*<<digest.ml:191:4>>*/ if(32 !== caml_ml_string_length(s))
      /*<<digest.ml:191:34>>*/ Stdlib[1].call(null, "Digest.from_hex");
     /*<<digest.ml:192:4>>*/ return string_of_hex(s) /*<<digest.ml:192:19>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (21,
     [0,
      compare,
      equal,
      string,
      bytes,
      substring,
      subbytes,
      caml_md5_chan,
      file,
      output,
      input,
      to_hex,
      of_hex,
      of_hex,
      BLAKE128,
      BLAKE256,
      BLAKE512,
      [0,
       16,
       compare,
       equal,
       string,
       bytes,
       substring,
       subbytes,
       caml_md5_chan,
       file,
       output,
       input,
       to_hex,
       of_hex]],
     "Stdlib__Digest");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Bigarray
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Sys
//# shape: Stdlib__Bigarray:[N,N,N,N,N,N,N,N,N,N,N,N,N,N,F(1)*,N,N,N,N,N,N,N,F(1),F(1),F(1),F(1),F(2),F(1),F(2),F(3),F(4)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_ba_change_layout = runtime.caml_ba_change_layout,
    caml_ba_create = runtime.caml_ba_create,
    caml_ba_dim_1 = runtime.caml_ba_dim_1,
    caml_ba_dim_2 = runtime.caml_ba_dim_2,
    caml_ba_kind = runtime.caml_ba_kind,
    caml_ba_num_dims = runtime.caml_ba_num_dims,
    caml_ba_reshape = runtime.caml_ba_reshape,
    caml_ba_set_1 = runtime.caml_ba_set_1,
    caml_ba_set_2 = runtime.caml_ba_set_2,
    caml_ba_set_3 = runtime.caml_ba_set_3,
    caml_ba_set_generic = runtime.caml_ba_set_generic,
    caml_ba_slice = runtime.caml_ba_slice,
    caml_check_bound = runtime.caml_check_bound,
    caml_mul = runtime.caml_mul;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    dummy = 0,
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib_Sys = global_data.Stdlib__Sys;
   function kind_size_in_bytes(param){
     /*<<bigarray.ml:76:4>>*/ switch(param){
      case 11:
        /*<<bigarray.ml:89:17>>*/ return 16;
      case 0:
      case 6:
        /*<<bigarray.ml:76:4>>*/ return 4;
      case 8:
      case 9:
       return Stdlib_Sys[10] / 8 | 0;
      case 1:
      case 7:
      case 10:
       return 8;
      case 2:
      case 3:
      case 12:
       return 1;
      default: return 2;
    }
    /*<<bigarray.ml:90:13>>*/ }
   function cloop(arr, idx, f, col, max){
     /*<<bigarray.ml:108:4>>*/ if(col === idx.length - 1){
      /*<<bigarray.ml:108:47>>*/  /*<<bigarray.ml:108:35>>*/ caml_ba_set_generic
      (arr, idx,  /*<<bigarray.ml:108:47>>*/ caml_call1(f, idx));
      /*<<bigarray.ml:108:54>>*/ return;
    }
    var
     _G_ =
        /*<<bigarray.ml:109:27>>*/ caml_check_bound(max, col)[col + 1] - 1 | 0;
     /*<<bigarray.ml:109:36>>*/ if(_G_ >= 0){
     var j = 0;
     for(;;){
       /*<<bigarray.ml:110:11>>*/ caml_check_bound(idx, col)[col + 1] = j;
       /*<<bigarray.ml:111:11>>*/ cloop(arr, idx, f, col + 1 | 0, max);
      var _H_ =  /*<<bigarray.ml:111:41>>*/ j + 1 | 0;
      if(_G_ === j) break;
      j = _H_;
     }
    }
    /*<<bigarray.ml:112:13>>*/ }
   function floop(arr, idx, f, col, max){
     /*<<bigarray.ml:114:4>>*/ if(0 > col){
      /*<<bigarray.ml:114:32>>*/  /*<<bigarray.ml:114:20>>*/ caml_ba_set_generic
      (arr, idx,  /*<<bigarray.ml:114:32>>*/ caml_call1(f, idx));
      /*<<bigarray.ml:114:39>>*/ return;
    }
    var _F_ =  /*<<bigarray.ml:115:22>>*/ caml_check_bound(max, col)[col + 1];
     /*<<bigarray.ml:115:31>>*/ if(_F_ >= 1){
     var j = 1;
     for(;;){
       /*<<bigarray.ml:116:11>>*/ caml_check_bound(idx, col)[col + 1] = j;
       /*<<bigarray.ml:117:11>>*/ floop(arr, idx, f, col - 1 | 0, max);
      var _G_ =  /*<<bigarray.ml:117:41>>*/ j + 1 | 0;
      if(_F_ === j) break;
      j = _G_;
     }
    }
    /*<<bigarray.ml:118:13>>*/ }
   function init(kind, layout, dims, f){
    var
     arr =  /*<<bigarray.ml:120:14>>*/ caml_ba_create(kind, layout, dims),
     dlen =  /*<<bigarray.ml:121:4>>*/ dims.length - 1;
     /*<<bigarray.ml:122:4>>*/ return layout
            ? ( /*<<bigarray.ml:124:24>>*/ floop
               (arr,
                 /*<<bigarray.ml:124:34>>*/ caml_array_make(dlen, 1),
                f,
                dlen - 1 | 0,
                dims),
              arr)
            : ( /*<<bigarray.ml:123:18>>*/ cloop
               (arr,
                 /*<<bigarray.ml:123:28>>*/ caml_array_make(dlen, 0),
                f,
                0,
                dims),
              arr) /*<<bigarray.ml:124:77>>*/ ;
   }
   function dims(a){
    var
     n =  /*<<bigarray.ml:129:12>>*/ caml_ba_num_dims(a),
     d =  /*<<bigarray.ml:130:12>>*/ caml_array_make(n, 0),
     _D_ =  /*<<bigarray.ml:131:4>>*/ n - 1 | 0;
    if(_D_ >= 0){
     var i = 0;
     for(;;){
      var _E_ =  /*<<bigarray.ml:131:33>>*/ runtime.caml_ba_dim(a, i);
       /*<<bigarray.ml:131:24>>*/ caml_check_bound(d, i)[i + 1] = _E_;
      var _F_ =  /*<<bigarray.ml:131:44>>*/ i + 1 | 0;
      if(_D_ === i) break;
      i = _F_;
     }
    }
     /*<<bigarray.ml:132:4>>*/ return d;
    /*<<bigarray.ml:132:5>>*/ }
   function size_in_bytes(arr){
    var
     _C_ =  /*<<bigarray.ml:140:63>>*/ dims(arr),
     _D_ =
        /*<<bigarray.ml:140:38>>*/ Stdlib_Array[20].call
        (null, caml_mul, 1, _C_);
     /*<<bigarray.ml:140:24>>*/ return  /*<<bigarray.ml:140:35>>*/ caml_mul
            ( /*<<bigarray.ml:140:4>>*/ kind_size_in_bytes
              ( /*<<bigarray.ml:140:24>>*/ caml_ba_kind(arr)),
             _D_) /*<<bigarray.ml:140:74>>*/ ;
   }
   function create(kind, layout){
     /*<<bigarray.ml:161:4>>*/ return caml_ba_create(kind, layout, [0]) /*<<bigarray.ml:161:36>>*/ ;
   }
   function get(arr){
     /*<<bigarray.ml:162:16>>*/ return runtime.caml_ba_get_generic(arr, [0]) /*<<bigarray.ml:162:37>>*/ ;
   }
   function set(arr){
    var _B_ =  /*<<bigarray.ml:163:16>>*/ [0];
    return function(_C_){
      /*<<?>>*/ return caml_ba_set_generic(arr, _B_, _C_);} /*<<bigarray.ml:163:16>>*/ ;
    /*<<bigarray.ml:163:37>>*/ }
   function size_in_bytes$0(arr){
     /*<<bigarray.ml:170:45>>*/ return  /*<<bigarray.ml:170:55>>*/ kind_size_in_bytes
            ( /*<<bigarray.ml:170:45>>*/ caml_ba_kind(arr)) /*<<bigarray.ml:170:55>>*/ ;
   }
   function of_value(kind, layout, v){
    var a =  /*<<bigarray.ml:176:12>>*/ create(kind, layout);
     /*<<bigarray.ml:177:4>>*/ set(a)(v);
     /*<<bigarray.ml:177:11>>*/ return a;
    /*<<bigarray.ml:178:5>>*/ }
   function create$0(kind, layout, dim){
     /*<<bigarray.ml:185:4>>*/ return caml_ba_create(kind, layout, [0, dim]) /*<<bigarray.ml:185:39>>*/ ;
   }
   function size_in_bytes$1(arr){
    var _B_ =  /*<<bigarray.ml:199:38>>*/ caml_ba_dim_1(arr);
     /*<<bigarray.ml:199:24>>*/ return  /*<<bigarray.ml:199:35>>*/ caml_mul
            ( /*<<bigarray.ml:199:4>>*/ kind_size_in_bytes
              ( /*<<bigarray.ml:199:24>>*/ caml_ba_kind(arr)),
             _B_) /*<<bigarray.ml:199:47>>*/ ;
   }
   function slice(a, n){
     /*<<bigarray.ml:203:10>>*/ return runtime.caml_ba_layout(a)
            ?  /*<<bigarray.ml:205:25>>*/ caml_ba_slice(a, [0, n])
            :  /*<<bigarray.ml:204:19>>*/ caml_ba_slice(a, [0, n]) /*<<bigarray.ml:205:76>>*/ ;
   }
   function init$0(kind, layout, dim, f){
    var arr =  /*<<bigarray.ml:213:14>>*/ create$0(kind, layout, dim);
     /*<<bigarray.ml:214:4>>*/ if(layout){
      /*<<bigarray.ml:211:4>>*/ if(dim >= 1){
      var i$0 = 1;
      for(;;){
        /*<<bigarray.ml:211:41>>*/  /*<<bigarray.ml:211:24>>*/ caml_ba_set_1
        (arr, i$0,  /*<<bigarray.ml:211:41>>*/ caml_call1(f, i$0));
       var _B_ =  /*<<bigarray.ml:211:46>>*/ i$0 + 1 | 0;
       if(dim === i$0) break;
       i$0 = _B_;
      }
     }
      /*<<bigarray.ml:216:46>>*/ return arr;
    }
    var _z_ =  /*<<bigarray.ml:209:4>>*/ dim - 1 | 0;
    if(_z_ >= 0){
     var i = 0;
     for(;;){
       /*<<bigarray.ml:209:46>>*/  /*<<bigarray.ml:209:29>>*/ caml_ba_set_1
       (arr, i,  /*<<bigarray.ml:209:46>>*/ caml_call1(f, i));
      var _A_ =  /*<<bigarray.ml:209:51>>*/ i + 1 | 0;
      if(_z_ === i) break;
      i = _A_;
     }
    }
     /*<<bigarray.ml:215:34>>*/ return arr;
    /*<<bigarray.ml:216:51>>*/ }
   function of_array(kind, layout, data){
    var
     ba =  /*<<bigarray.ml:218:13>>*/ create$0(kind, layout, data.length - 1),
     ofs =  /*<<bigarray.ml:219:4>>*/ layout ? 1 : 0,
     _y_ =  /*<<bigarray.ml:224:4>>*/ data.length - 2 | 0;
    if(_y_ >= 0){
     var i = 0;
     for(;;){
       /*<<bigarray.ml:224:66>>*/  /*<<bigarray.ml:224:42>>*/ caml_ba_set_1
       (ba,
        i + ofs | 0,
         /*<<bigarray.ml:224:66>>*/ caml_check_bound(data, i)[i + 1]);
      var _z_ =  /*<<bigarray.ml:224:74>>*/ i + 1 | 0;
      if(_y_ === i) break;
      i = _z_;
     }
    }
     /*<<bigarray.ml:225:4>>*/ return ba;
    /*<<bigarray.ml:225:6>>*/ }
   function create$1(kind, layout, dim1, dim2){
     /*<<bigarray.ml:231:4>>*/ return caml_ba_create
            (kind, layout, [0, dim1, dim2]) /*<<bigarray.ml:231:46>>*/ ;
   }
   function size_in_bytes$2(arr){
    var
     _x_ =  /*<<bigarray.ml:247:51>>*/ caml_ba_dim_2(arr),
     _y_ =  /*<<bigarray.ml:247:38>>*/ caml_ba_dim_1(arr);
     /*<<bigarray.ml:247:24>>*/ return  /*<<bigarray.ml:247:35>>*/ caml_mul
            (caml_mul
              ( /*<<bigarray.ml:247:4>>*/ kind_size_in_bytes
                ( /*<<bigarray.ml:247:24>>*/ caml_ba_kind(arr)),
               _y_),
             _x_) /*<<bigarray.ml:247:61>>*/ ;
   }
   function slice_left(a, n){
     /*<<bigarray.ml:254:23>>*/ return caml_ba_slice(a, [0, n]) /*<<bigarray.ml:254:50>>*/ ;
   }
   function slice_right(a, n){
     /*<<bigarray.ml:255:24>>*/ return caml_ba_slice(a, [0, n]) /*<<bigarray.ml:255:52>>*/ ;
   }
   function init$1(kind, layout, dim1, dim2, f){
    var arr =  /*<<bigarray.ml:271:14>>*/ create$1(kind, layout, dim1, dim2);
     /*<<bigarray.ml:272:4>>*/ if(layout){
      /*<<bigarray.ml:265:4>>*/ if(dim2 >= 1){
      var j$0 = 1;
      for(;;){
        /*<<bigarray.ml:266:6>>*/ if(dim1 >= 1){
        var i$0 = 1;
        for(;;){
          /*<<bigarray.ml:267:27>>*/  /*<<bigarray.ml:267:8>>*/ caml_ba_set_2
          (arr, i$0, j$0,  /*<<bigarray.ml:267:27>>*/ caml_call2(f, i$0, j$0));
         var _x_ =  /*<<bigarray.ml:267:34>>*/ i$0 + 1 | 0;
         if(dim1 === i$0) break;
         i$0 = _x_;
        }
       }
       var _w_ =  /*<<bigarray.ml:266:6>>*/ j$0 + 1 | 0;
       if(dim2 === j$0) break;
       j$0 = _w_;
      }
     }
      /*<<bigarray.ml:274:52>>*/ return arr;
    }
    var _s_ =  /*<<bigarray.ml:259:4>>*/ dim1 - 1 | 0;
    if(_s_ >= 0){
     var i = 0;
     for(;;){
      var _t_ =  /*<<bigarray.ml:260:6>>*/ dim2 - 1 | 0;
      if(_t_ >= 0){
       var j = 0;
       for(;;){
         /*<<bigarray.ml:261:27>>*/  /*<<bigarray.ml:261:8>>*/ caml_ba_set_2
         (arr, i, j,  /*<<bigarray.ml:261:27>>*/ caml_call2(f, i, j));
        var _v_ =  /*<<bigarray.ml:261:34>>*/ j + 1 | 0;
        if(_t_ === j) break;
        j = _v_;
       }
      }
      var _u_ =  /*<<bigarray.ml:260:6>>*/ i + 1 | 0;
      if(_s_ === i) break;
      i = _u_;
     }
    }
     /*<<bigarray.ml:273:40>>*/ return arr;
    /*<<bigarray.ml:274:57>>*/ }
   function of_array$0(kind, layout, data){
    var
     dim1 =  /*<<bigarray.ml:276:4>>*/ data.length - 1,
     dim2 =
        /*<<bigarray.ml:277:4>>*/ 0 === dim1
        ? 0
        :  /*<<bigarray.ml:277:52>>*/ caml_check_bound(data, 0)[1].length - 1,
     ba =  /*<<bigarray.ml:278:13>>*/ create$1(kind, layout, dim1, dim2),
     ofs =  /*<<bigarray.ml:279:4>>*/ layout ? 1 : 0,
     _p_ =  /*<<bigarray.ml:284:4>>*/ dim1 - 1 | 0;
    if(_p_ >= 0){
     var i = 0;
     for(;;){
      var row =  /*<<bigarray.ml:285:16>>*/ caml_check_bound(data, i)[i + 1];
       /*<<bigarray.ml:286:6>>*/ if(row.length - 1 !== dim2)
        /*<<bigarray.ml:287:8>>*/ Stdlib[1].call
        (null, "Bigarray.Array2.of_array: non-rectangular data");
      var _q_ =  /*<<bigarray.ml:288:6>>*/ dim2 - 1 | 0;
      if(_q_ >= 0){
       var j = 0;
       for(;;){
         /*<<bigarray.ml:289:42>>*/  /*<<bigarray.ml:289:8>>*/ caml_ba_set_2
         (ba,
          i + ofs | 0,
          j + ofs | 0,
           /*<<bigarray.ml:289:42>>*/ caml_check_bound(row, j)[j + 1]);
        var _s_ =  /*<<bigarray.ml:289:49>>*/ j + 1 | 0;
        if(_q_ === j) break;
        j = _s_;
       }
      }
      var _r_ =  /*<<bigarray.ml:288:6>>*/ i + 1 | 0;
      if(_p_ === i) break;
      i = _r_;
     }
    }
     /*<<bigarray.ml:292:4>>*/ return ba;
    /*<<bigarray.ml:292:6>>*/ }
   function create$2(kind, layout, dim1, dim2, dim3){
     /*<<bigarray.ml:298:4>>*/ return caml_ba_create
            (kind, layout, [0, dim1, dim2, dim3]) /*<<bigarray.ml:298:52>>*/ ;
   }
   function size_in_bytes$3(arr){
    var
     _n_ =  /*<<bigarray.ml:316:64>>*/ runtime.caml_ba_dim_3(arr),
     _o_ =  /*<<bigarray.ml:316:51>>*/ caml_ba_dim_2(arr),
     _p_ =  /*<<bigarray.ml:316:38>>*/ caml_ba_dim_1(arr);
     /*<<bigarray.ml:316:24>>*/ return  /*<<bigarray.ml:316:35>>*/ caml_mul
            (caml_mul
              (caml_mul
                ( /*<<bigarray.ml:316:4>>*/ kind_size_in_bytes
                  ( /*<<bigarray.ml:316:24>>*/ caml_ba_kind(arr)),
                 _p_),
               _o_),
             _n_) /*<<bigarray.ml:316:74>>*/ ;
   }
   function slice_left_1(a, n, m){
     /*<<bigarray.ml:323:27>>*/ return caml_ba_slice(a, [0, n, m]) /*<<bigarray.ml:323:57>>*/ ;
   }
   function slice_right_1(a, n, m){
     /*<<bigarray.ml:324:28>>*/ return caml_ba_slice(a, [0, n, m]) /*<<bigarray.ml:324:59>>*/ ;
   }
   function slice_left_2(a, n){
     /*<<bigarray.ml:325:25>>*/ return caml_ba_slice(a, [0, n]) /*<<bigarray.ml:325:52>>*/ ;
   }
   function slice_right_2(a, n){
     /*<<bigarray.ml:326:26>>*/ return caml_ba_slice(a, [0, n]) /*<<bigarray.ml:326:54>>*/ ;
   }
   function init$2(kind, layout, dim1, dim2, dim3, f){
    var
     arr =
        /*<<bigarray.ml:346:14>>*/ create$2(kind, layout, dim1, dim2, dim3);
     /*<<bigarray.ml:347:4>>*/ if(layout){
      /*<<bigarray.ml:338:4>>*/ if(dim3 >= 1){
      var k$0 = 1;
      for(;;){
        /*<<bigarray.ml:339:6>>*/ if(dim2 >= 1){
        var j$0 = 1;
        for(;;){
          /*<<bigarray.ml:340:8>>*/ if(dim1 >= 1){
          var i$0 = 1;
          for(;;){
            /*<<bigarray.ml:341:31>>*/  /*<<bigarray.ml:341:10>>*/ caml_ba_set_3
            (arr,
             i$0,
             j$0,
             k$0,
              /*<<bigarray.ml:341:31>>*/ caml_call3(f, i$0, j$0, k$0));
           var _n_ =  /*<<bigarray.ml:341:40>>*/ i$0 + 1 | 0;
           if(dim1 === i$0) break;
           i$0 = _n_;
          }
         }
         var _m_ =  /*<<bigarray.ml:340:8>>*/ j$0 + 1 | 0;
         if(dim2 === j$0) break;
         j$0 = _m_;
        }
       }
       var _l_ =  /*<<bigarray.ml:339:6>>*/ k$0 + 1 | 0;
       if(dim3 === k$0) break;
       k$0 = _l_;
      }
     }
      /*<<bigarray.ml:349:57>>*/ return arr;
    }
    var _f_ =  /*<<bigarray.ml:330:4>>*/ dim1 - 1 | 0;
    if(_f_ >= 0){
     var i = 0;
     for(;;){
      var _g_ =  /*<<bigarray.ml:331:6>>*/ dim2 - 1 | 0;
      if(_g_ >= 0){
       var j = 0;
       for(;;){
        var _h_ =  /*<<bigarray.ml:332:8>>*/ dim3 - 1 | 0;
        if(_h_ >= 0){
         var k = 0;
         for(;;){
           /*<<bigarray.ml:333:31>>*/  /*<<bigarray.ml:333:10>>*/ caml_ba_set_3
           (arr, i, j, k,  /*<<bigarray.ml:333:31>>*/ caml_call3(f, i, j, k));
          var _k_ =  /*<<bigarray.ml:333:40>>*/ k + 1 | 0;
          if(_h_ === k) break;
          k = _k_;
         }
        }
        var _j_ =  /*<<bigarray.ml:332:8>>*/ j + 1 | 0;
        if(_g_ === j) break;
        j = _j_;
       }
      }
      var _i_ =  /*<<bigarray.ml:331:6>>*/ i + 1 | 0;
      if(_f_ === i) break;
      i = _i_;
     }
    }
     /*<<bigarray.ml:348:45>>*/ return arr;
    /*<<bigarray.ml:349:62>>*/ }
   function of_array$1(kind, layout, data){
    var
     dim1 =  /*<<bigarray.ml:351:4>>*/ data.length - 1,
     dim2 =
        /*<<bigarray.ml:352:4>>*/ 0 === dim1
        ? 0
        :  /*<<bigarray.ml:352:52>>*/ caml_check_bound(data, 0)[1].length - 1,
     dim3 =
        /*<<bigarray.ml:353:4>>*/ 0 === dim2
        ? 0
        :  /*<<bigarray.ml:353:52>>*/ caml_check_bound
           (caml_check_bound(data, 0)[1], 0)
          [1].length
         - 1,
     ba =  /*<<bigarray.ml:354:13>>*/ create$2(kind, layout, dim1, dim2, dim3),
     ofs =  /*<<bigarray.ml:355:4>>*/ layout ? 1 : 0,
     _a_ =  /*<<bigarray.ml:360:4>>*/ dim1 - 1 | 0;
    if(_a_ >= 0){
     var i = 0;
     for(;;){
      var
       row =  /*<<bigarray.ml:361:16>>*/ caml_check_bound(data, i)[i + 1],
       cst_Bigarray_Array3_of_array_n =
          /*<<?>>*/ "Bigarray.Array3.of_array: non-cubic data";
       /*<<bigarray.ml:362:6>>*/ if(row.length - 1 !== dim2)
        /*<<bigarray.ml:363:8>>*/ Stdlib[1].call
        (null, cst_Bigarray_Array3_of_array_n);
      var _b_ =  /*<<bigarray.ml:364:6>>*/ dim2 - 1 | 0;
      if(_b_ >= 0){
       var j = 0;
       for(;;){
        var col =  /*<<bigarray.ml:365:18>>*/ caml_check_bound(row, j)[j + 1];
         /*<<bigarray.ml:366:8>>*/ if(col.length - 1 !== dim3)
          /*<<bigarray.ml:367:10>>*/ Stdlib[1].call
          (null, cst_Bigarray_Array3_of_array_n);
        var _c_ =  /*<<bigarray.ml:368:8>>*/ dim3 - 1 | 0;
        if(_c_ >= 0){
         var k = 0;
         for(;;){
           /*<<bigarray.ml:369:54>>*/  /*<<bigarray.ml:369:10>>*/ caml_ba_set_3
           (ba,
            i + ofs | 0,
            j + ofs | 0,
            k + ofs | 0,
             /*<<bigarray.ml:369:54>>*/ caml_check_bound(col, k)[k + 1]);
          var _f_ =  /*<<bigarray.ml:369:61>>*/ k + 1 | 0;
          if(_c_ === k) break;
          k = _f_;
         }
        }
        var _e_ =  /*<<bigarray.ml:368:8>>*/ j + 1 | 0;
        if(_b_ === j) break;
        j = _e_;
       }
      }
      var _d_ =  /*<<bigarray.ml:364:6>>*/ i + 1 | 0;
      if(_a_ === i) break;
      i = _d_;
     }
    }
     /*<<bigarray.ml:373:4>>*/ return ba;
    /*<<bigarray.ml:373:6>>*/ }
   function array0_of_genarray(a){
     /*<<bigarray.ml:385:5>>*/ return 0 === caml_ba_num_dims(a)
            ? a
            :  /*<<bigarray.ml:386:7>>*/ Stdlib
               [1].call
              (null, "Bigarray.array0_of_genarray") /*<<bigarray.ml:386:48>>*/ ;
   }
   function array1_of_genarray(a){
     /*<<bigarray.ml:388:5>>*/ return 1 === caml_ba_num_dims(a)
            ? a
            :  /*<<bigarray.ml:389:7>>*/ Stdlib
               [1].call
              (null, "Bigarray.array1_of_genarray") /*<<bigarray.ml:389:48>>*/ ;
   }
   function array2_of_genarray(a){
     /*<<bigarray.ml:391:5>>*/ return 2 === caml_ba_num_dims(a)
            ? a
            :  /*<<bigarray.ml:392:7>>*/ Stdlib
               [1].call
              (null, "Bigarray.array2_of_genarray") /*<<bigarray.ml:392:48>>*/ ;
   }
   function array3_of_genarray(a){
     /*<<bigarray.ml:394:5>>*/ return 3 === caml_ba_num_dims(a)
            ? a
            :  /*<<bigarray.ml:395:7>>*/ Stdlib
               [1].call
              (null, "Bigarray.array3_of_genarray") /*<<bigarray.ml:395:48>>*/ ;
   }
   function reshape_0(a){
     /*<<bigarray.ml:400:18>>*/ return caml_ba_reshape(a, [0]) /*<<bigarray.ml:400:32>>*/ ;
   }
   function reshape_1(a, dim1){
     /*<<bigarray.ml:401:23>>*/ return caml_ba_reshape(a, [0, dim1]) /*<<bigarray.ml:401:41>>*/ ;
   }
   function reshape_2(a, dim1, dim2){
     /*<<bigarray.ml:402:28>>*/ return caml_ba_reshape(a, [0, dim1, dim2]) /*<<bigarray.ml:402:51>>*/ ;
   }
   function reshape_3(a, dim1, dim2, dim3){
     /*<<bigarray.ml:403:33>>*/ return caml_ba_reshape
            (a, [0, dim1, dim2, dim3]) /*<<bigarray.ml:403:61>>*/ ;
   }
    /*<<bigarray.ml:413:2>>*/ runtime.caml_register_global
    (10,
     [0,
      13,
      0,
      1,
      10,
      11,
      2,
      3,
      4,
      5,
      8,
      6,
      7,
      9,
      12,
      kind_size_in_bytes,
      0,
      1,
      [0, init, dims, size_in_bytes],
      [0,
       create,
       of_value,
       caml_ba_change_layout,
       size_in_bytes$0,
       get,
       set,
       of_value],
      [0,
       create$0,
       init$0,
       caml_ba_change_layout,
       size_in_bytes$1,
       slice,
       of_array],
      [0,
       create$1,
       init$1,
       caml_ba_change_layout,
       size_in_bytes$2,
       slice_left,
       slice_right,
       of_array$0],
      [0,
       create$2,
       init$2,
       caml_ba_change_layout,
       size_in_bytes$3,
       slice_left_1,
       slice_right_1,
       slice_left_2,
       slice_right_2,
       of_array$1],
      array0_of_genarray,
      array1_of_genarray,
      array2_of_genarray,
      array3_of_genarray,
      caml_ba_reshape,
      reshape_0,
      reshape_1,
      reshape_2,
      reshape_3],
     "Stdlib__Bigarray");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Random
//# unitInfo: Requires: Stdlib, Stdlib__Bigarray, Stdlib__Bytes, Stdlib__Digest, Stdlib__Domain, Stdlib__Int32, Stdlib__Int64, Stdlib__Nativeint, Stdlib__String, Stdlib__Sys
//# shape: Stdlib__Random:[F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(1),F(1),F(1),F(1),N,F(1),F(1),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_ba_blit = runtime.caml_ba_blit,
    caml_ba_set_1 = runtime.caml_ba_set_1,
    caml_bytes_set = runtime.caml_bytes_set,
    caml_create_bytes = runtime.caml_create_bytes,
    caml_greaterthan = runtime.caml_greaterthan,
    caml_int64_add = runtime.caml_int64_add,
    caml_int64_create_lo_mi_hi = runtime.caml_int64_create_lo_mi_hi,
    caml_int64_of_int32 = runtime.caml_int64_of_int32,
    caml_int64_shift_right_unsigne = runtime.caml_int64_shift_right_unsigned,
    caml_int64_sub = runtime.caml_int64_sub,
    caml_int64_to_int32 = runtime.caml_int64_to_int32,
    caml_lessequal = runtime.caml_lessequal,
    caml_lessthan = runtime.caml_lessthan,
    caml_lxm_next = runtime.caml_lxm_next,
    caml_mod = runtime.caml_mod,
    caml_notequal = runtime.caml_notequal,
    caml_sys_random_seed = runtime.caml_sys_random_seed;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Domain = global_data.Stdlib__Domain,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Int32 = global_data.Stdlib__Int32,
    Stdlib_Int64 = global_data.Stdlib__Int64,
    Stdlib = global_data.Stdlib,
    Stdlib_Bytes = global_data.Stdlib__Bytes,
    Stdlib_Digest = global_data.Stdlib__Digest,
    Stdlib_String = global_data.Stdlib__String,
    Stdlib_Bigarray = global_data.Stdlib__Bigarray,
    Stdlib_Nativeint = global_data.Stdlib__Nativeint,
    _a_ = caml_int64_create_lo_mi_hi(1, 0, 0),
    _b_ = caml_int64_create_lo_mi_hi(0, 0, 0),
    _c_ = caml_int64_create_lo_mi_hi(0, 0, 0),
    _d_ = caml_int64_create_lo_mi_hi(2, 0, 0),
    _e_ = caml_int64_create_lo_mi_hi(1, 0, 0);
   function create(param){
     /*<<random.ml:31:4>>*/ return caml_call3(Stdlib_Bigarray[20][1], 7, 0, 4) /*<<random.ml:31:34>>*/ ;
   }
   function set(s, i1, i2, i3, i4){
     /*<<random.ml:34:26>>*/  /*<<random.ml:34:4>>*/ caml_ba_set_1
     (s, 0,  /*<<random.ml:34:26>>*/ runtime.caml_int64_or(i1, _a_));
     /*<<random.ml:35:4>>*/ caml_ba_set_1(s, 1, i2);
    var i3$0 =  /*<<random.ml:36:30>>*/ caml_notequal(i3, _b_) ? i3 : _e_;
     /*<<random.ml:36:4>>*/ caml_ba_set_1(s, 2, i3$0);
    var i4$0 =  /*<<random.ml:37:30>>*/ caml_notequal(i4, _c_) ? i4 : _d_;
     /*<<random.ml:37:4>>*/ return caml_ba_set_1(s, 3, i4$0) /*<<random.ml:37:55>>*/ ;
   }
   function mk(i1, i2, i3, i4){
    var s =  /*<<random.ml:40:12>>*/ create(0);
     /*<<random.ml:41:4>>*/ set(s, i1, i2, i3, i4);
     /*<<random.ml:41:21>>*/ return s;
    /*<<random.ml:41:24>>*/ }
   var serialization_prefix =  /*<<?>>*/ "lxm1:";
   function to_binary_string(s){
    var buf =  /*<<random.ml:63:14>>*/ caml_create_bytes(37);
     /*<<random.ml:64:4>>*/ Stdlib_Bytes[12].call
     (null, serialization_prefix, 0, buf, 0, 5);
    var i =  /*<<random.ml:64:44>>*/ 0;
    for(;;){
     var _t_ =  /*<<random.ml:66:47>>*/ runtime.caml_ba_get_1(s, i);
      /*<<random.ml:66:6>>*/ Stdlib_Bytes[86].call
      (null, buf, 5 + (i * 8 | 0) | 0, _t_);
     var _u_ =  /*<<random.ml:66:63>>*/ i + 1 | 0;
     if(3 === i)
       /*<<random.ml:68:4>>*/ return Stdlib_Bytes[44].call(null, buf) /*<<random.ml:68:30>>*/ ;
      /*<<random.ml:66:63>>*/ i = _u_;
    }
    /*<<random.ml:68:30>>*/ }
   function of_binary_string(buf){
    var
     _r_ =  /*<<random.ml:73:4>>*/ runtime.caml_ml_string_length(buf) !== 37,
     _s_ =
       _r_
       ||
        1
        -
          /*<<random.ml:74:14>>*/ Stdlib_String[11].call
          (null, serialization_prefix, buf);
     /*<<random.ml:73:4>>*/ if(_s_){
     var
      _t_ =
         /*<<random.ml:77:8>>*/ Stdlib[28].call
         (null,
          "Random.State.of_binary_string: expected a format compatible with OCaml ",
          Stdlib_Sys[52]);
      /*<<random.ml:76:6>>*/ Stdlib[2].call(null, _t_);
    }
    var
     i1 =  /*<<random.ml:79:13>>*/ Stdlib_String[66].call(null, buf, 5),
     i2 =  /*<<random.ml:80:13>>*/ Stdlib_String[66].call(null, buf, 13),
     i3 =  /*<<random.ml:81:13>>*/ Stdlib_String[66].call(null, buf, 21),
     i4 =  /*<<random.ml:82:13>>*/ Stdlib_String[66].call(null, buf, 29);
     /*<<random.ml:83:4>>*/ return mk(i1, i2, i3, i4) /*<<random.ml:83:18>>*/ ;
   }
   function copy(src){
    var dst =  /*<<random.ml:89:13>>*/ create(0);
     /*<<random.ml:86:4>>*/ caml_ba_blit(src, dst);
     /*<<random.ml:89:36>>*/ return dst;
    /*<<random.ml:89:40>>*/ }
   function reinit(s, seed){
    var
     n =  /*<<random.ml:97:4>>*/ seed.length - 1,
     b =  /*<<random.ml:98:12>>*/ caml_create_bytes((n * 8 | 0) + 1 | 0),
     _m_ =  /*<<random.ml:99:4>>*/ n - 1 | 0;
    if(_m_ >= 0){
     var i = 0;
     for(;;){
      var
       _q_ =
          /*<<random.ml:100:49>>*/  /*<<random.ml:100:35>>*/ caml_int64_of_int32
          ( /*<<random.ml:100:49>>*/ runtime.caml_check_bound(seed, i)[i + 1]);
       /*<<random.ml:100:6>>*/ Stdlib_Bytes[86].call(null, b, i * 8 | 0, _q_);
      var _r_ =  /*<<random.ml:100:58>>*/ i + 1 | 0;
      if(_m_ === i) break;
      i = _r_;
     }
    }
     /*<<random.ml:102:4>>*/ caml_bytes_set(b, n * 8 | 0, 1);
    var d1 =  /*<<random.ml:103:13>>*/ Stdlib_Digest[4].call(null, b);
     /*<<random.ml:104:4>>*/ caml_bytes_set(b, n * 8 | 0, 2);
    var
     d2 =  /*<<random.ml:105:13>>*/ Stdlib_Digest[4].call(null, b),
     _n_ =  /*<<random.ml:109:10>>*/ Stdlib_String[66].call(null, d2, 8),
     _o_ =  /*<<random.ml:108:10>>*/ Stdlib_String[66].call(null, d2, 0),
     _p_ =  /*<<random.ml:107:10>>*/ Stdlib_String[66].call(null, d1, 8);
     /*<<random.ml:106:10>>*/ return  /*<<random.ml:106:36>>*/ set
            (s,
              /*<<random.ml:106:10>>*/ Stdlib_String[66].call(null, d1, 0),
             _p_,
             _o_,
             _n_) /*<<random.ml:109:36>>*/ ;
   }
   function make(seed){
    var s =  /*<<random.ml:112:12>>*/ create(0);
     /*<<random.ml:112:24>>*/ reinit(s, seed);
     /*<<random.ml:112:37>>*/ return s;
    /*<<random.ml:112:40>>*/ }
   function make_self_init(param){
     /*<<random.ml:115:9>>*/ return  /*<<random.ml:115:25>>*/ make
            ( /*<<random.ml:115:9>>*/ caml_sys_random_seed(0)) /*<<random.ml:115:25>>*/ ;
   }
   function bits(s){
     /*<<random.ml:129:17>>*/ return  /*<<random.ml:129:25>>*/ caml_int64_to_int32
            ( /*<<random.ml:129:17>>*/ caml_lxm_next(s))
           & 1073741823 /*<<random.ml:129:25>>*/ ;
    /*<<random.ml:129:40>>*/ }
   function int_aux(s, n, mask){
     /*<<random.ml:138:25>>*/ for(;;){
     var
      r =
         /*<<random.ml:138:33>>*/ caml_int64_to_int32
         ( /*<<random.ml:138:25>>*/ caml_lxm_next(s))
        & mask,
      v =  /*<<random.ml:139:4>>*/ caml_mod(r, n);
      /*<<random.ml:148:4>>*/ if(((mask - n | 0) + 1 | 0) >= (r - v | 0))
       /*<<random.ml:148:55>>*/ return v;
    }
    /*<<random.ml:148:56>>*/ }
   var max_int31 =  /*<<?>>*/ 1073741823;
   function int(s, bound){
     /*<<random.ml:154:4>>*/ if(1073741823 >= bound && 0 < bound)
      /*<<random.ml:156:9>>*/ return int_aux(s, bound, max_int31) /*<<random.ml:156:34>>*/ ;
     /*<<random.ml:155:9>>*/ return Stdlib[1].call(null, "Random.int") /*<<random.ml:156:34>>*/ ;
   }
   var max_int32 =  /*<<?>>*/ 2147483647;
   function full_int(s, bound){
     /*<<random.ml:161:4>>*/ if(0 >= bound)
      /*<<random.ml:162:6>>*/ return Stdlib[1].call(null, "Random.full_int") /*<<random.ml:173:22>>*/ ;
    var
     _m_ =
        /*<<random.ml:170:6>>*/ bound <= 1073741823
        ? max_int31
        : bound <= 2147483647 ? max_int32 : Stdlib[19];
    return int_aux(s, bound, _m_) /*<<random.ml:173:22>>*/ ;
   }
   function int_in_range_aux(s, min, max, mask, nbits){
    var span =  /*<<random.ml:193:4>>*/ (max - min | 0) + 1 | 0;
     /*<<random.ml:194:4>>*/ if(span <= mask && 0 < span)
      /*<<random.ml:198:12>>*/ return min + int_aux(s, span, mask) | 0 /*<<random.ml:198:31>>*/ ;
     /*<<random.ml:194:4>>*/ for(;;){
     var
      drop =  /*<<random.ml:184:4>>*/ Stdlib_Sys[11] - nbits | 0,
      r =
         /*<<random.ml:186:27>>*/  /*<<random.ml:186:35>>*/ caml_int64_to_int32
         ( /*<<random.ml:186:27>>*/ caml_lxm_next(s))
        << drop
        >> drop;
      /*<<random.ml:187:4>>*/ if(r >= min && max >= r)
       /*<<random.ml:187:74>>*/ return r;
    }
    /*<<random.ml:201:43>>*/ }
   function int_in_range(s, min, max){
     /*<<random.ml:206:4>>*/ if(max < min)
      /*<<random.ml:207:6>>*/ Stdlib[1].call(null, "Random.int_in_range");
     /*<<random.ml:214:4>>*/ if(-1073741824 <= min && max <= 1073741823)
      /*<<random.ml:215:6>>*/ return int_in_range_aux
             (s, min, max, max_int31, 31) /*<<random.ml:219:68>>*/ ;
     /*<<random.ml:216:9>>*/ if(-2147483648 <= min && max <= 2147483647)
      /*<<random.ml:217:6>>*/ return int_in_range_aux
             (s, min, max, max_int32, 32) /*<<random.ml:219:68>>*/ ;
     /*<<random.ml:219:6>>*/ return int_in_range_aux
            (s, min, max, Stdlib[19], Stdlib_Sys[11]) /*<<random.ml:219:68>>*/ ;
   }
   function bits32(s){
     /*<<random.ml:223:19>>*/ return  /*<<random.ml:223:4>>*/ caml_int64_to_int32
            ( /*<<random.ml:223:19>>*/ caml_lxm_next(s)) /*<<random.ml:223:27>>*/ ;
   }
   function int32aux(s, n){
     /*<<random.ml:227:4>>*/ for(;;){
     var
      r =  /*<<random.ml:227:38>>*/ bits32(s) >>> 1 | 0,
      v =  /*<<random.ml:228:12>>*/ caml_mod(r, n);
      /*<<random.ml:230:14>>*/ if
      (! caml_greaterthan(r - v | 0, (Stdlib_Int32[9] - n | 0) + 1 | 0))
       /*<<random.ml:232:9>>*/ return v;
    }
    /*<<random.ml:232:10>>*/ }
   function int32(s, bound){
     /*<<random.ml:235:7>>*/ return caml_lessequal(bound, 0)
            ?  /*<<random.ml:236:9>>*/ Stdlib[1].call(null, "Random.int32")
            :  /*<<random.ml:237:9>>*/ int32aux(s, bound) /*<<random.ml:237:25>>*/ ;
   }
   function int32_in_range(s, min, max){
     /*<<random.ml:246:7>>*/ if(caml_greaterthan(min, max))
      /*<<random.ml:247:6>>*/ return Stdlib[1].call
             (null, "Random.int32_in_range") /*<<random.ml:254:39>>*/ ;
    var
     span =
        /*<<random.ml:249:17>>*/ Stdlib_Int32[6].call(null, max - min | 0);
     /*<<random.ml:251:9>>*/ if(! caml_lessequal(span, Stdlib_Int32[1]))
      /*<<random.ml:254:22>>*/ return min + int32aux(s, span) | 0 /*<<random.ml:254:39>>*/ ;
     /*<<random.ml:251:27>>*/ for(;;){
     var
      r =
         /*<<random.ml:242:27>>*/  /*<<random.ml:242:12>>*/ caml_int64_to_int32
         ( /*<<random.ml:242:27>>*/ caml_lxm_next(s));
      /*<<random.ml:243:7>>*/ if
      (!
       caml_lessthan(r, min)
       && !  /*<<random.ml:243:18>>*/ caml_greaterthan(r, max))
       /*<<random.ml:243:67>>*/ return r;
    }
    /*<<random.ml:254:39>>*/ }
   var
    _f_ =  /*<<?>>*/ caml_int64_create_lo_mi_hi(1, 0, 0),
    _g_ = caml_int64_create_lo_mi_hi(0, 0, 0);
   function int64aux(s, n){
     /*<<random.ml:262:4>>*/ for(;;){
     var
      r =
         /*<<random.ml:258:4>>*/  /*<<random.ml:262:12>>*/ caml_int64_shift_right_unsigne
         ( /*<<random.ml:258:4>>*/ caml_lxm_next(s), 1),
      v =  /*<<random.ml:263:12>>*/ runtime.caml_int64_mod(r, n);
      /*<<random.ml:265:14>>*/ if
      (!
       caml_greaterthan
        (caml_int64_sub(r, v),
          /*<<random.ml:265:24>>*/ caml_int64_add
          ( /*<<random.ml:265:28>>*/ caml_int64_sub(Stdlib_Int64[9], n), _f_)))
       /*<<random.ml:267:9>>*/ return v;
    }
    /*<<random.ml:267:10>>*/ }
   function int64(s, bound){
     /*<<random.ml:270:7>>*/ return caml_lessequal(bound, _g_)
            ?  /*<<random.ml:271:9>>*/ Stdlib[1].call(null, "Random.int64")
            :  /*<<random.ml:272:9>>*/ int64aux(s, bound) /*<<random.ml:272:25>>*/ ;
   }
   function int64_in_range(s, min, max){
     /*<<random.ml:281:7>>*/ if(caml_greaterthan(min, max))
      /*<<random.ml:282:6>>*/ return Stdlib[1].call
             (null, "Random.int64_in_range") /*<<random.ml:289:39>>*/ ;
    var
     span =
        /*<<random.ml:284:28>>*/  /*<<random.ml:284:17>>*/ Stdlib_Int64[6].call
        (null,  /*<<random.ml:284:28>>*/ caml_int64_sub(max, min));
     /*<<random.ml:286:9>>*/ if(! caml_lessequal(span, Stdlib_Int64[1]))
      /*<<random.ml:289:22>>*/ return  /*<<random.ml:289:8>>*/ caml_int64_add
             (min,  /*<<random.ml:289:22>>*/ int64aux(s, span)) /*<<random.ml:289:39>>*/ ;
     /*<<random.ml:286:27>>*/ for(;;){
     var r =  /*<<random.ml:277:12>>*/ caml_lxm_next(s);
      /*<<random.ml:278:7>>*/ if
      (!
       caml_lessthan(r, min)
       && !  /*<<random.ml:278:18>>*/ caml_greaterthan(r, max))
       /*<<random.ml:278:67>>*/ return r;
    }
    /*<<random.ml:289:39>>*/ }
   var
    _j_ =  /*<<?>>*/ caml_int64_create_lo_mi_hi(14371852, 15349651, 22696),
    _k_ = caml_int64_create_lo_mi_hi(12230193, 11438743, 35013),
    _l_ = caml_int64_create_lo_mi_hi(1424933, 15549263, 2083),
    _m_ = caml_int64_create_lo_mi_hi(9492471, 4696708, 43520),
    _h_ = caml_int64_create_lo_mi_hi(0, 0, 0),
    _i_ = caml_int64_create_lo_mi_hi(0, 0, 0),
    nativebits =
      32 === Stdlib_Nativeint[9]
       ? function
        (s){
          /*<<random.ml:294:37>>*/ return bits32(s) /*<<random.ml:294:47>>*/ ;
        }
       : function
        (s){
          /*<<random.ml:258:4>>*/ return  /*<<random.ml:295:18>>*/ caml_int64_to_int32
                 ( /*<<random.ml:258:4>>*/ caml_lxm_next(s)) /*<<random.ml:295:47>>*/ ;
        },
    nativeint =
       /*<<?>>*/ 32 === Stdlib_Nativeint[9]
       ? function
        (s, bound){
          /*<<random.ml:300:43>>*/ return int32(s, bound) /*<<random.ml:300:79>>*/ ;
        }
       : function
        (s, bound){
          /*<<random.ml:301:52>>*/ return  /*<<random.ml:301:24>>*/ caml_int64_to_int32
                 ( /*<<random.ml:301:43>>*/ int64
                   (s,  /*<<random.ml:301:52>>*/ caml_int64_of_int32(bound))) /*<<random.ml:301:79>>*/ ;
        },
    nativeint_in_range =
       /*<<?>>*/ 32 === Stdlib_Nativeint[9]
       ? function
        (s, min, max){
          /*<<random.ml:307:25>>*/ return int32_in_range(s, min, max) /*<<random.ml:308:68>>*/ ;
        }
       : function
        (s, min, max){
          /*<<random.ml:311:13>>*/ return  /*<<random.ml:310:6>>*/ caml_int64_to_int32
                 ( /*<<random.ml:310:25>>*/ int64_in_range
                   (s,
                     /*<<random.ml:311:13>>*/ caml_int64_of_int32(min),
                     /*<<random.ml:311:43>>*/ caml_int64_of_int32(max))) /*<<random.ml:311:68>>*/ ;
        };
   function float(s, bound){
     /*<<random.ml:316:12>>*/ for(;;){
     var
      b = caml_lxm_next(s),
      n =  /*<<random.ml:317:12>>*/ caml_int64_shift_right_unsigne(b, 11);
      /*<<random.ml:318:7>>*/ if(caml_notequal(n, _h_))
       /*<<random.ml:318:20>>*/ return runtime.caml_int64_to_float(n)
             * 1.1102230246251565e-16
             * bound /*<<random.ml:321:41>>*/ ;
    }
   }
   function bool(s){
     /*<<random.ml:324:15>>*/ return caml_lessthan(caml_lxm_next(s), _i_) /*<<random.ml:324:26>>*/ ;
   }
   function split(s){
    var
     i1 =  /*<<random.ml:258:4>>*/ caml_lxm_next(s),
     i2 = caml_lxm_next(s),
     i3 = caml_lxm_next(s),
     i4 = caml_lxm_next(s);
     /*<<random.ml:330:4>>*/ return mk(i1, i2, i3, i4) /*<<random.ml:330:18>>*/ ;
   }
   function mk_default(param){
     /*<<random.ml:335:2>>*/ return mk(_m_, _l_, _k_, _j_) /*<<random.ml:338:31>>*/ ;
   }
   var
    random_key =
       /*<<random.ml:341:2>>*/ caml_call2
       (Stdlib_Domain[11][1], [0, split], mk_default);
   function bits$0(param){
     /*<<random.ml:343:25>>*/ return  /*<<random.ml:343:52>>*/ bits
            ( /*<<random.ml:343:25>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key)) /*<<random.ml:343:52>>*/ ;
   }
   function int$0(bound){
     /*<<random.ml:344:26>>*/ return  /*<<random.ml:344:53>>*/ int
            ( /*<<random.ml:344:26>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             bound) /*<<random.ml:344:59>>*/ ;
   }
   function full_int$0(bound){
     /*<<random.ml:345:36>>*/ return  /*<<random.ml:345:63>>*/ full_int
            ( /*<<random.ml:345:36>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             bound) /*<<random.ml:345:69>>*/ ;
   }
   function int_in_range$0(min, max){
     /*<<random.ml:347:21>>*/ return  /*<<random.ml:347:48>>*/ int_in_range
            ( /*<<random.ml:347:21>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             min,
             max) /*<<random.ml:347:58>>*/ ;
   }
   function int32$0(bound){
     /*<<random.ml:348:30>>*/ return  /*<<random.ml:348:57>>*/ int32
            ( /*<<random.ml:348:30>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             bound) /*<<random.ml:348:63>>*/ ;
   }
   function int32_in_range$0(min, max){
     /*<<random.ml:350:23>>*/ return  /*<<random.ml:350:50>>*/ int32_in_range
            ( /*<<random.ml:350:23>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             min,
             max) /*<<random.ml:350:60>>*/ ;
   }
   function nativeint$0(bound){
     /*<<random.ml:351:38>>*/ return  /*<<random.ml:351:65>>*/ nativeint
            ( /*<<random.ml:351:38>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             bound) /*<<random.ml:351:71>>*/ ;
   }
   function nativeint_in_range$0(min, max){
     /*<<random.ml:353:27>>*/ return  /*<<random.ml:353:54>>*/ nativeint_in_range
            ( /*<<random.ml:353:27>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             min,
             max) /*<<random.ml:353:64>>*/ ;
   }
   function int64$0(bound){
     /*<<random.ml:354:30>>*/ return  /*<<random.ml:354:57>>*/ int64
            ( /*<<random.ml:354:30>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             bound) /*<<random.ml:354:63>>*/ ;
   }
   function int64_in_range$0(min, max){
     /*<<random.ml:356:23>>*/ return  /*<<random.ml:356:50>>*/ int64_in_range
            ( /*<<random.ml:356:23>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             min,
             max) /*<<random.ml:356:60>>*/ ;
   }
   function float$0(scale){
     /*<<random.ml:357:30>>*/ return  /*<<random.ml:357:57>>*/ float
            ( /*<<random.ml:357:30>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             scale) /*<<random.ml:357:63>>*/ ;
   }
   function bool$0(param){
     /*<<random.ml:358:25>>*/ return  /*<<random.ml:358:52>>*/ bool
            ( /*<<random.ml:358:25>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key)) /*<<random.ml:358:52>>*/ ;
   }
   function bits32$0(param){
     /*<<random.ml:359:29>>*/ return  /*<<random.ml:359:56>>*/ bits32
            ( /*<<random.ml:359:29>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key)) /*<<random.ml:359:56>>*/ ;
   }
   function bits64(param){
    var
     s =
        /*<<random.ml:360:29>>*/ caml_call1(Stdlib_Domain[11][2], random_key);
     /*<<random.ml:258:4>>*/ return caml_lxm_next(s) /*<<random.ml:360:56>>*/ ;
   }
   function nativebits$0(param){
     /*<<random.ml:361:37>>*/ return  /*<<random.ml:361:64>>*/ nativebits
            ( /*<<random.ml:361:37>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key)) /*<<random.ml:361:64>>*/ ;
   }
   function full_init(seed){
     /*<<random.ml:363:34>>*/ return  /*<<random.ml:363:61>>*/ reinit
            ( /*<<random.ml:363:34>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key),
             seed) /*<<random.ml:363:66>>*/ ;
   }
   function init(seed){
     /*<<random.ml:364:16>>*/ return full_init([0, seed]) /*<<random.ml:364:36>>*/ ;
   }
   function self_init(param){
     /*<<random.ml:365:29>>*/ return  /*<<random.ml:365:44>>*/ full_init
            ( /*<<random.ml:365:29>>*/ caml_sys_random_seed(0)) /*<<random.ml:365:44>>*/ ;
   }
   function split$0(param){
     /*<<random.ml:369:27>>*/ return  /*<<random.ml:369:54>>*/ split
            ( /*<<random.ml:369:27>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key)) /*<<random.ml:369:54>>*/ ;
   }
   function get_state(param){
     /*<<random.ml:373:30>>*/ return  /*<<random.ml:373:57>>*/ copy
            ( /*<<random.ml:373:30>>*/ caml_call1
              (Stdlib_Domain[11][2], random_key)) /*<<random.ml:373:57>>*/ ;
   }
   function set_state(src){
    var
     dst =
        /*<<random.ml:374:31>>*/ caml_call1(Stdlib_Domain[11][2], random_key);
     /*<<random.ml:86:4>>*/ return caml_ba_blit(src, dst) /*<<random.ml:374:60>>*/ ;
   }
    /*<<random.ml:341:62>>*/ runtime.caml_register_global
    (35,
     [0,
      init,
      full_init,
      self_init,
      bits$0,
      int$0,
      full_int$0,
      int_in_range$0,
      int32$0,
      int32_in_range$0,
      nativeint$0,
      nativeint_in_range$0,
      int64$0,
      int64_in_range$0,
      float$0,
      bool$0,
      bits32$0,
      bits64,
      nativebits$0,
      [0,
       make,
       make_self_init,
       copy,
       bits,
       int,
       full_int,
       int_in_range,
       int32,
       int32_in_range,
       nativeint,
       nativeint_in_range,
       int64,
       int64_in_range,
       float,
       bool,
       bits32,
       caml_lxm_next,
       nativebits,
       split,
       to_binary_string,
       of_binary_string],
      get_state,
      set_state,
      split$0],
     "Stdlib__Random");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Hashtbl
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Atomic, Stdlib__Domain, Stdlib__Int, Stdlib__Random, Stdlib__Seq, Stdlib__String, Stdlib__Sys
//# shape: Stdlib__Hashtbl:[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_check_bound = runtime.caml_check_bound,
    caml_compare = runtime.caml_compare,
    caml_hash = runtime.caml_hash,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_sys_getenv = runtime.caml_sys_getenv,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib = global_data.Stdlib,
    Stdlib_Atomic = global_data.Stdlib__Atomic,
    Stdlib_Domain = global_data.Stdlib__Domain,
    Stdlib_Random = global_data.Stdlib__Random,
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib_Int = global_data.Stdlib__Int,
    Stdlib_Array = global_data.Stdlib__Array;
   global_data.Assert_failure;
   var Stdlib_String = global_data.Stdlib__String;
   function ongoing_traversal(h){
    var
     _C_ =  /*<<hashtbl.ml:41:2>>*/ h.length - 1 < 4 ? 1 : 0,
     _D_ = _C_ || (h[4] < 0 ? 1 : 0);
    return _D_;
    /*<<hashtbl.ml:42:23>>*/ }
   function flip_ongoing_traversal(h){
     /*<<hashtbl.ml:45:2>>*/ h[4] = - h[4] | 0;
    return 0;
    /*<<hashtbl.ml:45:36>>*/ }
    /*<<?>>*/ try{
    var
     _c_ =  /*<<hashtbl.ml:51:8>>*/ caml_sys_getenv("OCAMLRUNPARAM"),
     params = _c_;
   }
   catch(exn$1){
    var exn =  /*<<?>>*/ caml_wrap_exception(exn$1);
    if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
    try{
     var
      _b_ =  /*<<hashtbl.ml:52:8>>*/ caml_sys_getenv("CAMLRUNPARAM"),
      params = _b_;
    }
    catch(exn){
     var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
     if(exn$0 !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn$0, 0);
     var params = "";
    }
   }
   var
    randomized_default =
       /*<<hashtbl.ml:53:2>>*/ Stdlib_String[15].call(null, params, 82),
    randomized =
       /*<<hashtbl.ml:55:17>>*/ Stdlib_Atomic[1].call
       (null, randomized_default);
   function randomize(param){
     /*<<hashtbl.ml:57:19>>*/ return Stdlib_Atomic[4].call
            (null, randomized, 1) /*<<hashtbl.ml:57:45>>*/ ;
   }
   function is_randomized(param){
     /*<<hashtbl.ml:58:23>>*/ return Stdlib_Atomic[3].call(null, randomized) /*<<hashtbl.ml:58:44>>*/ ;
   }
   var
    prng_key =
       /*<<hashtbl.ml:60:15>>*/ caml_call2
       (Stdlib_Domain[11][1], 0, Stdlib_Random[19][2]);
   function power_2_above(x$1, n){
    var x =  /*<<hashtbl.ml:69:2>>*/ x$1;
    for(;;){
     if(n <= x)  /*<<hashtbl.ml:69:17>>*/ return x;
      /*<<hashtbl.ml:70:7>>*/ if(Stdlib_Sys[14] < (x * 2 | 0))
       /*<<hashtbl.ml:70:44>>*/ return x;
     var x$0 =  /*<<hashtbl.ml:71:7>>*/ x * 2 | 0;
     x = x$0;
    }
    /*<<hashtbl.ml:71:30>>*/ }
   function create(opt, initial_size){
    var
     random =
        /*<<hashtbl.ml:73:11>>*/ opt
        ? opt[1]
        :  /*<<hashtbl.ml:73:22>>*/ Stdlib_Atomic[3].call(null, randomized),
     s =  /*<<hashtbl.ml:74:10>>*/ power_2_above(16, initial_size);
     /*<<hashtbl.ml:75:2>>*/ if(random)
     var
      _C_ =
         /*<<hashtbl.ml:76:37>>*/ caml_call1(Stdlib_Domain[11][2], prng_key),
      seed =
         /*<<hashtbl.ml:76:62>>*/  /*<<hashtbl.ml:76:19>>*/ caml_call1
         (Stdlib_Random[19][4], _C_);
    else
     var seed =  /*<<hashtbl.ml:76:68>>*/ 0;
     /*<<hashtbl.ml:78:52>>*/ return [0, 0, caml_array_make(s, 0), seed, s] /*<<hashtbl.ml:78:70>>*/ ;
    /*<<hashtbl.ml:78:72>>*/ }
   function clear(h){
    var _C_ =  /*<<hashtbl.ml:81:2>>*/ 0 < h[1] ? 1 : 0;
    return _C_
            ? (h
               [1]
              = 0,
               /*<<hashtbl.ml:83:4>>*/ Stdlib_Array[8].call
               (null, h[2], 0, h[2].length - 1, 0))
            : _C_ /*<<hashtbl.ml:84:5>>*/ ;
   }
   function reset(h){
    var len =  /*<<hashtbl.ml:87:2>>*/ h[2].length - 1;
     /*<<hashtbl.ml:88:2>>*/ if
     (4 <= h.length - 1
      && len !==  /*<<hashtbl.ml:89:13>>*/ Stdlib[18].call(null, h[4])){
      /*<<hashtbl.ml:91:7>>*/ h[1] = 0;
      /*<<hashtbl.ml:93:25>>*/ h[2] =
       /*<<hashtbl.ml:93:14>>*/ caml_array_make
       ( /*<<hashtbl.ml:93:25>>*/ Stdlib[18].call(null, h[4]), 0);
      /*<<hashtbl.ml:93:51>>*/ return 0;
    }
     /*<<hashtbl.ml:90:4>>*/ return clear(h) /*<<hashtbl.ml:94:5>>*/ ;
   }
   function copy_bucketlist(param){
     /*<<hashtbl.ml:96:22>>*/ if(! param)  /*<<hashtbl.ml:97:13>>*/ return 0;
    var
     key =  /*<<hashtbl.ml:96:22>>*/ param[1],
     data = param[2],
     next = param[3],
     prec$1 =  /*<<hashtbl.ml:109:6>>*/ [0, key, data, next],
     prec =  /*<<hashtbl.ml:110:6>>*/ prec$1,
     param$0 = next;
    for(;;){
      /*<<hashtbl.ml:99:19>>*/ if(! param$0)
       /*<<hashtbl.ml:110:17>>*/ return prec$1;
     var
      key$0 =  /*<<hashtbl.ml:99:19>>*/ param$0[1],
      data$0 = param$0[2],
      next$0 = param$0[3],
      prec$0 =  /*<<hashtbl.ml:102:12>>*/ [0, key$0, data$0, next$0];
      /*<<hashtbl.ml:105:28>>*/ prec[3] = prec$0;
     prec = prec$0;
     param$0 = next$0;
    }
    /*<<hashtbl.ml:111:7>>*/ }
   function copy(h){
    var
     _A_ =  /*<<hashtbl.ml:113:29>>*/ h[4],
     _B_ = h[3],
     _C_ = Stdlib_Array[16].call(null, copy_bucketlist, h[2]);
     /*<<hashtbl.ml:113:61>>*/ return [0, h[1], _C_, _B_, _A_];
    /*<<hashtbl.ml:113:63>>*/ }
   function length(h){
     /*<<hashtbl.ml:115:15>>*/ return h[1];
    /*<<hashtbl.ml:115:21>>*/ }
   function insert_all_buckets(indexfun, inplace, odata, ndata){
    var
     nsize =  /*<<hashtbl.ml:118:2>>*/ ndata.length - 1,
     ndata_tail =  /*<<hashtbl.ml:119:19>>*/ caml_array_make(nsize, 0),
     _w_ =  /*<<hashtbl.ml:135:2>>*/ odata.length - 2 | 0;
    if(_w_ >= 0){
     var i$0 = 0;
     a:
     for(;;){
      var
       cell$1 =
          /*<<hashtbl.ml:136:18>>*/ caml_check_bound(odata, i$0)[i$0 + 1],
       cell =  /*<<hashtbl.ml:136:4>>*/ cell$1;
      for(;;){
        /*<<hashtbl.ml:120:26>>*/ if(! cell){
        var _A_ =  /*<<hashtbl.ml:136:27>>*/ i$0 + 1 | 0;
        if(_w_ === i$0) break a;
        i$0 = _A_;
        break;
       }
       var
        key =  /*<<hashtbl.ml:120:26>>*/ cell[1],
        data = cell[2],
        next = cell[3],
        cell$0 =  /*<<hashtbl.ml:123:8>>*/ inplace ? cell : [0, key, data, 0],
        nidx =  /*<<hashtbl.ml:127:19>>*/ caml_call1(indexfun, key),
        match =
           /*<<hashtbl.ml:128:20>>*/ caml_check_bound(ndata_tail, nidx)
           [nidx + 1];
        /*<<hashtbl.ml:128:37>>*/ if(match)
         /*<<hashtbl.ml:130:23>>*/ match[3] = cell$0;
       else
         /*<<hashtbl.ml:129:19>>*/ caml_check_bound(ndata, nidx)[nidx + 1] = cell$0;
        /*<<hashtbl.ml:132:8>>*/ caml_check_bound(ndata_tail, nidx)[nidx + 1]
       = cell$0;
        /*<<hashtbl.ml:132:33>>*/ cell = next;
      }
     }
    }
     /*<<hashtbl.ml:138:2>>*/ if(inplace){
     var _x_ =  /*<<hashtbl.ml:139:4>>*/ nsize - 1 | 0;
     if(_x_ >= 0){
      var i = 0;
      for(;;){
       var
        match$0 =
           /*<<hashtbl.ml:140:12>>*/ caml_check_bound(ndata_tail, i)[i + 1];
        /*<<hashtbl.ml:140:26>>*/ if(match$0)
         /*<<hashtbl.ml:142:21>>*/ match$0[3] = 0;
       var _z_ =  /*<<hashtbl.ml:140:26>>*/ i + 1 | 0;
       if(_x_ === i) break;
       i = _z_;
      }
     }
     var _y_ =  /*<<hashtbl.ml:139:4>>*/ 0;
    }
    else
     var _y_ =  /*<<hashtbl.ml:138:2>>*/ inplace;
    return _y_;
    /*<<hashtbl.ml:143:8>>*/ }
   function resize(indexfun, h){
    var
     odata =  /*<<hashtbl.ml:146:2>>*/ h[2],
     osize =  /*<<hashtbl.ml:147:2>>*/ odata.length - 1,
     nsize =  /*<<hashtbl.ml:148:2>>*/ osize * 2 | 0,
     _w_ =  /*<<hashtbl.ml:149:2>>*/ nsize < Stdlib_Sys[14] ? 1 : 0;
    if(! _w_) return _w_;
    var
     ndata =  /*<<hashtbl.ml:150:16>>*/ caml_array_make(nsize, 0),
     inplace =  /*<<hashtbl.ml:151:22>>*/ 1 - ongoing_traversal(h);
     /*<<hashtbl.ml:152:4>>*/ h[2] = ndata;
     /*<<hashtbl.ml:153:23>>*/ return  /*<<hashtbl.ml:153:35>>*/ insert_all_buckets
            ( /*<<hashtbl.ml:153:23>>*/ caml_call1(indexfun, h),
             inplace,
             odata,
             ndata) /*<<hashtbl.ml:154:5>>*/ ;
   }
   function iter(f, h){
    var old_trav =  /*<<hashtbl.ml:162:17>>*/ ongoing_traversal(h);
     /*<<hashtbl.ml:163:2>>*/ if(1 - old_trav)
      /*<<hashtbl.ml:163:23>>*/ flip_ongoing_traversal(h);
     /*<<hashtbl.ml:163:2>>*/ try{
     var d = h[2], _t_ =  /*<<hashtbl.ml:166:4>>*/ d.length - 2 | 0;
     if(_t_ >= 0){
      var i = 0;
      a:
      for(;;){
       var
        param =
           /*<<hashtbl.ml:167:6>>*/  /*<<hashtbl.ml:167:16>>*/ caml_check_bound
            (d, i)
           [i + 1];
        /*<<hashtbl.ml:167:6>>*/ for(;;){
         /*<<hashtbl.ml:157:22>>*/ if(! param){
         var _w_ =  /*<<hashtbl.ml:167:21>>*/ i + 1 | 0;
         if(_t_ === i) break a;
         i = _w_;
         break;
        }
        var
         key =  /*<<hashtbl.ml:157:22>>*/ param[1],
         data = param[2],
         next = param[3];
         /*<<hashtbl.ml:161:8>>*/ caml_call2(f, key, data);
         /*<<hashtbl.ml:161:18>>*/ param = next;
       }
      }
     }
     var
      _u_ =  /*<<hashtbl.ml:169:4>>*/ 1 - old_trav,
      _v_ = _u_ ?  /*<<hashtbl.ml:169:25>>*/ flip_ongoing_traversal(h) : _u_;
     return _v_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      /*<<hashtbl.ml:170:16>>*/ if(old_trav)
      throw caml_maybe_attach_backtrace(exn, 0);
      /*<<hashtbl.ml:171:4>>*/ flip_ongoing_traversal(h);
      /*<<hashtbl.ml:171:28>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<hashtbl.ml:172:13>>*/ }
   function filter_map_inplace(f, h){
    var
     d =  /*<<hashtbl.ml:195:2>>*/ h[2],
     old_trav =  /*<<hashtbl.ml:196:17>>*/ ongoing_traversal(h);
     /*<<hashtbl.ml:197:2>>*/ if(1 - old_trav)
      /*<<hashtbl.ml:197:23>>*/ flip_ongoing_traversal(h);
     /*<<hashtbl.ml:198:2>>*/ try{
     var _q_ = d.length - 2 | 0;
     if(_q_ >= 0){
      var i = 0;
      a:
      for(;;){
       var
        slot$0 =  /*<<hashtbl.ml:200:44>>*/ caml_check_bound(h[2], i)[i + 1],
        prec =  /*<<hashtbl.ml:200:6>>*/ 0,
        slot = slot$0;
       for(;;){
         /*<<hashtbl.ml:174:34>>*/ if(! slot){
          /*<<hashtbl.ml:176:6>>*/ if(prec)
           /*<<hashtbl.ml:178:18>>*/ prec[3] = 0;
         else
           /*<<hashtbl.ml:177:17>>*/ caml_check_bound(h[2], i)[i + 1] = 0;
         var _t_ =  /*<<hashtbl.ml:200:54>>*/ i + 1 | 0;
         if(_q_ === i) break a;
         i = _t_;
         break;
        }
        var
         key =  /*<<hashtbl.ml:174:34>>*/ slot[1],
         data = slot[2],
         next = slot[3],
         match =  /*<<hashtbl.ml:181:18>>*/ caml_call2(f, key, data);
         /*<<hashtbl.ml:181:28>>*/ if(match){
         var data$0 = match[1];
          /*<<hashtbl.ml:186:10>>*/ if(prec)
           /*<<hashtbl.ml:188:22>>*/ prec[3] = slot;
         else
           /*<<hashtbl.ml:187:21>>*/ caml_check_bound(h[2], i)[i + 1] = slot;
          /*<<hashtbl.ml:190:10>>*/ slot[2] = data$0;
          /*<<hashtbl.ml:191:10>>*/ prec = slot;
         slot = next;
        }
        else{
          /*<<hashtbl.ml:183:10>>*/ h[1] = h[1] - 1 | 0;
          /*<<hashtbl.ml:184:10>>*/ slot = next;
        }
       }
      }
     }
     var
      _r_ =  /*<<hashtbl.ml:202:4>>*/ 1 - old_trav,
      _s_ = _r_ ?  /*<<hashtbl.ml:202:25>>*/ flip_ongoing_traversal(h) : _r_;
     return _s_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      /*<<hashtbl.ml:203:16>>*/ if(old_trav)
      throw caml_maybe_attach_backtrace(exn, 0);
      /*<<hashtbl.ml:204:4>>*/ flip_ongoing_traversal(h);
      /*<<hashtbl.ml:204:28>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<hashtbl.ml:205:13>>*/ }
   function fold(f, h, init){
    var old_trav =  /*<<hashtbl.ml:214:17>>*/ ongoing_traversal(h);
     /*<<hashtbl.ml:215:2>>*/ if(1 - old_trav)
      /*<<hashtbl.ml:215:23>>*/ flip_ongoing_traversal(h);
     /*<<hashtbl.ml:215:2>>*/ try{
     var d = h[2], _p_ =  /*<<hashtbl.ml:219:4>>*/ d.length - 2 | 0;
     if(_p_ < 0)
      var accu$2 = init;
     else{
      var accu$1 = init, i = 0;
      a:
      for(;;){
       var
        b$0 =  /*<<hashtbl.ml:220:24>>*/ caml_check_bound(d, i)[i + 1],
        b =  /*<<hashtbl.ml:220:14>>*/ b$0,
        accu = accu$1;
       for(;;){
         /*<<hashtbl.ml:209:4>>*/ if(! b){
         var _q_ =  /*<<hashtbl.ml:220:35>>*/ i + 1 | 0;
         if(_p_ !== i){accu$1 = accu; i = _q_; break;}
         var accu$2 = accu;
         break a;
        }
        var
         key =  /*<<hashtbl.ml:209:4>>*/ b[1],
         data = b[2],
         next = b[3],
         accu$0 =  /*<<hashtbl.ml:213:23>>*/ caml_call3(f, key, data, accu);
         /*<<hashtbl.ml:213:40>>*/ b = next;
        accu = accu$0;
       }
      }
     }
      /*<<hashtbl.ml:222:4>>*/ if(1 - old_trav)
       /*<<hashtbl.ml:222:25>>*/ flip_ongoing_traversal(h);
     return accu$2;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      /*<<hashtbl.ml:224:16>>*/ if(old_trav)
      throw caml_maybe_attach_backtrace(exn, 0);
      /*<<hashtbl.ml:225:4>>*/ flip_ongoing_traversal(h);
      /*<<hashtbl.ml:225:28>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<hashtbl.ml:226:13>>*/ }
   function bucket_length(accu$1, param$0){
    var accu =  /*<<hashtbl.ml:235:22>>*/ accu$1, param = param$0;
    for(;;){
     if(! param)  /*<<hashtbl.ml:236:13>>*/ return accu;
     var
      next =  /*<<hashtbl.ml:235:22>>*/ param[3],
      accu$0 =  /*<<hashtbl.ml:237:18>>*/ accu + 1 | 0;
     accu = accu$0;
     param = next;
    }
    /*<<hashtbl.ml:237:47>>*/ }
   function stats(h){
    var
     mbl =
        /*<<hashtbl.ml:241:4>>*/ Stdlib_Array[20].call
        (null,
         function(m, b){
          var _p_ =  /*<<hashtbl.ml:241:42>>*/ bucket_length(0, b);
           /*<<hashtbl.ml:241:61>>*/ return Stdlib_Int[11].call(null, m, _p_);
         },
         0,
         h[2]),
     histo =  /*<<hashtbl.ml:242:14>>*/ caml_array_make(mbl + 1 | 0, 0);
     /*<<hashtbl.ml:243:2>>*/ Stdlib_Array[14].call
     (null,
      function(b){
       var l =  /*<<hashtbl.ml:245:14>>*/ bucket_length(0, b);
        /*<<hashtbl.ml:246:19>>*/ histo[l + 1] =
        caml_check_bound(histo, l)[l + 1] + 1 | 0;
        /*<<hashtbl.ml:246:32>>*/ return 0;
      },
      h[2]);
     /*<<hashtbl.ml:247:10>>*/ return [0, h[1], h[2].length - 1, mbl, histo];
    /*<<hashtbl.ml:251:30>>*/ }
   function to_seq(tbl){
    var tbl_data =  /*<<hashtbl.ml:258:2>>*/ tbl[2];
    function aux(i$1, buck$1, param){
     var i =  /*<<hashtbl.ml:260:26>>*/ i$1, buck = buck$1;
     for(;;){
      if(buck) break;
       /*<<hashtbl.ml:262:8>>*/ if(i === tbl_data.length - 1)
        /*<<hashtbl.ml:263:13>>*/ return 0;
      var
       buck$0 =
          /*<<hashtbl.ml:264:22>>*/ caml_check_bound(tbl_data, i)[i + 1],
       i$0 =  /*<<hashtbl.ml:264:34>>*/ i + 1 | 0;
      i = i$0;
      buck = buck$0;
     }
     var
      key =  /*<<hashtbl.ml:260:26>>*/ buck[1],
      data = buck[2],
      next = buck[3];
      /*<<hashtbl.ml:266:41>>*/ return [0,
             [0, key, data],
             function(_p_){
               /*<<hashtbl.ml:266:31>>*/ return aux(i, next, _p_);
             }] /*<<hashtbl.ml:266:41>>*/ ;
     /*<<hashtbl.ml:266:42>>*/ }
     /*<<hashtbl.ml:268:2>>*/ return function(_p_){
      /*<<?>>*/ return aux(0, 0, _p_);} /*<<hashtbl.ml:268:2>>*/ ;
    /*<<hashtbl.ml:268:13>>*/ }
   function to_seq_keys(m){
    var _m_ =  /*<<hashtbl.ml:270:32>>*/ to_seq(m);
    function _n_(_p_){ /*<<?>>*/ return _p_[1];}
    var _o_ =  /*<<hashtbl.ml:270:42>>*/ Stdlib_Seq[30];
    return function(_p_){
      /*<<?>>*/ return _o_(_n_, _m_, _p_);} /*<<hashtbl.ml:270:42>>*/ ;
   }
   function to_seq_values(m){
    var _j_ =  /*<<hashtbl.ml:272:34>>*/ to_seq(m);
    function _k_(_m_){ /*<<?>>*/ return _m_[2];}
    var _l_ =  /*<<hashtbl.ml:272:44>>*/ Stdlib_Seq[30];
    return function(_m_){
      /*<<?>>*/ return _l_(_k_, _j_, _m_);} /*<<hashtbl.ml:272:44>>*/ ;
   }
   function MakeSeeded(H){
    function key_index(h, key){
     var _j_ =  /*<<hashtbl.ml:357:6>>*/ h[2].length - 2 | 0;
     return caml_call2(H[2], h[3], key) & _j_ /*<<hashtbl.ml:357:32>>*/ ;
     /*<<hashtbl.ml:357:63>>*/ }
    function add(h, key, data){
     var
      i =  /*<<hashtbl.ml:360:14>>*/ key_index(h, key),
      bucket =
         /*<<hashtbl.ml:361:40>>*/ [0,
         key,
         data,
         caml_check_bound(h[2], i)[i + 1]];
      /*<<hashtbl.ml:362:6>>*/ caml_check_bound(h[2], i)[i + 1] = bucket;
      /*<<hashtbl.ml:362:26>>*/ h[1] = h[1] + 1 | 0;
     var _j_ =  /*<<hashtbl.ml:364:6>>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0;
     return _j_ ?  /*<<hashtbl.ml:364:49>>*/ resize(key_index, h) : _j_ /*<<hashtbl.ml:364:67>>*/ ;
    }
    function remove(h, key){
     var
      i =  /*<<hashtbl.ml:380:14>>*/ key_index(h, key),
      prec$1 =  /*<<hashtbl.ml:381:34>>*/ caml_check_bound(h[2], i)[i + 1],
      prec$0 =  /*<<hashtbl.ml:381:44>>*/ 0,
      prec = prec$1;
     for(;;){
       /*<<hashtbl.ml:366:26>>*/ if(! prec)
        /*<<hashtbl.ml:368:10>>*/ return 0;
      var k =  /*<<hashtbl.ml:366:26>>*/ prec[1], next = prec[3];
       /*<<hashtbl.ml:370:13>>*/ if(caml_call2(H[1], k, key)){
        /*<<hashtbl.ml:371:15>>*/ h[1] = h[1] - 1 | 0;
        /*<<hashtbl.ml:373:12>>*/ return prec$0
               ? (prec$0[3] = next, 0)
               : ( /*<<hashtbl.ml:374:23>>*/ caml_check_bound
                   (h[2], i)
                  [i + 1]
                 = next,
                 0) /*<<hashtbl.ml:381:44>>*/ ;
      }
       /*<<hashtbl.ml:370:26>>*/ prec$0 = prec;
      prec = next;
     }
     /*<<hashtbl.ml:381:44>>*/ }
    function find(h, key){
     var
      _j_ =  /*<<hashtbl.ml:390:20>>*/ key_index(h, key),
      match =  /*<<hashtbl.ml:390:12>>*/ caml_check_bound(h[2], _j_)[_j_ + 1];
      /*<<hashtbl.ml:390:36>>*/ if(! match)
       /*<<hashtbl.ml:391:17>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[8], 1);
     var
      k1 =  /*<<hashtbl.ml:390:36>>*/ match[1],
      d1 = match[2],
      next1 = match[3];
      /*<<hashtbl.ml:393:13>>*/ if(caml_call2(H[1], key, k1))
       /*<<hashtbl.ml:393:33>>*/ return d1;
      /*<<hashtbl.ml:394:10>>*/ if(! next1)
       /*<<hashtbl.ml:395:21>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[8], 1);
     var
      k2 =  /*<<hashtbl.ml:394:10>>*/ next1[1],
      d2 = next1[2],
      next2 = next1[3];
      /*<<hashtbl.ml:397:17>>*/ if(caml_call2(H[1], key, k2))
       /*<<hashtbl.ml:397:37>>*/ return d2;
      /*<<hashtbl.ml:398:14>>*/ if(! next2)
       /*<<hashtbl.ml:399:25>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[8], 1);
     var
      k3 =  /*<<hashtbl.ml:398:14>>*/ next2[1],
      d3 = next2[2],
      next3 = next2[3];
      /*<<hashtbl.ml:401:21>>*/ if(caml_call2(H[1], key, k3))
       /*<<hashtbl.ml:401:41>>*/ return d3;
     var param =  /*<<hashtbl.ml:401:35>>*/ next3;
     for(;;){
       /*<<hashtbl.ml:383:21>>*/ if(! param)
        /*<<hashtbl.ml:385:10>>*/ throw caml_maybe_attach_backtrace
              (Stdlib[8], 1);
      var
       k =  /*<<hashtbl.ml:383:21>>*/ param[1],
       data = param[2],
       next = param[3];
       /*<<hashtbl.ml:387:13>>*/ if(caml_call2(H[1], key, k))
        /*<<hashtbl.ml:387:32>>*/ return data;
       /*<<hashtbl.ml:387:26>>*/ param = next;
     }
     /*<<hashtbl.ml:401:67>>*/ }
    function find_opt(h, key){
     var
      _j_ =  /*<<hashtbl.ml:410:20>>*/ key_index(h, key),
      match =  /*<<hashtbl.ml:410:12>>*/ caml_check_bound(h[2], _j_)[_j_ + 1];
      /*<<hashtbl.ml:410:36>>*/ if(! match)
       /*<<hashtbl.ml:411:17>>*/ return 0;
     var
      k1 =  /*<<hashtbl.ml:410:36>>*/ match[1],
      d1 = match[2],
      next1 = match[3];
      /*<<hashtbl.ml:413:13>>*/ if(caml_call2(H[1], key, k1))
       /*<<hashtbl.ml:413:33>>*/ return [0, d1];
      /*<<hashtbl.ml:414:10>>*/ if(! next1)
       /*<<hashtbl.ml:415:21>>*/ return 0;
     var
      k2 =  /*<<hashtbl.ml:414:10>>*/ next1[1],
      d2 = next1[2],
      next2 = next1[3];
      /*<<hashtbl.ml:417:17>>*/ if(caml_call2(H[1], key, k2))
       /*<<hashtbl.ml:417:37>>*/ return [0, d2];
      /*<<hashtbl.ml:418:14>>*/ if(! next2)
       /*<<hashtbl.ml:419:25>>*/ return 0;
     var
      k3 =  /*<<hashtbl.ml:418:14>>*/ next2[1],
      d3 = next2[2],
      next3 = next2[3];
      /*<<hashtbl.ml:421:21>>*/ if(caml_call2(H[1], key, k3))
       /*<<hashtbl.ml:421:41>>*/ return [0, d3];
     var param =  /*<<hashtbl.ml:421:35>>*/ next3;
     for(;;){
       /*<<hashtbl.ml:403:25>>*/ if(! param)
        /*<<hashtbl.ml:405:10>>*/ return 0;
      var
       k =  /*<<hashtbl.ml:403:25>>*/ param[1],
       data = param[2],
       next = param[3];
       /*<<hashtbl.ml:407:13>>*/ if(caml_call2(H[1], key, k))
        /*<<hashtbl.ml:407:32>>*/ return [0, data];
       /*<<hashtbl.ml:407:26>>*/ param = next;
     }
     /*<<hashtbl.ml:421:76>>*/ }
    function find_all(h, key){
     var
      _j_ =  /*<<hashtbl.ml:431:29>>*/ key_index(h, key),
      param =
         /*<<hashtbl.ml:431:45>>*/  /*<<hashtbl.ml:431:21>>*/ caml_check_bound
          (h[2], _j_)
         [_j_ + 1];
      /*<<hashtbl.ml:431:45>>*/ for(;;){
       /*<<hashtbl.ml:424:47>>*/ if(! param)
        /*<<hashtbl.ml:426:10>>*/ return 0;
      var
       k =  /*<<hashtbl.ml:424:47>>*/ param[1],
       d = param[2],
       next = param[3];
       /*<<hashtbl.ml:428:13>>*/ if(caml_call2(H[1], k, key)) break;
       /*<<hashtbl.ml:428:26>>*/ param = next;
     }
     var
      block =  /*<<hashtbl.ml:429:15>>*/ [0, d, 24029],
      dst =  /*<<hashtbl.ml:429:20>>*/ block,
      offset = 1,
      param$0 = next;
     for(;;){
       /*<<hashtbl.ml:424:47>>*/ if(! param$0){
        /*<<hashtbl.ml:426:10>>*/ dst[offset + 1] = 0;
        /*<<hashtbl.ml:429:39>>*/ return block;
      }
      var
       k$0 =  /*<<hashtbl.ml:424:47>>*/ param$0[1],
       d$0 = param$0[2],
       next$0 = param$0[3];
       /*<<hashtbl.ml:428:13>>*/ if(caml_call2(H[1], k$0, key)){
       var dst$0 =  /*<<hashtbl.ml:429:15>>*/ [0, d$0, 24029];
       dst[offset + 1] = dst$0;
       dst = dst$0;
       offset = 1;
       param$0 = next$0;
      }
      else
        /*<<hashtbl.ml:428:26>>*/ param$0 = next$0;
     }
     /*<<hashtbl.ml:431:45>>*/ }
    function replace(h, key, data){
     var
      i =  /*<<hashtbl.ml:442:14>>*/ key_index(h, key),
      l =  /*<<hashtbl.ml:443:14>>*/ caml_check_bound(h[2], i)[i + 1],
      param =  /*<<hashtbl.ml:444:9>>*/ l;
     for(;;){
       /*<<hashtbl.ml:433:27>>*/ if(param){
       var k = param[1], next = param[3];
        /*<<hashtbl.ml:437:13>>*/ if(! caml_call2(H[1], k, key)){
         /*<<hashtbl.ml:437:26>>*/ param = next;
        continue;
       }
        /*<<hashtbl.ml:438:15>>*/ param[1] = key;
        /*<<hashtbl.ml:438:33>>*/ param[2] = data;
       var _h_ =  /*<<hashtbl.ml:438:52>>*/ 0;
      }
      else
       var _h_ =  /*<<hashtbl.ml:435:10>>*/ 1;
       /*<<hashtbl.ml:444:34>>*/ if(_h_){
        /*<<hashtbl.ml:445:8>>*/ caml_check_bound(h[2], i)[i + 1] = [0, key, data, l];
        /*<<hashtbl.ml:445:45>>*/ h[1] = h[1] + 1 | 0;
       var
        _i_ =  /*<<hashtbl.ml:447:8>>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0;
       if(_i_)
         /*<<hashtbl.ml:447:51>>*/ return resize(key_index, h) /*<<hashtbl.ml:448:9>>*/ ;
       var _j_ =  /*<<hashtbl.ml:447:8>>*/ _i_;
      }
      else
       var _j_ =  /*<<hashtbl.ml:444:34>>*/ _h_;
      return _j_;
     }
     /*<<hashtbl.ml:448:9>>*/ }
    function mem(h, key){
     var
      _h_ =  /*<<hashtbl.ml:457:32>>*/ key_index(h, key),
      param =
         /*<<hashtbl.ml:457:48>>*/  /*<<hashtbl.ml:457:24>>*/ caml_check_bound
          (h[2], _h_)
         [_h_ + 1];
      /*<<hashtbl.ml:457:48>>*/ for(;;){
       /*<<hashtbl.ml:450:26>>*/ if(! param)
        /*<<hashtbl.ml:452:10>>*/ return 0;
      var
       k =  /*<<hashtbl.ml:450:26>>*/ param[1],
       next = param[3],
       _g_ =  /*<<hashtbl.ml:454:10>>*/ caml_call2(H[1], k, key);
       /*<<hashtbl.ml:454:23>>*/ if(_g_) return _g_;
      param = next;
     }
     /*<<hashtbl.ml:457:48>>*/ }
    function add_seq(tbl, i){
      /*<<hashtbl.ml:460:6>>*/ return Stdlib_Seq[4].call
             (null,
              function(param){
               var v =  /*<<hashtbl.ml:460:15>>*/ param[2], k = param[1];
                /*<<hashtbl.ml:460:29>>*/ return add(tbl, k, v) /*<<hashtbl.ml:460:41>>*/ ;
              },
              i) /*<<hashtbl.ml:460:43>>*/ ;
    }
    function replace_seq(tbl, i){
      /*<<hashtbl.ml:463:6>>*/ return Stdlib_Seq[4].call
             (null,
              function(param){
               var v =  /*<<hashtbl.ml:463:15>>*/ param[2], k = param[1];
                /*<<hashtbl.ml:463:29>>*/ return replace(tbl, k, v) /*<<hashtbl.ml:463:45>>*/ ;
              },
              i) /*<<hashtbl.ml:463:47>>*/ ;
    }
    function of_seq(i){
     var tbl =  /*<<hashtbl.ml:466:16>>*/ create(0, 16);
      /*<<hashtbl.ml:467:6>>*/ replace_seq(tbl, i);
      /*<<hashtbl.ml:467:23>>*/ return tbl;
     /*<<hashtbl.ml:468:9>>*/ }
     /*<<?>>*/ return [0,
            create,
            clear,
            reset,
            copy,
            add,
            remove,
            find,
            find_opt,
            find_all,
            replace,
            mem,
            iter,
            filter_map_inplace,
            fold,
            length,
            stats,
            to_seq,
            to_seq_keys,
            to_seq_values,
            add_seq,
            replace_seq,
            of_seq];
   }
   var _a_ = [0, 0];
   function Make(H){
    var equal = H[1];
    function seeded_hash(seed, x){
      /*<<hashtbl.ml:485:41>>*/ return caml_call1(H[2], x) /*<<hashtbl.ml:485:49>>*/ ;
    }
    var
     include =  /*<<?>>*/ MakeSeeded([0, equal, seeded_hash]),
     _g_ = include[1],
     clear = include[2],
     reset = include[3],
     copy = include[4],
     add = include[5],
     remove = include[6],
     find = include[7],
     find_opt = include[8],
     find_all = include[9],
     replace = include[10],
     mem = include[11],
     iter = include[12],
     filter_map_inplace = include[13],
     fold = include[14],
     length = include[15],
     stats = include[16],
     to_seq = include[17],
     to_seq_keys = include[18],
     to_seq_values = include[19],
     add_seq = include[20],
     replace_seq = include[21];
    function create(sz){
      /*<<hashtbl.ml:487:20>>*/ return caml_call2(_g_, _a_, sz) /*<<hashtbl.ml:487:43>>*/ ;
    }
    function of_seq(i){
     var tbl =  /*<<hashtbl.ml:487:20>>*/ caml_call2(_g_, _a_, 16);
      /*<<hashtbl.ml:490:6>>*/ caml_call2(replace_seq, tbl, i);
      /*<<hashtbl.ml:490:23>>*/ return tbl;
     /*<<hashtbl.ml:491:9>>*/ }
     /*<<?>>*/ return [0,
            create,
            clear,
            reset,
            copy,
            add,
            remove,
            find,
            find_opt,
            find_all,
            replace,
            mem,
            iter,
            filter_map_inplace,
            fold,
            length,
            stats,
            to_seq,
            to_seq_keys,
            to_seq_values,
            add_seq,
            replace_seq,
            of_seq];
   }
   function hash(x){
     /*<<hashtbl.ml:501:13>>*/ return caml_hash(10, 100, 0, x) /*<<hashtbl.ml:501:41>>*/ ;
   }
   function hash_param(n1, n2, x){
     /*<<hashtbl.ml:502:25>>*/ return caml_hash(n1, n2, 0, x) /*<<hashtbl.ml:502:52>>*/ ;
   }
   function seeded_hash(seed, x){
     /*<<hashtbl.ml:503:25>>*/ return caml_hash(10, 100, seed, x) /*<<hashtbl.ml:503:56>>*/ ;
   }
   function key_index(h, key){
     /*<<hashtbl.ml:506:2>>*/ return 4 <= h.length - 1
            ?  /*<<hashtbl.ml:507:7>>*/ caml_hash
              (10, 100, h[3], key)
             & (h[2].length - 2 | 0)
            :  /*<<hashtbl.ml:508:7>>*/ Stdlib
               [1].call
              (null, "Hashtbl: unsupported hash table format") /*<<hashtbl.ml:508:59>>*/ ;
   }
   function add(h, key, data){
    var
     i =  /*<<hashtbl.ml:511:10>>*/ key_index(h, key),
     bucket =
        /*<<hashtbl.ml:512:36>>*/ [0,
        key,
        data,
        caml_check_bound(h[2], i)[i + 1]];
     /*<<hashtbl.ml:513:2>>*/ caml_check_bound(h[2], i)[i + 1] = bucket;
     /*<<hashtbl.ml:513:22>>*/ h[1] = h[1] + 1 | 0;
    var _g_ =  /*<<hashtbl.ml:515:2>>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0;
    return _g_ ?  /*<<hashtbl.ml:515:45>>*/ resize(key_index, h) : _g_ /*<<hashtbl.ml:515:63>>*/ ;
   }
   function remove(h, key){
    var
     i =  /*<<hashtbl.ml:531:10>>*/ key_index(h, key),
     prec$1 =  /*<<hashtbl.ml:532:30>>*/ caml_check_bound(h[2], i)[i + 1],
     prec$0 =  /*<<hashtbl.ml:532:40>>*/ 0,
     prec = prec$1;
    for(;;){
      /*<<hashtbl.ml:517:22>>*/ if(! prec)  /*<<hashtbl.ml:519:6>>*/ return 0;
     var k =  /*<<hashtbl.ml:517:22>>*/ prec[1], next = prec[3];
      /*<<hashtbl.ml:521:9>>*/ if(0 === caml_compare(k, key)){
       /*<<hashtbl.ml:522:11>>*/ h[1] = h[1] - 1 | 0;
       /*<<hashtbl.ml:524:8>>*/ return prec$0
              ? (prec$0[3] = next, 0)
              : ( /*<<hashtbl.ml:525:19>>*/ caml_check_bound
                  (h[2], i)
                 [i + 1]
                = next,
                0) /*<<hashtbl.ml:532:40>>*/ ;
     }
      /*<<hashtbl.ml:521:22>>*/ prec$0 = prec;
     prec = next;
    }
    /*<<hashtbl.ml:532:40>>*/ }
   function find(h, key){
    var
     _g_ =  /*<<hashtbl.ml:541:16>>*/ key_index(h, key),
     match =  /*<<hashtbl.ml:541:8>>*/ caml_check_bound(h[2], _g_)[_g_ + 1];
     /*<<hashtbl.ml:541:32>>*/ if(! match)
      /*<<hashtbl.ml:542:13>>*/ throw caml_maybe_attach_backtrace
            (Stdlib[8], 1);
    var
     k1 =  /*<<hashtbl.ml:541:32>>*/ match[1],
     d1 = match[2],
     next1 = match[3];
     /*<<hashtbl.ml:544:9>>*/ if(0 === caml_compare(key, k1))
      /*<<hashtbl.ml:544:33>>*/ return d1;
     /*<<hashtbl.ml:545:6>>*/ if(! next1)
      /*<<hashtbl.ml:546:17>>*/ throw caml_maybe_attach_backtrace
            (Stdlib[8], 1);
    var
     k2 =  /*<<hashtbl.ml:545:6>>*/ next1[1],
     d2 = next1[2],
     next2 = next1[3];
     /*<<hashtbl.ml:548:13>>*/ if(0 === caml_compare(key, k2))
      /*<<hashtbl.ml:548:37>>*/ return d2;
     /*<<hashtbl.ml:549:10>>*/ if(! next2)
      /*<<hashtbl.ml:550:21>>*/ throw caml_maybe_attach_backtrace
            (Stdlib[8], 1);
    var
     k3 =  /*<<hashtbl.ml:549:10>>*/ next2[1],
     d3 = next2[2],
     next3 = next2[3];
     /*<<hashtbl.ml:552:17>>*/ if(0 === caml_compare(key, k3))
      /*<<hashtbl.ml:552:41>>*/ return d3;
    var param =  /*<<hashtbl.ml:552:31>>*/ next3;
    for(;;){
      /*<<hashtbl.ml:534:17>>*/ if(! param)
       /*<<hashtbl.ml:536:6>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[8], 1);
     var
      k =  /*<<hashtbl.ml:534:17>>*/ param[1],
      data = param[2],
      next = param[3];
      /*<<hashtbl.ml:538:9>>*/ if(0 === caml_compare(key, k))
       /*<<hashtbl.ml:538:32>>*/ return data;
      /*<<hashtbl.ml:538:22>>*/ param = next;
    }
    /*<<hashtbl.ml:552:67>>*/ }
   function find_opt(h, key){
    var
     _g_ =  /*<<hashtbl.ml:561:16>>*/ key_index(h, key),
     match =  /*<<hashtbl.ml:561:8>>*/ caml_check_bound(h[2], _g_)[_g_ + 1];
     /*<<hashtbl.ml:561:32>>*/ if(! match)
      /*<<hashtbl.ml:562:13>>*/ return 0;
    var
     k1 =  /*<<hashtbl.ml:561:32>>*/ match[1],
     d1 = match[2],
     next1 = match[3];
     /*<<hashtbl.ml:564:9>>*/ if(0 === caml_compare(key, k1))
      /*<<hashtbl.ml:564:33>>*/ return [0, d1];
     /*<<hashtbl.ml:565:6>>*/ if(! next1)  /*<<hashtbl.ml:566:17>>*/ return 0;
    var
     k2 =  /*<<hashtbl.ml:565:6>>*/ next1[1],
     d2 = next1[2],
     next2 = next1[3];
     /*<<hashtbl.ml:568:13>>*/ if(0 === caml_compare(key, k2))
      /*<<hashtbl.ml:568:37>>*/ return [0, d2];
     /*<<hashtbl.ml:569:10>>*/ if(! next2)
      /*<<hashtbl.ml:570:21>>*/ return 0;
    var
     k3 =  /*<<hashtbl.ml:569:10>>*/ next2[1],
     d3 = next2[2],
     next3 = next2[3];
     /*<<hashtbl.ml:572:17>>*/ if(0 === caml_compare(key, k3))
      /*<<hashtbl.ml:572:41>>*/ return [0, d3];
    var param =  /*<<hashtbl.ml:572:31>>*/ next3;
    for(;;){
      /*<<hashtbl.ml:554:21>>*/ if(! param)
       /*<<hashtbl.ml:556:6>>*/ return 0;
     var
      k =  /*<<hashtbl.ml:554:21>>*/ param[1],
      data = param[2],
      next = param[3];
      /*<<hashtbl.ml:558:9>>*/ if(0 === caml_compare(key, k))
       /*<<hashtbl.ml:558:32>>*/ return [0, data];
      /*<<hashtbl.ml:558:22>>*/ param = next;
    }
    /*<<hashtbl.ml:572:76>>*/ }
   function find_all(h, key){
    var
     _g_ =  /*<<hashtbl.ml:582:25>>*/ key_index(h, key),
     param =
        /*<<hashtbl.ml:582:41>>*/  /*<<hashtbl.ml:582:17>>*/ caml_check_bound
         (h[2], _g_)
        [_g_ + 1];
     /*<<hashtbl.ml:582:41>>*/ for(;;){
      /*<<hashtbl.ml:575:43>>*/ if(! param)
       /*<<hashtbl.ml:577:6>>*/ return 0;
     var
      k =  /*<<hashtbl.ml:575:43>>*/ param[1],
      data = param[2],
      next = param[3];
      /*<<hashtbl.ml:579:9>>*/ if(0 === caml_compare(k, key)) break;
      /*<<hashtbl.ml:579:22>>*/ param = next;
    }
    var
     block =  /*<<hashtbl.ml:580:11>>*/ [0, data, 24029],
     dst =  /*<<hashtbl.ml:580:19>>*/ block,
     offset = 1,
     param$0 = next;
    for(;;){
      /*<<hashtbl.ml:575:43>>*/ if(! param$0){
       /*<<hashtbl.ml:577:6>>*/ dst[offset + 1] = 0;
       /*<<hashtbl.ml:580:38>>*/ return block;
     }
     var
      k$0 =  /*<<hashtbl.ml:575:43>>*/ param$0[1],
      data$0 = param$0[2],
      next$0 = param$0[3];
      /*<<hashtbl.ml:579:9>>*/ if(0 === caml_compare(k$0, key)){
      var dst$0 =  /*<<hashtbl.ml:580:11>>*/ [0, data$0, 24029];
      dst[offset + 1] = dst$0;
      dst = dst$0;
      offset = 1;
      param$0 = next$0;
     }
     else
       /*<<hashtbl.ml:579:22>>*/ param$0 = next$0;
    }
    /*<<hashtbl.ml:582:41>>*/ }
   function replace(h, key, data){
    var
     i =  /*<<hashtbl.ml:593:10>>*/ key_index(h, key),
     l =  /*<<hashtbl.ml:594:10>>*/ caml_check_bound(h[2], i)[i + 1],
     param =  /*<<hashtbl.ml:595:5>>*/ l;
    for(;;){
      /*<<hashtbl.ml:584:23>>*/ if(param){
      var k = param[1], next = param[3];
       /*<<hashtbl.ml:588:9>>*/ if(0 !== caml_compare(k, key)){
        /*<<hashtbl.ml:588:22>>*/ param = next;
       continue;
      }
       /*<<hashtbl.ml:589:11>>*/ param[1] = key;
       /*<<hashtbl.ml:589:29>>*/ param[2] = data;
      var _e_ =  /*<<hashtbl.ml:589:48>>*/ 0;
     }
     else
      var _e_ =  /*<<hashtbl.ml:586:6>>*/ 1;
      /*<<hashtbl.ml:595:30>>*/ if(_e_){
       /*<<hashtbl.ml:596:4>>*/ caml_check_bound(h[2], i)[i + 1] = [0, key, data, l];
       /*<<hashtbl.ml:596:41>>*/ h[1] = h[1] + 1 | 0;
      var _f_ =  /*<<hashtbl.ml:598:4>>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0;
      if(_f_)
        /*<<hashtbl.ml:598:47>>*/ return resize(key_index, h) /*<<hashtbl.ml:599:5>>*/ ;
      var _g_ =  /*<<hashtbl.ml:598:4>>*/ _f_;
     }
     else
      var _g_ =  /*<<hashtbl.ml:595:30>>*/ _e_;
     return _g_;
    }
    /*<<hashtbl.ml:599:5>>*/ }
   function mem(h, key){
    var
     _e_ =  /*<<hashtbl.ml:608:28>>*/ key_index(h, key),
     param =
        /*<<hashtbl.ml:608:44>>*/  /*<<hashtbl.ml:608:20>>*/ caml_check_bound
         (h[2], _e_)
        [_e_ + 1];
     /*<<hashtbl.ml:608:44>>*/ for(;;){
      /*<<hashtbl.ml:601:22>>*/ if(! param)
       /*<<hashtbl.ml:603:6>>*/ return 0;
     var
      k =  /*<<hashtbl.ml:601:22>>*/ param[1],
      next = param[3],
      _d_ =  /*<<hashtbl.ml:605:6>>*/ 0 === caml_compare(k, key) ? 1 : 0;
      /*<<hashtbl.ml:605:19>>*/ if(_d_) return _d_;
     param = next;
    }
    /*<<hashtbl.ml:608:44>>*/ }
   function add_seq(tbl, i){
     /*<<hashtbl.ml:611:2>>*/ return Stdlib_Seq[4].call
            (null,
             function(param){
              var v =  /*<<hashtbl.ml:611:11>>*/ param[2], k = param[1];
               /*<<hashtbl.ml:611:25>>*/ return add(tbl, k, v) /*<<hashtbl.ml:611:37>>*/ ;
             },
             i) /*<<hashtbl.ml:611:39>>*/ ;
   }
   function replace_seq(tbl, i){
     /*<<hashtbl.ml:614:2>>*/ return Stdlib_Seq[4].call
            (null,
             function(param){
              var v =  /*<<hashtbl.ml:614:11>>*/ param[2], k = param[1];
               /*<<hashtbl.ml:614:25>>*/ return replace(tbl, k, v) /*<<hashtbl.ml:614:41>>*/ ;
             },
             i) /*<<hashtbl.ml:614:43>>*/ ;
   }
   function of_seq(i){
    var tbl =  /*<<hashtbl.ml:617:12>>*/ create(0, 16);
     /*<<hashtbl.ml:618:2>>*/ replace_seq(tbl, i);
     /*<<hashtbl.ml:618:19>>*/ return tbl;
    /*<<hashtbl.ml:619:5>>*/ }
   function rebuild(opt, h){
    var
     random =
        /*<<hashtbl.ml:621:12>>*/ opt
        ? opt[1]
        :  /*<<hashtbl.ml:621:23>>*/ Stdlib_Atomic[3].call(null, randomized),
     s =  /*<<hashtbl.ml:622:10>>*/ power_2_above(16, h[2].length - 1);
     /*<<hashtbl.ml:623:2>>*/ if(random)
     var
      _c_ =
         /*<<hashtbl.ml:624:37>>*/ caml_call1(Stdlib_Domain[11][2], prng_key),
      seed =
         /*<<hashtbl.ml:624:62>>*/  /*<<hashtbl.ml:624:19>>*/ caml_call1
         (Stdlib_Random[19][4], _c_);
    else
     var seed =  /*<<hashtbl.ml:625:9>>*/ 4 <= h.length - 1 ? h[3] : 0;
    var
     _d_ =  /*<<hashtbl.ml:627:2>>*/ 4 <= h.length - 1 ? h[4] : s,
     h$0 =
        /*<<hashtbl.ml:629:11>>*/ [0, h[1], caml_array_make(s, 0), seed, _d_];
     /*<<hashtbl.ml:633:2>>*/ insert_all_buckets
     (function(_d_){ /*<<hashtbl.ml:633:21>>*/ return key_index(h$0, _d_);},
      0,
      h[2],
      h$0[2]);
     /*<<hashtbl.ml:633:56>>*/ return h$0;
    /*<<hashtbl.ml:634:4>>*/ }
    /*<<hashtbl.ml:60:61>>*/ runtime.caml_register_global
    (16,
     [0,
      create,
      clear,
      reset,
      copy,
      add,
      find,
      find_opt,
      find_all,
      mem,
      remove,
      replace,
      iter,
      filter_map_inplace,
      fold,
      length,
      randomize,
      is_randomized,
      rebuild,
      stats,
      to_seq,
      to_seq_keys,
      to_seq_values,
      add_seq,
      replace_seq,
      of_seq,
      Make,
      MakeSeeded,
      hash,
      seeded_hash,
      hash_param,
      caml_hash],
     "Stdlib__Hashtbl");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Weak
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Int, Stdlib__Obj, Stdlib__Option, Stdlib__Sys
//# shape: Stdlib__Weak:[F(1),F(1)*,F(3),F(2),F(2),F(2),F(4),F(5),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_check_bound = runtime.caml_check_bound,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_mod = runtime.caml_mod;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   function caml_call4(f, a0, a1, a2, a3){
    return (f.l >= 0 ? f.l : f.l = f.length) === 4
            ? f(a0, a1, a2, a3)
            : runtime.caml_call_gen(f, [a0, a1, a2, a3]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Int = global_data.Stdlib__Int,
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib_Option = global_data.Stdlib__Option,
    Stdlib_Obj = global_data.Stdlib__Obj;
   function create(l){
    var
     _y_ =  /*<<weak.ml:28:2>>*/ 0 <= l,
     _z_ = _y_ ? l <= Stdlib_Obj[23][15] : _y_;
    if(1 - _z_)  /*<<weak.ml:29:4>>*/ Stdlib[1].call(null, "Weak.create");
     /*<<weak.ml:30:2>>*/ return runtime.caml_weak_create(l) /*<<weak.ml:30:10>>*/ ;
   }
   function length(x){
     /*<<weak.ml:33:15>>*/ return x.length - 3 | 0;
    /*<<weak.ml:33:55>>*/ }
   function raise_if_invalid_offset(e, o, msg){
    var
     _w_ =  /*<<weak.ml:36:2>>*/ 0 <= o,
     _y_ = _w_ ? o <  /*<<weak.ml:36:24>>*/ length(e) : _w_,
     _x_ =  /*<<weak.ml:36:2>>*/ 1 - _y_;
    return _x_ ?  /*<<weak.ml:37:4>>*/ Stdlib[1].call(null, msg) : _x_ /*<<weak.ml:37:20>>*/ ;
   }
   function set(e, o, x){
     /*<<weak.ml:42:2>>*/ raise_if_invalid_offset(e, o, "Weak.set");
     /*<<weak.ml:42:40>>*/ if(! x)
      /*<<weak.ml:44:12>>*/ return runtime.caml_ephe_unset_key(e, o) /*<<weak.ml:45:24>>*/ ;
    var x$0 =  /*<<weak.ml:42:40>>*/ x[1];
     /*<<weak.ml:45:14>>*/ return runtime.caml_ephe_set_key(e, o, x$0) /*<<weak.ml:45:24>>*/ ;
   }
   function get(e, o){
     /*<<weak.ml:49:2>>*/ raise_if_invalid_offset(e, o, "Weak.get");
     /*<<weak.ml:50:2>>*/ return runtime.caml_ephe_get_key(e, o) /*<<weak.ml:50:9>>*/ ;
   }
   function get_copy(e, o){
     /*<<weak.ml:54:2>>*/ raise_if_invalid_offset(e, o, "Weak.get_copy");
     /*<<weak.ml:55:2>>*/ return runtime.caml_ephe_get_key_copy(e, o) /*<<weak.ml:55:14>>*/ ;
   }
   function check(e, o){
     /*<<weak.ml:59:2>>*/ raise_if_invalid_offset(e, o, "Weak.check");
     /*<<weak.ml:60:2>>*/ return runtime.caml_ephe_check_key(e, o) /*<<weak.ml:60:11>>*/ ;
   }
   function blit(e1, o1, e2, o2, l){
     /*<<weak.ml:66:2>>*/ if
     (0 <= l
      &&
       0 <= o1
       &&
        ( /*<<weak.ml:66:29>>*/ length(e1) - l | 0) >= o1
        && 0 <= o2 && ( /*<<weak.ml:67:23>>*/ length(e2) - l | 0) >= o2){
     var
      _v_ =  /*<<weak.ml:69:7>>*/ 0 !== l ? 1 : 0,
      _w_ =
        _v_
         ?  /*<<weak.ml:69:22>>*/ runtime.caml_ephe_blit_key
           (e1, o1, e2, o2, l)
         : _v_;
      /*<<weak.ml:69:7>>*/ return _w_;
    }
     /*<<weak.ml:68:7>>*/ return Stdlib[1].call(null, "Weak.blit") /*<<weak.ml:69:40>>*/ ;
   }
   function fill(ar, ofs, len, x){
     /*<<weak.ml:72:2>>*/ if
     (0 <= ofs
      && 0 <= len && ( /*<<weak.ml:72:33>>*/ length(ar) - len | 0) >= ofs){
     var _u_ =  /*<<weak.ml:74:7>>*/ (ofs + len | 0) - 1 | 0;
     if(_u_ >= ofs){
      var i = ofs;
      for(;;){
        /*<<weak.ml:76:6>>*/ set(ar, i, x);
       var _v_ =  /*<<weak.ml:76:16>>*/ i + 1 | 0;
       if(_u_ === i) break;
       i = _v_;
      }
     }
      /*<<weak.ml:74:7>>*/ return 0;
    }
     /*<<weak.ml:73:7>>*/ throw caml_maybe_attach_backtrace
           ([0, Stdlib[6], "Weak.fill"], 1);
    /*<<weak.ml:78:5>>*/ }
   function Make(H){
    var emptybucket =  /*<<weak.ml:105:20>>*/ create(0);
    function get_index(t, h){
      /*<<weak.ml:117:22>>*/ return caml_mod(h & Stdlib[19], t[1].length - 1) /*<<weak.ml:117:65>>*/ ;
    }
    var limit =  /*<<weak.ml:105:33>>*/ 7;
    function create$0(sz){
     var
      sz$0 =  /*<<weak.ml:123:4>>*/ 7 <= sz ? sz : 7,
      sz$1 =
         /*<<weak.ml:124:4>>*/ Stdlib_Sys[14] < sz$0 ? Stdlib_Sys[14] : sz$0;
      /*<<weak.ml:126:14>>*/ return [0,
             caml_array_make(sz$1, emptybucket),
              /*<<weak.ml:127:15>>*/ caml_array_make(sz$1, [0]),
             limit,
             0,
             0] /*<<weak.ml:126:39>>*/ ;
     /*<<weak.ml:131:5>>*/ }
    function clear(t){
     var _t_ =  /*<<weak.ml:134:4>>*/ t[1].length - 2 | 0;
     if(_t_ >= 0){
      var i = 0;
      for(;;){
        /*<<weak.ml:135:6>>*/ caml_check_bound(t[1], i)[i + 1] = emptybucket;
        /*<<weak.ml:136:6>>*/ caml_check_bound(t[2], i)[i + 1] = [0];
       var _u_ =  /*<<weak.ml:136:27>>*/ i + 1 | 0;
       if(_t_ === i) break;
       i = _u_;
      }
     }
      /*<<weak.ml:138:4>>*/ t[3] = limit;
      /*<<weak.ml:139:4>>*/ t[4] = 0;
     return 0;
     /*<<weak.ml:139:19>>*/ }
    function fold(f, t, init){
      /*<<weak.ml:149:36>>*/ return Stdlib_Array[22].call
             (null,
              function(b, accu$1){
               var i =  /*<<weak.ml:149:21>>*/ 0, accu = accu$1;
               for(;;){
                 /*<<weak.ml:144:14>>*/ if(length(b) <= i)
                  /*<<weak.ml:144:28>>*/ return accu;
                var match =  /*<<weak.ml:145:12>>*/ get(b, i);
                 /*<<weak.ml:145:19>>*/ if(match){
                 var
                  v = match[1],
                  accu$0 =  /*<<weak.ml:146:38>>*/ caml_call2(f, v, accu),
                  i$0 =  /*<<weak.ml:146:48>>*/ i + 1 | 0;
                 i = i$0;
                 accu = accu$0;
                }
                else{var i$1 =  /*<<weak.ml:147:16>>*/ i + 1 | 0; i = i$1;}
               }
              },
              t[1],
              init) /*<<weak.ml:149:49>>*/ ;
    }
    function iter(f, t){
      /*<<weak.ml:159:30>>*/ return Stdlib_Array[14].call
             (null,
              function(b){
               var i =  /*<<weak.ml:159:15>>*/ 0;
               for(;;){
                 /*<<weak.ml:154:14>>*/ if(length(b) <= i)
                  /*<<weak.ml:154:28>>*/ return 0;
                var match =  /*<<weak.ml:155:12>>*/ get(b, i);
                 /*<<weak.ml:155:19>>*/ if(match){
                 var v = match[1];
                  /*<<weak.ml:156:18>>*/ caml_call1(f, v);
                 var i$0 =  /*<<weak.ml:156:21>>*/ i + 1 | 0;
                 i = i$0;
                }
                else{var i$1 =  /*<<weak.ml:157:16>>*/ i + 1 | 0; i = i$1;}
               }
              },
              t[1]) /*<<weak.ml:159:38>>*/ ;
    }
    function iter_weak(f, t){
      /*<<weak.ml:169:31>>*/ return Stdlib_Array[15].call
             (null,
              function(j, b){
               var i =  /*<<weak.ml:169:16>>*/ 0;
               for(;;){
                 /*<<weak.ml:164:14>>*/ if(length(b) <= i)
                  /*<<weak.ml:164:28>>*/ return 0;
                 /*<<weak.ml:165:12>>*/ if(check(b, i)){
                  /*<<weak.ml:166:20>>*/  /*<<weak.ml:166:16>>*/ caml_call3
                  (f,
                   b,
                    /*<<weak.ml:166:20>>*/ caml_check_bound(t[2], j)[j + 1],
                   i);
                 var i$0 =  /*<<weak.ml:166:34>>*/ i + 1 | 0;
                 i = i$0;
                }
                else{var i$1 =  /*<<weak.ml:167:17>>*/ i + 1 | 0; i = i$1;}
               }
              },
              t[1]) /*<<weak.ml:169:39>>*/ ;
    }
    function count_bucket(i$1, b, accu$1){
     var i =  /*<<weak.ml:173:12>>*/ i$1, accu = accu$1;
     for(;;){
      if(length(b) <= i)  /*<<weak.ml:173:26>>*/ return accu;
      var
       _t_ =  /*<<weak.ml:174:37>>*/ check(b, i) ? 1 : 0,
       accu$0 =  /*<<weak.ml:174:46>>*/ accu + _t_ | 0,
       i$0 = i + 1 | 0;
      i = i$0;
      accu = accu$0;
     }
     /*<<weak.ml:174:62>>*/ }
    function count(t){
      /*<<weak.ml:178:37>>*/ return Stdlib_Array[22].call
             (null,
              function(_s_, _t_){
                /*<<weak.ml:178:21>>*/ return count_bucket(0, _s_, _t_);
              },
              t[1],
              0) /*<<weak.ml:178:47>>*/ ;
    }
    function add_aux(t, setter, d, h, index){
     var
      bucket$0 =
         /*<<weak.ml:238:17>>*/ caml_check_bound(t[1], index)[index + 1],
      hashes =
         /*<<weak.ml:239:17>>*/ caml_check_bound(t[2], index)[index + 1],
      sz =  /*<<weak.ml:240:13>>*/ length(bucket$0),
      i$3 =  /*<<weak.ml:242:4>>*/ 0;
     for(;;){
      if(i$3 >= sz) break;
       /*<<weak.ml:242:21>>*/ if(! check(bucket$0, i$3)) break;
      var i$4 =  /*<<weak.ml:242:40>>*/ i$3 + 1 | 0;
      i$3 = i$4;
     }
      /*<<weak.ml:243:4>>*/ if(i$3 < sz){
       /*<<weak.ml:244:6>>*/ caml_call3(setter, bucket$0, i$3, d);
       /*<<weak.ml:245:6>>*/ caml_check_bound(hashes, i$3)[i$3 + 1] = h;
       /*<<weak.ml:245:22>>*/ return 0;
     }
     var
      newsz =
         /*<<weak.ml:248:8>>*/ Stdlib_Int[10].call
         (null, ((3 * sz | 0) / 2 | 0) + 3 | 0, Stdlib_Sys[14] - 2 | 0);
      /*<<weak.ml:250:6>>*/ if(newsz <= sz)
       /*<<weak.ml:250:26>>*/ Stdlib[2].call
       (null, "Weak.Make: hash bucket cannot grow more");
     var
      newbucket$0 =  /*<<weak.ml:251:22>>*/ create(newsz),
      newhashes =  /*<<weak.ml:252:22>>*/ caml_array_make(newsz, 0);
      /*<<weak.ml:253:6>>*/ blit(bucket$0, 0, newbucket$0, 0, sz);
      /*<<weak.ml:254:6>>*/ Stdlib_Array[9].call
      (null, hashes, 0, newhashes, 0, sz);
      /*<<weak.ml:255:6>>*/ caml_call3(setter, newbucket$0, sz, d);
      /*<<weak.ml:256:6>>*/ caml_check_bound(newhashes, sz)[sz + 1] = h;
      /*<<weak.ml:257:6>>*/ caml_check_bound(t[1], index)[index + 1] = newbucket$0;
      /*<<weak.ml:258:6>>*/ caml_check_bound(t[2], index)[index + 1] = newhashes;
     var
      _m_ =  /*<<weak.ml:258:35>>*/ sz <= t[3],
      _r_ = _m_ ? t[3] < newsz : _m_;
     if(_r_){
       /*<<weak.ml:259:47>>*/ t[4] = t[4] + 1 | 0;
      var i$2 =  /*<<weak.ml:261:8>>*/ 0;
      for(;;){
       var
        _f_ =  /*<<weak.ml:185:4>>*/ t[5],
        bucket =  /*<<weak.ml:185:17>>*/ caml_check_bound(t[1], _f_)[_f_ + 1],
        _g_ =  /*<<weak.ml:186:4>>*/ t[5],
        hbucket =  /*<<weak.ml:186:18>>*/ caml_check_bound(t[2], _g_)[_g_ + 1],
        len =  /*<<weak.ml:187:14>>*/ length(bucket),
        prev_len =
           /*<<weak.ml:182:18>>*/ (((len - 3 | 0) * 2 | 0) + 2 | 0) / 3 | 0,
        live =  /*<<weak.ml:189:15>>*/ count_bucket(0, bucket, 0);
        /*<<weak.ml:190:4>>*/ if(live <= prev_len){
        var
         j$2 =  /*<<weak.ml:201:14>>*/ length(bucket) - 1 | 0,
         i =  /*<<weak.ml:201:6>>*/ 0,
         j = j$2;
        for(;;){
          /*<<weak.ml:192:8>>*/ if(prev_len > j) break;
          /*<<weak.ml:193:13>>*/ if(check(bucket, i)){
          var i$0 =  /*<<weak.ml:193:33>>*/ i + 1 | 0;
          i = i$0;
         }
         else if( /*<<weak.ml:194:18>>*/ check(bucket, j)){
           /*<<weak.ml:195:12>>*/ blit(bucket, j, bucket, i, 1);
          var
           _o_ =  /*<<weak.ml:196:27>>*/ caml_check_bound(hbucket, j)[j + 1];
           /*<<weak.ml:196:12>>*/ caml_check_bound(hbucket, i)[i + 1] = _o_;
          var j$0 =  /*<<weak.ml:196:38>>*/ j - 1 | 0, i$1 = i + 1 | 0;
          i = i$1;
          j = j$0;
         }
         else{var j$1 =  /*<<weak.ml:198:19>>*/ j - 1 | 0; j = j$1;}
        }
         /*<<weak.ml:201:32>>*/ if(0 === prev_len){
         var _h_ =  /*<<weak.ml:202:27>>*/ t[5];
          /*<<weak.ml:203:8>>*/ caml_check_bound(t[1], _h_)[_h_ + 1] = emptybucket;
         var _i_ =  /*<<weak.ml:203:40>>*/ t[5];
          /*<<weak.ml:204:8>>*/ caml_check_bound(t[2], _i_)[_i_ + 1] = [0];
        }
        else{
         var newbucket =  /*<<weak.ml:206:24>>*/ create(prev_len);
          /*<<weak.ml:207:8>>*/ blit(bucket, 0, newbucket, 0, prev_len);
         var _k_ =  /*<<weak.ml:207:42>>*/ t[5];
          /*<<weak.ml:208:8>>*/ caml_check_bound(t[1], _k_)[_k_ + 1] = newbucket;
         var
          _q_ =
             /*<<weak.ml:209:30>>*/ Stdlib_Array[6].call
             (null, hbucket, 0, prev_len),
          _l_ =  /*<<weak.ml:209:58>>*/ t[5];
          /*<<weak.ml:209:8>>*/ caml_check_bound(t[2], _l_)[_l_ + 1] = _q_;
        }
        var
         _j_ =  /*<<weak.ml:211:6>>*/ t[3] < len,
         _p_ = _j_ ? prev_len <= t[3] : _j_;
        if(_p_)  /*<<weak.ml:211:51>>*/ t[4] = t[4] - 1 | 0;
       }
        /*<<weak.ml:213:4>>*/ t[5] = caml_mod(t[5] + 1 | 0, t[1].length - 1);
       var _s_ =  /*<<weak.ml:261:56>>*/ i$2 + 1 | 0;
       if(2 === i$2) break;
       i$2 = _s_;
      }
     }
     var
      _n_ =  /*<<weak.ml:263:6>>*/ ((t[1].length - 1) / 2 | 0) < t[4] ? 1 : 0;
     if(! _n_) return _n_;
     var
      oldlen =  /*<<weak.ml:217:4>>*/ t[1].length - 1,
      newlen =
         /*<<weak.ml:181:18>>*/ Stdlib_Int[10].call
         (null, ((3 * oldlen | 0) / 2 | 0) + 3 | 0, Stdlib_Sys[14]);
      /*<<weak.ml:219:4>>*/ if(oldlen < newlen){
      var
       newt =  /*<<weak.ml:220:17>>*/ create$0(newlen),
       add_weak =
          /*<<weak.ml:221:6>>*/ function(ob, oh, oi){
          function setter(nb, ni, param){
            /*<<weak.ml:222:29>>*/ return blit(ob, oi, nb, ni, 1) /*<<weak.ml:222:47>>*/ ;
          }
          var h =  /*<<weak.ml:223:16>>*/ caml_check_bound(oh, oi)[oi + 1];
           /*<<weak.ml:224:35>>*/ return  /*<<weak.ml:224:53>>*/ add_aux
                  (newt,
                   setter,
                   0,
                   h,
                    /*<<weak.ml:224:35>>*/ get_index(newt, h)) /*<<weak.ml:224:54>>*/ ;
         };
       /*<<weak.ml:226:6>>*/ iter_weak(add_weak, t);
       /*<<weak.ml:226:26>>*/ t[1] = newt[1];
       /*<<weak.ml:228:6>>*/ t[2] = newt[2];
       /*<<weak.ml:229:6>>*/ t[3] = newt[3];
       /*<<weak.ml:230:6>>*/ t[4] = newt[4];
       /*<<weak.ml:231:6>>*/ t[5] = caml_mod(t[5], newt[1].length - 1);
      return 0;
     }
      /*<<weak.ml:232:13>>*/ t[3] = Stdlib[19];
      /*<<weak.ml:234:6>>*/ t[4] = 0;
     return 0;
     /*<<weak.ml:264:7>>*/ }
    function add(t, d){
     var h =  /*<<weak.ml:267:12>>*/ caml_call1(H[2], d);
      /*<<weak.ml:268:29>>*/ return  /*<<weak.ml:268:44>>*/ add_aux
             (t, set, [0, d], h,  /*<<weak.ml:268:29>>*/ get_index(t, h)) /*<<weak.ml:268:44>>*/ ;
    }
    function find_aux(t, d, k_found, k_notfound){
     var
      h =  /*<<weak.ml:274:12>>*/ caml_call1(H[2], d),
      index =  /*<<weak.ml:275:16>>*/ get_index(t, h),
      bucket =
         /*<<weak.ml:276:17>>*/ caml_check_bound(t[1], index)[index + 1],
      hashes =
         /*<<weak.ml:277:17>>*/ caml_check_bound(t[2], index)[index + 1],
      sz =  /*<<weak.ml:278:13>>*/ length(bucket),
      i =  /*<<weak.ml:281:4>>*/ 0,
      found = 0;
     for(;;){
      if
       (i < sz &&  /*<<weak.ml:281:21>>*/ Stdlib_Option[10].call(null, found)){
        /*<<weak.ml:282:13>>*/ if(h !== caml_check_bound(hashes, i)[i + 1]){
        var i$2 =  /*<<weak.ml:289:15>>*/ i + 1 | 0;
        i = i$2;
        continue;
       }
       var opt =  /*<<weak.ml:283:14>>*/ get(bucket, i);
        /*<<weak.ml:283:27>>*/ if(! opt){
        var i$1 =  /*<<weak.ml:288:15>>*/ i + 1 | 0;
        i = i$1;
        continue;
       }
       var v =  /*<<weak.ml:283:27>>*/ opt[1];
        /*<<weak.ml:285:14>>*/ if(caml_call2(H[1], v, d)){
         /*<<weak.ml:285:25>>*/ found = opt;
        continue;
       }
       var i$0 =  /*<<weak.ml:287:16>>*/ i + 1 | 0;
       i = i$0;
       continue;
      }
       /*<<weak.ml:291:4>>*/ if(! found)
        /*<<weak.ml:293:14>>*/ return caml_call2(k_notfound, h, index) /*<<weak.ml:293:32>>*/ ;
      var v$0 =  /*<<weak.ml:291:4>>*/ found[1];
       /*<<weak.ml:292:23>>*/ return caml_call4
              (k_found, bucket, i, found, v$0) /*<<weak.ml:293:32>>*/ ;
     }
    }
    function find_opt(t, d){
      /*<<weak.ml:295:21>>*/ return find_aux
             (t,
              d,
              function(b, i, o, v){
                /*<<weak.ml:295:54>>*/ return o;
               /*<<weak.ml:295:55>>*/ },
              function(h, i){
                /*<<weak.ml:296:48>>*/ return 0;
               /*<<weak.ml:296:52>>*/ }) /*<<weak.ml:296:53>>*/ ;
    }
    function merge(t, d){
      /*<<weak.ml:298:21>>*/ return find_aux
             (t,
              d,
              function(b, i, o, v){
                /*<<weak.ml:298:54>>*/ return v;
               /*<<weak.ml:298:55>>*/ },
              function(h, i){
                /*<<weak.ml:300:40>>*/ add_aux(t, set, [0, d], h, i);
                /*<<weak.ml:300:66>>*/ return d;
               /*<<weak.ml:300:69>>*/ }) /*<<weak.ml:300:70>>*/ ;
    }
    function find(t, d){
      /*<<weak.ml:302:21>>*/ return find_aux
             (t,
              d,
              function(b, i, o, v){
                /*<<weak.ml:302:54>>*/ return v;
               /*<<weak.ml:302:55>>*/ },
              function(h, i){
                /*<<weak.ml:303:48>>*/ throw caml_maybe_attach_backtrace
                      (Stdlib[8], 1);
               /*<<weak.ml:303:63>>*/ }) /*<<weak.ml:303:64>>*/ ;
    }
    function remove(t, d){
      /*<<weak.ml:305:21>>*/ return find_aux
             (t,
              d,
              function(b, i, o, v){
                /*<<weak.ml:305:54>>*/ return set(b, i, 0) /*<<weak.ml:305:66>>*/ ;
              },
              function(h, i){
                /*<<weak.ml:306:48>>*/ return 0;
               /*<<weak.ml:306:50>>*/ }) /*<<weak.ml:306:51>>*/ ;
    }
    function mem(t, d){
      /*<<weak.ml:308:21>>*/ return find_aux
             (t,
              d,
              function(b, i, o, v){
                /*<<weak.ml:308:54>>*/ return 1;
               /*<<weak.ml:308:58>>*/ },
              function(h, i){
                /*<<weak.ml:309:48>>*/ return 0;
               /*<<weak.ml:309:53>>*/ }) /*<<weak.ml:309:54>>*/ ;
    }
    function find_all(t, d){
     var
      h =  /*<<weak.ml:312:12>>*/ caml_call1(H[2], d),
      index =  /*<<weak.ml:313:16>>*/ get_index(t, h),
      bucket =
         /*<<weak.ml:314:17>>*/ caml_check_bound(t[1], index)[index + 1],
      hashes =
         /*<<weak.ml:315:17>>*/ caml_check_bound(t[2], index)[index + 1],
      sz =  /*<<weak.ml:316:13>>*/ length(bucket),
      i =  /*<<weak.ml:325:4>>*/ 0,
      accu = 0;
     for(;;){
       /*<<weak.ml:318:6>>*/ if(sz <= i)  /*<<weak.ml:318:22>>*/ return accu;
       /*<<weak.ml:319:18>>*/ if(h === caml_check_bound(hashes, i)[i + 1]){
       var match =  /*<<weak.ml:320:14>>*/ get(bucket, i);
        /*<<weak.ml:320:26>>*/ if(match){
        var v = match[1];
         /*<<weak.ml:321:22>>*/ if(caml_call2(H[1], v, d)){
         var accu$0 =  /*<<weak.ml:321:37>>*/ [0, v, accu], i$0 = i + 1 | 0;
         i = i$0;
         accu = accu$0;
         continue;
        }
       }
       var i$1 =  /*<<weak.ml:322:15>>*/ i + 1 | 0;
       i = i$1;
      }
      else{var i$2 =  /*<<weak.ml:323:15>>*/ i + 1 | 0; i = i$2;}
     }
     /*<<weak.ml:325:13>>*/ }
    function stats(t){
     var
      len =  /*<<weak.ml:328:4>>*/ t[1].length - 1,
      lens =  /*<<weak.ml:329:15>>*/ Stdlib_Array[16].call(null, length, t[1]);
      /*<<weak.ml:330:4>>*/ Stdlib_Array[37].call
      (null, runtime.caml_int_compare, lens);
     var
      totlen =
         /*<<weak.ml:331:17>>*/ Stdlib_Array[20].call
         (null, function(_f_, _e_){ /*<<?>>*/ return _f_ + _e_ | 0;}, 0, lens),
      _a_ =  /*<<weak.ml:332:4>>*/ len - 1 | 0,
      _b_ =  /*<<weak.ml:332:63>>*/ len / 2 | 0,
      _c_ =  /*<<weak.ml:332:51>>*/ caml_check_bound(lens, _a_)[_a_ + 1],
      _d_ =  /*<<weak.ml:332:37>>*/ caml_check_bound(lens, _b_)[_b_ + 1],
      _e_ =  /*<<weak.ml:332:27>>*/ caml_check_bound(lens, 0)[1];
      /*<<weak.ml:332:10>>*/ return [0, len, count(t), totlen, _e_, _d_, _c_] /*<<weak.ml:332:17>>*/ ;
     /*<<weak.ml:332:64>>*/ }
     /*<<weak.ml:105:33>>*/ return [0,
            create$0,
            clear,
            merge,
            add,
            remove,
            find,
            find_opt,
            find_all,
            mem,
            iter,
            fold,
            count,
            stats];
   }
    /*<<?>>*/ runtime.caml_register_global
    (14,
     [0, create, length, set, get, get_copy, check, fill, blit, Make],
     "Stdlib__Weak");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Format
//# unitInfo: Requires: CamlinternalFormat, CamlinternalFormatBasics, Stdlib, Stdlib__Array, Stdlib__Buffer, Stdlib__Bytes, Stdlib__Domain, Stdlib__Int, Stdlib__List, Stdlib__Queue, Stdlib__Seq, Stdlib__Stack, Stdlib__String, Stdlib__Uchar
//# shape: Stdlib__Format:[F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(4),F(3),F(2),F(1),F(3),F(2),F(5),F(4),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2)*,F(2),F(1),F(2),F(1),F(3),F(2),F(3),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),N,F(2),F(1),F(2)*,F(1),F(2),F(1),F(2)*,F(1),F(1)*,F(3),F(2),F(3),F(2),F(2),F(1),F(2)*,F(1),F(2),F(1),F(2)*,F(1),F(2)*,F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(2),F(2),F(1),F(2)*,F(1),N,F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(2)*,F(1),F(2)*,F(1),F(2),F(1),F(3),F(2),F(2)*,F(1),F(2),F(1),F(2)*,F(1),F(3),F(3)*,F(2),F(1),F(2)*,F(1),F(1),F(1),N,F(1),N,F(1),F(1),N,F(1),N,F(1),F(1),F(2),F(2),F(1),F(1)*,F(1),F(1),F(1),F(2),F(1),F(5),F(4),F(4),F(4),F(2),F(1),F(4),F(4),F(4),F(1)*->F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(3),F(2),F(3),F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_string_length = runtime.caml_ml_string_length,
    caml_string_get = runtime.caml_string_get;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    dummy = 0,
    global_data = runtime.caml_get_global_data(),
    Stdlib_Queue = global_data.Stdlib__Queue,
    Stdlib = global_data.Stdlib,
    CamlinternalFormat = global_data.CamlinternalFormat,
    Stdlib_String = global_data.Stdlib__String,
    Stdlib_Domain = global_data.Stdlib__Domain,
    Stdlib_Buffer = global_data.Stdlib__Buffer,
    CamlinternalFormatBasics = global_data.CamlinternalFormatBasics,
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib_List = global_data.Stdlib__List,
    Stdlib_Stack = global_data.Stdlib__Stack,
    Stdlib_Uchar = global_data.Stdlib__Uchar,
    Stdlib_Int = global_data.Stdlib__Int,
    Stdlib_Bytes = global_data.Stdlib__Bytes;
   function id(x){ /*<<format.ml:23:11>>*/ return x; /*<<format.ml:23:12>>*/ }
   var
    String_tag =
       /*<<?>>*/ [248,
       "Stdlib.Format.String_tag",
       runtime.caml_fresh_oo_id(0)];
   function pp_enqueue(state, token){
     /*<<format.ml:222:2>>*/ state[13] = state[13] + token[3] | 0;
     /*<<format.ml:223:2>>*/ return Stdlib_Queue[3].call
            (null, token, state[29]) /*<<format.ml:223:32>>*/ ;
   }
   function pp_output_string(state, s){
     /*<<format.ml:254:31>>*/ return caml_call3
            (state[17], s, 0, caml_ml_string_length(s)) /*<<format.ml:254:72>>*/ ;
   }
   function pp_string_width(state, s){
     /*<<format.ml:255:30>>*/ return caml_call3
            (state[18], s, 0, caml_ml_string_length(s)) /*<<format.ml:255:80>>*/ ;
   }
   function pp_output_newline(state){
     /*<<format.ml:259:30>>*/ return caml_call1(state[20], 0) /*<<format.ml:259:53>>*/ ;
   }
   function format_pp_text(state, size, text){
     /*<<format.ml:265:2>>*/ state[9] = state[9] - size | 0;
     /*<<format.ml:266:2>>*/ pp_output_string(state, text);
     /*<<format.ml:266:29>>*/ state[11] = 0;
    /*<<format.ml:267:31>>*/ }
   var cst =  /*<<?>>*/ "";
   function format_string(state, s){
    var _ak_ =  /*<<format.ml:277:5>>*/ s !== cst ? 1 : 0;
     /*<<format.ml:277:12>>*/ return _ak_
            ?  /*<<format.ml:277:64>>*/ format_pp_text
              (state,  /*<<format.ml:277:39>>*/ pp_string_width(state, s), s)
            : _ak_ /*<<format.ml:277:66>>*/ ;
   }
   function break_new_line(state, param, width){
    var
     after =  /*<<format.ml:280:19>>*/ param[3],
     offset = param[2],
     before = param[1];
     /*<<format.ml:281:2>>*/ format_string(state, before);
     /*<<format.ml:282:2>>*/ pp_output_newline(state);
     /*<<format.ml:282:25>>*/ state[11] = 1;
    var
     indent =  /*<<format.ml:284:2>>*/ (state[6] - width | 0) + offset | 0,
     real_indent =
        /*<<format.ml:286:20>>*/ Stdlib_Int[10].call(null, state[8], indent);
     /*<<format.ml:287:2>>*/ state[10] = real_indent;
     /*<<format.ml:288:2>>*/ state[9] = state[6] - state[10] | 0;
    var n =  /*<<format.ml:289:2>>*/ state[10];
     /*<<format.ml:261:31>>*/ caml_call1(state[22], n);
     /*<<format.ml:289:48>>*/ return format_string(state, after) /*<<format.ml:290:27>>*/ ;
   }
   function break_same_line(state, param){
    var
     after =  /*<<format.ml:297:20>>*/ param[3],
     width = param[2],
     before = param[1];
     /*<<format.ml:298:2>>*/ format_string(state, before);
     /*<<format.ml:298:28>>*/ state[9] = state[9] - width | 0;
     /*<<format.ml:260:31>>*/ caml_call1(state[21], width);
     /*<<format.ml:300:30>>*/ return format_string(state, after) /*<<format.ml:301:27>>*/ ;
   }
   var _a_ =  /*<<?>>*/ [0, cst, 0, cst];
   function format_pp_token(state, size$0, param){
     /*<<format.ml:333:20>>*/ if(typeof param === "number")
     switch(param){
       case 0:
        var
         match$3 =
            /*<<format.ml:361:16>>*/ Stdlib_Stack[8].call(null, state[3]);
         /*<<format.ml:361:49>>*/ if(! match$3)
          /*<<format.ml:362:14>>*/ return;
        var
         tabs =  /*<<format.ml:361:49>>*/ match$3[1][1],
         add_tab =
            /*<<format.ml:364:6>>*/ function(n, ls){
             /*<<format.ml:364:22>>*/ if(! ls)
              /*<<format.ml:365:16>>*/ return [0, n, 0];
            var l =  /*<<format.ml:364:22>>*/ ls[2], x = ls[1];
             /*<<format.ml:366:29>>*/ return runtime.caml_lessthan(n, x)
                    ? [0, n, ls]
                    : [0, x,  /*<<format.ml:366:58>>*/ add_tab(n, l)] /*<<format.ml:366:69>>*/ ;
           };
         /*<<format.ml:367:14>>*/ tabs[1] =
         add_tab(state[6] - state[9] | 0, tabs[1]);
         /*<<format.ml:367:67>>*/ return;
       case 1:
         /*<<format.ml:352:4>>*/ Stdlib_Stack[5].call(null, state[2]);
         /*<<format.ml:352:39>>*/ return;
       case 2:
         /*<<format.ml:358:4>>*/ Stdlib_Stack[5].call(null, state[3]);
         /*<<format.ml:358:37>>*/ return;
       case 3:
        var
         match$4 =
            /*<<format.ml:391:16>>*/ Stdlib_Stack[8].call(null, state[2]);
         /*<<format.ml:391:51>>*/ if(! match$4)
          /*<<format.ml:392:14>>*/ return pp_output_newline(state) /*<<format.ml:437:8>>*/ ;
        var width$0 =  /*<<format.ml:391:51>>*/ match$4[1][2];
         /*<<format.ml:294:29>>*/ return break_new_line(state, _a_, width$0) /*<<format.ml:437:8>>*/ ;
       case 4:
        var
         _ai_ =
            /*<<format.ml:397:4>>*/ state[10] !== (state[6] - state[9] | 0)
            ? 1
            : 0;
        if(! _ai_) return _ai_;
        var
         match$1 =
            /*<<format.ml:319:8>>*/ Stdlib_Queue[6].call(null, state[29]);
         /*<<format.ml:319:37>>*/ if(! match$1)
          /*<<format.ml:320:12>>*/ return;
        var
         match$2 =  /*<<format.ml:319:37>>*/ match$1[1],
         size = match$2[1],
         length = match$2[3];
         /*<<format.ml:322:4>>*/ state[12] = state[12] - length | 0;
         /*<<format.ml:323:65>>*/ state[9] = state[9] + size | 0;
        return;
       default:
        var
         match$5 =
            /*<<format.ml:432:17>>*/ Stdlib_Stack[5].call(null, state[5]);
         /*<<format.ml:432:50>>*/ if(! match$5)
          /*<<format.ml:433:15>>*/ return;
        var
         tag_name =  /*<<format.ml:432:50>>*/ match$5[1],
         marker =  /*<<format.ml:435:20>>*/ caml_call1(state[26], tag_name);
         /*<<format.ml:436:7>>*/ return pp_output_string(state, marker) /*<<format.ml:437:8>>*/ ;
     }
     /*<<format.ml:333:20>>*/ switch(param[0]){
      case 0:
       var s = param[1];
        /*<<format.ml:335:4>>*/ return format_pp_text(state, size$0, s) /*<<format.ml:437:8>>*/ ;
      case 1:
       var
        len =  /*<<format.ml:333:20>>*/ param[3],
        pos = param[2],
        source = param[1];
        /*<<format.ml:271:2>>*/ state[9] = state[9] - size$0 | 0;
        /*<<format.ml:257:2>>*/ caml_call3(state[17], source, pos, len);
        /*<<format.ml:272:44>>*/ state[11] = 0;
       return;
      case 2:
       var
        breaks =  /*<<format.ml:333:20>>*/ param[2],
        fits = param[1],
        off =  /*<<format.ml:401:4>>*/ breaks[2],
        before = breaks[1],
        match$6 =
           /*<<format.ml:402:16>>*/ Stdlib_Stack[8].call(null, state[2]);
        /*<<format.ml:402:51>>*/ if(! match$6)
         /*<<format.ml:403:14>>*/ return;
       var
        match$7 =  /*<<format.ml:402:51>>*/ match$6[1],
        width$1 = match$7[2],
        box_type$0 = match$7[1];
        /*<<format.ml:405:6>>*/ switch(box_type$0){
         case 3:
          var _aj_ =  /*<<format.ml:407:18>>*/ state[9];
          return _aj_ < (size$0 + pp_string_width(state, before) | 0)
                  ?  /*<<format.ml:408:13>>*/ break_new_line
                    (state, breaks, width$1)
                  :  /*<<format.ml:409:13>>*/ break_same_line(state, fits) /*<<format.ml:437:8>>*/ ;
         case 4:
           /*<<format.ml:412:8>>*/ if(state[11])
            /*<<format.ml:412:37>>*/ return break_same_line(state, fits) /*<<format.ml:437:8>>*/ ;
          var _ak_ =  /*<<format.ml:413:18>>*/ state[9];
          return _ak_ < (size$0 + pp_string_width(state, before) | 0)
                  ?  /*<<format.ml:414:15>>*/ break_new_line
                    (state, breaks, width$1)
                  : ((state
                     [6]
                    - width$1
                    | 0)
                    + off
                    | 0)
                    < state[10]
                    ?  /*<<format.ml:417:13>>*/ break_new_line
                      (state, breaks, width$1)
                    :  /*<<format.ml:418:13>>*/ break_same_line(state, fits) /*<<format.ml:437:8>>*/ ;
         case 0:
         case 5:
           /*<<format.ml:405:6>>*/ return break_same_line(state, fits) /*<<format.ml:437:8>>*/ ;
         default:
           /*<<format.ml:405:6>>*/ return break_new_line
                  (state, breaks, width$1) /*<<format.ml:437:8>>*/ ;
       }
      case 3:
       var
        off$0 =  /*<<format.ml:333:20>>*/ param[2],
        n = param[1],
        insertion_point =  /*<<format.ml:371:4>>*/ state[6] - state[9] | 0,
        match$8 =
           /*<<format.ml:372:16>>*/ Stdlib_Stack[8].call(null, state[3]);
        /*<<format.ml:372:49>>*/ if(! match$8)
         /*<<format.ml:373:14>>*/ return;
       var
        tabs$0 =  /*<<format.ml:372:49>>*/ match$8[1][1],
        match$9 =  /*<<format.ml:375:6>>*/ tabs$0[1];
       if(match$9){
        var first = match$9[1], param$0 =  /*<<format.ml:383:10>>*/ tabs$0[1];
        for(;;){
          /*<<format.ml:379:25>>*/ if(! param$0){var tab = first; break;}
         var tail = param$0[2], head = param$0[1];
          /*<<format.ml:381:14>>*/ if(insertion_point <= head){var tab = head; break;}
         param$0 = tail;
        }
       }
       else
        var tab =  /*<<format.ml:375:6>>*/ insertion_point;
       var offset =  /*<<format.ml:384:6>>*/ tab - insertion_point | 0;
        /*<<format.ml:385:6>>*/ return 0 <= offset
               ?  /*<<format.ml:386:11>>*/ break_same_line
                 (state, [0, cst, offset + n | 0, cst])
               :  /*<<format.ml:387:11>>*/ break_new_line
                 (state, [0, cst, tab + off$0 | 0, cst], state[6]) /*<<format.ml:437:8>>*/ ;
      case 4:
       var
        ty =  /*<<format.ml:333:20>>*/ param[2],
        off$1 = param[1],
        insertion_point$0 =  /*<<format.ml:339:4>>*/ state[6] - state[9] | 0;
        /*<<format.ml:340:4>>*/ if(state[8] < insertion_point$0){
        var
         match =  /*<<format.ml:308:8>>*/ Stdlib_Stack[8].call(null, state[2]);
         /*<<format.ml:308:43>>*/ if(match){
         var match$0 = match[1], width = match$0[2], box_type = match$0[1];
          /*<<format.ml:311:4>>*/ if
          (state[9] < width && 3 >= box_type - 1 >>> 0)
           /*<<format.ml:294:29>>*/ break_new_line(state, _a_, width);
        }
        else
          /*<<format.ml:309:12>>*/ pp_output_newline(state);
       }
       var
        width$2 =  /*<<format.ml:343:4>>*/ state[9] - off$1 | 0,
        box_type$1 =
           /*<<format.ml:344:4>>*/ 1 === ty ? 1 : state[9] < size$0 ? ty : 5;
        /*<<format.ml:349:4>>*/ return Stdlib_Stack[3].call
               (null, [0, box_type$1, width$2], state[2]) /*<<format.ml:437:8>>*/ ;
      case 5:
       var tbox =  /*<<format.ml:333:20>>*/ param[1];
        /*<<format.ml:355:4>>*/ return Stdlib_Stack[3].call
               (null, tbox, state[3]) /*<<format.ml:437:8>>*/ ;
      default:
       var
        tag_name$0 =  /*<<format.ml:333:20>>*/ param[1],
        marker$0 =  /*<<format.ml:427:18>>*/ caml_call1(state[25], tag_name$0);
        /*<<format.ml:428:5>>*/ pp_output_string(state, marker$0);
        /*<<format.ml:428:34>>*/ return Stdlib_Stack[3].call
               (null, tag_name$0, state[5]) /*<<format.ml:437:8>>*/ ;
    }
   }
   var pp_infinity =  /*<<?>>*/ 1000000010;
   function advance_left(state){
     /*<<format.ml:444:2>>*/ for(;;){
     var
      match =  /*<<format.ml:444:8>>*/ Stdlib_Queue[9].call(null, state[29]);
      /*<<format.ml:444:37>>*/ if(! match)  /*<<format.ml:445:12>>*/ return 0;
     var
      match$0 =  /*<<format.ml:444:37>>*/ match[1],
      size = match$0[1],
      length = match$0[3],
      token = match$0[2],
      pending_count =  /*<<format.ml:447:4>>*/ state[13] - state[12] | 0,
      _ai_ =  /*<<format.ml:42:19>>*/ 0 <= size ? 1 : 0,
      _ah_ =
         /*<<format.ml:448:25>>*/ _ai_ || (state[9] <= pending_count ? 1 : 0);
     if(! _ah_) return _ah_;
      /*<<format.ml:449:12>>*/ if(! Stdlib_Queue[6].call(null, state[29]))
       /*<<format.ml:450:16>>*/ return Stdlib[1].call
              (null, "Format: Unsynchronized access to formatter") /*<<format.ml:458:7>>*/ ;
     var size$0 =  /*<<format.ml:453:31>>*/ 0 <= size ? size : pp_infinity;
      /*<<format.ml:455:8>>*/ format_pp_token(state, size$0, token);
      /*<<format.ml:455:40>>*/ state[12] = length + state[12] | 0;
    }
    /*<<format.ml:458:7>>*/ }
   function enqueue_advance(state, tok){
     /*<<format.ml:462:32>>*/ pp_enqueue(state, tok);
     /*<<format.ml:462:52>>*/ return advance_left(state) /*<<format.ml:462:72>>*/ ;
   }
   function enqueue_string_as(state, size, s){
     /*<<format.ml:467:76>>*/ return enqueue_advance
            (state, [0, size, [0, s], size]) /*<<format.ml:467:78>>*/ ;
   }
   var unknown =  /*<<?>>*/ -1, _b_ = [0, cst];
   function initialize_scan_stack(stack){
     /*<<format.ml:484:2>>*/ Stdlib_Stack[9].call(null, stack);
     /*<<format.ml:486:2>>*/ return Stdlib_Stack[3].call
            (null, [0, -1, [0, unknown, _b_, 0]], stack) /*<<format.ml:486:50>>*/ ;
   }
   function set_size(state, ty){
    var match =  /*<<format.ml:498:8>>*/ Stdlib_Stack[8].call(null, state[1]);
     /*<<format.ml:498:41>>*/ if(! match)  /*<<format.ml:499:12>>*/ return;
    var
     match$0 =  /*<<format.ml:498:41>>*/ match[1],
     queue_elem = match$0[2],
     left_total = match$0[1],
     size =  /*<<format.ml:501:4>>*/ queue_elem[1];
     /*<<format.ml:503:4>>*/ if(left_total < state[12])
      /*<<format.ml:504:6>>*/ return initialize_scan_stack(state[1]) /*<<format.ml:519:10>>*/ ;
    var match$1 =  /*<<format.ml:506:6>>*/ queue_elem[2];
    if(typeof match$1 !== "number")
     switch(match$1[0]){
       case 4:
         /*<<format.ml:513:8>>*/ if(1 - ty){
         var x$0 =  /*<<format.ml:513:23>>*/ state[13] + size | 0;
          /*<<format.ml:514:70>>*/ queue_elem[1] = x$0;
          /*<<format.ml:515:10>>*/ Stdlib_Stack[5].call(null, state[1]);
        }
         /*<<format.ml:513:8>>*/ return;
       case 2:
       case 3:
         /*<<format.ml:508:8>>*/ if(ty){
         var x =  /*<<format.ml:508:19>>*/ state[13] + size | 0;
          /*<<format.ml:509:70>>*/ queue_elem[1] = x;
          /*<<format.ml:510:10>>*/ Stdlib_Stack[5].call(null, state[1]);
        }
         /*<<format.ml:508:8>>*/ return;
     }
    /*<<format.ml:519:10>>*/ }
   function scan_push(state, b, token){
     /*<<format.ml:525:2>>*/ pp_enqueue(state, token);
     /*<<format.ml:525:24>>*/ if(b)
      /*<<format.ml:526:12>>*/ set_size(state, 1);
    var elem =  /*<<format.ml:527:2>>*/ [0, state[13], token];
     /*<<format.ml:528:2>>*/ return Stdlib_Stack[3].call(null, elem, state[1]) /*<<format.ml:528:37>>*/ ;
   }
   function pp_open_box_gen(state, indent, br_ty){
     /*<<format.ml:535:2>>*/ state[14] = state[14] + 1 | 0;
     /*<<format.ml:536:2>>*/ if(state[14] < state[15]){
     var
      size$0 =  /*<<format.ml:537:4>>*/ - state[13] | 0,
      elem =  /*<<format.ml:538:4>>*/ [0, size$0, [4, indent, br_ty], 0];
      /*<<format.ml:539:4>>*/ return scan_push(state, 0, elem) /*<<format.ml:541:45>>*/ ;
    }
    var _ah_ =  /*<<format.ml:540:2>>*/ state[14] === state[15] ? 1 : 0;
    if(! _ah_) return _ah_;
    var
     s =  /*<<format.ml:541:7>>*/ state[16],
     size =  /*<<format.ml:475:13>>*/ pp_string_width(state, s);
     /*<<format.ml:476:44>>*/ return enqueue_string_as(state, size, s) /*<<format.ml:541:45>>*/ ;
   }
   var zero =  /*<<?>>*/ 0;
   function pp_close_box(state, param){
    var _ag_ =  /*<<format.ml:549:2>>*/ 1 < state[14] ? 1 : 0;
    if(_ag_){
      /*<<format.ml:550:2>>*/ if(state[14] < state[15]){
       /*<<format.ml:553:6>>*/ pp_enqueue(state, [0, zero, 1, 0]);
       /*<<format.ml:554:6>>*/ set_size(state, 1);
       /*<<format.ml:554:27>>*/ set_size(state, 0);
     }
      /*<<format.ml:556:4>>*/ state[14] = state[14] - 1 | 0;
     var _ah_ = 0;
    }
    else
     var _ah_ =  /*<<format.ml:549:2>>*/ _ag_;
    return _ah_;
    /*<<format.ml:557:5>>*/ }
   function pp_open_stag(state, tag_name){
     /*<<format.ml:562:2>>*/ if(state[23]){
      /*<<format.ml:564:4>>*/ Stdlib_Stack[3].call(null, tag_name, state[4]);
      /*<<format.ml:565:4>>*/ caml_call1(state[27], tag_name);
    }
    var _ag_ =  /*<<format.ml:567:2>>*/ state[24];
    if(! _ag_) return _ag_;
    var token =  /*<<format.ml:568:4>>*/ [6, tag_name];
     /*<<format.ml:569:4>>*/ return pp_enqueue(state, [0, zero, token, 0]) /*<<format.ml:569:60>>*/ ;
   }
   function pp_close_stag(state, param){
     /*<<format.ml:574:2>>*/ if(state[24])
      /*<<format.ml:575:4>>*/ pp_enqueue(state, [0, zero, 5, 0]);
    var _af_ =  /*<<format.ml:576:2>>*/ state[23];
    if(_af_){
     var
      match =  /*<<format.ml:577:10>>*/ Stdlib_Stack[5].call(null, state[4]);
      /*<<format.ml:577:42>>*/ if(match){
      var tag_name = match[1];
       /*<<format.ml:580:6>>*/ return caml_call1(state[28], tag_name) /*<<format.ml:580:39>>*/ ;
     }
     var _ag_ =  /*<<format.ml:578:14>>*/ 0;
    }
    else
     var _ag_ =  /*<<format.ml:576:2>>*/ _af_;
    return _ag_;
    /*<<format.ml:580:39>>*/ }
   function pp_set_print_tags(state, b){
     /*<<format.ml:582:32>>*/ state[23] = b;
    return 0;
    /*<<format.ml:582:56>>*/ }
   function pp_set_mark_tags(state, b){
     /*<<format.ml:583:31>>*/ state[24] = b;
    return 0;
    /*<<format.ml:583:54>>*/ }
   function pp_get_print_tags(state, param){
     /*<<format.ml:584:33>>*/ return state[23];
    /*<<format.ml:584:52>>*/ }
   function pp_get_mark_tags(state, param){
     /*<<format.ml:585:32>>*/ return state[24];
    /*<<format.ml:585:50>>*/ }
   function pp_set_tags(state, b){
     /*<<format.ml:587:2>>*/ pp_set_print_tags(state, b);
     /*<<format.ml:587:27>>*/ return pp_set_mark_tags(state, b) /*<<format.ml:587:53>>*/ ;
   }
   function pp_get_formatter_stag_function(state, param){
     /*<<format.ml:591:47>>*/ return [0,
            state[25],
            state[26],
            state[27],
            state[28]];
    /*<<format.ml:596:1>>*/ }
   function pp_set_formatter_stag_function(state, param){
    var
     pct =  /*<<format.ml:599:36>>*/ param[4],
     pot = param[3],
     mct = param[2],
     mot = param[1];
     /*<<format.ml:605:2>>*/ state[25] = mot;
     /*<<format.ml:606:2>>*/ state[26] = mct;
     /*<<format.ml:607:2>>*/ state[27] = pot;
     /*<<format.ml:608:2>>*/ state[28] = pct;
    return 0;
    /*<<format.ml:608:33>>*/ }
   function pp_rinit(state){
     /*<<format.ml:227:2>>*/ state[12] = 1;
     /*<<format.ml:227:28>>*/ state[13] = 1;
     /*<<format.ml:228:2>>*/ Stdlib_Queue[12].call(null, state[29]);
     /*<<format.ml:614:2>>*/ initialize_scan_stack(state[1]);
     /*<<format.ml:615:2>>*/ Stdlib_Stack[9].call(null, state[2]);
     /*<<format.ml:616:2>>*/ Stdlib_Stack[9].call(null, state[3]);
     /*<<format.ml:617:2>>*/ Stdlib_Stack[9].call(null, state[4]);
     /*<<format.ml:618:2>>*/ Stdlib_Stack[9].call(null, state[5]);
     /*<<format.ml:618:33>>*/ state[10] = 0;
     /*<<format.ml:620:2>>*/ state[14] = 0;
     /*<<format.ml:621:2>>*/ state[9] = state[6];
     /*<<format.ml:545:28>>*/ return pp_open_box_gen(state, 0, 3) /*<<format.ml:622:23>>*/ ;
   }
   function pp_flush_queue(state, end_with_newline){
     /*<<format.ml:625:2>>*/ Stdlib_Stack[13].call
     (null,
      function(param){
        /*<<format.ml:625:23>>*/ return pp_close_stag(state, 0) /*<<format.ml:625:45>>*/ ;
      },
      state[4]);
     /*<<format.ml:630:23>>*/ for(;;){
     if(1 >= state[14]){
       /*<<format.ml:634:2>>*/ state[13] = pp_infinity;
       /*<<format.ml:635:2>>*/ advance_left(state);
       /*<<format.ml:635:20>>*/ if(end_with_newline)
        /*<<format.ml:636:27>>*/ pp_output_newline(state);
       /*<<format.ml:637:2>>*/ return pp_rinit(state) /*<<format.ml:637:16>>*/ ;
     }
      /*<<format.ml:632:4>>*/ pp_close_box(state, 0);
    }
    /*<<format.ml:637:16>>*/ }
   function pp_print_as_size(state, size, s){
    var _af_ =  /*<<format.ml:647:2>>*/ state[14] < state[15] ? 1 : 0;
    return _af_
            ?  /*<<format.ml:648:7>>*/ enqueue_string_as(state, size, s)
            : _af_ /*<<format.ml:648:37>>*/ ;
   }
   function pp_print_as(state, isize, s){
     /*<<format.ml:652:44>>*/ return pp_print_as_size(state, isize, s) /*<<format.ml:652:46>>*/ ;
   }
   function pp_print_string(state, s){
    var isize =  /*<<format.ml:656:20>>*/ pp_string_width(state, s);
     /*<<format.ml:652:44>>*/ return pp_print_as_size(state, isize, s) /*<<format.ml:656:47>>*/ ;
   }
   function pp_print_substring_as(pos, len, state, size, source){
    var _af_ =  /*<<format.ml:659:2>>*/ state[14] < state[15] ? 1 : 0;
    if(! _af_) return _af_;
    var token =  /*<<format.ml:471:2>>*/ [1, source, pos, len];
     /*<<format.ml:472:64>>*/ return enqueue_advance
            (state, [0, size, token, size]) /*<<format.ml:660:64>>*/ ;
   }
   function pp_print_substring(pos, len, state, s){
    var width =  /*<<format.ml:258:43>>*/ caml_call3(state[18], s, pos, len);
     /*<<format.ml:664:2>>*/ return pp_print_substring_as
            (pos, len, state, width, s) /*<<format.ml:664:47>>*/ ;
   }
   function pp_print_bytes(state, s){
    var
     s$0 =  /*<<format.ml:667:37>>*/ Stdlib_Bytes[6].call(null, s),
     isize =  /*<<format.ml:667:56>>*/ runtime.caml_ml_bytes_length(s);
     /*<<format.ml:652:44>>*/ return pp_print_as_size(state, isize, s$0) /*<<format.ml:667:56>>*/ ;
   }
   function pp_print_int(state, i){
     /*<<format.ml:670:49>>*/ return  /*<<format.ml:670:66>>*/ pp_print_string
            (state,  /*<<format.ml:670:49>>*/ Stdlib_Int[12].call(null, i)) /*<<format.ml:670:66>>*/ ;
   }
   function pp_print_float(state, f){
     /*<<format.ml:673:51>>*/ return  /*<<format.ml:673:70>>*/ pp_print_string
            (state,  /*<<format.ml:673:51>>*/ Stdlib[35].call(null, f)) /*<<format.ml:673:70>>*/ ;
   }
   function pp_print_bool(state, b){
     /*<<format.ml:676:50>>*/ return  /*<<format.ml:676:68>>*/ pp_print_string
            (state,  /*<<format.ml:676:50>>*/ Stdlib[30].call(null, b)) /*<<format.ml:676:68>>*/ ;
   }
   function pp_print_char(state, c){
    var s =  /*<<format.ml:680:22>>*/ Stdlib_String[1].call(null, 1, c);
     /*<<format.ml:652:44>>*/ return pp_print_as_size(state, 1, s) /*<<format.ml:680:39>>*/ ;
   }
   function pp_print_nothing(state, param){ /*<<format.ml:682:33>>*/ return 0;
    /*<<format.ml:682:35>>*/ }
   function pp_open_hbox(state, param){
     /*<<format.ml:686:28>>*/ return pp_open_box_gen(state, 0, 0) /*<<format.ml:686:59>>*/ ;
   }
   function pp_open_vbox(state, indent){
     /*<<format.ml:687:32>>*/ return pp_open_box_gen(state, indent, 1) /*<<format.ml:687:68>>*/ ;
   }
   function pp_open_hvbox(state, indent){
     /*<<format.ml:689:33>>*/ return pp_open_box_gen(state, indent, 2) /*<<format.ml:689:70>>*/ ;
   }
   function pp_open_hovbox(state, indent){
     /*<<format.ml:690:34>>*/ return pp_open_box_gen(state, indent, 3) /*<<format.ml:690:72>>*/ ;
   }
   function pp_open_box(state, indent){
     /*<<format.ml:691:31>>*/ return pp_open_box_gen(state, indent, 4) /*<<format.ml:691:66>>*/ ;
   }
   function pp_print_newline(state, param){
     /*<<format.ml:703:2>>*/ pp_flush_queue(state, 1);
     /*<<format.ml:703:45>>*/ return caml_call1(state[19], 0) /*<<format.ml:703:68>>*/ ;
   }
   function pp_print_flush(state, param){
     /*<<format.ml:705:2>>*/ pp_flush_queue(state, 0);
     /*<<format.ml:705:46>>*/ return caml_call1(state[19], 0) /*<<format.ml:705:69>>*/ ;
   }
   function pp_force_newline(state, param){
    var _af_ =  /*<<format.ml:710:2>>*/ state[14] < state[15] ? 1 : 0;
    return _af_
            ?  /*<<format.ml:711:4>>*/ enqueue_advance(state, [0, zero, 3, 0])
            : _af_ /*<<format.ml:711:78>>*/ ;
   }
   function pp_print_if_newline(state, param){
    var _af_ =  /*<<format.ml:716:2>>*/ state[14] < state[15] ? 1 : 0;
    return _af_
            ?  /*<<format.ml:717:4>>*/ enqueue_advance(state, [0, zero, 4, 0])
            : _af_ /*<<format.ml:718:61>>*/ ;
   }
   function pp_print_custom_break(state, fits, breaks){
    var
     after =  /*<<format.ml:724:2>>*/ fits[3],
     width = fits[2],
     before = fits[1],
     _ae_ =  /*<<format.ml:725:2>>*/ state[14] < state[15] ? 1 : 0;
    if(! _ae_) return _ae_;
    var
     size =  /*<<format.ml:726:4>>*/ - state[13] | 0,
     token =  /*<<format.ml:727:4>>*/ [2, fits, breaks],
     _af_ =  /*<<format.ml:731:8>>*/ pp_string_width(state, after),
     length =
        /*<<format.ml:729:6>>*/ (pp_string_width(state, before) + width | 0)
       + _af_
       | 0;
     /*<<format.ml:734:4>>*/ return scan_push
            (state, 1, [0, size, token, length]) /*<<format.ml:734:29>>*/ ;
   }
   function pp_print_break(state, width, offset){
     /*<<format.ml:741:2>>*/ return pp_print_custom_break
            (state, [0, cst, width, cst], [0, cst, offset, cst]) /*<<format.ml:742:50>>*/ ;
   }
   function pp_print_space(state, param){
     /*<<format.ml:750:30>>*/ return pp_print_break(state, 1, 0) /*<<format.ml:750:54>>*/ ;
   }
   function pp_print_cut(state, param){
     /*<<format.ml:751:28>>*/ return pp_print_break(state, 0, 0) /*<<format.ml:751:52>>*/ ;
   }
   function pp_open_tbox(state, param){
     /*<<format.ml:756:2>>*/ state[14] = state[14] + 1 | 0;
    var _ae_ =  /*<<format.ml:757:2>>*/ state[14] < state[15] ? 1 : 0;
    if(! _ae_) return _ae_;
     /*<<format.ml:760:4>>*/ return enqueue_advance
            (state, [0, zero, [5, [0, [0, 0]]], 0]) /*<<format.ml:760:30>>*/ ;
   }
   function pp_close_tbox(state, param){
    var _ad_ =  /*<<format.ml:765:2>>*/ 1 < state[14] ? 1 : 0;
    if(_ad_){
     var _ae_ =  /*<<format.ml:766:2>>*/ state[14] < state[15] ? 1 : 0;
     if(_ae_){
       /*<<format.ml:769:5>>*/ enqueue_advance(state, [0, zero, 2, 0]);
       /*<<format.ml:769:31>>*/ state[14] = state[14] - 1 | 0;
      var _ac_ = 0;
     }
     else
      var _ac_ =  /*<<format.ml:766:2>>*/ _ae_;
    }
    else
     var _ac_ =  /*<<format.ml:765:2>>*/ _ad_;
    return _ac_;
    /*<<format.ml:771:5>>*/ }
   function pp_print_tbreak(state, width, offset){
    var _ac_ =  /*<<format.ml:776:2>>*/ state[14] < state[15] ? 1 : 0;
    if(! _ac_) return _ac_;
    var
     size =  /*<<format.ml:777:4>>*/ - state[13] | 0,
     elem =  /*<<format.ml:778:4>>*/ [0, size, [3, width, offset], width];
     /*<<format.ml:779:4>>*/ return scan_push(state, 1, elem) /*<<format.ml:779:29>>*/ ;
   }
   function pp_print_tab(state, param){
     /*<<format.ml:782:28>>*/ return pp_print_tbreak(state, 0, 0) /*<<format.ml:782:53>>*/ ;
   }
   function pp_set_tab(state, param){
    var _ac_ =  /*<<format.ml:785:2>>*/ state[14] < state[15] ? 1 : 0;
    if(! _ac_) return _ac_;
     /*<<format.ml:787:4>>*/ return enqueue_advance(state, [0, zero, 0, 0]) /*<<format.ml:787:30>>*/ ;
   }
   function pp_set_max_boxes(state, n){
    var
     _ab_ =  /*<<format.ml:797:31>>*/ 1 < n ? 1 : 0,
     _ac_ = _ab_ ? (state[15] = n, 0) : _ab_;
    return _ac_;
    /*<<format.ml:797:68>>*/ }
   function pp_get_max_boxes(state, param){
     /*<<format.ml:800:32>>*/ return state[15];
    /*<<format.ml:800:50>>*/ }
   function pp_over_max_boxes(state, param){
     /*<<format.ml:802:33>>*/ return state[14] === state[15] ? 1 : 0;
    /*<<format.ml:802:73>>*/ }
   function pp_set_ellipsis_text(state, s){
     /*<<format.ml:805:35>>*/ state[16] = s;
    return 0;
    /*<<format.ml:805:57>>*/ }
   function pp_get_ellipsis_text(state, param){
     /*<<format.ml:806:36>>*/ return state[16];
    /*<<format.ml:806:53>>*/ }
   function pp_limit(n){
     /*<<format.ml:811:2>>*/ return n < 1000000010 ? n : 1000000009 /*<<format.ml:811:49>>*/ ;
   }
   function pp_set_max_indent(state, n$0){
    var _ab_ =  /*<<format.ml:827:2>>*/ 1 < n$0 ? 1 : 0;
    if(! _ab_) return _ab_;
    var
     n$1 =  /*<<format.ml:828:4>>*/ state[6] - n$0 | 0,
     _aa_ =  /*<<format.ml:816:2>>*/ 1 <= n$1 ? 1 : 0;
    if(! _aa_) return _aa_;
    var n =  /*<<format.ml:817:12>>*/ pp_limit(n$1);
     /*<<format.ml:818:4>>*/ state[7] = n;
     /*<<format.ml:819:4>>*/ state[8] = state[6] - state[7] | 0;
     /*<<format.ml:820:4>>*/ return pp_rinit(state) /*<<format.ml:828:53>>*/ ;
   }
   function pp_get_max_indent(state, param){
     /*<<format.ml:831:33>>*/ return state[8];
    /*<<format.ml:831:52>>*/ }
   function pp_set_margin(state, n){
    var _$_ =  /*<<format.ml:834:2>>*/ 1 <= n ? 1 : 0;
    if(! _$_) return _$_;
    var n$0 =  /*<<format.ml:835:12>>*/ pp_limit(n);
     /*<<format.ml:836:4>>*/ state[6] = n$0;
     /*<<format.ml:837:4>>*/ if(state[8] <= state[6])
     var new_max_indent =  /*<<format.ml:840:11>>*/ state[8];
    else
     var
      _aa_ =
         /*<<format.ml:844:15>>*/ Stdlib_Int[11].call
         (null, state[6] - state[7] | 0, state[6] / 2 | 0),
      new_max_indent =
         /*<<format.ml:845:40>>*/  /*<<format.ml:844:7>>*/ Stdlib_Int[11].call
         (null, _aa_, 1);
     /*<<format.ml:847:4>>*/ return pp_set_max_indent(state, new_max_indent) /*<<format.ml:847:42>>*/ ;
   }
   var
    _c_ =  /*<<?>>*/ [1, "margin <= max_indent"],
    _d_ = [1, "margin >= pp_infinity"],
    _e_ = [0, 0],
    _f_ = [1, "max_indent < 2"];
   function validate_geometry(param){
    var margin =  /*<<format.ml:853:22>>*/ param[2], max_indent = param[1];
     /*<<format.ml:854:2>>*/ return 2 <= max_indent
            ? margin <= max_indent ? _c_ : 1000000010 <= margin ? _d_ : _e_
            : _f_ /*<<format.ml:860:12>>*/ ;
   }
   function check_geometry(geometry){
     /*<<format.ml:863:8>>*/ return 0 === validate_geometry(geometry)[0]
            ? 1
            : 0 /*<<format.ml:865:20>>*/ ;
   }
   function pp_get_margin(state, param){
     /*<<format.ml:867:29>>*/ return state[6];
    /*<<format.ml:867:44>>*/ }
   function pp_set_full_geometry(state, param){
    var margin =  /*<<format.ml:869:25>>*/ param[2], max_indent = param[1];
     /*<<format.ml:870:2>>*/ pp_set_margin(state, margin);
     /*<<format.ml:871:2>>*/ pp_set_max_indent(state, max_indent);
     /*<<format.ml:871:36>>*/ return 0;
    /*<<format.ml:872:4>>*/ }
   function pp_set_geometry(state, max_indent, margin){
    var
     geometry =  /*<<format.ml:875:2>>*/ [0, max_indent, margin],
     match =  /*<<format.ml:876:8>>*/ validate_geometry(geometry);
     /*<<format.ml:876:34>>*/ if(0 === match[0])
      /*<<format.ml:880:4>>*/ return pp_set_full_geometry(state, geometry) /*<<format.ml:880:39>>*/ ;
    var
     msg =  /*<<format.ml:876:34>>*/ match[1],
     _$_ =
        /*<<format.ml:878:28>>*/ Stdlib[28].call
        (null, "Format.pp_set_geometry: ", msg);
     /*<<format.ml:878:62>>*/ throw caml_maybe_attach_backtrace
           ([0, Stdlib[6], _$_], 1);
    /*<<format.ml:880:39>>*/ }
   function pp_safe_set_geometry(state, max_indent, margin){
    var geometry =  /*<<format.ml:883:2>>*/ [0, max_indent, margin];
     /*<<format.ml:884:8>>*/ return 0 === validate_geometry(geometry)[0]
            ?  /*<<format.ml:888:4>>*/ pp_set_full_geometry(state, geometry)
            : 0 /*<<format.ml:888:39>>*/ ;
   }
   function pp_get_geometry(state, param){
     /*<<format.ml:891:76>>*/ return [0, state[8], state[6]];
    /*<<format.ml:891:78>>*/ }
   function pp_update_geometry(state, update){
    var geometry =  /*<<format.ml:894:17>>*/ pp_get_geometry(state, 0);
     /*<<format.ml:895:29>>*/ return  /*<<format.ml:895:46>>*/ pp_set_full_geometry
            (state,  /*<<format.ml:895:29>>*/ caml_call1(update, geometry)) /*<<format.ml:895:46>>*/ ;
   }
   function pp_set_formatter_out_functions(state, param){
    var
     j =  /*<<format.ml:898:35>>*/ param[6],
     i = param[5],
     h = param[4],
     g = param[3],
     f2 = param[2],
     f = param[1];
     /*<<format.ml:906:2>>*/ state[17] = f;
     /*<<format.ml:907:2>>*/ state[18] = f2;
     /*<<format.ml:908:2>>*/ state[19] = g;
     /*<<format.ml:909:2>>*/ state[20] = h;
     /*<<format.ml:910:2>>*/ state[21] = i;
     /*<<format.ml:911:2>>*/ state[22] = j;
    return 0;
    /*<<format.ml:911:26>>*/ }
   function pp_get_formatter_out_functions(state, param){
     /*<<format.ml:913:46>>*/ return [0,
            state[17],
            state[18],
            state[19],
            state[20],
            state[21],
            state[22]];
    /*<<format.ml:920:1>>*/ }
   function pp_set_formatter_output_functi(state, f, g){
     /*<<format.ml:925:2>>*/ state[17] = f;
     /*<<format.ml:925:28>>*/ state[19] = g;
    return 0;
    /*<<format.ml:925:51>>*/ }
   function pp_get_formatter_output_functi(state, param){
     /*<<format.ml:928:2>>*/ return [0, state[17], state[19]];
    /*<<format.ml:928:43>>*/ }
   function display_newline(state, param){
     /*<<format.ml:932:31>>*/ return caml_call3(state[17], "\n", 0, 1) /*<<format.ml:932:60>>*/ ;
   }
   var
    blank_line =  /*<<format.ml:935:17>>*/ Stdlib_String[1].call(null, 80, 32);
   function display_blanks(state, n$1){
    var n =  /*<<format.ml:937:2>>*/ n$1;
    for(;;){
     var _$_ = 0 < n ? 1 : 0;
     if(! _$_) return _$_;
      /*<<format.ml:938:2>>*/ if(80 >= n)
       /*<<format.ml:938:18>>*/ return caml_call3(state[17], blank_line, 0, n) /*<<format.ml:942:5>>*/ ;
      /*<<format.ml:940:4>>*/ caml_call3(state[17], blank_line, 0, 80);
     var n$0 =  /*<<format.ml:940:39>>*/ n - 80 | 0;
     n = n$0;
    }
    /*<<format.ml:942:5>>*/ }
   function pp_set_formatter_out_channel(state, oc){
    var _Y_ =  /*<<format.ml:951:25>>*/ Stdlib[69];
     /*<<format.ml:951:44>>*/ state[17] =
     function(_Z_, ___, _$_){
       /*<<format.ml:951:25>>*/ return _Y_(oc, _Z_, ___, _$_);
     };
     /*<<format.ml:952:2>>*/ state[19] =
     function(param){
       /*<<format.ml:952:35>>*/ return Stdlib[63].call(null, oc) /*<<format.ml:952:43>>*/ ;
     };
     /*<<format.ml:953:47>>*/ state[20] =
     function(_Y_){
       /*<<format.ml:953:26>>*/ return display_newline(state, _Y_);
     };
     /*<<format.ml:954:45>>*/ state[21] =
     function(_Y_){
       /*<<format.ml:954:25>>*/ return display_blanks(state, _Y_);
     };
     /*<<format.ml:955:45>>*/ state[22] =
     function(_Y_){
       /*<<format.ml:955:25>>*/ return display_blanks(state, _Y_);
     };
     /*<<format.ml:955:45>>*/ return 0;
   }
   var cst$0 =  /*<<?>>*/ ">";
   function default_pp_mark_open_tag(param){
     /*<<format.ml:963:31>>*/ if(param[1] !== String_tag)
      /*<<format.ml:965:9>>*/ return cst;
    var
     s =  /*<<format.ml:963:31>>*/ param[2],
     _Y_ =  /*<<format.ml:964:26>>*/ Stdlib[28].call(null, s, cst$0);
     /*<<format.ml:964:33>>*/ return Stdlib[28].call(null, "<", _Y_) /*<<format.ml:965:11>>*/ ;
   }
   function default_pp_mark_close_tag(param){
     /*<<format.ml:966:32>>*/ if(param[1] !== String_tag)
      /*<<format.ml:968:9>>*/ return cst;
    var
     s =  /*<<format.ml:966:32>>*/ param[2],
     _Y_ =  /*<<format.ml:967:27>>*/ Stdlib[28].call(null, s, cst$0);
     /*<<format.ml:967:34>>*/ return Stdlib[28].call(null, "<\/", _Y_) /*<<format.ml:968:11>>*/ ;
   }
   function default_pp_print_open_tag(_Y_){ /*<<?>>*/ return 0;}
   function default_pp_print_close_tag(_Y_){return 0;}
   function utf_8_scalar_width(s, current, len){
    var
     stop =  /*<<format.ml:981:2>>*/ current + len | 0,
     count = 0,
     current$0 = current;
    for(;;){
      /*<<format.ml:975:4>>*/ if(stop <= current$0)
       /*<<format.ml:975:28>>*/ return count;
     var
      decode =
         /*<<format.ml:977:19>>*/ Stdlib_String[43].call(null, s, current$0),
      advance =  /*<<format.ml:978:20>>*/ Stdlib_Uchar[21].call(null, decode),
      current$1 =  /*<<format.ml:979:6>>*/ current$0 + advance | 0,
      count$0 = count + 1 | 0;
     count = count$0;
     current$0 = current$1;
    }
    /*<<format.ml:981:27>>*/ }
   function ascii_width(_Y_, param, len){
     /*<<format.ml:983:32>>*/ return len;
    /*<<format.ml:983:35>>*/ }
   var _g_ =  /*<<format.ml:935:35>>*/ [4, 0, 3];
   function pp_make_formatter(f, g, h, i, j){
    var
     pp_queue =  /*<<format.ml:989:17>>*/ Stdlib_Queue[2].call(null, 0),
     sys_tok =  /*<<format.ml:990:2>>*/ [0, unknown, _g_, 0];
     /*<<format.ml:992:2>>*/ Stdlib_Queue[3].call(null, sys_tok, pp_queue);
    var scan_stack =  /*<<format.ml:993:19>>*/ Stdlib_Stack[2].call(null, 0);
     /*<<format.ml:994:2>>*/ initialize_scan_stack(scan_stack);
     /*<<format.ml:995:2>>*/ Stdlib_Stack[3].call
     (null, [0, 1, sys_tok], scan_stack);
    var
     _V_ =  /*<<format.ml:1004:20>>*/ Stdlib[19],
     _W_ = Stdlib_Stack[2].call(null, 0),
     _X_ =  /*<<format.ml:1003:19>>*/ Stdlib_Stack[2].call(null, 0),
     _Y_ =  /*<<format.ml:1002:20>>*/ Stdlib_Stack[2].call(null, 0),
     pp_margin =  /*<<format.ml:995:64>>*/ 78;
     /*<<format.ml:1001:22>>*/ return [0,
            scan_stack,
            Stdlib_Stack[2].call(null, 0),
            _Y_,
            _X_,
            _W_,
            pp_margin,
            10,
            68,
            pp_margin,
            0,
            1,
            1,
            1,
            1,
            _V_,
            ".",
            f,
            utf_8_scalar_width,
            g,
            h,
            i,
            j,
            0,
            0,
            default_pp_mark_open_tag,
            default_pp_mark_close_tag,
            default_pp_print_open_tag,
            default_pp_print_close_tag,
            pp_queue] /*<<format.ml:1001:37>>*/ ;
   }
   function formatter_of_out_functions(out_funs){
     /*<<format.ml:1034:2>>*/ return pp_make_formatter
            (out_funs[1], out_funs[3], out_funs[4], out_funs[5], out_funs[6]) /*<<format.ml:1039:23>>*/ ;
   }
   function make_formatter(output, flush){
    var
     ppf =
        /*<<format.ml:1045:12>>*/ pp_make_formatter
        (output,
         flush,
         function(_V_){ /*<<?>>*/ return 0;},
         function(_V_){return 0;},
         function(_V_){return 0;});
     /*<<format.ml:1046:43>>*/ ppf[20] =
     function(_V_){
       /*<<format.ml:1046:24>>*/ return display_newline(ppf, _V_);
     };
     /*<<format.ml:1047:41>>*/ ppf[21] =
     function(_V_){
       /*<<format.ml:1047:23>>*/ return display_blanks(ppf, _V_);
     };
     /*<<format.ml:1048:41>>*/ ppf[22] =
     function(_V_){
       /*<<format.ml:1048:23>>*/ return display_blanks(ppf, _V_);
     };
     /*<<format.ml:1049:2>>*/ return ppf;
    /*<<format.ml:1049:5>>*/ }
   function formatter_of_out_channel(oc){
    var _S_ =  /*<<format.ml:1054:17>>*/ Stdlib[69];
     /*<<format.ml:1054:38>>*/ return make_formatter
            (function(_T_, _U_, _V_){
               /*<<format.ml:1054:17>>*/ return _S_(oc, _T_, _U_, _V_);
             },
             function(param){
               /*<<format.ml:1054:50>>*/ return Stdlib[63].call(null, oc) /*<<format.ml:1054:58>>*/ ;
             }) /*<<format.ml:1054:59>>*/ ;
   }
   function formatter_of_buffer(b){
    var _P_ =  /*<<format.ml:1059:17>>*/ Stdlib_Buffer[18];
     /*<<format.ml:1059:41>>*/ return make_formatter
            (function(_Q_, _R_, _S_){
               /*<<format.ml:1059:17>>*/ return _P_(b, _Q_, _R_, _S_);
             },
             function(_P_){ /*<<?>>*/ return 0;}) /*<<format.ml:1059:48>>*/ ;
   }
   var pp_buffer_size =  /*<<format.ml:935:35>>*/ 512;
   function pp_make_buffer(param){
     /*<<format.ml:1066:24>>*/ return Stdlib_Buffer[1].call
            (null, pp_buffer_size) /*<<format.ml:1066:52>>*/ ;
   }
   var
    stdbuf =  /*<<format.ml:1069:13>>*/ pp_make_buffer(0),
    std_formatter =
       /*<<format.ml:1073:20>>*/ formatter_of_out_channel(Stdlib[39]),
    err_formatter =
       /*<<format.ml:1074:20>>*/ formatter_of_out_channel(Stdlib[40]),
    str_formatter =  /*<<format.ml:1075:20>>*/ formatter_of_buffer(stdbuf),
    stdbuf_key =
       /*<<format.ml:1080:17>>*/ caml_call2
       (Stdlib_Domain[11][1], 0, pp_make_buffer);
    /*<<format.ml:1081:8>>*/ caml_call2
    (Stdlib_Domain[11][3], stdbuf_key, stdbuf);
   var
    str_formatter_key =
       /*<<format.ml:1083:24>>*/ caml_call2
       (Stdlib_Domain[11][1],
        0,
        function(param){
          /*<<format.ml:1084:22>>*/ return  /*<<format.ml:1084:42>>*/ formatter_of_buffer
                 ( /*<<format.ml:1084:22>>*/ caml_call1
                   (Stdlib_Domain[11][2], stdbuf_key)) /*<<format.ml:1084:42>>*/ ;
        });
    /*<<format.ml:1085:8>>*/ caml_call2
    (Stdlib_Domain[11][3], str_formatter_key, str_formatter);
   function buffered_out_string(key, str, ofs, len){
    var
     _P_ =  /*<<format.ml:1088:23>>*/ caml_call1(Stdlib_Domain[11][2], key);
     /*<<format.ml:1088:43>>*/ return Stdlib_Buffer[18].call
            (null, _P_, str, ofs, len) /*<<format.ml:1088:55>>*/ ;
   }
   function buffered_out_flush(oc, key, param){
    var
     buf =  /*<<format.ml:1091:12>>*/ caml_call1(Stdlib_Domain[11][2], key),
     len =  /*<<format.ml:1092:12>>*/ Stdlib_Buffer[7].call(null, buf),
     str =  /*<<format.ml:1093:12>>*/ Stdlib_Buffer[2].call(null, buf);
     /*<<format.ml:1094:2>>*/ Stdlib[69].call(null, oc, str, 0, len);
     /*<<format.ml:1095:2>>*/ Stdlib[63].call(null, oc);
     /*<<format.ml:1095:17>>*/ return Stdlib_Buffer[8].call(null, buf) /*<<format.ml:1096:18>>*/ ;
   }
   var
    std_buf_key =
       /*<<format.ml:1098:18>>*/ caml_call2
       (Stdlib_Domain[11][1],
        0,
        function(param){
          /*<<format.ml:1098:48>>*/ return Stdlib_Buffer[1].call
                 (null, pp_buffer_size) /*<<format.ml:1098:76>>*/ ;
        }),
    err_buf_key =
       /*<<format.ml:1099:18>>*/ caml_call2
       (Stdlib_Domain[11][1],
        0,
        function(param){
          /*<<format.ml:1099:48>>*/ return Stdlib_Buffer[1].call
                 (null, pp_buffer_size) /*<<format.ml:1099:76>>*/ ;
        }),
    std_formatter_key =
       /*<<format.ml:1101:24>>*/ caml_call2
       (Stdlib_Domain[11][1],
        0,
        function(param){
         var
          _M_ =  /*<<format.ml:1103:22>>*/ Stdlib[39],
          ppf =
             /*<<format.ml:1103:4>>*/ pp_make_formatter
             (function(_N_, _O_, _P_){
                /*<<format.ml:1103:22>>*/ return buffered_out_string
                       (std_buf_key, _N_, _O_, _P_);
              },
              function(_N_){
                /*<<format.ml:1104:6>>*/ return buffered_out_flush
                       (_M_, std_buf_key, _N_);
              },
              function(_M_){ /*<<?>>*/ return 0;},
              function(_M_){return 0;},
              function(_M_){return 0;});
          /*<<format.ml:1106:43>>*/ ppf[20] =
          function(_M_){
            /*<<format.ml:1106:24>>*/ return display_newline(ppf, _M_);
          };
          /*<<format.ml:1107:41>>*/ ppf[21] =
          function(_M_){
            /*<<format.ml:1107:23>>*/ return display_blanks(ppf, _M_);
          };
          /*<<format.ml:1108:41>>*/ ppf[22] =
          function(_M_){
            /*<<format.ml:1108:23>>*/ return display_blanks(ppf, _M_);
          };
          /*<<format.ml:1109:2>>*/ Stdlib_Domain[6].call
          (null,
           function(_M_){
             /*<<format.ml:1109:17>>*/ return pp_print_flush(ppf, _M_);
           });
          /*<<format.ml:1109:37>>*/ return ppf;
         /*<<format.ml:1110:5>>*/ });
    /*<<format.ml:1111:8>>*/ caml_call2
    (Stdlib_Domain[11][3], std_formatter_key, std_formatter);
   var
    err_formatter_key =
       /*<<format.ml:1113:24>>*/ caml_call2
       (Stdlib_Domain[11][1],
        0,
        function(param){
         var
          _J_ =  /*<<format.ml:1115:22>>*/ Stdlib[40],
          ppf =
             /*<<format.ml:1115:4>>*/ pp_make_formatter
             (function(_K_, _L_, _M_){
                /*<<format.ml:1115:22>>*/ return buffered_out_string
                       (err_buf_key, _K_, _L_, _M_);
              },
              function(_K_){
                /*<<format.ml:1116:6>>*/ return buffered_out_flush
                       (_J_, err_buf_key, _K_);
              },
              function(_J_){ /*<<?>>*/ return 0;},
              function(_J_){return 0;},
              function(_J_){return 0;});
          /*<<format.ml:1118:43>>*/ ppf[20] =
          function(_J_){
            /*<<format.ml:1118:24>>*/ return display_newline(ppf, _J_);
          };
          /*<<format.ml:1119:41>>*/ ppf[21] =
          function(_J_){
            /*<<format.ml:1119:23>>*/ return display_blanks(ppf, _J_);
          };
          /*<<format.ml:1120:41>>*/ ppf[22] =
          function(_J_){
            /*<<format.ml:1120:23>>*/ return display_blanks(ppf, _J_);
          };
          /*<<format.ml:1121:2>>*/ Stdlib_Domain[6].call
          (null,
           function(_J_){
             /*<<format.ml:1121:17>>*/ return pp_print_flush(ppf, _J_);
           });
          /*<<format.ml:1121:37>>*/ return ppf;
         /*<<format.ml:1122:5>>*/ });
    /*<<format.ml:1123:8>>*/ caml_call2
    (Stdlib_Domain[11][3], err_formatter_key, err_formatter);
   function get_std_formatter(param){
     /*<<format.ml:1125:27>>*/ return caml_call1
            (Stdlib_Domain[11][2], std_formatter_key) /*<<format.ml:1125:52>>*/ ;
   }
   function get_err_formatter(param){
     /*<<format.ml:1126:27>>*/ return caml_call1
            (Stdlib_Domain[11][2], err_formatter_key) /*<<format.ml:1126:52>>*/ ;
   }
   function get_str_formatter(param){
     /*<<format.ml:1127:27>>*/ return caml_call1
            (Stdlib_Domain[11][2], str_formatter_key) /*<<format.ml:1127:52>>*/ ;
   }
   function get_stdbuf(param){
     /*<<format.ml:1128:20>>*/ return caml_call1
            (Stdlib_Domain[11][2], stdbuf_key) /*<<format.ml:1128:38>>*/ ;
   }
   function flush_buffer_formatter(buf, ppf){
     /*<<format.ml:1135:2>>*/ pp_flush_queue(ppf, 0);
    var s =  /*<<format.ml:1136:10>>*/ Stdlib_Buffer[2].call(null, buf);
     /*<<format.ml:1137:2>>*/ Stdlib_Buffer[9].call(null, buf);
     /*<<format.ml:1137:18>>*/ return s;
    /*<<format.ml:1138:3>>*/ }
   function flush_str_formatter(param){
    var
     stdbuf =
        /*<<format.ml:1142:15>>*/ caml_call1(Stdlib_Domain[11][2], stdbuf_key),
     str_formatter =
        /*<<format.ml:1143:22>>*/ caml_call1
        (Stdlib_Domain[11][2], str_formatter_key);
     /*<<format.ml:1144:2>>*/ return flush_buffer_formatter
            (stdbuf, str_formatter) /*<<format.ml:1144:45>>*/ ;
   }
   function make_synchronized_formatter(output, flush){
     /*<<format.ml:1147:2>>*/ return caml_call2
            (Stdlib_Domain[11][1],
             0,
             function(param){
              var
               buf =
                  /*<<format.ml:1148:14>>*/ Stdlib_Buffer[1].call
                  (null, pp_buffer_size),
               _G_ =  /*<<format.ml:1150:4>>*/ Stdlib_Buffer[18];
              function output$0(_H_, _I_, _J_){
                /*<<format.ml:1149:18>>*/ return _G_(buf, _H_, _I_, _J_);
              }
              function flush$0(param){
               var
                _G_ =
                   /*<<format.ml:1151:37>>*/ Stdlib_Buffer[7].call(null, buf);
                /*<<format.ml:1151:13>>*/  /*<<format.ml:1151:6>>*/ caml_call3
                (output,
                  /*<<format.ml:1151:13>>*/ Stdlib_Buffer[2].call(null, buf),
                 0,
                 _G_);
                /*<<format.ml:1152:6>>*/ Stdlib_Buffer[8].call(null, buf);
                /*<<format.ml:1152:22>>*/ return caml_call1(flush, 0) /*<<format.ml:1153:14>>*/ ;
              }
               /*<<format.ml:1155:4>>*/ return make_formatter
                      (output$0, flush$0) /*<<format.ml:1155:33>>*/ ;
             }) /*<<format.ml:1155:34>>*/ ;
   }
   function synchronized_formatter_of_out_(oc){
    var _D_ =  /*<<format.ml:1158:30>>*/ Stdlib[69];
     /*<<format.ml:1158:51>>*/ return make_synchronized_formatter
            (function(_E_, _F_, _G_){
               /*<<format.ml:1158:30>>*/ return _D_(oc, _E_, _F_, _G_);
             },
             function(param){
               /*<<format.ml:1158:63>>*/ return Stdlib[63].call(null, oc) /*<<format.ml:1158:71>>*/ ;
             }) /*<<format.ml:1158:72>>*/ ;
   }
   function make_symbolic_output_buffer(param){ /*<<format.ml:1185:2>>*/ return [0, 0];
    /*<<format.ml:1185:35>>*/ }
   function clear_symbolic_output_buffer(sob){
     /*<<format.ml:1188:2>>*/ sob[1] = 0;
    return 0;
    /*<<format.ml:1188:36>>*/ }
   function get_symbolic_output_buffer(sob){
     /*<<format.ml:1191:2>>*/ return Stdlib_List[11].call(null, sob[1]) /*<<format.ml:1191:39>>*/ ;
   }
   function flush_symbolic_output_buffer(sob){
    var items =  /*<<format.ml:1194:14>>*/ get_symbolic_output_buffer(sob);
     /*<<format.ml:1195:2>>*/ clear_symbolic_output_buffer(sob);
     /*<<format.ml:1195:34>>*/ return items;
    /*<<format.ml:1196:7>>*/ }
   function add_symbolic_output_item(sob, item){
     /*<<format.ml:1199:2>>*/ sob[1] = [0, item, sob[1]];
    return 0;
    /*<<format.ml:1199:70>>*/ }
   function formatter_of_symbolic_output_b(sob){
    function f(s, i, n){
      /*<<format.ml:1207:48>>*/ return  /*<<format.ml:1207:66>>*/ add_symbolic_output_item
             (sob,
              [0,
                /*<<format.ml:1207:48>>*/ Stdlib_String[16].call
                (null, s, i, n)]) /*<<format.ml:1207:66>>*/ ;
    }
    function g(param){
      /*<<format.ml:1203:4>>*/ return add_symbolic_output_item(sob, 0);
    }
    function h(param){
      /*<<format.ml:1205:4>>*/ return add_symbolic_output_item(sob, 1);
    }
    function i(n){
      /*<<format.ml:1209:4>>*/ return add_symbolic_output_item(sob, [1, n]);
    }
    function j(n){
      /*<<format.ml:1211:4>>*/ return add_symbolic_output_item(sob, [2, n]);
    }
     /*<<format.ml:1218:2>>*/ return pp_make_formatter(f, g, h, i, j) /*<<format.ml:1218:29>>*/ ;
   }
   function open_hbox(v){
     /*<<format.ml:1227:31>>*/ return  /*<<format.ml:1227:58>>*/ pp_open_hbox
            ( /*<<format.ml:1227:31>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1227:60>>*/ ;
   }
   function open_vbox(v){
     /*<<format.ml:1228:31>>*/ return  /*<<format.ml:1228:58>>*/ pp_open_vbox
            ( /*<<format.ml:1228:31>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1228:60>>*/ ;
   }
   function open_hvbox(v){
     /*<<format.ml:1229:33>>*/ return  /*<<format.ml:1229:60>>*/ pp_open_hvbox
            ( /*<<format.ml:1229:33>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1229:62>>*/ ;
   }
   function open_hovbox(v){
     /*<<format.ml:1230:35>>*/ return  /*<<format.ml:1230:62>>*/ pp_open_hovbox
            ( /*<<format.ml:1230:35>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1230:64>>*/ ;
   }
   function open_box(v){
     /*<<format.ml:1231:29>>*/ return  /*<<format.ml:1231:56>>*/ pp_open_box
            ( /*<<format.ml:1231:29>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1231:58>>*/ ;
   }
   function close_box(v){
     /*<<format.ml:1232:31>>*/ return  /*<<format.ml:1232:58>>*/ pp_close_box
            ( /*<<format.ml:1232:31>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1232:60>>*/ ;
   }
   function open_stag(v){
     /*<<format.ml:1233:31>>*/ return  /*<<format.ml:1233:58>>*/ pp_open_stag
            ( /*<<format.ml:1233:31>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1233:60>>*/ ;
   }
   function close_stag(v){
     /*<<format.ml:1234:33>>*/ return  /*<<format.ml:1234:60>>*/ pp_close_stag
            ( /*<<format.ml:1234:33>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1234:62>>*/ ;
   }
   function print_as(isize, w){
    var
     state =
        /*<<format.ml:1235:31>>*/ caml_call1
        (Stdlib_Domain[11][2], std_formatter_key);
     /*<<format.ml:652:44>>*/ return pp_print_as_size(state, isize, w) /*<<format.ml:1235:62>>*/ ;
   }
   function print_string(v){
     /*<<format.ml:1236:37>>*/ return  /*<<format.ml:1236:64>>*/ pp_print_string
            ( /*<<format.ml:1236:37>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1236:66>>*/ ;
   }
   function print_substring(pos, len, v){
     /*<<format.ml:1238:32>>*/ return  /*<<format.ml:1238:59>>*/ pp_print_substring
            (pos,
             len,
              /*<<format.ml:1238:32>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1238:61>>*/ ;
   }
   function print_substring_as(pos, len, as_len, v){
     /*<<format.ml:1240:34>>*/ return  /*<<format.ml:1240:61>>*/ pp_print_substring_as
            (pos,
             len,
              /*<<format.ml:1240:34>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             as_len,
             v) /*<<format.ml:1240:70>>*/ ;
   }
   function print_bytes(v){
     /*<<format.ml:1241:35>>*/ return  /*<<format.ml:1241:62>>*/ pp_print_bytes
            ( /*<<format.ml:1241:35>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1241:64>>*/ ;
   }
   function print_int(v){
     /*<<format.ml:1242:31>>*/ return  /*<<format.ml:1242:58>>*/ pp_print_int
            ( /*<<format.ml:1242:31>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1242:60>>*/ ;
   }
   function print_float(v){
     /*<<format.ml:1243:35>>*/ return  /*<<format.ml:1243:62>>*/ pp_print_float
            ( /*<<format.ml:1243:35>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1243:64>>*/ ;
   }
   function print_char(v){
     /*<<format.ml:1244:33>>*/ return  /*<<format.ml:1244:60>>*/ pp_print_char
            ( /*<<format.ml:1244:33>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1244:62>>*/ ;
   }
   function print_bool(v){
     /*<<format.ml:1245:33>>*/ return  /*<<format.ml:1245:60>>*/ pp_print_bool
            ( /*<<format.ml:1245:33>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1245:62>>*/ ;
   }
   function print_break(v, w){
     /*<<format.ml:1246:37>>*/ return  /*<<format.ml:1246:64>>*/ pp_print_break
            ( /*<<format.ml:1246:37>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v,
             w) /*<<format.ml:1246:68>>*/ ;
   }
   function print_cut(v){
     /*<<format.ml:1247:31>>*/ return  /*<<format.ml:1247:58>>*/ pp_print_cut
            ( /*<<format.ml:1247:31>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1247:60>>*/ ;
   }
   function print_space(v){
     /*<<format.ml:1248:35>>*/ return  /*<<format.ml:1248:62>>*/ pp_print_space
            ( /*<<format.ml:1248:35>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1248:64>>*/ ;
   }
   function force_newline(v){
     /*<<format.ml:1249:39>>*/ return  /*<<format.ml:1249:66>>*/ pp_force_newline
            ( /*<<format.ml:1249:39>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1249:68>>*/ ;
   }
   function print_flush(v){
     /*<<format.ml:1250:35>>*/ return  /*<<format.ml:1250:62>>*/ pp_print_flush
            ( /*<<format.ml:1250:35>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1250:64>>*/ ;
   }
   function print_newline(v){
     /*<<format.ml:1251:39>>*/ return  /*<<format.ml:1251:66>>*/ pp_print_newline
            ( /*<<format.ml:1251:39>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1251:68>>*/ ;
   }
   function print_if_newline(v){
     /*<<format.ml:1252:45>>*/ return  /*<<format.ml:1252:72>>*/ pp_print_if_newline
            ( /*<<format.ml:1252:45>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1252:74>>*/ ;
   }
   function open_tbox(v){
     /*<<format.ml:1254:31>>*/ return  /*<<format.ml:1254:58>>*/ pp_open_tbox
            ( /*<<format.ml:1254:31>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1254:60>>*/ ;
   }
   function close_tbox(v){
     /*<<format.ml:1255:33>>*/ return  /*<<format.ml:1255:60>>*/ pp_close_tbox
            ( /*<<format.ml:1255:33>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1255:62>>*/ ;
   }
   function print_tbreak(v, w){
     /*<<format.ml:1256:39>>*/ return  /*<<format.ml:1256:66>>*/ pp_print_tbreak
            ( /*<<format.ml:1256:39>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v,
             w) /*<<format.ml:1256:70>>*/ ;
   }
   function set_tab(v){
     /*<<format.ml:1258:27>>*/ return  /*<<format.ml:1258:54>>*/ pp_set_tab
            ( /*<<format.ml:1258:27>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1258:56>>*/ ;
   }
   function print_tab(v){
     /*<<format.ml:1259:31>>*/ return  /*<<format.ml:1259:58>>*/ pp_print_tab
            ( /*<<format.ml:1259:31>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1259:60>>*/ ;
   }
   function set_margin(v){
     /*<<format.ml:1261:33>>*/ return  /*<<format.ml:1261:60>>*/ pp_set_margin
            ( /*<<format.ml:1261:33>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1261:62>>*/ ;
   }
   function get_margin(v){
    var
     state =
        /*<<format.ml:1262:33>>*/ caml_call1
        (Stdlib_Domain[11][2], std_formatter_key);
     /*<<format.ml:867:29>>*/ return state[6];
    /*<<format.ml:1262:62>>*/ }
   function set_max_indent(v){
     /*<<format.ml:1264:41>>*/ return  /*<<format.ml:1264:68>>*/ pp_set_max_indent
            ( /*<<format.ml:1264:41>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1264:70>>*/ ;
   }
   function get_max_indent(v){
    var
     state =
        /*<<format.ml:1265:41>>*/ caml_call1
        (Stdlib_Domain[11][2], std_formatter_key);
     /*<<format.ml:831:33>>*/ return state[8];
    /*<<format.ml:1265:70>>*/ }
   function set_geometry(max_indent, margin){
     /*<<format.ml:1268:18>>*/ return  /*<<format.ml:1268:45>>*/ pp_set_geometry
            ( /*<<format.ml:1268:18>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             max_indent,
             margin) /*<<format.ml:1268:65>>*/ ;
   }
   function safe_set_geometry(max_indent, margin){
     /*<<format.ml:1270:23>>*/ return  /*<<format.ml:1270:50>>*/ pp_safe_set_geometry
            ( /*<<format.ml:1270:23>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             max_indent,
             margin) /*<<format.ml:1270:70>>*/ ;
   }
   function get_geometry(v){
     /*<<format.ml:1271:37>>*/ return  /*<<format.ml:1271:64>>*/ pp_get_geometry
            ( /*<<format.ml:1271:37>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1271:66>>*/ ;
   }
   function update_geometry(v){
     /*<<format.ml:1272:43>>*/ return  /*<<format.ml:1272:70>>*/ pp_update_geometry
            ( /*<<format.ml:1272:43>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1272:72>>*/ ;
   }
   function set_max_boxes(v){
     /*<<format.ml:1274:39>>*/ return  /*<<format.ml:1274:66>>*/ pp_set_max_boxes
            ( /*<<format.ml:1274:39>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1274:68>>*/ ;
   }
   function get_max_boxes(v){
    var
     state =
        /*<<format.ml:1275:39>>*/ caml_call1
        (Stdlib_Domain[11][2], std_formatter_key);
     /*<<format.ml:800:32>>*/ return state[15];
    /*<<format.ml:1275:68>>*/ }
   function over_max_boxes(v){
     /*<<format.ml:1276:41>>*/ return  /*<<format.ml:1276:68>>*/ pp_over_max_boxes
            ( /*<<format.ml:1276:41>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1276:70>>*/ ;
   }
   function set_ellipsis_text(v){
     /*<<format.ml:1278:47>>*/ return  /*<<format.ml:1278:74>>*/ pp_set_ellipsis_text
            ( /*<<format.ml:1278:47>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1278:76>>*/ ;
   }
   function get_ellipsis_text(v){
    var
     state =
        /*<<format.ml:1279:47>>*/ caml_call1
        (Stdlib_Domain[11][2], std_formatter_key);
     /*<<format.ml:806:36>>*/ return state[16];
    /*<<format.ml:1279:76>>*/ }
   function set_formatter_out_channel(v){
     /*<<format.ml:1282:31>>*/ return  /*<<format.ml:1282:58>>*/ pp_set_formatter_out_channel
            ( /*<<format.ml:1282:31>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1282:60>>*/ ;
   }
   function set_formatter_out_functions(v){
     /*<<format.ml:1285:33>>*/ return  /*<<format.ml:1285:60>>*/ pp_set_formatter_out_functions
            ( /*<<format.ml:1285:33>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1285:62>>*/ ;
   }
   function get_formatter_out_functions(v){
     /*<<format.ml:1287:33>>*/ return  /*<<format.ml:1287:60>>*/ pp_get_formatter_out_functions
            ( /*<<format.ml:1287:33>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1287:62>>*/ ;
   }
   function set_formatter_output_functions(v, w){
     /*<<format.ml:1290:36>>*/ return  /*<<format.ml:1290:63>>*/ pp_set_formatter_output_functi
            ( /*<<format.ml:1290:36>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v,
             w) /*<<format.ml:1290:67>>*/ ;
   }
   function get_formatter_output_functions(v){
     /*<<format.ml:1292:36>>*/ return  /*<<format.ml:1292:63>>*/ pp_get_formatter_output_functi
            ( /*<<format.ml:1292:36>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1292:65>>*/ ;
   }
   function set_formatter_stag_functions(v){
     /*<<format.ml:1295:34>>*/ return  /*<<format.ml:1295:61>>*/ pp_set_formatter_stag_function
            ( /*<<format.ml:1295:34>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1295:63>>*/ ;
   }
   function get_formatter_stag_functions(v){
     /*<<format.ml:1297:34>>*/ return  /*<<format.ml:1297:61>>*/ pp_get_formatter_stag_function
            ( /*<<format.ml:1297:34>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1297:63>>*/ ;
   }
   function set_print_tags(v){
     /*<<format.ml:1299:20>>*/ return  /*<<format.ml:1299:47>>*/ pp_set_print_tags
            ( /*<<format.ml:1299:20>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1299:49>>*/ ;
   }
   function get_print_tags(v){
    var
     state =
        /*<<format.ml:1301:20>>*/ caml_call1
        (Stdlib_Domain[11][2], std_formatter_key);
     /*<<format.ml:584:33>>*/ return state[23];
    /*<<format.ml:1301:49>>*/ }
   function set_mark_tags(v){
     /*<<format.ml:1303:19>>*/ return  /*<<format.ml:1303:46>>*/ pp_set_mark_tags
            ( /*<<format.ml:1303:19>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1303:48>>*/ ;
   }
   function get_mark_tags(v){
    var
     state =
        /*<<format.ml:1305:19>>*/ caml_call1
        (Stdlib_Domain[11][2], std_formatter_key);
     /*<<format.ml:585:32>>*/ return state[24];
    /*<<format.ml:1305:48>>*/ }
   function set_tags(v){
     /*<<format.ml:1307:14>>*/ return  /*<<format.ml:1307:41>>*/ pp_set_tags
            ( /*<<format.ml:1307:14>>*/ caml_call1
              (Stdlib_Domain[11][2], std_formatter_key),
             v) /*<<format.ml:1307:43>>*/ ;
   }
   function pp_print_iter(opt, iter, pp_v, ppf, v){
    var
     pp_sep =  /*<<format.ml:1312:18>>*/ opt ? opt[1] : pp_print_cut,
     is_first =  /*<<format.ml:1313:2>>*/ [0, 1];
    function pp_v$0(v){
      /*<<format.ml:1315:4>>*/ if(is_first[1])
       /*<<format.ml:1315:22>>*/ is_first[1] = 0;
     else
       /*<<format.ml:1315:45>>*/ caml_call2(pp_sep, ppf, 0);
      /*<<format.ml:1316:4>>*/ return caml_call2(pp_v, ppf, v) /*<<format.ml:1316:14>>*/ ;
    }
     /*<<format.ml:1318:2>>*/ return caml_call2(iter, pp_v$0, v) /*<<format.ml:1318:13>>*/ ;
   }
   function pp_print_list(opt, pp_v, ppf, v){
    var pp_sep =  /*<<format.ml:1321:18>>*/ opt ? opt[1] : pp_print_cut;
     /*<<format.ml:1322:2>>*/ return pp_print_iter
            ([0, pp_sep], Stdlib_List[19], pp_v, ppf, v) /*<<format.ml:1322:44>>*/ ;
   }
   function pp_print_array(opt, pp_v, ppf, v){
    var pp_sep =  /*<<format.ml:1325:19>>*/ opt ? opt[1] : pp_print_cut;
     /*<<format.ml:1326:2>>*/ return pp_print_iter
            ([0, pp_sep], Stdlib_Array[14], pp_v, ppf, v) /*<<format.ml:1326:45>>*/ ;
   }
   function pp_print_seq(opt, pp_v, ppf, seq){
    var pp_sep =  /*<<format.ml:1329:17>>*/ opt ? opt[1] : pp_print_cut;
     /*<<format.ml:1330:2>>*/ return pp_print_iter
            ([0, pp_sep], Stdlib_Seq[4], pp_v, ppf, seq) /*<<format.ml:1330:45>>*/ ;
   }
   function pp_print_text(ppf, s){
    var
     len =  /*<<format.ml:1334:2>>*/ caml_ml_string_length(s),
     left =  /*<<format.ml:1335:2>>*/ [0, 0],
     right =  /*<<format.ml:1336:2>>*/ [0, 0];
    function flush(param){
      /*<<format.ml:1338:4>>*/ pp_print_substring
      (left[1], right[1] - left[1] | 0, ppf, s);
      /*<<format.ml:1338:61>>*/ right[1]++;
      /*<<format.ml:1339:16>>*/ left[1] = right[1];
     return 0;
     /*<<format.ml:1339:31>>*/ }
     /*<<format.ml:1341:2>>*/ for(;;){
     if(right[1] === len){
      var _D_ =  /*<<format.ml:1352:2>>*/ left[1] !== len ? 1 : 0;
      return _D_ ?  /*<<format.ml:1352:23>>*/ flush(0) : _D_ /*<<format.ml:1352:31>>*/ ;
     }
     var match =  /*<<format.ml:1342:10>>*/ caml_string_get(s, right[1]);
      /*<<format.ml:1342:20>>*/ if(10 === match){
       /*<<format.ml:1344:8>>*/ flush(0);
       /*<<format.ml:1345:8>>*/ pp_force_newline(ppf, 0);
     }
     else if(32 === match){
       /*<<format.ml:1347:8>>*/ flush(0);
       /*<<format.ml:1347:18>>*/ pp_print_space(ppf, 0);
     }
     else
       /*<<format.ml:1350:13>>*/ right[1]++;
    }
    /*<<format.ml:1352:31>>*/ }
   function format_text(fmt6){
    var fmt =  /*<<format.ml:1356:2>>*/ fmt6[1];
    function skip_and_count_whites(spaces$1, newlines$1, len, s, pos$2){
     var
      spaces =  /*<<format.ml:1360:4>>*/ spaces$1,
      newlines = newlines$1,
      pos = pos$2;
     for(;;){
      if(len <= pos)
        /*<<format.ml:1360:23>>*/ return [0, pos, spaces, newlines];
      var match =  /*<<format.ml:1361:10>>*/ caml_string_get(s, pos);
       /*<<format.ml:1361:17>>*/ if(10 === match){
       var
        pos$0 =  /*<<format.ml:1363:14>>*/ 1 + pos | 0,
        newlines$0 = 1 + newlines | 0;
       newlines = newlines$0;
       pos = pos$0;
      }
      else{
        /*<<format.ml:1361:17>>*/ if(32 !== match)
         /*<<format.ml:1364:11>>*/ return [0, pos, spaces, newlines];
       var
        pos$1 =  /*<<format.ml:1362:13>>*/ 1 + pos | 0,
        spaces$0 = 1 + spaces | 0;
       spaces = spaces$0;
       pos = pos$1;
      }
     }
     /*<<format.ml:1364:32>>*/ }
    function concat(s, fmt){
     var variant =  /*<<format.ml:1393:21>>*/ s[1];
     if(748194550 <= variant){
      var c = s[2];
      if(10 !== c && 32 !== c)  /*<<format.ml:1395:17>>*/ return [12, c, fmt];
       /*<<format.ml:1358:31>>*/ return [17, [0, cst, 1, 0], fmt];
     }
     var
      s$0 =  /*<<format.ml:1393:21>>*/ s[2],
      len =  /*<<format.ml:1396:19>>*/ caml_ml_string_length(s$0);
      /*<<format.ml:1367:4>>*/ if(len <= 0)
       /*<<format.ml:1367:23>>*/ return fmt;
     var
      pos$1 =  /*<<format.ml:1396:19>>*/ 0,
      space =
         /*<<format.ml:1369:18>>*/ Stdlib_String[33].call
         (null, s$0, pos$1, 32),
      newline =
         /*<<format.ml:1370:20>>*/ Stdlib_String[33].call
         (null, s$0, pos$1, 10);
      /*<<format.ml:1371:6>>*/ if(space)
      if(newline)
       var
        y = newline[1],
        x = space[1],
        first =
           /*<<format.ml:1372:42>>*/ [0,
            /*<<format.ml:1372:33>>*/ Stdlib[16].call(null, x, y)];
      else
       var first =  /*<<format.ml:1371:6>>*/ space;
     else
      var first = newline;
      /*<<format.ml:1375:6>>*/ if(! first)
       /*<<format.ml:1377:25>>*/ return [11,
              Stdlib_String[16].call(null, s$0, pos$1, len - 0 | 0),
              fmt] /*<<format.ml:1377:51>>*/ ;
     var
      sep =  /*<<format.ml:1375:6>>*/ first[1],
      before =
         /*<<format.ml:1379:23>>*/ Stdlib_String[16].call
         (null, s$0, pos$1, sep - 0 | 0),
      match =
         /*<<format.ml:1380:38>>*/ skip_and_count_whites(0, 0, len, s$0, sep),
      newlines =  /*<<format.ml:1380:73>>*/ match[3],
      spaces = match[2],
      pos = match[1];
      /*<<format.ml:1381:10>>*/ if(1 < newlines >>> 0)
      var break$ =  /*<<format.ml:1384:23>>*/ 3, repeat = newlines;
     else
      var
       break$0 =
          /*<<format.ml:1383:44>>*/ [0,
          cst,
          Stdlib[17].call(null, spaces, 1),
          0],
       break$ =  /*<<format.ml:1386:10>>*/ break$0,
       repeat = 1;
     var
      pos$2 =  /*<<format.ml:1386:33>>*/ pos,
      break$3 = break$,
      repeat$3 = repeat,
      offset$0 = 1,
      block =  /*<<format.ml:1386:10>>*/ [11, before, 24029],
      dst$2 =  /*<<format.ml:1386:33>>*/ block;
     for(;;){
      var
       dst$0 =  /*<<format.ml:1388:4>>*/ dst$2,
       offset = offset$0,
       repeat$1 = repeat$3;
      for(;;){
       if(0 === repeat$1) break;
       var dst$1 =  /*<<format.ml:1391:6>>*/ [17, break$3, 24029];
       dst$0[offset + 1] = dst$1;
       var repeat$2 = repeat$1 - 1 | 0;
       dst$0 = dst$1;
       offset = 1;
       repeat$1 = repeat$2;
      }
       /*<<format.ml:1367:4>>*/ if(len <= pos$2)
        /*<<format.ml:1367:23>>*/ dst$0[offset + 1] = fmt;
      else{
       var
        space$0 =
           /*<<format.ml:1369:18>>*/ Stdlib_String[33].call
           (null, s$0, pos$2, 32),
        newline$0 =
           /*<<format.ml:1370:20>>*/ Stdlib_String[33].call
           (null, s$0, pos$2, 10);
        /*<<format.ml:1371:6>>*/ if(space$0)
        if(newline$0)
         var
          y$0 = newline$0[1],
          x$0 = space$0[1],
          first$0 =
             /*<<format.ml:1372:42>>*/ [0,
              /*<<format.ml:1372:33>>*/ Stdlib[16].call(null, x$0, y$0)];
        else
         var first$0 =  /*<<format.ml:1371:6>>*/ space$0;
       else
        var first$0 = newline$0;
        /*<<format.ml:1375:6>>*/ if(first$0){
        var
         sep$0 = first$0[1],
         before$0 =
            /*<<format.ml:1379:23>>*/ Stdlib_String[16].call
            (null, s$0, pos$2, sep$0 - pos$2 | 0),
         match$0 =
            /*<<format.ml:1380:38>>*/ skip_and_count_whites
            (0, 0, len, s$0, sep$0),
         newlines$0 =  /*<<format.ml:1380:73>>*/ match$0[3],
         spaces$0 = match$0[2],
         pos$0 = match$0[1];
         /*<<format.ml:1381:10>>*/ if(1 < newlines$0 >>> 0)
         var break$1 =  /*<<format.ml:1384:23>>*/ 3, repeat$0 = newlines$0;
        else
         var
          break$2 =
             /*<<format.ml:1383:44>>*/ [0,
             cst,
             Stdlib[17].call(null, spaces$0, 1),
             0],
          break$1 =  /*<<format.ml:1386:10>>*/ break$2,
          repeat$0 = 1;
        var dst = [11, before$0, 24029];
        dst$0[offset + 1] = dst;
        pos$2 = pos$0;
        break$3 = break$1;
        repeat$3 = repeat$0;
        offset$0 = 1;
        dst$2 = dst;
        continue;
       }
        /*<<format.ml:1377:25>>*/ dst$0[offset + 1] =
        [11, Stdlib_String[16].call(null, s$0, pos$2, len - pos$2 | 0), fmt];
      }
       /*<<format.ml:1386:65>>*/ return block;
     }
     /*<<format.ml:1396:50>>*/ }
    var
     fmt$0 =
        /*<<format.ml:1397:12>>*/ CamlinternalFormatBasics[4].call
        (null, [0, concat], fmt);
     /*<<format.ml:1398:14>>*/ return [0,
            fmt$0,
            CamlinternalFormat[19].call(null, fmt$0)] /*<<format.ml:1398:50>>*/ ;
    /*<<format.ml:1398:51>>*/ }
   function pp_print_option(opt, pp_v, ppf, param){
    var
     none =
        /*<<format.ml:1401:20>>*/ opt
        ? opt[1]
        : function
         (_D_, param){
           /*<<format.ml:1401:41>>*/ return 0;
          /*<<format.ml:1401:43>>*/ };
     /*<<format.ml:1401:20>>*/ if(! param)
      /*<<format.ml:1402:10>>*/ return caml_call2(none, ppf, 0) /*<<format.ml:1403:22>>*/ ;
    var v =  /*<<format.ml:1401:20>>*/ param[1];
     /*<<format.ml:1403:12>>*/ return caml_call2(pp_v, ppf, v) /*<<format.ml:1403:22>>*/ ;
   }
   function pp_print_result(ok, error, ppf, param){
     /*<<format.ml:1405:20>>*/ if(0 === param[0]){
     var v = param[1];
      /*<<format.ml:1406:10>>*/ return caml_call2(ok, ppf, v) /*<<format.ml:1407:24>>*/ ;
    }
    var e =  /*<<format.ml:1405:20>>*/ param[1];
     /*<<format.ml:1407:13>>*/ return caml_call2(error, ppf, e) /*<<format.ml:1407:24>>*/ ;
   }
   function pp_print_either(left, right, ppf, param){
     /*<<format.ml:1409:20>>*/ if(0 === param[0]){
     var l = param[1];
      /*<<format.ml:1410:19>>*/ return caml_call2(left, ppf, l) /*<<format.ml:1411:31>>*/ ;
    }
    var r =  /*<<format.ml:1409:20>>*/ param[1];
     /*<<format.ml:1411:20>>*/ return caml_call2(right, ppf, r) /*<<format.ml:1411:31>>*/ ;
   }
   function compute_tag(output, tag_acc){
    var
     buf =  /*<<format.ml:1416:12>>*/ Stdlib_Buffer[1].call(null, 16),
     ppf =  /*<<format.ml:1417:12>>*/ formatter_of_buffer(buf);
     /*<<format.ml:1418:2>>*/ caml_call2(output, ppf, tag_acc);
     /*<<format.ml:1419:2>>*/ pp_print_flush(ppf, 0);
    var len =  /*<<format.ml:1420:12>>*/ Stdlib_Buffer[7].call(null, buf);
     /*<<format.ml:1421:2>>*/ return 2 <= len
            ?  /*<<format.ml:1422:7>>*/ Stdlib_Buffer
               [4].call
              (null, buf, 1, len - 2 | 0)
            :  /*<<format.ml:1421:18>>*/ Stdlib_Buffer[2].call(null, buf) /*<<format.ml:1422:33>>*/ ;
   }
   function output_formatting_lit(ppf, fmting_lit){
     /*<<format.ml:1435:43>>*/ if(typeof fmting_lit === "number")
     switch(fmting_lit){
       case 0:
         /*<<format.ml:1436:33>>*/ return pp_close_box(ppf, 0) /*<<format.ml:1445:75>>*/ ;
       case 1:
         /*<<format.ml:1437:33>>*/ return pp_close_stag(ppf, 0) /*<<format.ml:1445:75>>*/ ;
       case 2:
         /*<<format.ml:1439:33>>*/ return pp_print_flush(ppf, 0) /*<<format.ml:1445:75>>*/ ;
       case 3:
         /*<<format.ml:1440:33>>*/ return pp_force_newline(ppf, 0) /*<<format.ml:1445:75>>*/ ;
       case 4:
         /*<<format.ml:1441:33>>*/ return pp_print_newline(ppf, 0) /*<<format.ml:1445:75>>*/ ;
       case 5:
         /*<<format.ml:1443:33>>*/ return pp_print_char(ppf, 64) /*<<format.ml:1445:75>>*/ ;
       default:
         /*<<format.ml:1444:33>>*/ return pp_print_char(ppf, 37) /*<<format.ml:1445:75>>*/ ;
     }
     /*<<format.ml:1435:43>>*/ switch(fmting_lit[0]){
      case 0:
       var offset = fmting_lit[3], width = fmting_lit[2];
        /*<<format.ml:1438:33>>*/ return pp_print_break(ppf, width, offset) /*<<format.ml:1445:75>>*/ ;
      case 1:
        /*<<format.ml:1442:33>>*/ return 0;
      default:
       var c =  /*<<format.ml:1435:43>>*/ fmting_lit[1];
        /*<<format.ml:1445:33>>*/ pp_print_char(ppf, 64);
        /*<<format.ml:1445:54>>*/ return pp_print_char(ppf, c) /*<<format.ml:1445:75>>*/ ;
    }
   }
   function output_acc(ppf, acc){
     /*<<format.ml:1451:29>>*/ if(typeof acc === "number")
      /*<<format.ml:1477:32>>*/ return 0;
    a:
    {
     b:
     {
      c:
      {
        /*<<format.ml:1451:29>>*/ switch(acc[0]){
         case 0:
          var f = acc[2], p = acc[1];
           /*<<format.ml:1461:4>>*/ output_acc(ppf, p);
           /*<<format.ml:1461:20>>*/ return output_formatting_lit(ppf, f) /*<<format.ml:1477:34>>*/ ;
         case 1:
          var match =  /*<<format.ml:1451:29>>*/ acc[2], p$0 = acc[1];
          if(0 === match[0]){
           var acc$0 = match[1];
            /*<<format.ml:1464:4>>*/ output_acc(ppf, p$0);
            /*<<format.ml:1465:33>>*/ return  /*<<format.ml:1465:62>>*/ pp_open_stag
                   (ppf,
                    [0,
                     String_tag,
                      /*<<format.ml:1465:33>>*/ compute_tag(output_acc, acc$0)]) /*<<format.ml:1477:34>>*/ ;
          }
          var acc$1 =  /*<<format.ml:1451:29>>*/ match[1];
           /*<<format.ml:1467:4>>*/ output_acc(ppf, p$0);
          var
           _D_ =  /*<<format.ml:1468:43>>*/ compute_tag(output_acc, acc$1),
           match$0 =
              /*<<format.ml:1468:24>>*/ CamlinternalFormat[20].call(null, _D_),
           bty =  /*<<format.ml:1468:72>>*/ match$0[2],
           indent = match$0[1];
           /*<<format.ml:1469:4>>*/ return pp_open_box_gen(ppf, indent, bty) /*<<format.ml:1477:34>>*/ ;
         case 2:
          var _v_ =  /*<<format.ml:1451:29>>*/ acc[1];
          if(typeof _v_ !== "number" && 0 === _v_[0]){
           var _z_ = _v_[2];
           if(typeof _z_ !== "number" && 1 === _z_[0]){
            var s$0 = acc[2], size = _z_[2], p$2 = _v_[1];
            break a;
           }
          }
          var s = acc[2], p$1 = _v_;
          break b;
         case 3:
          var _w_ = acc[1];
          if(typeof _w_ !== "number" && 0 === _w_[0]){
           var _A_ = _w_[2];
           if(typeof _A_ !== "number" && 1 === _A_[0]){
            var c$0 = acc[2], size$0 = _A_[2], p$4 = _w_[1];
            break c;
           }
          }
          var c = acc[2], p$3 = _w_;
          break;
         case 4:
          var _x_ = acc[1];
          if(typeof _x_ !== "number" && 0 === _x_[0]){
           var _B_ = _x_[2];
           if(typeof _B_ !== "number" && 1 === _B_[0]){
            var s$0 = acc[2], size = _B_[2], p$2 = _x_[1];
            break a;
           }
          }
          var s = acc[2], p$1 = _x_;
          break b;
         case 5:
          var _y_ = acc[1];
          if(typeof _y_ !== "number" && 0 === _y_[0]){
           var _C_ = _y_[2];
           if(typeof _C_ !== "number" && 1 === _C_[0]){
            var c$0 = acc[2], size$0 = _C_[2], p$4 = _y_[1];
            break c;
           }
          }
          var c = acc[2], p$3 = _y_;
          break;
         case 6:
          var f$0 = acc[2], p$5 = acc[1];
           /*<<format.ml:1474:32>>*/ output_acc(ppf, p$5);
           /*<<format.ml:1474:48>>*/ return caml_call1(f$0, ppf) /*<<format.ml:1477:34>>*/ ;
         case 7:
          var p$6 =  /*<<format.ml:1451:29>>*/ acc[1];
           /*<<format.ml:1475:32>>*/ output_acc(ppf, p$6);
           /*<<format.ml:1475:48>>*/ return pp_print_flush(ppf, 0) /*<<format.ml:1477:34>>*/ ;
         default:
          var msg =  /*<<format.ml:1451:29>>*/ acc[2], p$7 = acc[1];
           /*<<format.ml:1476:32>>*/ output_acc(ppf, p$7);
           /*<<format.ml:1476:48>>*/ return Stdlib[1].call(null, msg) /*<<format.ml:1477:34>>*/ ;
       }
        /*<<format.ml:1473:32>>*/ output_acc(ppf, p$3);
        /*<<format.ml:1473:48>>*/ return pp_print_char(ppf, c) /*<<format.ml:1477:34>>*/ ;
      }
       /*<<format.ml:1458:4>>*/ output_acc(ppf, p$4);
       /*<<format.ml:1459:44>>*/ return  /*<<format.ml:1459:43>>*/ pp_print_as_size
              (ppf,
               size$0,
                /*<<format.ml:1459:44>>*/ Stdlib_String[1].call(null, 1, c$0)) /*<<format.ml:1477:34>>*/ ;
     }
      /*<<format.ml:1471:32>>*/ output_acc(ppf, p$1);
      /*<<format.ml:1471:48>>*/ return pp_print_string(ppf, s) /*<<format.ml:1477:34>>*/ ;
    }
     /*<<format.ml:1454:4>>*/ output_acc(ppf, p$2);
     /*<<format.ml:1455:43>>*/ return pp_print_as_size(ppf, size, s$0) /*<<format.ml:1477:34>>*/ ;
   }
   function strput_acc(ppf, acc){
     /*<<format.ml:1483:29>>*/ if(typeof acc === "number")
      /*<<format.ml:1512:32>>*/ return 0;
    a:
    {
     b:
     {
      c:
      {
        /*<<format.ml:1483:29>>*/ switch(acc[0]){
         case 0:
          var f = acc[2], p = acc[1];
           /*<<format.ml:1496:4>>*/ strput_acc(ppf, p);
           /*<<format.ml:1496:20>>*/ return output_formatting_lit(ppf, f) /*<<format.ml:1512:34>>*/ ;
         case 1:
          var match =  /*<<format.ml:1483:29>>*/ acc[2], p$0 = acc[1];
          if(0 === match[0]){
           var acc$0 = match[1];
            /*<<format.ml:1499:4>>*/ strput_acc(ppf, p$0);
            /*<<format.ml:1500:33>>*/ return  /*<<format.ml:1500:62>>*/ pp_open_stag
                   (ppf,
                    [0,
                     String_tag,
                      /*<<format.ml:1500:33>>*/ compute_tag(strput_acc, acc$0)]) /*<<format.ml:1512:34>>*/ ;
          }
          var acc$1 =  /*<<format.ml:1483:29>>*/ match[1];
           /*<<format.ml:1502:4>>*/ strput_acc(ppf, p$0);
          var
           _v_ =  /*<<format.ml:1503:43>>*/ compute_tag(strput_acc, acc$1),
           match$0 =
              /*<<format.ml:1503:24>>*/ CamlinternalFormat[20].call(null, _v_),
           bty =  /*<<format.ml:1503:72>>*/ match$0[2],
           indent = match$0[1];
           /*<<format.ml:1504:4>>*/ return pp_open_box_gen(ppf, indent, bty) /*<<format.ml:1512:34>>*/ ;
         case 2:
          var _n_ =  /*<<format.ml:1483:29>>*/ acc[1];
          if(typeof _n_ !== "number" && 0 === _n_[0]){
           var _r_ = _n_[2];
           if(typeof _r_ !== "number" && 1 === _r_[0]){
            var s$0 = acc[2], size = _r_[2], p$2 = _n_[1];
            break a;
           }
          }
          var s = acc[2], p$1 = _n_;
          break b;
         case 3:
          var _o_ = acc[1];
          if(typeof _o_ !== "number" && 0 === _o_[0]){
           var _s_ = _o_[2];
           if(typeof _s_ !== "number" && 1 === _s_[0]){
            var c$0 = acc[2], size$0 = _s_[2], p$4 = _o_[1];
            break c;
           }
          }
          var c = acc[2], p$3 = _o_;
          break;
         case 4:
          var _p_ = acc[1];
          if(typeof _p_ !== "number" && 0 === _p_[0]){
           var _t_ = _p_[2];
           if(typeof _t_ !== "number" && 1 === _t_[0]){
            var s$0 = acc[2], size = _t_[2], p$2 = _p_[1];
            break a;
           }
          }
          var s = acc[2], p$1 = _p_;
          break b;
         case 5:
          var _q_ = acc[1];
          if(typeof _q_ !== "number" && 0 === _q_[0]){
           var _u_ = _q_[2];
           if(typeof _u_ !== "number" && 1 === _u_[0]){
            var c$0 = acc[2], size$0 = _u_[2], p$4 = _q_[1];
            break c;
           }
          }
          var c = acc[2], p$3 = _q_;
          break;
         case 6:
          var p$5 = acc[1];
          if(typeof p$5 !== "number" && 0 === p$5[0]){
           var match$1 = p$5[2];
           if(typeof match$1 !== "number" && 1 === match$1[0]){
            var f$1 = acc[2], size$1 = match$1[2], p$6 = p$5[1];
             /*<<format.ml:1493:4>>*/ strput_acc(ppf, p$6);
             /*<<format.ml:1494:44>>*/ return  /*<<format.ml:1494:43>>*/ pp_print_as_size
                    (ppf, size$1,  /*<<format.ml:1494:44>>*/ caml_call1(f$1, 0)) /*<<format.ml:1512:34>>*/ ;
           }
          }
          var f$0 =  /*<<format.ml:1483:29>>*/ acc[2];
           /*<<format.ml:1509:32>>*/ strput_acc(ppf, p$5);
           /*<<format.ml:1509:70>>*/ return  /*<<format.ml:1509:76>>*/ pp_print_string
                  (ppf,  /*<<format.ml:1509:70>>*/ caml_call1(f$0, 0)) /*<<format.ml:1512:34>>*/ ;
         case 7:
          var p$7 =  /*<<format.ml:1483:29>>*/ acc[1];
           /*<<format.ml:1510:32>>*/ strput_acc(ppf, p$7);
           /*<<format.ml:1510:48>>*/ return pp_print_flush(ppf, 0) /*<<format.ml:1512:34>>*/ ;
         default:
          var msg =  /*<<format.ml:1483:29>>*/ acc[2], p$8 = acc[1];
           /*<<format.ml:1511:32>>*/ strput_acc(ppf, p$8);
           /*<<format.ml:1511:48>>*/ return Stdlib[1].call(null, msg) /*<<format.ml:1512:34>>*/ ;
       }
        /*<<format.ml:1508:32>>*/ strput_acc(ppf, p$3);
        /*<<format.ml:1508:48>>*/ return pp_print_char(ppf, c) /*<<format.ml:1512:34>>*/ ;
      }
       /*<<format.ml:1490:4>>*/ strput_acc(ppf, p$4);
       /*<<format.ml:1491:44>>*/ return  /*<<format.ml:1491:43>>*/ pp_print_as_size
              (ppf,
               size$0,
                /*<<format.ml:1491:44>>*/ Stdlib_String[1].call(null, 1, c$0)) /*<<format.ml:1512:34>>*/ ;
     }
      /*<<format.ml:1506:32>>*/ strput_acc(ppf, p$1);
      /*<<format.ml:1506:48>>*/ return pp_print_string(ppf, s) /*<<format.ml:1512:34>>*/ ;
    }
     /*<<format.ml:1486:4>>*/ strput_acc(ppf, p$2);
     /*<<format.ml:1487:43>>*/ return pp_print_as_size(ppf, size, s$0) /*<<format.ml:1512:34>>*/ ;
   }
   function kfprintf(k, ppf, param){
    var fmt =  /*<<format.ml:1520:13>>*/ param[1];
     /*<<format.ml:1521:2>>*/ return CamlinternalFormat[7].call
            (null,
             function(acc){
               /*<<format.ml:1522:16>>*/ output_acc(ppf, acc);
               /*<<format.ml:1522:34>>*/ return caml_call1(k, ppf) /*<<format.ml:1522:41>>*/ ;
             },
             0,
             fmt) /*<<format.ml:1523:18>>*/ ;
   }
   function ikfprintf(k, ppf, param){
    var fmt =  /*<<format.ml:1525:14>>*/ param[1];
     /*<<format.ml:1526:2>>*/ return CamlinternalFormat[8].call
            (null, k, ppf, fmt) /*<<format.ml:1526:24>>*/ ;
   }
   function ifprintf(ppf, param){
    var fmt =  /*<<format.ml:1528:13>>*/ param[1];
     /*<<format.ml:1529:2>>*/ return CamlinternalFormat[8].call
            (null, function(_n_){ /*<<?>>*/ return 0;}, 0, fmt) /*<<format.ml:1529:28>>*/ ;
   }
   function fprintf(ppf){
    function _m_(_n_){ /*<<?>>*/ return 0;}
     /*<<format.ml:1531:18>>*/ return function(_n_){
      /*<<?>>*/ return kfprintf(_m_, ppf, _n_);} /*<<format.ml:1531:18>>*/ ;
    /*<<format.ml:1531:37>>*/ }
   function printf(param){
    var fmt =  /*<<format.ml:1533:11>>*/ param[1];
     /*<<format.ml:1534:2>>*/ return CamlinternalFormat[7].call
            (null,
             function(acc){
               /*<<format.ml:1535:27>>*/ return  /*<<format.ml:1535:54>>*/ output_acc
                      ( /*<<format.ml:1535:27>>*/ caml_call1
                        (Stdlib_Domain[11][2], std_formatter_key),
                       acc) /*<<format.ml:1535:58>>*/ ;
             },
             0,
             fmt) /*<<format.ml:1536:18>>*/ ;
   }
   function eprintf(param){
    var fmt =  /*<<format.ml:1538:12>>*/ param[1];
     /*<<format.ml:1539:2>>*/ return CamlinternalFormat[7].call
            (null,
             function(acc){
               /*<<format.ml:1540:27>>*/ return  /*<<format.ml:1540:54>>*/ output_acc
                      ( /*<<format.ml:1540:27>>*/ caml_call1
                        (Stdlib_Domain[11][2], err_formatter_key),
                       acc) /*<<format.ml:1540:58>>*/ ;
             },
             0,
             fmt) /*<<format.ml:1541:18>>*/ ;
   }
   function kdprintf(k, param){
    var fmt =  /*<<format.ml:1543:13>>*/ param[1];
     /*<<format.ml:1544:2>>*/ return CamlinternalFormat[7].call
            (null,
             function(acc){
               /*<<format.ml:1545:16>>*/ return caml_call1
                      (k,
                       function(ppf){
                         /*<<format.ml:1545:30>>*/ return output_acc(ppf, acc) /*<<format.ml:1545:48>>*/ ;
                       }) /*<<format.ml:1545:49>>*/ ;
             },
             0,
             fmt) /*<<format.ml:1546:18>>*/ ;
   }
   function dprintf(fmt){
     /*<<format.ml:1548:18>>*/ return kdprintf
            (function(i){
               /*<<format.ml:1548:37>>*/ return i;
              /*<<format.ml:1548:38>>*/ },
             fmt) /*<<format.ml:1548:43>>*/ ;
   }
   function ksprintf(k, param){
    var
     fmt =  /*<<format.ml:1550:13>>*/ param[1],
     b =  /*<<format.ml:1551:10>>*/ pp_make_buffer(0),
     ppf =  /*<<format.ml:1552:12>>*/ formatter_of_buffer(b);
    function k$0(acc){
      /*<<format.ml:1554:4>>*/ strput_acc(ppf, acc);
      /*<<format.ml:1555:6>>*/ return  /*<<format.ml:1555:36>>*/ caml_call1
             (k,  /*<<format.ml:1555:6>>*/ flush_buffer_formatter(b, ppf)) /*<<format.ml:1555:36>>*/ ;
    }
     /*<<format.ml:1556:2>>*/ return CamlinternalFormat[7].call
            (null, k$0, 0, fmt) /*<<format.ml:1556:30>>*/ ;
   }
   function sprintf(fmt){
     /*<<format.ml:1559:18>>*/ return ksprintf(id, fmt) /*<<format.ml:1559:33>>*/ ;
   }
   function kasprintf(k, param){
    var
     fmt =  /*<<format.ml:1561:14>>*/ param[1],
     b =  /*<<format.ml:1562:10>>*/ pp_make_buffer(0),
     ppf =  /*<<format.ml:1563:12>>*/ formatter_of_buffer(b);
    function k$0(acc){
      /*<<format.ml:1565:4>>*/ output_acc(ppf, acc);
      /*<<format.ml:1566:6>>*/ return  /*<<format.ml:1566:36>>*/ caml_call1
             (k,  /*<<format.ml:1566:6>>*/ flush_buffer_formatter(b, ppf)) /*<<format.ml:1566:36>>*/ ;
    }
     /*<<format.ml:1567:2>>*/ return CamlinternalFormat[7].call
            (null, k$0, 0, fmt) /*<<format.ml:1567:30>>*/ ;
   }
   function asprintf(fmt){
     /*<<format.ml:1570:19>>*/ return kasprintf(id, fmt) /*<<format.ml:1570:35>>*/ ;
   }
   function flush_standard_formatters(param){
     /*<<format.ml:1575:17>>*/  /*<<format.ml:1575:2>>*/ pp_print_flush
     ( /*<<format.ml:1575:17>>*/ caml_call1
       (Stdlib_Domain[11][2], std_formatter_key),
      0);
     /*<<format.ml:1576:17>>*/ return  /*<<format.ml:1576:44>>*/ pp_print_flush
            ( /*<<format.ml:1576:17>>*/ caml_call1
              (Stdlib_Domain[11][2], err_formatter_key),
             0) /*<<format.ml:1576:47>>*/ ;
   }
    /*<<format.ml:1578:9>>*/ Stdlib[100].call(null, flush_standard_formatters);
    /*<<format.ml:1580:9>>*/ Stdlib_Domain[5].call
    (null,
     function(param){
       /*<<format.ml:1581:2>>*/ flush_standard_formatters(0);
      var
       fs =
          /*<<format.ml:1582:11>>*/ pp_get_formatter_out_functions
          (std_formatter, 0),
       _g_ =  /*<<format.ml:1585:25>>*/ Stdlib[39];
       /*<<format.ml:1583:2>>*/ pp_set_formatter_out_functions
       (std_formatter,
        [0,
         function(_k_, _l_, _m_){
           /*<<format.ml:1584:26>>*/ return buffered_out_string
                  (std_buf_key, _k_, _l_, _m_);
         },
         fs[2],
         function(_k_){
           /*<<format.ml:1585:25>>*/ return buffered_out_flush
                  (_g_, std_buf_key, _k_);
         },
         fs[4],
         fs[5],
         fs[6]]);
      var
       fs$0 =
          /*<<format.ml:1587:11>>*/ pp_get_formatter_out_functions
          (err_formatter, 0),
       _h_ =  /*<<format.ml:1590:25>>*/ Stdlib[40];
       /*<<format.ml:1589:57>>*/ return pp_set_formatter_out_functions
              (err_formatter,
               [0,
                function(_i_, _j_, _k_){
                  /*<<format.ml:1589:26>>*/ return buffered_out_string
                         (err_buf_key, _i_, _j_, _k_);
                },
                fs$0[2],
                function(_i_){
                  /*<<format.ml:1590:25>>*/ return buffered_out_flush
                         (_h_, err_buf_key, _i_);
                },
                fs$0[4],
                fs$0[5],
                fs$0[6]]) /*<<format.ml:1590:71>>*/ ;
     });
    /*<<format.ml:1591:1>>*/ runtime.caml_register_global
    (44,
     [0,
      pp_open_box,
      open_box,
      pp_close_box,
      close_box,
      pp_open_hbox,
      open_hbox,
      pp_open_vbox,
      open_vbox,
      pp_open_hvbox,
      open_hvbox,
      pp_open_hovbox,
      open_hovbox,
      pp_print_string,
      print_string,
      pp_print_substring,
      print_substring,
      pp_print_bytes,
      print_bytes,
      pp_print_as,
      print_as,
      pp_print_substring_as,
      print_substring_as,
      pp_print_int,
      print_int,
      pp_print_float,
      print_float,
      pp_print_char,
      print_char,
      pp_print_bool,
      print_bool,
      pp_print_nothing,
      pp_print_space,
      print_space,
      pp_print_cut,
      print_cut,
      pp_print_break,
      print_break,
      pp_print_custom_break,
      pp_force_newline,
      force_newline,
      pp_print_if_newline,
      print_if_newline,
      pp_print_flush,
      print_flush,
      pp_print_newline,
      print_newline,
      pp_infinity,
      pp_set_margin,
      set_margin,
      pp_get_margin,
      get_margin,
      pp_set_max_indent,
      set_max_indent,
      pp_get_max_indent,
      get_max_indent,
      check_geometry,
      pp_set_geometry,
      set_geometry,
      pp_safe_set_geometry,
      safe_set_geometry,
      pp_update_geometry,
      update_geometry,
      pp_get_geometry,
      get_geometry,
      pp_set_max_boxes,
      set_max_boxes,
      pp_get_max_boxes,
      get_max_boxes,
      pp_over_max_boxes,
      over_max_boxes,
      pp_open_tbox,
      open_tbox,
      pp_close_tbox,
      close_tbox,
      pp_set_tab,
      set_tab,
      pp_print_tab,
      print_tab,
      pp_print_tbreak,
      print_tbreak,
      pp_set_ellipsis_text,
      set_ellipsis_text,
      pp_get_ellipsis_text,
      get_ellipsis_text,
      String_tag,
      pp_open_stag,
      open_stag,
      pp_close_stag,
      close_stag,
      pp_set_tags,
      set_tags,
      pp_set_print_tags,
      set_print_tags,
      pp_set_mark_tags,
      set_mark_tags,
      pp_get_print_tags,
      get_print_tags,
      pp_get_mark_tags,
      get_mark_tags,
      pp_set_formatter_out_channel,
      set_formatter_out_channel,
      pp_set_formatter_output_functi,
      set_formatter_output_functions,
      pp_get_formatter_output_functi,
      get_formatter_output_functions,
      pp_set_formatter_out_functions,
      set_formatter_out_functions,
      pp_get_formatter_out_functions,
      get_formatter_out_functions,
      utf_8_scalar_width,
      ascii_width,
      pp_set_formatter_stag_function,
      set_formatter_stag_functions,
      pp_get_formatter_stag_function,
      get_formatter_stag_functions,
      formatter_of_out_channel,
      synchronized_formatter_of_out_,
      std_formatter,
      get_std_formatter,
      err_formatter,
      get_err_formatter,
      formatter_of_buffer,
      stdbuf,
      get_stdbuf,
      str_formatter,
      get_str_formatter,
      flush_str_formatter,
      make_formatter,
      make_synchronized_formatter,
      formatter_of_out_functions,
      make_symbolic_output_buffer,
      clear_symbolic_output_buffer,
      get_symbolic_output_buffer,
      flush_symbolic_output_buffer,
      add_symbolic_output_item,
      formatter_of_symbolic_output_b,
      pp_print_iter,
      pp_print_list,
      pp_print_array,
      pp_print_seq,
      pp_print_text,
      format_text,
      pp_print_option,
      pp_print_result,
      pp_print_either,
      fprintf,
      printf,
      eprintf,
      sprintf,
      asprintf,
      dprintf,
      ifprintf,
      kfprintf,
      kdprintf,
      ikfprintf,
      ksprintf,
      kasprintf],
     "Stdlib__Format");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Scanf
//# unitInfo: Requires: CamlinternalFormat, CamlinternalFormatBasics, Stdlib, Stdlib__Buffer, Stdlib__Bytes, Stdlib__Int, Stdlib__Printf, Stdlib__String
//# shape: Stdlib__Scanf:[N,N,F(2),F(2),F(2),F(2),F(1),F(1),F(3),F(3),F(3),F(3),F(2),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_bytes_get = runtime.caml_bytes_get,
    caml_int_of_string = runtime.caml_int_of_string,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_string_length = runtime.caml_ml_string_length,
    caml_string_get = runtime.caml_string_get,
    caml_trampoline = runtime.caml_trampoline,
    caml_trampoline_return = runtime.caml_trampoline_return,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    CamlinternalFormat = global_data.CamlinternalFormat,
    CamlinternalFormatBasics = global_data.CamlinternalFormatBasics,
    Stdlib_String = global_data.Stdlib__String,
    Stdlib = global_data.Stdlib,
    Assert_failure = global_data.Assert_failure,
    Stdlib_Printf = global_data.Stdlib__Printf,
    Stdlib_Int = global_data.Stdlib__Int,
    Stdlib_Buffer = global_data.Stdlib__Buffer,
    null_char = 0;
   function next_char(ib){
     /*<<scanf.ml:165:4>>*/ try{
     var c =  /*<<scanf.ml:166:14>>*/ caml_call1(ib[7], 0);
      /*<<scanf.ml:167:6>>*/ ib[2] = c;
      /*<<scanf.ml:168:6>>*/ ib[3] = 1;
      /*<<scanf.ml:169:6>>*/ ib[4] = ib[4] + 1 | 0;
      /*<<scanf.ml:170:6>>*/ if(10 === c)
       /*<<scanf.ml:170:23>>*/ ib[5] = ib[5] + 1 | 0;
     return c;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn !== Stdlib[12]) throw caml_maybe_attach_backtrace(exn, 0);
      /*<<scanf.ml:174:6>>*/ ib[2] = null_char;
      /*<<scanf.ml:175:6>>*/ ib[3] = 0;
      /*<<scanf.ml:176:6>>*/ ib[1] = 1;
      /*<<scanf.ml:177:6>>*/ return null_char;
    }
    /*<<scanf.ml:177:7>>*/ }
   function peek_char(ib){
     /*<<scanf.ml:181:4>>*/ return ib[3]
            ? ib[2]
            :  /*<<scanf.ml:183:9>>*/ next_char(ib) /*<<scanf.ml:183:21>>*/ ;
   }
   function checked_peek_char(ib){
    var c =  /*<<scanf.ml:192:12>>*/ peek_char(ib);
     /*<<scanf.ml:193:4>>*/ if(ib[1])
      /*<<scanf.ml:193:22>>*/ throw caml_maybe_attach_backtrace(Stdlib[12], 1);
     /*<<scanf.ml:194:4>>*/ return c;
    /*<<scanf.ml:194:5>>*/ }
   function end_of_input(ib){
     /*<<scanf.ml:198:11>>*/ peek_char(ib);
     /*<<scanf.ml:199:4>>*/ return ib[1];
    /*<<scanf.ml:199:13>>*/ }
   function beginning_of_input(ib){
     /*<<scanf.ml:204:30>>*/ return 0 === ib[4] ? 1 : 0;
    /*<<scanf.ml:204:50>>*/ }
   function name_of_input(ib){
    var match =  /*<<scanf.ml:207:4>>*/ ib[9];
    if(typeof match === "number")
     return 0 === match ? "unnamed function" : "unnamed character string" /*<<scanf.ml:211:47>>*/ ;
     /*<<scanf.ml:207:4>>*/ if(0 === match[0])
      /*<<scanf.ml:208:26>>*/ return "unnamed Stdlib input channel";
    var fname =  /*<<scanf.ml:207:4>>*/ match[1];
     /*<<scanf.ml:209:32>>*/ return fname;
    /*<<scanf.ml:211:47>>*/ }
   function char_count(ib){
     /*<<scanf.ml:215:4>>*/ return ib[3] ? ib[4] - 1 | 0 : ib[4] /*<<scanf.ml:217:25>>*/ ;
   }
   function invalidate_current_char(ib){
     /*<<scanf.ml:224:35>>*/ ib[3] = 0;
    return 0;
    /*<<scanf.ml:224:71>>*/ }
   function token_string(ib){
    var
     token_buffer =  /*<<scanf.ml:227:4>>*/ ib[8],
     tok =  /*<<scanf.ml:228:14>>*/ Stdlib_Buffer[2].call(null, token_buffer);
     /*<<scanf.ml:229:4>>*/ Stdlib_Buffer[8].call(null, token_buffer);
     /*<<scanf.ml:229:29>>*/ ib[6] = ib[6] + 1 | 0;
     /*<<scanf.ml:231:4>>*/ return tok;
    /*<<scanf.ml:231:7>>*/ }
   function ignore_char(width, ib){
    var width$0 =  /*<<scanf.ml:241:29>>*/ width - 1 | 0;
     /*<<scanf.ml:237:4>>*/ invalidate_current_char(ib);
     /*<<scanf.ml:237:30>>*/ return width$0;
    /*<<scanf.ml:241:53>>*/ }
   function store_char(width, ib, c){
     /*<<scanf.ml:244:4>>*/ Stdlib_Buffer[12].call(null, ib[8], c);
     /*<<scanf.ml:244:40>>*/ return ignore_char(width, ib) /*<<scanf.ml:245:24>>*/ ;
   }
   function create(iname, next){
     /*<<scanf.ml:258:22>>*/ return [0,
            0,
            null_char,
            0,
            0,
            0,
            0,
            next,
            Stdlib_Buffer[1].call(null, 1024),
            iname] /*<<scanf.ml:258:61>>*/ ;
    /*<<scanf.ml:260:3>>*/ }
   function from_string(s){
    var
     len =  /*<<scanf.ml:265:4>>*/ caml_ml_string_length(s),
     i =  /*<<scanf.ml:264:4>>*/ [0, 0];
    function next(param){
      /*<<scanf.ml:267:6>>*/ if(len <= i[1])
       /*<<scanf.ml:267:24>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[12], 1);
     var c =  /*<<scanf.ml:268:14>>*/ caml_string_get(s, i[1]);
      /*<<scanf.ml:269:6>>*/ i[1]++;
      /*<<scanf.ml:270:6>>*/ return c;
     /*<<scanf.ml:270:7>>*/ }
     /*<<scanf.ml:271:4>>*/ return create(1, next) /*<<scanf.ml:271:27>>*/ ;
   }
   function from_function(_av_){
     /*<<scanf.ml:274:22>>*/ return create(0, _av_);
   }
   function scan_close_at_end(ic){
     /*<<scanf.ml:320:29>>*/ Stdlib[93].call(null, ic);
     /*<<scanf.ml:320:47>>*/ throw caml_maybe_attach_backtrace(Stdlib[12], 1);
    /*<<scanf.ml:320:66>>*/ }
   function scan_raise_at_end(ic){
     /*<<scanf.ml:324:30>>*/ throw caml_maybe_attach_backtrace(Stdlib[12], 1);
    /*<<scanf.ml:324:47>>*/ }
   function from_ic(scan_close_ic, iname, ic){
    var
     buf =  /*<<scanf.ml:328:14>>*/ runtime.caml_create_bytes(1024),
     i =  /*<<scanf.ml:329:4>>*/ [0, 0],
     lim =  /*<<scanf.ml:330:4>>*/ [0, 0],
     eof =  /*<<scanf.ml:331:4>>*/ [0, 0];
    function next(param){
      /*<<scanf.ml:333:6>>*/ if(i[1] < lim[1]){
      var c =  /*<<scanf.ml:333:38>>*/ caml_bytes_get(buf, i[1]);
       /*<<scanf.ml:333:58>>*/ i[1]++;
       /*<<scanf.ml:333:66>>*/ return c;
     }
      /*<<scanf.ml:334:6>>*/ if(eof[1])
       /*<<scanf.ml:334:19>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[12], 1);
      /*<<scanf.ml:335:15>>*/ lim[1] = Stdlib[84].call(null, ic, buf, 0, 1024);
      /*<<scanf.ml:336:8>>*/ return 0 === lim[1]
             ? (eof
                [1]
               = 1,
                /*<<scanf.ml:336:44>>*/ caml_call1(scan_close_ic, ic))
             : (i[1] = 1,  /*<<scanf.ml:338:10>>*/ caml_bytes_get(buf, 0)) /*<<scanf.ml:340:9>>*/ ;
    }
     /*<<scanf.ml:341:4>>*/ return create(iname, next) /*<<scanf.ml:341:21>>*/ ;
   }
   var
    cst$0 =  /*<<?>>*/ "-",
    stdin =
       /*<<scanf.ml:363:4>>*/ from_ic
       (scan_raise_at_end, [1, cst$0, Stdlib[38]], Stdlib[38]);
   function open_in_file(open_in, fname){
     /*<<scanf.ml:367:4>>*/ if(fname === cst$0)
      /*<<scanf.ml:368:13>>*/ return stdin;
    var ic =  /*<<scanf.ml:370:15>>*/ caml_call1(open_in, fname);
     /*<<scanf.ml:344:29>>*/ return from_ic
            (scan_close_at_end, [1, fname, ic], ic) /*<<scanf.ml:371:53>>*/ ;
   }
   var _a_ =  /*<<scanf.ml:374:16>>*/ Stdlib[79];
   function open_in(_av_){return open_in_file(_a_, _av_);}
   var _b_ =  /*<<scanf.ml:375:51>>*/ Stdlib[80];
   function open_in_bin(_av_){
     /*<<scanf.ml:375:20>>*/ return open_in_file(_b_, _av_);
   }
   function from_channel(ic){
     /*<<scanf.ml:345:29>>*/ return from_ic(scan_raise_at_end, [0, ic], ic) /*<<scanf.ml:381:45>>*/ ;
   }
   function close_in(ib){
    var match =  /*<<scanf.ml:385:4>>*/ ib[9];
    if(typeof match === "number")  /*<<scanf.ml:389:37>>*/ return 0;
     /*<<scanf.ml:385:4>>*/ if(0 === match[0]){
     var ic = match[1];
      /*<<scanf.ml:387:6>>*/ return Stdlib[93].call(null, ic) /*<<scanf.ml:389:39>>*/ ;
    }
    var ic$0 =  /*<<scanf.ml:385:4>>*/ match[2];
     /*<<scanf.ml:388:32>>*/ return Stdlib[93].call(null, ic$0) /*<<scanf.ml:389:39>>*/ ;
   }
   var
    Scan_failure =
       /*<<scanf.ml:375:51>>*/ [248,
       "Stdlib.Scanf.Scan_failure",
       runtime.caml_fresh_oo_id(0)];
   function bad_input(s){
     /*<<scanf.ml:405:18>>*/ throw caml_maybe_attach_backtrace
           ([0, Scan_failure, s], 1);
    /*<<scanf.ml:405:40>>*/ }
   var
    _c_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11, "illegal escape character ", [1, 0]],
       "illegal escape character %C"];
   function bad_input_escape(c){
     /*<<scanf.ml:408:12>>*/ return  /*<<scanf.ml:408:60>>*/ bad_input
            ( /*<<scanf.ml:408:12>>*/ caml_call1
              (Stdlib_Printf[4].call(null, _c_), c)) /*<<scanf.ml:408:60>>*/ ;
   }
   var
    cst_scanning_of =  /*<<?>>*/ "scanning of ",
    _d_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11,
        cst_scanning_of,
        [2,
         0,
         [11, " failed: the specified length was too short for token", 0]]],
       "scanning of %s failed: the specified length was too short for token"];
   function bad_token_length(message){
     /*<<scanf.ml:413:4>>*/ return  /*<<scanf.ml:416:15>>*/ bad_input
            ( /*<<scanf.ml:413:4>>*/ caml_call1
              (Stdlib_Printf[4].call(null, _d_), message)) /*<<scanf.ml:416:15>>*/ ;
   }
   var
    cst_not_a_valid_float_in_hexad =
       /*<<?>>*/ "not a valid float in hexadecimal notation";
   function bad_hex_float(param){
     /*<<scanf.ml:432:2>>*/ return bad_input(cst_not_a_valid_float_in_hexad) /*<<scanf.ml:432:55>>*/ ;
   }
   var
    _f_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11, "looking for ", [1, [11, ", found ", [1, 0]]]],
       "looking for %C, found %C"];
   function character_mismatch(c, ci){
     /*<<scanf.ml:436:2>>*/ return  /*<<scanf.ml:440:41>>*/ bad_input
            ( /*<<scanf.ml:436:2>>*/ caml_call2
              (Stdlib_Printf[4].call(null, _f_), c, ci)) /*<<scanf.ml:440:41>>*/ ;
   }
   function check_char(ib, c$0){
     /*<<scanf.ml:468:2>>*/ if(10 === c$0){
     var ci =  /*<<scanf.ml:479:11>>*/ checked_peek_char(ib);
      /*<<scanf.ml:480:2>>*/ return 10 === ci
             ?  /*<<scanf.ml:481:12>>*/ invalidate_current_char(ib)
             : 13
               === ci
               ? ( /*<<scanf.ml:482:12>>*/ invalidate_current_char
                  (ib),
                  /*<<scanf.ml:482:47>>*/ check_this_char(ib, 10))
               :  /*<<scanf.ml:483:9>>*/ character_mismatch(10, ci) /*<<scanf.ml:471:29>>*/ ;
    }
     /*<<scanf.ml:468:2>>*/ if(32 !== c$0)
      /*<<scanf.ml:471:9>>*/ return check_this_char(ib, c$0) /*<<scanf.ml:471:29>>*/ ;
     /*<<scanf.ml:468:2>>*/ for(;;){
     var
      c =  /*<<scanf.ml:444:10>>*/ peek_char(ib),
      _av_ =  /*<<scanf.ml:445:26>>*/ 1 - ib[1];
     if(! _av_) return _av_;
     var _au_ =  /*<<scanf.ml:445:32>>*/ c - 9 | 0;
     a:
     {
      if(4 < _au_ >>> 0){
       if(23 !== _au_) break a;
      }
      else if(1 >= _au_ - 2 >>> 0) break a;
       /*<<scanf.ml:448:6>>*/ invalidate_current_char(ib);
      continue;
     }
      /*<<scanf.ml:449:11>>*/ return 0;
    }
    /*<<scanf.ml:471:29>>*/ }
   function check_this_char(ib, c){
    var ci =  /*<<scanf.ml:474:11>>*/ checked_peek_char(ib);
     /*<<scanf.ml:475:2>>*/ return ci === c
            ?  /*<<scanf.ml:475:17>>*/ invalidate_current_char(ib)
            :  /*<<scanf.ml:476:2>>*/ character_mismatch(c, ci) /*<<scanf.ml:476:25>>*/ ;
   }
   function token_char(ib){
     /*<<scanf.ml:488:20>>*/ return caml_string_get(token_string(ib), 0) /*<<scanf.ml:488:43>>*/ ;
   }
   var
    _g_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11, "invalid boolean '", [2, 0, [12, 39, 0]]],
       "invalid boolean '%s'"];
   function token_bool(ib){
    var s =  /*<<scanf.ml:493:8>>*/ token_string(ib);
     /*<<scanf.ml:493:25>>*/ return s !== "false"
            ? s
              !== "true"
              ?  /*<<scanf.ml:496:60>>*/ bad_input
                ( /*<<scanf.ml:496:19>>*/ caml_call1
                  (Stdlib_Printf[4].call(null, _g_), s))
              : 1
            : 0 /*<<scanf.ml:496:60>>*/ ;
   }
   var
    cst_scanf_ml =  /*<<?>>*/ "scanf.ml",
    _h_ =  /*<<scanf.ml:1002:59>>*/ [0, cst_scanf_ml, 516, 9];
   function integer_conversion_of_char(param){
    var switcher =  /*<<scanf.ml:509:33>>*/ param - 88 | 0;
    if(32 >= switcher >>> 0)
     switch(switcher){
       case 10:
         /*<<scanf.ml:510:11>>*/ return 0;
       case 12:
         /*<<scanf.ml:511:11>>*/ return 1;
       case 17:
         /*<<scanf.ml:512:11>>*/ return 2;
       case 23:
         /*<<scanf.ml:513:11>>*/ return 3;
       case 29:
         /*<<scanf.ml:514:11>>*/ return 4;
       case 0:
       case 32:
         /*<<scanf.ml:515:17>>*/ return 5;
     }
     /*<<scanf.ml:516:9>>*/ throw caml_maybe_attach_backtrace
           ([0, Assert_failure, _h_], 1);
    /*<<scanf.ml:516:21>>*/ }
   function token_int_literal(conv, ib){
     /*<<scanf.ml:523:2>>*/ switch(conv){
      case 0:
       var
        _ar_ =  /*<<scanf.ml:529:29>>*/ token_string(ib),
        tok =
           /*<<scanf.ml:529:46>>*/  /*<<scanf.ml:529:22>>*/ Stdlib[28].call
           (null, "0b", _ar_);
       break;
      case 3:
       var
        _as_ =  /*<<scanf.ml:527:29>>*/ token_string(ib),
        tok =
           /*<<scanf.ml:527:46>>*/  /*<<scanf.ml:527:22>>*/ Stdlib[28].call
           (null, "0o", _as_);
       break;
      case 4:
       var
        _at_ =  /*<<scanf.ml:526:29>>*/ token_string(ib),
        tok =
           /*<<scanf.ml:526:46>>*/  /*<<scanf.ml:526:22>>*/ Stdlib[28].call
           (null, "0u", _at_);
       break;
      case 5:
       var
        _au_ =  /*<<scanf.ml:528:29>>*/ token_string(ib),
        tok =
           /*<<scanf.ml:528:46>>*/  /*<<scanf.ml:528:22>>*/ Stdlib[28].call
           (null, "0x", _au_);
       break;
      default:
       var
        tok =
           /*<<scanf.ml:525:54>>*/  /*<<scanf.ml:525:37>>*/ token_string(ib);
    }
    var l =  /*<<scanf.ml:530:2>>*/ caml_ml_string_length(tok);
     /*<<scanf.ml:531:2>>*/ if
     (0 !== l && 43 ===  /*<<scanf.ml:531:14>>*/ caml_string_get(tok, 0))
      /*<<scanf.ml:531:43>>*/ return Stdlib_String[16].call
             (null, tok, 1, l - 1 | 0) /*<<scanf.ml:531:67>>*/ ;
     /*<<scanf.ml:531:34>>*/ return tok;
    /*<<scanf.ml:531:67>>*/ }
   function token_float(ib){
     /*<<scanf.ml:539:37>>*/ return  /*<<scanf.ml:539:21>>*/ runtime.caml_float_of_string
            ( /*<<scanf.ml:539:37>>*/ token_string(ib)) /*<<scanf.ml:539:56>>*/ ;
   }
   function scan_decimal_digit_star(width$2, ib){
    var width =  /*<<scanf.ml:575:2>>*/ width$2;
    for(;;){
     if(0 === width)  /*<<scanf.ml:575:20>>*/ return width;
     var c =  /*<<scanf.ml:576:10>>*/ peek_char(ib);
      /*<<scanf.ml:577:20>>*/ if(ib[1])  /*<<scanf.ml:577:26>>*/ return width;
      /*<<scanf.ml:578:2>>*/ if(58 <= c){
      if(95 === c){
       var width$0 =  /*<<scanf.ml:583:16>>*/ ignore_char(width, ib);
        /*<<scanf.ml:584:4>>*/ width = width$0;
       continue;
      }
     }
     else if(48 <= c){
      var width$1 =  /*<<scanf.ml:580:16>>*/ store_char(width, ib, c);
       /*<<scanf.ml:581:4>>*/ width = width$1;
      continue;
     }
      /*<<scanf.ml:585:9>>*/ return width;
    }
    /*<<scanf.ml:585:14>>*/ }
   var
    cst_character =  /*<<?>>*/ "character ",
    _i_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11, cst_character, [1, [11, " is not a decimal digit", 0]]],
       "character %C is not a decimal digit"];
   function scan_decimal_digit_plus(width, ib){
     /*<<scanf.ml:589:2>>*/ if(0 === width)
      /*<<scanf.ml:589:20>>*/ return bad_token_length("decimal digits") /*<<scanf.ml:596:70>>*/ ;
    var c =  /*<<scanf.ml:590:10>>*/ checked_peek_char(ib);
     /*<<scanf.ml:591:2>>*/ if(9 < c - 48 >>> 0)
      /*<<scanf.ml:596:14>>*/ return  /*<<scanf.ml:596:70>>*/ bad_input
             ( /*<<scanf.ml:596:14>>*/ caml_call1
               (Stdlib_Printf[4].call(null, _i_), c)) /*<<scanf.ml:596:70>>*/ ;
    var width$0 =  /*<<scanf.ml:593:16>>*/ store_char(width, ib, c);
     /*<<scanf.ml:594:4>>*/ return scan_decimal_digit_star(width$0, ib) /*<<scanf.ml:596:70>>*/ ;
   }
   var
    _j_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11,
        cst_character,
        [1, [11, " is not a valid ", [2, 0, [11, " digit", 0]]]]],
       "character %C is not a valid %s digit"];
   function scan_digit_plus(basis, digitp, width$2, ib){
     /*<<scanf.ml:620:2>>*/ if(0 === width$2)
      /*<<scanf.ml:620:20>>*/ return bad_token_length("digits") /*<<scanf.ml:626:77>>*/ ;
    var c$0 =  /*<<scanf.ml:621:10>>*/ checked_peek_char(ib);
     /*<<scanf.ml:622:5>>*/ if(! caml_call1(digitp, c$0))
      /*<<scanf.ml:626:14>>*/ return  /*<<scanf.ml:626:77>>*/ bad_input
             ( /*<<scanf.ml:626:14>>*/ caml_call2
               (Stdlib_Printf[4].call(null, _j_), c$0, basis)) /*<<scanf.ml:626:77>>*/ ;
    var
     width$3 =  /*<<scanf.ml:623:16>>*/ store_char(width$2, ib, c$0),
     width =  /*<<scanf.ml:614:2>>*/ width$3;
    for(;;){
      /*<<scanf.ml:603:4>>*/ if(0 === width)
       /*<<scanf.ml:603:22>>*/ return width;
     var c =  /*<<scanf.ml:604:12>>*/ peek_char(ib);
      /*<<scanf.ml:605:22>>*/ if(ib[1])  /*<<scanf.ml:605:28>>*/ return width;
      /*<<scanf.ml:607:13>>*/ if(caml_call1(digitp, c)){
      var width$0 =  /*<<scanf.ml:608:18>>*/ store_char(width, ib, c);
       /*<<scanf.ml:609:6>>*/ width = width$0;
     }
     else{
       /*<<scanf.ml:607:21>>*/ if(95 !== c)
        /*<<scanf.ml:613:11>>*/ return width;
      var width$1 =  /*<<scanf.ml:611:18>>*/ ignore_char(width, ib);
       /*<<scanf.ml:612:6>>*/ width = width$1;
     }
    }
    /*<<scanf.ml:626:77>>*/ }
   function is_binary_digit(param){
     /*<<scanf.ml:629:22>>*/ return 1 < param - 48 >>> 0 ? 0 : 1 /*<<scanf.ml:631:14>>*/ ;
   }
   function is_octal_digit(param){
     /*<<scanf.ml:636:21>>*/ return 7 < param - 48 >>> 0 ? 0 : 1 /*<<scanf.ml:638:14>>*/ ;
   }
   function is_hexa_digit(param){
    var _ar_ =  /*<<scanf.ml:643:20>>*/ param - 48 | 0;
    a:
    {
     if(22 < _ar_ >>> 0){
      if(5 < _ar_ - 49 >>> 0) break a;
     }
     else if(6 >= _ar_ - 10 >>> 0) break a;
      /*<<scanf.ml:644:44>>*/ return 1;
    }
     /*<<scanf.ml:645:9>>*/ return 0;
    /*<<scanf.ml:645:14>>*/ }
   function scan_sign(width, ib){
    var
     c =  /*<<scanf.ml:654:10>>*/ checked_peek_char(ib),
     switcher =  /*<<scanf.ml:655:2>>*/ c - 43 | 0;
    if(2 >= switcher >>> 0 && 1 !== switcher)
     return store_char(width, ib, c) /*<<scanf.ml:658:14>>*/ ;
     /*<<scanf.ml:658:9>>*/ return width;
    /*<<scanf.ml:658:14>>*/ }
   function scan_optionally_signed_decimal(width, ib){
    var width$0 =  /*<<scanf.ml:662:14>>*/ scan_sign(width, ib);
     /*<<scanf.ml:663:2>>*/ return scan_decimal_digit_plus(width$0, ib) /*<<scanf.ml:663:36>>*/ ;
   }
   var cst_hexadecimal =  /*<<?>>*/ "hexadecimal";
   function scan_int_conversion(conv, width$1, ib){
    var cst_binary = "binary", cst_octal = "octal";
     /*<<scanf.ml:691:2>>*/ switch(conv){
      case 0:
        /*<<scanf.ml:634:22>>*/ return scan_digit_plus
               (cst_binary, is_binary_digit, width$1, ib) /*<<scanf.ml:697:49>>*/ ;
      case 1:
        /*<<scanf.ml:693:20>>*/ return scan_optionally_signed_decimal
               (width$1, ib) /*<<scanf.ml:697:49>>*/ ;
      case 2:
       var
        width$0 =  /*<<scanf.ml:686:14>>*/ scan_sign(width$1, ib),
        c =  /*<<scanf.ml:671:8>>*/ checked_peek_char(ib);
        /*<<scanf.ml:671:37>>*/ if(48 !== c)
         /*<<scanf.ml:682:9>>*/ return scan_decimal_digit_plus(width$0, ib) /*<<scanf.ml:697:49>>*/ ;
       var width =  /*<<scanf.ml:673:16>>*/ store_char(width$0, ib, c);
        /*<<scanf.ml:674:4>>*/ if(0 === width)
         /*<<scanf.ml:674:22>>*/ return width;
       var c$0 =  /*<<scanf.ml:675:12>>*/ peek_char(ib);
        /*<<scanf.ml:676:22>>*/ if(ib[1])
         /*<<scanf.ml:676:28>>*/ return width;
       a:
       {
         /*<<scanf.ml:677:4>>*/ if(99 <= c$0){
         if(111 === c$0)
           /*<<scanf.ml:679:28>>*/ return  /*<<scanf.ml:641:21>>*/ scan_digit_plus
                  (cst_octal,
                   is_octal_digit,
                    /*<<scanf.ml:679:28>>*/ store_char(width, ib, c$0),
                   ib) /*<<scanf.ml:697:49>>*/ ;
          /*<<scanf.ml:677:4>>*/ if(120 !== c$0) break a;
        }
        else if(88 !== c$0){
         if(98 <= c$0)
           /*<<scanf.ml:680:29>>*/ return  /*<<scanf.ml:634:22>>*/ scan_digit_plus
                  (cst_binary,
                   is_binary_digit,
                    /*<<scanf.ml:680:29>>*/ store_char(width, ib, c$0),
                   ib) /*<<scanf.ml:697:49>>*/ ;
         break a;
        }
         /*<<scanf.ml:678:40>>*/ return  /*<<scanf.ml:648:27>>*/ scan_digit_plus
                (cst_hexadecimal,
                 is_hexa_digit,
                  /*<<scanf.ml:678:40>>*/ store_char(width, ib, c$0),
                 ib) /*<<scanf.ml:697:49>>*/ ;
       }
        /*<<scanf.ml:681:11>>*/ return scan_decimal_digit_star(width, ib) /*<<scanf.ml:697:49>>*/ ;
      case 3:
        /*<<scanf.ml:641:21>>*/ return scan_digit_plus
               (cst_octal, is_octal_digit, width$1, ib) /*<<scanf.ml:697:49>>*/ ;
      case 4:
        /*<<scanf.ml:696:20>>*/ return scan_decimal_digit_plus(width$1, ib) /*<<scanf.ml:697:49>>*/ ;
      default:
        /*<<scanf.ml:648:27>>*/ return scan_digit_plus
               (cst_hexadecimal, is_hexa_digit, width$1, ib) /*<<scanf.ml:697:49>>*/ ;
    }
   }
   function scan_fractional_part(width, ib){
     /*<<scanf.ml:704:2>>*/ if(0 === width)
      /*<<scanf.ml:704:20>>*/ return width;
    var c =  /*<<scanf.ml:705:10>>*/ peek_char(ib);
     /*<<scanf.ml:706:20>>*/ return ib[1]
            ? width
            : 9
              < c - 48 >>> 0
              ? width
              :  /*<<scanf.ml:709:60>>*/ scan_decimal_digit_star
                ( /*<<scanf.ml:709:28>>*/ store_char(width, ib, c), ib) /*<<scanf.ml:710:14>>*/ ;
   }
   function scan_exponent_part(width, ib){
     /*<<scanf.ml:715:2>>*/ if(0 === width)
      /*<<scanf.ml:715:20>>*/ return width;
    var c =  /*<<scanf.ml:716:10>>*/ peek_char(ib);
     /*<<scanf.ml:717:20>>*/ if(ib[1])  /*<<scanf.ml:717:26>>*/ return width;
     /*<<scanf.ml:718:2>>*/ if(69 !== c && 101 !== c)
      /*<<scanf.ml:721:9>>*/ return width;
     /*<<scanf.ml:720:39>>*/ return  /*<<scanf.ml:720:71>>*/ scan_optionally_signed_decimal
            ( /*<<scanf.ml:720:39>>*/ store_char(width, ib, c), ib) /*<<scanf.ml:721:14>>*/ ;
   }
   function scan_float(width$1, precision, ib){
    var
     width =  /*<<scanf.ml:729:14>>*/ scan_sign(width$1, ib),
     width$0 =  /*<<scanf.ml:730:2>>*/ scan_decimal_digit_star(width, ib);
     /*<<scanf.ml:766:2>>*/ if(0 === width$0)
      /*<<scanf.ml:766:20>>*/ return [0, width$0, precision];
    var c =  /*<<scanf.ml:767:10>>*/ peek_char(ib);
     /*<<scanf.ml:768:20>>*/ if(ib[1])
      /*<<scanf.ml:768:26>>*/ return [0, width$0, precision];
     /*<<scanf.ml:769:2>>*/ if(46 !== c)
      /*<<scanf.ml:776:4>>*/ return [0,
             scan_exponent_part(width$0, ib),
             precision] /*<<scanf.ml:776:31>>*/ ;
    var
     width$2 =  /*<<scanf.ml:771:16>>*/ store_char(width$0, ib, c),
     precision$0 =
        /*<<scanf.ml:772:20>>*/ Stdlib_Int[10].call(null, width$2, precision),
     width$3 =
        /*<<scanf.ml:773:37>>*/ width$2
       - (precision$0 - scan_fractional_part(precision$0, ib) | 0)
       | 0;
     /*<<scanf.ml:774:4>>*/ return [0,
            scan_exponent_part(width$3, ib),
            precision$0] /*<<scanf.ml:774:31>>*/ ;
    /*<<scanf.ml:776:42>>*/ }
   function check_case_insensitive_string(width, ib, error, str){
    function lowercase(c){
      /*<<scanf.ml:781:4>>*/ return 25 < c - 65 >>> 0
             ? c
             :  /*<<scanf.ml:783:6>>*/ Stdlib
                [29].call
               (null, (c - 65 | 0) + 97 | 0) /*<<scanf.ml:784:12>>*/ ;
    }
    var
     len =  /*<<scanf.ml:785:2>>*/ caml_ml_string_length(str),
     _ao_ =  /*<<scanf.ml:787:2>>*/ len - 1 | 0;
    if(_ao_ < 0)
     var width$1 = width;
    else{
     var width$0 = width, i = 0;
     for(;;){
      var
       c =  /*<<scanf.ml:788:12>>*/ peek_char(ib),
       _aq_ =
          /*<<scanf.ml:789:32>>*/  /*<<scanf.ml:789:22>>*/ lowercase
          ( /*<<scanf.ml:789:32>>*/ caml_string_get(str, i));
       /*<<scanf.ml:789:7>>*/ if(lowercase(c) !== _aq_)
        /*<<scanf.ml:789:45>>*/ caml_call1(error, 0);
       /*<<scanf.ml:790:4>>*/ if(0 === width$0)
        /*<<scanf.ml:790:23>>*/ caml_call1(error, 0);
      var
       _ap_ =  /*<<scanf.ml:791:13>>*/ store_char(width$0, ib, c),
       _ar_ =  /*<<scanf.ml:791:44>>*/ i + 1 | 0;
      if(_ao_ === i){var width$1 = _ap_; break;}
      width$0 = _ap_;
      i = _ar_;
     }
    }
     /*<<scanf.ml:793:2>>*/ return width$1;
    /*<<scanf.ml:793:8>>*/ }
   function scan_hex_float(width, precision, ib){
    var
     _ad_ =  /*<<scanf.ml:797:2>>*/ 0 === width,
     _ae_ = _ad_ ||  /*<<scanf.ml:797:18>>*/ end_of_input(ib);
     /*<<scanf.ml:797:2>>*/ if(_ae_)
      /*<<scanf.ml:432:2>>*/ bad_input(cst_not_a_valid_float_in_hexad);
    var
     width$0 =  /*<<scanf.ml:798:14>>*/ scan_sign(width, ib),
     _af_ =  /*<<scanf.ml:799:2>>*/ 0 === width$0,
     _ag_ = _af_ ||  /*<<scanf.ml:799:18>>*/ end_of_input(ib);
     /*<<scanf.ml:799:2>>*/ if(_ag_)
      /*<<scanf.ml:432:2>>*/ bad_input(cst_not_a_valid_float_in_hexad);
    var c =  /*<<scanf.ml:800:8>>*/ peek_char(ib);
    a:
    {
      /*<<scanf.ml:800:29>>*/ if(78 <= c){
      var switcher = c - 79 | 0;
      if(30 < switcher >>> 0){
       if(32 <= switcher) break a;
       var
        width$1 =  /*<<scanf.ml:830:16>>*/ store_char(width$0, ib, c),
        _ah_ =  /*<<scanf.ml:831:4>>*/ 0 === width$1,
        _ai_ = _ah_ ||  /*<<scanf.ml:831:20>>*/ end_of_input(ib);
        /*<<scanf.ml:831:4>>*/ if(_ai_)
         /*<<scanf.ml:432:2>>*/ bad_input(cst_not_a_valid_float_in_hexad);
        /*<<scanf.ml:832:4>>*/ return check_case_insensitive_string
               (width$1, ib, bad_hex_float, "an") /*<<scanf.ml:837:25>>*/ ;
      }
       /*<<scanf.ml:800:29>>*/ if(26 !== switcher) break a;
     }
     else{
      if(48 === c){
       var
        width$3 =  /*<<scanf.ml:802:16>>*/ store_char(width$0, ib, c),
        _al_ =  /*<<scanf.ml:803:4>>*/ 0 === width$3,
        _am_ = _al_ ||  /*<<scanf.ml:803:20>>*/ end_of_input(ib);
        /*<<scanf.ml:803:4>>*/ if(_am_)
         /*<<scanf.ml:432:2>>*/ bad_input(cst_not_a_valid_float_in_hexad);
       var
        width$4 =
           /*<<scanf.ml:804:16>>*/ check_case_insensitive_string
           (width$3, ib, bad_hex_float, "x");
        /*<<scanf.ml:805:4>>*/ if
        (0 !== width$4 && !  /*<<scanf.ml:805:20>>*/ end_of_input(ib)){
        var _ac_ =  /*<<scanf.ml:806:24>>*/ peek_char(ib) - 46 | 0;
        b:
        {
          /*<<scanf.ml:806:45>>*/ if(34 < _ac_ >>> 0){
          if(66 === _ac_){var width$5 = width$4; break b;}
         }
         else if(32 < _ac_ - 1 >>> 0){var width$5 = width$4; break b;}
         var
          width$5 =
             /*<<scanf.ml:808:44>>*/  /*<<scanf.ml:648:27>>*/ scan_digit_plus
             (cst_hexadecimal, is_hexa_digit, width$4, ib);
        }
         /*<<scanf.ml:809:6>>*/ if
         (0 !== width$5 && !  /*<<scanf.ml:809:22>>*/ end_of_input(ib)){
         var c$0 =  /*<<scanf.ml:810:26>>*/ peek_char(ib);
          /*<<scanf.ml:810:47>>*/ if(46 === c$0){
          var width$6 =  /*<<scanf.ml:812:24>>*/ store_char(width$5, ib, c$0);
           /*<<scanf.ml:813:12>>*/ if(0 === width$6)
           var width$7 = width$6;
          else if( /*<<scanf.ml:813:28>>*/ end_of_input(ib))
           var width$7 =  /*<<scanf.ml:813:52>>*/ width$6;
          else{
           var match =  /*<<scanf.ml:814:20>>*/ peek_char(ib);
            /*<<scanf.ml:814:41>>*/ if(80 === match || 112 === match)
            var width$7 = width$6;
           else
            var
             precision$0 =
                /*<<scanf.ml:817:32>>*/ Stdlib_Int[10].call
                (null, width$6, precision),
             width$7 =
                /*<<scanf.ml:818:70>>*/ width$6
               -
                (precision$0
                -
                  /*<<scanf.ml:648:27>>*/ scan_digit_plus
                  (cst_hexadecimal, is_hexa_digit, precision$0, ib)
                | 0)
               | 0;
          }
         }
         else
          var width$7 =  /*<<scanf.ml:810:47>>*/ width$5;
          /*<<scanf.ml:821:8>>*/ if
          (0 !== width$7 && !  /*<<scanf.ml:821:24>>*/ end_of_input(ib)){
          var c$1 =  /*<<scanf.ml:822:16>>*/ peek_char(ib);
           /*<<scanf.ml:822:37>>*/ if(80 !== c$1 && 112 !== c$1)
            /*<<scanf.ml:827:17>>*/ return width$7;
          var
           width$8 =  /*<<scanf.ml:824:24>>*/ store_char(width$7, ib, c$1),
           _an_ =  /*<<scanf.ml:825:12>>*/ 0 === width$8,
           _ao_ = _an_ ||  /*<<scanf.ml:825:28>>*/ end_of_input(ib);
           /*<<scanf.ml:825:12>>*/ if(_ao_)
            /*<<scanf.ml:432:2>>*/ bad_input(cst_not_a_valid_float_in_hexad);
           /*<<scanf.ml:826:12>>*/ return scan_optionally_signed_decimal
                  (width$8, ib) /*<<scanf.ml:837:25>>*/ ;
         }
          /*<<scanf.ml:821:54>>*/ return width$7;
        }
         /*<<scanf.ml:809:52>>*/ return width$5;
       }
        /*<<scanf.ml:805:50>>*/ return width$4;
      }
       /*<<scanf.ml:800:29>>*/ if(73 !== c) break a;
     }
     var
      width$2 =  /*<<scanf.ml:834:16>>*/ store_char(width$0, ib, c),
      _aj_ =  /*<<scanf.ml:835:4>>*/ 0 === width$2,
      _ak_ = _aj_ ||  /*<<scanf.ml:835:20>>*/ end_of_input(ib);
      /*<<scanf.ml:835:4>>*/ if(_ak_)
       /*<<scanf.ml:432:2>>*/ bad_input(cst_not_a_valid_float_in_hexad);
      /*<<scanf.ml:836:4>>*/ return check_case_insensitive_string
             (width$2, ib, bad_hex_float, "nfinity") /*<<scanf.ml:837:25>>*/ ;
    }
     /*<<scanf.ml:432:2>>*/ return bad_input(cst_not_a_valid_float_in_hexad) /*<<scanf.ml:837:25>>*/ ;
   }
   var
    cst_no_dot_or_exponent_part_fo =
       /*<<?>>*/ "no dot or exponent part found in float token";
   function scan_caml_float_rest(width, precision, ib){
    var
     _$_ =  /*<<scanf.ml:841:2>>*/ 0 === width,
     _aa_ = _$_ ||  /*<<scanf.ml:841:18>>*/ end_of_input(ib);
     /*<<scanf.ml:841:2>>*/ if(_aa_)
      /*<<scanf.ml:428:2>>*/ bad_input(cst_no_dot_or_exponent_part_fo);
    var
     width$0 =  /*<<scanf.ml:842:14>>*/ scan_decimal_digit_star(width, ib),
     _ab_ =  /*<<scanf.ml:843:2>>*/ 0 === width$0,
     _ac_ = _ab_ ||  /*<<scanf.ml:843:18>>*/ end_of_input(ib);
     /*<<scanf.ml:843:2>>*/ if(_ac_)
      /*<<scanf.ml:428:2>>*/ bad_input(cst_no_dot_or_exponent_part_fo);
    var
     c =  /*<<scanf.ml:844:10>>*/ peek_char(ib),
     switcher =  /*<<scanf.ml:845:2>>*/ c - 69 | 0;
    if(32 < switcher >>> 0){
     if(-23 === switcher){
      var
       width$1 =  /*<<scanf.ml:847:16>>*/ store_char(width$0, ib, c),
       precision$0 =
          /*<<scanf.ml:850:20>>*/ Stdlib_Int[10].call
          (null, width$1, precision),
       width_precision =
          /*<<scanf.ml:853:26>>*/ scan_fractional_part(precision$0, ib),
       frac_width =  /*<<scanf.ml:856:4>>*/ precision$0 - width_precision | 0,
       width$2 =  /*<<scanf.ml:858:4>>*/ width$1 - frac_width | 0;
       /*<<scanf.ml:859:4>>*/ return scan_exponent_part(width$2, ib) /*<<scanf.ml:862:21>>*/ ;
     }
    }
    else if(30 < switcher - 1 >>> 0)
      /*<<scanf.ml:861:4>>*/ return scan_exponent_part(width$0, ib) /*<<scanf.ml:862:21>>*/ ;
     /*<<scanf.ml:428:2>>*/ return bad_input(cst_no_dot_or_exponent_part_fo) /*<<scanf.ml:862:21>>*/ ;
   }
   function scan_caml_float(width, precision, ib){
    var
     _O_ =  /*<<scanf.ml:866:2>>*/ 0 === width,
     _P_ = _O_ ||  /*<<scanf.ml:866:18>>*/ end_of_input(ib);
     /*<<scanf.ml:866:2>>*/ if(_P_)
      /*<<scanf.ml:428:2>>*/ bad_input(cst_no_dot_or_exponent_part_fo);
    var
     width$0 =  /*<<scanf.ml:867:14>>*/ scan_sign(width, ib),
     _Q_ =  /*<<scanf.ml:868:2>>*/ 0 === width$0,
     _R_ = _Q_ ||  /*<<scanf.ml:868:18>>*/ end_of_input(ib);
     /*<<scanf.ml:868:2>>*/ if(_R_)
      /*<<scanf.ml:428:2>>*/ bad_input(cst_no_dot_or_exponent_part_fo);
    var c =  /*<<scanf.ml:869:8>>*/ peek_char(ib);
     /*<<scanf.ml:869:29>>*/ if(49 <= c){
     if(58 > c){
      var
       width$1 =  /*<<scanf.ml:903:16>>*/ store_char(width$0, ib, c),
       _S_ =  /*<<scanf.ml:904:4>>*/ 0 === width$1,
       _T_ = _S_ ||  /*<<scanf.ml:904:20>>*/ end_of_input(ib);
       /*<<scanf.ml:904:4>>*/ if(_T_)
        /*<<scanf.ml:428:2>>*/ bad_input(cst_no_dot_or_exponent_part_fo);
       /*<<scanf.ml:905:4>>*/ return scan_caml_float_rest
              (width$1, precision, ib) /*<<scanf.ml:910:21>>*/ ;
     }
    }
    else if(48 <= c){
     var
      width$2 =  /*<<scanf.ml:871:16>>*/ store_char(width$0, ib, c),
      _U_ =  /*<<scanf.ml:872:4>>*/ 0 === width$2,
      _V_ = _U_ ||  /*<<scanf.ml:872:20>>*/ end_of_input(ib);
      /*<<scanf.ml:872:4>>*/ if(_V_)
       /*<<scanf.ml:428:2>>*/ bad_input(cst_no_dot_or_exponent_part_fo);
     var c$0 =  /*<<scanf.ml:873:10>>*/ peek_char(ib);
      /*<<scanf.ml:873:31>>*/ if(88 !== c$0 && 120 !== c$0)
       /*<<scanf.ml:900:6>>*/ return scan_caml_float_rest
              (width$2, precision, ib) /*<<scanf.ml:910:21>>*/ ;
     var
      width$3 =  /*<<scanf.ml:875:18>>*/ store_char(width$2, ib, c$0),
      _W_ =  /*<<scanf.ml:876:6>>*/ 0 === width$3,
      _X_ = _W_ ||  /*<<scanf.ml:876:22>>*/ end_of_input(ib);
      /*<<scanf.ml:876:6>>*/ if(_X_)
       /*<<scanf.ml:428:2>>*/ bad_input(cst_no_dot_or_exponent_part_fo);
     var
      width$7 =
         /*<<scanf.ml:648:27>>*/ scan_digit_plus
         (cst_hexadecimal, is_hexa_digit, width$3, ib),
      _Y_ =  /*<<scanf.ml:878:6>>*/ 0 === width$7,
      _Z_ = _Y_ ||  /*<<scanf.ml:878:22>>*/ end_of_input(ib);
      /*<<scanf.ml:878:6>>*/ if(_Z_)
       /*<<scanf.ml:428:2>>*/ bad_input(cst_no_dot_or_exponent_part_fo);
     var
      c$1 =  /*<<scanf.ml:879:24>>*/ peek_char(ib),
      switcher =  /*<<scanf.ml:879:45>>*/ c$1 - 80 | 0;
     a:
     {
      if(32 < switcher >>> 0){
       if(-34 === switcher){
        var width$4 =  /*<<scanf.ml:881:22>>*/ store_char(width$7, ib, c$1);
         /*<<scanf.ml:882:10>>*/ if(0 === width$4){
         var width$5 = width$4;
         break a;
        }
         /*<<scanf.ml:882:26>>*/ if(end_of_input(ib)){
         var width$5 =  /*<<scanf.ml:882:50>>*/ width$4;
         break a;
        }
        var match =  /*<<scanf.ml:883:18>>*/ peek_char(ib);
         /*<<scanf.ml:883:39>>*/ if(80 === match){
         var width$5 = width$4;
         break a;
        }
        if(112 === match){var width$5 = width$4; break a;}
        var
         precision$0 =
            /*<<scanf.ml:886:30>>*/ Stdlib_Int[10].call
            (null, width$4, precision),
         width$5 =
            /*<<scanf.ml:887:68>>*/ width$4
           -
            (precision$0
            -
              /*<<scanf.ml:648:27>>*/ scan_digit_plus
              (cst_hexadecimal, is_hexa_digit, precision$0, ib)
            | 0)
           | 0;
        break a;
       }
      }
      else if(30 < switcher - 1 >>> 0){
       var width$5 =  /*<<scanf.ml:879:45>>*/ width$7;
       break a;
      }
      var
       width$5 =
          /*<<scanf.ml:890:27>>*/  /*<<scanf.ml:428:2>>*/ bad_input
          (cst_no_dot_or_exponent_part_fo);
     }
      /*<<scanf.ml:891:6>>*/ if
      (0 !== width$5 && !  /*<<scanf.ml:891:22>>*/ end_of_input(ib)){
      var c$2 =  /*<<scanf.ml:892:14>>*/ peek_char(ib);
       /*<<scanf.ml:892:35>>*/ if(80 !== c$2 && 112 !== c$2)
        /*<<scanf.ml:897:15>>*/ return width$5;
      var
       width$6 =  /*<<scanf.ml:894:22>>*/ store_char(width$5, ib, c$2),
       ___ =  /*<<scanf.ml:895:10>>*/ 0 === width$6,
       _$_ = ___ ||  /*<<scanf.ml:895:26>>*/ end_of_input(ib);
       /*<<scanf.ml:895:10>>*/ if(_$_)
        /*<<scanf.ml:432:2>>*/ bad_input(cst_not_a_valid_float_in_hexad);
       /*<<scanf.ml:896:10>>*/ return scan_optionally_signed_decimal
              (width$6, ib) /*<<scanf.ml:910:21>>*/ ;
     }
      /*<<scanf.ml:891:52>>*/ return width$5;
    }
     /*<<scanf.ml:428:2>>*/ return bad_input(cst_no_dot_or_exponent_part_fo) /*<<scanf.ml:910:21>>*/ ;
   }
   function scan_string(stp, width, ib){
    var width$0 =  /*<<scanf.ml:931:2>>*/ width;
    for(;;){
      /*<<scanf.ml:921:4>>*/ if(0 === width$0)
       /*<<scanf.ml:921:22>>*/ return width$0;
     var c =  /*<<scanf.ml:922:12>>*/ peek_char(ib);
      /*<<scanf.ml:923:22>>*/ if(ib[1])
       /*<<scanf.ml:923:28>>*/ return width$0;
      /*<<scanf.ml:924:6>>*/ if(stp){
      var c$0 = stp[1];
       /*<<scanf.ml:925:21>>*/ if(c === c$0){
        /*<<scanf.ml:237:4>>*/ invalidate_current_char(ib);
        /*<<scanf.ml:237:30>>*/ return width$0;
      }
      var width$1 =  /*<<scanf.ml:926:23>>*/ store_char(width$0, ib, c);
       /*<<scanf.ml:926:55>>*/ width$0 = width$1;
     }
     else{
      var _O_ =  /*<<scanf.ml:928:8>>*/ c - 9 | 0;
      a:
      {
       if(4 < _O_ >>> 0){
        if(23 !== _O_) break a;
       }
       else if(1 >= _O_ - 2 >>> 0) break a;
        /*<<scanf.ml:929:38>>*/ return width$0;
      }
      var width$2 =  /*<<scanf.ml:930:20>>*/ store_char(width$0, ib, c);
       /*<<scanf.ml:930:52>>*/ width$0 = width$2;
     }
    }
    /*<<scanf.ml:931:12>>*/ }
   function hexadecimal_value_of_char(c){
     /*<<scanf.ml:975:2>>*/ return 97 <= c
            ? c - 87 | 0
            : 65 <= c ? c - 55 | 0 : c - 48 | 0 /*<<scanf.ml:979:23>>*/ ;
   }
   var
    _e_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11,
        cst_scanning_of,
        [2,
         0,
         [11,
          " failed: premature end of file occurred before end of token",
          0]]],
       "scanning of %s failed: premature end of file occurred before end of token"];
   function check_next_char(message, width, ib){
     /*<<scanf.ml:995:2>>*/ if(0 === width)
      /*<<scanf.ml:995:20>>*/ return bad_token_length(message) /*<<scanf.ml:998:3>>*/ ;
    var c =  /*<<scanf.ml:996:10>>*/ peek_char(ib);
     /*<<scanf.ml:997:20>>*/ return ib[1]
            ?  /*<<scanf.ml:424:15>>*/ bad_input
              ( /*<<scanf.ml:421:4>>*/ caml_call1
                (Stdlib_Printf[4].call(null, _e_), message))
            : c /*<<scanf.ml:998:3>>*/ ;
   }
   var
    cst_a_Char =  /*<<?>>*/ "a Char",
    _k_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11, "bad character decimal encoding \\", [0, [0, [0, 0]]]],
       "bad character decimal encoding \\%c%c%c"],
    _l_ =
      [0,
       [11, "bad character hexadecimal encoding \\", [0, [0, 0]]],
       "bad character hexadecimal encoding \\%c%c"];
   function scan_backslash_char(width, ib){
    var c0 =  /*<<scanf.ml:1001:31>>*/ check_next_char(cst_a_Char, width, ib);
    a:
    {
      /*<<scanf.ml:1005:41>>*/ if(40 <= c0){
      if(58 > c0){
       if(48 > c0) break a;
       var
        get_digit$0 =
           /*<<scanf.ml:1009:4>>*/ function(param){
           var c =  /*<<scanf.ml:1010:14>>*/ next_char(ib);
            /*<<scanf.ml:1011:6>>*/ return 9 < c - 48 >>> 0
                   ?  /*<<scanf.ml:1013:13>>*/ bad_input_escape(c)
                   : c /*<<scanf.ml:1013:31>>*/ ;
          },
        c1$0 =  /*<<scanf.ml:1015:13>>*/ get_digit$0(0),
        c2$0 =  /*<<scanf.ml:1016:13>>*/ get_digit$0(0),
        c =
           /*<<scanf.ml:956:34>>*/ ((100 * (c0 - 48 | 0) | 0)
          + (10 * (c1$0 - 48 | 0) | 0)
          | 0)
          + (c2$0 - 48 | 0)
          | 0;
       b:
       {
         /*<<scanf.ml:959:2>>*/ if(0 <= c && 255 >= c){
         var _N_ =  /*<<scanf.ml:963:2>>*/ Stdlib[29].call(null, c);
         break b;
        }
        var
         _N_ =
            /*<<scanf.ml:962:60>>*/ bad_input
            ( /*<<scanf.ml:961:6>>*/ caml_call3
              (Stdlib_Printf[4].call(null, _k_), c0, c1$0, c2$0));
       }
        /*<<scanf.ml:1017:71>>*/ return store_char(width - 2 | 0, ib, _N_) /*<<scanf.ml:1028:22>>*/ ;
      }
      var switcher =  /*<<scanf.ml:1005:41>>*/ c0 - 92 | 0;
      if(28 < switcher >>> 0) break a;
      switch(switcher){
        case 28:
         var
          get_digit =
             /*<<scanf.ml:1019:4>>*/ function(param){
             var
              c =  /*<<scanf.ml:1020:14>>*/ next_char(ib),
              _O_ =  /*<<scanf.ml:1021:6>>*/ c - 48 | 0;
             a:
             {
              if(22 < _O_ >>> 0){
               if(5 < _O_ - 49 >>> 0) break a;
              }
              else if(6 >= _O_ - 10 >>> 0) break a;
               /*<<scanf.ml:1022:53>>*/ return c;
             }
              /*<<scanf.ml:1023:13>>*/ return bad_input_escape(c) /*<<scanf.ml:1023:31>>*/ ;
            },
          c1 =  /*<<scanf.ml:1024:13>>*/ get_digit(0),
          c2 =  /*<<scanf.ml:1025:13>>*/ get_digit(0),
          _O_ =  /*<<scanf.ml:985:9>>*/ hexadecimal_value_of_char(c2),
          c$0 =
             /*<<scanf.ml:984:9>>*/ (16 * hexadecimal_value_of_char(c1) | 0)
            + _O_
            | 0;
         b:
         {
           /*<<scanf.ml:986:2>>*/ if(0 <= c$0 && 255 >= c$0){
           var _M_ =  /*<<scanf.ml:989:2>>*/ Stdlib[29].call(null, c$0);
           break b;
          }
          var
           _M_ =
              /*<<scanf.ml:988:72>>*/ bad_input
              ( /*<<scanf.ml:988:6>>*/ caml_call2
                (Stdlib_Printf[4].call(null, _l_), c1, c2));
         }
          /*<<scanf.ml:1026:72>>*/ return store_char(width - 2 | 0, ib, _M_) /*<<scanf.ml:1028:22>>*/ ;
        case 0:
        case 6:
        case 18:
        case 22:
        case 24: break;
        default: break a;
      }
     }
     else if(34 !== c0 && 39 > c0) break a;
      /*<<scanf.ml:942:25>>*/ if(110 <= c0)
      if(117 <= c0)
       var _L_ = c0;
      else
       switch(c0 - 110 | 0){
         case 0:
          var _L_ =  /*<<scanf.ml:943:11>>*/ 10; break;
         case 4:
          var _L_ =  /*<<scanf.ml:944:11>>*/ 13; break;
         case 6:
          var _L_ =  /*<<scanf.ml:946:11>>*/ 9; break;
         default: var _L_ =  /*<<scanf.ml:942:25>>*/ c0;
       }
     else
      var _L_ = 98 === c0 ? 8 : c0;
      /*<<scanf.ml:1007:55>>*/ return store_char(width, ib, _L_) /*<<scanf.ml:1028:22>>*/ ;
    }
     /*<<scanf.ml:1028:4>>*/ return bad_input_escape(c0) /*<<scanf.ml:1028:22>>*/ ;
   }
   function scan_caml_string(width, ib){
    var cst_a_String =  /*<<?>>*/ "a String";
    function find_stop$0(counter, width$5){
     var width =  /*<<scanf.ml:1002:33>>*/ width$5;
     for(;;){
      var c = check_next_char(cst_a_String, width, ib);
       /*<<scanf.ml:1063:45>>*/ if(34 === c)
        /*<<scanf.ml:1064:14>>*/ return ignore_char(width, ib) /*<<scanf.ml:1066:53>>*/ ;
       /*<<scanf.ml:1063:45>>*/ if(92 === c){
       var
        width$0 =  /*<<scanf.ml:1065:29>>*/ ignore_char(width, ib),
        match =
           /*<<scanf.ml:1002:33>>*/ check_next_char(cst_a_String, width$0, ib);
        /*<<scanf.ml:1069:45>>*/ if(10 === match){
        var _K_ =  /*<<scanf.ml:1071:26>>*/ ignore_char(width$0, ib);
         /*<<scanf.ml:1071:57>>*/ return counter < 50
                ? skip_spaces(counter + 1 | 0, _K_)
                : caml_trampoline_return(skip_spaces, [0, _K_]) /*<<scanf.ml:1066:53>>*/ ;
       }
        /*<<scanf.ml:1069:45>>*/ if(13 === match){
        var width$2 =  /*<<scanf.ml:1070:27>>*/ ignore_char(width$0, ib);
         /*<<scanf.ml:1002:33>>*/ if
         (10 === check_next_char(cst_a_String, width$2, ib)){
         var _L_ =  /*<<scanf.ml:1076:26>>*/ ignore_char(width$2, ib);
          /*<<scanf.ml:1076:57>>*/ return counter < 50
                 ? skip_spaces(counter + 1 | 0, _L_)
                 : caml_trampoline_return(skip_spaces, [0, _L_]) /*<<scanf.ml:1066:53>>*/ ;
        }
        var width$4 =  /*<<scanf.ml:1077:21>>*/ store_char(width$2, ib, 13);
         /*<<scanf.ml:1077:56>>*/ width = width$4;
       }
       else{
        var
         width$3 =  /*<<scanf.ml:1072:21>>*/ scan_backslash_char(width$0, ib);
         /*<<scanf.ml:1072:51>>*/ width = width$3;
       }
      }
      else{
       var width$1 =  /*<<scanf.ml:1066:21>>*/ store_char(width, ib, c);
        /*<<scanf.ml:1066:53>>*/ width = width$1;
      }
     }
    }
    function find_stop(width){
      /*<<scanf.ml:1002:33>>*/ return  /*<<?>>*/ caml_trampoline
             ( /*<<scanf.ml:1002:33>>*/ find_stop$0(0, width)) /*<<scanf.ml:1066:53>>*/ ;
    }
    function skip_spaces(counter, width$1){
     var width =  /*<<scanf.ml:1002:33>>*/ width$1;
     for(;;){
      if(32 !== check_next_char(cst_a_String, width, ib))
        /*<<scanf.ml:1082:11>>*/ return counter < 50
               ? find_stop$0(counter + 1 | 0, width)
               : caml_trampoline_return(find_stop$0, [0, width]) /*<<scanf.ml:1082:26>>*/ ;
      var width$0 =  /*<<scanf.ml:1081:25>>*/ ignore_char(width, ib);
       /*<<scanf.ml:1081:56>>*/ width = width$0;
     }
     /*<<scanf.ml:1082:26>>*/ }
    var c =  /*<<scanf.ml:1058:10>>*/ checked_peek_char(ib);
     /*<<scanf.ml:1058:39>>*/ return 34 === c
            ?  /*<<scanf.ml:1059:55>>*/ find_stop
              ( /*<<scanf.ml:1059:24>>*/ ignore_char(width, ib))
            :  /*<<scanf.ml:1060:11>>*/ character_mismatch(34, c) /*<<scanf.ml:1084:18>>*/ ;
   }
   function scan_chars_in_char_set(char_set, scan_indic, width, ib){
    function scan_chars(i$1, stp){
     var i =  /*<<scanf.ml:1104:12>>*/ i$1;
     for(;;){
      var c = peek_char(ib), _I_ =  /*<<scanf.ml:1105:4>>*/ 0 < i ? 1 : 0;
      if(_I_){
       var _J_ =  /*<<scanf.ml:1105:37>>*/ 1 - ib[1];
       if(_J_)
        var
         _K_ =
            /*<<scanf.ml:1106:7>>*/ CamlinternalFormat[1].call
            (null, char_set, c),
         _H_ =  /*<<scanf.ml:1106:32>>*/ _K_ ? c !== stp ? 1 : 0 : _K_;
       else
        var _H_ =  /*<<scanf.ml:1105:37>>*/ _J_;
      }
      else
       var _H_ =  /*<<scanf.ml:1105:4>>*/ _I_;
      if(! _H_) return _H_;
       /*<<scanf.ml:1108:14>>*/ store_char(Stdlib[19], ib, c);
      var i$0 =  /*<<scanf.ml:1108:46>>*/ i - 1 | 0;
      i = i$0;
     }
     /*<<scanf.ml:1109:28>>*/ }
     /*<<scanf.ml:1110:2>>*/ if(! scan_indic)
      /*<<scanf.ml:1111:12>>*/ return scan_chars(width, -1) /*<<scanf.ml:1118:34>>*/ ;
    var c =  /*<<scanf.ml:1110:2>>*/ scan_indic[1];
     /*<<scanf.ml:1113:4>>*/ scan_chars(width, c);
    var _H_ =  /*<<scanf.ml:1114:28>>*/ 1 - ib[1];
    if(! _H_) return _H_;
    var ci =  /*<<scanf.ml:1115:15>>*/ peek_char(ib);
     /*<<scanf.ml:1116:6>>*/ return c === ci
            ?  /*<<scanf.ml:1117:11>>*/ invalidate_current_char(ib)
            :  /*<<scanf.ml:1118:11>>*/ character_mismatch(c, ci) /*<<scanf.ml:1118:34>>*/ ;
   }
   var
    _n_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11,
        "scanf: bad input at char number ",
        [4, 3, 0, 0, [11, ": ", [2, 0, 0]]]],
       "scanf: bad input at char number %i: %s"];
   function scanf_bad_input(ib, x){
     /*<<scanf.ml:1122:20>>*/ if(x[1] === Scan_failure)
     var s = x[2];
    else{
     if(x[1] !== Stdlib[7])
       /*<<scanf.ml:1126:9>>*/ throw caml_maybe_attach_backtrace(x, 1);
     var s =  /*<<scanf.ml:1122:20>>*/ x[2];
    }
    var i =  /*<<scanf.ml:1124:12>>*/ char_count(ib);
     /*<<scanf.ml:1125:14>>*/ return  /*<<scanf.ml:1125:75>>*/ bad_input
            ( /*<<scanf.ml:1125:14>>*/ caml_call2
              (Stdlib_Printf[4].call(null, _n_), i, s)) /*<<scanf.ml:1126:16>>*/ ;
   }
   function width_of_pad_opt(pad_opt){
     /*<<scanf.ml:1138:31>>*/ if(! pad_opt)
      /*<<scanf.ml:1139:12>>*/ return Stdlib[19];
    var width =  /*<<scanf.ml:1138:31>>*/ pad_opt[1];
     /*<<scanf.ml:1140:18>>*/ return width;
    /*<<scanf.ml:1140:23>>*/ }
   var _o_ =  /*<<scanf.ml:1002:59>>*/ [0, 37, ""];
   function stopper_of_formatting_lit(fmting){
     /*<<scanf.ml:1144:2>>*/ if(6 === fmting)
      /*<<scanf.ml:1144:35>>*/ return _o_;
    var
     str =  /*<<scanf.ml:1145:14>>*/ CamlinternalFormat[17].call(null, fmting),
     stp =  /*<<scanf.ml:1146:14>>*/ caml_string_get(str, 1),
     sub_str =
        /*<<scanf.ml:1147:4>>*/  /*<<scanf.ml:1147:18>>*/ Stdlib_String[16].call
        (null,
         str,
         2,
          /*<<scanf.ml:1147:4>>*/ caml_ml_string_length(str) - 2 | 0);
     /*<<scanf.ml:1148:4>>*/ return [0, stp, sub_str];
    /*<<scanf.ml:1148:16>>*/ }
   function take_format_readers$0(counter, k, fmt$4){
    a:
    {
     var fmt =  /*<<scanf.ml:1161:13>>*/ fmt$4;
     b:
     for(;;){
      if(typeof fmt === "number")
        /*<<scanf.ml:1198:40>>*/ return caml_call1(k, 0) /*<<scanf.ml:1198:45>>*/ ;
       /*<<scanf.ml:1161:13>>*/ switch(fmt[0]){
        case 14:
         var
          rest$3 = fmt[3],
          fmtty = fmt[2],
          _H_ =
             /*<<scanf.ml:1195:44>>*/ CamlinternalFormat[21].call(null, fmtty),
          _G_ =
             /*<<scanf.ml:1195:33>>*/ CamlinternalFormatBasics[2].call
             (null, _H_);
          /*<<scanf.ml:1195:57>>*/ return counter < 50
                 ? take_fmtty_format_readers$0
                   (counter + 1 | 0, k, _G_, rest$3)
                 : caml_trampoline_return
                   (take_fmtty_format_readers$0, [0, k, _G_, rest$3]) /*<<scanf.ml:1198:45>>*/ ;
        case 18:
         var _F_ =  /*<<scanf.ml:1161:13>>*/ fmt[1];
         if(0 === _F_[0]){
          var
           rest$4 = fmt[2],
           fmt$0 = _F_[1][1],
           fmt$1 =
              /*<<scanf.ml:1189:28>>*/ CamlinternalFormatBasics[3].call
              (null, fmt$0, rest$4);
           /*<<scanf.ml:1189:49>>*/ fmt = fmt$1;
         }
         else{
          var
           rest$5 =  /*<<scanf.ml:1161:13>>*/ fmt[2],
           fmt$2 = _F_[1][1],
           fmt$3 =
              /*<<scanf.ml:1191:28>>*/ CamlinternalFormatBasics[3].call
              (null, fmt$2, rest$5);
           /*<<scanf.ml:1191:49>>*/ fmt = fmt$3;
         }
         break;
        case 19:
         break a;
        case 23:
         var rest$6 =  /*<<scanf.ml:1161:13>>*/ fmt[2], ign = fmt[1];
          /*<<scanf.ml:1234:17>>*/ if(typeof ign === "number"){
          if(2 === ign) break b;
          fmt = rest$6;
         }
         else{
          if(9 === ign[0]){
           var fmtty$0 = ign[2];
            /*<<scanf.ml:1250:39>>*/ return counter < 50
                   ? take_fmtty_format_readers$0
                     (counter + 1 | 0, k, fmtty$0, rest$6)
                   : caml_trampoline_return
                     (take_fmtty_format_readers$0, [0, k, fmtty$0, rest$6]) /*<<scanf.ml:1198:45>>*/ ;
          }
           /*<<scanf.ml:1234:17>>*/ fmt = rest$6;
         }
         break;
        case 13:
        case 20:
        case 24:
         var rest$2 =  /*<<scanf.ml:1161:13>>*/ fmt[3]; fmt = rest$2; break;
        case 4:
        case 5:
        case 6:
        case 7:
        case 8:
         var rest$1 = fmt[4]; fmt = rest$1; break;
        case 0:
        case 1:
        case 10:
        case 15:
        case 16:
        case 22:
         var rest = fmt[1]; fmt = rest; break;
        default: var rest$0 = fmt[2]; fmt = rest$0;
      }
     }
      /*<<scanf.ml:1236:4>>*/ return function(reader){
      function new_k(readers_rest){
        /*<<scanf.ml:1237:31>>*/ return caml_call1
               (k, [0, reader, readers_rest]) /*<<scanf.ml:1237:62>>*/ ;
      }
       /*<<scanf.ml:1238:6>>*/ return take_format_readers(new_k, rest$6) /*<<scanf.ml:1238:35>>*/ ;} /*<<scanf.ml:1236:4>>*/ ;
    }
    var fmt_rest =  /*<<scanf.ml:1161:13>>*/ fmt[1];
     /*<<scanf.ml:1163:4>>*/ return function(reader){
     function new_k(readers_rest){
       /*<<scanf.ml:1164:31>>*/ return caml_call1
              (k, [0, reader, readers_rest]) /*<<scanf.ml:1164:62>>*/ ;
     }
      /*<<scanf.ml:1165:6>>*/ return take_format_readers(new_k, fmt_rest) /*<<scanf.ml:1165:40>>*/ ;} /*<<scanf.ml:1163:4>>*/ ;
    /*<<scanf.ml:1198:45>>*/ }
   function take_format_readers(k, fmt){
     /*<<scanf.ml:1161:13>>*/ return  /*<<?>>*/ caml_trampoline
            ( /*<<scanf.ml:1161:13>>*/ take_format_readers$0(0, k, fmt)) /*<<scanf.ml:1198:45>>*/ ;
   }
   function take_fmtty_format_readers$0(counter, k, fmtty$3, fmt){
    a:
    {
     var fmtty =  /*<<scanf.ml:1204:19>>*/ fmtty$3;
     b:
     for(;;){
      if(typeof fmtty === "number")
        /*<<scanf.ml:1225:35>>*/ return counter < 50
               ? take_format_readers$0(counter + 1 | 0, k, fmt)
               : caml_trampoline_return(take_format_readers$0, [0, k, fmt]) /*<<scanf.ml:1228:58>>*/ ;
       /*<<scanf.ml:1204:19>>*/ switch(fmtty[0]){
        case 8:
         var fmtty$1 = fmtty[2];
          /*<<scanf.ml:1224:35>>*/ fmtty = fmtty$1;
         break;
        case 9:
         var
          rest =  /*<<scanf.ml:1204:19>>*/ fmtty[3],
          ty2 = fmtty[2],
          ty1 = fmtty[1],
          _F_ =
             /*<<scanf.ml:1227:19>>*/ CamlinternalFormat[21].call(null, ty1),
          ty =
             /*<<scanf.ml:1227:13>>*/ CamlinternalFormat[22].call
             (null, _F_, ty2),
          fmtty$2 =
             /*<<scanf.ml:1228:32>>*/ CamlinternalFormatBasics[1].call
             (null, ty, rest);
          /*<<scanf.ml:1228:54>>*/ fmtty = fmtty$2;
         break;
        case 13:
         break a;
        case 14:
         break b;
        default:
         var fmtty$0 =  /*<<scanf.ml:1204:19>>*/ fmtty[1]; fmtty = fmtty$0;
      }
     }
     var fmt_rest$0 = fmtty[1];
      /*<<scanf.ml:1210:4>>*/ return function(reader){
      function new_k(readers_rest){
        /*<<scanf.ml:1211:31>>*/ return caml_call1
               (k, [0, reader, readers_rest]) /*<<scanf.ml:1211:62>>*/ ;
      }
       /*<<scanf.ml:1212:6>>*/ return take_fmtty_format_readers
              (new_k, fmt_rest$0, fmt) /*<<scanf.ml:1212:50>>*/ ;} /*<<scanf.ml:1210:4>>*/ ;
    }
    var fmt_rest =  /*<<scanf.ml:1204:19>>*/ fmtty[1];
     /*<<scanf.ml:1206:4>>*/ return function(reader){
     function new_k(readers_rest){
       /*<<scanf.ml:1207:31>>*/ return caml_call1
              (k, [0, reader, readers_rest]) /*<<scanf.ml:1207:62>>*/ ;
     }
      /*<<scanf.ml:1208:6>>*/ return take_fmtty_format_readers
             (new_k, fmt_rest, fmt) /*<<scanf.ml:1208:50>>*/ ;} /*<<scanf.ml:1206:4>>*/ ;
    /*<<scanf.ml:1228:58>>*/ }
   function take_fmtty_format_readers(k, fmtty, fmt){
     /*<<scanf.ml:1204:19>>*/ return  /*<<?>>*/ caml_trampoline
            ( /*<<scanf.ml:1204:19>>*/ take_fmtty_format_readers$0
              (0, k, fmtty, fmt)) /*<<scanf.ml:1228:58>>*/ ;
   }
   var
    _m_ =
       /*<<scanf.ml:1002:59>>*/ [0,
       [11, "the character ", [1, [11, " cannot start a boolean", 0]]],
       "the character %C cannot start a boolean"],
    _p_ = [0, 123],
    _q_ = [0, 91],
    _r_ = [0, cst_scanf_ml, 1414, 13];
   function make_scanf(ib, fmt$13, readers){
    a:
    {
     b:
     {
      c:
      {
       d:
       {
        e:
        {
         f:
         {
          g:
          {
           h:
           {
            i:
            {
             var fmt =  /*<<scanf.ml:1266:22>>*/ fmt$13;
             j:
             for(;;){
              if(typeof fmt === "number")  /*<<scanf.ml:1418:4>>*/ return 0;
               /*<<scanf.ml:1266:22>>*/ switch(fmt[0]){
                case 0:
                 var rest = fmt[1];
                  /*<<scanf.ml:939:31>>*/  /*<<scanf.ml:939:62>>*/ store_char
                  (0, ib,  /*<<scanf.ml:939:31>>*/ checked_peek_char(ib));
                 var c$0 =  /*<<scanf.ml:1269:12>>*/ token_char(ib);
                  /*<<scanf.ml:1270:13>>*/ return [0,
                         c$0,
                         make_scanf(ib, rest, readers)] /*<<scanf.ml:1270:39>>*/ ;
                case 1:
                 break a;
                case 2:
                 break b;
                case 3:
                 break c;
                case 4:
                 break d;
                case 5:
                 break e;
                case 6:
                 break f;
                case 7:
                 break g;
                case 8:
                  /*<<scanf.ml:1266:22>>*/ switch(fmt[1][2]){
                   case 5:
                   case 8:
                    var rest$11 = fmt[4], prec$4 = fmt[3], pad$6 = fmt[2];
                     /*<<scanf.ml:1313:4>>*/ return pad_prec_scanf
                            (ib,
                             rest$11,
                             readers,
                             pad$6,
                             prec$4,
                             scan_caml_float,
                             token_float) /*<<scanf.ml:1418:7>>*/ ;
                   case 6:
                   case 7:
                    var
                     rest$12 =  /*<<scanf.ml:1266:22>>*/ fmt[4],
                     prec$5 = fmt[3],
                     pad$7 = fmt[2];
                     /*<<scanf.ml:1318:4>>*/ return pad_prec_scanf
                            (ib,
                             rest$12,
                             readers,
                             pad$7,
                             prec$5,
                             scan_hex_float,
                             token_float) /*<<scanf.ml:1418:7>>*/ ;
                   default:
                    var
                     rest$10 =  /*<<scanf.ml:1266:22>>*/ fmt[4],
                     prec$3 = fmt[3],
                     pad$5 = fmt[2];
                     /*<<scanf.ml:1316:4>>*/ return pad_prec_scanf
                            (ib,
                             rest$10,
                             readers,
                             pad$5,
                             prec$3,
                             scan_float,
                             token_float) /*<<scanf.ml:1418:7>>*/ ;
                 }
                case 9:
                 break h;
                case 10:
                 var rest$14 =  /*<<scanf.ml:1266:22>>*/ fmt[1];
                  /*<<scanf.ml:1337:7>>*/ if(! end_of_input(ib))
                   /*<<scanf.ml:1338:9>>*/ return bad_input
                          ("end of input not found") /*<<scanf.ml:1418:7>>*/ ;
                  /*<<scanf.ml:1337:31>>*/ fmt = rest$14;
                 break;
                case 11:
                 var
                  rest$15 =  /*<<scanf.ml:1266:22>>*/ fmt[2],
                  str$0 = fmt[1];
                  /*<<scanf.ml:1341:4>>*/ Stdlib_String[30].call
                  (null,
                   function(_F_){
                     /*<<scanf.ml:1341:16>>*/ return check_char(ib, _F_);
                   },
                   str$0);
                  /*<<scanf.ml:1341:35>>*/ fmt = rest$15;
                 break;
                case 12:
                 var rest$16 =  /*<<scanf.ml:1266:22>>*/ fmt[2], chr = fmt[1];
                  /*<<scanf.ml:1344:4>>*/ check_char(ib, chr);
                  /*<<scanf.ml:1344:21>>*/ fmt = rest$16;
                 break;
                case 13:
                 var
                  rest$17 =  /*<<scanf.ml:1266:22>>*/ fmt[3],
                  fmtty = fmt[2],
                  pad_opt = fmt[1];
                  /*<<scanf.ml:1348:29>>*/  /*<<scanf.ml:1348:12>>*/ scan_caml_string
                  ( /*<<scanf.ml:1348:29>>*/ width_of_pad_opt(pad_opt), ib);
                 var s =  /*<<scanf.ml:1349:12>>*/ token_string(ib);
                  /*<<scanf.ml:1350:4>>*/ try{
                  var
                   _A_ =
                      /*<<scanf.ml:1351:10>>*/ CamlinternalFormat[14].call
                      (null, s, fmtty),
                   fmt$2 = _A_;
                 }
                 catch(exn$0){
                  var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
                  if(exn[1] !== Stdlib[7])
                   throw caml_maybe_attach_backtrace(exn, 0);
                  var
                   msg = exn[2],
                   fmt$2 =
                      /*<<scanf.ml:1352:39>>*/  /*<<scanf.ml:1352:26>>*/ bad_input
                      (msg);
                 }
                  /*<<scanf.ml:1354:15>>*/ return [0,
                         fmt$2,
                         make_scanf(ib, rest$17, readers)] /*<<scanf.ml:1354:41>>*/ ;
                case 14:
                 break i;
                case 15:
                  /*<<scanf.ml:1323:4>>*/ return Stdlib[1].call
                         (null, 'scanf: bad conversion "%a"') /*<<scanf.ml:1418:7>>*/ ;
                case 16:
                  /*<<scanf.ml:1325:4>>*/ return Stdlib[1].call
                         (null, 'scanf: bad conversion "%t"') /*<<scanf.ml:1418:7>>*/ ;
                case 17:
                 var
                  rest$19 =  /*<<scanf.ml:1266:22>>*/ fmt[2],
                  formatting_lit = fmt[1],
                  _F_ =
                     /*<<scanf.ml:1401:32>>*/ CamlinternalFormat[17].call
                     (null, formatting_lit);
                  /*<<scanf.ml:1401:4>>*/ Stdlib_String[30].call
                  (null,
                   function(_F_){
                     /*<<scanf.ml:1401:16>>*/ return check_char(ib, _F_);
                   },
                   _F_);
                  /*<<scanf.ml:1401:73>>*/ fmt = rest$19;
                 break;
                case 18:
                 var _y_ =  /*<<scanf.ml:1266:22>>*/ fmt[1];
                 if(0 === _y_[0]){
                  var rest$20 = fmt[2], fmt$8 = _y_[1][1];
                   /*<<scanf.ml:1404:4>>*/ check_char(ib, 64);
                   /*<<scanf.ml:1404:23>>*/ check_char(ib, 123);
                  var
                   fmt$9 =
                      /*<<scanf.ml:1405:18>>*/ CamlinternalFormatBasics[3].call
                      (null, fmt$8, rest$20);
                   /*<<scanf.ml:1405:40>>*/ fmt = fmt$9;
                 }
                 else{
                  var
                   rest$21 =  /*<<scanf.ml:1266:22>>*/ fmt[2],
                   fmt$10 = _y_[1][1];
                   /*<<scanf.ml:1407:4>>*/ check_char(ib, 64);
                   /*<<scanf.ml:1407:23>>*/ check_char(ib, 91);
                  var
                   fmt$11 =
                      /*<<scanf.ml:1408:18>>*/ CamlinternalFormatBasics[3].call
                      (null, fmt$10, rest$21);
                   /*<<scanf.ml:1408:40>>*/ fmt = fmt$11;
                 }
                 break;
                case 19:
                 var fmt_rest =  /*<<scanf.ml:1266:22>>*/ fmt[1];
                  /*<<scanf.ml:1329:4>>*/ if(! readers)
                   /*<<scanf.ml:1334:8>>*/ return Stdlib[1].call
                          (null, "scanf: missing reader") /*<<scanf.ml:1418:7>>*/ ;
                 var
                  readers_rest =  /*<<scanf.ml:1329:4>>*/ readers[2],
                  reader = readers[1],
                  x =  /*<<scanf.ml:1331:16>>*/ caml_call1(reader, ib);
                  /*<<scanf.ml:1332:17>>*/ return [0,
                         x,
                         make_scanf(ib, fmt_rest, readers_rest)] /*<<scanf.ml:1332:52>>*/ ;
                case 20:
                 break j;
                case 21:
                 var
                  rest$24 =  /*<<scanf.ml:1266:22>>*/ fmt[2],
                  counter = fmt[1];
                  /*<<scanf.ml:1131:2>>*/ switch(counter){
                   case 0:
                    var count =  /*<<scanf.ml:220:22>>*/ ib[5]; break;
                   case 1:
                    var count =  /*<<scanf.ml:1133:20>>*/ char_count(ib); break;
                   default: var count =  /*<<scanf.ml:234:23>>*/ ib[6];
                 }
                  /*<<scanf.ml:1395:17>>*/ return [0,
                         count,
                         make_scanf(ib, rest$24, readers)] /*<<scanf.ml:1395:43>>*/ ;
                case 22:
                 var
                  rest$25 =  /*<<scanf.ml:1266:22>>*/ fmt[1],
                  c$2 =  /*<<scanf.ml:1397:12>>*/ checked_peek_char(ib);
                  /*<<scanf.ml:1398:13>>*/ return [0,
                         c$2,
                         make_scanf(ib, rest$25, readers)] /*<<scanf.ml:1398:39>>*/ ;
                case 23:
                 var
                  rest$26 =  /*<<scanf.ml:1266:22>>*/ fmt[2],
                  ign = fmt[1],
                  fmt$12 =
                     /*<<scanf.ml:1411:32>>*/ CamlinternalFormat[6].call
                      (null, ign, rest$26)
                     [1],
                  match$3 =
                     /*<<scanf.ml:1412:16>>*/ make_scanf(ib, fmt$12, readers);
                  /*<<scanf.ml:1412:42>>*/ if(! match$3)
                   /*<<scanf.ml:1414:13>>*/ throw caml_maybe_attach_backtrace
                         ([0, Assert_failure, _r_], 1);
                 var arg_rest =  /*<<scanf.ml:1412:42>>*/ match$3[2];
                  /*<<scanf.ml:1413:28>>*/ return arg_rest;
                default:
                  /*<<scanf.ml:1327:4>>*/ return Stdlib[1].call
                         (null, 'scanf: bad conversion "%?" (custom converter)') /*<<scanf.ml:1418:7>>*/ ;
              }
             }
             var
              width_opt =  /*<<scanf.ml:1266:22>>*/ fmt[1],
              match$1 = fmt[3];
             if(typeof match$1 !== "number" && 17 === match$1[0]){
              var
               rest$23 = match$1[2],
               fmting_lit$0 = match$1[1],
               char_set$0 = fmt[2],
               match$2 =
                  /*<<scanf.ml:1382:19>>*/ stopper_of_formatting_lit
                  (fmting_lit$0),
               str$1 =  /*<<scanf.ml:1382:55>>*/ match$2[2],
               stp$0 = match$2[1],
               width$1 =  /*<<scanf.ml:1383:16>>*/ width_of_pad_opt(width_opt);
               /*<<scanf.ml:1384:4>>*/ scan_chars_in_char_set
               (char_set$0, [0, stp$0], width$1, ib);
              var s$2 =  /*<<scanf.ml:1385:12>>*/ token_string(ib);
               /*<<scanf.ml:1387:13>>*/ return [0,
                      s$2,
                      make_scanf(ib, [11, str$1, rest$23], readers)] /*<<scanf.ml:1387:43>>*/ ;
             }
             var
              rest$22 =  /*<<scanf.ml:1266:22>>*/ fmt[3],
              char_set = fmt[2],
              width$0 =  /*<<scanf.ml:1389:16>>*/ width_of_pad_opt(width_opt);
              /*<<scanf.ml:1390:4>>*/ scan_chars_in_char_set
              (char_set, 0, width$0, ib);
             var s$1 =  /*<<scanf.ml:1391:12>>*/ token_string(ib);
              /*<<scanf.ml:1392:13>>*/ return [0,
                     s$1,
                     make_scanf(ib, rest$22, readers)] /*<<scanf.ml:1392:39>>*/ ;
            }
            var
             rest$18 =  /*<<scanf.ml:1266:22>>*/ fmt[3],
             fmtty$0 = fmt[2],
             pad_opt$0 = fmt[1];
             /*<<scanf.ml:1356:29>>*/  /*<<scanf.ml:1356:12>>*/ scan_caml_string
             ( /*<<scanf.ml:1356:29>>*/ width_of_pad_opt(pad_opt$0), ib);
            var s$0 =  /*<<scanf.ml:1357:12>>*/ token_string(ib);
             /*<<scanf.ml:1358:4>>*/ try{
             var
              fmt$5 =
                 /*<<scanf.ml:1360:26>>*/ CamlinternalFormat[13].call
                  (null, 0, s$0)
                 [1],
              fmt$6 =
                 /*<<scanf.ml:1361:27>>*/ CamlinternalFormat[13].call
                  (null, 0, s$0)
                 [1],
              _B_ =
                 /*<<scanf.ml:1375:36>>*/ CamlinternalFormat[21].call
                 (null, fmtty$0),
              _C_ =
                 /*<<scanf.ml:1375:25>>*/ CamlinternalFormatBasics[2].call
                 (null, _B_),
              fmt$7 =
                 /*<<scanf.ml:1375:8>>*/ CamlinternalFormat[12].call
                 (null, fmt$6, _C_),
              _D_ =
                 /*<<scanf.ml:1374:24>>*/ CamlinternalFormatBasics[2].call
                 (null, fmtty$0),
              _E_ =
                 /*<<scanf.ml:1374:8>>*/ CamlinternalFormat[12].call
                 (null, fmt$5, _D_),
              fmt$4 = fmt$7,
              fmt$3 = _E_;
            }
            catch(exn){
             var exn$0 =  /*<<?>>*/ caml_wrap_exception(exn);
             if(exn$0[1] !== Stdlib[7])
              throw caml_maybe_attach_backtrace(exn$0, 0);
             var
              msg$0 = exn$0[2],
              _z_ =  /*<<scanf.ml:1376:26>>*/ bad_input(msg$0),
              fmt$4 = _z_[2],
              fmt$3 = _z_[1];
            }
             /*<<scanf.ml:1379:24>>*/ return [0,
                    [0, fmt$3, s$0],
                     /*<<scanf.ml:1379:10>>*/ make_scanf
                     (ib,
                       /*<<scanf.ml:1379:24>>*/ CamlinternalFormatBasics[3].call
                       (null, fmt$4, rest$18),
                      readers)] /*<<scanf.ml:1379:54>>*/ ;
           }
           var
            rest$13 =  /*<<scanf.ml:1266:22>>*/ fmt[2],
            pad$8 = fmt[1],
            scan$8 =
               /*<<scanf.ml:1320:4>>*/ function(_F_, param, ib){
               var
                c =  /*<<scanf.ml:1089:10>>*/ checked_peek_char(ib),
                m =
                   /*<<scanf.ml:1090:2>>*/ 102 === c
                   ? 5
                   : 116
                     === c
                     ? 4
                     :  /*<<scanf.ml:1095:6>>*/ bad_input
                       ( /*<<scanf.ml:1096:8>>*/ caml_call1
                         (Stdlib_Printf[4].call(null, _m_), c));
                /*<<scanf.ml:1097:2>>*/ return scan_string(0, m, ib) /*<<scanf.ml:1320:34>>*/ ;
              };
            /*<<scanf.ml:1321:4>>*/ return pad_prec_scanf
                   (ib, rest$13, readers, pad$8, 0, scan$8, token_bool) /*<<scanf.ml:1418:7>>*/ ;
          }
          var
           rest$9 =  /*<<scanf.ml:1266:22>>*/ fmt[4],
           prec$2 = fmt[3],
           pad$4 = fmt[2],
           iconv$2 = fmt[1],
           conv$2 =
              /*<<scanf.ml:1309:39>>*/  /*<<scanf.ml:1309:12>>*/ integer_conversion_of_char
              ( /*<<scanf.ml:1309:39>>*/ CamlinternalFormat[16].call
                (null, iconv$2)),
           scan$7 =
              /*<<scanf.ml:1310:4>>*/ function(width, param, ib){
               /*<<scanf.ml:1310:26>>*/ return scan_int_conversion
                      (conv$2, width, ib) /*<<scanf.ml:1310:56>>*/ ;
             };
           /*<<scanf.ml:1311:64>>*/ return pad_prec_scanf
                  (ib,
                   rest$9,
                   readers,
                   pad$4,
                   prec$2,
                   scan$7,
                   function(ib){
                     /*<<scanf.ml:559:42>>*/ return  /*<<scanf.ml:559:26>>*/ runtime.caml_int64_of_string
                            ( /*<<scanf.ml:559:42>>*/ token_int_literal(conv$2, ib)) /*<<scanf.ml:559:69>>*/ ;
                   }) /*<<scanf.ml:1418:7>>*/ ;
         }
         var
          rest$8 =  /*<<scanf.ml:1266:22>>*/ fmt[4],
          prec$1 = fmt[3],
          pad$3 = fmt[2],
          iconv$1 = fmt[1],
          conv$1 =
             /*<<scanf.ml:1305:39>>*/  /*<<scanf.ml:1305:12>>*/ integer_conversion_of_char
             ( /*<<scanf.ml:1305:39>>*/ CamlinternalFormat[16].call
               (null, iconv$1)),
          scan$6 =
             /*<<scanf.ml:1306:4>>*/ function(width, param, ib){
              /*<<scanf.ml:1306:26>>*/ return scan_int_conversion
                     (conv$1, width, ib) /*<<scanf.ml:1306:56>>*/ ;
            };
          /*<<scanf.ml:1307:68>>*/ return pad_prec_scanf
                 (ib,
                  rest$8,
                  readers,
                  pad$3,
                  prec$1,
                  scan$6,
                  function(ib){
                    /*<<scanf.ml:557:50>>*/ return  /*<<scanf.ml:557:30>>*/ caml_int_of_string
                           ( /*<<scanf.ml:557:50>>*/ token_int_literal(conv$1, ib)) /*<<scanf.ml:557:77>>*/ ;
                  }) /*<<scanf.ml:1418:7>>*/ ;
        }
        var
         rest$7 =  /*<<scanf.ml:1266:22>>*/ fmt[4],
         prec$0 = fmt[3],
         pad$2 = fmt[2],
         iconv$0 = fmt[1],
         conv$0 =
            /*<<scanf.ml:1301:39>>*/  /*<<scanf.ml:1301:12>>*/ integer_conversion_of_char
            ( /*<<scanf.ml:1301:39>>*/ CamlinternalFormat[16].call
              (null, iconv$0)),
         scan$5 =
            /*<<scanf.ml:1302:4>>*/ function(width, param, ib){
             /*<<scanf.ml:1302:26>>*/ return scan_int_conversion
                    (conv$0, width, ib) /*<<scanf.ml:1302:56>>*/ ;
           };
         /*<<scanf.ml:1303:64>>*/ return pad_prec_scanf
                (ib,
                 rest$7,
                 readers,
                 pad$2,
                 prec$0,
                 scan$5,
                 function(ib){
                   /*<<scanf.ml:558:42>>*/ return  /*<<scanf.ml:558:26>>*/ caml_int_of_string
                          ( /*<<scanf.ml:558:42>>*/ token_int_literal(conv$0, ib)) /*<<scanf.ml:558:69>>*/ ;
                 }) /*<<scanf.ml:1418:7>>*/ ;
       }
       var
        rest$6 =  /*<<scanf.ml:1266:22>>*/ fmt[4],
        prec = fmt[3],
        pad$1 = fmt[2],
        iconv = fmt[1],
        conv =
           /*<<scanf.ml:1297:39>>*/  /*<<scanf.ml:1297:12>>*/ integer_conversion_of_char
           ( /*<<scanf.ml:1297:39>>*/ CamlinternalFormat[16].call(null, iconv)),
        scan$4 =
           /*<<scanf.ml:1298:4>>*/ function(width, param, ib){
            /*<<scanf.ml:1298:26>>*/ return scan_int_conversion
                   (conv, width, ib) /*<<scanf.ml:1298:56>>*/ ;
          };
        /*<<scanf.ml:1299:62>>*/ return pad_prec_scanf
               (ib,
                rest$6,
                readers,
                pad$1,
                prec,
                scan$4,
                function(ib){
                  /*<<scanf.ml:537:38>>*/ return  /*<<scanf.ml:537:24>>*/ caml_int_of_string
                         ( /*<<scanf.ml:537:38>>*/ token_int_literal(conv, ib)) /*<<scanf.ml:537:65>>*/ ;
                }) /*<<scanf.ml:1418:7>>*/ ;
      }
      var
       rest$5 =  /*<<scanf.ml:1266:22>>*/ fmt[2],
       pad$0 = fmt[1],
       scan$3 =
          /*<<scanf.ml:1294:4>>*/ function(width, param, ib){
           /*<<scanf.ml:1294:26>>*/ return scan_caml_string(width, ib) /*<<scanf.ml:1294:51>>*/ ;
         };
       /*<<scanf.ml:1295:4>>*/ return pad_prec_scanf
              (ib, rest$5, readers, pad$0, 0, scan$3, token_string) /*<<scanf.ml:1418:7>>*/ ;
     }
     var pad =  /*<<scanf.ml:1266:22>>*/ fmt[1], match = fmt[2];
     if(typeof match !== "number")
      switch(match[0]){
        case 17:
         var
          rest$2 = match[2],
          fmting_lit = match[1],
          match$0 =
             /*<<scanf.ml:1277:19>>*/ stopper_of_formatting_lit(fmting_lit),
          str =  /*<<scanf.ml:1277:55>>*/ match$0[2],
          stp = match$0[1],
          scan$0 =
             /*<<scanf.ml:1278:4>>*/ function(width, param, ib){
              /*<<scanf.ml:1278:26>>*/ return scan_string([0, stp], width, ib) /*<<scanf.ml:1278:57>>*/ ;
            };
          /*<<scanf.ml:1280:4>>*/ return pad_prec_scanf
                 (ib,
                  [11, str, rest$2],
                  readers,
                  pad,
                  0,
                  scan$0,
                  token_string) /*<<scanf.ml:1418:7>>*/ ;
        case 18:
         var _x_ =  /*<<scanf.ml:1266:22>>*/ match[1];
         if(0 === _x_[0]){
          var
           rest$3 = match[2],
           fmt$0 = _x_[1][1],
           scan$1 =
              /*<<scanf.ml:1282:4>>*/ function(width, param, ib){
               /*<<scanf.ml:1282:26>>*/ return scan_string(_p_, width, ib) /*<<scanf.ml:1282:57>>*/ ;
             };
           /*<<scanf.ml:1283:22>>*/ return  /*<<scanf.ml:1283:44>>*/ pad_prec_scanf
                  (ib,
                    /*<<scanf.ml:1283:22>>*/ CamlinternalFormatBasics[3].call
                    (null, fmt$0, rest$3),
                   readers,
                   pad,
                   0,
                   scan$1,
                   token_string) /*<<scanf.ml:1418:7>>*/ ;
         }
         var
          rest$4 =  /*<<scanf.ml:1266:22>>*/ match[2],
          fmt$1 = _x_[1][1],
          scan$2 =
             /*<<scanf.ml:1286:4>>*/ function(width, param, ib){
              /*<<scanf.ml:1286:26>>*/ return scan_string(_q_, width, ib) /*<<scanf.ml:1286:57>>*/ ;
            };
          /*<<scanf.ml:1287:22>>*/ return  /*<<scanf.ml:1287:44>>*/ pad_prec_scanf
                 (ib,
                   /*<<scanf.ml:1287:22>>*/ CamlinternalFormatBasics[3].call
                   (null, fmt$1, rest$4),
                  readers,
                  pad,
                  0,
                  scan$2,
                  token_string) /*<<scanf.ml:1418:7>>*/ ;
      }
     var
      rest$1 =  /*<<scanf.ml:1266:22>>*/ fmt[2],
      scan =
         /*<<scanf.ml:1290:4>>*/ function(width, param, ib){
          /*<<scanf.ml:1290:26>>*/ return scan_string(0, width, ib) /*<<scanf.ml:1290:51>>*/ ;
        };
      /*<<scanf.ml:1291:4>>*/ return pad_prec_scanf
             (ib, rest$1, readers, pad, 0, scan, token_string) /*<<scanf.ml:1418:7>>*/ ;
    }
    var rest$0 =  /*<<scanf.ml:1266:22>>*/ fmt[1];
    function find_stop(width){
     var c =  /*<<scanf.ml:1001:31>>*/ check_next_char(cst_a_Char, width, ib);
      /*<<scanf.ml:1047:43>>*/ return 39 === c
             ?  /*<<scanf.ml:1048:14>>*/ ignore_char(width, ib)
             :  /*<<scanf.ml:1049:11>>*/ character_mismatch(39, c) /*<<scanf.ml:1049:36>>*/ ;
    }
    var c =  /*<<scanf.ml:1035:10>>*/ checked_peek_char(ib);
     /*<<scanf.ml:1035:39>>*/ if(39 === c){
     var
      width =  /*<<scanf.ml:1036:24>>*/ ignore_char(0, ib),
      c$3 =  /*<<scanf.ml:1001:31>>*/ check_next_char(cst_a_Char, width, ib);
      /*<<scanf.ml:1040:43>>*/ if(92 === c$3)
       /*<<scanf.ml:1042:37>>*/  /*<<scanf.ml:1042:72>>*/ find_stop
       ( /*<<scanf.ml:1042:16>>*/ scan_backslash_char
         ( /*<<scanf.ml:1042:37>>*/ ignore_char(width, ib), ib));
     else
       /*<<scanf.ml:1044:16>>*/  /*<<scanf.ml:1044:48>>*/ find_stop
       ( /*<<scanf.ml:1044:16>>*/ store_char(width, ib, c$3));
    }
    else
      /*<<scanf.ml:1037:11>>*/ character_mismatch(39, c);
    var c$1 =  /*<<scanf.ml:1273:12>>*/ token_char(ib);
     /*<<scanf.ml:1274:13>>*/ return [0, c$1, make_scanf(ib, rest$0, readers)] /*<<scanf.ml:1274:39>>*/ ;
    /*<<scanf.ml:1418:7>>*/ }
   function pad_prec_scanf(ib, fmt, readers, pad, prec, scan, token){
    var cst_scanf_bad_conversion =  /*<<?>>*/ 'scanf: bad conversion "%*"';
     /*<<scanf.ml:1429:42>>*/ if(typeof pad === "number"){
     if(typeof prec !== "number"){
      var p = prec[1];
       /*<<scanf.ml:1435:12>>*/ caml_call3(scan, Stdlib[19], p, ib);
      var x$0 =  /*<<scanf.ml:1436:12>>*/ caml_call1(token, ib);
       /*<<scanf.ml:1437:13>>*/ return [0, x$0, make_scanf(ib, fmt, readers)] /*<<scanf.ml:1437:38>>*/ ;
     }
      /*<<scanf.ml:1429:42>>*/ if(prec)
       /*<<scanf.ml:1453:4>>*/ return Stdlib[1].call
              (null, cst_scanf_bad_conversion) /*<<scanf.ml:1453:46>>*/ ;
      /*<<scanf.ml:1431:12>>*/ caml_call3(scan, Stdlib[19], Stdlib[19], ib);
     var x =  /*<<scanf.ml:1432:12>>*/ caml_call1(token, ib);
      /*<<scanf.ml:1433:13>>*/ return [0, x, make_scanf(ib, fmt, readers)] /*<<scanf.ml:1433:38>>*/ ;
    }
     /*<<scanf.ml:1429:42>>*/ if(0 !== pad[0])
      /*<<scanf.ml:1451:4>>*/ return Stdlib[1].call
             (null, cst_scanf_bad_conversion) /*<<scanf.ml:1453:46>>*/ ;
     /*<<scanf.ml:1429:42>>*/ if(! pad[1])
      /*<<scanf.ml:1447:4>>*/ return Stdlib[1].call
             (null, 'scanf: bad conversion "%-"') /*<<scanf.ml:1453:46>>*/ ;
    var w =  /*<<scanf.ml:1429:42>>*/ pad[2];
    if(typeof prec !== "number"){
     var p$0 = prec[1];
      /*<<scanf.ml:1443:12>>*/ caml_call3(scan, w, p$0, ib);
     var x$2 =  /*<<scanf.ml:1444:12>>*/ caml_call1(token, ib);
      /*<<scanf.ml:1445:13>>*/ return [0, x$2, make_scanf(ib, fmt, readers)] /*<<scanf.ml:1445:38>>*/ ;
    }
     /*<<scanf.ml:1429:42>>*/ if(prec)
      /*<<scanf.ml:1449:4>>*/ return Stdlib[1].call
             (null, cst_scanf_bad_conversion) /*<<scanf.ml:1453:46>>*/ ;
     /*<<scanf.ml:1439:12>>*/ caml_call3(scan, w, Stdlib[19], ib);
    var x$1 =  /*<<scanf.ml:1440:12>>*/ caml_call1(token, ib);
     /*<<scanf.ml:1441:13>>*/ return [0, x$1, make_scanf(ib, fmt, readers)] /*<<scanf.ml:1441:38>>*/ ;
    /*<<scanf.ml:1453:46>>*/ }
   var cst =  /*<<?>>*/ '"';
   function kscanf_gen(ib, ef, af, param){
    var str =  /*<<scanf.ml:1458:15>>*/ param[2], fmt = param[1];
    function k(readers, f$1){
      /*<<scanf.ml:222:23>>*/ Stdlib_Buffer[9].call(null, ib[8]);
      /*<<scanf.ml:1465:27>>*/ try{
      var
       args$1 =  /*<<scanf.ml:1466:10>>*/ make_scanf(ib, fmt, readers),
       f = f$1,
       args = args$1;
     }
     catch(exc$0){
      var exc =  /*<<?>>*/ caml_wrap_exception(exc$0);
      if
       (exc[1] !== Scan_failure && exc[1] !== Stdlib[7] && exc !== Stdlib[12]){
       if(exc[1] !== Stdlib[6]) throw caml_maybe_attach_backtrace(exc, 0);
       var
        msg = exc[2],
        _u_ =  /*<<scanf.ml:1470:45>>*/ Stdlib_String[25].call(null, str),
        _v_ = Stdlib[28].call(null, _u_, cst),
        _w_ =
           /*<<scanf.ml:1470:27>>*/ Stdlib[28].call(null, ' in format "', _v_),
        _x_ =  /*<<scanf.ml:1470:20>>*/ Stdlib[28].call(null, msg, _w_);
        /*<<scanf.ml:1470:71>>*/ return Stdlib[1].call(null, _x_) /*<<scanf.ml:1472:25>>*/ ;
      }
       /*<<scanf.ml:1468:8>>*/ return caml_call2(ef, ib, exc) /*<<scanf.ml:1472:25>>*/ ;
     }
      /*<<scanf.ml:1465:27>>*/ for(;;){
       /*<<scanf.ml:1460:18>>*/ if(! args)
        /*<<scanf.ml:1472:25>>*/ return caml_call1(af, f);
      var
       args$0 =  /*<<scanf.ml:1460:18>>*/ args[2],
       x = args[1],
       f$0 =  /*<<scanf.ml:1461:27>>*/ caml_call1(f, x);
       /*<<scanf.ml:1461:32>>*/ f = f$0;
      args = args$0;
     }
     /*<<scanf.ml:1472:25>>*/ }
     /*<<scanf.ml:1474:2>>*/ return take_format_readers(k, fmt) /*<<scanf.ml:1474:27>>*/ ;
   }
   function kscanf(ib, ef, fmt){
     /*<<scanf.ml:1477:2>>*/ return kscanf_gen
            (ib,
             ef,
             function(x){
               /*<<scanf.ml:1477:29>>*/ return x;
              /*<<scanf.ml:1477:30>>*/ },
             fmt) /*<<scanf.ml:1477:35>>*/ ;
   }
   function kscanf_opt(ib, fmt){
     /*<<scanf.ml:1480:2>>*/ return kscanf_gen
            (ib,
             function(_u_, param){
               /*<<scanf.ml:1480:28>>*/ return 0;
              /*<<scanf.ml:1480:32>>*/ },
             function(x){
               /*<<scanf.ml:1480:44>>*/ return [0, x];
              /*<<scanf.ml:1480:50>>*/ },
             fmt) /*<<scanf.ml:1480:55>>*/ ;
   }
   function bscanf(ib, fmt){
     /*<<scanf.ml:1485:20>>*/ return kscanf(ib, scanf_bad_input, fmt) /*<<scanf.ml:1485:50>>*/ ;
   }
   function bscanf_opt(ib, fmt){
     /*<<scanf.ml:1486:24>>*/ return kscanf_opt(ib, fmt) /*<<scanf.ml:1486:41>>*/ ;
   }
   function ksscanf(s, ef, fmt){
     /*<<scanf.ml:1488:31>>*/ return  /*<<scanf.ml:1488:55>>*/ kscanf
            ( /*<<scanf.ml:1488:31>>*/ from_string(s), ef, fmt) /*<<scanf.ml:1488:62>>*/ ;
   }
   function sscanf(s, fmt){
     /*<<scanf.ml:1489:27>>*/ return  /*<<scanf.ml:1489:51>>*/ kscanf
            ( /*<<scanf.ml:1489:27>>*/ from_string(s), scanf_bad_input, fmt) /*<<scanf.ml:1489:71>>*/ ;
   }
   function sscanf_opt(s, fmt){
     /*<<scanf.ml:1490:34>>*/ return  /*<<scanf.ml:1490:58>>*/ kscanf_opt
            ( /*<<scanf.ml:1490:34>>*/ from_string(s), fmt) /*<<scanf.ml:1490:62>>*/ ;
   }
   function scanf(fmt){
     /*<<scanf.ml:1492:16>>*/ return kscanf(stdin, scanf_bad_input, fmt) /*<<scanf.ml:1492:57>>*/ ;
   }
   function scanf_opt(fmt){
     /*<<scanf.ml:1493:20>>*/ return kscanf_opt(stdin, fmt) /*<<scanf.ml:1493:49>>*/ ;
   }
   function bscanf_format(ib, format, f){
     /*<<scanf.ml:1502:12>>*/ scan_caml_string(Stdlib[19], ib);
    var str =  /*<<scanf.ml:1503:14>>*/ token_string(ib);
     /*<<scanf.ml:1504:4>>*/ try{
     var
      _u_ =
         /*<<scanf.ml:1505:10>>*/ CamlinternalFormat[15].call
         (null, str, format),
      fmt = _u_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] !== Stdlib[7]) throw caml_maybe_attach_backtrace(exn, 0);
     var
      msg = exn[2],
      fmt =  /*<<scanf.ml:1506:39>>*/  /*<<scanf.ml:1506:26>>*/ bad_input(msg);
    }
     /*<<scanf.ml:1507:4>>*/ return caml_call1(f, fmt) /*<<scanf.ml:1507:10>>*/ ;
   }
   function sscanf_format(s, format, f){
     /*<<scanf.ml:1513:34>>*/ return  /*<<scanf.ml:1513:58>>*/ bscanf_format
            ( /*<<scanf.ml:1513:34>>*/ from_string(s), format, f) /*<<scanf.ml:1513:67>>*/ ;
   }
   function format_from_string(s, fmt){
    var
     _t_ =  /*<<scanf.ml:1517:24>>*/ Stdlib_String[25].call(null, s),
     _u_ = Stdlib[28].call(null, _t_, cst);
     /*<<scanf.ml:1517:16>>*/ return  /*<<scanf.ml:1517:48>>*/ sscanf_format
            ( /*<<scanf.ml:1517:16>>*/ Stdlib[28].call(null, cst, _u_),
             fmt,
             function(x){
               /*<<scanf.ml:1517:63>>*/ return x;
              /*<<scanf.ml:1517:64>>*/ }) /*<<scanf.ml:1517:65>>*/ ;
   }
   var _s_ =  /*<<scanf.ml:1002:59>>*/ [0, [3, 0, [10, 0]], "%S%!"];
   function unescaped(s){
    var _t_ =  /*<<scanf.ml:1521:17>>*/ Stdlib[28].call(null, s, cst);
     /*<<scanf.ml:1521:9>>*/ return  /*<<scanf.ml:1521:26>>*/ caml_call1
            (sscanf
              ( /*<<scanf.ml:1521:9>>*/ Stdlib[28].call(null, cst, _t_), _s_),
             function(x){
               /*<<scanf.ml:1521:44>>*/ return x;
              /*<<scanf.ml:1521:45>>*/ }) /*<<scanf.ml:1521:46>>*/ ;
   }
    /*<<scanf.ml:1002:59>>*/ runtime.caml_register_global
    (64,
     [0,
      [0,
       stdin,
       open_in,
       open_in_bin,
       close_in,
       open_in,
       open_in_bin,
       from_string,
       from_function,
       from_channel,
       end_of_input,
       beginning_of_input,
       name_of_input],
      Scan_failure,
      bscanf,
      bscanf_opt,
      sscanf,
      sscanf_opt,
      scanf,
      scanf_opt,
      kscanf,
      ksscanf,
      bscanf_format,
      sscanf_format,
      format_from_string,
      unescaped],
     "Stdlib__Scanf");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Callback
//# unitInfo: Requires: Stdlib, Stdlib__Obj
//# shape: Stdlib__Callback:[F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_register_named_value = runtime.caml_register_named_value,
    Stdlib_Obj = runtime.caml_get_global_data().Stdlib__Obj;
   function register_exception(name, exn){
    var
     _a_ =  /*<<callback.ml:26:16>>*/ Stdlib_Obj[10],
     slot = runtime.caml_obj_tag(exn) === _a_ ? exn : exn[1];
     /*<<callback.ml:27:2>>*/ return caml_register_named_value(name, slot) /*<<callback.ml:27:32>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (1,
     [0, caml_register_named_value, register_exception],
     "Stdlib__Callback");
   return;
  }
  (globalThis));

//# unitInfo: Provides: CamlinternalOO
//# unitInfo: Requires: Stdlib, Stdlib__Array, Stdlib__Atomic, Stdlib__List, Stdlib__Map, Stdlib__Obj, Stdlib__Sys
//# shape: CamlinternalOO:[F(1),F(1),F(2),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(4),F(1),F(2),N,F(1),F(1),F(6),F(2),F(3),F(1)*,F(1),F(1),F(2),F(2),F(3),F(2),F(2),N,F(1)*]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_check_bound = runtime.caml_check_bound,
    caml_div = runtime.caml_div,
    caml_get_public_method = runtime.caml_get_public_method,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_obj_block = runtime.caml_obj_block,
    caml_set_oo_id = runtime.caml_set_oo_id,
    caml_string_compare = runtime.caml_string_compare,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Assert_failure = global_data.Assert_failure,
    Stdlib_Atomic = global_data.Stdlib__Atomic,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Obj = global_data.Stdlib__Obj,
    Stdlib = global_data.Stdlib,
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib_List = global_data.Stdlib__List,
    Stdlib_Map = global_data.Stdlib__Map;
   function copy(o){
    var o$0 =  /*<<camlinternalOO.ml:23:19>>*/ runtime.caml_obj_dup(o);
     /*<<camlinternalOO.ml:24:2>>*/ return caml_set_oo_id(o$0) /*<<camlinternalOO.ml:24:10>>*/ ;
   }
   function public_method_label(s){
    var
     _A_ =
        /*<<camlinternalOO.ml:70:2>>*/ runtime.caml_ml_string_length(s) - 1
       | 0,
     _z_ =  /*<<camlinternalOO.ml:69:2>>*/ 0;
     /*<<camlinternalOO.ml:70:2>>*/ if(_A_ < 0)
     var accu$1 = _z_;
    else{
     var accu$0 = _z_, i = 0;
     for(;;){
      var
       _B_ =
          /*<<camlinternalOO.ml:71:36>>*/ (223 * accu$0 | 0)
         + runtime.caml_string_get(s, i)
         | 0,
       _C_ =  /*<<camlinternalOO.ml:71:41>>*/ i + 1 | 0;
      if(_A_ === i){var accu$1 = _B_; break;}
      accu$0 = _B_;
      i = _C_;
     }
    }
    var
     accu =  /*<<camlinternalOO.ml:74:2>>*/ accu$1 & 2147483647,
     tag =
        /*<<camlinternalOO.ml:76:2>>*/ 1073741823 < accu
        ? accu + 2147483648 | 0
        : accu;
     /*<<camlinternalOO.ml:78:2>>*/ return tag;
    /*<<camlinternalOO.ml:78:15>>*/ }
   var
    Vars =  /*<<?>>*/ Stdlib_Map[1].call(null, [0, caml_string_compare]),
    Meths = Stdlib_Map[1].call(null, [0, caml_string_compare]),
    compare = runtime.caml_int_compare,
    Labs = Stdlib_Map[1].call(null, [0, compare]),
    dummy_table = [0, 0, [0, 0], Meths[1], Labs[1], 0, 0, Vars[1], 0],
    table_count =
       /*<<camlinternalOO.ml:116:18>>*/ Stdlib_Atomic[1].call(null, 0),
    dummy_met =  /*<<camlinternalOO.ml:119:31>>*/ caml_obj_block(0, 0);
   function fit_size(n){
     /*<<camlinternalOO.ml:124:2>>*/ return 2 < n
            ?  /*<<camlinternalOO.ml:125:2>>*/ fit_size
              ((n + 1 | 0) / 2 | 0)
             * 2
             | 0
            : n /*<<camlinternalOO.ml:125:24>>*/ ;
   }
   function new_table(pub_labels){
     /*<<camlinternalOO.ml:128:2>>*/ Stdlib_Atomic[8].call(null, table_count);
    var
     len =  /*<<camlinternalOO.ml:128:25>>*/ pub_labels.length - 1,
     methods =
        /*<<camlinternalOO.ml:130:16>>*/ caml_array_make
        ((len * 2 | 0) + 2 | 0, dummy_met);
     /*<<camlinternalOO.ml:131:2>>*/ caml_check_bound(methods, 0)[1] = len;
    var
     _w_ =  /*<<camlinternalOO.ml:132:28>>*/ Stdlib_Sys[10],
     _x_ =
       ( /*<<camlinternalOO.ml:132:40>>*/ runtime.caml_mul
        ( /*<<camlinternalOO.ml:132:28>>*/ fit_size(len), _w_)
       / 8
       | 0)
       - 1
       | 0;
     /*<<camlinternalOO.ml:132:2>>*/ caml_check_bound(methods, 1)[2] = _x_;
    var _u_ =  /*<<camlinternalOO.ml:132:65>>*/ len - 1 | 0;
    if(_u_ >= 0){
     var i = 0;
     for(;;){
      var
       _v_ =  /*<<camlinternalOO.ml:133:69>>*/ (i * 2 | 0) + 3 | 0,
       _y_ =
          /*<<camlinternalOO.ml:133:55>>*/ caml_check_bound(pub_labels, i)
          [i + 1];
       /*<<camlinternalOO.ml:133:26>>*/ caml_check_bound(methods, _v_)
       [_v_ + 1]
      = _y_;
      var _z_ =  /*<<camlinternalOO.ml:133:69>>*/ i + 1 | 0;
      if(_u_ === i) break;
      i = _z_;
     }
    }
     /*<<camlinternalOO.ml:134:2>>*/ return [0,
            2,
            methods,
            Meths[1],
            Labs[1],
            0,
            0,
            Vars[1],
            0];
    /*<<camlinternalOO.ml:141:32>>*/ }
   function resize(array, new_size){
    var
     old_size =  /*<<camlinternalOO.ml:144:2>>*/ array[2].length - 1,
     _t_ =  /*<<camlinternalOO.ml:145:2>>*/ old_size < new_size ? 1 : 0;
    if(_t_){
     var
      new_buck =
         /*<<camlinternalOO.ml:146:19>>*/ caml_array_make(new_size, dummy_met);
      /*<<camlinternalOO.ml:147:4>>*/ Stdlib_Array[9].call
      (null, array[2], 0, new_buck, 0, old_size);
      /*<<camlinternalOO.ml:147:50>>*/ array[2] = new_buck;
     var _u_ = 0;
    }
    else
     var _u_ =  /*<<camlinternalOO.ml:145:2>>*/ _t_;
    return _u_;
    /*<<camlinternalOO.ml:149:4>>*/ }
   var
    method_count =
       /*<<camlinternalOO.ml:157:19>>*/ Stdlib_Atomic[1].call(null, 0),
    inst_var_count =
       /*<<camlinternalOO.ml:158:21>>*/ Stdlib_Atomic[1].call(null, 0);
   function new_method(table){
    var index =  /*<<camlinternalOO.ml:164:2>>*/ table[2].length - 1;
     /*<<camlinternalOO.ml:165:2>>*/ resize(table, index + 1 | 0);
     /*<<camlinternalOO.ml:165:26>>*/ return index;
    /*<<camlinternalOO.ml:166:7>>*/ }
   function get_method_label(table, name){
     /*<<camlinternalOO.ml:169:2>>*/ try{
     var
      _t_ =
         /*<<camlinternalOO.ml:170:4>>*/ caml_call2(Meths[17], name, table[3]);
     return _t_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
     var label =  /*<<camlinternalOO.ml:172:16>>*/ new_method(table);
      /*<<camlinternalOO.ml:173:29>>*/ table[3] =
      caml_call3(Meths[2], name, label, table[3]);
      /*<<camlinternalOO.ml:174:30>>*/ table[4] =
      caml_call3(Labs[2], label, 1, table[4]);
      /*<<camlinternalOO.ml:175:4>>*/ return label;
    }
    /*<<camlinternalOO.ml:175:9>>*/ }
   function get_method_labels(table, names){
     /*<<camlinternalOO.ml:178:36>>*/ return Stdlib_Array[16].call
            (null,
             function(_t_){
               /*<<camlinternalOO.ml:178:12>>*/ return get_method_label
                      (table, _t_);
             },
             names) /*<<camlinternalOO.ml:178:42>>*/ ;
   }
   function set_method(table, label, element){
     /*<<camlinternalOO.ml:181:2>>*/ Stdlib_Atomic[8].call(null, method_count);
     /*<<camlinternalOO.ml:182:5>>*/ return caml_call2
             (Labs[17], label, table[4])
            ? ( /*<<camlinternalOO.ml:152:2>>*/ resize
               (table, label + 1 | 0),
               /*<<camlinternalOO.ml:153:2>>*/ caml_check_bound
                (table[2], label)
               [label + 1]
              = element,
              0)
            : (table[6] = [0, [0, label, element], table[6]], 0) /*<<camlinternalOO.ml:185:64>>*/ ;
   }
   function get_method(table, label){
     /*<<camlinternalOO.ml:188:2>>*/ try{
     var
      _t_ =
         /*<<camlinternalOO.ml:188:6>>*/ Stdlib_List[54].call
         (null, label, table[6]);
     return _t_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[8])
       /*<<camlinternalOO.ml:189:20>>*/ return caml_check_bound
               (table[2], label)
              [label + 1] /*<<camlinternalOO.ml:189:41>>*/ ;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<camlinternalOO.ml:189:41>>*/ }
   function to_list(arr){
     /*<<camlinternalOO.ml:192:2>>*/ return 0 === arr
            ? 0
            :  /*<<camlinternalOO.ml:192:37>>*/ Stdlib_Array
               [10].call
              (null, arr) /*<<camlinternalOO.ml:192:54>>*/ ;
   }
   function narrow(table, vars, virt_meths, concr_meths){
    var
     vars$0 =  /*<<camlinternalOO.ml:195:13>>*/ to_list(vars),
     virt_meths$0 =  /*<<camlinternalOO.ml:196:19>>*/ to_list(virt_meths),
     concr_meths$0 =  /*<<camlinternalOO.ml:197:20>>*/ to_list(concr_meths),
     virt_meth_labs =
        /*<<camlinternalOO.ml:198:23>>*/ Stdlib_List[21].call
        (null,
         function(_t_){
           /*<<camlinternalOO.ml:198:32>>*/ return get_method_label
                  (table, _t_);
         },
         virt_meths$0),
     concr_meth_labs =
        /*<<camlinternalOO.ml:199:24>>*/ Stdlib_List[21].call
        (null,
         function(_t_){
           /*<<camlinternalOO.ml:199:33>>*/ return get_method_label
                  (table, _t_);
         },
         concr_meths$0);
     /*<<camlinternalOO.ml:200:2>>*/ table[5] =
     [0,
      [0, table[3], table[4], table[6], table[7], virt_meth_labs, vars$0],
      table[5]];
     /*<<camlinternalOO.ml:205:4>>*/ table[7] =
     caml_call3
      (Vars[24],
       function(lab, info, tvars){
         /*<<camlinternalOO.ml:207:11>>*/ return Stdlib_List[38].call
                 (null, lab, vars$0)
                ?  /*<<camlinternalOO.ml:207:34>>*/ caml_call3
                  (Vars[2], lab, info, tvars)
                : tvars /*<<camlinternalOO.ml:207:68>>*/ ;
       },
       table[7],
       Vars[1]);
    var
     by_name =  /*<<camlinternalOO.ml:209:2>>*/ [0, Meths[1]],
     by_label =  /*<<camlinternalOO.ml:210:2>>*/ [0, Labs[1]];
     /*<<camlinternalOO.ml:211:2>>*/ Stdlib_List[29].call
     (null,
      function(met, label){
        /*<<camlinternalOO.ml:213:18>>*/ by_name[1] =
        caml_call3(Meths[2], met, label, by_name[1]);
       var _s_ =  /*<<camlinternalOO.ml:214:7>>*/ by_label[1];
       try{
        var
         _t_ =
            /*<<camlinternalOO.ml:216:17>>*/ caml_call2
            (Labs[17], label, table[4]),
         _r_ = _t_;
       }
       catch(exn$0){
        var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
        if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
        var _r_ =  /*<<camlinternalOO.ml:216:74>>*/ 1;
       }
        /*<<camlinternalOO.ml:215:10>>*/ by_label[1] =
        caml_call3(Labs[2], label, _r_, _s_);
        /*<<camlinternalOO.ml:217:21>>*/ return 0;
      },
      concr_meths$0,
      concr_meth_labs);
     /*<<camlinternalOO.ml:219:2>>*/ Stdlib_List[29].call
     (null,
      function(met, label){
        /*<<camlinternalOO.ml:221:18>>*/ by_name[1] =
        caml_call3(Meths[2], met, label, by_name[1]);
        /*<<camlinternalOO.ml:222:19>>*/ by_label[1] =
        caml_call3(Labs[2], label, 0, by_label[1]);
        /*<<camlinternalOO.ml:222:49>>*/ return 0;
      },
      virt_meths$0,
      virt_meth_labs);
     /*<<camlinternalOO.ml:223:29>>*/ table[3] = by_name[1];
     /*<<camlinternalOO.ml:225:2>>*/ table[4] = by_label[1];
     /*<<camlinternalOO.ml:227:5>>*/ table[6] =
     Stdlib_List[28].call
      (null,
       function(met, hm){
        var lab =  /*<<camlinternalOO.ml:228:7>>*/ met[1];
         /*<<camlinternalOO.ml:229:13>>*/ return Stdlib_List[38].call
                 (null, lab, virt_meth_labs)
                ? hm
                : [0, met, hm] /*<<camlinternalOO.ml:229:62>>*/ ;
       },
       table[6],
       0);
     /*<<camlinternalOO.ml:231:9>>*/ return 0;
   }
   function widen(table){
    var
     match =
        /*<<camlinternalOO.ml:235:4>>*/ Stdlib_List[7].call(null, table[5]),
     vars =  /*<<camlinternalOO.ml:235:33>>*/ match[6],
     virt_meths = match[5],
     saved_vars = match[4],
     saved_hidden_meths = match[3],
     by_label = match[2],
     by_name = match[1];
     /*<<camlinternalOO.ml:237:27>>*/ table[5] =
     Stdlib_List[8].call(null, table[5]);
     /*<<camlinternalOO.ml:239:5>>*/ table[7] =
     Stdlib_List[27].call
      (null,
       function(s, v){
        var
         _r_ =
            /*<<camlinternalOO.ml:240:30>>*/ caml_call2(Vars[17], v, table[7]);
         /*<<camlinternalOO.ml:240:54>>*/ return caml_call3
                (Vars[2], v, _r_, s) /*<<camlinternalOO.ml:240:56>>*/ ;
       },
       saved_vars,
       vars);
     /*<<camlinternalOO.ml:242:2>>*/ table[3] = by_name;
     /*<<camlinternalOO.ml:243:2>>*/ table[4] = by_label;
     /*<<camlinternalOO.ml:245:5>>*/ table[6] =
     Stdlib_List[28].call
      (null,
       function(met, hm){
        var lab =  /*<<camlinternalOO.ml:246:7>>*/ met[1];
         /*<<camlinternalOO.ml:247:13>>*/ return Stdlib_List[38].call
                 (null, lab, virt_meths)
                ? hm
                : [0, met, hm] /*<<camlinternalOO.ml:247:58>>*/ ;
       },
       table[6],
       saved_hidden_meths);
     /*<<camlinternalOO.ml:249:25>>*/ return 0;
   }
   function new_variable(table, name){
     /*<<camlinternalOO.ml:257:2>>*/ try{
     var
      _r_ =
         /*<<camlinternalOO.ml:257:6>>*/ caml_call2(Vars[17], name, table[7]);
     return _r_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
     var index =  /*<<camlinternalOO.ml:252:2>>*/ table[1];
      /*<<camlinternalOO.ml:253:2>>*/ table[1] = index + 1 | 0;
      /*<<camlinternalOO.ml:260:17>>*/ if(name !== "")
       /*<<camlinternalOO.ml:260:37>>*/ table[7] =
       caml_call3(Vars[2], name, index, table[7]);
      /*<<camlinternalOO.ml:261:4>>*/ return index;
    }
    /*<<camlinternalOO.ml:261:9>>*/ }
   function to_array(arr){
     /*<<camlinternalOO.ml:264:5>>*/ return runtime.caml_equal(arr, 0)
            ? [0]
            : arr /*<<camlinternalOO.ml:264:41>>*/ ;
   }
   function new_methods_variables(table, meths, vals){
    var
     meths$0 =  /*<<camlinternalOO.ml:267:14>>*/ to_array(meths),
     nmeths =  /*<<camlinternalOO.ml:268:2>>*/ meths$0.length - 1,
     nvals = vals.length - 1,
     res =
        /*<<camlinternalOO.ml:269:12>>*/ caml_array_make
        (nmeths + nvals | 0, 0),
     _l_ =  /*<<camlinternalOO.ml:270:2>>*/ nmeths - 1 | 0;
    if(_l_ >= 0){
     var i$0 = 0;
     for(;;){
      var
       _q_ =
          /*<<camlinternalOO.ml:271:38>>*/  /*<<camlinternalOO.ml:271:15>>*/ get_method_label
          (table,
            /*<<camlinternalOO.ml:271:38>>*/ caml_check_bound(meths$0, i$0)
            [i$0 + 1]);
       /*<<camlinternalOO.ml:271:4>>*/ caml_check_bound(res, i$0)[i$0 + 1] = _q_;
      var _r_ =  /*<<camlinternalOO.ml:271:47>>*/ i$0 + 1 | 0;
      if(_l_ === i$0) break;
      i$0 = _r_;
     }
    }
    var _m_ =  /*<<camlinternalOO.ml:273:2>>*/ nvals - 1 | 0;
    if(_m_ >= 0){
     var i = 0;
     for(;;){
      var
       _n_ =  /*<<camlinternalOO.ml:274:49>>*/ i + nmeths | 0,
       _o_ =
          /*<<camlinternalOO.ml:274:41>>*/  /*<<camlinternalOO.ml:274:22>>*/ new_variable
          (table,
            /*<<camlinternalOO.ml:274:41>>*/ caml_check_bound(vals, i)[i + 1]);
       /*<<camlinternalOO.ml:274:4>>*/ caml_check_bound(res, _n_)[_n_ + 1] = _o_;
      var _p_ =  /*<<camlinternalOO.ml:274:49>>*/ i + 1 | 0;
      if(_m_ === i) break;
      i = _p_;
     }
    }
     /*<<camlinternalOO.ml:276:2>>*/ return res;
    /*<<camlinternalOO.ml:276:5>>*/ }
   var
    cst_camlinternalOO_ml =  /*<<?>>*/ "camlinternalOO.ml",
    _a_ =
       /*<<camlinternalOO.ml:158:34>>*/ [0, cst_camlinternalOO_ml, 279, 50];
   function get_variable(table, name){
     /*<<camlinternalOO.ml:279:2>>*/ try{
     var
      _l_ =
         /*<<camlinternalOO.ml:279:6>>*/ caml_call2(Vars[17], name, table[7]);
     return _l_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[8])
       /*<<camlinternalOO.ml:279:50>>*/ throw caml_maybe_attach_backtrace
             ([0, Assert_failure, _a_], 1);
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<camlinternalOO.ml:279:62>>*/ }
   function get_variables(table, names){
     /*<<camlinternalOO.ml:282:32>>*/ return Stdlib_Array[16].call
            (null,
             function(_l_){
               /*<<camlinternalOO.ml:282:12>>*/ return get_variable
                      (table, _l_);
             },
             names) /*<<camlinternalOO.ml:282:38>>*/ ;
   }
   function add_initializer(table, f){
     /*<<camlinternalOO.ml:285:2>>*/ table[8] = [0, f, table[8]];
    return 0;
    /*<<camlinternalOO.ml:285:45>>*/ }
   function create_table(public_methods){
     /*<<camlinternalOO.ml:299:2>>*/ if(0 === public_methods)
      /*<<camlinternalOO.ml:299:40>>*/ return new_table([0]) /*<<camlinternalOO.ml:309:7>>*/ ;
    var
     tags =
        /*<<camlinternalOO.ml:301:13>>*/ Stdlib_Array[16].call
        (null, public_method_label, public_methods),
     table =  /*<<camlinternalOO.ml:302:14>>*/ new_table(tags);
     /*<<camlinternalOO.ml:303:2>>*/ Stdlib_Array[15].call
     (null,
      function(i, met){
       var lab =  /*<<camlinternalOO.ml:305:6>>*/ (i * 2 | 0) + 2 | 0;
        /*<<camlinternalOO.ml:306:32>>*/ table[3] =
        caml_call3(Meths[2], met, lab, table[3]);
        /*<<camlinternalOO.ml:307:32>>*/ table[4] =
        caml_call3(Labs[2], lab, 1, table[4]);
        /*<<camlinternalOO.ml:307:72>>*/ return 0;
      },
      public_methods);
     /*<<camlinternalOO.ml:308:18>>*/ return table;
    /*<<camlinternalOO.ml:309:7>>*/ }
   function init_class(table){
     /*<<camlinternalOO.ml:312:9>>*/ Stdlib_Atomic[7].call
     (null, inst_var_count, table[1] - 1 | 0);
     /*<<camlinternalOO.ml:313:24>>*/ table[8] =
     Stdlib_List[11].call(null, table[8]);
    var _l_ =  /*<<camlinternalOO.ml:314:30>>*/ Stdlib_Sys[10];
    return  /*<<camlinternalOO.ml:314:47>>*/ resize
            (table,
             3
             +
              caml_div
               ( /*<<camlinternalOO.ml:314:30>>*/ caml_check_bound
                  (table[2], 1)
                 [2]
                * 16
                | 0,
                _l_)
             | 0) /*<<camlinternalOO.ml:314:69>>*/ ;
   }
   function inherits(cla, vals, virt_meths, concr_meths, param, top){
    var env =  /*<<camlinternalOO.ml:316:13>>*/ param[3], super$ = param[2];
     /*<<camlinternalOO.ml:317:2>>*/ narrow
     (cla, vals, virt_meths, concr_meths);
    var
     init =
        /*<<camlinternalOO.ml:317:40>>*/ top
        ?  /*<<camlinternalOO.ml:319:16>>*/ caml_call2(super$, cla, env)
        :  /*<<camlinternalOO.ml:319:44>>*/ caml_call1(super$, cla);
     /*<<camlinternalOO.ml:320:2>>*/ widen(cla);
    var
     _i_ =  /*<<camlinternalOO.ml:326:7>>*/ to_array(concr_meths),
     _j_ =
        /*<<camlinternalOO.ml:324:5>>*/ [0,
        Stdlib_Array[16].call
         (null,
          function(nm){
            /*<<camlinternalOO.ml:325:43>>*/ return  /*<<camlinternalOO.ml:325:68>>*/ get_method
                   (cla,
                     /*<<camlinternalOO.ml:325:43>>*/ get_method_label(cla, nm)) /*<<camlinternalOO.ml:325:79>>*/ ;
          },
          _i_),
        0],
     _k_ =  /*<<camlinternalOO.ml:323:45>>*/ to_array(vals),
     _l_ =
        /*<<camlinternalOO.ml:323:16>>*/ [0,
        [0, init],
        [0,
         Stdlib_Array[16].call
          (null,
           function(_l_){
             /*<<camlinternalOO.ml:323:26>>*/ return get_variable(cla, _l_);
           },
           _k_),
         _j_]];
     /*<<camlinternalOO.ml:323:60>>*/ return Stdlib_Array[5].call(null, _l_) /*<<camlinternalOO.ml:326:31>>*/ ;
   }
   function make_class(pub_meths, class_init){
    var
     table =  /*<<camlinternalOO.ml:329:14>>*/ create_table(pub_meths),
     env_init =
        /*<<camlinternalOO.ml:330:17>>*/ caml_call1(class_init, table);
     /*<<camlinternalOO.ml:331:2>>*/ init_class(table);
     /*<<camlinternalOO.ml:332:3>>*/ return [0,
            caml_call1(env_init, 0),
            class_init,
            0] /*<<camlinternalOO.ml:332:24>>*/ ;
    /*<<camlinternalOO.ml:332:49>>*/ }
   function make_class_store(pub_meths, class_init, init_table){
    var
     table =  /*<<camlinternalOO.ml:338:14>>*/ create_table(pub_meths),
     env_init =
        /*<<camlinternalOO.ml:339:17>>*/ caml_call1(class_init, table);
     /*<<camlinternalOO.ml:340:2>>*/ init_class(table);
     /*<<camlinternalOO.ml:340:18>>*/ init_table[2] = class_init;
     /*<<camlinternalOO.ml:342:2>>*/ init_table[1] = env_init;
    return 0;
    /*<<camlinternalOO.ml:342:33>>*/ }
   function dummy_class(loc){
    function undef(param){
      /*<<camlinternalOO.ml:345:23>>*/ throw caml_maybe_attach_backtrace
            ([0, Stdlib[15], loc], 1);
     /*<<camlinternalOO.ml:345:61>>*/ }
     /*<<camlinternalOO.ml:346:2>>*/ return [0, undef, undef, 0];
    /*<<camlinternalOO.ml:346:38>>*/ }
   function create_object(table){
    var
     obj =
        /*<<camlinternalOO.ml:352:12>>*/ caml_obj_block
        (Stdlib_Obj[10], table[1]);
     /*<<camlinternalOO.ml:354:2>>*/ obj[1] = table[2];
     /*<<camlinternalOO.ml:355:10>>*/ return caml_set_oo_id(obj) /*<<camlinternalOO.ml:355:22>>*/ ;
   }
   function create_object_opt(obj_0, table){
     /*<<camlinternalOO.ml:358:2>>*/ if(obj_0)
      /*<<camlinternalOO.ml:358:35>>*/ return obj_0;
    var
     obj =
        /*<<camlinternalOO.ml:360:14>>*/ caml_obj_block
        (Stdlib_Obj[10], table[1]);
     /*<<camlinternalOO.ml:362:4>>*/ obj[1] = table[2];
     /*<<camlinternalOO.ml:363:12>>*/ return caml_set_oo_id(obj) /*<<camlinternalOO.ml:364:5>>*/ ;
   }
   function iter_f(obj, param$0){
    var param =  /*<<camlinternalOO.ml:366:15>>*/ param$0;
    for(;;){
     if(! param)  /*<<camlinternalOO.ml:368:12>>*/ return 0;
     var l =  /*<<camlinternalOO.ml:366:15>>*/ param[2], f = param[1];
      /*<<camlinternalOO.ml:369:12>>*/ caml_call1(f, obj);
      /*<<camlinternalOO.ml:369:17>>*/ param = l;
    }
    /*<<camlinternalOO.ml:369:31>>*/ }
   function run_initializers(obj, table){
    var
     inits =  /*<<camlinternalOO.ml:372:2>>*/ table[8],
     _i_ =  /*<<camlinternalOO.ml:373:2>>*/ 0 !== inits ? 1 : 0;
    return _i_ ?  /*<<camlinternalOO.ml:374:4>>*/ iter_f(obj, inits) : _i_ /*<<camlinternalOO.ml:374:20>>*/ ;
   }
   function run_initializers_opt(obj_0, obj, table){
     /*<<camlinternalOO.ml:377:2>>*/ if(obj_0)
      /*<<camlinternalOO.ml:377:35>>*/ return obj;
    var inits =  /*<<camlinternalOO.ml:377:44>>*/ table[8];
     /*<<camlinternalOO.ml:379:4>>*/ if(0 !== inits)
      /*<<camlinternalOO.ml:379:24>>*/ iter_f(obj, inits);
     /*<<camlinternalOO.ml:380:4>>*/ return obj;
    /*<<camlinternalOO.ml:381:5>>*/ }
   function create_object_and_run_initiali(obj_0, table){
     /*<<camlinternalOO.ml:384:2>>*/ if(obj_0)
      /*<<camlinternalOO.ml:384:35>>*/ return obj_0;
    var obj =  /*<<camlinternalOO.ml:385:14>>*/ create_object(table);
     /*<<camlinternalOO.ml:386:4>>*/ run_initializers(obj, table);
     /*<<camlinternalOO.ml:386:30>>*/ return obj;
    /*<<camlinternalOO.ml:388:5>>*/ }
   var
    _e_ =
       /*<<camlinternalOO.ml:158:34>>*/ [0, cst_camlinternalOO_ml, 416, 13];
   function get_data(param){
     /*<<camlinternalOO.ml:415:15>>*/ if(param)
      /*<<camlinternalOO.ml:417:19>>*/ return param[2];
     /*<<camlinternalOO.ml:416:13>>*/ throw caml_maybe_attach_backtrace
           ([0, Assert_failure, _e_], 1);
    /*<<camlinternalOO.ml:417:30>>*/ }
   var
    _b_ =
       /*<<camlinternalOO.ml:158:34>>*/ [0, cst_camlinternalOO_ml, 407, 13];
   function build_path(n, keys, tables){
    var res =  /*<<camlinternalOO.ml:423:2>>*/ [0, 0, 0, 0];
     /*<<camlinternalOO.ml:425:2>>*/ if(n < 0)
     var r$0 = res;
    else{
     var r = res, i = 0;
     for(;;){
      var
       _h_ =
          /*<<camlinternalOO.ml:426:21>>*/ [0,
          caml_check_bound(keys, i)[i + 1],
          r,
          0],
       _i_ =  /*<<camlinternalOO.ml:426:29>>*/ i + 1 | 0;
      if(n === i){var r$0 = _h_; break;}
      r = _h_;
      i = _i_;
     }
    }
     /*<<camlinternalOO.ml:406:24>>*/ if(! tables)
      /*<<camlinternalOO.ml:407:13>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _b_], 1);
     /*<<camlinternalOO.ml:408:19>>*/ tables[2] = r$0;
     /*<<camlinternalOO.ml:428:20>>*/ return res;
    /*<<camlinternalOO.ml:429:5>>*/ }
   var
    _c_ =
       /*<<camlinternalOO.ml:158:34>>*/ [0, cst_camlinternalOO_ml, 410, 13],
    _d_ = [0, cst_camlinternalOO_ml, 413, 13],
    _f_ = [0, cst_camlinternalOO_ml, 419, 13],
    _g_ = [0, cst_camlinternalOO_ml, 437, 17];
   function lookup_tables(root, keys){
    var root_data =  /*<<camlinternalOO.ml:451:8>>*/ get_data(root);
     /*<<camlinternalOO.ml:451:21>>*/ if(! root_data)
      /*<<camlinternalOO.ml:455:4>>*/ return build_path
             (keys.length - 2 | 0, keys, root) /*<<camlinternalOO.ml:455:48>>*/ ;
    var
     i$1 =  /*<<camlinternalOO.ml:453:4>>*/ keys.length - 2 | 0,
     i = i$1,
     tables$0 = root_data;
    for(;;){
      /*<<camlinternalOO.ml:432:2>>*/ if(0 > i)
       /*<<camlinternalOO.ml:432:16>>*/ return tables$0;
     var
      key =  /*<<camlinternalOO.ml:433:12>>*/ caml_check_bound(keys, i)[i + 1],
      tables$1 =  /*<<camlinternalOO.ml:448:2>>*/ tables$0;
     for(;;){
       /*<<camlinternalOO.ml:412:14>>*/ if(! tables$1)
        /*<<camlinternalOO.ml:413:13>>*/ throw caml_maybe_attach_backtrace
              ([0, Assert_failure, _d_], 1);
       /*<<camlinternalOO.ml:435:21>>*/ if(tables$1[1] === key){
       var tables_data =  /*<<camlinternalOO.ml:436:12>>*/ get_data(tables$1);
        /*<<camlinternalOO.ml:436:27>>*/ if(! tables_data)
         /*<<camlinternalOO.ml:437:17>>*/ throw caml_maybe_attach_backtrace
               ([0, Assert_failure, _g_], 1);
       var i$0 =  /*<<camlinternalOO.ml:439:10>>*/ i - 1 | 0;
       i = i$0;
       tables$0 = tables_data;
       break;
      }
       /*<<camlinternalOO.ml:418:15>>*/ if(! tables$1)
        /*<<camlinternalOO.ml:419:13>>*/ throw caml_maybe_attach_backtrace
              ([0, Assert_failure, _f_], 1);
      var tables =  /*<<camlinternalOO.ml:420:19>>*/ tables$1[3];
       /*<<camlinternalOO.ml:441:27>>*/ if(! tables){
        /*<<camlinternalOO.ml:409:24>>*/ if(! tables$1)
         /*<<camlinternalOO.ml:410:13>>*/ throw caml_maybe_attach_backtrace
               ([0, Assert_failure, _c_], 1);
       var next =  /*<<camlinternalOO.ml:444:10>>*/ [0, key, 0, 0];
        /*<<camlinternalOO.ml:411:19>>*/ tables$1[3] = next;
        /*<<camlinternalOO.ml:445:30>>*/ return build_path
               (i - 1 | 0, keys, next) /*<<camlinternalOO.ml:455:48>>*/ ;
      }
       /*<<camlinternalOO.ml:441:27>>*/ tables$1 = tables;
     }
    }
    /*<<camlinternalOO.ml:455:48>>*/ }
   function new_cache(table){
    var n =  /*<<camlinternalOO.ml:507:10>>*/ new_method(table);
     /*<<camlinternalOO.ml:508:2>>*/ if(0 === (n % 2 | 0))
     var n$0 = n;
    else
     var
      _h_ =  /*<<camlinternalOO.ml:509:40>>*/ Stdlib_Sys[10],
      n$0 =
        (2
         +
           /*<<camlinternalOO.ml:509:57>>*/ caml_div
           ( /*<<camlinternalOO.ml:509:40>>*/ caml_check_bound(table[2], 1)[2]
            * 16
            | 0,
            _h_)
         | 0)
         < n
         ? n
         :  /*<<camlinternalOO.ml:510:16>>*/ new_method(table);
     /*<<camlinternalOO.ml:512:2>>*/ caml_check_bound(table[2], n$0)[n$0 + 1]
    = 0;
     /*<<camlinternalOO.ml:512:34>>*/ return n$0;
    /*<<camlinternalOO.ml:513:3>>*/ }
   function method_impl(table, i, arr){
    function next(param){
      /*<<camlinternalOO.ml:543:16>>*/ i[1]++;
     var _h_ =  /*<<camlinternalOO.ml:543:24>>*/ i[1];
      /*<<camlinternalOO.ml:543:34>>*/ return caml_check_bound(arr, _h_)
             [_h_ + 1] /*<<camlinternalOO.ml:543:42>>*/ ;
    }
    var clo =  /*<<camlinternalOO.ml:544:8>>*/ next(0);
     /*<<camlinternalOO.ml:544:14>>*/ if(typeof clo === "number")
     switch(clo){
       case 0:
        var x =  /*<<camlinternalOO.ml:545:28>>*/ next(0);
         /*<<camlinternalOO.ml:459:18>>*/ return function(obj){
          /*<<camlinternalOO.ml:459:35>>*/ return x; /*<<camlinternalOO.ml:459:36>>*/ } /*<<camlinternalOO.ml:459:18>>*/ ;
       case 1:
        var n =  /*<<camlinternalOO.ml:546:24>>*/ next(0);
         /*<<camlinternalOO.ml:460:18>>*/ return function(obj){
          /*<<camlinternalOO.ml:460:34>>*/ return obj[n + 1]; /*<<camlinternalOO.ml:460:56>>*/ } /*<<camlinternalOO.ml:460:18>>*/ ;
       case 2:
        var
         e =  /*<<camlinternalOO.ml:547:24>>*/ next(0),
         n$0 =  /*<<camlinternalOO.ml:547:42>>*/ next(0);
         /*<<camlinternalOO.ml:462:2>>*/ return function(obj){
          /*<<camlinternalOO.ml:463:4>>*/ return obj[e + 1][n$0 + 1]; /*<<camlinternalOO.ml:463:65>>*/ } /*<<camlinternalOO.ml:462:2>>*/ ;
       case 3:
        var n$1 =  /*<<camlinternalOO.ml:548:24>>*/ next(0);
         /*<<camlinternalOO.ml:464:18>>*/ return function(obj){
          /*<<camlinternalOO.ml:464:34>>*/ return caml_call1
                 (obj[1][n$1 + 1], obj) /*<<camlinternalOO.ml:464:48>>*/ ;} /*<<camlinternalOO.ml:464:18>>*/ ;
       case 4:
        var n$2 =  /*<<camlinternalOO.ml:549:24>>*/ next(0);
         /*<<camlinternalOO.ml:465:18>>*/ return function(obj, x){
          /*<<camlinternalOO.ml:465:36>>*/ obj[n$2 + 1] = x;
         return 0; /*<<camlinternalOO.ml:465:60>>*/ } /*<<camlinternalOO.ml:465:18>>*/ ;
       case 5:
        var
         f =  /*<<camlinternalOO.ml:550:24>>*/ next(0),
         x$0 =  /*<<camlinternalOO.ml:550:42>>*/ next(0);
         /*<<camlinternalOO.ml:466:20>>*/ return function(obj){
          /*<<camlinternalOO.ml:466:37>>*/ return caml_call1(f, x$0) /*<<camlinternalOO.ml:466:40>>*/ ;} /*<<camlinternalOO.ml:466:20>>*/ ;
       case 6:
        var
         f$0 =  /*<<camlinternalOO.ml:551:24>>*/ next(0),
         n$3 =  /*<<camlinternalOO.ml:551:42>>*/ next(0);
         /*<<camlinternalOO.ml:467:20>>*/ return function(obj){
          /*<<camlinternalOO.ml:467:36>>*/ return caml_call1
                 (f$0, obj[n$3 + 1]) /*<<camlinternalOO.ml:467:62>>*/ ;} /*<<camlinternalOO.ml:467:20>>*/ ;
       case 7:
        var
         f$1 =  /*<<camlinternalOO.ml:553:14>>*/ next(0),
         e$0 =  /*<<camlinternalOO.ml:553:33>>*/ next(0),
         n$4 =  /*<<camlinternalOO.ml:553:51>>*/ next(0);
         /*<<camlinternalOO.ml:469:2>>*/ return function(obj){
          /*<<camlinternalOO.ml:470:4>>*/ return caml_call1
                 (f$1, obj[e$0 + 1][n$4 + 1]) /*<<camlinternalOO.ml:470:69>>*/ ;} /*<<camlinternalOO.ml:469:2>>*/ ;
       case 8:
        var
         f$2 =  /*<<camlinternalOO.ml:555:24>>*/ next(0),
         n$5 =  /*<<camlinternalOO.ml:555:42>>*/ next(0);
         /*<<camlinternalOO.ml:471:20>>*/ return function(obj){
          /*<<camlinternalOO.ml:471:38>>*/ return  /*<<camlinternalOO.ml:471:54>>*/ caml_call1
                 (f$2,
                   /*<<camlinternalOO.ml:471:38>>*/ caml_call1
                   (obj[1][n$5 + 1], obj)) /*<<camlinternalOO.ml:471:54>>*/ ;} /*<<camlinternalOO.ml:471:20>>*/ ;
       case 9:
        var
         f$3 =  /*<<camlinternalOO.ml:557:14>>*/ next(0),
         x$1 =  /*<<camlinternalOO.ml:557:32>>*/ next(0),
         y =  /*<<camlinternalOO.ml:557:50>>*/ next(0);
         /*<<camlinternalOO.ml:472:28>>*/ return function(obj){
          /*<<camlinternalOO.ml:472:45>>*/ return caml_call2(f$3, x$1, y) /*<<camlinternalOO.ml:472:50>>*/ ;} /*<<camlinternalOO.ml:472:28>>*/ ;
       case 10:
        var
         f$4 =  /*<<camlinternalOO.ml:560:14>>*/ next(0),
         x$2 =  /*<<camlinternalOO.ml:560:32>>*/ next(0),
         n$6 =  /*<<camlinternalOO.ml:560:50>>*/ next(0);
         /*<<camlinternalOO.ml:473:28>>*/ return function(obj){
          /*<<camlinternalOO.ml:473:44>>*/ return caml_call2
                 (f$4, x$2, obj[n$6 + 1]) /*<<camlinternalOO.ml:473:72>>*/ ;} /*<<camlinternalOO.ml:473:28>>*/ ;
       case 11:
        var
         f$5 =  /*<<camlinternalOO.ml:563:14>>*/ next(0),
         x$3 =  /*<<camlinternalOO.ml:563:32>>*/ next(0),
         e$1 =  /*<<camlinternalOO.ml:563:50>>*/ next(0),
         n$7 =  /*<<camlinternalOO.ml:563:69>>*/ next(0);
         /*<<camlinternalOO.ml:478:2>>*/ return function(obj){
          /*<<camlinternalOO.ml:479:4>>*/ return caml_call2
                 (f$5, x$3, obj[e$1 + 1][n$7 + 1]) /*<<camlinternalOO.ml:479:71>>*/ ;} /*<<camlinternalOO.ml:478:2>>*/ ;
       case 12:
        var
         f$6 =  /*<<camlinternalOO.ml:566:14>>*/ next(0),
         x$4 =  /*<<camlinternalOO.ml:566:32>>*/ next(0),
         n$8 =  /*<<camlinternalOO.ml:566:50>>*/ next(0);
         /*<<camlinternalOO.ml:474:27>>*/ return function(obj){
          /*<<camlinternalOO.ml:474:47>>*/ return  /*<<camlinternalOO.ml:474:63>>*/ caml_call2
                 (f$6,
                  x$4,
                   /*<<camlinternalOO.ml:474:47>>*/ caml_call1
                   (obj[1][n$8 + 1], obj)) /*<<camlinternalOO.ml:474:63>>*/ ;} /*<<camlinternalOO.ml:474:27>>*/ ;
       case 13:
        var
         f$7 =  /*<<camlinternalOO.ml:569:14>>*/ next(0),
         n$9 =  /*<<camlinternalOO.ml:569:32>>*/ next(0),
         x$5 =  /*<<camlinternalOO.ml:569:50>>*/ next(0);
         /*<<camlinternalOO.ml:475:26>>*/ return function(obj){
          /*<<camlinternalOO.ml:475:42>>*/ return caml_call2
                 (f$7, obj[n$9 + 1], x$5) /*<<camlinternalOO.ml:475:70>>*/ ;} /*<<camlinternalOO.ml:475:26>>*/ ;
       case 14:
        var
         f$8 =  /*<<camlinternalOO.ml:572:14>>*/ next(0),
         e$2 =  /*<<camlinternalOO.ml:572:32>>*/ next(0),
         n$10 =  /*<<camlinternalOO.ml:572:51>>*/ next(0),
         x$6 =  /*<<camlinternalOO.ml:572:69>>*/ next(0);
         /*<<camlinternalOO.ml:481:2>>*/ return function(obj){
          /*<<camlinternalOO.ml:482:4>>*/ return caml_call2
                 (f$8, obj[e$2 + 1][n$10 + 1], x$6) /*<<camlinternalOO.ml:482:71>>*/ ;} /*<<camlinternalOO.ml:481:2>>*/ ;
       case 15:
        var
         f$9 =  /*<<camlinternalOO.ml:575:14>>*/ next(0),
         n$11 =  /*<<camlinternalOO.ml:575:32>>*/ next(0),
         x$7 =  /*<<camlinternalOO.ml:575:50>>*/ next(0);
         /*<<camlinternalOO.ml:476:27>>*/ return function(obj){
          /*<<camlinternalOO.ml:476:45>>*/ return  /*<<camlinternalOO.ml:476:61>>*/ caml_call2
                 (f$9,
                   /*<<camlinternalOO.ml:476:45>>*/ caml_call1
                   (obj[1][n$11 + 1], obj),
                  x$7) /*<<camlinternalOO.ml:476:63>>*/ ;} /*<<camlinternalOO.ml:476:27>>*/ ;
       case 16:
        var
         n$12 =  /*<<camlinternalOO.ml:578:14>>*/ next(0),
         x$8 =  /*<<camlinternalOO.ml:578:32>>*/ next(0);
         /*<<camlinternalOO.ml:483:25>>*/ return function(obj){
          /*<<camlinternalOO.ml:483:41>>*/ return caml_call2
                 (obj[1][n$12 + 1], obj, x$8) /*<<camlinternalOO.ml:483:68>>*/ ;} /*<<camlinternalOO.ml:483:25>>*/ ;
       case 17:
        var
         n$13 =  /*<<camlinternalOO.ml:580:14>>*/ next(0),
         m =  /*<<camlinternalOO.ml:580:32>>*/ next(0);
         /*<<camlinternalOO.ml:485:2>>*/ return function(obj){
          /*<<camlinternalOO.ml:485:18>>*/ return caml_call2
                 (obj[1][n$13 + 1], obj, obj[m + 1]) /*<<camlinternalOO.ml:485:68>>*/ ;} /*<<camlinternalOO.ml:485:2>>*/ ;
       case 18:
        var
         n$14 =  /*<<camlinternalOO.ml:582:14>>*/ next(0),
         e$3 =  /*<<camlinternalOO.ml:582:32>>*/ next(0),
         m$0 =  /*<<camlinternalOO.ml:582:50>>*/ next(0);
         /*<<camlinternalOO.ml:487:2>>*/ return function(obj){
          /*<<camlinternalOO.ml:487:18>>*/ return caml_call2
                 (obj[1][n$14 + 1], obj, obj[e$3 + 1][m$0 + 1]) /*<<camlinternalOO.ml:488:69>>*/ ;} /*<<camlinternalOO.ml:487:2>>*/ ;
       case 19:
        var
         n$15 =  /*<<camlinternalOO.ml:585:14>>*/ next(0),
         m$1 =  /*<<camlinternalOO.ml:585:32>>*/ next(0);
         /*<<camlinternalOO.ml:490:2>>*/ return function(obj){
         var
          _h_ =
             /*<<camlinternalOO.ml:490:44>>*/ caml_call1(obj[1][m$1 + 1], obj);
          /*<<camlinternalOO.ml:490:60>>*/ return caml_call2
                 (obj[1][n$15 + 1], obj, _h_);} /*<<camlinternalOO.ml:490:2>>*/ ;
       case 20:
        var
         m$2 =  /*<<camlinternalOO.ml:587:14>>*/ next(0),
         x$9 =  /*<<camlinternalOO.ml:587:32>>*/ next(0);
         /*<<camlinternalOO.ml:587:57>>*/ new_cache(table);
         /*<<camlinternalOO.ml:492:2>>*/ return function(obj){
          /*<<camlinternalOO.ml:492:18>>*/ return caml_call1
                 (caml_get_public_method(x$9, m$2), x$9) /*<<camlinternalOO.ml:492:58>>*/ ;} /*<<camlinternalOO.ml:492:2>>*/ ;
       case 21:
        var
         m$3 =  /*<<camlinternalOO.ml:589:14>>*/ next(0),
         n$16 =  /*<<camlinternalOO.ml:589:32>>*/ next(0);
         /*<<camlinternalOO.ml:589:56>>*/ new_cache(table);
         /*<<camlinternalOO.ml:494:2>>*/ return function(obj){
         var _h_ =  /*<<camlinternalOO.ml:495:4>>*/ obj[n$16 + 1];
         return caml_call1(caml_get_public_method(_h_, m$3), _h_) /*<<camlinternalOO.ml:496:32>>*/ ;} /*<<camlinternalOO.ml:494:2>>*/ ;
       case 22:
        var
         m$4 =  /*<<camlinternalOO.ml:591:14>>*/ next(0),
         e$4 =  /*<<camlinternalOO.ml:591:32>>*/ next(0),
         n$17 =  /*<<camlinternalOO.ml:591:50>>*/ next(0);
         /*<<camlinternalOO.ml:592:21>>*/ new_cache(table);
         /*<<camlinternalOO.ml:498:2>>*/ return function(obj){
         var _h_ =  /*<<camlinternalOO.ml:499:4>>*/ obj[e$4 + 1][n$17 + 1];
         return caml_call1(caml_get_public_method(_h_, m$4), _h_) /*<<camlinternalOO.ml:502:34>>*/ ;} /*<<camlinternalOO.ml:498:2>>*/ ;
       default:
        var
         m$5 =  /*<<camlinternalOO.ml:594:14>>*/ next(0),
         n$18 =  /*<<camlinternalOO.ml:594:32>>*/ next(0);
         /*<<camlinternalOO.ml:594:57>>*/ new_cache(table);
         /*<<camlinternalOO.ml:504:2>>*/ return function(obj){
         var
          _h_ =
             /*<<camlinternalOO.ml:505:14>>*/ caml_call1
             (obj[1][n$18 + 1], obj);
          /*<<camlinternalOO.ml:505:30>>*/ return caml_call1
                 (caml_get_public_method(_h_, m$5), _h_) /*<<camlinternalOO.ml:505:59>>*/ ;} /*<<camlinternalOO.ml:504:2>>*/ ;
     }
     /*<<camlinternalOO.ml:595:24>>*/ return clo;
    /*<<camlinternalOO.ml:595:37>>*/ }
   function set_methods(table, methods){
    var
     len =  /*<<camlinternalOO.ml:598:2>>*/ methods.length - 1,
     i =  /*<<camlinternalOO.ml:598:36>>*/ [0, 0];
     /*<<camlinternalOO.ml:599:2>>*/ for(;;){
     if(i[1] >= len) return 0;
     var
      _h_ =  /*<<camlinternalOO.ml:600:4>>*/ i[1],
      label =
         /*<<camlinternalOO.ml:600:16>>*/ caml_check_bound(methods, _h_)
         [_h_ + 1],
      clo =  /*<<camlinternalOO.ml:600:42>>*/ method_impl(table, i, methods);
      /*<<camlinternalOO.ml:601:4>>*/ set_method(table, label, clo);
      /*<<camlinternalOO.ml:601:30>>*/ i[1]++;
    }
    /*<<camlinternalOO.ml:603:6>>*/ }
   function stats(param){
    var
     _g_ =
        /*<<camlinternalOO.ml:613:16>>*/ Stdlib_Atomic[3].call
        (null, inst_var_count),
     _h_ =
        /*<<camlinternalOO.ml:612:14>>*/ Stdlib_Atomic[3].call
        (null, method_count);
     /*<<camlinternalOO.ml:611:14>>*/ return [0,
            Stdlib_Atomic[3].call(null, table_count),
            _h_,
            _g_] /*<<camlinternalOO.ml:611:36>>*/ ;
    /*<<camlinternalOO.ml:613:44>>*/ }
    /*<<camlinternalOO.ml:158:34>>*/ runtime.caml_register_global
    (18,
     [0,
      public_method_label,
      new_method,
      new_variable,
      new_methods_variables,
      get_variable,
      get_variables,
      get_method_label,
      get_method_labels,
      get_method,
      set_method,
      set_methods,
      narrow,
      widen,
      add_initializer,
      dummy_table,
      create_table,
      init_class,
      inherits,
      make_class,
      make_class_store,
      dummy_class,
      copy,
      create_object,
      create_object_opt,
      run_initializers,
      run_initializers_opt,
      create_object_and_run_initiali,
      lookup_tables,
      [0, 1, 1, 1, 3, 16],
      stats],
     "CamlinternalOO");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Oo
//# unitInfo: Requires: CamlinternalOO
//# shape: Stdlib__Oo:[F(1),F(1),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    CamlinternalOO = runtime.caml_get_global_data().CamlinternalOO,
    copy = CamlinternalOO[22],
    new_method = CamlinternalOO[1],
    public_method_label = CamlinternalOO[1];
   runtime.caml_register_global
    (1, [0, copy, new_method, public_method_label], "Stdlib__Oo");
   return;
  }
  (globalThis));

//# unitInfo: Provides: CamlinternalMod
//# unitInfo: Requires: CamlinternalLazy, CamlinternalOO, Stdlib, Stdlib__Obj
//# shape: CamlinternalMod:[F(2),F(3)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_check_bound = runtime.caml_check_bound,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_obj_tag = runtime.caml_obj_tag;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    CamlinternalLazy = global_data.CamlinternalLazy,
    CamlinternalOO = global_data.CamlinternalOO,
    Assert_failure = global_data.Assert_failure;
   function init_mod_block(loc, comps$0){
    var
     length =  /*<<camlinternalMod.ml:52:2>>*/ comps$0.length - 1,
     modu =
        /*<<camlinternalMod.ml:53:13>>*/ runtime.caml_obj_block(0, length),
     _e_ =  /*<<camlinternalMod.ml:54:2>>*/ length - 1 | 0;
    if(_e_ >= 0){
     var i = 0;
     for(;;){
      var
       shape =
          /*<<camlinternalMod.ml:55:30>>*/ caml_check_bound(comps$0, i)[i + 1];
       /*<<camlinternalMod.ml:24:2>>*/ if(typeof shape === "number")
       switch(shape){
         case 0:
          let i$1 =  /*<<camlinternalMod.ml:27:7>>*/ i;
          var
           fn =
             function(x){
              var fn =  /*<<camlinternalMod.ml:28:38>>*/ modu[i$1 + 1];
               /*<<camlinternalMod.ml:29:9>>*/ if(fn$0 === fn)
                /*<<camlinternalMod.ml:30:11>>*/ throw caml_maybe_attach_backtrace
                      ([0, Stdlib[15], loc], 1);
               /*<<camlinternalMod.ml:32:11>>*/ return caml_call1(fn, x) /*<<camlinternalMod.ml:32:16>>*/ ;
             };
          let fn$0 = fn;
          var init =  /*<<camlinternalMod.ml:33:7>>*/ fn;
          break;
         case 1:
          var
           l =
              /*<<camlinternalMod.ml:35:7>>*/ runtime.caml_alloc_dummy_lazy(0);
          let l$0 = l, i$0 = i;
          runtime.caml_update_dummy_lazy
           (l,
            [246,
             function(param){
              var l =  /*<<camlinternalMod.ml:37:28>>*/ modu[i$0 + 1];
               /*<<camlinternalMod.ml:38:11>>*/ if(l$0 === l)
                /*<<camlinternalMod.ml:39:13>>*/ throw caml_maybe_attach_backtrace
                      ([0, Stdlib[15], loc], 1);
              var _f_ =  /*<<camlinternalMod.ml:41:13>>*/ caml_obj_tag(l);
              if(250 === _f_) return l[1];
              if(246 !== _f_ && 244 !== _f_) return l;
              return CamlinternalLazy[2].call(null, l);
             }]);
          var init =  /*<<camlinternalMod.ml:42:7>>*/ l;
          break;
         default:
          var
           init =
              /*<<camlinternalMod.ml:44:48>>*/  /*<<camlinternalMod.ml:44:16>>*/ CamlinternalOO
               [21].call
              (null, loc);
       }
      else if(0 === shape[0])
       var
        comps =  /*<<camlinternalMod.ml:24:2>>*/ shape[1],
        init =
           /*<<camlinternalMod.ml:46:42>>*/  /*<<camlinternalMod.ml:46:16>>*/ init_mod_block
           (loc, comps);
      else
       var
        v =  /*<<camlinternalMod.ml:24:2>>*/ shape[1],
        init =  /*<<camlinternalMod.ml:47:17>>*/ v;
       /*<<camlinternalMod.ml:49:2>>*/ modu[i + 1] = init;
      var _f_ =  /*<<camlinternalMod.ml:55:39>>*/ i + 1 | 0;
      if(_e_ === i) break;
      i = _f_;
     }
    }
     /*<<camlinternalMod.ml:57:2>>*/ return modu;
    /*<<camlinternalMod.ml:57:6>>*/ }
   function init_mod(loc, shape){
     /*<<camlinternalMod.ml:60:2>>*/ if
     (typeof shape !== "number" && 0 === shape[0]){
     var comps = shape[1];
      /*<<camlinternalMod.ml:62:5>>*/ return init_mod_block(loc, comps) /*<<camlinternalMod.ml:63:58>>*/ ;
    }
     /*<<camlinternalMod.ml:63:9>>*/ return Stdlib[2].call
            (null, "CamlinternalMod.init_mod: not a module") /*<<camlinternalMod.ml:63:58>>*/ ;
   }
   var
    cst_camlinternalMod_ml =  /*<<?>>*/ "camlinternalMod.ml",
    _a_ = [0, cst_camlinternalMod_ml, 72, 5],
    _b_ = [0, cst_camlinternalMod_ml, 81, 2];
   function update_mod_block(comps$0, modu, n){
     /*<<camlinternalMod.ml:81:10>>*/ if
     (0 === caml_obj_tag(n) && comps$0.length - 1 <= n.length - 1){
     var _c_ =  /*<<camlinternalMod.ml:82:2>>*/ comps$0.length - 2 | 0;
     if(_c_ >= 0){
      var i = 0;
      for(;;){
       var
        n$0 =  /*<<camlinternalMod.ml:83:35>>*/ n[i + 1],
        shape =
           /*<<camlinternalMod.ml:83:25>>*/ caml_check_bound(comps$0, i)
           [i + 1];
       a:
       if(typeof shape === "number"){
         /*<<camlinternalMod.ml:66:2>>*/ if(2 === shape){
          /*<<camlinternalMod.ml:72:13>>*/ if
          (0 === caml_obj_tag(n$0) && 3 === n$0.length - 1){
          var
           cl =  /*<<camlinternalMod.ml:73:14>>*/ modu[i + 1],
           j =  /*<<camlinternalMod.ml:74:5>>*/ 0;
          for(;;){
            /*<<camlinternalMod.ml:75:7>>*/ cl[j + 1] = n$0[j + 1];
           var _d_ =  /*<<camlinternalMod.ml:75:41>>*/ j + 1 | 0;
           if(2 === j) break a;
           j = _d_;
          }
         }
          /*<<camlinternalMod.ml:72:22>>*/ throw caml_maybe_attach_backtrace
                ([0, Assert_failure, _a_], 1);
        }
         /*<<camlinternalMod.ml:68:5>>*/ modu[i + 1] = n$0;
       }
       else if(0 === shape[0]){
        var comps =  /*<<camlinternalMod.ml:66:2>>*/ shape[1];
         /*<<camlinternalMod.ml:78:46>>*/ update_mod_block
         (comps, modu[i + 1], n$0);
       }
       var _e_ =  /*<<camlinternalMod.ml:83:50>>*/ i + 1 | 0;
       if(_c_ === i) break;
       i = _e_;
      }
     }
      /*<<camlinternalMod.ml:82:2>>*/ return 0;
    }
     /*<<camlinternalMod.ml:81:19>>*/ throw caml_maybe_attach_backtrace
           ([0, Assert_failure, _b_], 1);
    /*<<camlinternalMod.ml:84:6>>*/ }
   function update_mod(shape, o, n){
     /*<<camlinternalMod.ml:87:2>>*/ if
     (typeof shape !== "number" && 0 === shape[0]){
     var comps = shape[1];
      /*<<camlinternalMod.ml:89:5>>*/ return update_mod_block(comps, o, n) /*<<camlinternalMod.ml:90:60>>*/ ;
    }
     /*<<camlinternalMod.ml:90:9>>*/ return Stdlib[2].call
            (null, "CamlinternalMod.update_mod: not a module") /*<<camlinternalMod.ml:90:60>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (8, [0, init_mod, update_mod], "CamlinternalMod");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Dynarray
//# unitInfo: Requires: CamlinternalOO, Stdlib, Stdlib__Array, Stdlib__Obj, Stdlib__Printf, Stdlib__Seq, Stdlib__Sys
//# shape: Stdlib__Dynarray:[F(1)*,F(2),F(2),F(2),F(3),F(1)*,F(1)*,F(1),F(1),F(1),F(2),F(2),F(2),F(2),F(2),F(3),F(5),F(1),F(1),F(1),F(2),F(1),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(1),F(1),F(1),F(1),F(1),F(1),F(1)*,F(1),F(1)*,F(1)*,F(2),F(2),F(1),F(2),F(1),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_check_bound = runtime.caml_check_bound,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_obj_tag = runtime.caml_obj_tag,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib = global_data.Stdlib,
    Stdlib_Printf = global_data.Stdlib__Printf,
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Assert_failure = global_data.Assert_failure,
    Stdlib_Obj = global_data.Stdlib__Obj,
    CamlinternalOO = global_data.CamlinternalOO;
   function copy_from_array(a, dummy){
    var _af_ =  /*<<dynarray.ml:253:14>>*/ Stdlib_Obj[17];
    if(caml_obj_tag(a) !== _af_)
      /*<<dynarray.ml:254:8>>*/ return Stdlib_Array[7].call(null, a) /*<<dynarray.ml:263:9>>*/ ;
    var
     n =  /*<<dynarray.ml:255:11>>*/ a.length - 1,
     arr =  /*<<dynarray.ml:257:18>>*/ caml_array_make(n, dummy),
     _ae_ =  /*<<dynarray.ml:258:8>>*/ n - 1 | 0;
    if(_ae_ >= 0){
     var i = 0;
     for(;;){
      var v =  /*<<dynarray.ml:260:20>>*/ a[i + 1];
       /*<<dynarray.ml:259:10>>*/ arr[i + 1] = v;
      var _ag_ =  /*<<dynarray.ml:260:43>>*/ i + 1 | 0;
      if(_ae_ === i) break;
      i = _ag_;
     }
    }
     /*<<dynarray.ml:262:8>>*/ return arr;
    /*<<dynarray.ml:263:9>>*/ }
   var
    Dummy_found =
       /*<<?>>*/ [248,
       "Stdlib.Dynarray.Dummy.Array.Dummy_found",
       runtime.caml_fresh_oo_id(0)];
   function prefix(arr, n){
     /*<<dynarray.ml:346:6>>*/ return Stdlib_Array[6].call(null, arr, 0, n) /*<<dynarray.ml:346:23>>*/ ;
   }
   function extend(arr, length, dummy, new_capacity){
    var
     new_arr =
        /*<<dynarray.ml:351:20>>*/ caml_array_make(new_capacity, dummy);
     /*<<dynarray.ml:352:6>>*/ Stdlib_Array[9].call
     (null, arr, 0, new_arr, 0, length);
     /*<<dynarray.ml:352:39>>*/ return new_arr;
    /*<<dynarray.ml:353:13>>*/ }
   var _a_ =  /*<<?>>*/ [0, 0];
    /*<<dynarray.ml:223:4>>*/ if(! _a_[1]){
    var
     _b_ = CamlinternalOO[16].call(null, 0),
     _c_ = CamlinternalOO[3].call(null, _b_, "x");
    CamlinternalOO[17].call(null, _b_);
    _a_[1] =
     function(_ae_){
      var _ad_ =  /*<<?>>*/ CamlinternalOO[24].call(null, 0, _b_);
      _ad_[_c_ + 1] = _ae_[2];
      return _ad_;
     };
   }
   var
    r =  /*<<dynarray.ml:218:4>>*/ [0, 0],
    dummy =  /*<<dynarray.ml:223:4>>*/ caml_call1(_a_[1], [0, 0, r]);
    /*<<dynarray.ml:226:4>>*/ r[1] = [0, dummy];
   var
    cst_index =  /*<<?>>*/ ": index ",
    cst_Dynarray = "Dynarray.",
    _f_ =
       /*<<dynarray.ml:223:4>>*/ [0,
       [11,
        cst_Dynarray,
        [2,
         0,
         [11,
          cst_index,
          [4, 0, 0, 0, [11, " out of bounds (empty dynarray)", 0]]]]],
       "Dynarray.%s: index %d out of bounds (empty dynarray)"],
    _g_ =
      [0,
       [11,
        cst_Dynarray,
        [2,
         0,
         [11,
          cst_index,
          [4, 0, 0, 0, [11, " out of bounds (0..", [4, 0, 0, 0, [12, 41, 0]]]]]]],
       "Dynarray.%s: index %d out of bounds (0..%d)"];
   function index_out_of_bounds(f, i, length){
     /*<<dynarray.ml:378:4>>*/ return 0 === length
            ?  /*<<dynarray.ml:379:6>>*/ caml_call2
              (Stdlib_Printf[10].call(null, Stdlib[1], _f_), f, i)
            :  /*<<dynarray.ml:383:6>>*/ caml_call3
              (Stdlib_Printf[10].call(null, Stdlib[1], _g_),
               f,
               i,
               length - 1 | 0) /*<<dynarray.ml:385:24>>*/ ;
   }
   var
    cst_requested =  /*<<?>>*/ " requested",
    _h_ =
       /*<<dynarray.ml:223:4>>*/ [0,
       [11,
        cst_Dynarray,
        [2,
         0,
         [11, ": negative length ", [4, 0, 0, 0, [11, cst_requested, 0]]]]],
       "Dynarray.%s: negative length %d requested"];
   function negative_length_requested(f, n){
     /*<<dynarray.ml:388:4>>*/ return caml_call2
            (Stdlib_Printf[10].call(null, Stdlib[1], _h_), f, n) /*<<dynarray.ml:390:9>>*/ ;
   }
   var
    _i_ =
       /*<<dynarray.ml:223:4>>*/ [0,
       [11,
        cst_Dynarray,
        [2,
         0,
         [11, ": negative capacity ", [4, 0, 0, 0, [11, cst_requested, 0]]]]],
       "Dynarray.%s: negative capacity %d requested"];
   function negative_capacity_requested(f, n){
     /*<<dynarray.ml:393:4>>*/ return caml_call2
            (Stdlib_Printf[10].call(null, Stdlib[1], _i_), f, n) /*<<dynarray.ml:395:9>>*/ ;
   }
   var
    invalid_state_description =
       /*<<?>>*/ "Invalid dynarray (unsynchronized concurrent length change)",
    _k_ =
       /*<<dynarray.ml:223:4>>*/ [0,
       [2,
        0,
        [11,
         ": missing element at position ",
         [4, 0, 0, 0, [11, " < length ", [4, 0, 0, 0, 0]]]]],
       "%s: missing element at position %d < length %d"];
   function missing_element(i, length){
     /*<<dynarray.ml:412:4>>*/ return caml_call3
            (Stdlib_Printf[10].call(null, Stdlib[1], _k_),
             invalid_state_description,
             i,
             length) /*<<dynarray.ml:415:14>>*/ ;
   }
   var
    _o_ =
       /*<<dynarray.ml:223:4>>*/ [0,
       [11,
        cst_Dynarray,
        [2,
         0,
         [11,
          ": array length mismatch: ",
          [4, 0, 0, 0, [11, " <> ", [4, 0, 0, 0, 0]]]]]],
       "Dynarray.%s: array length mismatch: %d <> %d"];
   function different_lengths(f, length1, length2){
     /*<<dynarray.ml:442:4>>*/ return caml_call3
            (Stdlib_Printf[10].call(null, Stdlib[1], _o_),
             f,
             length1,
             length2) /*<<dynarray.ml:444:23>>*/ ;
   }
   var
    _m_ =
       /*<<dynarray.ml:223:4>>*/ [0,
       [11,
        cst_Dynarray,
        [2,
         0,
         [11,
          ": a length change from ",
          [4,
           0,
           0,
           0,
           [11, " to ", [4, 0, 0, 0, [11, " occurred during iteration", 0]]]]]]],
       "Dynarray.%s: a length change from %d to %d occurred during iteration"];
   function check_same_length(f, param, expected){
    var
     length_a =  /*<<dynarray.ml:452:2>>*/ param[1],
     _ad_ =  /*<<dynarray.ml:453:2>>*/ expected !== length_a ? 1 : 0;
    return _ad_
            ?  /*<<dynarray.ml:424:4>>*/ caml_call3
              (Stdlib_Printf[10].call(null, Stdlib[1], _m_),
               f,
               expected,
               length_a)
            : _ad_ /*<<dynarray.ml:455:41>>*/ ;
   }
   var
    _l_ =
       /*<<dynarray.ml:223:4>>*/ [0,
       [2,
        0,
        [11, ": length ", [4, 0, 0, 0, [11, " > capacity ", [4, 0, 0, 0, 0]]]]],
       "%s: length %d > capacity %d"];
   function check_valid_length(length, arr){
    var
     capacity =  /*<<dynarray.ml:462:2>>*/ arr.length - 1,
     _ad_ =  /*<<dynarray.ml:463:2>>*/ capacity < length ? 1 : 0;
    return _ad_
            ?  /*<<dynarray.ml:418:4>>*/ caml_call3
              (Stdlib_Printf[10].call(null, Stdlib[1], _l_),
               invalid_state_description,
               length,
               capacity)
            : _ad_ /*<<dynarray.ml:464:42>>*/ ;
   }
   function unsafe_get(arr, dummy, i, length){
    var v =  /*<<dynarray.ml:471:10>>*/ arr[i + 1];
     /*<<dynarray.ml:472:27>>*/ return v === dummy
            ?  /*<<dynarray.ml:473:7>>*/ missing_element(i, length)
            : v /*<<dynarray.ml:474:25>>*/ ;
   }
   function create(param){
     /*<<dynarray.ml:480:2>>*/ return [0, 0, [0], dummy];
    /*<<dynarray.ml:484:3>>*/ }
   function make(n, x){
     /*<<dynarray.ml:487:2>>*/ if(n < 0)
      /*<<dynarray.ml:487:16>>*/ negative_length_requested("make", n);
    var _ad_ =  /*<<dynarray.ml:244:14>>*/ Stdlib_Obj[16];
    if(caml_obj_tag(x) !== _ad_)
     var
      arr$0 =
         /*<<dynarray.ml:245:31>>*/  /*<<dynarray.ml:245:8>>*/ caml_array_make
         (n, x);
    else{
     var arr =  /*<<dynarray.ml:247:18>>*/ caml_array_make(n, dummy);
      /*<<dynarray.ml:248:8>>*/ Stdlib_Array[8].call(null, arr, 0, n, x);
     var arr$0 =  /*<<dynarray.ml:248:37>>*/ arr;
    }
     /*<<dynarray.ml:490:2>>*/ return [0, n, arr$0, dummy];
    /*<<dynarray.ml:494:3>>*/ }
   function init(n, f){
     /*<<dynarray.ml:497:2>>*/ if(n < 0)
      /*<<dynarray.ml:497:16>>*/ negative_length_requested("init", n);
    var
     arr =  /*<<dynarray.ml:291:16>>*/ caml_array_make(n, dummy),
     _ac_ =  /*<<dynarray.ml:292:6>>*/ n - 1 | 0;
    if(_ac_ >= 0){
     var i = 0;
     for(;;){
      var v =  /*<<dynarray.ml:293:39>>*/ caml_call1(f, i);
       /*<<dynarray.ml:293:8>>*/ arr[i + 1] = v;
      var _ad_ =  /*<<dynarray.ml:293:45>>*/ i + 1 | 0;
      if(_ac_ === i) break;
      i = _ad_;
     }
    }
     /*<<dynarray.ml:500:2>>*/ return [0, n, arr, dummy];
    /*<<dynarray.ml:504:3>>*/ }
   function get(param, i){
    var
     v =  /*<<dynarray.ml:512:10>>*/ caml_check_bound(param[2], i)[i + 1],
     dummy =  /*<<dynarray.ml:513:2>>*/ param[3];
     /*<<dynarray.ml:513:29>>*/ if(v !== dummy)
      /*<<dynarray.ml:240:4>>*/ return v;
    var length =  /*<<dynarray.ml:514:7>>*/ param[1];
     /*<<dynarray.ml:432:4>>*/ return i < length
            ?  /*<<dynarray.ml:433:6>>*/ missing_element(i, length)
            :  /*<<dynarray.ml:435:6>>*/ index_out_of_bounds("get", i, length) /*<<dynarray.ml:515:25>>*/ ;
   }
   function set(param, i, x){
    var length =  /*<<dynarray.ml:518:2>>*/ param[1], arr = param[2];
     /*<<dynarray.ml:519:2>>*/ return length <= i
            ?  /*<<dynarray.ml:519:22>>*/ index_out_of_bounds
              ("set", i, length)
            : ( /*<<dynarray.ml:520:7>>*/ caml_check_bound
                (arr, i)
               [i + 1]
              = x,
              0) /*<<dynarray.ml:520:32>>*/ ;
   }
   function length(param){
     /*<<dynarray.ml:522:22>>*/ return param[1];
    /*<<dynarray.ml:522:30>>*/ }
   function is_empty(param){
     /*<<dynarray.ml:524:24>>*/ return 0 === param[1] ? 1 : 0;
    /*<<dynarray.ml:524:38>>*/ }
   function copy(param){
    var
     length =  /*<<dynarray.ml:526:9>>*/ param[1],
     arr = param[2],
     dummy = param[3];
     /*<<dynarray.ml:527:2>>*/ check_valid_length(length, arr);
    var arr$0 =  /*<<dynarray.ml:530:12>>*/ prefix(arr, length);
     /*<<dynarray.ml:531:2>>*/ return [0, length, arr$0, dummy];
    /*<<dynarray.ml:531:29>>*/ }
   var
    _n_ =
       /*<<dynarray.ml:223:4>>*/ [0,
       [11, cst_Dynarray, [2, 0, [11, ": empty array", 0]]],
       "Dynarray.%s: empty array"];
   function get_last(a){
    var length =  /*<<dynarray.ml:534:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:535:2>>*/ check_valid_length(length, arr);
     /*<<dynarray.ml:535:31>>*/ if(0 === length)
      /*<<dynarray.ml:438:4>>*/ caml_call1
      (Stdlib_Printf[10].call(null, Stdlib[1], _n_), "get_last");
     /*<<dynarray.ml:539:2>>*/ return unsafe_get
            (arr, dummy, length - 1 | 0, length) /*<<dynarray.ml:539:47>>*/ ;
   }
   function find_last(param){
    var
     length =  /*<<dynarray.ml:542:2>>*/ param[1],
     arr = param[2],
     dummy = param[3];
     /*<<dynarray.ml:543:2>>*/ check_valid_length(length, arr);
     /*<<dynarray.ml:543:31>>*/ return 0 === length
            ? 0
            : [0,
               /*<<dynarray.ml:548:9>>*/ unsafe_get
               (arr, dummy, length - 1 | 0, length)] /*<<dynarray.ml:548:56>>*/ ;
   }
   function pop_last(param){
    var
     length =  /*<<dynarray.ml:553:2>>*/ param[1],
     arr = param[2],
     dummy = param[3];
     /*<<dynarray.ml:554:2>>*/ check_valid_length(length, arr);
     /*<<dynarray.ml:554:31>>*/ if(0 === length)
      /*<<dynarray.ml:556:21>>*/ throw caml_maybe_attach_backtrace
            (Stdlib[8], 1);
    var
     last =  /*<<dynarray.ml:557:2>>*/ length - 1 | 0,
     v =  /*<<dynarray.ml:559:10>>*/ unsafe_get(arr, dummy, last, length);
     /*<<dynarray.ml:560:2>>*/ arr[last + 1] = dummy;
     /*<<dynarray.ml:560:50>>*/ param[1] = last;
     /*<<dynarray.ml:562:2>>*/ return v;
    /*<<dynarray.ml:562:3>>*/ }
   function pop_last_opt(a){
     /*<<dynarray.ml:565:2>>*/ try{
     var x =  /*<<dynarray.ml:565:8>>*/ pop_last(a);
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[8])  /*<<dynarray.ml:566:27>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
     /*<<dynarray.ml:567:9>>*/ return [0, x];
    /*<<dynarray.ml:567:15>>*/ }
   function remove_last(a){
    var
     last =  /*<<dynarray.ml:570:2>>*/ a[1] - 1 | 0,
     _ab_ =  /*<<dynarray.ml:571:2>>*/ 0 <= last ? 1 : 0;
    if(_ab_){
      /*<<dynarray.ml:571:20>>*/ a[1] = last;
     var dummy =  /*<<dynarray.ml:573:4>>*/ a[3];
     caml_check_bound(a[2], last)[last + 1] = dummy;
     var _ac_ =  /*<<dynarray.ml:573:42>>*/ 0;
    }
    else
     var _ac_ =  /*<<dynarray.ml:571:2>>*/ _ab_;
    return _ac_;
    /*<<dynarray.ml:574:5>>*/ }
   function truncate(a, n){
     /*<<dynarray.ml:577:2>>*/ if(n < 0)
      /*<<dynarray.ml:577:16>>*/ negative_length_requested("truncate", n);
    var length =  /*<<dynarray.ml:578:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:579:2>>*/ return length <= n
            ? 0
            : (a
               [1]
              = n,
               /*<<dynarray.ml:582:56>>*/ Stdlib_Array[8].call
               (null, arr, n, length - n | 0, dummy)) /*<<dynarray.ml:583:5>>*/ ;
   }
   function clear(a){
     /*<<dynarray.ml:585:14>>*/ return truncate(a, 0) /*<<dynarray.ml:585:26>>*/ ;
   }
   function capacity(param){
     /*<<dynarray.ml:590:24>>*/ return param[2].length - 1;
    /*<<dynarray.ml:590:42>>*/ }
   var
    cst_dynarray_ml =  /*<<?>>*/ "dynarray.ml",
    _r_ =  /*<<dynarray.ml:223:4>>*/ [0, cst_dynarray_ml, 639, 4],
    _q_ = [0, cst_dynarray_ml, 644, 4],
    _p_ = [0, cst_dynarray_ml, 645, 4],
    _j_ =
      [0,
       [11,
        cst_Dynarray,
        [2,
         0,
         [11,
          ": cannot grow to requested length ",
          [4,
           0,
           0,
           0,
           [11, " (max_array_length is ", [4, 0, 0, 0, [12, 41, 0]]]]]]],
       "Dynarray.%s: cannot grow to requested length %d (max_array_length is %d)"];
   function ensure_capacity(a, capacity_request){
    var
     arr =  /*<<dynarray.ml:611:2>>*/ a[2],
     cur_capacity =  /*<<dynarray.ml:612:2>>*/ arr.length - 1,
     cst_ensure_capacity =  /*<<?>>*/ "ensure_capacity";
     /*<<dynarray.ml:613:2>>*/ if(0 > capacity_request)
      /*<<dynarray.ml:614:4>>*/ return negative_capacity_requested
             (cst_ensure_capacity, capacity_request) /*<<dynarray.ml:646:5>>*/ ;
     /*<<dynarray.ml:615:7>>*/ if(capacity_request <= cur_capacity)
      /*<<dynarray.ml:619:4>>*/ return 0;
     /*<<dynarray.ml:620:7>>*/ if(Stdlib_Sys[14] < capacity_request){
     var ___ =  /*<<dynarray.ml:398:4>>*/ Stdlib_Sys[14];
     caml_call3
      (Stdlib_Printf[10].call(null, Stdlib[1], _j_),
       cst_ensure_capacity,
       capacity_request,
       ___);
    }
    var
     n =
        /*<<dynarray.ml:593:2>>*/ 512 < cur_capacity
        ? cur_capacity + (cur_capacity / 2 | 0) | 0
        : cur_capacity * 2 | 0,
     _$_ =  /*<<dynarray.ml:608:6>>*/ Stdlib_Sys[14],
     _aa_ = Stdlib[17].call(null, 8, n),
     _ab_ =  /*<<dynarray.ml:608:16>>*/ Stdlib[16].call(null, _aa_, _$_),
     new_capacity =
        /*<<dynarray.ml:638:6>>*/ Stdlib[17].call
        (null, _ab_, capacity_request);
     /*<<dynarray.ml:639:4>>*/ if(0 >= new_capacity)
     throw caml_maybe_attach_backtrace([0, Assert_failure, _r_], 1);
    var
     new_arr =
        /*<<dynarray.ml:641:6>>*/ extend(arr, a[1], a[3], new_capacity);
     /*<<dynarray.ml:642:4>>*/ a[2] = new_arr;
     /*<<dynarray.ml:644:4>>*/ if(0 > capacity_request)
     throw caml_maybe_attach_backtrace([0, Assert_failure, _q_], 1);
     /*<<dynarray.ml:645:4>>*/ if(capacity_request <= new_arr.length - 1)
     return 0;
    throw caml_maybe_attach_backtrace([0, Assert_failure, _p_], 1);
    /*<<dynarray.ml:646:5>>*/ }
   function ensure_extra_capacity(a, extra_capacity_request){
     /*<<dynarray.ml:649:29>>*/ return ensure_capacity
            (a, a[1] + extra_capacity_request | 0) /*<<dynarray.ml:649:55>>*/ ;
   }
   function fit_capacity(param){
     /*<<dynarray.ml:652:2>>*/ return param[2].length - 1 === param[1]
            ? 0
            : (param
               [2]
              =  /*<<dynarray.ml:654:16>>*/ prefix(param[2], param[1]),
              0) /*<<dynarray.ml:654:49>>*/ ;
   }
   function set_capacity(a, n){
     /*<<dynarray.ml:657:2>>*/ if(n < 0)
      /*<<dynarray.ml:658:4>>*/ negative_capacity_requested("set_capacity", n);
    var
     arr =  /*<<dynarray.ml:659:2>>*/ a[2],
     cur_capacity =  /*<<dynarray.ml:660:2>>*/ arr.length - 1;
     /*<<dynarray.ml:661:2>>*/ if(n < cur_capacity){
      /*<<dynarray.ml:662:16>>*/ a[1] = Stdlib[16].call(null, a[1], n);
      /*<<dynarray.ml:663:13>>*/ a[2] = prefix(arr, n);
      /*<<dynarray.ml:663:37>>*/ return 0;
    }
    var
     _Z_ =  /*<<dynarray.ml:665:7>>*/ cur_capacity < n ? 1 : 0,
     ___ =
       _Z_
        ? (a[2] =  /*<<dynarray.ml:667:6>>*/ extend(arr, a[1], a[3], n), 0)
        : _Z_;
     /*<<dynarray.ml:665:7>>*/ return ___;
    /*<<dynarray.ml:668:5>>*/ }
   function reset(param){
     /*<<dynarray.ml:671:2>>*/ param[1] = 0;
     /*<<dynarray.ml:672:2>>*/ param[2] = [0];
    return 0;
    /*<<dynarray.ml:672:15>>*/ }
   function add_last_if_room(param, v){
    var length =  /*<<dynarray.ml:690:2>>*/ param[1], arr = param[2];
     /*<<dynarray.ml:692:2>>*/ return arr.length - 1 <= length
            ? 0
            : (param[1] = length + 1 | 0, arr[length + 1] = v, 1) /*<<dynarray.ml:698:5>>*/ ;
   }
   function add_last(a, x){
     /*<<dynarray.ml:701:5>>*/ if(add_last_if_room(a, x))
      /*<<dynarray.ml:701:31>>*/ return 0;
     /*<<dynarray.ml:701:25>>*/ for(;;){
      /*<<dynarray.ml:705:6>>*/ ensure_extra_capacity(a, 1);
     var _Z_ =  /*<<dynarray.ml:706:13>>*/ 1 - add_last_if_room(a, x);
      /*<<dynarray.ml:706:35>>*/ if(! _Z_) return _Z_;
    }
    /*<<dynarray.ml:709:5>>*/ }
   function append_list(a, li$0){
    var li =  /*<<dynarray.ml:712:2>>*/ li$0;
    for(;;){
     if(! li)  /*<<dynarray.ml:713:10>>*/ return 0;
     var xs =  /*<<dynarray.ml:712:2>>*/ li[2], x = li[1];
      /*<<dynarray.ml:714:15>>*/ add_last(a, x);
      /*<<dynarray.ml:714:27>>*/ li = xs;
    }
    /*<<dynarray.ml:714:45>>*/ }
   function append_iter(a, iter, b){
     /*<<dynarray.ml:717:2>>*/ return caml_call2
            (iter,
             function(x){
               /*<<dynarray.ml:717:17>>*/ return add_last(a, x) /*<<dynarray.ml:717:29>>*/ ;
             },
             b) /*<<dynarray.ml:717:32>>*/ ;
   }
   function append_seq(a, seq){
     /*<<dynarray.ml:720:2>>*/ return Stdlib_Seq[4].call
            (null,
             function(x){
               /*<<dynarray.ml:720:21>>*/ return add_last(a, x) /*<<dynarray.ml:720:33>>*/ ;
             },
             seq) /*<<dynarray.ml:720:38>>*/ ;
   }
   var
    _d_ =  /*<<dynarray.ml:223:4>>*/ [0, cst_dynarray_ml, 317, 13],
    _e_ = [0, cst_dynarray_ml, 327, 8];
   function blit_assume_room
   (src, src_pos, src_length, dst, dst_pos, dst_length, blit_length){
    var
     src_arr =  /*<<dynarray.ml:734:2>>*/ src[2],
     dst_arr =  /*<<dynarray.ml:735:2>>*/ dst[2],
     cst_blit =  /*<<?>>*/ "blit";
     /*<<dynarray.ml:736:2>>*/ check_same_length(cst_blit, src, src_length);
     /*<<dynarray.ml:737:2>>*/ check_same_length(cst_blit, dst, dst_length);
     /*<<dynarray.ml:737:56>>*/ if(dst_length < (dst_pos + blit_length | 0))
      /*<<dynarray.ml:738:45>>*/ dst[1] = dst_pos + blit_length | 0;
    var dst_dummy =  /*<<dynarray.ml:743:2>>*/ dst[3], src_dummy = src[3];
     /*<<dynarray.ml:307:6>>*/ if(src_dummy === dst_dummy)
      /*<<dynarray.ml:308:8>>*/ return Stdlib_Array[9].call
             (null, src_arr, src_pos, dst_arr, dst_pos, blit_length) /*<<dynarray.ml:746:20>>*/ ;
    var _S_ =  /*<<dynarray.ml:309:11>>*/ blit_length < 0;
    if(_S_)
     var _R_ = _S_;
    else{
     var _U_ = src_pos < 0;
     if(_U_)
      var _R_ = _U_;
     else{
      var _V_ = (src_pos + blit_length | 0) < 0;
      if(_V_)
       var _R_ = _V_;
      else{
       var _W_ = src_arr.length - 1 < (src_pos + blit_length | 0);
       if(_W_)
        var _R_ = _W_;
       else{
        var _X_ = dst_pos < 0;
        if(_X_)
         var _R_ = _X_;
        else
         var
          _Z_ = (dst_pos + blit_length | 0) < 0,
          _R_ = _Z_ || dst_arr.length - 1 < (dst_pos + blit_length | 0);
       }
      }
     }
    }
    if(_R_)
      /*<<dynarray.ml:317:13>>*/ throw caml_maybe_attach_backtrace
            ([0, Assert_failure, _d_], 1);
     /*<<dynarray.ml:327:8>>*/ if(src_arr === dst_arr)
     throw caml_maybe_attach_backtrace([0, Assert_failure, _e_], 1);
    var _T_ =  /*<<dynarray.ml:331:8>>*/ blit_length - 1 | 0;
    if(_T_ >= 0){
     var i = 0;
     for(;;){
       /*<<dynarray.ml:332:10>>*/ dst_arr[(dst_pos + i | 0) + 1] = src_arr[(src_pos + i | 0) + 1];
      var _Y_ =  /*<<dynarray.ml:333:48>>*/ i + 1 | 0;
      if(_T_ === i) break;
      i = _Y_;
     }
    }
     /*<<dynarray.ml:331:8>>*/ return 0;
    /*<<dynarray.ml:746:20>>*/ }
   var
    cst =  /*<<?>>*/ "..",
    _s_ =
       /*<<dynarray.ml:223:4>>*/ [0,
       [11, "Dynarray.blit: invalid blit length (", [4, 0, 0, 0, [12, 41, 0]]],
       "Dynarray.blit: invalid blit length (%d)"],
    _t_ =
      [0,
       [11,
        "Dynarray.blit: invalid source region (",
        [4,
         0,
         0,
         0,
         [11,
          cst,
          [4,
           0,
           0,
           0,
           [11, ") in source dynarray of length ", [4, 0, 0, 0, 0]]]]]],
       "Dynarray.blit: invalid source region (%d..%d) in source dynarray of length %d"],
    _u_ =
      [0,
       [11,
        "Dynarray.blit: invalid target region (",
        [4,
         0,
         0,
         0,
         [11,
          cst,
          [4,
           0,
           0,
           0,
           [11, ") in target dynarray of length ", [4, 0, 0, 0, 0]]]]]],
       "Dynarray.blit: invalid target region (%d..%d) in target dynarray of length %d"];
   function blit(src, src_pos, dst, dst_pos, len){
    var src_length =  /*<<dynarray.ml:522:22>>*/ src[1], dst_length = dst[1];
     /*<<dynarray.ml:751:2>>*/ if(len < 0)
      /*<<dynarray.ml:752:4>>*/ caml_call1
      (Stdlib_Printf[10].call(null, Stdlib[1], _s_), len);
    var
     _O_ =  /*<<dynarray.ml:755:2>>*/ src_pos < 0,
     _P_ = _O_ || src_length < (src_pos + len | 0);
    if(_P_)
      /*<<dynarray.ml:756:4>>*/ caml_call3
      (Stdlib_Printf[10].call(null, Stdlib[1], _t_),
       src_pos,
       src_pos + len | 0,
       src_length);
    var
     _Q_ =  /*<<dynarray.ml:760:2>>*/ dst_pos < 0,
     _R_ = _Q_ || dst_length < dst_pos;
    if(_R_)
      /*<<dynarray.ml:761:4>>*/ caml_call3
      (Stdlib_Printf[10].call(null, Stdlib[1], _u_),
       dst_pos,
       dst_pos + len | 0,
       dst_length);
     /*<<dynarray.ml:765:2>>*/ ensure_capacity(dst, dst_pos + len | 0);
     /*<<dynarray.ml:765:37>>*/ return blit_assume_room
            (src, src_pos, src_length, dst, dst_pos, dst_length, len) /*<<dynarray.ml:769:7>>*/ ;
   }
   function append_array_if_room(param, src){
    var
     length_a =  /*<<dynarray.ml:774:2>>*/ param[1],
     arr = param[2],
     length_b =  /*<<dynarray.ml:775:2>>*/ src.length - 1;
     /*<<dynarray.ml:776:2>>*/ if(arr.length - 1 < (length_a + length_b | 0))
      /*<<dynarray.ml:776:49>>*/ return 0;
     /*<<dynarray.ml:777:7>>*/ param[1] = length_a + length_b | 0;
    var _N_ =  /*<<dynarray.ml:298:14>>*/ Stdlib_Obj[17];
    if(caml_obj_tag(src) !== _N_)
      /*<<dynarray.ml:299:8>>*/ Stdlib_Array[9].call
      (null, src, 0, arr, length_a, length_b);
    else{
     var _K_ =  /*<<dynarray.ml:300:11>>*/ length_b - 1 | 0;
     if(_K_ >= 0){
      var i = 0;
      for(;;){
       var
        _L_ =  /*<<dynarray.ml:302:10>>*/ i | 0,
        v =  /*<<dynarray.ml:302:38>>*/ caml_check_bound(src, _L_)[_L_ + 1],
        _M_ =  /*<<dynarray.ml:302:55>>*/ length_a + i | 0;
        /*<<dynarray.ml:302:10>>*/ caml_check_bound(arr, _M_)[_M_ + 1] = v;
       var _O_ =  /*<<dynarray.ml:302:55>>*/ i + 1 | 0;
       if(_K_ === i) break;
       i = _O_;
      }
     }
    }
     /*<<dynarray.ml:805:57>>*/ return 1;
    /*<<dynarray.ml:807:5>>*/ }
   function append_array(a, b){
     /*<<dynarray.ml:810:5>>*/ if(append_array_if_room(a, b))
      /*<<dynarray.ml:810:35>>*/ return 0;
     /*<<dynarray.ml:810:29>>*/ for(;;){
      /*<<dynarray.ml:814:6>>*/ ensure_extra_capacity(a, b.length - 1);
     var _K_ =  /*<<dynarray.ml:815:13>>*/ 1 - append_array_if_room(a, b);
      /*<<dynarray.ml:815:39>>*/ if(! _K_) return _K_;
    }
    /*<<dynarray.ml:817:31>>*/ }
   var cst_append =  /*<<?>>*/ "append";
   function append_if_room(param, b, length_b){
    var length_a =  /*<<dynarray.ml:827:2>>*/ param[1], arr_a = param[2];
     /*<<dynarray.ml:828:2>>*/ return arr_a.length - 1
            < (length_a + length_b | 0)
            ? 0
            : ( /*<<dynarray.ml:832:4>>*/ blit_assume_room
               (b, 0, length_b, param, length_a, length_a, length_b),
               /*<<dynarray.ml:836:4>>*/ check_same_length
               (cst_append, b, length_b),
              1) /*<<dynarray.ml:838:5>>*/ ;
   }
   function append(a, b){
    var length_b =  /*<<dynarray.ml:522:22>>*/ b[1];
     /*<<dynarray.ml:842:5>>*/ if(append_if_room(a, b, length_b))
      /*<<dynarray.ml:842:39>>*/ return 0;
     /*<<dynarray.ml:842:33>>*/ for(;;){
      /*<<dynarray.ml:846:6>>*/ ensure_extra_capacity(a, length_b);
      /*<<dynarray.ml:853:6>>*/ check_same_length(cst_append, b, length_b);
     var _K_ =  /*<<dynarray.ml:854:13>>*/ 1 - append_if_room(a, b, length_b);
      /*<<dynarray.ml:854:43>>*/ if(! _K_) return _K_;
    }
    /*<<dynarray.ml:857:5>>*/ }
   function iter(f, k, a){
    var length =  /*<<dynarray.ml:877:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:901:2>>*/ check_valid_length(length, arr);
    var _J_ =  /*<<dynarray.ml:901:31>>*/ length - 1 | 0;
    if(_J_ >= 0){
     var i = 0;
     for(;;){
       /*<<dynarray.ml:903:6>>*/  /*<<dynarray.ml:903:4>>*/ caml_call1
       (k,  /*<<dynarray.ml:903:6>>*/ unsafe_get(arr, dummy, i, length));
      var _K_ =  /*<<dynarray.ml:903:40>>*/ i + 1 | 0;
      if(_J_ === i) break;
      i = _K_;
     }
    }
     /*<<dynarray.ml:905:2>>*/ return check_same_length(f, a, length) /*<<dynarray.ml:905:31>>*/ ;
   }
   function iter$0(k, a){
     /*<<dynarray.ml:908:2>>*/ return iter("iter", k, a) /*<<dynarray.ml:908:18>>*/ ;
   }
   function iteri(k, a){
    var length =  /*<<dynarray.ml:911:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:912:2>>*/ check_valid_length(length, arr);
    var _I_ =  /*<<dynarray.ml:912:31>>*/ length - 1 | 0;
    if(_I_ >= 0){
     var i = 0;
     for(;;){
       /*<<dynarray.ml:914:8>>*/  /*<<dynarray.ml:914:4>>*/ caml_call2
       (k, i,  /*<<dynarray.ml:914:8>>*/ unsafe_get(arr, dummy, i, length));
      var _J_ =  /*<<dynarray.ml:914:42>>*/ i + 1 | 0;
      if(_I_ === i) break;
      i = _J_;
     }
    }
     /*<<dynarray.ml:916:2>>*/ return check_same_length("iteri", a, length) /*<<dynarray.ml:916:37>>*/ ;
   }
   function map(f, a){
    var length =  /*<<dynarray.ml:919:2>>*/ a[1], arr_in = a[2], dummy = a[3];
     /*<<dynarray.ml:920:2>>*/ check_valid_length(length, arr_in);
    var
     arr_out =  /*<<dynarray.ml:921:16>>*/ caml_array_make(length, dummy),
     _H_ =  /*<<dynarray.ml:922:2>>*/ length - 1 | 0;
    if(_H_ >= 0){
     var i = 0;
     for(;;){
      var
       v =
          /*<<dynarray.ml:924:23>>*/  /*<<dynarray.ml:924:20>>*/ caml_call1
          (f,
            /*<<dynarray.ml:924:23>>*/ unsafe_get(arr_in, dummy, i, length));
       /*<<dynarray.ml:923:4>>*/ arr_out[i + 1] = v;
      var _I_ =  /*<<dynarray.ml:924:62>>*/ i + 1 | 0;
      if(_H_ === i) break;
      i = _I_;
     }
    }
     /*<<dynarray.ml:931:2>>*/ check_same_length("map", a, length);
     /*<<dynarray.ml:931:35>>*/ return [0, length, arr_out, dummy];
    /*<<dynarray.ml:932:5>>*/ }
   function mapi(f, a){
    var length =  /*<<dynarray.ml:935:2>>*/ a[1], arr_in = a[2], dummy = a[3];
     /*<<dynarray.ml:936:2>>*/ check_valid_length(length, arr_in);
    var
     arr_out =  /*<<dynarray.ml:937:16>>*/ caml_array_make(length, dummy),
     _G_ =  /*<<dynarray.ml:938:2>>*/ length - 1 | 0;
    if(_G_ >= 0){
     var i = 0;
     for(;;){
      var
       v =
          /*<<dynarray.ml:940:25>>*/  /*<<dynarray.ml:940:20>>*/ caml_call2
          (f,
           i,
            /*<<dynarray.ml:940:25>>*/ unsafe_get(arr_in, dummy, i, length));
       /*<<dynarray.ml:939:4>>*/ arr_out[i + 1] = v;
      var _H_ =  /*<<dynarray.ml:940:64>>*/ i + 1 | 0;
      if(_G_ === i) break;
      i = _H_;
     }
    }
     /*<<dynarray.ml:947:2>>*/ check_same_length("mapi", a, length);
     /*<<dynarray.ml:947:36>>*/ return [0, length, arr_out, dummy];
    /*<<dynarray.ml:948:5>>*/ }
   function fold_left(f, acc, a){
    var length =  /*<<dynarray.ml:951:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:952:2>>*/ check_valid_length(length, arr);
    var _E_ =  /*<<dynarray.ml:954:2>>*/ length - 1 | 0;
    if(_E_ < 0)
     var r$0 = acc;
    else{
     var r = acc, i = 0;
     for(;;){
      var
       v =  /*<<dynarray.ml:955:12>>*/ unsafe_get(arr, dummy, i, length),
       _F_ =  /*<<dynarray.ml:956:9>>*/ caml_call2(f, r, v),
       _G_ =  /*<<dynarray.ml:956:15>>*/ i + 1 | 0;
      if(_E_ === i){var r$0 = _F_; break;}
      r = _F_;
      i = _G_;
     }
    }
     /*<<dynarray.ml:958:2>>*/ check_same_length("fold_left", a, length);
     /*<<dynarray.ml:958:41>>*/ return r$0;
    /*<<dynarray.ml:959:4>>*/ }
   function fold_right(f, a, acc){
    var length =  /*<<dynarray.ml:962:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:963:2>>*/ check_valid_length(length, arr);
    var _C_ =  /*<<dynarray.ml:965:2>>*/ length - 1 | 0;
    if(_C_ < 0)
     var r$0 = acc;
    else{
     var r = acc, i = _C_;
     for(;;){
      var
       v =  /*<<dynarray.ml:966:12>>*/ unsafe_get(arr, dummy, i, length),
       _D_ =  /*<<dynarray.ml:967:9>>*/ caml_call2(f, v, r),
       _E_ =  /*<<dynarray.ml:967:15>>*/ i - 1 | 0;
      if(0 === i){var r$0 = _D_; break;}
      r = _D_;
      i = _E_;
     }
    }
     /*<<dynarray.ml:969:2>>*/ check_same_length("fold_right", a, length);
     /*<<dynarray.ml:969:42>>*/ return r$0;
    /*<<dynarray.ml:970:4>>*/ }
   function exists(p, a){
    var length =  /*<<dynarray.ml:973:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:974:2>>*/ check_valid_length(length, arr);
    var i =  /*<<dynarray.ml:981:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:976:4>>*/ if(i === length)
      var res =  /*<<dynarray.ml:976:23>>*/ 0;
     else{
      var
       _C_ =
          /*<<dynarray.ml:978:8>>*/  /*<<dynarray.ml:978:6>>*/ caml_call1
          (p,  /*<<dynarray.ml:978:8>>*/ unsafe_get(arr, dummy, i, length));
       /*<<dynarray.ml:978:42>>*/ if(! _C_){
       var i$0 = i + 1 | 0;
       i = i$0;
       continue;
      }
      var res = _C_;
     }
      /*<<dynarray.ml:982:2>>*/ check_same_length("exists", a, length);
      /*<<dynarray.ml:982:38>>*/ return res;
    }
    /*<<dynarray.ml:983:5>>*/ }
   function for_all(p, a){
    var length =  /*<<dynarray.ml:986:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:987:2>>*/ check_valid_length(length, arr);
    var i =  /*<<dynarray.ml:994:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:989:4>>*/ if(i === length)
      var res =  /*<<dynarray.ml:989:23>>*/ 1;
     else{
      var
       _C_ =
          /*<<dynarray.ml:991:8>>*/  /*<<dynarray.ml:991:6>>*/ caml_call1
          (p,  /*<<dynarray.ml:991:8>>*/ unsafe_get(arr, dummy, i, length));
       /*<<dynarray.ml:991:42>>*/ if(_C_){
       var i$0 = i + 1 | 0;
       i = i$0;
       continue;
      }
      var res = _C_;
     }
      /*<<dynarray.ml:995:2>>*/ check_same_length("for_all", a, length);
      /*<<dynarray.ml:995:39>>*/ return res;
    }
    /*<<dynarray.ml:996:5>>*/ }
   function exists2(p, a1, a2){
    var
     length1 =  /*<<dynarray.ml:999:2>>*/ a1[1],
     arr1 = a1[2],
     dummy1 = a1[3],
     length2 =  /*<<dynarray.ml:1000:2>>*/ a2[1],
     arr2 = a2[2],
     dummy2 = a2[3];
     /*<<dynarray.ml:1001:2>>*/ check_valid_length(length1, arr1);
     /*<<dynarray.ml:1002:2>>*/ check_valid_length(length2, arr2);
    var cst_exists2 =  /*<<?>>*/ "exists2";
     /*<<dynarray.ml:1002:33>>*/ if(length1 !== length2)
      /*<<dynarray.ml:1004:4>>*/ different_lengths
      (cst_exists2, length1, length2);
    var i =  /*<<dynarray.ml:1012:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1006:4>>*/ if(i === length1)
      var res =  /*<<dynarray.ml:1006:23>>*/ 0;
     else{
      var
       _C_ =  /*<<dynarray.ml:1009:8>>*/ unsafe_get(arr2, dummy2, i, length1),
       _B_ =
          /*<<dynarray.ml:1008:8>>*/  /*<<dynarray.ml:1008:6>>*/ caml_call2
          (p,
            /*<<dynarray.ml:1008:8>>*/ unsafe_get(arr1, dummy1, i, length1),
           _C_);
       /*<<dynarray.ml:1009:50>>*/ if(! _B_){
       var i$0 = i + 1 | 0;
       i = i$0;
       continue;
      }
      var res = _B_;
     }
      /*<<dynarray.ml:1013:2>>*/ check_same_length(cst_exists2, a1, length1);
      /*<<dynarray.ml:1014:2>>*/ check_same_length(cst_exists2, a2, length2);
      /*<<dynarray.ml:1014:48>>*/ return res;
    }
    /*<<dynarray.ml:1015:5>>*/ }
   function for_all2(p, a1, a2){
    var
     length1 =  /*<<dynarray.ml:1018:2>>*/ a1[1],
     arr1 = a1[2],
     dummy1 = a1[3],
     length2 =  /*<<dynarray.ml:1019:2>>*/ a2[1],
     arr2 = a2[2],
     dummy2 = a2[3];
     /*<<dynarray.ml:1020:2>>*/ check_valid_length(length1, arr1);
     /*<<dynarray.ml:1021:2>>*/ check_valid_length(length2, arr2);
    var cst_for_all2 =  /*<<?>>*/ "for_all2";
     /*<<dynarray.ml:1021:33>>*/ if(length1 !== length2)
      /*<<dynarray.ml:1023:4>>*/ different_lengths
      (cst_for_all2, length1, length2);
    var i =  /*<<dynarray.ml:1031:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1025:4>>*/ if(i === length1)
      var res =  /*<<dynarray.ml:1025:23>>*/ 1;
     else{
      var
       _B_ =  /*<<dynarray.ml:1028:8>>*/ unsafe_get(arr2, dummy2, i, length1),
       _A_ =
          /*<<dynarray.ml:1027:8>>*/  /*<<dynarray.ml:1027:6>>*/ caml_call2
          (p,
            /*<<dynarray.ml:1027:8>>*/ unsafe_get(arr1, dummy1, i, length1),
           _B_);
       /*<<dynarray.ml:1028:50>>*/ if(_A_){
       var i$0 = i + 1 | 0;
       i = i$0;
       continue;
      }
      var res = _A_;
     }
      /*<<dynarray.ml:1032:2>>*/ check_same_length(cst_for_all2, a1, length1);
      /*<<dynarray.ml:1033:2>>*/ check_same_length(cst_for_all2, a2, length2);
      /*<<dynarray.ml:1033:49>>*/ return res;
    }
    /*<<dynarray.ml:1034:5>>*/ }
   function filter(f, a){
    var b =  /*<<dynarray.ml:1037:10>>*/ create(0);
     /*<<dynarray.ml:1038:2>>*/ iter
     ("filter",
      function(x){
       var _A_ =  /*<<dynarray.ml:1038:30>>*/ caml_call1(f, x);
        /*<<dynarray.ml:1038:33>>*/ return _A_
               ?  /*<<dynarray.ml:1038:39>>*/ add_last(b, x)
               : _A_ /*<<dynarray.ml:1038:51>>*/ ;
      },
      a);
     /*<<dynarray.ml:1038:54>>*/ return b;
    /*<<dynarray.ml:1039:3>>*/ }
   function filter_map(f, a){
    var b =  /*<<dynarray.ml:1042:10>>*/ create(0);
     /*<<dynarray.ml:1043:2>>*/ iter
     ("filter_map",
      function(x){
       var match =  /*<<dynarray.ml:1044:10>>*/ caml_call1(f, x);
        /*<<dynarray.ml:1044:13>>*/ if(! match)
         /*<<dynarray.ml:1045:14>>*/ return 0;
       var y =  /*<<dynarray.ml:1044:13>>*/ match[1];
        /*<<dynarray.ml:1046:16>>*/ return add_last(b, y) /*<<dynarray.ml:1046:28>>*/ ;
      },
      a);
     /*<<dynarray.ml:1047:5>>*/ return b;
    /*<<dynarray.ml:1048:3>>*/ }
   function mem(x, a){
    var length =  /*<<dynarray.ml:1051:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1052:2>>*/ check_valid_length(length, arr);
    var i =  /*<<dynarray.ml:1059:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1054:4>>*/ if(i === length)
      var res =  /*<<dynarray.ml:1054:23>>*/ 0;
     else{
       /*<<dynarray.ml:1055:27>>*/ if
       (0
        !==
          /*<<dynarray.ml:1055:12>>*/ runtime.caml_compare
          ( /*<<dynarray.ml:1055:27>>*/ unsafe_get(arr, dummy, i, length), x)){
       var i$0 =  /*<<dynarray.ml:1057:9>>*/ i + 1 | 0;
       i = i$0;
       continue;
      }
      var res =  /*<<dynarray.ml:1056:6>>*/ 1;
     }
      /*<<dynarray.ml:1060:2>>*/ check_same_length("mem", a, length);
      /*<<dynarray.ml:1060:35>>*/ return res;
    }
    /*<<dynarray.ml:1061:5>>*/ }
   function memq(x, a){
    var length =  /*<<dynarray.ml:1064:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1065:2>>*/ check_valid_length(length, arr);
    var i =  /*<<dynarray.ml:1072:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1067:4>>*/ if(i === length)
      var res =  /*<<dynarray.ml:1067:23>>*/ 0;
     else{
       /*<<dynarray.ml:1068:12>>*/ if(unsafe_get(arr, dummy, i, length) !== x){
       var i$0 =  /*<<dynarray.ml:1070:9>>*/ i + 1 | 0;
       i = i$0;
       continue;
      }
      var res =  /*<<dynarray.ml:1069:6>>*/ 1;
     }
      /*<<dynarray.ml:1073:2>>*/ check_same_length("memq", a, length);
      /*<<dynarray.ml:1073:36>>*/ return res;
    }
    /*<<dynarray.ml:1074:5>>*/ }
   function find_opt(p, a){
    var length =  /*<<dynarray.ml:1077:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1078:2>>*/ check_valid_length(length, arr);
    var i =  /*<<dynarray.ml:1086:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1080:4>>*/ if(i === length)
      var res =  /*<<dynarray.ml:1080:23>>*/ 0;
     else{
      var x =  /*<<dynarray.ml:1082:14>>*/ unsafe_get(arr, dummy, i, length);
       /*<<dynarray.ml:1083:9>>*/ if(! caml_call1(p, x)){
       var i$0 =  /*<<dynarray.ml:1084:11>>*/ i + 1 | 0;
       i = i$0;
       continue;
      }
      var res =  /*<<dynarray.ml:1083:18>>*/ [0, x];
     }
      /*<<dynarray.ml:1087:2>>*/ check_same_length("find_opt", a, length);
      /*<<dynarray.ml:1087:40>>*/ return res;
    }
    /*<<dynarray.ml:1088:5>>*/ }
   function find_index(p, a){
    var length =  /*<<dynarray.ml:1091:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1092:2>>*/ check_valid_length(length, arr);
    var i =  /*<<dynarray.ml:1100:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1094:4>>*/ if(i === length)
      var res =  /*<<dynarray.ml:1094:23>>*/ 0;
     else{
      var x =  /*<<dynarray.ml:1096:14>>*/ unsafe_get(arr, dummy, i, length);
       /*<<dynarray.ml:1097:9>>*/ if(! caml_call1(p, x)){
       var i$0 =  /*<<dynarray.ml:1098:11>>*/ i + 1 | 0;
       i = i$0;
       continue;
      }
      var res =  /*<<dynarray.ml:1097:18>>*/ [0, i];
     }
      /*<<dynarray.ml:1101:2>>*/ check_same_length("find_index", a, length);
      /*<<dynarray.ml:1101:42>>*/ return res;
    }
    /*<<dynarray.ml:1102:5>>*/ }
   function find_map(p, a){
    var length =  /*<<dynarray.ml:1105:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1106:2>>*/ check_valid_length(length, arr);
    var i =  /*<<dynarray.ml:1114:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1108:4>>*/ if(i === length)
      var res =  /*<<dynarray.ml:1108:23>>*/ 0;
     else{
      var
       r =
          /*<<dynarray.ml:1110:14>>*/  /*<<dynarray.ml:1110:12>>*/ caml_call1
          (p,  /*<<dynarray.ml:1110:14>>*/ unsafe_get(arr, dummy, i, length));
       /*<<dynarray.ml:1110:48>>*/ if(! r){
       var i$0 =  /*<<dynarray.ml:1111:16>>*/ i + 1 | 0;
       i = i$0;
       continue;
      }
      var res =  /*<<dynarray.ml:1110:48>>*/ r;
     }
      /*<<dynarray.ml:1115:2>>*/ check_same_length("find_map", a, length);
      /*<<dynarray.ml:1115:40>>*/ return res;
    }
    /*<<dynarray.ml:1116:5>>*/ }
   function find_mapi(p, a){
    var length =  /*<<dynarray.ml:1119:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1120:2>>*/ check_valid_length(length, arr);
    var i =  /*<<dynarray.ml:1128:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1122:4>>*/ if(i === length)
      var res =  /*<<dynarray.ml:1122:23>>*/ 0;
     else{
      var
       r =
          /*<<dynarray.ml:1124:16>>*/  /*<<dynarray.ml:1124:12>>*/ caml_call2
          (p,
           i,
            /*<<dynarray.ml:1124:16>>*/ unsafe_get(arr, dummy, i, length));
       /*<<dynarray.ml:1124:50>>*/ if(! r){
       var i$0 =  /*<<dynarray.ml:1125:16>>*/ i + 1 | 0;
       i = i$0;
       continue;
      }
      var res =  /*<<dynarray.ml:1124:50>>*/ r;
     }
      /*<<dynarray.ml:1129:2>>*/ check_same_length("find_mapi", a, length);
      /*<<dynarray.ml:1129:41>>*/ return res;
    }
    /*<<dynarray.ml:1130:5>>*/ }
   function equal(eq, a1, a2){
    var
     length =  /*<<dynarray.ml:1133:2>>*/ a1[1],
     arr1 = a1[2],
     dum1 = a1[3],
     len2 =  /*<<dynarray.ml:1134:2>>*/ a2[1],
     arr2 = a2[2],
     dum2 = a2[3];
     /*<<dynarray.ml:1135:2>>*/ if(length !== len2)
      /*<<dynarray.ml:1135:25>>*/ return 0;
     /*<<dynarray.ml:1137:4>>*/ check_valid_length(length, arr1);
     /*<<dynarray.ml:1138:4>>*/ check_valid_length(length, arr2);
    var i =  /*<<dynarray.ml:1147:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1140:6>>*/ if(i === length)
      var r =  /*<<dynarray.ml:1140:25>>*/ 1;
     else{
      var
       _A_ =  /*<<dynarray.ml:1144:10>>*/ unsafe_get(arr2, dum2, i, length),
       _z_ =
          /*<<dynarray.ml:1143:10>>*/  /*<<dynarray.ml:1142:8>>*/ caml_call2
          (eq,
            /*<<dynarray.ml:1143:10>>*/ unsafe_get(arr1, dum1, i, length),
           _A_);
       /*<<dynarray.ml:1144:50>>*/ if(_z_){
       var i$0 = i + 1 | 0;
       i = i$0;
       continue;
      }
      var r = _z_;
     }
     var cst_equal =  /*<<?>>*/ "equal";
      /*<<dynarray.ml:1148:4>>*/ check_same_length(cst_equal, a1, length);
      /*<<dynarray.ml:1149:4>>*/ check_same_length(cst_equal, a2, length);
      /*<<dynarray.ml:1149:40>>*/ return r;
    }
    /*<<dynarray.ml:1151:5>>*/ }
   function compare(cmp, a1, a2){
    var
     length =  /*<<dynarray.ml:1154:2>>*/ a1[1],
     arr1 = a1[2],
     dum1 = a1[3],
     len2 =  /*<<dynarray.ml:1155:2>>*/ a2[1],
     arr2 = a2[2],
     dum2 = a2[3];
     /*<<dynarray.ml:1156:2>>*/ if(length !== len2)
      /*<<dynarray.ml:1156:25>>*/ return length - len2 | 0;
     /*<<dynarray.ml:1158:4>>*/ check_valid_length(length, arr1);
     /*<<dynarray.ml:1159:4>>*/ check_valid_length(length, arr2);
    var i =  /*<<dynarray.ml:1171:12>>*/ 0;
    for(;;){
      /*<<dynarray.ml:1161:6>>*/ if(i === length)
      var r =  /*<<dynarray.ml:1161:25>>*/ 0;
     else{
      var
       _z_ =  /*<<dynarray.ml:1166:12>>*/ unsafe_get(arr2, dum2, i, length),
       c =
          /*<<dynarray.ml:1165:12>>*/  /*<<dynarray.ml:1164:10>>*/ caml_call2
          (cmp,
            /*<<dynarray.ml:1165:12>>*/ unsafe_get(arr1, dum1, i, length),
           _z_);
       /*<<dynarray.ml:1168:8>>*/ if(0 === c){
       var i$0 =  /*<<dynarray.ml:1169:13>>*/ i + 1 | 0;
       i = i$0;
       continue;
      }
      var r =  /*<<dynarray.ml:1168:8>>*/ c;
     }
     var cst_compare =  /*<<?>>*/ "compare";
      /*<<dynarray.ml:1172:4>>*/ check_same_length(cst_compare, a1, length);
      /*<<dynarray.ml:1173:4>>*/ check_same_length(cst_compare, a2, length);
      /*<<dynarray.ml:1173:42>>*/ return r;
    }
    /*<<dynarray.ml:1175:5>>*/ }
   function of_array(a){
    var
     length =  /*<<dynarray.ml:1185:2>>*/ a.length - 1,
     arr =  /*<<dynarray.ml:1187:12>>*/ copy_from_array(a, dummy);
     /*<<dynarray.ml:1188:2>>*/ return [0, length, arr, dummy];
    /*<<dynarray.ml:1192:3>>*/ }
   function to_array(a){
    var length =  /*<<dynarray.ml:1195:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1196:2>>*/ check_valid_length(length, arr);
    var
     res =
        /*<<dynarray.ml:1197:12>>*/ Stdlib_Array[1].call
        (null,
         length,
         function(i){
           /*<<dynarray.ml:1198:4>>*/ return unsafe_get(arr, dummy, i, length) /*<<dynarray.ml:1198:36>>*/ ;
         });
     /*<<dynarray.ml:1200:2>>*/ check_same_length("to_array", a, length);
     /*<<dynarray.ml:1200:40>>*/ return res;
    /*<<dynarray.ml:1201:5>>*/ }
   function of_list(li){
    var
     a =  /*<<dynarray.ml:1204:10>>*/ Stdlib_Array[11].call(null, li),
     length =  /*<<dynarray.ml:1205:2>>*/ a.length - 1,
     _z_ =  /*<<dynarray.ml:266:14>>*/ Stdlib_Obj[17],
     arr =
       caml_obj_tag(a) !== _z_
        ? a
        :  /*<<dynarray.ml:268:11>>*/ copy_from_array(a, dummy);
     /*<<dynarray.ml:1208:2>>*/ return [0, length, arr, dummy];
    /*<<dynarray.ml:1212:3>>*/ }
   function to_list(a){
    var length =  /*<<dynarray.ml:1215:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1216:2>>*/ check_valid_length(length, arr);
    var
     _x_ =  /*<<dynarray.ml:1218:2>>*/ length - 1 | 0,
     _w_ =  /*<<dynarray.ml:1216:31>>*/ 0;
     /*<<dynarray.ml:1218:2>>*/ if(_x_ < 0)
     var l$0 = _w_;
    else{
     var l = _w_, i = _x_;
     for(;;){
      var
       _y_ =
          /*<<dynarray.ml:1219:9>>*/ [0, unsafe_get(arr, dummy, i, length), l],
       _z_ =  /*<<dynarray.ml:1219:41>>*/ i - 1 | 0;
      if(0 === i){var l$0 = _y_; break;}
      l = _y_;
      i = _z_;
     }
    }
     /*<<dynarray.ml:1221:2>>*/ check_same_length("to_list", a, length);
     /*<<dynarray.ml:1221:39>>*/ return l$0;
    /*<<dynarray.ml:1222:4>>*/ }
   function of_seq(seq){
    var init =  /*<<dynarray.ml:1225:13>>*/ create(0);
     /*<<dynarray.ml:1226:2>>*/ append_seq(init, seq);
     /*<<dynarray.ml:1226:21>>*/ return init;
    /*<<dynarray.ml:1227:6>>*/ }
   function to_seq(a){
    var length =  /*<<dynarray.ml:1230:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1231:2>>*/ check_valid_length(length, arr);
    function aux(i){
      /*<<dynarray.ml:1232:18>>*/ return function(param){
       /*<<dynarray.ml:1233:4>>*/ check_same_length("to_seq", a, length);
       /*<<dynarray.ml:1233:40>>*/ if(length <= i)
        /*<<dynarray.ml:1234:24>>*/ return 0;
      var v =  /*<<dynarray.ml:1236:14>>*/ unsafe_get(arr, dummy, i, length);
       /*<<dynarray.ml:1237:19>>*/ return [0, v, aux(i + 1 | 0)] /*<<dynarray.ml:1237:30>>*/ ; /*<<dynarray.ml:1238:7>>*/ } /*<<dynarray.ml:1232:18>>*/ ;
     /*<<dynarray.ml:1238:7>>*/ }
     /*<<dynarray.ml:1240:2>>*/ return aux(0) /*<<dynarray.ml:1240:7>>*/ ;
   }
   function to_seq_reentrant(a){
    function aux(i){
      /*<<dynarray.ml:1243:18>>*/ return function(param){
       /*<<dynarray.ml:1244:20>>*/ if(a[1] <= i)
        /*<<dynarray.ml:1244:26>>*/ return 0;
      var v =  /*<<dynarray.ml:1246:14>>*/ get(a, i);
       /*<<dynarray.ml:1247:19>>*/ return [0, v, aux(i + 1 | 0)] /*<<dynarray.ml:1247:30>>*/ ; /*<<dynarray.ml:1248:7>>*/ } /*<<dynarray.ml:1243:18>>*/ ;
     /*<<dynarray.ml:1248:7>>*/ }
     /*<<dynarray.ml:1250:2>>*/ return aux(0) /*<<dynarray.ml:1250:7>>*/ ;
   }
   function to_seq_rev(a){
    var length =  /*<<dynarray.ml:1253:2>>*/ a[1], arr = a[2], dummy = a[3];
     /*<<dynarray.ml:1254:2>>*/ check_valid_length(length, arr);
    function aux(i){
      /*<<dynarray.ml:1255:18>>*/ return function(param){
       /*<<dynarray.ml:1256:4>>*/ check_same_length("to_seq_rev", a, length);
       /*<<dynarray.ml:1256:44>>*/ if(0 > i)
        /*<<dynarray.ml:1257:18>>*/ return 0;
      var v =  /*<<dynarray.ml:1259:14>>*/ unsafe_get(arr, dummy, i, length);
       /*<<dynarray.ml:1260:19>>*/ return [0, v, aux(i - 1 | 0)] /*<<dynarray.ml:1260:30>>*/ ; /*<<dynarray.ml:1261:7>>*/ } /*<<dynarray.ml:1255:18>>*/ ;
     /*<<dynarray.ml:1261:7>>*/ }
     /*<<dynarray.ml:1263:2>>*/ return aux(length - 1 | 0) /*<<dynarray.ml:1263:18>>*/ ;
   }
   function to_seq_rev_reentrant(a){
    function aux(i){
      /*<<dynarray.ml:1266:18>>*/ return function(param){
       /*<<dynarray.ml:1267:4>>*/ if(0 > i)
        /*<<dynarray.ml:1267:18>>*/ return 0;
       /*<<dynarray.ml:1268:25>>*/ if(a[1] <= i)
        /*<<dynarray.ml:1271:19>>*/ return aux(a[1] - 1 | 0)(0) /*<<dynarray.ml:1275:7>>*/ ;
      var v =  /*<<dynarray.ml:1273:14>>*/ get(a, i);
       /*<<dynarray.ml:1274:19>>*/ return [0, v, aux(i - 1 | 0)] /*<<dynarray.ml:1274:30>>*/ ; /*<<dynarray.ml:1275:7>>*/ } /*<<dynarray.ml:1266:18>>*/ ;
     /*<<dynarray.ml:1275:7>>*/ }
     /*<<dynarray.ml:1277:15>>*/ return aux(a[1] - 1 | 0) /*<<dynarray.ml:1277:20>>*/ ;
   }
   function unsafe_to_iarray(capacity, f){
    var a$0 =  /*<<dynarray.ml:1282:10>>*/ create(0);
     /*<<dynarray.ml:1283:2>>*/ set_capacity(a$0, capacity);
     /*<<dynarray.ml:1284:2>>*/ caml_call1(f, a$0);
    var
     length =  /*<<dynarray.ml:1284:5>>*/ a$0[1],
     arr$0 = a$0[2],
     dummy = a$0[3];
     /*<<dynarray.ml:1286:2>>*/ reset(a$0);
    var capacity$0 =  /*<<dynarray.ml:1286:9>>*/ arr$0.length - 1;
     /*<<dynarray.ml:1290:2>>*/ check_valid_length(length, arr$0);
    var
     values =
        /*<<dynarray.ml:1290:31>>*/ length === capacity$0
        ? arr$0
        :  /*<<dynarray.ml:1295:6>>*/ prefix(arr$0, length);
     /*<<dynarray.ml:1297:2>>*/ try{
      /*<<dynarray.ml:273:6>>*/ if(0 === values.length - 1)
      var arr = values;
     else{
      var _v_ =  /*<<dynarray.ml:274:48>>*/ Stdlib_Obj[16];
      if
       ( /*<<dynarray.ml:274:38>>*/ caml_obj_tag
         ( /*<<dynarray.ml:274:48>>*/ caml_check_bound(values, 0)[1])
        !== _v_)
       var arr =  /*<<dynarray.ml:274:54>>*/ values;
      else{
       var
        n =  /*<<dynarray.ml:276:13>>*/ values.length - 1,
        a =
           /*<<dynarray.ml:278:32>>*/  /*<<dynarray.ml:278:19>>*/ caml_array_make
           (n,  /*<<dynarray.ml:278:32>>*/ caml_check_bound(values, 0)[1]),
        _u_ =  /*<<dynarray.ml:279:10>>*/ n - 1 | 0;
       if(_u_ < 1)
        var arr = a;
       else{
        var i = 1;
        for(;;){
         var v =  /*<<dynarray.ml:280:46>>*/ values[i + 1];
          /*<<dynarray.ml:280:12>>*/ a[i + 1] = v;
         var _w_ =  /*<<dynarray.ml:280:69>>*/ i + 1 | 0;
         if(_u_ === i){var arr = a; break;}
         i = _w_;
        }
       }
      }
     }
      /*<<dynarray.ml:285:6>>*/ Stdlib_Array[15].call
      (null,
       function(i, v){
        var _w_ =  /*<<dynarray.ml:237:23>>*/ v === dummy ? 1 : 0;
         /*<<dynarray.ml:286:39>>*/ if(_w_)
          /*<<dynarray.ml:286:45>>*/ throw caml_maybe_attach_backtrace
                ([0, Dummy_found, i], 1);
         /*<<dynarray.ml:286:39>>*/ return _w_;
        /*<<dynarray.ml:286:66>>*/ },
       arr);
     var values$0 = arr;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] !== Dummy_found) throw caml_maybe_attach_backtrace(exn, 0);
     var
      i$0 = exn[2],
      values$0 =
         /*<<dynarray.ml:1299:70>>*/  /*<<dynarray.ml:1299:38>>*/ missing_element
         (i$0, length);
    }
     /*<<dynarray.ml:1301:2>>*/ return values$0;
    /*<<dynarray.ml:1301:31>>*/ }
    /*<<dynarray.ml:364:33>>*/ runtime.caml_register_global
    (72,
     [0,
      create,
      make,
      init,
      get,
      set,
      length,
      is_empty,
      get_last,
      find_last,
      copy,
      add_last,
      append_array,
      append_list,
      append,
      append_seq,
      append_iter,
      blit,
      pop_last_opt,
      pop_last,
      remove_last,
      truncate,
      clear,
      iter$0,
      iteri,
      map,
      mapi,
      fold_left,
      fold_right,
      filter,
      filter_map,
      exists,
      for_all,
      exists2,
      for_all2,
      mem,
      memq,
      find_opt,
      find_index,
      find_map,
      find_mapi,
      equal,
      compare,
      of_array,
      to_array,
      of_list,
      to_list,
      of_seq,
      to_seq,
      to_seq_reentrant,
      to_seq_rev,
      to_seq_rev_reentrant,
      capacity,
      ensure_capacity,
      ensure_extra_capacity,
      fit_capacity,
      set_capacity,
      reset,
      unsafe_to_iarray],
     "Stdlib__Dynarray");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Pqueue
//# unitInfo: Requires: Stdlib, Stdlib__Dynarray
//# shape: Stdlib__Pqueue:[F(1)*,F(1)*,F(1)*,F(1)*]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   var
    dummy = 0,
    global_data = runtime.caml_get_global_data(),
    Stdlib_Dynarray = global_data.Stdlib__Dynarray,
    Stdlib = global_data.Stdlib;
   function MakeMinPoly(E){
    var
     create = Stdlib_Dynarray[1],
     length = Stdlib_Dynarray[6],
     is_empty = Stdlib_Dynarray[7],
     clear = Stdlib_Dynarray[22];
    function left_child(i){
      /*<<pqueue.ml:49:23>>*/ return (2 * i | 0) + 1 | 0;
     /*<<pqueue.ml:49:32>>*/ }
    function right_child(i){
      /*<<pqueue.ml:50:24>>*/ return (2 * i | 0) + 2 | 0;
     /*<<pqueue.ml:50:33>>*/ }
    function parent_node(i){
      /*<<pqueue.ml:51:24>>*/ return (i - 1 | 0) / 2 | 0;
     /*<<pqueue.ml:51:35>>*/ }
    function sift_up(h, i$0, x){
     var i =  /*<<pqueue.ml:68:6>>*/ i$0;
     for(;;){
      if(0 === i)
        /*<<pqueue.ml:68:20>>*/ return Stdlib_Dynarray[5].call(null, h, 0, x) /*<<pqueue.ml:75:26>>*/ ;
      var
       p =  /*<<pqueue.ml:69:14>>*/ parent_node(i),
       y =  /*<<pqueue.ml:70:14>>*/ Stdlib_Dynarray[4].call(null, h, p);
       /*<<pqueue.ml:71:9>>*/ if(0 <= caml_call2(E[1], x, y))
        /*<<pqueue.ml:75:8>>*/ return Stdlib_Dynarray[5].call(null, h, i, x) /*<<pqueue.ml:75:26>>*/ ;
       /*<<pqueue.ml:72:8>>*/ Stdlib_Dynarray[5].call(null, h, i, y);
       /*<<pqueue.ml:72:26>>*/ i = p;
     }
     /*<<pqueue.ml:75:26>>*/ }
    function add(h, x){
     var i =  /*<<pqueue.ml:78:14>>*/ Stdlib_Dynarray[6].call(null, h);
      /*<<pqueue.ml:79:6>>*/ Stdlib_Dynarray[11].call(null, h, x);
     var _g_ =  /*<<pqueue.ml:79:27>>*/ 0 < i ? 1 : 0;
     return _g_ ?  /*<<pqueue.ml:80:20>>*/ sift_up(h, i, x) : _g_ /*<<pqueue.ml:80:33>>*/ ;
    }
    function add_iter(h, iter, x){
      /*<<pqueue.ml:83:18>>*/ return caml_call2
             (iter,
              function(_g_){ /*<<pqueue.ml:83:11>>*/ return add(h, _g_);},
              x) /*<<pqueue.ml:83:20>>*/ ;
    }
    function min_elt(h){
      /*<<pqueue.ml:86:9>>*/ return Stdlib_Dynarray[7].call(null, h)
             ? 0
             : [0,
                /*<<pqueue.ml:86:49>>*/ Stdlib_Dynarray[4].call(null, h, 0)] /*<<pqueue.ml:86:67>>*/ ;
    }
    function get_min_elt(h){
      /*<<pqueue.ml:89:9>>*/ if(Stdlib_Dynarray[7].call(null, h))
       /*<<pqueue.ml:89:34>>*/ Stdlib[1].call(null, "empty priority queue");
      /*<<pqueue.ml:90:6>>*/ return Stdlib_Dynarray[4].call(null, h, 0) /*<<pqueue.ml:90:22>>*/ ;
    }
    function lt(h, i, j){
     var
      _f_ =  /*<<pqueue.ml:93:35>>*/ Stdlib_Dynarray[4].call(null, h, j),
      _g_ =  /*<<pqueue.ml:93:16>>*/ Stdlib_Dynarray[4].call(null, h, i);
      /*<<pqueue.ml:93:6>>*/ return caml_call2(E[1], _g_, _f_) < 0 ? 1 : 0 /*<<pqueue.ml:93:53>>*/ ;
     /*<<pqueue.ml:93:57>>*/ }
    function sift_down(h, len, i$0, x){
     var i =  /*<<pqueue.ml:97:17>>*/ i$0;
     for(;;){
      var left = left_child(i);
       /*<<pqueue.ml:98:6>>*/ if(len <= left)
        /*<<pqueue.ml:98:26>>*/ return Stdlib_Dynarray[5].call(null, h, i, x) /*<<pqueue.ml:109:26>>*/ ;
      var
       right =  /*<<pqueue.ml:100:20>>*/ right_child(i),
       smallest =
          /*<<pqueue.ml:101:8>>*/ len <= right
          ? left
          :  /*<<pqueue.ml:102:11>>*/ lt(h, left, right) ? left : right,
       y =
          /*<<pqueue.ml:104:14>>*/ Stdlib_Dynarray[4].call(null, h, smallest);
       /*<<pqueue.ml:105:9>>*/ if(0 <= caml_call2(E[1], y, x))
        /*<<pqueue.ml:109:8>>*/ return Stdlib_Dynarray[5].call(null, h, i, x) /*<<pqueue.ml:109:26>>*/ ;
       /*<<pqueue.ml:106:8>>*/ Stdlib_Dynarray[5].call(null, h, i, y);
       /*<<pqueue.ml:106:26>>*/ i = smallest;
     }
     /*<<pqueue.ml:109:26>>*/ }
    function pop_min(h){
     var n =  /*<<pqueue.ml:112:14>>*/ Stdlib_Dynarray[6].call(null, h);
      /*<<pqueue.ml:113:6>>*/ if(0 === n)  /*<<pqueue.ml:113:20>>*/ return 0;
     var x =  /*<<pqueue.ml:114:14>>*/ Stdlib_Dynarray[19].call(null, h);
      /*<<pqueue.ml:115:6>>*/ if(1 === n)
       /*<<pqueue.ml:115:20>>*/ return [0, x];
     var r =  /*<<pqueue.ml:116:16>>*/ Stdlib_Dynarray[4].call(null, h, 0);
      /*<<pqueue.ml:117:8>>*/ sift_down(h, n - 1 | 0, 0, x);
      /*<<pqueue.ml:117:36>>*/ return [0, r];
     /*<<pqueue.ml:119:7>>*/ }
    function remove_min(h){
     var
      n =  /*<<pqueue.ml:122:14>>*/ Stdlib_Dynarray[6].call(null, h),
      _d_ =  /*<<pqueue.ml:123:6>>*/ 0 < n ? 1 : 0;
     if(_d_){
      var
       x =  /*<<pqueue.ml:124:16>>*/ Stdlib_Dynarray[19].call(null, h),
       _e_ =  /*<<pqueue.ml:125:8>>*/ 1 < n ? 1 : 0;
      if(_e_)
        /*<<pqueue.ml:125:22>>*/ return sift_down(h, n - 1 | 0, 0, x) /*<<pqueue.ml:126:7>>*/ ;
      var _f_ =  /*<<pqueue.ml:125:8>>*/ _e_;
     }
     else
      var _f_ =  /*<<pqueue.ml:123:6>>*/ _d_;
     return _f_;
     /*<<pqueue.ml:126:7>>*/ }
    var copy =  /*<<?>>*/ Stdlib_Dynarray[10];
    function heapify(h){
     var
      n =  /*<<pqueue.ml:136:14>>*/ Stdlib_Dynarray[6].call(null, h),
      _c_ =  /*<<pqueue.ml:137:6>>*/ (n / 2 | 0) - 1 | 0;
     if(_c_ >= 0){
      var i = _c_;
      for(;;){
        /*<<pqueue.ml:138:29>>*/  /*<<pqueue.ml:138:8>>*/ sift_down
        (h,
         n,
         i,
          /*<<pqueue.ml:138:29>>*/ Stdlib_Dynarray[4].call(null, h, i));
       var _d_ =  /*<<pqueue.ml:138:47>>*/ i - 1 | 0;
       if(0 === i) break;
       i = _d_;
      }
     }
      /*<<pqueue.ml:140:6>>*/ return h;
     /*<<pqueue.ml:140:7>>*/ }
    function of_array(a){
      /*<<pqueue.ml:143:6>>*/ return  /*<<pqueue.ml:143:25>>*/ heapify
             ( /*<<pqueue.ml:143:6>>*/ Stdlib_Dynarray[43].call(null, a)) /*<<pqueue.ml:143:36>>*/ ;
    }
    function of_list(l){
      /*<<pqueue.ml:146:6>>*/ return  /*<<pqueue.ml:146:24>>*/ heapify
             ( /*<<pqueue.ml:146:6>>*/ Stdlib_Dynarray[45].call(null, l)) /*<<pqueue.ml:146:35>>*/ ;
    }
    function of_iter(iter, x){
     var
      a =  /*<<pqueue.ml:149:14>>*/ Stdlib_Dynarray[1].call(null, 0),
      _b_ =  /*<<pqueue.ml:150:11>>*/ Stdlib_Dynarray[11];
      /*<<pqueue.ml:150:6>>*/ caml_call2
      (iter, function(_c_){ /*<<pqueue.ml:150:11>>*/ return _b_(a, _c_);}, x);
      /*<<pqueue.ml:150:34>>*/ return heapify(a) /*<<pqueue.ml:151:15>>*/ ;
    }
    var
     iter_unordered =  /*<<?>>*/ Stdlib_Dynarray[23],
     fold_unordered = Stdlib_Dynarray[27];
    return [0,
            create,
            length,
            is_empty,
            clear,
            ,
            ,
            ,
            ,
            add,
            add_iter,
            min_elt,
            get_min_elt,
            ,
            ,
            pop_min,
            remove_min,
            copy,
            ,
            of_array,
            of_list,
            of_iter,
            iter_unordered,
            fold_unordered];
   }
   function MakeMaxPoly(E){
    function compare(x, y){
      /*<<pqueue.ml:210:24>>*/ return caml_call2(E[1], y, x) /*<<pqueue.ml:210:37>>*/ ;
    }
    var
     include =  /*<<?>>*/ MakeMinPoly([0, compare]),
     create = include[1],
     length = include[2],
     is_empty = include[3],
     clear = include[4],
     add = include[9],
     add_iter = include[10],
     min_elt = include[11],
     get_min_elt = include[12],
     pop_min = include[15],
     remove_min = include[16],
     copy = include[17],
     of_array = include[19],
     of_list = include[20],
     of_iter = include[21],
     iter_unordered = include[22],
     fold_unordered = include[23];
    return [0,
            create,
            length,
            is_empty,
            add,
            add_iter,
            min_elt,
            get_min_elt,
            pop_min,
            remove_min,
            clear,
            copy,
            of_array,
            of_list,
            of_iter,
            iter_unordered,
            fold_unordered];
   }
   var
    Stdlib_Pqueue =
      [0,
       function(E){
        var
         compare = E[1],
         include = MakeMinPoly([0, compare]),
         create = include[1],
         length = include[2],
         is_empty = include[3],
         clear = include[4],
         add = include[9],
         add_iter = include[10],
         min_elt = include[11],
         get_min_elt = include[12],
         pop_min = include[15],
         remove_min = include[16],
         copy = include[17],
         of_array = include[19],
         of_list = include[20],
         of_iter = include[21],
         iter_unordered = include[22],
         fold_unordered = include[23];
        return [0,
                create,
                length,
                is_empty,
                add,
                add_iter,
                min_elt,
                get_min_elt,
                pop_min,
                remove_min,
                clear,
                copy,
                of_array,
                of_list,
                of_iter,
                iter_unordered,
                fold_unordered];
       },
       function(E){
        function compare(x, y){
          /*<<pqueue.ml:281:49>>*/ return caml_call2(E[1], y, x) /*<<pqueue.ml:281:62>>*/ ;
        }
        var
         include =  /*<<?>>*/ MakeMinPoly([0, compare]),
         create = include[1],
         length = include[2],
         is_empty = include[3],
         clear = include[4],
         add = include[9],
         add_iter = include[10],
         min_elt = include[11],
         get_min_elt = include[12],
         pop_min = include[15],
         remove_min = include[16],
         copy = include[17],
         of_array = include[19],
         of_list = include[20],
         of_iter = include[21],
         iter_unordered = include[22],
         fold_unordered = include[23];
        return [0,
                create,
                length,
                is_empty,
                add,
                add_iter,
                min_elt,
                get_min_elt,
                pop_min,
                remove_min,
                clear,
                copy,
                of_array,
                of_list,
                of_iter,
                iter_unordered,
                fold_unordered];
       },
       function(_b_){
        var _a_ = MakeMinPoly(_b_);
        return [0,
                _a_[1],
                _a_[2],
                _a_[3],
                _a_[9],
                _a_[10],
                _a_[11],
                _a_[12],
                _a_[15],
                _a_[16],
                _a_[4],
                _a_[17],
                _a_[19],
                _a_[20],
                _a_[21],
                _a_[22],
                _a_[23]];
       },
       MakeMaxPoly];
   runtime.caml_register_global(3, Stdlib_Pqueue, "Stdlib__Pqueue");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Ephemeron
//# unitInfo: Requires: CamlinternalLazy, Stdlib, Stdlib__Array, Stdlib__Hashtbl, Stdlib__Int, Stdlib__List, Stdlib__Obj, Stdlib__Random, Stdlib__Seq, Stdlib__Sys
//# shape: Stdlib__Ephemeron:[N,N,N]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_array_make = runtime.caml_array_make,
    caml_check_bound = runtime.caml_check_bound,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    dummy = 0,
    global_data = runtime.caml_get_global_data(),
    Stdlib_List = global_data.Stdlib__List,
    Stdlib = global_data.Stdlib,
    Stdlib_Obj = global_data.Stdlib__Obj,
    Stdlib_Sys = global_data.Stdlib__Sys,
    Stdlib_Seq = global_data.Stdlib__Seq,
    Stdlib_Int = global_data.Stdlib__Int,
    Stdlib_Array = global_data.Stdlib__Array,
    Stdlib_Hashtbl = global_data.Stdlib__Hashtbl,
    CamlinternalLazy = global_data.CamlinternalLazy,
    Stdlib_Random = global_data.Stdlib__Random;
   function MakeSeeded(H){
    var
     prng = [246, function(_y_){return caml_call1(Stdlib_Random[19][2], 0);}];
    function create(opt, initial_size){
     var
      random =
         /*<<ephemeron.ml:107:15>>*/ opt
         ? opt[1]
         :  /*<<ephemeron.ml:107:26>>*/ Stdlib_Hashtbl[17].call(null, 0),
      x =  /*<<ephemeron.ml:108:14>>*/ 16;
     for(;;){
       /*<<ephemeron.ml:101:6>>*/ if(initial_size <= x) break;
       /*<<ephemeron.ml:102:11>>*/ if(Stdlib_Sys[14] < (x * 2 | 0)) break;
      var x$0 =  /*<<ephemeron.ml:103:11>>*/ x * 2 | 0;
      x = x$0;
     }
      /*<<ephemeron.ml:109:6>>*/ if(random){
      var _x_ =  /*<<ephemeron.ml:109:32>>*/ runtime.caml_obj_tag(prng);
      a:
      if(250 === _x_)
       var _y_ = prng[1];
      else{
       if(246 !== _x_ && 244 !== _x_){var _y_ = prng; break a;}
       var _y_ = CamlinternalLazy[2].call(null, prng);
      }
      var
       seed =
          /*<<ephemeron.ml:109:67>>*/  /*<<ephemeron.ml:109:32>>*/ caml_call1
          (Stdlib_Random[19][4], _y_);
     }
     else
      var seed =  /*<<ephemeron.ml:109:73>>*/ 0;
      /*<<ephemeron.ml:110:56>>*/ return [0,
             0,
             caml_array_make(x, 0),
             seed,
             x] /*<<ephemeron.ml:110:74>>*/ ;
     /*<<ephemeron.ml:110:76>>*/ }
    function clear(h){
      /*<<ephemeron.ml:113:6>>*/ h[1] = 0;
     var
      len =  /*<<ephemeron.ml:114:6>>*/ h[2].length - 1,
      _w_ =  /*<<ephemeron.ml:115:6>>*/ len - 1 | 0;
     if(_w_ >= 0){
      var i = 0;
      for(;;){
        /*<<ephemeron.ml:116:8>>*/ caml_check_bound(h[2], i)[i + 1] = 0;
       var _x_ =  /*<<ephemeron.ml:116:27>>*/ i + 1 | 0;
       if(_w_ === i) break;
       i = _x_;
      }
     }
      /*<<ephemeron.ml:115:6>>*/ return 0;
     /*<<ephemeron.ml:117:10>>*/ }
    function reset(h){
     var len =  /*<<ephemeron.ml:120:6>>*/ h[2].length - 1;
      /*<<ephemeron.ml:121:6>>*/ return len === h[4]
             ?  /*<<ephemeron.ml:122:8>>*/ clear(h)
             : (h
                [1]
               = 0,
               h[2] =  /*<<ephemeron.ml:125:18>>*/ caml_array_make(h[4], 0),
               0) /*<<ephemeron.ml:126:9>>*/ ;
    }
    function copy(h){
     var
      _u_ =  /*<<ephemeron.ml:128:33>>*/ h[4],
      _v_ = h[3],
      _w_ = Stdlib_Array[7].call(null, h[2]);
      /*<<ephemeron.ml:128:50>>*/ return [0, h[1], _w_, _v_, _u_];
     /*<<ephemeron.ml:128:52>>*/ }
    function key_index(h, hkey){
      /*<<ephemeron.ml:131:6>>*/ return hkey & (h[2].length - 2 | 0);
     /*<<ephemeron.ml:131:41>>*/ }
    function clean(h){
     function do_bucket(param$0){
      var param =  /*<<ephemeron.ml:134:26>>*/ param$0;
      for(;;){
       if(! param)  /*<<ephemeron.ml:136:12>>*/ return 0;
       var
        hkey =  /*<<ephemeron.ml:134:26>>*/ param[1],
        rest = param[3],
        c = param[2];
        /*<<ephemeron.ml:137:36>>*/ if(caml_call1(H[6], c)){
        var rest$0 =  /*<<ephemeron.ml:137:51>>*/ param[3], c$0 = param[2];
         /*<<ephemeron.ml:141:26>>*/ return [0, hkey, c$0, do_bucket(rest$0)] /*<<ephemeron.ml:141:40>>*/ ;
       }
        /*<<ephemeron.ml:138:12>>*/ h[1] = h[1] - 1 | 0;
        /*<<ephemeron.ml:139:12>>*/ param = rest;
      }
      /*<<ephemeron.ml:141:41>>*/ }
     var
      d =  /*<<ephemeron.ml:143:6>>*/ h[2],
      _t_ =  /*<<ephemeron.ml:144:6>>*/ d.length - 2 | 0;
     if(_t_ >= 0){
      var i = 0;
      for(;;){
        /*<<ephemeron.ml:145:27>>*/ d[i + 1] =
         /*<<ephemeron.ml:145:17>>*/ do_bucket
         ( /*<<ephemeron.ml:145:27>>*/ caml_check_bound(d, i)[i + 1]);
       var _u_ =  /*<<ephemeron.ml:145:32>>*/ i + 1 | 0;
       if(_t_ === i) break;
       i = _u_;
      }
     }
      /*<<ephemeron.ml:144:6>>*/ return 0;
     /*<<ephemeron.ml:146:10>>*/ }
    function resize(h){
     var
      odata =  /*<<ephemeron.ml:169:6>>*/ h[2],
      osize =  /*<<ephemeron.ml:170:6>>*/ odata.length - 1,
      nsize =  /*<<ephemeron.ml:171:6>>*/ osize * 2 | 0;
      /*<<ephemeron.ml:172:6>>*/ clean(h);
     var
      _p_ =  /*<<ephemeron.ml:172:13>>*/ nsize < Stdlib_Sys[14] ? 1 : 0,
      _q_ = _p_ ? (osize >>> 1 | 0) <= h[1] ? 1 : 0 : _p_;
     if(_q_){
      var ndata =  /*<<ephemeron.ml:174:20>>*/ caml_array_make(nsize, 0);
       /*<<ephemeron.ml:175:8>>*/ h[2] = ndata;
      var
       insert_bucket =
          /*<<ephemeron.ml:176:8>>*/ function(param){
           /*<<ephemeron.ml:176:32>>*/ if(! param)
            /*<<ephemeron.ml:177:21>>*/ return;
          var
           rest =  /*<<ephemeron.ml:176:32>>*/ param[3],
           data = param[2],
           hkey = param[1];
           /*<<ephemeron.ml:179:14>>*/ insert_bucket(rest);
          var nidx =  /*<<ephemeron.ml:180:25>>*/ key_index(h, hkey);
           /*<<ephemeron.ml:181:47>>*/ ndata[nidx + 1] =
           [0, hkey, data, caml_check_bound(ndata, nidx)[nidx + 1]];
          /*<<ephemeron.ml:181:60>>*/ },
       _r_ =  /*<<ephemeron.ml:182:8>>*/ osize - 1 | 0;
      if(_r_ >= 0){
       var i = 0;
       for(;;){
         /*<<ephemeron.ml:183:24>>*/  /*<<ephemeron.ml:183:10>>*/ insert_bucket
         ( /*<<ephemeron.ml:183:24>>*/ caml_check_bound(odata, i)[i + 1]);
        var _t_ =  /*<<ephemeron.ml:183:33>>*/ i + 1 | 0;
        if(_r_ === i) break;
        i = _t_;
       }
      }
      var _s_ =  /*<<ephemeron.ml:182:8>>*/ 0;
     }
     else
      var _s_ =  /*<<ephemeron.ml:172:13>>*/ _q_;
     return _s_;
     /*<<ephemeron.ml:185:9>>*/ }
    function add(h, key, info){
     var
      hkey =  /*<<ephemeron.ml:188:17>>*/ caml_call2(H[2], h[3], key),
      i =  /*<<ephemeron.ml:189:14>>*/ key_index(h, hkey),
      container =  /*<<ephemeron.ml:190:22>>*/ caml_call2(H[1], key, info),
      bucket =
         /*<<ephemeron.ml:191:41>>*/ [0,
         hkey,
         container,
         caml_check_bound(h[2], i)[i + 1]];
      /*<<ephemeron.ml:192:6>>*/ caml_check_bound(h[2], i)[i + 1] = bucket;
      /*<<ephemeron.ml:192:26>>*/ h[1] = h[1] + 1 | 0;
     var
      _p_ =  /*<<ephemeron.ml:194:6>>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0;
     return _p_ ?  /*<<ephemeron.ml:194:49>>*/ resize(h) : _p_ /*<<ephemeron.ml:194:57>>*/ ;
    }
    function remove(h, key){
     var hkey =  /*<<ephemeron.ml:197:17>>*/ caml_call2(H[2], h[3], key);
     function remove_bucket(param$0){
      var param =  /*<<ephemeron.ml:198:30>>*/ param$0;
      for(;;){
       if(! param)  /*<<ephemeron.ml:199:19>>*/ return 0;
       var
        hk =  /*<<ephemeron.ml:198:30>>*/ param[1],
        next = param[3],
        c = param[2];
        /*<<ephemeron.ml:200:33>>*/ if(hkey !== hk){
        var next$0 = param[3], c$0 = param[2];
         /*<<ephemeron.ml:210:41>>*/ return [0,
                hk,
                c$0,
                remove_bucket(next$0)] /*<<ephemeron.ml:210:59>>*/ ;
       }
        /*<<ephemeron.ml:201:24>>*/ switch(caml_call2(H[3], c, key)){
         case 0:
           /*<<ephemeron.ml:202:23>>*/ h[1] = h[1] - 1 | 0;
           /*<<ephemeron.ml:202:45>>*/ return next;
         case 1:
           /*<<ephemeron.ml:203:36>>*/ return [0, hk, c, remove_bucket(next)] /*<<ephemeron.ml:203:54>>*/ ;
         default:
           /*<<ephemeron.ml:207:16>>*/ h[1] = h[1] - 1 | 0;
           /*<<ephemeron.ml:208:16>>*/ param = next;
       }
      }
      /*<<ephemeron.ml:210:60>>*/ }
     var
      i =  /*<<ephemeron.ml:211:14>>*/ key_index(h, hkey),
      _p_ =
         /*<<ephemeron.ml:212:34>>*/  /*<<ephemeron.ml:212:20>>*/ remove_bucket
         ( /*<<ephemeron.ml:212:34>>*/ caml_check_bound(h[2], i)[i + 1]);
      /*<<ephemeron.ml:212:6>>*/ caml_check_bound(h[2], i)[i + 1] = _p_;
      /*<<ephemeron.ml:212:44>>*/ return 0;
    }
    function find(h, key){
     var
      hkey =  /*<<ephemeron.ml:239:17>>*/ caml_call2(H[2], h[3], key),
      _p_ =  /*<<ephemeron.ml:241:33>>*/ key_index(h, hkey),
      param =
         /*<<ephemeron.ml:241:51>>*/  /*<<ephemeron.ml:241:24>>*/ caml_check_bound
          (h[2], _p_)
         [_p_ + 1];
      /*<<ephemeron.ml:241:51>>*/ for(;;){
       /*<<ephemeron.ml:218:21>>*/ if(! param)
        /*<<ephemeron.ml:220:10>>*/ throw caml_maybe_attach_backtrace
              (Stdlib[8], 1);
      var
       hk =  /*<<ephemeron.ml:218:21>>*/ param[1],
       rest = param[3],
       c = param[2];
       /*<<ephemeron.ml:221:31>>*/ if(hkey === hk)
        /*<<ephemeron.ml:222:22>>*/ if(0 === caml_call2(H[3], c, key)){
        var match =  /*<<ephemeron.ml:224:26>>*/ caml_call1(H[4], c);
         /*<<ephemeron.ml:224:38>>*/ if(match){
         var d = match[1];
          /*<<ephemeron.ml:229:26>>*/ return d;
        }
         /*<<ephemeron.ml:224:38>>*/ param = rest;
       }
       else
         /*<<ephemeron.ml:222:35>>*/ param = rest;
      else{
       var rest$0 =  /*<<ephemeron.ml:221:31>>*/ param[3];
        /*<<ephemeron.ml:236:10>>*/ param = rest$0;
      }
     }
     /*<<ephemeron.ml:241:51>>*/ }
    function find_opt(h, key){
     var
      hkey =  /*<<ephemeron.ml:264:17>>*/ caml_call2(H[2], h[3], key),
      _p_ =  /*<<ephemeron.ml:266:37>>*/ key_index(h, hkey),
      param =
         /*<<ephemeron.ml:266:55>>*/  /*<<ephemeron.ml:266:28>>*/ caml_check_bound
          (h[2], _p_)
         [_p_ + 1];
      /*<<ephemeron.ml:266:55>>*/ for(;;){
       /*<<ephemeron.ml:243:25>>*/ if(! param)
        /*<<ephemeron.ml:245:10>>*/ return 0;
      var
       hk =  /*<<ephemeron.ml:243:25>>*/ param[1],
       rest = param[3],
       c = param[2];
       /*<<ephemeron.ml:246:31>>*/ if(hkey === hk)
        /*<<ephemeron.ml:247:22>>*/ if(0 === caml_call2(H[3], c, key)){
        var d =  /*<<ephemeron.ml:249:26>>*/ caml_call1(H[4], c);
         /*<<ephemeron.ml:249:38>>*/ if(d)
          /*<<ephemeron.ml:254:31>>*/ return d;
         /*<<ephemeron.ml:249:38>>*/ param = rest;
       }
       else
         /*<<ephemeron.ml:247:35>>*/ param = rest;
      else{
       var rest$0 =  /*<<ephemeron.ml:246:31>>*/ param[3];
        /*<<ephemeron.ml:261:10>>*/ param = rest$0;
      }
     }
     /*<<ephemeron.ml:266:55>>*/ }
    function find_all(h, key){
     var hkey =  /*<<ephemeron.ml:269:17>>*/ caml_call2(H[2], h[3], key);
     function find_in_bucket(param$0){
      var param =  /*<<ephemeron.ml:270:31>>*/ param$0;
      for(;;){
       if(! param)  /*<<ephemeron.ml:271:17>>*/ return 0;
       var
        hk =  /*<<ephemeron.ml:270:31>>*/ param[1],
        rest = param[3],
        c = param[2];
        /*<<ephemeron.ml:272:31>>*/ if(hkey === hk)
         /*<<ephemeron.ml:273:22>>*/ if(0 === caml_call2(H[3], c, key)){
         var match =  /*<<ephemeron.ml:274:33>>*/ caml_call1(H[4], c);
          /*<<ephemeron.ml:274:45>>*/ if(match){
          var d = match[1];
           /*<<ephemeron.ml:277:29>>*/ return [0, d, find_in_bucket(rest)] /*<<ephemeron.ml:277:48>>*/ ;
         }
          /*<<ephemeron.ml:274:45>>*/ param = rest;
        }
        else
          /*<<ephemeron.ml:273:35>>*/ param = rest;
       else{
        var rest$0 =  /*<<ephemeron.ml:272:31>>*/ param[3];
         /*<<ephemeron.ml:284:10>>*/ param = rest$0;
       }
      }
      /*<<ephemeron.ml:284:29>>*/ }
     var _p_ =  /*<<ephemeron.ml:285:29>>*/ key_index(h, hkey);
      /*<<ephemeron.ml:285:21>>*/ return  /*<<ephemeron.ml:285:46>>*/ find_in_bucket
             ( /*<<ephemeron.ml:285:21>>*/ caml_check_bound(h[2], _p_)
               [_p_ + 1]) /*<<ephemeron.ml:285:46>>*/ ;
    }
    function replace(h, key, info){
     var
      hkey =  /*<<ephemeron.ml:289:17>>*/ caml_call2(H[2], h[3], key),
      i =  /*<<ephemeron.ml:299:14>>*/ key_index(h, hkey),
      l =  /*<<ephemeron.ml:300:14>>*/ caml_check_bound(h[2], i)[i + 1];
      /*<<ephemeron.ml:301:6>>*/ try{
      var param = l;
      for(;;){
        /*<<ephemeron.ml:290:31>>*/ if(! param)
         /*<<ephemeron.ml:291:19>>*/ throw caml_maybe_attach_backtrace
               (Stdlib[8], 1);
       var
        hk =  /*<<ephemeron.ml:290:31>>*/ param[1],
        next = param[3],
        c = param[2];
        /*<<ephemeron.ml:292:33>>*/ if(hkey === hk){
         /*<<ephemeron.ml:293:24>>*/ if(! caml_call2(H[3], c, key)){
         var
          _p_ =  /*<<ephemeron.ml:294:23>>*/ caml_call3(H[5], c, key, info);
         return _p_;
        }
         /*<<ephemeron.ml:293:37>>*/ param = next;
       }
       else{
        var next$0 =  /*<<ephemeron.ml:292:33>>*/ param[3];
         /*<<ephemeron.ml:297:28>>*/ param = next$0;
       }
      }
     }
     catch(exn$0){
      var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
      if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
      var
       container =  /*<<ephemeron.ml:304:24>>*/ caml_call2(H[1], key, info);
       /*<<ephemeron.ml:305:8>>*/ caml_check_bound(h[2], i)[i + 1] = [0, hkey, container, l];
       /*<<ephemeron.ml:305:46>>*/ h[1] = h[1] + 1 | 0;
      var
       _o_ =  /*<<ephemeron.ml:307:8>>*/ h[2].length - 1 << 1 < h[1] ? 1 : 0;
      return _o_ ?  /*<<ephemeron.ml:307:51>>*/ resize(h) : _o_ /*<<ephemeron.ml:307:59>>*/ ;
     }
    }
    function mem(h, key){
     var
      hkey =  /*<<ephemeron.ml:310:17>>*/ caml_call2(H[2], h[3], key),
      _o_ =  /*<<ephemeron.ml:320:28>>*/ key_index(h, hkey),
      param =
         /*<<ephemeron.ml:320:45>>*/  /*<<ephemeron.ml:320:20>>*/ caml_check_bound
          (h[2], _o_)
         [_o_ + 1];
      /*<<ephemeron.ml:320:45>>*/ for(;;){
       /*<<ephemeron.ml:311:30>>*/ if(! param)
        /*<<ephemeron.ml:313:10>>*/ return 0;
      var
       hk =  /*<<ephemeron.ml:311:30>>*/ param[1],
       rest = param[3],
       c = param[2];
       /*<<ephemeron.ml:314:31>>*/ if(hk === hkey){
        /*<<ephemeron.ml:315:22>>*/ if(! caml_call2(H[3], c, key))
         /*<<ephemeron.ml:316:21>>*/ return 1;
        /*<<ephemeron.ml:315:35>>*/ param = rest;
      }
      else{
       var rest$0 =  /*<<ephemeron.ml:314:31>>*/ param[3];
        /*<<ephemeron.ml:319:31>>*/ param = rest$0;
      }
     }
     /*<<ephemeron.ml:320:45>>*/ }
    function length(h){
      /*<<ephemeron.ml:322:19>>*/ return h[1];
     /*<<ephemeron.ml:322:25>>*/ }
    function bucket_length(accu$1, param$0){
     var accu =  /*<<ephemeron.ml:324:26>>*/ accu$1, param = param$0;
     for(;;){
      if(! param)  /*<<ephemeron.ml:325:17>>*/ return accu;
      var
       rest =  /*<<ephemeron.ml:324:26>>*/ param[3],
       accu$0 =  /*<<ephemeron.ml:326:28>>*/ accu + 1 | 0;
      accu = accu$0;
      param = rest;
     }
     /*<<ephemeron.ml:326:57>>*/ }
    function stats(h){
     var
      mbl =
         /*<<ephemeron.ml:330:8>>*/ Stdlib_Array[20].call
         (null,
          function(m, b){
           var _o_ =  /*<<ephemeron.ml:330:46>>*/ bucket_length(0, b);
            /*<<ephemeron.ml:330:65>>*/ return Stdlib_Int[11].call
                   (null, m, _o_);
          },
          0,
          h[2]),
      histo =  /*<<ephemeron.ml:331:18>>*/ caml_array_make(mbl + 1 | 0, 0);
      /*<<ephemeron.ml:332:6>>*/ Stdlib_Array[14].call
      (null,
       function(b){
        var l =  /*<<ephemeron.ml:334:19>>*/ bucket_length(0, b);
         /*<<ephemeron.ml:335:24>>*/ histo[l + 1] =
         caml_check_bound(histo, l)[l + 1] + 1 | 0;
         /*<<ephemeron.ml:335:37>>*/ return 0;
       },
       h[2]);
      /*<<ephemeron.ml:336:14>>*/ return [0,
             h[1],
             h[2].length - 1,
             mbl,
             histo];
     /*<<ephemeron.ml:340:34>>*/ }
    function bucket_length_alive(accu$1, param$0){
     var accu =  /*<<ephemeron.ml:342:32>>*/ accu$1, param = param$0;
     for(;;){
      if(! param)  /*<<ephemeron.ml:343:17>>*/ return accu;
      var rest =  /*<<ephemeron.ml:342:32>>*/ param[3], c = param[2];
       /*<<ephemeron.ml:344:30>>*/ if(caml_call1(H[6], c)){
       var accu$0 =  /*<<ephemeron.ml:345:10>>*/ accu + 1 | 0;
       accu = accu$0;
       param = rest;
      }
      else{
       var rest$0 =  /*<<ephemeron.ml:344:43>>*/ param[3];
        /*<<ephemeron.ml:346:28>>*/ param = rest$0;
      }
     }
     /*<<ephemeron.ml:346:57>>*/ }
    function stats_alive(h){
     var
      mbl =
         /*<<ephemeron.ml:351:8>>*/ Stdlib_Array[20].call
         (null,
          function(m, b){
           var _o_ =  /*<<ephemeron.ml:352:32>>*/ bucket_length_alive(0, b);
            /*<<ephemeron.ml:352:57>>*/ return Stdlib_Int[11].call
                   (null, m, _o_);
          },
          0,
          h[2]),
      histo =  /*<<ephemeron.ml:354:18>>*/ caml_array_make(mbl + 1 | 0, 0),
      size =  /*<<ephemeron.ml:349:6>>*/ [0, 0];
      /*<<ephemeron.ml:355:6>>*/ Stdlib_Array[14].call
      (null,
       function(b){
        var l =  /*<<ephemeron.ml:357:19>>*/ bucket_length_alive(0, b);
         /*<<ephemeron.ml:358:11>>*/ size[1] = size[1] + l | 0;
         /*<<ephemeron.ml:359:24>>*/ histo[l + 1] =
         caml_check_bound(histo, l)[l + 1] + 1 | 0;
         /*<<ephemeron.ml:359:37>>*/ return 0;
       },
       h[2]);
      /*<<ephemeron.ml:360:14>>*/ return [0,
             size[1],
             h[2].length - 1,
             mbl,
             histo];
     /*<<ephemeron.ml:364:34>>*/ }
    function add_seq(tbl, i){
      /*<<ephemeron.ml:367:6>>*/ return Stdlib_Seq[4].call
             (null,
              function(param){
               var v =  /*<<ephemeron.ml:367:15>>*/ param[2], k = param[1];
                /*<<ephemeron.ml:367:29>>*/ return add(tbl, k, v) /*<<ephemeron.ml:367:41>>*/ ;
              },
              i) /*<<ephemeron.ml:367:43>>*/ ;
    }
    function replace_seq(tbl, i){
      /*<<ephemeron.ml:370:6>>*/ return Stdlib_Seq[4].call
             (null,
              function(param){
               var v =  /*<<ephemeron.ml:370:15>>*/ param[2], k = param[1];
                /*<<ephemeron.ml:370:29>>*/ return replace(tbl, k, v) /*<<ephemeron.ml:370:45>>*/ ;
              },
              i) /*<<ephemeron.ml:370:47>>*/ ;
    }
    function of_seq(i){
     var tbl =  /*<<ephemeron.ml:373:16>>*/ create(0, 16);
      /*<<ephemeron.ml:374:6>>*/ replace_seq(tbl, i);
      /*<<ephemeron.ml:374:23>>*/ return tbl;
     /*<<ephemeron.ml:375:9>>*/ }
     /*<<?>>*/ return [0,
            create,
            clear,
            reset,
            copy,
            add,
            remove,
            find,
            find_opt,
            find_all,
            replace,
            mem,
            length,
            stats,
            add_seq,
            replace_seq,
            of_seq,
            clean,
            stats_alive];
   }
   function create(param){
     /*<<ephemeron.ml:394:30>>*/ return caml_call1(Stdlib_Obj[23][1], 1) /*<<ephemeron.ml:394:45>>*/ ;
   }
   function get_key(t){
    var x =  /*<<ephemeron.ml:396:50>>*/ caml_call2(Stdlib_Obj[23][3], t, 0);
     /*<<ephemeron.ml:388:51>>*/ return x;
    /*<<ephemeron.ml:396:70>>*/ }
   function set_key(t, k){
     /*<<ephemeron.ml:397:44>>*/ return caml_call3(Stdlib_Obj[23][5], t, 0, k) /*<<ephemeron.ml:397:75>>*/ ;
   }
   function check_key(t){
     /*<<ephemeron.ml:398:39>>*/ return caml_call2(Stdlib_Obj[23][7], t, 0) /*<<ephemeron.ml:398:59>>*/ ;
   }
   function get_data(t){
    var x =  /*<<ephemeron.ml:400:51>>*/ caml_call1(Stdlib_Obj[23][9], t);
     /*<<ephemeron.ml:388:51>>*/ return x;
    /*<<ephemeron.ml:400:70>>*/ }
   function set_data(t, d){
     /*<<ephemeron.ml:401:45>>*/ return caml_call2(Stdlib_Obj[23][11], t, d) /*<<ephemeron.ml:401:75>>*/ ;
   }
   function make(key, data){
    var eph =  /*<<ephemeron.ml:405:14>>*/ create(0);
     /*<<ephemeron.ml:406:4>>*/ set_data(eph, data);
     /*<<ephemeron.ml:407:4>>*/ set_key(eph, key);
     /*<<ephemeron.ml:407:19>>*/ return eph;
    /*<<ephemeron.ml:408:7>>*/ }
   function query(eph, key){
    var match =  /*<<ephemeron.ml:411:10>>*/ get_key(eph);
     /*<<ephemeron.ml:411:21>>*/ if(! match)
      /*<<ephemeron.ml:412:14>>*/ return 0;
    var k =  /*<<ephemeron.ml:411:21>>*/ match[1];
     /*<<ephemeron.ml:413:18>>*/ return k === key
            ?  /*<<ephemeron.ml:413:30>>*/ get_data(eph)
            : 0 /*<<ephemeron.ml:414:20>>*/ ;
   }
   function MakeSeeded$0(H){
    function create$0(k, d){
     var c =  /*<<ephemeron.ml:421:16>>*/ create(0);
      /*<<ephemeron.ml:422:8>>*/ set_data(c, d);
      /*<<ephemeron.ml:423:8>>*/ set_key(c, k);
      /*<<ephemeron.ml:423:19>>*/ return c;
     /*<<ephemeron.ml:424:9>>*/ }
    var seeded_hash =  /*<<?>>*/ H[2];
    function equal(c, k){
     var match =  /*<<ephemeron.ml:429:14>>*/ get_key(c);
      /*<<ephemeron.ml:429:23>>*/ if(! match)
       /*<<ephemeron.ml:430:18>>*/ return 2;
     var k$0 =  /*<<ephemeron.ml:429:23>>*/ match[1];
      /*<<ephemeron.ml:432:15>>*/ return caml_call2(H[1], k, k$0) ? 0 : 1 /*<<ephemeron.ml:432:76>>*/ ;
    }
    function set_key_data(c, k, d){
      /*<<ephemeron.ml:402:40>>*/ caml_call1(Stdlib_Obj[23][12], c);
      /*<<ephemeron.ml:436:8>>*/ set_key(c, k);
      /*<<ephemeron.ml:436:19>>*/ return set_data(c, d) /*<<ephemeron.ml:437:20>>*/ ;
    }
     /*<<?>>*/ return MakeSeeded
            ([0,
              create$0,
              seeded_hash,
              equal,
              get_data,
              set_key_data,
              check_key]);
   }
   var _a_ = [0, 0];
   function Make(H){
    var equal = H[1];
    function seeded_hash(seed, x){
      /*<<ephemeron.ml:446:41>>*/ return caml_call1(H[2], x) /*<<ephemeron.ml:446:49>>*/ ;
    }
    var
     include =  /*<<?>>*/ MakeSeeded$0([0, equal, seeded_hash]),
     _o_ = include[1],
     clear = include[2],
     reset = include[3],
     copy = include[4],
     add = include[5],
     remove = include[6],
     find = include[7],
     find_opt = include[8],
     find_all = include[9],
     replace = include[10],
     mem = include[11],
     length = include[12],
     stats = include[13],
     add_seq = include[14],
     replace_seq = include[15],
     clean = include[17],
     stats_alive = include[18];
    function create(sz){
      /*<<ephemeron.ml:448:20>>*/ return caml_call2(_o_, _a_, sz) /*<<ephemeron.ml:448:43>>*/ ;
    }
    function of_seq(i){
     var tbl =  /*<<ephemeron.ml:448:20>>*/ caml_call2(_o_, _a_, 16);
      /*<<ephemeron.ml:451:6>>*/ caml_call2(replace_seq, tbl, i);
      /*<<ephemeron.ml:451:23>>*/ return tbl;
     /*<<ephemeron.ml:452:9>>*/ }
     /*<<?>>*/ return [0,
            create,
            clear,
            reset,
            copy,
            add,
            remove,
            find,
            find_opt,
            find_all,
            replace,
            mem,
            length,
            stats,
            add_seq,
            replace_seq,
            of_seq,
            clean,
            stats_alive];
   }
   function make$0(param){
     /*<<ephemeron.ml:459:18>>*/ return [0, 0];
    /*<<ephemeron.ml:459:24>>*/ }
   function add(b, k, d){
    var _o_ =  /*<<ephemeron.ml:460:25>>*/ b[1];
    b[1] = [0, make(k, d), _o_];
     /*<<ephemeron.ml:460:36>>*/ return 0;
    /*<<ephemeron.ml:460:42>>*/ }
   function test_key(k, e){
    var match =  /*<<ephemeron.ml:463:12>>*/ get_key(e);
     /*<<ephemeron.ml:463:21>>*/ if(match){
     var x = match[1];
      /*<<ephemeron.ml:464:20>>*/ if(x === k)
       /*<<ephemeron.ml:464:30>>*/ return 1;
    }
     /*<<ephemeron.ml:465:13>>*/ return 0;
    /*<<ephemeron.ml:465:18>>*/ }
   function remove(b, k){
    var l$0 =  /*<<ephemeron.ml:474:6>>*/ b[1], l = l$0, acc = 0;
    for(;;){
      /*<<ephemeron.ml:469:8>>*/ if(! l)
       /*<<ephemeron.ml:470:16>>*/ return 0;
     var h =  /*<<ephemeron.ml:469:8>>*/ l[1], t = l[2];
      /*<<ephemeron.ml:471:22>>*/ if(test_key(k, h)){
       /*<<ephemeron.ml:471:43>>*/ b[1] = Stdlib_List[14].call(null, acc, t);
       /*<<ephemeron.ml:471:64>>*/ return 0;
     }
     var
      t$0 =  /*<<ephemeron.ml:471:34>>*/ l[2],
      acc$0 =  /*<<ephemeron.ml:472:20>>*/ [0, h, acc];
     l = t$0;
     acc = acc$0;
    }
    /*<<ephemeron.ml:474:16>>*/ }
   function find(b, k){
    var
     match =
        /*<<ephemeron.ml:477:12>>*/ Stdlib_List[41].call
        (null,
         function(_o_){ /*<<ephemeron.ml:477:26>>*/ return test_key(k, _o_);},
         b[1]);
     /*<<ephemeron.ml:477:41>>*/ if(! match)
      /*<<ephemeron.ml:479:16>>*/ return 0;
    var e =  /*<<ephemeron.ml:477:41>>*/ match[1];
     /*<<ephemeron.ml:478:18>>*/ return get_data(e) /*<<ephemeron.ml:479:20>>*/ ;
   }
   function length(b){
     /*<<ephemeron.ml:481:19>>*/ return Stdlib_List[1].call(null, b[1]) /*<<ephemeron.ml:481:33>>*/ ;
   }
   function clear(b){
     /*<<ephemeron.ml:482:18>>*/ b[1] = 0;
    return 0;
    /*<<ephemeron.ml:482:25>>*/ }
   function create$0(param){
     /*<<ephemeron.ml:491:35>>*/ return caml_call1(Stdlib_Obj[23][1], 2) /*<<ephemeron.ml:491:50>>*/ ;
   }
   function get_key1(t){
    var x =  /*<<ephemeron.ml:493:57>>*/ caml_call2(Stdlib_Obj[23][3], t, 0);
     /*<<ephemeron.ml:388:51>>*/ return x;
    /*<<ephemeron.ml:493:77>>*/ }
   function set_key1(t, k){
     /*<<ephemeron.ml:495:4>>*/ return caml_call3(Stdlib_Obj[23][5], t, 0, k) /*<<ephemeron.ml:495:35>>*/ ;
   }
   function get_key2(t){
    var x =  /*<<ephemeron.ml:498:57>>*/ caml_call2(Stdlib_Obj[23][3], t, 1);
     /*<<ephemeron.ml:388:51>>*/ return x;
    /*<<ephemeron.ml:498:77>>*/ }
   function set_key2(t, k){
     /*<<ephemeron.ml:500:4>>*/ return caml_call3(Stdlib_Obj[23][5], t, 1, k) /*<<ephemeron.ml:500:35>>*/ ;
   }
   function get_data$0(t){
    var x =  /*<<ephemeron.ml:503:56>>*/ caml_call1(Stdlib_Obj[23][9], t);
     /*<<ephemeron.ml:388:51>>*/ return x;
    /*<<ephemeron.ml:503:75>>*/ }
   function set_data$0(t, d){
     /*<<ephemeron.ml:505:4>>*/ return caml_call2(Stdlib_Obj[23][11], t, d) /*<<ephemeron.ml:505:34>>*/ ;
   }
   function make$1(key1, key2, data){
    var eph =  /*<<ephemeron.ml:509:14>>*/ create$0(0);
     /*<<ephemeron.ml:510:4>>*/ set_data$0(eph, data);
     /*<<ephemeron.ml:511:4>>*/ set_key1(eph, key1);
     /*<<ephemeron.ml:512:4>>*/ set_key2(eph, key2);
     /*<<ephemeron.ml:514:4>>*/ return eph;
    /*<<ephemeron.ml:514:7>>*/ }
   function query$0(eph, key1, key2){
    var match =  /*<<ephemeron.ml:517:10>>*/ get_key1(eph);
     /*<<ephemeron.ml:517:22>>*/ if(! match)
      /*<<ephemeron.ml:518:14>>*/ return 0;
    var k =  /*<<ephemeron.ml:517:22>>*/ match[1];
     /*<<ephemeron.ml:519:18>>*/ if(k !== key1)
      /*<<ephemeron.ml:525:16>>*/ return 0;
    var match$0 =  /*<<ephemeron.ml:520:20>>*/ get_key2(eph);
     /*<<ephemeron.ml:520:32>>*/ if(! match$0)
      /*<<ephemeron.ml:521:18>>*/ return 0;
    var k$0 =  /*<<ephemeron.ml:520:32>>*/ match$0[1];
     /*<<ephemeron.ml:522:22>>*/ return k$0 === key2
            ?  /*<<ephemeron.ml:522:35>>*/ get_data$0(eph)
            : 0 /*<<ephemeron.ml:525:20>>*/ ;
   }
   function MakeSeeded$1(H1, H2){
    function create(param, d){
     var
      k2 =  /*<<ephemeron.ml:533:17>>*/ param[2],
      k1 = param[1],
      c =  /*<<ephemeron.ml:534:16>>*/ create$0(0);
      /*<<ephemeron.ml:535:8>>*/ set_data$0(c, d);
      /*<<ephemeron.ml:536:8>>*/ set_key1(c, k1);
      /*<<ephemeron.ml:536:23>>*/ set_key2(c, k2);
      /*<<ephemeron.ml:536:36>>*/ return c;
     /*<<ephemeron.ml:537:9>>*/ }
    function seeded_hash(seed, param){
     var
      k2 =  /*<<ephemeron.ml:538:22>>*/ param[2],
      k1 = param[1],
      _o_ =
         /*<<ephemeron.ml:539:33>>*/ caml_call2(H2[2], seed, k2) * 65599 | 0;
      /*<<ephemeron.ml:539:8>>*/ return caml_call2(H1[2], seed, k1) + _o_ | 0 /*<<ephemeron.ml:539:30>>*/ ;
     /*<<ephemeron.ml:539:63>>*/ }
    function equal(c, param){
     var
      k2 =  /*<<ephemeron.ml:540:16>>*/ param[2],
      k1 = param[1],
      match =  /*<<ephemeron.ml:541:14>>*/ get_key1(c),
      match$0 =  /*<<ephemeron.ml:541:26>>*/ get_key2(c);
      /*<<ephemeron.ml:541:36>>*/ if(match && match$0){
      var k2$0 = match$0[1], k1$0 = match[1];
       /*<<ephemeron.ml:544:15>>*/ if
       (caml_call2(H1[1], k1, k1$0)
        &&  /*<<ephemeron.ml:544:34>>*/ caml_call2(H2[1], k2, k2$0))
        /*<<ephemeron.ml:545:17>>*/ return 0;
       /*<<ephemeron.ml:545:41>>*/ return 1;
     }
      /*<<ephemeron.ml:542:32>>*/ return 2;
     /*<<ephemeron.ml:545:60>>*/ }
    function set_key_data(c, param, d){
     var k2 =  /*<<ephemeron.ml:547:23>>*/ param[2], k1 = param[1];
      /*<<ephemeron.ml:506:45>>*/ caml_call1(Stdlib_Obj[23][12], c);
      /*<<ephemeron.ml:549:8>>*/ set_key1(c, k1);
      /*<<ephemeron.ml:549:23>>*/ set_key2(c, k2);
      /*<<ephemeron.ml:549:36>>*/ return set_data$0(c, d) /*<<ephemeron.ml:550:20>>*/ ;
    }
    function check_key(c){
     var
      _o_ =  /*<<ephemeron.ml:496:45>>*/ caml_call2(Stdlib_Obj[23][7], c, 0);
      /*<<ephemeron.ml:551:36>>*/ return _o_
             ?  /*<<ephemeron.ml:501:45>>*/ caml_call2
               (Stdlib_Obj[23][7], c, 1)
             : _o_ /*<<ephemeron.ml:551:52>>*/ ;
    }
     /*<<?>>*/ return MakeSeeded
            ([0,
              create,
              seeded_hash,
              equal,
              get_data$0,
              set_key_data,
              check_key]);
   }
   var _b_ = [0, 0];
   function Make$0(H1, H2){
    var equal = H2[1];
    function seeded_hash(seed, x){
      /*<<ephemeron.ml:566:43>>*/ return caml_call1(H2[2], x) /*<<ephemeron.ml:566:52>>*/ ;
    }
    var equal$0 =  /*<<?>>*/ H1[1];
    function seeded_hash$0(seed, x){
      /*<<ephemeron.ml:561:43>>*/ return caml_call1(H1[2], x) /*<<ephemeron.ml:561:52>>*/ ;
    }
    var
     include =
        /*<<?>>*/ MakeSeeded$1
        ([0, equal$0, seeded_hash$0], [0, equal, seeded_hash]),
     _o_ = include[1],
     clear = include[2],
     reset = include[3],
     copy = include[4],
     add = include[5],
     remove = include[6],
     find = include[7],
     find_opt = include[8],
     find_all = include[9],
     replace = include[10],
     mem = include[11],
     length = include[12],
     stats = include[13],
     add_seq = include[14],
     replace_seq = include[15],
     clean = include[17],
     stats_alive = include[18];
    function create(sz){
      /*<<ephemeron.ml:568:20>>*/ return caml_call2(_o_, _b_, sz) /*<<ephemeron.ml:568:43>>*/ ;
    }
    function of_seq(i){
     var tbl =  /*<<ephemeron.ml:568:20>>*/ caml_call2(_o_, _b_, 16);
      /*<<ephemeron.ml:571:6>>*/ caml_call2(replace_seq, tbl, i);
      /*<<ephemeron.ml:571:23>>*/ return tbl;
     /*<<ephemeron.ml:572:9>>*/ }
     /*<<?>>*/ return [0,
            create,
            clear,
            reset,
            copy,
            add,
            remove,
            find,
            find_opt,
            find_all,
            replace,
            mem,
            length,
            stats,
            add_seq,
            replace_seq,
            of_seq,
            clean,
            stats_alive];
   }
   function make$2(param){
     /*<<ephemeron.ml:579:18>>*/ return [0, 0];
    /*<<ephemeron.ml:579:24>>*/ }
   function add$0(b, k1, k2, d){
    var _o_ =  /*<<ephemeron.ml:580:29>>*/ b[1];
    b[1] = [0, make$1(k1, k2, d), _o_];
     /*<<ephemeron.ml:580:44>>*/ return 0;
    /*<<ephemeron.ml:580:50>>*/ }
   function test_keys(k1, k2, e){
    var
     match =  /*<<ephemeron.ml:583:12>>*/ get_key1(e),
     match$0 =  /*<<ephemeron.ml:583:24>>*/ get_key2(e);
     /*<<ephemeron.ml:583:34>>*/ if(match && match$0){
     var x2 = match$0[1], x1 = match[1];
      /*<<ephemeron.ml:584:30>>*/ if(x1 === k1 && x2 === k2)
       /*<<ephemeron.ml:584:54>>*/ return 1;
    }
     /*<<ephemeron.ml:585:13>>*/ return 0;
    /*<<ephemeron.ml:585:18>>*/ }
   function remove$0(b, k1, k2){
    var l$0 =  /*<<ephemeron.ml:594:6>>*/ b[1], l = l$0, acc = 0;
    for(;;){
      /*<<ephemeron.ml:589:8>>*/ if(! l)
       /*<<ephemeron.ml:590:16>>*/ return 0;
     var h =  /*<<ephemeron.ml:589:8>>*/ l[1], t = l[2];
      /*<<ephemeron.ml:591:22>>*/ if(test_keys(k1, k2, h)){
       /*<<ephemeron.ml:591:48>>*/ b[1] = Stdlib_List[14].call(null, acc, t);
       /*<<ephemeron.ml:591:69>>*/ return 0;
     }
     var
      t$0 =  /*<<ephemeron.ml:591:39>>*/ l[2],
      acc$0 =  /*<<ephemeron.ml:592:20>>*/ [0, h, acc];
     l = t$0;
     acc = acc$0;
    }
    /*<<ephemeron.ml:594:16>>*/ }
   function find$0(b, k1, k2){
    var
     match =
        /*<<ephemeron.ml:597:12>>*/ Stdlib_List[41].call
        (null,
         function(_o_){
           /*<<ephemeron.ml:597:26>>*/ return test_keys(k1, k2, _o_);
         },
         b[1]);
     /*<<ephemeron.ml:597:46>>*/ if(! match)
      /*<<ephemeron.ml:599:16>>*/ return 0;
    var e =  /*<<ephemeron.ml:597:46>>*/ match[1];
     /*<<ephemeron.ml:598:18>>*/ return get_data$0(e) /*<<ephemeron.ml:599:20>>*/ ;
   }
   function length$0(b){
     /*<<ephemeron.ml:601:19>>*/ return Stdlib_List[1].call(null, b[1]) /*<<ephemeron.ml:601:33>>*/ ;
   }
   function clear$0(b){
     /*<<ephemeron.ml:602:18>>*/ b[1] = 0;
    return 0;
    /*<<ephemeron.ml:602:25>>*/ }
   function create$1(n){
     /*<<ephemeron.ml:611:29>>*/ return caml_call1(Stdlib_Obj[23][1], n) /*<<ephemeron.ml:611:44>>*/ ;
   }
   function length$1(k){
     /*<<ephemeron.ml:612:35>>*/ return caml_call1(Stdlib_Obj[23][2], k) /*<<ephemeron.ml:612:50>>*/ ;
   }
   function get_key$0(t, n){
    var x =  /*<<ephemeron.ml:614:58>>*/ caml_call2(Stdlib_Obj[23][3], t, n);
     /*<<ephemeron.ml:388:51>>*/ return x;
    /*<<ephemeron.ml:614:78>>*/ }
   function set_key$0(t, n, k){
     /*<<ephemeron.ml:616:4>>*/ return caml_call3(Stdlib_Obj[23][5], t, n, k) /*<<ephemeron.ml:616:35>>*/ ;
   }
   function get_data$1(t){
    var x =  /*<<ephemeron.ml:619:51>>*/ caml_call1(Stdlib_Obj[23][9], t);
     /*<<ephemeron.ml:388:51>>*/ return x;
    /*<<ephemeron.ml:619:70>>*/ }
   function set_data$1(t, d){
     /*<<ephemeron.ml:620:45>>*/ return caml_call2(Stdlib_Obj[23][11], t, d) /*<<ephemeron.ml:620:75>>*/ ;
   }
   function make$3(keys, data){
    var
     l =  /*<<ephemeron.ml:624:4>>*/ keys.length - 1,
     eph =  /*<<ephemeron.ml:625:14>>*/ create$1(l);
     /*<<ephemeron.ml:626:4>>*/ set_data$1(eph, data);
    var _n_ =  /*<<ephemeron.ml:626:21>>*/ l - 1 | 0;
    if(_n_ >= 0){
     var i = 0;
     for(;;){
       /*<<ephemeron.ml:627:40>>*/  /*<<ephemeron.ml:627:26>>*/ set_key$0
       (eph, i,  /*<<ephemeron.ml:627:40>>*/ caml_check_bound(keys, i)[i + 1]);
      var _o_ =  /*<<ephemeron.ml:627:48>>*/ i + 1 | 0;
      if(_n_ === i) break;
      i = _o_;
     }
    }
     /*<<ephemeron.ml:628:4>>*/ return eph;
    /*<<ephemeron.ml:628:7>>*/ }
   function query$1(eph, keys){
    var l =  /*<<ephemeron.ml:631:12>>*/ length$1(eph);
     /*<<ephemeron.ml:632:4>>*/ try{
     if(l !== keys.length - 1)
       /*<<ephemeron.ml:633:37>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[3], 1);
     var _l_ =  /*<<ephemeron.ml:634:6>>*/ l - 1 | 0;
     if(_l_ >= 0){
      var i = 0;
      for(;;){
       var match =  /*<<ephemeron.ml:635:14>>*/ get_key$0(eph, i);
        /*<<ephemeron.ml:635:27>>*/ if(! match)
         /*<<ephemeron.ml:636:18>>*/ throw caml_maybe_attach_backtrace
               (Stdlib[3], 1);
       var k =  /*<<ephemeron.ml:635:27>>*/ match[1];
        /*<<ephemeron.ml:637:27>>*/ if(k !== caml_check_bound(keys, i)[i + 1])
         /*<<ephemeron.ml:638:20>>*/ throw caml_maybe_attach_backtrace
               (Stdlib[3], 1);
       var _n_ =  /*<<ephemeron.ml:637:35>>*/ i + 1 | 0;
       if(_l_ === i) break;
       i = _n_;
      }
     }
     var _m_ =  /*<<ephemeron.ml:640:6>>*/ get_data$1(eph);
     return _m_;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[3])  /*<<ephemeron.ml:641:17>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<ephemeron.ml:641:21>>*/ }
   function MakeSeeded$2(H){
    function create(k, d){
     var c =  /*<<ephemeron.ml:648:16>>*/ create$1(k.length - 1);
      /*<<ephemeron.ml:649:8>>*/ set_data$1(c, d);
     var _k_ =  /*<<ephemeron.ml:649:20>>*/ k.length - 2 | 0;
     if(_k_ >= 0){
      var i = 0;
      for(;;){
        /*<<ephemeron.ml:651:22>>*/  /*<<ephemeron.ml:651:10>>*/ set_key$0
        (c, i,  /*<<ephemeron.ml:651:22>>*/ caml_check_bound(k, i)[i + 1]);
       var _l_ =  /*<<ephemeron.ml:651:27>>*/ i + 1 | 0;
       if(_k_ === i) break;
       i = _l_;
      }
     }
      /*<<ephemeron.ml:653:8>>*/ return c;
     /*<<ephemeron.ml:653:9>>*/ }
    function seeded_hash(seed, k){
     var
      _h_ =  /*<<ephemeron.ml:656:8>>*/ k.length - 2 | 0,
      _g_ =  /*<<ephemeron.ml:655:8>>*/ 0;
      /*<<ephemeron.ml:656:8>>*/ if(_h_ < 0)
      var h$0 = _g_;
     else{
      var h = _g_, i = 0;
      for(;;){
       var
        _j_ =  /*<<ephemeron.ml:657:34>>*/ caml_check_bound(k, i)[i + 1],
        _i_ =
           /*<<ephemeron.ml:657:15>>*/ (caml_call2(H[2], seed, _j_) * 65599
          | 0)
          + h
          | 0,
        _k_ =  /*<<ephemeron.ml:657:39>>*/ i + 1 | 0;
       if(_h_ === i){var h$0 = _i_; break;}
       h = _i_;
       i = _k_;
      }
     }
      /*<<ephemeron.ml:659:8>>*/ return h$0;
     /*<<ephemeron.ml:659:10>>*/ }
    function equal(c, k){
     var
      len =  /*<<ephemeron.ml:661:8>>*/ k.length - 1,
      len$0 =  /*<<ephemeron.ml:662:19>>*/ length$1(c);
      /*<<ephemeron.ml:663:8>>*/ if(len !== len$0)
       /*<<ephemeron.ml:663:28>>*/ return 1;
     var i$1 =  /*<<ephemeron.ml:675:10>>*/ len - 1 | 0, i = i$1;
     for(;;){
       /*<<ephemeron.ml:666:12>>*/ if(0 > i)
        /*<<ephemeron.ml:666:26>>*/ return 0;
      var match =  /*<<ephemeron.ml:668:20>>*/ get_key$0(c, i);
       /*<<ephemeron.ml:668:31>>*/ if(! match)
        /*<<ephemeron.ml:669:24>>*/ return 2;
      var
       ki =  /*<<ephemeron.ml:668:31>>*/ match[1],
       _g_ =  /*<<ephemeron.ml:671:29>>*/ caml_check_bound(k, i)[i + 1];
       /*<<ephemeron.ml:671:21>>*/ if(! caml_call2(H[1], _g_, ki))
        /*<<ephemeron.ml:673:23>>*/ return 1;
      var i$0 =  /*<<ephemeron.ml:672:23>>*/ i - 1 | 0;
      i = i$0;
     }
     /*<<ephemeron.ml:675:33>>*/ }
    function set_key_data(c, k, d){
      /*<<ephemeron.ml:621:40>>*/ caml_call1(Stdlib_Obj[23][12], c);
     var _f_ =  /*<<ephemeron.ml:678:20>>*/ k.length - 2 | 0;
     if(_f_ >= 0){
      var i = 0;
      for(;;){
        /*<<ephemeron.ml:680:22>>*/  /*<<ephemeron.ml:680:10>>*/ set_key$0
        (c, i,  /*<<ephemeron.ml:680:22>>*/ caml_check_bound(k, i)[i + 1]);
       var _g_ =  /*<<ephemeron.ml:680:27>>*/ i + 1 | 0;
       if(_f_ === i) break;
       i = _g_;
      }
     }
      /*<<ephemeron.ml:682:8>>*/ return set_data$1(c, d) /*<<ephemeron.ml:682:20>>*/ ;
    }
    function check_key(c){
     var
      i$1 =  /*<<ephemeron.ml:686:17>>*/ length$1(c) - 1 | 0,
      i =  /*<<ephemeron.ml:686:25>>*/ i$1;
     for(;;){
      var _e_ =  /*<<ephemeron.ml:685:10>>*/ i < 0 ? 1 : 0;
      if(_e_)
       var _f_ = _e_;
      else{
       var
        _d_ =  /*<<ephemeron.ml:617:47>>*/ caml_call2(Stdlib_Obj[23][7], c, i);
        /*<<ephemeron.ml:685:33>>*/ if(_d_){
        var i$0 = i - 1 | 0;
        i = i$0;
        continue;
       }
       var _f_ = _d_;
      }
       /*<<ephemeron.ml:685:10>>*/ return _f_;
     }
     /*<<ephemeron.ml:686:30>>*/ }
     /*<<?>>*/ return MakeSeeded
            ([0,
              create,
              seeded_hash,
              equal,
              get_data$1,
              set_key_data,
              check_key]);
   }
   var _c_ = [0, 0];
   function Make$1(H){
    var equal = H[1];
    function seeded_hash(seed, x){
      /*<<ephemeron.ml:694:41>>*/ return caml_call1(H[2], x) /*<<ephemeron.ml:694:49>>*/ ;
    }
    var
     include =  /*<<?>>*/ MakeSeeded$2([0, equal, seeded_hash]),
     _d_ = include[1],
     clear = include[2],
     reset = include[3],
     copy = include[4],
     add = include[5],
     remove = include[6],
     find = include[7],
     find_opt = include[8],
     find_all = include[9],
     replace = include[10],
     mem = include[11],
     length = include[12],
     stats = include[13],
     add_seq = include[14],
     replace_seq = include[15],
     clean = include[17],
     stats_alive = include[18];
    function create(sz){
      /*<<ephemeron.ml:696:20>>*/ return caml_call2(_d_, _c_, sz) /*<<ephemeron.ml:696:43>>*/ ;
    }
    function of_seq(i){
     var tbl =  /*<<ephemeron.ml:696:20>>*/ caml_call2(_d_, _c_, 16);
      /*<<ephemeron.ml:699:6>>*/ caml_call2(replace_seq, tbl, i);
      /*<<ephemeron.ml:699:23>>*/ return tbl;
     /*<<ephemeron.ml:700:9>>*/ }
     /*<<?>>*/ return [0,
            create,
            clear,
            reset,
            copy,
            add,
            remove,
            find,
            find_opt,
            find_all,
            replace,
            mem,
            length,
            stats,
            add_seq,
            replace_seq,
            of_seq,
            clean,
            stats_alive];
   }
   function make$4(param){
     /*<<ephemeron.ml:707:18>>*/ return [0, 0];
    /*<<ephemeron.ml:707:24>>*/ }
   function add$1(b, k, d){
    var _d_ =  /*<<ephemeron.ml:708:25>>*/ b[1];
    b[1] = [0, make$3(k, d), _d_];
     /*<<ephemeron.ml:708:36>>*/ return 0;
    /*<<ephemeron.ml:708:42>>*/ }
   function test_keys$0(k, e){
     /*<<ephemeron.ml:711:6>>*/ try{
      /*<<ephemeron.ml:712:11>>*/ if(length$1(e) !== k.length - 1)
       /*<<ephemeron.ml:712:43>>*/ throw caml_maybe_attach_backtrace
             (Stdlib[3], 1);
     var _c_ =  /*<<ephemeron.ml:713:8>>*/ k.length - 2 | 0;
     if(_c_ >= 0){
      var i = 0;
      for(;;){
       var match =  /*<<ephemeron.ml:714:16>>*/ get_key$0(e, i);
        /*<<ephemeron.ml:714:27>>*/ if(match){
        var x = match[1];
         /*<<ephemeron.ml:715:29>>*/ if(x === caml_check_bound(k, i)[i + 1]){
         var _d_ =  /*<<ephemeron.ml:715:34>>*/ i + 1 | 0;
         if(_c_ === i) break;
         i = _d_;
         continue;
        }
       }
        /*<<ephemeron.ml:716:17>>*/ throw caml_maybe_attach_backtrace
              (Stdlib[3], 1);
      }
     }
     return 1;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn === Stdlib[3])  /*<<ephemeron.ml:719:19>>*/ return 0;
      /*<<?>>*/ throw caml_maybe_attach_backtrace(exn, 0);
    }
    /*<<ephemeron.ml:719:24>>*/ }
   function remove$1(b, k){
    var l$0 =  /*<<ephemeron.ml:728:6>>*/ b[1], l = l$0, acc = 0;
    for(;;){
      /*<<ephemeron.ml:723:8>>*/ if(! l)
       /*<<ephemeron.ml:724:16>>*/ return 0;
     var h =  /*<<ephemeron.ml:723:8>>*/ l[1], t = l[2];
      /*<<ephemeron.ml:725:22>>*/ if(test_keys$0(k, h)){
       /*<<ephemeron.ml:725:44>>*/ b[1] = Stdlib_List[14].call(null, acc, t);
       /*<<ephemeron.ml:725:65>>*/ return 0;
     }
     var
      t$0 =  /*<<ephemeron.ml:725:35>>*/ l[2],
      acc$0 =  /*<<ephemeron.ml:726:20>>*/ [0, h, acc];
     l = t$0;
     acc = acc$0;
    }
    /*<<ephemeron.ml:728:16>>*/ }
   function find$1(b, k){
    var
     match =
        /*<<ephemeron.ml:731:12>>*/ Stdlib_List[41].call
        (null,
         function(_c_){
           /*<<ephemeron.ml:731:26>>*/ return test_keys$0(k, _c_);
         },
         b[1]);
     /*<<ephemeron.ml:731:42>>*/ if(! match)
      /*<<ephemeron.ml:733:16>>*/ return 0;
    var e =  /*<<ephemeron.ml:731:42>>*/ match[1];
     /*<<ephemeron.ml:732:18>>*/ return get_data$1(e) /*<<ephemeron.ml:733:20>>*/ ;
   }
   function length$2(b){
     /*<<ephemeron.ml:735:19>>*/ return Stdlib_List[1].call(null, b[1]) /*<<ephemeron.ml:735:33>>*/ ;
   }
   function clear$1(b){
     /*<<ephemeron.ml:736:18>>*/ b[1] = 0;
    return 0;
    /*<<ephemeron.ml:736:25>>*/ }
    /*<<?>>*/ runtime.caml_register_global
    (13,
     [0,
      [0,
       make,
       query,
       Make,
       MakeSeeded$0,
       [0, make$0, add, remove, find, length, clear]],
      [0,
       make$1,
       query$0,
       Make$0,
       MakeSeeded$1,
       [0, make$2, add$0, remove$0, find$0, length$0, clear$0]],
      [0,
       make$3,
       query$1,
       Make$1,
       MakeSeeded$2,
       [0, make$4, add$1, remove$1, find$1, length$2, clear$1]]],
     "Stdlib__Ephemeron");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Filename
//# unitInfo: Requires: Stdlib, Stdlib__Buffer, Stdlib__Domain, Stdlib__List, Stdlib__Printf, Stdlib__Random, Stdlib__String, Stdlib__Sys
//# shape: Stdlib__Filename:[N,N,N,F(2),F(1),F(1),F(2),F(2),F(2),F(1),F(1),F(1),F(1),F(1),N,F(3),F(5),F(4),F(1),F(1),F(1),F(5)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_equal = runtime.caml_equal,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_ml_string_length = runtime.caml_ml_string_length,
    caml_string_get = runtime.caml_string_get,
    caml_trampoline = runtime.caml_trampoline,
    caml_trampoline_return = runtime.caml_trampoline_return,
    caml_wrap_exception = runtime.caml_wrap_exception;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   function caml_call2(f, a0, a1){
    return (f.l >= 0 ? f.l : f.l = f.length) === 2
            ? f(a0, a1)
            : runtime.caml_call_gen(f, [a0, a1]);
   }
   function caml_call3(f, a0, a1, a2){
    return (f.l >= 0 ? f.l : f.l = f.length) === 3
            ? f(a0, a1, a2)
            : runtime.caml_call_gen(f, [a0, a1, a2]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Domain = global_data.Stdlib__Domain,
    Stdlib_Random = global_data.Stdlib__Random,
    Stdlib_Printf = global_data.Stdlib__Printf,
    Stdlib_String = global_data.Stdlib__String,
    Stdlib_List = global_data.Stdlib__List,
    Stdlib_Buffer = global_data.Stdlib__Buffer,
    Stdlib_Sys = global_data.Stdlib__Sys,
    cst = "";
   function generic_basename(is_dir_sep, current_dir_name, name){
     /*<<filename.ml:46:14>>*/ if(name === cst)
      /*<<filename.ml:47:7>>*/ return current_dir_name;
    var
     n$3 =  /*<<filename.ml:48:7>>*/ caml_ml_string_length(name) - 1 | 0,
     n = n$3;
    for(;;){
      /*<<filename.ml:38:4>>*/ if(0 > n)
       /*<<filename.ml:38:18>>*/ return Stdlib_String[16].call
              (null, name, 0, 1) /*<<filename.ml:48:40>>*/ ;
      /*<<filename.ml:39:12>>*/ if(! caml_call2(is_dir_sep, name, n)) break;
     var n$0 =  /*<<filename.ml:39:35>>*/ n - 1 | 0;
     n = n$0;
    }
    var p =  /*<<filename.ml:40:9>>*/ n + 1 | 0, n$1 = n;
    for(;;){
      /*<<filename.ml:42:4>>*/ if(0 > n$1)
       /*<<filename.ml:42:18>>*/ return Stdlib_String[16].call
              (null, name, 0, p) /*<<filename.ml:48:40>>*/ ;
      /*<<filename.ml:43:12>>*/ if(caml_call2(is_dir_sep, name, n$1))
       /*<<filename.ml:43:35>>*/ return Stdlib_String[16].call
              (null, name, n$1 + 1 | 0, (p - n$1 | 0) - 1 | 0) /*<<filename.ml:48:40>>*/ ;
     var n$2 =  /*<<filename.ml:44:9>>*/ n$1 - 1 | 0;
     n$1 = n$2;
    }
    /*<<filename.ml:48:40>>*/ }
   function generic_dirname(is_dir_sep, current_dir_name, name){
     /*<<filename.ml:68:14>>*/ if(name === cst)
      /*<<filename.ml:69:7>>*/ return current_dir_name;
    var
     n$5 =  /*<<filename.ml:70:7>>*/ caml_ml_string_length(name) - 1 | 0,
     n = n$5;
    for(;;){
      /*<<filename.ml:56:4>>*/ if(0 > n)
       /*<<filename.ml:56:18>>*/ return Stdlib_String[16].call
              (null, name, 0, 1) /*<<filename.ml:70:44>>*/ ;
      /*<<filename.ml:57:12>>*/ if(! caml_call2(is_dir_sep, name, n)){
      var n$1 =  /*<<filename.ml:57:29>>*/ n;
      break;
     }
     var n$0 =  /*<<filename.ml:57:35>>*/ n - 1 | 0;
     n = n$0;
    }
     /*<<filename.ml:70:7>>*/ for(;;){
      /*<<filename.ml:60:4>>*/ if(0 > n$1)
       /*<<filename.ml:60:18>>*/ return current_dir_name;
      /*<<filename.ml:61:12>>*/ if(caml_call2(is_dir_sep, name, n$1)){
      var n$3 =  /*<<filename.ml:61:29>>*/ n$1;
      break;
     }
     var n$2 =  /*<<filename.ml:62:9>>*/ n$1 - 1 | 0;
     n$1 = n$2;
    }
     /*<<filename.ml:70:7>>*/ for(;;){
      /*<<filename.ml:64:4>>*/ if(0 > n$3)
       /*<<filename.ml:64:18>>*/ return Stdlib_String[16].call
              (null, name, 0, 1) /*<<filename.ml:70:44>>*/ ;
      /*<<filename.ml:65:12>>*/ if(! caml_call2(is_dir_sep, name, n$3))
       /*<<filename.ml:66:9>>*/ return Stdlib_String[16].call
              (null, name, 0, n$3 + 1 | 0) /*<<filename.ml:70:44>>*/ ;
     var n$4 =  /*<<filename.ml:65:35>>*/ n$3 - 1 | 0;
     n$3 = n$4;
    }
    /*<<filename.ml:70:44>>*/ }
   function is_dir_sep(s, i){
     /*<<filename.ml:96:23>>*/ return 47 === caml_string_get(s, i) ? 1 : 0 /*<<filename.ml:96:28>>*/ ;
    /*<<filename.ml:96:34>>*/ }
   function is_relative(n){
    var
     _$_ =  /*<<filename.ml:97:22>>*/ caml_ml_string_length(n) < 1 ? 1 : 0,
     _aa_ =
       _$_
       || (47 !==  /*<<filename.ml:97:45>>*/ caml_string_get(n, 0) ? 1 : 0);
     /*<<filename.ml:97:22>>*/ return _aa_;
    /*<<filename.ml:97:57>>*/ }
   var cst$8 =  /*<<?>>*/ "../", cst$7 = "./";
   function is_implicit(n){
    var _Y_ =  /*<<filename.ml:99:4>>*/ is_relative(n);
     /*<<filename.ml:99:17>>*/ if(_Y_){
     var
      ___ = caml_ml_string_length(n) < 2 ? 1 : 0,
      _Z_ =
        ___
        ||
         ( /*<<filename.ml:100:31>>*/ Stdlib_String[16].call(null, n, 0, 2)
           !== cst$7
           ? 1
           : 0);
      /*<<filename.ml:99:17>>*/ if(_Z_)
      var
       _$_ = caml_ml_string_length(n) < 3 ? 1 : 0,
       _X_ =
         _$_
         ||
          ( /*<<filename.ml:101:31>>*/ Stdlib_String[16].call(null, n, 0, 3)
            !== cst$8
            ? 1
            : 0);
     else
      var _X_ =  /*<<filename.ml:99:17>>*/ _Z_;
    }
    else
     var _X_ = _Y_;
    return _X_;
    /*<<filename.ml:101:57>>*/ }
   function check_suffix(name, suff){
     /*<<filename.ml:103:4>>*/ return Stdlib_String[12].call(null, suff, name) /*<<filename.ml:103:38>>*/ ;
   }
   function chop_suffix_opt(suffix, filename){
    var
     len_s =  /*<<filename.ml:106:4>>*/ caml_ml_string_length(suffix),
     len_f = caml_ml_string_length(filename);
     /*<<filename.ml:107:4>>*/ if(len_s > len_f)
      /*<<filename.ml:114:6>>*/ return 0;
    var
     r =
        /*<<filename.ml:108:14>>*/ Stdlib_String[16].call
        (null, filename, len_f - len_s | 0, len_s);
     /*<<filename.ml:109:19>>*/ return r === suffix
            ? [0,
               /*<<filename.ml:110:13>>*/ Stdlib_String[16].call
               (null, filename, 0, len_f - len_s | 0)]
            : 0 /*<<filename.ml:114:10>>*/ ;
   }
   var dummy =  /*<<?>>*/ 0;
   try{
    var
     _f_ =  /*<<filename.ml:117:8>>*/ runtime.caml_sys_getenv("TMPDIR"),
     temp_dir_name = _f_;
   }
   catch(exn$0){
    var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
    if(exn !== Stdlib[8]) throw caml_maybe_attach_backtrace(exn, 0);
    var temp_dir_name = "/tmp";
   }
   function quote(s){
    var
     l =  /*<<filename.ml:17:2>>*/ caml_ml_string_length(s),
     b =  /*<<filename.ml:18:10>>*/ Stdlib_Buffer[1].call(null, l + 20 | 0);
     /*<<filename.ml:19:2>>*/ Stdlib_Buffer[12].call(null, b, 39);
    var _V_ =  /*<<filename.ml:19:24>>*/ l - 1 | 0;
    if(_V_ >= 0){
     var i = 0;
     for(;;){
       /*<<filename.ml:21:7>>*/ if(39 === caml_string_get(s, i))
        /*<<filename.ml:22:9>>*/ Stdlib_Buffer[16].call(null, b, "'\\''");
      else{
       var _X_ =  /*<<filename.ml:23:28>>*/ caml_string_get(s, i);
        /*<<filename.ml:23:9>>*/ Stdlib_Buffer[12].call(null, b, _X_);
      }
      var _W_ =  /*<<filename.ml:21:12>>*/ i + 1 | 0;
      if(_V_ === i) break;
      i = _W_;
     }
    }
     /*<<filename.ml:25:2>>*/ Stdlib_Buffer[12].call(null, b, 39);
     /*<<filename.ml:25:24>>*/ return Stdlib_Buffer[2].call(null, b);
   }
   var
    cst$3 =  /*<<?>>*/ " ",
    cst_2 = " 2>",
    cst_2_1 = " 2>&1",
    cst$2 = " <",
    cst$1 = " >";
   function quote_command(cmd, stdin, stdout, stderr, args){
     /*<<filename.ml:120:4>>*/ if(stderr){
     var f = stderr[1];
      /*<<filename.ml:123:51>>*/ if(caml_equal(stderr, stdout))
      var _M_ =  /*<<filename.ml:123:66>>*/ cst_2_1;
     else
      var
       _V_ =  /*<<filename.ml:125:61>>*/ quote(f),
       _M_ =
          /*<<filename.ml:125:68>>*/  /*<<filename.ml:125:53>>*/ Stdlib[28].call
          (null, cst_2, _V_);
    }
    else
     var _M_ =  /*<<filename.ml:120:4>>*/ cst;
    if(stdout)
     var
      f$0 = stdout[1],
      _P_ =  /*<<filename.ml:122:55>>*/ quote(f$0),
      _N_ =
         /*<<filename.ml:122:62>>*/  /*<<filename.ml:122:48>>*/ Stdlib[28].call
         (null, cst$1, _P_);
    else
     var _N_ =  /*<<filename.ml:120:4>>*/ cst;
    var _Q_ =  /*<<filename.ml:122:6>>*/ Stdlib[28].call(null, _N_, _M_);
     /*<<filename.ml:125:69>>*/ if(stdin)
     var
      f$1 = stdin[1],
      _R_ =  /*<<filename.ml:121:55>>*/ quote(f$1),
      _O_ =
         /*<<filename.ml:121:62>>*/  /*<<filename.ml:121:48>>*/ Stdlib[28].call
         (null, cst$2, _R_);
    else
     var _O_ =  /*<<filename.ml:125:69>>*/ cst;
    var
     _S_ =  /*<<filename.ml:121:6>>*/ Stdlib[28].call(null, _O_, _Q_),
     _T_ =
        /*<<filename.ml:120:22>>*/ Stdlib_List[21].call
        (null, quote, [0, cmd, args]),
     _U_ =  /*<<filename.ml:120:4>>*/ Stdlib_String[7].call(null, cst$3, _T_);
     /*<<filename.ml:120:52>>*/ return Stdlib[28].call(null, _U_, _S_) /*<<filename.ml:125:69>>*/ ;
   }
   var cst$4 =  /*<<?>>*/ ".", current_dir_name = cst$4;
   function basename(_M_){
     /*<<filename.ml:126:17>>*/ return generic_basename
            (is_dir_sep, current_dir_name, _M_);
   }
   function dirname(_M_){
     /*<<filename.ml:127:16>>*/ return generic_dirname
            (is_dir_sep, current_dir_name, _M_);
   }
   var
    cst$5 =  /*<<?>>*/ "..",
    cst$6 = "/",
    cst_dev_null = "/dev/null",
    Unix =
       /*<<filename.ml:127:59>>*/ [0,
       cst_dev_null,
       current_dir_name,
       cst$5,
       cst$6,
       is_dir_sep,
       is_relative,
       is_implicit,
       check_suffix,
       chop_suffix_opt,
       temp_dir_name,
       quote,
       quote_command,
       basename,
       dirname];
   function is_dir_sep$0(s, i){
    var
     c =  /*<<filename.ml:135:31>>*/ caml_string_get(s, i),
     _K_ =  /*<<filename.ml:135:40>>*/ 47 === c ? 1 : 0;
    if(_K_)
     var _L_ = _K_;
    else
     var _M_ = 92 === c ? 1 : 0, _L_ = _M_ || (58 === c ? 1 : 0);
    return _L_;
    /*<<filename.ml:135:70>>*/ }
   function is_relative$0(n){
    var
     _I_ =  /*<<filename.ml:137:4>>*/ caml_ml_string_length(n) < 1 ? 1 : 0,
     _G_ =
       _I_
       || (47 !==  /*<<filename.ml:137:28>>*/ caml_string_get(n, 0) ? 1 : 0);
     /*<<filename.ml:137:4>>*/ if(_G_){
     var
      _J_ = caml_ml_string_length(n) < 1 ? 1 : 0,
      _H_ =
        _J_
        || (92 !==  /*<<filename.ml:138:31>>*/ caml_string_get(n, 0) ? 1 : 0);
      /*<<filename.ml:137:4>>*/ if(_H_)
      var
       _K_ = caml_ml_string_length(n) < 2 ? 1 : 0,
       _F_ =
         _K_
         || (58 !==  /*<<filename.ml:139:31>>*/ caml_string_get(n, 1) ? 1 : 0);
     else
      var _F_ =  /*<<filename.ml:137:4>>*/ _H_;
    }
    else
     var _F_ = _G_;
    return _F_;
    /*<<filename.ml:139:44>>*/ }
   function is_implicit$0(n){
    var _y_ =  /*<<filename.ml:141:4>>*/ is_relative$0(n);
     /*<<filename.ml:141:17>>*/ if(_y_){
     var
      _C_ = caml_ml_string_length(n) < 2 ? 1 : 0,
      _z_ =
        _C_
        ||
         ( /*<<filename.ml:142:31>>*/ Stdlib_String[16].call(null, n, 0, 2)
           !== cst$7
           ? 1
           : 0);
      /*<<filename.ml:141:17>>*/ if(_z_){
      var
       _D_ = caml_ml_string_length(n) < 2 ? 1 : 0,
       _A_ =
         _D_
         ||
          ( /*<<filename.ml:143:31>>*/ Stdlib_String[16].call(null, n, 0, 2)
            !== ".\\"
            ? 1
            : 0);
       /*<<filename.ml:141:17>>*/ if(_A_){
       var
        _E_ = caml_ml_string_length(n) < 3 ? 1 : 0,
        _B_ =
          _E_
          ||
           ( /*<<filename.ml:144:31>>*/ Stdlib_String[16].call(null, n, 0, 3)
             !== cst$8
             ? 1
             : 0);
        /*<<filename.ml:141:17>>*/ if(_B_)
        var
         _F_ = caml_ml_string_length(n) < 3 ? 1 : 0,
         _x_ =
           _F_
           ||
            ( /*<<filename.ml:145:31>>*/ Stdlib_String[16].call(null, n, 0, 3)
              !== "..\\"
              ? 1
              : 0);
       else
        var _x_ =  /*<<filename.ml:141:17>>*/ _B_;
      }
      else
       var _x_ = _A_;
     }
     else
      var _x_ = _z_;
    }
    else
     var _x_ = _y_;
    return _x_;
    /*<<filename.ml:145:58>>*/ }
   function check_suffix$0(name, suff){
    var
     _v_ =
        /*<<filename.ml:147:3>>*/ caml_ml_string_length(suff)
        <= caml_ml_string_length(name)
        ? 1
        : 0;
    if(_v_)
     var
      s =
         /*<<filename.ml:148:12>>*/ Stdlib_String[16].call
         (null,
          name,
           /*<<filename.ml:147:3>>*/ caml_ml_string_length(name)
          - caml_ml_string_length(suff)
          | 0,
          caml_ml_string_length(suff)),
      _x_ =  /*<<filename.ml:150:31>>*/ Stdlib_String[27].call(null, suff),
      _w_ =
         /*<<filename.ml:150:58>>*/  /*<<filename.ml:150:4>>*/ Stdlib_String
           [27].call
          (null, s)
         === _x_
         ? 1
         : 0;
    else
     var _w_ =  /*<<filename.ml:147:3>>*/ _v_;
    return _w_;
    /*<<filename.ml:150:59>>*/ }
   function chop_suffix_opt$0(suffix, filename){
    var
     len_s =  /*<<filename.ml:153:4>>*/ caml_ml_string_length(suffix),
     len_f = caml_ml_string_length(filename);
     /*<<filename.ml:154:4>>*/ if(len_s > len_f)
      /*<<filename.ml:161:6>>*/ return 0;
    var
     r =
        /*<<filename.ml:155:14>>*/ Stdlib_String[16].call
        (null, filename, len_f - len_s | 0, len_s),
     _v_ =  /*<<filename.ml:156:36>>*/ Stdlib_String[27].call(null, suffix);
     /*<<filename.ml:156:9>>*/ return Stdlib_String[27].call(null, r) === _v_
            ? [0,
               /*<<filename.ml:157:13>>*/ Stdlib_String[16].call
               (null, filename, 0, len_f - len_s | 0)]
            : 0 /*<<filename.ml:161:10>>*/ ;
   }
   var
    temp_dir_name$0 =
       /*<<filename.ml:164:22>>*/ runtime.caml_sys_temp_dir_name(0);
   function quote$0(s){
    var
     l =  /*<<filename.ml:167:4>>*/ caml_ml_string_length(s),
     b =  /*<<filename.ml:168:12>>*/ Stdlib_Buffer[1].call(null, l + 20 | 0);
     /*<<filename.ml:169:4>>*/ Stdlib_Buffer[12].call(null, b, 34);
    function loop$0(counter, i$1){
     var i =  /*<<filename.ml:171:6>>*/ i$1;
     for(;;){
      if(i === l)
        /*<<filename.ml:171:20>>*/ return Stdlib_Buffer[12].call(null, b, 34) /*<<filename.ml:175:48>>*/ ;
      var c =  /*<<filename.ml:172:12>>*/ caml_string_get(s, i);
       /*<<filename.ml:172:17>>*/ if(34 === c){
       var _u_ =  /*<<filename.ml:173:16>>*/ 0;
       return counter < 50
               ? loop_bs(counter + 1 | 0, _u_, i)
               : caml_trampoline_return(loop_bs, [0, _u_, i]) /*<<filename.ml:175:48>>*/ ;
      }
       /*<<filename.ml:172:17>>*/ if(92 === c){
       var _v_ =  /*<<filename.ml:174:16>>*/ 0;
       return counter < 50
               ? loop_bs(counter + 1 | 0, _v_, i)
               : caml_trampoline_return(loop_bs, [0, _v_, i]) /*<<filename.ml:175:48>>*/ ;
      }
       /*<<filename.ml:175:16>>*/ Stdlib_Buffer[12].call(null, b, c);
      var i$0 =  /*<<filename.ml:175:35>>*/ i + 1 | 0;
      i = i$0;
     }
     /*<<filename.ml:175:48>>*/ }
    function loop(i){
      /*<<filename.ml:171:6>>*/ return  /*<<?>>*/ caml_trampoline
             ( /*<<filename.ml:171:6>>*/ loop$0(0, i)) /*<<filename.ml:175:48>>*/ ;
    }
    function loop_bs(counter, n$1, i$1){
     var n =  /*<<filename.ml:177:6>>*/ n$1, i = i$1;
     for(;;){
      if(i === l){
        /*<<filename.ml:178:8>>*/ Stdlib_Buffer[12].call(null, b, 34);
        /*<<filename.ml:178:30>>*/ return add_bs(n) /*<<filename.ml:185:9>>*/ ;
      }
      var match =  /*<<filename.ml:181:14>>*/ caml_string_get(s, i);
       /*<<filename.ml:181:19>>*/ if(34 === match){
        /*<<filename.ml:182:18>>*/ add_bs((2 * n | 0) + 1 | 0);
        /*<<filename.ml:182:34>>*/ Stdlib_Buffer[12].call(null, b, 34);
       var _u_ =  /*<<filename.ml:182:56>>*/ i + 1 | 0;
       return counter < 50
               ? loop$0(counter + 1 | 0, _u_)
               : caml_trampoline_return(loop$0, [0, _u_]) /*<<filename.ml:185:9>>*/ ;
      }
       /*<<filename.ml:181:19>>*/ if(92 !== match){
        /*<<filename.ml:184:18>>*/ add_bs(n);
        /*<<filename.ml:184:26>>*/ return counter < 50
               ? loop$0(counter + 1 | 0, i)
               : caml_trampoline_return(loop$0, [0, i]) /*<<filename.ml:185:9>>*/ ;
      }
      var i$0 =  /*<<filename.ml:183:18>>*/ i + 1 | 0, n$0 = n + 1 | 0;
      n = n$0;
      i = i$0;
     }
     /*<<filename.ml:185:9>>*/ }
    function add_bs(n){
      /*<<filename.ml:186:19>>*/ if(n >= 1){
      var j = 1;
      for(;;){
        /*<<filename.ml:186:38>>*/ Stdlib_Buffer[12].call(null, b, 92);
       var _u_ =  /*<<filename.ml:186:60>>*/ j + 1 | 0;
       if(n === j) break;
       j = _u_;
      }
     }
     /*<<filename.ml:186:66>>*/ }
     /*<<filename.ml:188:4>>*/ loop(0);
     /*<<filename.ml:188:10>>*/ return Stdlib_Buffer[2].call(null, b) /*<<filename.ml:189:21>>*/ ;
   }
   var cst$0 =  /*<<?>>*/ '"', _a_ = [0, cst$0, 0];
   function quote_cmd_filename(f){
    var
     f$0 =
        /*<<filename.ml:225:9>>*/ Stdlib_String[15].call(null, f, 47)
        ?  /*<<filename.ml:226:8>>*/ Stdlib_String
           [18].call
          (null,
           function(c){
             /*<<filename.ml:226:19>>*/ return 47 === c ? 92 : c /*<<filename.ml:226:50>>*/ ;
           },
           f)
        : f;
     /*<<filename.ml:229:7>>*/ if
     (!
      Stdlib_String[23].call
       (null,
        function(param){
          /*<<filename.ml:229:21>>*/ if(34 !== param && 37 !== param)
           /*<<filename.ml:229:57>>*/ return 0;
          /*<<filename.ml:229:45>>*/ return 1;
         /*<<filename.ml:229:63>>*/ },
        f$0))
      /*<<filename.ml:231:12>>*/ return Stdlib_String[15].call(null, f$0, 32)
             ?  /*<<filename.ml:232:6>>*/ Stdlib_String
                [7].call
               (null, cst, [0, cst$0, [0, f$0, _a_]])
             : f$0 /*<<filename.ml:234:7>>*/ ;
    var
     _u_ =
        /*<<filename.ml:230:15>>*/ Stdlib[28].call
        (null, "Filename.quote_command: bad file name ", f$0);
     /*<<filename.ml:230:61>>*/ return Stdlib[2].call(null, _u_) /*<<filename.ml:234:7>>*/ ;
   }
   var _b_ =  /*<<?>>*/ [0, cst$0, 0];
   function quote_command$0(cmd, stdin, stdout, stderr, args){
     /*<<filename.ml:239:4>>*/ if(stderr){
     var f = stderr[1];
      /*<<filename.ml:247:43>>*/ if(caml_equal(stderr, stdout))
      var _k_ =  /*<<filename.ml:247:58>>*/ cst_2_1;
     else
      var
       _u_ =  /*<<filename.ml:249:53>>*/ quote_cmd_filename(f),
       _k_ =
          /*<<filename.ml:249:73>>*/  /*<<filename.ml:249:45>>*/ Stdlib[28].call
          (null, cst_2, _u_);
    }
    else
     var _k_ =  /*<<filename.ml:239:4>>*/ cst;
    var _n_ = [0, _k_, _b_];
    if(stdout)
     var
      f$0 = stdout[1],
      _o_ =  /*<<filename.ml:245:55>>*/ quote_cmd_filename(f$0),
      _l_ =
         /*<<filename.ml:245:75>>*/  /*<<filename.ml:245:48>>*/ Stdlib[28].call
         (null, cst$1, _o_);
    else
     var _l_ =  /*<<filename.ml:239:4>>*/ cst;
    var _p_ = [0, _l_, _n_];
    if(stdin)
     var
      f$1 = stdin[1],
      _q_ =  /*<<filename.ml:244:55>>*/ quote_cmd_filename(f$1),
      _m_ =
         /*<<filename.ml:244:75>>*/  /*<<filename.ml:244:48>>*/ Stdlib[28].call
         (null, cst$2, _q_);
    else
     var _m_ =  /*<<filename.ml:239:4>>*/ cst;
    var
     _r_ =
        /*<<filename.ml:243:35>>*/ Stdlib_List[21].call(null, quote$0, args),
     s =  /*<<filename.ml:243:16>>*/ Stdlib_String[7].call(null, cst$3, _r_),
     b =
        /*<<filename.ml:211:4>>*/  /*<<filename.ml:211:12>>*/ Stdlib_Buffer[1].call
        (null,  /*<<filename.ml:211:4>>*/ caml_ml_string_length(s) + 20 | 0);
     /*<<filename.ml:212:4>>*/ Stdlib_String[30].call
     (null,
      function(c){
       a:
       {
         /*<<filename.ml:214:8>>*/ if(62 <= c){
         var _u_ = c - 63 | 0;
         if(60 < _u_ >>> 0){
          if(62 <= _u_) break a;
         }
         else if(31 !== _u_) break a;
        }
        else
         if(42 <= c){
          if(60 !== c) break a;
         }
         else{
          if(33 > c) break a;
          switch(c - 33 | 0){case 2:case 3:case 6: break a;
          }
         }
         /*<<filename.ml:216:12>>*/ Stdlib_Buffer[12].call(null, b, 94);
         /*<<filename.ml:216:33>>*/ return Stdlib_Buffer[12].call(null, b, c) /*<<filename.ml:218:31>>*/ ;
       }
        /*<<filename.ml:218:12>>*/ return Stdlib_Buffer[12].call(null, b, c) /*<<filename.ml:218:31>>*/ ;
      },
      s);
    var
     _s_ =
        /*<<filename.ml:219:7>>*/ [0,
        cst$3,
        [0, Stdlib_Buffer[2].call(null, b), [0, _m_, _p_]]],
     _t_ =
        /*<<filename.ml:241:6>>*/ [0,
        cst$0,
        [0, quote_cmd_filename(cmd), _s_]];
     /*<<filename.ml:241:28>>*/ return Stdlib_String[7].call(null, cst, _t_) /*<<filename.ml:251:5>>*/ ;
   }
   function drive_and_path(s){
    var _i_ =  /*<<filename.ml:257:4>>*/ 2 <= caml_ml_string_length(s);
    if(_i_){
     var param =  /*<<filename.ml:257:38>>*/ caml_string_get(s, 0);
     a:
     {
      b:
      {
        /*<<filename.ml:253:20>>*/ if(91 <= param){
        if(25 < param - 97 >>> 0) break b;
       }
       else if(65 > param) break b;
       var _h_ =  /*<<filename.ml:254:35>>*/ 1;
       break a;
      }
      var _h_ =  /*<<filename.ml:255:13>>*/ 0;
     }
     var
      _j_ =
         /*<<filename.ml:257:43>>*/ _h_
         ? 58 ===  /*<<filename.ml:257:47>>*/ caml_string_get(s, 1)
         : _h_;
    }
    else
     var _j_ =  /*<<filename.ml:257:4>>*/ _i_;
     /*<<filename.ml:259:18>>*/ if(! _j_)
      /*<<filename.ml:261:9>>*/ return [0, cst, s];
    var
     _k_ =
        /*<<filename.ml:260:9>>*/  /*<<filename.ml:260:28>>*/ Stdlib_String
         [16].call
        (null,
         s,
         2,
          /*<<filename.ml:260:9>>*/ caml_ml_string_length(s) - 2 | 0);
     /*<<filename.ml:260:10>>*/ return [0,
            Stdlib_String[16].call(null, s, 0, 2),
            _k_] /*<<filename.ml:260:26>>*/ ;
    /*<<filename.ml:261:16>>*/ }
   var current_dir_name$0 =  /*<<?>>*/ cst$4;
   function dirname$0(s){
    var
     match =  /*<<filename.ml:263:24>>*/ drive_and_path(s),
     path =  /*<<filename.ml:263:40>>*/ match[2],
     drive = match[1],
     dir =
        /*<<filename.ml:264:14>>*/ generic_dirname
        (is_dir_sep$0, current_dir_name$0, path);
     /*<<filename.ml:265:4>>*/ return Stdlib[28].call(null, drive, dir) /*<<filename.ml:265:15>>*/ ;
   }
   function basename$0(s){
    var path =  /*<<filename.ml:267:25>>*/ drive_and_path(s)[2];
     /*<<filename.ml:268:4>>*/ return generic_basename
            (is_dir_sep$0, current_dir_name$0, path) /*<<filename.ml:268:53>>*/ ;
   }
   var current_dir_name$1 =  /*<<?>>*/ cst$4;
   function basename$1(_h_){
     /*<<filename.ml:284:17>>*/ return generic_basename
            (is_dir_sep$0, current_dir_name$1, _h_);
   }
   function dirname$1(_h_){
     /*<<filename.ml:285:16>>*/ return generic_dirname
            (is_dir_sep$0, current_dir_name$1, _h_);
   }
   var
    Cygwin =
       /*<<filename.ml:285:59>>*/ [0,
       cst_dev_null,
       current_dir_name$1,
       cst$5,
       cst$6,
       is_dir_sep$0,
       is_relative$0,
       is_implicit$0,
       check_suffix$0,
       chop_suffix_opt$0,
       temp_dir_name,
       quote,
       quote_command,
       basename$1,
       dirname$1],
    match = Stdlib_Sys[5],
    Sysdeps =
      match !== "Cygwin"
       ? match
         !== "Win32"
         ? Unix
         : [0,
           "NUL",
           current_dir_name$0,
           cst$5,
           "\\",
           is_dir_sep$0,
           is_relative$0,
           is_implicit$0,
           check_suffix$0,
           chop_suffix_opt$0,
           temp_dir_name$0,
           quote$0,
           quote_command$0,
           basename$0,
           dirname$0]
       : Cygwin,
    null$ = Sysdeps[1],
    current_dir_name$2 = Sysdeps[2],
    parent_dir_name = Sysdeps[3],
    dir_sep = Sysdeps[4],
    is_dir_sep$1 = Sysdeps[5],
    is_relative$1 = Sysdeps[6],
    is_implicit$1 = Sysdeps[7],
    check_suffix$1 = Sysdeps[8],
    chop_suffix_opt$1 = Sysdeps[9],
    temp_dir_name$1 = Sysdeps[10],
    quote$1 = Sysdeps[11],
    quote_command$1 = Sysdeps[12],
    basename$2 = Sysdeps[13],
    dirname$2 = Sysdeps[14];
   function concat(dirname, filename){
    var l =  /*<<filename.ml:297:2>>*/ caml_ml_string_length(dirname);
     /*<<filename.ml:298:2>>*/ if
     (0 !== l
      && !  /*<<filename.ml:298:14>>*/ is_dir_sep$1(dirname, l - 1 | 0)){
     var
      _h_ =
         /*<<filename.ml:300:17>>*/ Stdlib[28].call(null, dir_sep, filename);
      /*<<filename.ml:300:35>>*/ return Stdlib[28].call(null, dirname, _h_);
    }
     /*<<filename.ml:299:7>>*/ return Stdlib[28].call(null, dirname, filename) /*<<filename.ml:300:35>>*/ ;
   }
   function chop_suffix(name, suff){
     /*<<filename.ml:303:5>>*/ return check_suffix$1(name, suff)
            ?  /*<<filename.ml:304:7>>*/ Stdlib_String
               [16].call
              (null,
               name,
               0,
               caml_ml_string_length(name) - caml_ml_string_length(suff) | 0)
            :  /*<<filename.ml:305:7>>*/ Stdlib
               [1].call
              (null, "Filename.chop_suffix") /*<<filename.ml:305:41>>*/ ;
   }
   function extension_len(name){
    var
     i$3 =  /*<<filename.ml:318:2>>*/ caml_ml_string_length(name) - 1 | 0,
     i0 = i$3;
    for(;;){
      /*<<filename.ml:314:4>>*/ if
      (0 <= i0 && !  /*<<filename.ml:314:16>>*/ is_dir_sep$1(name, i0)){
       /*<<filename.ml:315:12>>*/ if(46 === caml_string_get(name, i0)) break;
      var i$2 =  /*<<filename.ml:316:9>>*/ i0 - 1 | 0;
      i0 = i$2;
      continue;
     }
      /*<<filename.ml:314:39>>*/ return 0;
    }
    var i$1 =  /*<<filename.ml:315:32>>*/ i0 - 1 | 0, i = i$1;
    for(;;){
      /*<<filename.ml:309:4>>*/ if
      (0 <= i && !  /*<<filename.ml:309:16>>*/ is_dir_sep$1(name, i)){
       /*<<filename.ml:310:12>>*/ if(46 !== caml_string_get(name, i))
        /*<<filename.ml:311:9>>*/ return caml_ml_string_length(name) - i0 | 0;
      var i$0 =  /*<<filename.ml:310:32>>*/ i - 1 | 0;
      i = i$0;
      continue;
     }
      /*<<filename.ml:309:39>>*/ return 0;
    }
    /*<<filename.ml:318:37>>*/ }
   function extension(name){
    var l =  /*<<filename.ml:321:10>>*/ extension_len(name);
     /*<<filename.ml:322:2>>*/ return 0 === l
            ? cst
            :  /*<<filename.ml:322:24>>*/ Stdlib_String
               [16].call
              (null, name, caml_ml_string_length(name) - l | 0, l) /*<<filename.ml:322:66>>*/ ;
   }
   function chop_extension(name){
    var l =  /*<<filename.ml:325:10>>*/ extension_len(name);
     /*<<filename.ml:326:2>>*/ return 0 === l
            ?  /*<<filename.ml:326:16>>*/ Stdlib
               [1].call
              (null, "Filename.chop_extension")
            :  /*<<filename.ml:327:7>>*/ Stdlib_String
               [16].call
              (null, name, 0, caml_ml_string_length(name) - l | 0) /*<<filename.ml:327:49>>*/ ;
   }
   function remove_extension(name){
    var l =  /*<<filename.ml:330:10>>*/ extension_len(name);
     /*<<filename.ml:331:2>>*/ return 0 === l
            ? name
            :  /*<<filename.ml:331:26>>*/ Stdlib_String
               [16].call
              (null, name, 0, caml_ml_string_length(name) - l | 0) /*<<filename.ml:331:68>>*/ ;
   }
   var
    prng_key =
       /*<<filename.ml:337:2>>*/ caml_call2
       (Stdlib_Domain[11][1], 0, Stdlib_Random[19][2]),
    _c_ =  /*<<?>>*/ [0, [2, 0, [4, 6, [0, 2, 6], 0, [2, 0, 0]]], "%s%06x%s"];
   function temp_file_name(temp_dir, prefix, suffix){
    var
     random_state =
        /*<<filename.ml:340:21>>*/ caml_call1(Stdlib_Domain[11][2], prng_key),
     rnd =
        /*<<filename.ml:341:12>>*/ caml_call1
        (Stdlib_Random[19][4], random_state)
       & 16777215;
     /*<<filename.ml:342:18>>*/ return  /*<<filename.ml:342:63>>*/ concat
            (temp_dir,
              /*<<filename.ml:342:18>>*/ caml_call3
              (Stdlib_Printf[4].call(null, _c_), prefix, rnd, suffix)) /*<<filename.ml:342:63>>*/ ;
   }
   var
    current_temp_dir_name =
       /*<<filename.ml:345:2>>*/ caml_call2
       (Stdlib_Domain[11][1],
        [0, function(_h_){ /*<<?>>*/ return _h_;}],
        function(param){
          /*<<filename.ml:345:58>>*/ return temp_dir_name$1;
         /*<<filename.ml:345:71>>*/ });
   function set_temp_dir_name(s){
     /*<<filename.ml:347:26>>*/ return caml_call2
            (Stdlib_Domain[11][3], current_temp_dir_name, s) /*<<filename.ml:347:64>>*/ ;
   }
   function get_temp_dir_name(param){
     /*<<filename.ml:348:27>>*/ return caml_call1
            (Stdlib_Domain[11][2], current_temp_dir_name) /*<<filename.ml:348:63>>*/ ;
   }
   var _d_ =  /*<<?>>*/ [0, 1, [0, 3, [0, 5, 0]]];
   function temp_file(opt, prefix, suffix){
    var
     temp_dir =
        /*<<filename.ml:350:14>>*/ opt
        ? opt[1]
        :  /*<<filename.ml:350:27>>*/ caml_call1
          (Stdlib_Domain[11][2], current_temp_dir_name),
     counter =  /*<<filename.ml:358:5>>*/ 0;
    for(;;){
     var
      name =
         /*<<filename.ml:352:15>>*/ temp_file_name(temp_dir, prefix, suffix);
      /*<<filename.ml:353:4>>*/ try{
       /*<<filename.ml:354:16>>*/  /*<<filename.ml:354:6>>*/ runtime.caml_sys_close
       ( /*<<filename.ml:354:16>>*/ runtime.caml_sys_open(name, _d_, 384));
      return name;
     }
     catch(e$0){
      var e =  /*<<?>>*/ caml_wrap_exception(e$0);
      if(e[1] !== Stdlib[11]) throw caml_maybe_attach_backtrace(e, 0);
       /*<<filename.ml:357:6>>*/ if(20 <= counter)
        /*<<filename.ml:357:28>>*/ throw caml_maybe_attach_backtrace(e, 0);
      var counter$0 =  /*<<filename.ml:357:41>>*/ counter + 1 | 0;
      counter = counter$0;
     }
    }
    /*<<filename.ml:358:15>>*/ }
   var _e_ =  /*<<?>>*/ [0, 7, 0];
   function open_temp_file(_g_, _f_, opt, prefix, suffix){
    var
     mode =  /*<<filename.ml:360:19>>*/ _g_ ? _g_[1] : _e_,
     perms = _f_ ? _f_[1] : 384,
     temp_dir =
       opt
        ? opt[1]
        :  /*<<filename.ml:361:17>>*/ caml_call1
          (Stdlib_Domain[11][2], current_temp_dir_name),
     counter =  /*<<filename.ml:370:5>>*/ 0;
    for(;;){
     var
      name =
         /*<<filename.ml:364:15>>*/ temp_file_name(temp_dir, prefix, suffix);
      /*<<filename.ml:365:4>>*/ try{
      var
       _h_ =
          /*<<filename.ml:367:7>>*/ [0,
          name,
          Stdlib[62].call(null, [0, 1, [0, 3, [0, 5, mode]]], perms, name)];
      return _h_;
     }
     catch(e$0){
      var e =  /*<<?>>*/ caml_wrap_exception(e$0);
      if(e[1] !== Stdlib[11]) throw caml_maybe_attach_backtrace(e, 0);
       /*<<filename.ml:369:6>>*/ if(20 <= counter)
        /*<<filename.ml:369:28>>*/ throw caml_maybe_attach_backtrace(e, 0);
      var counter$0 =  /*<<filename.ml:369:41>>*/ counter + 1 | 0;
      counter = counter$0;
     }
    }
    /*<<filename.ml:370:15>>*/ }
   function temp_dir(_f_, opt, prefix, suffix){
    var
     temp_dir =
        /*<<filename.ml:372:13>>*/ _f_
        ? _f_[1]
        :  /*<<filename.ml:372:26>>*/ caml_call1
          (Stdlib_Domain[11][2], current_temp_dir_name),
     perms =  /*<<filename.ml:372:13>>*/ opt ? opt[1] : 448,
     counter =  /*<<filename.ml:381:5>>*/ 0;
    for(;;){
     var
      name =
         /*<<filename.ml:375:15>>*/ temp_file_name(temp_dir, prefix, suffix);
      /*<<filename.ml:376:4>>*/ try{
       /*<<filename.ml:377:6>>*/ runtime.caml_sys_mkdir(name, perms);
      return name;
     }
     catch(e$0){
      var e =  /*<<?>>*/ caml_wrap_exception(e$0);
      if(e[1] !== Stdlib[11]) throw caml_maybe_attach_backtrace(e, 0);
       /*<<filename.ml:380:6>>*/ if(20 <= counter)
        /*<<filename.ml:380:28>>*/ throw caml_maybe_attach_backtrace(e, 0);
      var counter$0 =  /*<<filename.ml:380:41>>*/ counter + 1 | 0;
      counter = counter$0;
     }
    }
    /*<<filename.ml:381:15>>*/ }
    /*<<filename.ml:345:72>>*/ runtime.caml_register_global
    (64,
     [0,
      current_dir_name$2,
      parent_dir_name,
      dir_sep,
      concat,
      is_relative$1,
      is_implicit$1,
      check_suffix$1,
      chop_suffix,
      chop_suffix_opt$1,
      extension,
      remove_extension,
      chop_extension,
      basename$2,
      dirname$2,
      null$,
      temp_file,
      open_temp_file,
      temp_dir,
      get_temp_dir_name,
      set_temp_dir_name,
      quote$1,
      quote_command$1],
     "Stdlib__Filename");
   return;
   /*<<?>>*/ }
  (globalThis));

//# unitInfo: Provides: Stdlib__Complex
//# unitInfo: Requires: Stdlib, Stdlib__Float
//# shape: Stdlib__Complex:[N,N,N,F(1)*,F(1)*,F(2)*,F(2)*,F(2)*,F(1)*,F(2)*,F(1)*,F(1)*,F(1)*,F(1)*,F(2)*,F(1)*,F(1)*,F(2)*]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   function add(x, y){
     /*<<complex.ml:24:33>>*/ return [254, x[1] + y[1], x[2] + y[2]];
    /*<<complex.ml:24:54>>*/ }
   function sub(x, y){
     /*<<complex.ml:26:33>>*/ return [254, x[1] - y[1], x[2] - y[2]];
    /*<<complex.ml:26:54>>*/ }
   function neg(x){
     /*<<complex.ml:28:26>>*/ return [254, - x[1], - x[2]];
    /*<<complex.ml:28:42>>*/ }
   function conj(x){
     /*<<complex.ml:30:38>>*/ return [254, x[1], - x[2]];
    /*<<complex.ml:30:40>>*/ }
   function mul(x, y){
     /*<<complex.ml:32:49>>*/ return [254,
            x[1] * y[1] - x[2] * y[2],
            x[1] * y[2] + x[2] * y[1]];
    /*<<complex.ml:33:51>>*/ }
   function div(x, y){
     /*<<complex.ml:36:19>>*/ if
     ( /*<<complex.ml:36:23>>*/ Math.abs(y[2])
      <=  /*<<complex.ml:36:5>>*/ Math.abs(y[1])){
     var
      r =  /*<<complex.ml:37:12>>*/ y[2] / y[1],
      d =  /*<<complex.ml:38:12>>*/ y[1] + r * y[2];
      /*<<complex.ml:39:35>>*/ return [254,
             (x[1] + r * x[2]) / d,
             (x[2] - r * x[1]) / d];
    }
    var
     r$0 =  /*<<complex.ml:42:12>>*/ y[1] / y[2],
     d$0 =  /*<<complex.ml:43:12>>*/ y[2] + r$0 * y[1];
     /*<<complex.ml:44:35>>*/ return [254,
            (r$0 * x[1] + x[2]) / d$0,
            (r$0 * x[2] - x[1]) / d$0];
    /*<<complex.ml:45:37>>*/ }
   var one =  /*<<?>>*/ [254, 1., 0.];
   function inv(x){
     /*<<complex.ml:47:12>>*/ return div(one, x) /*<<complex.ml:47:21>>*/ ;
   }
   function norm2(x){
     /*<<complex.ml:49:42>>*/ return x[1] * x[1] + x[2] * x[2];
   }
   function norm(x){
     /*<<complex.ml:51:13>>*/ return runtime.caml_hypot_float(x[1], x[2]) /*<<complex.ml:51:34>>*/ ;
   }
   function arg(x){
     /*<<complex.ml:53:27>>*/ return  /*<<complex.ml:53:12>>*/ Math.atan2
            (x[2], x[1]) /*<<complex.ml:53:27>>*/ ;
   }
   function polar(n, a){
     /*<<complex.ml:55:33>>*/ return [254,
             /*<<complex.ml:55:23>>*/ Math.cos(a) * n,
             /*<<complex.ml:55:40>>*/ Math.sin(a) * n] /*<<complex.ml:55:33>>*/ ;
    /*<<complex.ml:55:52>>*/ }
   var _a_ =  /*<<?>>*/ [254, 0., 0.];
   function sqrt(x){
     /*<<complex.ml:58:2>>*/ if(x[1] === 0. && x[2] === 0.)
      /*<<complex.ml:58:35>>*/ return _a_;
    var
     r =  /*<<complex.ml:60:12>>*/ Math.abs(x[1]),
     i =  /*<<complex.ml:60:35>>*/ Math.abs(x[2]);
     /*<<complex.ml:61:4>>*/ if(i <= r)
     var
      q =  /*<<complex.ml:63:16>>*/ i / r,
      w =
         /*<<complex.ml:64:60>>*/  /*<<complex.ml:64:8>>*/ Math.sqrt(r)
        *
          /*<<complex.ml:64:19>>*/ Math.sqrt
          (0.5 * (1. +  /*<<complex.ml:64:39>>*/ Math.sqrt(1. + q * q)));
    else
     var
      q$0 =  /*<<complex.ml:66:16>>*/ r / i,
      w =
         /*<<complex.ml:67:58>>*/  /*<<complex.ml:67:8>>*/ Math.sqrt(i)
        *
          /*<<complex.ml:67:19>>*/ Math.sqrt
          (0.5 * (q$0 +  /*<<complex.ml:67:37>>*/ Math.sqrt(1. + q$0 * q$0)));
     /*<<complex.ml:69:4>>*/ if(0. <= x[1])
      /*<<complex.ml:70:41>>*/ return [254, w, 0.5 * x[2] / w];
    var w$0 =  /*<<complex.ml:71:9>>*/ 0. <= x[2] ? w : - w;
     /*<<complex.ml:71:29>>*/ return [254, 0.5 * i / w, w$0];
    /*<<complex.ml:72:5>>*/ }
   function exp(x){
    var e =  /*<<complex.ml:75:10>>*/ Math.exp(x[1]);
     /*<<complex.ml:75:42>>*/ return [254,
            e *  /*<<complex.ml:75:34>>*/ Math.cos(x[2]),
            e *  /*<<complex.ml:75:54>>*/ Math.sin(x[2])] /*<<complex.ml:75:42>>*/ ;
    /*<<complex.ml:75:64>>*/ }
   function log(x){
    var
     _a_ =
        /*<<complex.ml:77:23>>*/  /*<<complex.ml:77:38>>*/ Math.atan2
        (x[2], x[1]);
     /*<<complex.ml:77:23>>*/ return [254,
             /*<<complex.ml:77:19>>*/ Math.log
             ( /*<<complex.ml:77:23>>*/ norm(x)),
            _a_] /*<<complex.ml:77:31>>*/ ;
    /*<<complex.ml:77:55>>*/ }
   function pow(x, y){
     /*<<complex.ml:79:25>>*/ return  /*<<complex.ml:79:33>>*/ exp
            ( /*<<complex.ml:79:18>>*/ mul
              (y,  /*<<complex.ml:79:25>>*/ log(x))) /*<<complex.ml:79:33>>*/ ;
   }
    /*<<?>>*/ runtime.caml_register_global
    (15,
     [0,
      [254, 0., 0.],
      one,
      [254, 0., 1.],
      neg,
      conj,
      add,
      sub,
      mul,
      inv,
      div,
      sqrt,
      norm2,
      norm,
      arg,
      polar,
      exp,
      log,
      pow],
     "Stdlib__Complex");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__ArrayLabels
//# unitInfo: Requires: Stdlib__Array
//# shape: Stdlib__ArrayLabels:[F(2),F(3),F(3),F(2)*,F(1)*,F(3),F(1)*,F(4),F(5),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(1)*->F(1)*,F(1)*->F(1)*,F(1),[]]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    Stdlib_Array = runtime.caml_get_global_data().Stdlib__Array,
    init = Stdlib_Array[1],
    make_matrix = Stdlib_Array[2],
    init_matrix = Stdlib_Array[3],
    append = Stdlib_Array[4],
    concat = Stdlib_Array[5],
    sub = Stdlib_Array[6],
    copy = Stdlib_Array[7],
    fill = Stdlib_Array[8],
    blit = Stdlib_Array[9],
    to_list = Stdlib_Array[10],
    of_list = Stdlib_Array[11],
    equal = Stdlib_Array[12],
    compare = Stdlib_Array[13],
    iter = Stdlib_Array[14],
    iteri = Stdlib_Array[15],
    map = Stdlib_Array[16],
    map_inplace = Stdlib_Array[17],
    mapi = Stdlib_Array[18],
    mapi_inplace = Stdlib_Array[19],
    fold_left = Stdlib_Array[20],
    fold_left_map = Stdlib_Array[21],
    fold_right = Stdlib_Array[22],
    iter2 = Stdlib_Array[23],
    map2 = Stdlib_Array[24],
    for_all = Stdlib_Array[25],
    exists = Stdlib_Array[26],
    for_all2 = Stdlib_Array[27],
    exists2 = Stdlib_Array[28],
    mem = Stdlib_Array[29],
    memq = Stdlib_Array[30],
    find_opt = Stdlib_Array[31],
    find_index = Stdlib_Array[32],
    find_map = Stdlib_Array[33],
    find_mapi = Stdlib_Array[34],
    split = Stdlib_Array[35],
    combine = Stdlib_Array[36],
    sort = Stdlib_Array[37],
    stable_sort = Stdlib_Array[38],
    fast_sort = Stdlib_Array[39],
    shuffle = Stdlib_Array[40],
    to_seq = Stdlib_Array[41],
    to_seqi = Stdlib_Array[42],
    of_seq = Stdlib_Array[43],
    Floatarray = Stdlib_Array[44];
   runtime.caml_register_global
    (1,
     [0,
      init,
      make_matrix,
      init_matrix,
      append,
      concat,
      sub,
      copy,
      fill,
      blit,
      to_list,
      of_list,
      equal,
      compare,
      iter,
      iteri,
      map,
      map_inplace,
      mapi,
      mapi_inplace,
      fold_left,
      fold_left_map,
      fold_right,
      iter2,
      map2,
      for_all,
      exists,
      for_all2,
      exists2,
      mem,
      memq,
      find_opt,
      find_index,
      find_map,
      find_mapi,
      split,
      combine,
      sort,
      stable_sort,
      fast_sort,
      shuffle,
      to_seq,
      to_seqi,
      of_seq,
      Floatarray],
     "Stdlib__ArrayLabels");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__ListLabels
//# unitInfo: Requires: Stdlib__List
//# shape: Stdlib__ListLabels:[F(1),F(2),F(2),F(1)*,F(2)*,F(1)*,F(1),F(1),F(2),F(2),F(1),F(2),F(2),F(2),F(1),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(4),F(4),F(2),F(2),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*->F(1),F(2),F(1)*->F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(3),F(1)*->F(1)*,F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    Stdlib_List = runtime.caml_get_global_data().Stdlib__List,
    length = Stdlib_List[1],
    compare_lengths = Stdlib_List[2],
    compare_length_with = Stdlib_List[3],
    is_empty = Stdlib_List[4],
    cons = Stdlib_List[5],
    singleton = Stdlib_List[6],
    hd = Stdlib_List[7],
    tl = Stdlib_List[8],
    nth = Stdlib_List[9],
    nth_opt = Stdlib_List[10],
    rev = Stdlib_List[11],
    init = Stdlib_List[12],
    append = Stdlib_List[13],
    rev_append = Stdlib_List[14],
    concat = Stdlib_List[15],
    flatten = Stdlib_List[16],
    equal = Stdlib_List[17],
    compare = Stdlib_List[18],
    iter = Stdlib_List[19],
    iteri = Stdlib_List[20],
    map = Stdlib_List[21],
    mapi = Stdlib_List[22],
    rev_map = Stdlib_List[23],
    filter_map = Stdlib_List[24],
    concat_map = Stdlib_List[25],
    fold_left_map = Stdlib_List[26],
    fold_left = Stdlib_List[27],
    fold_right = Stdlib_List[28],
    iter2 = Stdlib_List[29],
    map2 = Stdlib_List[30],
    rev_map2 = Stdlib_List[31],
    fold_left2 = Stdlib_List[32],
    fold_right2 = Stdlib_List[33],
    for_all = Stdlib_List[34],
    exists = Stdlib_List[35],
    for_all2 = Stdlib_List[36],
    exists2 = Stdlib_List[37],
    mem = Stdlib_List[38],
    memq = Stdlib_List[39],
    find = Stdlib_List[40],
    find_opt = Stdlib_List[41],
    find_index = Stdlib_List[42],
    find_map = Stdlib_List[43],
    find_mapi = Stdlib_List[44],
    filter = Stdlib_List[45],
    find_all = Stdlib_List[46],
    filteri = Stdlib_List[47],
    take = Stdlib_List[48],
    drop = Stdlib_List[49],
    take_while = Stdlib_List[50],
    drop_while = Stdlib_List[51],
    partition = Stdlib_List[52],
    partition_map = Stdlib_List[53],
    assoc = Stdlib_List[54],
    assoc_opt = Stdlib_List[55],
    assq = Stdlib_List[56],
    assq_opt = Stdlib_List[57],
    mem_assoc = Stdlib_List[58],
    mem_assq = Stdlib_List[59],
    remove_assoc = Stdlib_List[60],
    remove_assq = Stdlib_List[61],
    split = Stdlib_List[62],
    combine = Stdlib_List[63],
    sort = Stdlib_List[64],
    stable_sort = Stdlib_List[65],
    fast_sort = Stdlib_List[66],
    sort_uniq = Stdlib_List[67],
    merge = Stdlib_List[68],
    to_seq = Stdlib_List[69],
    of_seq = Stdlib_List[70];
   runtime.caml_register_global
    (1,
     [0,
      length,
      compare_lengths,
      compare_length_with,
      is_empty,
      cons,
      singleton,
      hd,
      tl,
      nth,
      nth_opt,
      rev,
      init,
      append,
      rev_append,
      concat,
      flatten,
      equal,
      compare,
      iter,
      iteri,
      map,
      mapi,
      rev_map,
      filter_map,
      concat_map,
      fold_left_map,
      fold_left,
      fold_right,
      iter2,
      map2,
      rev_map2,
      fold_left2,
      fold_right2,
      for_all,
      exists,
      for_all2,
      exists2,
      mem,
      memq,
      find,
      find_opt,
      find_index,
      find_map,
      find_mapi,
      filter,
      find_all,
      filteri,
      take,
      drop,
      take_while,
      drop_while,
      partition,
      partition_map,
      assoc,
      assoc_opt,
      assq,
      assq_opt,
      mem_assoc,
      mem_assq,
      remove_assoc,
      remove_assq,
      split,
      combine,
      sort,
      stable_sort,
      fast_sort,
      sort_uniq,
      merge,
      to_seq,
      of_seq],
     "Stdlib__ListLabels");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__BytesLabels
//# unitInfo: Requires: Stdlib__Bytes
//# shape: Stdlib__BytesLabels:[F(2),F(2),N,F(1),F(1),F(1),F(3),F(3),F(3),F(4),F(5),F(5),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(1),F(1),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(2),F(3),F(3),F(1),F(1),F(1),F(1),F(2)*,F(2)*,F(2),F(2),F(1),F(1)*,F(2),F(1)*->F(1),F(1)*->F(1),F(1),F(2),F(3),F(1),F(2),F(3),F(1),F(2),F(3),F(1),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(3),F(1)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    Stdlib_Bytes = runtime.caml_get_global_data().Stdlib__Bytes,
    make = Stdlib_Bytes[1],
    init = Stdlib_Bytes[2],
    empty = Stdlib_Bytes[3],
    copy = Stdlib_Bytes[4],
    of_string = Stdlib_Bytes[5],
    to_string = Stdlib_Bytes[6],
    sub = Stdlib_Bytes[7],
    sub_string = Stdlib_Bytes[8],
    extend = Stdlib_Bytes[9],
    fill = Stdlib_Bytes[10],
    blit = Stdlib_Bytes[11],
    blit_string = Stdlib_Bytes[12],
    concat = Stdlib_Bytes[13],
    cat = Stdlib_Bytes[14],
    iter = Stdlib_Bytes[15],
    iteri = Stdlib_Bytes[16],
    map = Stdlib_Bytes[17],
    mapi = Stdlib_Bytes[18],
    fold_left = Stdlib_Bytes[19],
    fold_right = Stdlib_Bytes[20],
    for_all = Stdlib_Bytes[21],
    exists = Stdlib_Bytes[22],
    trim = Stdlib_Bytes[23],
    escaped = Stdlib_Bytes[24],
    index = Stdlib_Bytes[25],
    index_opt = Stdlib_Bytes[26],
    rindex = Stdlib_Bytes[27],
    rindex_opt = Stdlib_Bytes[28],
    index_from = Stdlib_Bytes[29],
    index_from_opt = Stdlib_Bytes[30],
    rindex_from = Stdlib_Bytes[31],
    rindex_from_opt = Stdlib_Bytes[32],
    contains = Stdlib_Bytes[33],
    contains_from = Stdlib_Bytes[34],
    rcontains_from = Stdlib_Bytes[35],
    uppercase_ascii = Stdlib_Bytes[36],
    lowercase_ascii = Stdlib_Bytes[37],
    capitalize_ascii = Stdlib_Bytes[38],
    uncapitalize_ascii = Stdlib_Bytes[39],
    compare = Stdlib_Bytes[40],
    equal = Stdlib_Bytes[41],
    starts_with = Stdlib_Bytes[42],
    ends_with = Stdlib_Bytes[43],
    unsafe_to_string = Stdlib_Bytes[44],
    unsafe_of_string = Stdlib_Bytes[45],
    split_on_char = Stdlib_Bytes[46],
    to_seq = Stdlib_Bytes[47],
    to_seqi = Stdlib_Bytes[48],
    of_seq = Stdlib_Bytes[49],
    get_utf_8_uchar = Stdlib_Bytes[50],
    set_utf_8_uchar = Stdlib_Bytes[51],
    is_valid_utf_8 = Stdlib_Bytes[52],
    get_utf_16be_uchar = Stdlib_Bytes[53],
    set_utf_16be_uchar = Stdlib_Bytes[54],
    is_valid_utf_16be = Stdlib_Bytes[55],
    get_utf_16le_uchar = Stdlib_Bytes[56],
    set_utf_16le_uchar = Stdlib_Bytes[57],
    is_valid_utf_16le = Stdlib_Bytes[58],
    get_uint8 = Stdlib_Bytes[59],
    get_int8 = Stdlib_Bytes[60],
    get_uint16_ne = Stdlib_Bytes[61],
    get_uint16_be = Stdlib_Bytes[62],
    get_uint16_le = Stdlib_Bytes[63],
    get_int16_ne = Stdlib_Bytes[64],
    get_int16_be = Stdlib_Bytes[65],
    get_int16_le = Stdlib_Bytes[66],
    get_int32_ne = Stdlib_Bytes[67],
    get_int32_be = Stdlib_Bytes[68],
    get_int32_le = Stdlib_Bytes[69],
    get_int64_ne = Stdlib_Bytes[70],
    get_int64_be = Stdlib_Bytes[71],
    get_int64_le = Stdlib_Bytes[72],
    set_uint8 = Stdlib_Bytes[73],
    set_int8 = Stdlib_Bytes[74],
    set_uint16_ne = Stdlib_Bytes[75],
    set_uint16_be = Stdlib_Bytes[76],
    set_uint16_le = Stdlib_Bytes[77],
    set_int16_ne = Stdlib_Bytes[78],
    set_int16_be = Stdlib_Bytes[79],
    set_int16_le = Stdlib_Bytes[80],
    set_int32_ne = Stdlib_Bytes[81],
    set_int32_be = Stdlib_Bytes[82],
    set_int32_le = Stdlib_Bytes[83],
    set_int64_ne = Stdlib_Bytes[84],
    set_int64_be = Stdlib_Bytes[85],
    set_int64_le = Stdlib_Bytes[86],
    unsafe_escape = Stdlib_Bytes[87];
   runtime.caml_register_global
    (1,
     [0,
      make,
      init,
      empty,
      copy,
      of_string,
      to_string,
      sub,
      sub_string,
      extend,
      fill,
      blit,
      blit_string,
      concat,
      cat,
      iter,
      iteri,
      map,
      mapi,
      fold_left,
      fold_right,
      for_all,
      exists,
      trim,
      escaped,
      index,
      index_opt,
      rindex,
      rindex_opt,
      index_from,
      index_from_opt,
      rindex_from,
      rindex_from_opt,
      contains,
      contains_from,
      rcontains_from,
      uppercase_ascii,
      lowercase_ascii,
      capitalize_ascii,
      uncapitalize_ascii,
      compare,
      equal,
      starts_with,
      ends_with,
      unsafe_to_string,
      unsafe_of_string,
      split_on_char,
      to_seq,
      to_seqi,
      of_seq,
      get_utf_8_uchar,
      set_utf_8_uchar,
      is_valid_utf_8,
      get_utf_16be_uchar,
      set_utf_16be_uchar,
      is_valid_utf_16be,
      get_utf_16le_uchar,
      set_utf_16le_uchar,
      is_valid_utf_16le,
      get_uint8,
      get_int8,
      get_uint16_ne,
      get_uint16_be,
      get_uint16_le,
      get_int16_ne,
      get_int16_be,
      get_int16_le,
      get_int32_ne,
      get_int32_be,
      get_int32_le,
      get_int64_ne,
      get_int64_be,
      get_int64_le,
      set_uint8,
      set_int8,
      set_uint16_ne,
      set_uint16_be,
      set_uint16_le,
      set_int16_ne,
      set_int16_be,
      set_int16_le,
      set_int32_ne,
      set_int32_be,
      set_int32_le,
      set_int64_ne,
      set_int64_be,
      set_int64_le,
      unsafe_escape],
     "Stdlib__BytesLabels");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__StringLabels
//# unitInfo: Requires: Stdlib__String
//# shape: Stdlib__StringLabels:[F(2),F(2),N,F(1),F(1),F(5),F(2),F(2)*,F(2)*,F(2)*,F(2),F(2),F(3),F(3),F(2),F(3),F(2),F(2),F(2),F(3),F(3),F(2),F(2),F(1),F(1),F(1),F(1),F(1),F(1),F(2),F(2),F(3),F(3),F(3),F(3),F(2),F(2),F(2),F(2),F(1)*,F(1)*,F(1),F(2),F(1),F(2),F(1),F(2),F(1),F(3),F(3),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(2),F(1),F(2),F(2),F(2),F(2),F(2),F(2)]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    Stdlib_String = runtime.caml_get_global_data().Stdlib__String,
    make = Stdlib_String[1],
    init = Stdlib_String[2],
    empty = Stdlib_String[3],
    of_bytes = Stdlib_String[4],
    to_bytes = Stdlib_String[5],
    blit = Stdlib_String[6],
    concat = Stdlib_String[7],
    cat = Stdlib_String[8],
    equal = Stdlib_String[9],
    compare = Stdlib_String[10],
    starts_with = Stdlib_String[11],
    ends_with = Stdlib_String[12],
    contains_from = Stdlib_String[13],
    rcontains_from = Stdlib_String[14],
    contains = Stdlib_String[15],
    sub = Stdlib_String[16],
    split_on_char = Stdlib_String[17],
    map = Stdlib_String[18],
    mapi = Stdlib_String[19],
    fold_left = Stdlib_String[20],
    fold_right = Stdlib_String[21],
    for_all = Stdlib_String[22],
    exists = Stdlib_String[23],
    trim = Stdlib_String[24],
    escaped = Stdlib_String[25],
    uppercase_ascii = Stdlib_String[26],
    lowercase_ascii = Stdlib_String[27],
    capitalize_ascii = Stdlib_String[28],
    uncapitalize_ascii = Stdlib_String[29],
    iter = Stdlib_String[30],
    iteri = Stdlib_String[31],
    index_from = Stdlib_String[32],
    index_from_opt = Stdlib_String[33],
    rindex_from = Stdlib_String[34],
    rindex_from_opt = Stdlib_String[35],
    index = Stdlib_String[36],
    index_opt = Stdlib_String[37],
    rindex = Stdlib_String[38],
    rindex_opt = Stdlib_String[39],
    to_seq = Stdlib_String[40],
    to_seqi = Stdlib_String[41],
    of_seq = Stdlib_String[42],
    get_utf_8_uchar = Stdlib_String[43],
    is_valid_utf_8 = Stdlib_String[44],
    get_utf_16be_uchar = Stdlib_String[45],
    is_valid_utf_16be = Stdlib_String[46],
    get_utf_16le_uchar = Stdlib_String[47],
    is_valid_utf_16le = Stdlib_String[48],
    edit_distance = Stdlib_String[49],
    spellcheck = Stdlib_String[50],
    get_uint8 = Stdlib_String[51],
    get_int8 = Stdlib_String[52],
    get_uint16_ne = Stdlib_String[53],
    get_uint16_be = Stdlib_String[54],
    get_uint16_le = Stdlib_String[55],
    get_int16_ne = Stdlib_String[56],
    get_int16_be = Stdlib_String[57],
    get_int16_le = Stdlib_String[58],
    get_int32_ne = Stdlib_String[59],
    hash = Stdlib_String[60],
    seeded_hash = Stdlib_String[61],
    get_int32_be = Stdlib_String[62],
    get_int32_le = Stdlib_String[63],
    get_int64_ne = Stdlib_String[64],
    get_int64_be = Stdlib_String[65],
    get_int64_le = Stdlib_String[66];
   runtime.caml_register_global
    (1,
     [0,
      make,
      init,
      empty,
      of_bytes,
      to_bytes,
      blit,
      concat,
      cat,
      equal,
      compare,
      starts_with,
      ends_with,
      contains_from,
      rcontains_from,
      contains,
      sub,
      split_on_char,
      map,
      mapi,
      fold_left,
      fold_right,
      for_all,
      exists,
      trim,
      escaped,
      uppercase_ascii,
      lowercase_ascii,
      capitalize_ascii,
      uncapitalize_ascii,
      iter,
      iteri,
      index_from,
      index_from_opt,
      rindex_from,
      rindex_from_opt,
      index,
      index_opt,
      rindex,
      rindex_opt,
      to_seq,
      to_seqi,
      of_seq,
      get_utf_8_uchar,
      is_valid_utf_8,
      get_utf_16be_uchar,
      is_valid_utf_16be,
      get_utf_16le_uchar,
      is_valid_utf_16le,
      edit_distance,
      spellcheck,
      get_uint8,
      get_int8,
      get_uint16_ne,
      get_uint16_be,
      get_uint16_le,
      get_int16_ne,
      get_int16_be,
      get_int16_le,
      get_int32_ne,
      hash,
      seeded_hash,
      get_int32_be,
      get_int32_le,
      get_int64_ne,
      get_int64_be,
      get_int64_le],
     "Stdlib__StringLabels");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__MoreLabels
//# unitInfo: Requires: Stdlib__Hashtbl, Stdlib__Map, Stdlib__Set
//# shape: Stdlib__MoreLabels:[[F(2),F(1),F(1),F(1),F(3),F(2),F(2),F(2),F(2),F(2),F(3),F(2),F(2),F(3),F(1)*,F(1),F(1)*,F(2),F(1),F(1)*->F(1),F(1)*->F(1),F(1)*->F(1),F(2),F(2),F(1),F(1)*,F(1)*,F(1)*,F(2)*,F(3)*,F(4)*],[F(1)*],[F(1)*]]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    global_data = runtime.caml_get_global_data(),
    Stdlib_Set = global_data.Stdlib__Set,
    Stdlib_Map = global_data.Stdlib__Map,
    Stdlib_Hashtbl = global_data.Stdlib__Hashtbl;
   runtime.caml_register_global
    (3, [0, Stdlib_Hashtbl, Stdlib_Map, Stdlib_Set], "Stdlib__MoreLabels");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__StdLabels
//# shape: Stdlib__StdLabels:[]
(function
  (globalThis){
   "use strict";
   var runtime = globalThis.jsoo_runtime;
   runtime.caml_register_global(0, [0], "Stdlib__StdLabels");
   return;
  }
  (globalThis));

//# unitInfo: Provides: Stdlib__Effect
//# unitInfo: Requires: Stdlib, Stdlib__Callback, Stdlib__Printexc, Stdlib__Printf
//# unitInfo: Effects_without_cps: true
//# shape: Stdlib__Effect:[N,N,[F(2),F(2),F(3),F(3),F(3)],N]
(function
  (globalThis){
   "use strict";
   var
    runtime = globalThis.jsoo_runtime,
    caml_alloc_stack = runtime.caml_alloc_stack,
    caml_continuation_use_noexc = runtime.caml_continuation_use_noexc,
    caml_fresh_oo_id = runtime.caml_fresh_oo_id,
    caml_maybe_attach_backtrace = runtime.caml_maybe_attach_backtrace,
    caml_restore_raw_backtrace = runtime.caml_restore_raw_backtrace,
    caml_wrap_exception = runtime.caml_wrap_exception,
    jsoo_effect_not_supported = runtime.jsoo_effect_not_supported;
   function caml_call1(f, a0){
    return (f.l >= 0 ? f.l : f.l = f.length) === 1
            ? f(a0)
            : runtime.caml_call_gen(f, [a0]);
   }
   var
    global_data = runtime.caml_get_global_data(),
    Stdlib = global_data.Stdlib,
    Stdlib_Printexc = global_data.Stdlib__Printexc,
    Stdlib_Printf = global_data.Stdlib__Printf,
    Stdlib_Callback = global_data.Stdlib__Callback,
    Unhandled = [248, "Stdlib.Effect.Unhandled", caml_fresh_oo_id(0)],
    Continuation_already_resumed =
      [248, "Stdlib.Effect.Continuation_already_resumed", caml_fresh_oo_id(0)],
    _a_ =
      [0,
       [11, "Stdlib.Effect.Unhandled(", [2, 0, [12, 41, 0]]],
       "Stdlib.Effect.Unhandled(%s)"];
   function printer(param){
     /*<<effect.ml:22:16>>*/ if(param[1] !== Unhandled)
      /*<<effect.ml:28:11>>*/ return 0;
    var
     x =  /*<<effect.ml:22:16>>*/ param[2],
     _h_ =  /*<<effect.ml:25:12>>*/ Stdlib_Printexc[26].call(null, x),
     msg =
        /*<<effect.ml:24:18>>*/ caml_call1
        (Stdlib_Printf[4].call(null, _a_), _h_);
     /*<<effect.ml:27:8>>*/ return [0, msg];
    /*<<effect.ml:28:15>>*/ }
    /*<<effect.ml:30:2>>*/ Stdlib_Printexc[9].call(null, printer);
   var
    Should_not_see_this =
       /*<<effect.ml:30:35>>*/ [248,
       "Stdlib.Effect.Should_not_see_this__",
       caml_fresh_oo_id(0)];
    /*<<effect.ml:34:8>>*/ Stdlib_Callback[2].call
    (null, "Effect.Unhandled", [0, Unhandled, Should_not_see_this]);
    /*<<effect.ml:36:8>>*/ Stdlib_Callback[2].call
    (null,
     "Effect.Continuation_already_resumed",
     Continuation_already_resumed);
   function continue$(k, v){
    var
     _f_ =  /*<<effect.ml:60:11>>*/ k[2],
     _h_ = caml_continuation_use_noexc(k);
    function _g_(x){
      /*<<effect.ml:60:41>>*/ return x;
     /*<<effect.ml:60:42>>*/ }
     /*<<effect.ml:60:30>>*/ return jsoo_effect_not_supported() /*<<effect.ml:60:65>>*/ ;
   }
   function discontinue(k, e){
    var
     _d_ =  /*<<effect.ml:63:11>>*/ k[2],
     _f_ = caml_continuation_use_noexc(k);
    function _e_(e){
      /*<<effect.ml:63:41>>*/ throw caml_maybe_attach_backtrace(e, 1);
     /*<<effect.ml:63:48>>*/ }
     /*<<effect.ml:63:30>>*/ return jsoo_effect_not_supported() /*<<effect.ml:63:71>>*/ ;
   }
   function discontinue_with_backtrace(k, e, bt){
    var
     _b_ =  /*<<effect.ml:66:11>>*/ k[2],
     _d_ = caml_continuation_use_noexc(k);
    function _c_(e){
      /*<<effect.ml:66:41>>*/ caml_restore_raw_backtrace(e, bt);
     throw caml_maybe_attach_backtrace(e, 0);
     /*<<effect.ml:66:75>>*/ }
     /*<<effect.ml:66:30>>*/ return jsoo_effect_not_supported() /*<<effect.ml:67:27>>*/ ;
   }
   function match_with(comp, arg, handler){
    function effc(eff, k, last_fiber){
     var match =  /*<<effect.ml:79:12>>*/ caml_call1(handler[3], eff);
      /*<<effect.ml:79:28>>*/ if(! match)
       /*<<effect.ml:81:16>>*/ return jsoo_effect_not_supported() /*<<effect.ml:81:42>>*/ ;
     var f =  /*<<effect.ml:79:28>>*/ match[1];
      /*<<effect.ml:80:18>>*/ return caml_call1(f, k) /*<<effect.ml:81:42>>*/ ;
    }
    var
     s =
        /*<<effect.ml:83:12>>*/ caml_alloc_stack(handler[1], handler[2], effc),
     _b_ =  /*<<effect.ml:84:4>>*/ 0;
    return jsoo_effect_not_supported() /*<<effect.ml:84:23>>*/ ;
   }
   function try_with(comp, arg, handler){
    function effc(eff, k, last_fiber){
     var match =  /*<<effect.ml:91:12>>*/ caml_call1(handler[1], eff);
      /*<<effect.ml:91:28>>*/ if(! match)
       /*<<effect.ml:93:16>>*/ return jsoo_effect_not_supported() /*<<effect.ml:93:42>>*/ ;
     var f =  /*<<effect.ml:91:28>>*/ match[1];
      /*<<effect.ml:92:18>>*/ return caml_call1(f, k) /*<<effect.ml:93:42>>*/ ;
    }
    var
     s =
        /*<<effect.ml:95:12>>*/ caml_alloc_stack
        (function(x){
           /*<<effect.ml:95:34>>*/ return x;
          /*<<effect.ml:95:35>>*/ },
         function(e){
           /*<<effect.ml:95:47>>*/ throw caml_maybe_attach_backtrace(e, 1);
          /*<<effect.ml:95:54>>*/ },
         effc),
     _b_ =  /*<<effect.ml:96:4>>*/ 0;
    return jsoo_effect_not_supported() /*<<effect.ml:96:23>>*/ ;
   }
   function fiber(f){
    var
     Initial_setup =
        /*<<effect.ml:116:4>>*/ [248, "Initial_setup__", caml_fresh_oo_id(0)],
     E = [248, "E", caml_fresh_oo_id(0)];
    function f$0(param){
      /*<<effect.ml:118:18>>*/ return  /*<<effect.ml:118:45>>*/ caml_call1
             (f,  /*<<effect.ml:118:18>>*/ jsoo_effect_not_supported()) /*<<effect.ml:118:45>>*/ ;
    }
    function error(param){
      /*<<effect.ml:119:18>>*/ return Stdlib[2].call(null, "impossible") /*<<effect.ml:119:39>>*/ ;
    }
    function effc(eff, k, last_fiber){
      /*<<effect.ml:121:6>>*/ if(eff === Initial_setup)
       /*<<effect.ml:122:29>>*/ throw [0, E, k];
      /*<<effect.ml:123:13>>*/ return error(0) /*<<effect.ml:123:21>>*/ ;
    }
    var s =  /*<<effect.ml:125:12>>*/ caml_alloc_stack(error, error, effc);
     /*<<effect.ml:126:4>>*/ try{
      /*<<effect.ml:126:10>>*/ jsoo_effect_not_supported();
     var _a_ =  /*<<effect.ml:126:26>>*/ 0, _b_ = 0;
    }
    catch(exn$0){
     var exn =  /*<<?>>*/ caml_wrap_exception(exn$0);
     if(exn[1] !== E) throw caml_maybe_attach_backtrace(exn, 0);
     var k = exn[2];
      /*<<effect.ml:127:23>>*/ return k;
    }
     /*<<effect.ml:128:11>>*/ return error(0) /*<<effect.ml:128:19>>*/ ;
   }
   function continue_gen(k, resume_fun, v, handler){
    function effc(eff, k, last_fiber){
     var match =  /*<<effect.ml:147:12>>*/ caml_call1(handler[3], eff);
      /*<<effect.ml:147:28>>*/ if(! match)
       /*<<effect.ml:149:16>>*/ return jsoo_effect_not_supported() /*<<effect.ml:149:42>>*/ ;
     var f =  /*<<effect.ml:147:28>>*/ match[1];
      /*<<effect.ml:148:18>>*/ return caml_call1(f, k) /*<<effect.ml:149:42>>*/ ;
    }
    var
     last_fiber =  /*<<effect.ml:151:4>>*/ k[2],
     stack =
        /*<<effect.ml:152:16>>*/ runtime.caml_continuation_use_and_update_handler_noexc
        (k, handler[1], handler[2], effc);
     /*<<effect.ml:153:4>>*/ return jsoo_effect_not_supported() /*<<effect.ml:153:40>>*/ ;
   }
   function continue_with(k, v, handler){
     /*<<effect.ml:156:4>>*/ return continue_gen
            (k,
             function(x){
               /*<<effect.ml:156:29>>*/ return x;
              /*<<effect.ml:156:30>>*/ },
             v,
             handler) /*<<effect.ml:156:41>>*/ ;
   }
   function discontinue_with(k, v, handler){
     /*<<effect.ml:159:4>>*/ return continue_gen
            (k,
             function(e){
               /*<<effect.ml:159:29>>*/ throw caml_maybe_attach_backtrace
                     (e, 1);
              /*<<effect.ml:159:36>>*/ },
             v,
             handler) /*<<effect.ml:159:47>>*/ ;
   }
   function discontinue_with_backtrace$0(k, v, bt, handler){
     /*<<effect.ml:162:4>>*/ return continue_gen
            (k,
             function(e){
               /*<<effect.ml:162:29>>*/ caml_restore_raw_backtrace(e, bt);
              throw caml_maybe_attach_backtrace(e, 0);
              /*<<effect.ml:162:63>>*/ },
             v,
             handler) /*<<effect.ml:162:74>>*/ ;
   }
    /*<<effect.ml:37:38>>*/ runtime.caml_register_global
    (13,
     [0,
      Unhandled,
      Continuation_already_resumed,
      [0,
       continue$,
       discontinue,
       discontinue_with_backtrace,
       match_with,
       try_with],
      [0,
       fiber,
       continue_with,
       discontinue_with,
       discontinue_with_backtrace$0]],
     "Stdlib__Effect");
   return;
   /*<<?>>*/ }
  (globalThis));
