test262-automation e9a5a7f918 [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time) (#1620)
* [javascriptcore-test262-automation] changes from git@github.com:WebKit/webkit.git at sha 949e26452cfa153a7f4afe593da97e2fe9e1b706 on Tue Jul 03 2018 14:35:15 GMT-0400 (Eastern Daylight Time)
2018-07-03 15:59:58 -04:00

29778 lines
862 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// DO NOT EDIT. Generated from WebAssembly spec interpreter
let WebAssemblyText = (function() {
  let _registry = {__proto__: null};
function normalize(file) {
return file.split('/').reverse()[0].split('.')[0];
}
  function require(file) {
    let name = normalize(file);
if (!(name in _registry)) {
throw new Error('missing module: ' + name)
    } else if (typeof _registry[name] === 'function') {
      let f = _registry[name];
      _registry[name] = function() { throw new Error('cyclic module: ' + name) };
      _registry[name] = f();
    }
    return _registry[name];
  }
_registry['arrange'] = function() {
    let exports = {};
//////// start of arrange.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var F32 = require("./f32");
var F64 = require("./f64");
var I32 = require("./i32");
var I64 = require("./i64");
var Lib = require("./lib");
var List = require("bs-platform/lib/js/list");
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var Types = require("./types");
var Buffer = require("bs-platform/lib/js/buffer");
var Decode = require("./decode");
var Encode = require("./encode");
var Printf = require("bs-platform/lib/js/printf");
var Source = require("./source");
var $$String = require("bs-platform/lib/js/string");
var Values = require("./values");
var Caml_int32 = require("bs-platform/lib/js/caml_int32");
var Pervasives = require("bs-platform/lib/js/pervasives");
var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions");
function add_hex_char(buf, c) {
return Curry._1(Printf.bprintf(buf, /* Format */[
/* Char_literal */Block.__(12, [
/* "\\" */92,
/* Int */Block.__(4, [
/* Int_x */6,
/* Lit_padding */Block.__(0, [
/* Zeros */2,
2
]),
/* No_precision */0,
/* End_of_format */0
])
]),
"\\%02x"
]), c);
}
function add_char(buf, c) {
if (c < /* " " */32 || c >= /* "\127" */127) {
return add_hex_char(buf, c);
}
else {
if (c === /* "\"" */34 || c === /* "\\" */92) {
Buffer.add_char(buf, /* "\\" */92);
}
return Buffer.add_char(buf, c);
}
}
function string_with(add_char, s) {
var buf = Buffer.create(Caml_int32.imul(3, s.length) + 2 | 0);
Buffer.add_char(buf, /* "\"" */34);
$$String.iter(Curry._1(add_char, buf), s);
Buffer.add_char(buf, /* "\"" */34);
return Buffer.contents(buf);
}
function list_of_opt(param) {
if (param) {
return /* :: */[
param[0],
/* [] */0
];
}
else {
return /* [] */0;
}
}
function break_bytes(s) {
var ss = Curry._2(Lib.$$String[/* breakup */0], s, 16);
var f = function (param) {
return /* Atom */Block.__(0, [string_with(add_hex_char, param)]);
};
return List.map(f, ss);
}
function decls(kind, ts) {
var head = kind;
var f = function (param) {
return /* Atom */Block.__(0, [Types.string_of_value_type(param)]);
};
var xs = ts;
if (xs) {
return /* :: */[
/* Node */Block.__(1, [
head,
List.map(f, xs)
]),
/* [] */0
];
}
else {
return /* [] */0;
}
}
function func_type(param) {
return /* Node */Block.__(1, [
"func",
Pervasives.$at(decls("param", param[0]), decls("result", param[1]))
]);
}
function limits(nat, param) {
var xs = list_of_opt(param[/* max */1]);
return $$String.concat(" ", /* :: */[
Curry._1(nat, param[/* min */0]),
List.map(nat, xs)
]);
}
function global_type(param) {
var t = param[0];
if (param[1] !== 0) {
return /* Node */Block.__(1, [
"mut",
/* :: */[
/* Atom */Block.__(0, [Types.string_of_value_type(t)]),
/* [] */0
]
]);
}
else {
return /* Atom */Block.__(0, [Types.string_of_value_type(t)]);
}
}
function testop(_, _$1) {
return "eqz";
}
function relop(_, param) {
switch (param) {
case 0 :
return "eq";
case 1 :
return "ne";
case 2 :
return "lt_s";
case 3 :
return "lt_u";
case 4 :
return "gt_s";
case 5 :
return "gt_u";
case 6 :
return "le_s";
case 7 :
return "le_u";
case 8 :
return "ge_s";
case 9 :
return "ge_u";
}
}
function unop(_, param) {
switch (param) {
case 0 :
return "clz";
case 1 :
return "ctz";
case 2 :
return "popcnt";
}
}
function binop(_, param) {
switch (param) {
case 0 :
return "add";
case 1 :
return "sub";
case 2 :
return "mul";
case 3 :
return "div_s";
case 4 :
return "div_u";
case 5 :
return "rem_s";
case 6 :
return "rem_u";
case 7 :
return "and";
case 8 :
return "or";
case 9 :
return "xor";
case 10 :
return "shl";
case 11 :
return "shr_s";
case 12 :
return "shr_u";
case 13 :
return "rotl";
case 14 :
return "rotr";
}
}
function cvtop(xx, param) {
switch (param) {
case 0 :
return "extend_s/i32";
case 1 :
return "extend_u/i32";
case 2 :
return "wrap/i64";
case 3 :
return "trunc_s/f32";
case 4 :
return "trunc_u/f32";
case 5 :
return "trunc_s/f64";
case 6 :
return "trunc_u/f64";
case 7 :
return "reinterpret/f" + xx;
}
}
function testop$1(_, _$1) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/arrange.ml",
128,
27
]
];
}
function relop$1(_, param) {
switch (param) {
case 0 :
return "eq";
case 1 :
return "ne";
case 2 :
return "lt";
case 3 :
return "gt";
case 4 :
return "le";
case 5 :
return "ge";
}
}
function unop$1(_, param) {
switch (param) {
case 0 :
return "neg";
case 1 :
return "abs";
case 2 :
return "ceil";
case 3 :
return "floor";
case 4 :
return "trunc";
case 5 :
return "nearest";
case 6 :
return "sqrt";
}
}
function binop$1(_, param) {
switch (param) {
case 0 :
return "add";
case 1 :
return "sub";
case 2 :
return "mul";
case 3 :
return "div";
case 4 :
return "min";
case 5 :
return "max";
case 6 :
return "copysign";
}
}
function cvtop$1(xx, param) {
switch (param) {
case 0 :
return "convert_s/i32";
case 1 :
return "convert_u/i32";
case 2 :
return "convert_s/i64";
case 3 :
return "convert_u/i64";
case 4 :
return "promote/f32";
case 5 :
return "demote/f64";
case 6 :
return "reinterpret/i" + xx;
}
}
function oper(param, op) {
var floatop = param[1];
var intop = param[0];
var $js;
switch (op.tag | 0) {
case 0 :
$js = Curry._2(intop, "32", op[0]);
break;
case 1 :
$js = Curry._2(intop, "64", op[0]);
break;
case 2 :
$js = Curry._2(floatop, "32", op[0]);
break;
case 3 :
$js = Curry._2(floatop, "64", op[0]);
break;
}
return Types.string_of_value_type(Values.type_of(op)) + ("." + $js);
}
var partial_arg = /* tuple */[
unop,
unop$1
];
function unop$2(param) {
return oper(partial_arg, param);
}
var partial_arg$1 = /* tuple */[
binop,
binop$1
];
function binop$2(param) {
return oper(partial_arg$1, param);
}
var partial_arg$2 = /* tuple */[
testop,
testop$1
];
function testop$2(param) {
return oper(partial_arg$2, param);
}
var partial_arg$3 = /* tuple */[
relop,
relop$1
];
function relop$2(param) {
return oper(partial_arg$3, param);
}
var partial_arg$4 = /* tuple */[
cvtop,
cvtop$1
];
function cvtop$2(param) {
return oper(partial_arg$4, param);
}
function mem_size(param) {
switch (param) {
case 0 :
return "8";
case 1 :
return "16";
case 2 :
return "32";
}
}
function extension(param) {
if (param !== 0) {
return "_u";
}
else {
return "_s";
}
}
function memop(name, param) {
var offset = param[/* offset */2];
var align = param[/* align */1];
var ty = param[/* ty */0];
return Types.string_of_value_type(ty) + ("." + (name + ((
offset ? " offset=" + Curry._1(I32.to_string_u, offset) : ""
) + (
(1 << align) === Types.size(ty) ? "" : " align=" + Curry._1(I32.to_string_u, Curry._1(I32.of_int_u, (1 << align)))
))));
}
function loadop(op) {
var match = op[/* sz */3];
if (match) {
var match$1 = match[0];
return memop("load" + (mem_size(match$1[0]) + extension(match$1[1])), op);
}
else {
return memop("load", op);
}
}
function storeop(op) {
var match = op[/* sz */3];
if (match) {
return memop("store" + mem_size(match[0]), op);
}
else {
return memop("store", op);
}
}
function $$var(x) {
return Curry._1(I32.to_string_u, x[/* it */1]);
}
function constop(v) {
return Types.string_of_value_type(Values.type_of(v[/* it */1])) + ".const";
}
function instr(e) {
var match = e[/* it */1];
var match$1;
if (typeof match === "number") {
switch (match) {
case 0 :
match$1 = /* tuple */[
"unreachable",
/* [] */0
];
break;
case 1 :
match$1 = /* tuple */[
"nop",
/* [] */0
];
break;
case 2 :
match$1 = /* tuple */[
"return",
/* [] */0
];
break;
case 3 :
match$1 = /* tuple */[
"drop",
/* [] */0
];
break;
case 4 :
match$1 = /* tuple */[
"select",
/* [] */0
];
break;
case 5 :
match$1 = /* tuple */[
"current_memory",
/* [] */0
];
break;
case 6 :
match$1 = /* tuple */[
"grow_memory",
/* [] */0
];
break;
}
}
else {
switch (match.tag | 0) {
case 0 :
var f = function (param) {
return /* Atom */Block.__(0, [Types.string_of_value_type(param)]);
};
match$1 = /* tuple */[
"block",
Pervasives.$at(List.map(f, match[0]), List.map(instr, match[1]))
];
break;
case 1 :
var f$1 = function (param) {
return /* Atom */Block.__(0, [Types.string_of_value_type(param)]);
};
match$1 = /* tuple */[
"loop",
Pervasives.$at(List.map(f$1, match[0]), List.map(instr, match[1]))
];
break;
case 2 :
var f$2 = function (param) {
return /* Atom */Block.__(0, [Types.string_of_value_type(param)]);
};
match$1 = /* tuple */[
"if",
Pervasives.$at(List.map(f$2, match[0]), /* :: */[
/* Node */Block.__(1, [
"then",
List.map(instr, match[1])
]),
/* :: */[
/* Node */Block.__(1, [
"else",
List.map(instr, match[2])
]),
/* [] */0
]
])
];
break;
case 3 :
match$1 = /* tuple */[
"br " + Curry._1(I32.to_string_u, match[0][/* it */1]),
/* [] */0
];
break;
case 4 :
match$1 = /* tuple */[
"br_if " + Curry._1(I32.to_string_u, match[0][/* it */1]),
/* [] */0
];
break;
case 5 :
var xs = Pervasives.$at(match[0], /* :: */[
match[1],
/* [] */0
]);
match$1 = /* tuple */[
"br_table " + $$String.concat(" ", List.map($$var, xs)),
/* [] */0
];
break;
case 6 :
match$1 = /* tuple */[
"call " + Curry._1(I32.to_string_u, match[0][/* it */1]),
/* [] */0
];
break;
case 7 :
match$1 = /* tuple */[
"call_indirect " + Curry._1(I32.to_string_u, match[0][/* it */1]),
/* [] */0
];
break;
case 8 :
match$1 = /* tuple */[
"get_local " + Curry._1(I32.to_string_u, match[0][/* it */1]),
/* [] */0
];
break;
case 9 :
match$1 = /* tuple */[
"set_local " + Curry._1(I32.to_string_u, match[0][/* it */1]),
/* [] */0
];
break;
case 10 :
match$1 = /* tuple */[
"tee_local " + Curry._1(I32.to_string_u, match[0][/* it */1]),
/* [] */0
];
break;
case 11 :
match$1 = /* tuple */[
"get_global " + Curry._1(I32.to_string_u, match[0][/* it */1]),
/* [] */0
];
break;
case 12 :
match$1 = /* tuple */[
"set_global " + Curry._1(I32.to_string_u, match[0][/* it */1]),
/* [] */0
];
break;
case 13 :
match$1 = /* tuple */[
loadop(match[0]),
/* [] */0
];
break;
case 14 :
match$1 = /* tuple */[
storeop(match[0]),
/* [] */0
];
break;
case 15 :
var lit = match[0];
match$1 = /* tuple */[
constop(lit) + (" " + Values.string_of_value(lit[/* it */1])),
/* [] */0
];
break;
case 16 :
match$1 = /* tuple */[
Curry._1(testop$2, match[0]),
/* [] */0
];
break;
case 17 :
match$1 = /* tuple */[
Curry._1(relop$2, match[0]),
/* [] */0
];
break;
case 18 :
match$1 = /* tuple */[
Curry._1(unop$2, match[0]),
/* [] */0
];
break;
case 19 :
match$1 = /* tuple */[
Curry._1(binop$2, match[0]),
/* [] */0
];
break;
case 20 :
match$1 = /* tuple */[
Curry._1(cvtop$2, match[0]),
/* [] */0
];
break;
}
}
return /* Node */Block.__(1, [
match$1[0],
match$1[1]
]);
}
function func_with_name(name, f) {
var match = f[/* it */1];
return /* Node */Block.__(1, [
"func" + name,
Pervasives.$at(/* :: */[
/* Node */Block.__(1, [
"type " + Curry._1(I32.to_string_u, match[/* ftype */0][/* it */1]),
/* [] */0
]),
/* [] */0
], Pervasives.$at(decls("local", match[/* locals */1]), List.map(instr, match[/* body */2])))
]);
}
function func(f) {
return func_with_name("", f);
}
function start(x) {
return /* Node */Block.__(1, [
"start " + Curry._1(I32.to_string_u, x[/* it */1]),
/* [] */0
]);
}
function table(off, i, tab) {
var match = tab[/* it */1];
var match$1 = match[/* ttype */0];
return /* Node */Block.__(1, [
"table $" + (Curry._1(I32.to_string_u, Curry._1(I32.of_int_u, off + i | 0)) + (" " + limits(I32.to_string_u, match$1[0]))),
/* :: */[
/* Atom */Block.__(0, [Types.string_of_elem_type(match$1[1])]),
/* [] */0
]
]);
}
function memory(off, i, mem) {
var match = mem[/* it */1];
return /* Node */Block.__(1, [
"memory $" + (Curry._1(I32.to_string_u, Curry._1(I32.of_int_u, off + i | 0)) + (" " + limits(I32.to_string_u, match[/* mtype */0][0]))),
/* [] */0
]);
}
function segment(head, dat, seg) {
var match = seg[/* it */1];
return /* Node */Block.__(1, [
head,
/* :: */[
/* Atom */Block.__(0, [Curry._1(I32.to_string_u, match[/* index */0][/* it */1])]),
/* :: */[
/* Node */Block.__(1, [
"offset",
List.map(instr, match[/* offset */1][/* it */1])
]),
Curry._1(dat, match[/* init */2])
]
]
]);
}
function elems(seg) {
return segment("elem", function (param) {
return List.map(function (param) {
return /* Atom */Block.__(0, [Curry._1(I32.to_string_u, param[/* it */1])]);
}, param);
}, seg);
}
function data(seg) {
return segment("data", break_bytes, seg);
}
function typedef(i, t) {
return /* Node */Block.__(1, [
"type $" + Curry._1(I32.to_string_u, Curry._1(I32.of_int_u, i)),
/* :: */[
func_type(t),
/* [] */0
]
]);
}
function import_kind(i, k) {
var match = k[/* it */1];
switch (match.tag | 0) {
case 0 :
return /* Node */Block.__(1, [
"func $" + Curry._1(I32.to_string_u, Curry._1(I32.of_int_u, i)),
/* :: */[
/* Node */Block.__(1, [
"type",
/* :: */[
/* Atom */Block.__(0, [Curry._1(I32.to_string_u, match[0][/* it */1])]),
/* [] */0
]
]),
/* [] */0
]
]);
case 1 :
return table(0, i, Source.$at$at(/* record */[/* ttype */match[0]], k[/* at */0]));
case 2 :
return memory(0, i, Source.$at$at(/* record */[/* mtype */match[0]], k[/* at */0]));
case 3 :
return /* Node */Block.__(1, [
"global $" + Curry._1(I32.to_string_u, Curry._1(I32.of_int_u, i)),
/* :: */[
global_type(match[0]),
/* [] */0
]
]);
}
}
function $$import(i, im) {
var match = im[/* it */1];
return /* Node */Block.__(1, [
"import",
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match[/* module_name */0])]),
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match[/* item_name */1])]),
/* :: */[
import_kind(i, match[/* ikind */2]),
/* [] */0
]
]
]
]);
}
function export_kind(k) {
var match = k[/* it */1];
switch (match) {
case 0 :
return "func";
case 1 :
return "table";
case 2 :
return "memory";
case 3 :
return "global";
}
}
function $$export(ex) {
var match = ex[/* it */1];
return /* Node */Block.__(1, [
"export",
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match[/* name */0])]),
/* :: */[
/* Node */Block.__(1, [
export_kind(match[/* ekind */1]),
/* :: */[
/* Atom */Block.__(0, [Curry._1(I32.to_string_u, match[/* item */2][/* it */1])]),
/* [] */0
]
]),
/* [] */0
]
]
]);
}
function var_opt(param) {
if (param) {
return " " + param[0][/* it */1];
}
else {
return "";
}
}
function is_func_import(im) {
var match = im[/* it */1][/* ikind */2][/* it */1];
if (match.tag) {
return /* false */0;
}
else {
return /* true */1;
}
}
function is_table_import(im) {
var match = im[/* it */1][/* ikind */2][/* it */1];
if (match.tag === 1) {
return /* true */1;
}
else {
return /* false */0;
}
}
function is_memory_import(im) {
var match = im[/* it */1][/* ikind */2][/* it */1];
if (match.tag === 2) {
return /* true */1;
}
else {
return /* false */0;
}
}
function is_global_import(im) {
var match = im[/* it */1][/* ikind */2][/* it */1];
if (match.tag === 3) {
return /* true */1;
}
else {
return /* false */0;
}
}
function module_with_var_opt(x_opt, m) {
var func_imports = List.filter(is_func_import)(m[/* it */1][/* imports */8]);
var table_imports = List.filter(is_table_import)(m[/* it */1][/* imports */8]);
var memory_imports = List.filter(is_memory_import)(m[/* it */1][/* imports */8]);
var global_imports = List.filter(is_global_import)(m[/* it */1][/* imports */8]);
var partial_arg = List.length(table_imports);
var f = function (param, param$1) {
return table(partial_arg, param, param$1);
};
var partial_arg$1 = List.length(memory_imports);
var f$1 = function (param, param$1) {
return memory(partial_arg$1, param, param$1);
};
var partial_arg$2 = List.length(global_imports);
var f$2 = function (param, param$1) {
var off = partial_arg$2;
var i = param;
var g = param$1;
var match = g[/* it */1];
return /* Node */Block.__(1, [
"global $" + Curry._1(I32.to_string_u, Curry._1(I32.of_int_u, off + i | 0)),
/* :: */[
global_type(match[/* gtype */0]),
List.map(instr, match[/* value */1][/* it */1])
]
]);
};
var partial_arg$3 = List.length(func_imports);
var f$3 = function (param, param$1) {
var off = partial_arg$3;
var i = param;
var f$4 = param$1;
return func_with_name(" $" + Curry._1(I32.to_string_u, Curry._1(I32.of_int_u, off + i | 0)), f$4);
};
var xs = list_of_opt(m[/* it */1][/* start */5]);
return /* Node */Block.__(1, [
"module" + var_opt(x_opt),
Pervasives.$at(List.mapi(typedef, m[/* it */1][/* types */0]), Pervasives.$at(List.mapi($$import, table_imports), Pervasives.$at(List.mapi($$import, memory_imports), Pervasives.$at(List.mapi($$import, global_imports), Pervasives.$at(List.mapi($$import, func_imports), Pervasives.$at(List.mapi(f, m[/* it */1][/* tables */2]), Pervasives.$at(List.mapi(f$1, m[/* it */1][/* memories */3]), Pervasives.$at(List.mapi(f$2, m[/* it */1][/* globals */1]), Pervasives.$at(List.mapi(f$3, m[/* it */1][/* funcs */4]), Pervasives.$at(List.map($$export, m[/* it */1][/* exports */9]), Pervasives.$at(List.map(start, xs), Pervasives.$at(List.map(elems, m[/* it */1][/* elems */6]), List.map(data, m[/* it */1][/* data */7])))))))))))))
]);
}
function module_(param) {
return module_with_var_opt(/* None */0, param);
}
function literal(lit) {
var match = lit[/* it */1];
switch (match.tag | 0) {
case 0 :
return /* Node */Block.__(1, [
"i32.const " + Curry._1(I32.to_string_s, match[0]),
/* [] */0
]);
case 1 :
return /* Node */Block.__(1, [
"i64.const " + Curry._1(I64.to_string_s, match[0]),
/* [] */0
]);
case 2 :
return /* Node */Block.__(1, [
"f32.const " + Curry._1(F32.to_string, match[0]),
/* [] */0
]);
case 3 :
return /* Node */Block.__(1, [
"f64.const " + Curry._1(F64.to_string, match[0]),
/* [] */0
]);
}
}
function definition(mode, x_opt, def) {
var match = def[/* it */1];
var exit = 0;
exit = mode !== 564146209 && !(mode >= 983167089 && match.tag) ? 1 : 2;
switch (exit) {
case 1 :
var match$1 = def[/* it */1];
var m;
m = match$1.tag ? Decode.decode("", match$1[1]) : match$1[0];
return module_with_var_opt(x_opt, m);
case 2 :
var match$2 = def[/* it */1];
var bs;
bs = match$2.tag ? match$2[1] : Encode.encode(match$2[0]);
var x_opt$1 = x_opt;
var bs$1 = bs;
return /* Node */Block.__(1, [
"module" + var_opt(x_opt$1),
break_bytes(bs$1)
]);
}
}
function access(x_opt, name) {
return $$String.concat(" ", /* :: */[
var_opt(x_opt),
/* :: */[
string_with(add_char, name),
/* [] */0
]
]);
}
function action(act) {
var match = act[/* it */1];
if (match.tag) {
return /* Node */Block.__(1, [
"get" + access(match[0], match[1]),
/* [] */0
]);
}
else {
return /* Node */Block.__(1, [
"invoke" + access(match[0], match[1]),
List.map(literal, match[2])
]);
}
}
function script(mode, scr) {
return List.map(function (param) {
var mode$1 = mode;
var cmd = param;
var match = cmd[/* it */1];
switch (match.tag | 0) {
case 0 :
return definition(mode$1, match[0], match[1]);
case 1 :
return /* Node */Block.__(1, [
"register " + (string_with(add_char, match[0]) + var_opt(match[1])),
/* [] */0
]);
case 2 :
return action(match[0]);
case 3 :
var mode$2 = mode$1;
var ass = match[0];
var match$1 = ass[/* it */1];
switch (match$1.tag | 0) {
case 0 :
return /* Node */Block.__(1, [
"assert_malformed",
/* :: */[
definition(/* Original */983167089, /* None */0, match$1[0]),
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match$1[1])]),
/* [] */0
]
]
]);
case 1 :
return /* Node */Block.__(1, [
"assert_invalid",
/* :: */[
definition(mode$2, /* None */0, match$1[0]),
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match$1[1])]),
/* [] */0
]
]
]);
case 2 :
return /* Node */Block.__(1, [
"assert_soft_invalid",
/* :: */[
definition(mode$2, /* None */0, match$1[0]),
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match$1[1])]),
/* [] */0
]
]
]);
case 3 :
return /* Node */Block.__(1, [
"assert_unlinkable",
/* :: */[
definition(mode$2, /* None */0, match$1[0]),
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match$1[1])]),
/* [] */0
]
]
]);
case 4 :
return /* Node */Block.__(1, [
"assert_trap",
/* :: */[
definition(mode$2, /* None */0, match$1[0]),
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match$1[1])]),
/* [] */0
]
]
]);
case 5 :
return /* Node */Block.__(1, [
"assert_return",
/* :: */[
action(match$1[0]),
List.map(literal, match$1[1])
]
]);
case 6 :
return /* Node */Block.__(1, [
"assert_return_nan",
/* :: */[
action(match$1[0]),
/* [] */0
]
]);
case 7 :
return /* Node */Block.__(1, [
"assert_trap",
/* :: */[
action(match$1[0]),
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match$1[1])]),
/* [] */0
]
]
]);
case 8 :
return /* Node */Block.__(1, [
"assert_exhaustion",
/* :: */[
action(match$1[0]),
/* :: */[
/* Atom */Block.__(0, [string_with(add_char, match$1[1])]),
/* [] */0
]
]
]);
}
case 4 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/arrange.ml",
435,
14
]
];
}
}, scr);
}
exports.instr = instr;
exports.func = func;
exports.module_ = module_;
exports.script = script;
/* F32 Not a pure module */
//////// end of arrange.js ////////
    return exports;
  };
_registry['array'] = function() {
    let exports = {};
//////// start of array.js ////////
'use strict';
var Curry = require("./curry");
var Caml_array = require("./caml_array");
var Caml_exceptions = require("./caml_exceptions");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function init(l, f) {
if (l) {
if (l < 0) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Array.init"
];
}
else {
var res = Caml_array.caml_make_vect(l, Curry._1(f, 0));
for(var i = 1 ,i_finish = l - 1 | 0; i <= i_finish; ++i){
res[i] = Curry._1(f, i);
}
return res;
}
}
else {
return /* array */[];
}
}
function make_matrix(sx, sy, init) {
var res = Caml_array.caml_make_vect(sx, /* array */[]);
for(var x = 0 ,x_finish = sx - 1 | 0; x <= x_finish; ++x){
res[x] = Caml_array.caml_make_vect(sy, init);
}
return res;
}
function copy(a) {
var l = a.length;
if (l) {
return Caml_array.caml_array_sub(a, 0, l);
}
else {
return /* array */[];
}
}
function append(a1, a2) {
var l1 = a1.length;
if (l1) {
if (a2.length) {
return a1.concat(a2);
}
else {
return Caml_array.caml_array_sub(a1, 0, l1);
}
}
else {
return copy(a2);
}
}
function sub(a, ofs, len) {
if (len < 0 || ofs > (a.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Array.sub"
];
}
else {
return Caml_array.caml_array_sub(a, ofs, len);
}
}
function fill(a, ofs, len, v) {
if (ofs < 0 || len < 0 || ofs > (a.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Array.fill"
];
}
else {
for(var i = ofs ,i_finish = (ofs + len | 0) - 1 | 0; i <= i_finish; ++i){
a[i] = v;
}
return /* () */0;
}
}
function blit(a1, ofs1, a2, ofs2, len) {
if (len < 0 || ofs1 < 0 || ofs1 > (a1.length - len | 0) || ofs2 < 0 || ofs2 > (a2.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Array.blit"
];
}
else {
return Caml_array.caml_array_blit(a1, ofs1, a2, ofs2, len);
}
}
function iter(f, a) {
for(var i = 0 ,i_finish = a.length - 1 | 0; i <= i_finish; ++i){
Curry._1(f, a[i]);
}
return /* () */0;
}
function map(f, a) {
var l = a.length;
if (l) {
var r = Caml_array.caml_make_vect(l, Curry._1(f, a[0]));
for(var i = 1 ,i_finish = l - 1 | 0; i <= i_finish; ++i){
r[i] = Curry._1(f, a[i]);
}
return r;
}
else {
return /* array */[];
}
}
function iteri(f, a) {
for(var i = 0 ,i_finish = a.length - 1 | 0; i <= i_finish; ++i){
Curry._2(f, i, a[i]);
}
return /* () */0;
}
function mapi(f, a) {
var l = a.length;
if (l) {
var r = Caml_array.caml_make_vect(l, Curry._2(f, 0, a[0]));
for(var i = 1 ,i_finish = l - 1 | 0; i <= i_finish; ++i){
r[i] = Curry._2(f, i, a[i]);
}
return r;
}
else {
return /* array */[];
}
}
function to_list(a) {
var _i = a.length - 1 | 0;
var _res = /* [] */0;
while(true) {
var res = _res;
var i = _i;
if (i < 0) {
return res;
}
else {
_res = /* :: */[
a[i],
res
];
_i = i - 1 | 0;
continue ;
}
};
}
function list_length(_accu, _param) {
while(true) {
var param = _param;
var accu = _accu;
if (param) {
_param = param[1];
_accu = accu + 1 | 0;
continue ;
}
else {
return accu;
}
};
}
function of_list(l) {
if (l) {
var a = Caml_array.caml_make_vect(list_length(0, l), l[0]);
var _i = 1;
var _param = l[1];
while(true) {
var param = _param;
var i = _i;
if (param) {
a[i] = param[0];
_param = param[1];
_i = i + 1 | 0;
continue ;
}
else {
return a;
}
};
}
else {
return /* array */[];
}
}
function fold_left(f, x, a) {
var r = x;
for(var i = 0 ,i_finish = a.length - 1 | 0; i <= i_finish; ++i){
r = Curry._2(f, r, a[i]);
}
return r;
}
function fold_right(f, a, x) {
var r = x;
for(var i = a.length - 1 | 0; i >= 0; --i){
r = Curry._2(f, a[i], r);
}
return r;
}
var Bottom = Caml_exceptions.create("Array.Bottom");
function sort(cmp, a) {
var maxson = function (l, i) {
var i31 = ((i + i | 0) + i | 0) + 1 | 0;
var x = i31;
if ((i31 + 2 | 0) < l) {
if (Curry._2(cmp, a[i31], a[i31 + 1 | 0]) < 0) {
x = i31 + 1 | 0;
}
if (Curry._2(cmp, a[x], a[i31 + 2 | 0]) < 0) {
x = i31 + 2 | 0;
}
return x;
}
else if ((i31 + 1 | 0) < l && Curry._2(cmp, a[i31], a[i31 + 1 | 0]) < 0) {
return i31 + 1 | 0;
}
else if (i31 < l) {
return i31;
}
else {
throw [
Bottom,
i
];
}
};
var trickle = function (l, i, e) {
try {
var l$1 = l;
var _i = i;
var e$1 = e;
while(true) {
var i$1 = _i;
var j = maxson(l$1, i$1);
if (Curry._2(cmp, a[j], e$1) > 0) {
a[i$1] = a[j];
_i = j;
continue ;
}
else {
a[i$1] = e$1;
return /* () */0;
}
};
}
catch (exn){
if (exn[0] === Bottom) {
a[exn[1]] = e;
return /* () */0;
}
else {
throw exn;
}
}
};
var bubble = function (l, i) {
try {
var l$1 = l;
var _i = i;
while(true) {
var i$1 = _i;
var j = maxson(l$1, i$1);
a[i$1] = a[j];
_i = j;
continue ;
};
}
catch (exn){
if (exn[0] === Bottom) {
return exn[1];
}
else {
throw exn;
}
}
};
var trickleup = function (_i, e) {
while(true) {
var i = _i;
var father = (i - 1 | 0) / 3 | 0;
if (i === father) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"array.ml",
168,
4
]
];
}
if (Curry._2(cmp, a[father], e) < 0) {
a[i] = a[father];
if (father > 0) {
_i = father;
continue ;
}
else {
a[0] = e;
return /* () */0;
}
}
else {
a[i] = e;
return /* () */0;
}
};
};
var l = a.length;
for(var i = ((l + 1 | 0) / 3 | 0) - 1 | 0; i >= 0; --i){
trickle(l, i, a[i]);
}
for(var i$1 = l - 1 | 0; i$1 >= 2; --i$1){
var e = a[i$1];
a[i$1] = a[0];
trickleup(bubble(i$1, 0), e);
}
if (l > 1) {
var e$1 = a[1];
a[1] = a[0];
a[0] = e$1;
return /* () */0;
}
else {
return 0;
}
}
function stable_sort(cmp, a) {
var merge = function (src1ofs, src1len, src2, src2ofs, src2len, dst, dstofs) {
var src1r = src1ofs + src1len | 0;
var src2r = src2ofs + src2len | 0;
var _i1 = src1ofs;
var _s1 = a[src1ofs];
var _i2 = src2ofs;
var _s2 = src2[src2ofs];
var _d = dstofs;
while(true) {
var d = _d;
var s2 = _s2;
var i2 = _i2;
var s1 = _s1;
var i1 = _i1;
if (Curry._2(cmp, s1, s2) <= 0) {
dst[d] = s1;
var i1$1 = i1 + 1 | 0;
if (i1$1 < src1r) {
_d = d + 1 | 0;
_s1 = a[i1$1];
_i1 = i1$1;
continue ;
}
else {
return blit(src2, i2, dst, d + 1 | 0, src2r - i2 | 0);
}
}
else {
dst[d] = s2;
var i2$1 = i2 + 1 | 0;
if (i2$1 < src2r) {
_d = d + 1 | 0;
_s2 = src2[i2$1];
_i2 = i2$1;
continue ;
}
else {
return blit(a, i1, dst, d + 1 | 0, src1r - i1 | 0);
}
}
};
};
var isortto = function (srcofs, dst, dstofs, len) {
for(var i = 0 ,i_finish = len - 1 | 0; i <= i_finish; ++i){
var e = a[srcofs + i | 0];
var j = (dstofs + i | 0) - 1 | 0;
while(j >= dstofs && Curry._2(cmp, dst[j], e) > 0) {
dst[j + 1 | 0] = dst[j];
j = j - 1 | 0;
};
dst[j + 1 | 0] = e;
}
return /* () */0;
};
var sortto = function (srcofs, dst, dstofs, len) {
if (len <= 5) {
return isortto(srcofs, dst, dstofs, len);
}
else {
var l1 = len / 2 | 0;
var l2 = len - l1 | 0;
sortto(srcofs + l1 | 0, dst, dstofs + l1 | 0, l2);
sortto(srcofs, a, srcofs + l2 | 0, l1);
return merge(srcofs + l2 | 0, l1, dst, dstofs + l1 | 0, l2, dst, dstofs);
}
};
var l = a.length;
if (l <= 5) {
return isortto(0, a, 0, l);
}
else {
var l1 = l / 2 | 0;
var l2 = l - l1 | 0;
var t = Caml_array.caml_make_vect(l2, a[0]);
sortto(l1, t, 0, l2);
sortto(0, a, l2, l1);
return merge(l2, l1, t, 0, l2, a, 0);
}
}
var create_matrix = make_matrix;
var concat = Caml_array.caml_array_concat;
var fast_sort = stable_sort;
exports.init = init;
exports.make_matrix = make_matrix;
exports.create_matrix = create_matrix;
exports.append = append;
exports.concat = concat;
exports.sub = sub;
exports.copy = copy;
exports.fill = fill;
exports.blit = blit;
exports.to_list = to_list;
exports.of_list = of_list;
exports.iter = iter;
exports.map = map;
exports.iteri = iteri;
exports.mapi = mapi;
exports.fold_left = fold_left;
exports.fold_right = fold_right;
exports.sort = sort;
exports.stable_sort = stable_sort;
exports.fast_sort = fast_sort;
/* No side effect */
//////// end of array.js ////////
    return exports;
  };
_registry['ast'] = function() {
    let exports = {};
//////// start of ast.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Lib = require("./lib");
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var Caml_obj = require("bs-platform/lib/js/caml_obj");
var IntOp = /* module */[];
var FloatOp = /* module */[];
function export_kind_of_import_kind(param) {
switch (param.tag | 0) {
case 0 :
return /* FuncExport */0;
case 1 :
return /* TableExport */1;
case 2 :
return /* MemoryExport */2;
case 3 :
return /* GlobalExport */3;
}
}
function import_type(m, im) {
var match = im[/* it */1];
var match$1 = match[/* ikind */2][/* it */1];
switch (match$1.tag | 0) {
case 0 :
return /* ExternalFuncType */Block.__(0, [Curry._2(Lib.List32[/* nth */1], m[/* it */1][/* types */0], match$1[0][/* it */1])]);
case 1 :
return /* ExternalTableType */Block.__(1, [match$1[0]]);
case 2 :
return /* ExternalMemoryType */Block.__(2, [match$1[0]]);
case 3 :
return /* ExternalGlobalType */Block.__(3, [match$1[0]]);
}
}
function export_type(m, ex) {
var match = ex[/* it */1];
var ekind = match[/* ekind */1];
var _i = match[/* item */2][/* it */1];
var _param = m[/* it */1][/* imports */8];
while(true) {
var param = _param;
var i = _i;
if (param) {
var ims = param[1];
var im = param[0];
if (Caml_obj.caml_equal(export_kind_of_import_kind(im[/* it */1][/* ikind */2][/* it */1]), ekind[/* it */1])) {
if (i) {
_param = ims;
_i = i - 1 | 0;
continue ;
}
else {
return import_type(m, im);
}
}
else {
_param = ims;
continue ;
}
}
else {
var match$1 = ekind[/* it */1];
switch (match$1) {
case 0 :
return /* ExternalFuncType */Block.__(0, [Curry._2(Lib.List32[/* nth */1], m[/* it */1][/* types */0], Curry._2(Lib.List32[/* nth */1], m[/* it */1][/* funcs */4], i)[/* it */1][/* ftype */0][/* it */1])]);
case 1 :
return /* ExternalTableType */Block.__(1, [Curry._2(Lib.List32[/* nth */1], m[/* it */1][/* tables */2], i)[/* it */1][/* ttype */0]]);
case 2 :
return /* ExternalMemoryType */Block.__(2, [Curry._2(Lib.List32[/* nth */1], m[/* it */1][/* memories */3], i)[/* it */1][/* mtype */0]]);
case 3 :
return /* ExternalGlobalType */Block.__(3, [Curry._2(Lib.List32[/* nth */1], m[/* it */1][/* globals */1], i)[/* it */1][/* gtype */0]]);
}
}
};
}
var I32Op = 0;
var I64Op = 0;
var F32Op = 0;
var F64Op = 0;
var empty_module = /* record */[
/* types : [] */0,
/* globals : [] */0,
/* tables : [] */0,
/* memories : [] */0,
/* funcs : [] */0,
/* start : None */0,
/* elems : [] */0,
/* data : [] */0,
/* imports : [] */0,
/* exports : [] */0
];
exports.IntOp = IntOp;
exports.FloatOp = FloatOp;
exports.I32Op = I32Op;
exports.I64Op = I64Op;
exports.F32Op = F32Op;
exports.F64Op = F64Op;
exports.empty_module = empty_module;
exports.export_kind_of_import_kind = export_kind_of_import_kind;
exports.import_type = import_type;
exports.export_type = export_type;
/* Lib Not a pure module */
//////// end of ast.js ////////
    return exports;
  };
_registry['bigarray'] = function() {
    let exports = {};
//////// start of bigarray.js ////////
'use strict';
var Caml_array = require("./caml_array");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function dims() {
var n = function () {
throw "caml_ba_num_dims not implemented by bucklescript yet\n";
}();
var d = Caml_array.caml_make_vect(n, 0);
for(var i = 0 ,i_finish = n - 1 | 0; i <= i_finish; ++i){
d[i] = function () {
throw "caml_ba_dim not implemented by bucklescript yet\n";
}();
}
return d;
}
function map_file(_, $staropt$star, _$1, _$2, _$3, _$4) {
$staropt$star ? $staropt$star[0] : /* int64 */[
/* hi */0,
/* lo */0
];
return function () {
throw "caml_ba_map_file_bytecode not implemented by bucklescript yet\n";
}();
}
var Genarray = /* module */[
/* dims */dims,
/* map_file */map_file
];
function create(_, _$1, _$2) {
return function () {
throw "caml_ba_create not implemented by bucklescript yet\n";
}();
}
function of_array(kind, layout, data) {
var ba = create(kind, layout, data.length);
layout !== 0 ? 1 : 0;
for(var i = 0 ,i_finish = data.length - 1 | 0; i <= i_finish; ++i){
(function () {
throw "caml_ba_set_1 not implemented by bucklescript yet\n";
}());
}
return ba;
}
function map_file$1(fd, pos, kind, layout, shared, dim) {
return map_file(fd, pos, kind, layout, shared, /* int array */[dim]);
}
var Array1 = /* module */[
/* create */create,
/* of_array */of_array,
/* map_file */map_file$1
];
function create$1(_, _$1, _$2, _$3) {
return function () {
throw "caml_ba_create not implemented by bucklescript yet\n";
}();
}
function slice_left(_, _$1) {
return function () {
throw "caml_ba_slice not implemented by bucklescript yet\n";
}();
}
function slice_right(_, _$1) {
return function () {
throw "caml_ba_slice not implemented by bucklescript yet\n";
}();
}
function of_array$1(kind, layout, data) {
var dim1 = data.length;
var dim2 = dim1 ? data[0].length : 0;
var ba = create$1(kind, layout, dim1, dim2);
layout !== 0 ? 1 : 0;
for(var i = 0 ,i_finish = dim1 - 1 | 0; i <= i_finish; ++i){
var row = data[i];
if (row.length !== dim2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Bigarray.Array2.of_array: non-rectangular data"
];
}
for(var j = 0 ,j_finish = dim2 - 1 | 0; j <= j_finish; ++j){
(function () {
throw "caml_ba_set_2 not implemented by bucklescript yet\n";
}());
}
}
return ba;
}
function map_file$2(fd, pos, kind, layout, shared, dim1, dim2) {
return map_file(fd, pos, kind, layout, shared, /* int array */[
dim1,
dim2
]);
}
var Array2 = /* module */[
/* create */create$1,
/* slice_left */slice_left,
/* slice_right */slice_right,
/* of_array */of_array$1,
/* map_file */map_file$2
];
function create$2(_, _$1, _$2, _$3, _$4) {
return function () {
throw "caml_ba_create not implemented by bucklescript yet\n";
}();
}
function slice_left_1(_, _$1, _$2) {
return function () {
throw "caml_ba_slice not implemented by bucklescript yet\n";
}();
}
function slice_right_1(_, _$1, _$2) {
return function () {
throw "caml_ba_slice not implemented by bucklescript yet\n";
}();
}
function slice_left_2(_, _$1) {
return function () {
throw "caml_ba_slice not implemented by bucklescript yet\n";
}();
}
function slice_right_2(_, _$1) {
return function () {
throw "caml_ba_slice not implemented by bucklescript yet\n";
}();
}
function of_array$2(kind, layout, data) {
var dim1 = data.length;
var dim2 = dim1 ? data[0].length : 0;
var dim3 = dim2 ? data[0][0].length : 0;
var ba = create$2(kind, layout, dim1, dim2, dim3);
layout !== 0 ? 1 : 0;
for(var i = 0 ,i_finish = dim1 - 1 | 0; i <= i_finish; ++i){
var row = data[i];
if (row.length !== dim2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Bigarray.Array3.of_array: non-cubic data"
];
}
for(var j = 0 ,j_finish = dim2 - 1 | 0; j <= j_finish; ++j){
var col = row[j];
if (col.length !== dim3) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Bigarray.Array3.of_array: non-cubic data"
];
}
for(var k = 0 ,k_finish = dim3 - 1 | 0; k <= k_finish; ++k){
(function () {
throw "caml_ba_set_3 not implemented by bucklescript yet\n";
}());
}
}
}
return ba;
}
function map_file$3(fd, pos, kind, layout, shared, dim1, dim2, dim3) {
return map_file(fd, pos, kind, layout, shared, /* int array */[
dim1,
dim2,
dim3
]);
}
var Array3 = /* module */[
/* create */create$2,
/* slice_left_1 */slice_left_1,
/* slice_right_1 */slice_right_1,
/* slice_left_2 */slice_left_2,
/* slice_right_2 */slice_right_2,
/* of_array */of_array$2,
/* map_file */map_file$3
];
function array1_of_genarray(a) {
if (function () {
throw "caml_ba_num_dims not implemented by bucklescript yet\n";
}() === 1) {
return a;
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"Bigarray.array1_of_genarray"
];
}
}
function array2_of_genarray(a) {
if (function () {
throw "caml_ba_num_dims not implemented by bucklescript yet\n";
}() === 2) {
return a;
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"Bigarray.array2_of_genarray"
];
}
}
function array3_of_genarray(a) {
if (function () {
throw "caml_ba_num_dims not implemented by bucklescript yet\n";
}() === 3) {
return a;
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"Bigarray.array3_of_genarray"
];
}
}
function reshape_1(_, _$1) {
return function () {
throw "caml_ba_reshape not implemented by bucklescript yet\n";
}();
}
function reshape_2(_, _$1, _$2) {
return function () {
throw "caml_ba_reshape not implemented by bucklescript yet\n";
}();
}
function reshape_3(_, _$1, _$2, _$3) {
return function () {
throw "caml_ba_reshape not implemented by bucklescript yet\n";
}();
}
var float32 = /* Float32 */0;
var float64 = /* Float64 */1;
var complex32 = /* Complex32 */10;
var complex64 = /* Complex64 */11;
var int8_signed = /* Int8_signed */2;
var int8_unsigned = /* Int8_unsigned */3;
var int16_signed = /* Int16_signed */4;
var int16_unsigned = /* Int16_unsigned */5;
var $$int = /* Int */8;
var int32 = /* Int32 */6;
var int64 = /* Int64 */7;
var nativeint = /* Nativeint */9;
var $$char = /* Char */12;
var c_layout = /* C_layout */0;
var fortran_layout = /* Fortran_layout */1;
function reshape(_, _$1) {
return function () {
throw "caml_ba_reshape not implemented by bucklescript yet\n";
}();
}
exports.float32 = float32;
exports.float64 = float64;
exports.complex32 = complex32;
exports.complex64 = complex64;
exports.int8_signed = int8_signed;
exports.int8_unsigned = int8_unsigned;
exports.int16_signed = int16_signed;
exports.int16_unsigned = int16_unsigned;
exports.$$int = $$int;
exports.int32 = int32;
exports.int64 = int64;
exports.nativeint = nativeint;
exports.$$char = $$char;
exports.c_layout = c_layout;
exports.fortran_layout = fortran_layout;
exports.Genarray = Genarray;
exports.Array1 = Array1;
exports.Array2 = Array2;
exports.Array3 = Array3;
exports.array1_of_genarray = array1_of_genarray;
exports.array2_of_genarray = array2_of_genarray;
exports.array3_of_genarray = array3_of_genarray;
exports.reshape = reshape;
exports.reshape_1 = reshape_1;
exports.reshape_2 = reshape_2;
exports.reshape_3 = reshape_3;
/* Not a pure module */
//////// end of bigarray.js ////////
    return exports;
  };
_registry['block'] = function() {
    let exports = {};
//////// start of block.js ////////
'use strict';
function __(tag, block) {
block.tag = tag;
return block;
}
exports.__ = __;
/* No side effect */
//////// end of block.js ////////
    return exports;
  };
_registry['buffer'] = function() {
    let exports = {};
//////// start of buffer.js ////////
'use strict';
var Sys = require("./sys");
var Bytes = require("./bytes");
var Curry = require("./curry");
var $$String = require("./string");
var Pervasives = require("./pervasives");
var Caml_string = require("./caml_string");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function create(n) {
var n$1 = n < 1 ? 1 : n;
var n$2 = n$1 > Sys.max_string_length ? Sys.max_string_length : n$1;
var s = Caml_string.caml_create_string(n$2);
return /* record */[
/* buffer */s,
/* position */0,
/* length */n$2,
/* initial_buffer */s
];
}
function contents(b) {
return Bytes.sub_string(b[/* buffer */0], 0, b[/* position */1]);
}
function to_bytes(b) {
return Bytes.sub(b[/* buffer */0], 0, b[/* position */1]);
}
function sub(b, ofs, len) {
if (ofs < 0 || len < 0 || ofs > (b[/* position */1] - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Buffer.sub"
];
}
else {
return Bytes.sub_string(b[/* buffer */0], ofs, len);
}
}
function blit(src, srcoff, dst, dstoff, len) {
if (len < 0 || srcoff < 0 || srcoff > (src[/* position */1] - len | 0) || dstoff < 0 || dstoff > (dst.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Buffer.blit"
];
}
else {
return Bytes.blit(src[/* buffer */0], srcoff, dst, dstoff, len);
}
}
function nth(b, ofs) {
if (ofs < 0 || ofs >= b[/* position */1]) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Buffer.nth"
];
}
else {
return b[/* buffer */0][ofs];
}
}
function length(b) {
return b[/* position */1];
}
function clear(b) {
b[/* position */1] = 0;
return /* () */0;
}
function reset(b) {
b[/* position */1] = 0;
b[/* buffer */0] = b[/* initial_buffer */3];
b[/* length */2] = b[/* buffer */0].length;
return /* () */0;
}
function resize(b, more) {
var len = b[/* length */2];
var new_len = len;
while((b[/* position */1] + more | 0) > new_len) {
new_len = (new_len << 1);
};
if (new_len > Sys.max_string_length) {
if ((b[/* position */1] + more | 0) <= Sys.max_string_length) {
new_len = Sys.max_string_length;
}
else {
throw [
Caml_builtin_exceptions.failure,
"Buffer.add: cannot grow buffer"
];
}
}
var new_buffer = Caml_string.caml_create_string(new_len);
Bytes.blit(b[/* buffer */0], 0, new_buffer, 0, b[/* position */1]);
b[/* buffer */0] = new_buffer;
b[/* length */2] = new_len;
return /* () */0;
}
function add_char(b, c) {
var pos = b[/* position */1];
if (pos >= b[/* length */2]) {
resize(b, 1);
}
b[/* buffer */0][pos] = c;
b[/* position */1] = pos + 1 | 0;
return /* () */0;
}
function add_substring(b, s, offset, len) {
if (offset < 0 || len < 0 || (offset + len | 0) > s.length) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Buffer.add_substring/add_subbytes"
];
}
var new_position = b[/* position */1] + len | 0;
if (new_position > b[/* length */2]) {
resize(b, len);
}
Bytes.blit_string(s, offset, b[/* buffer */0], b[/* position */1], len);
b[/* position */1] = new_position;
return /* () */0;
}
function add_subbytes(b, s, offset, len) {
return add_substring(b, Caml_string.bytes_to_string(s), offset, len);
}
function add_string(b, s) {
var len = s.length;
var new_position = b[/* position */1] + len | 0;
if (new_position > b[/* length */2]) {
resize(b, len);
}
Bytes.blit_string(s, 0, b[/* buffer */0], b[/* position */1], len);
b[/* position */1] = new_position;
return /* () */0;
}
function add_bytes(b, s) {
return add_string(b, Caml_string.bytes_to_string(s));
}
function add_buffer(b, bs) {
return add_subbytes(b, bs[/* buffer */0], 0, bs[/* position */1]);
}
function add_channel(b, ic, len) {
if (len < 0 || len > Sys.max_string_length) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Buffer.add_channel"
];
}
if ((b[/* position */1] + len | 0) > b[/* length */2]) {
resize(b, len);
}
Pervasives.really_input(ic, b[/* buffer */0], b[/* position */1], len);
b[/* position */1] = b[/* position */1] + len | 0;
return /* () */0;
}
function output_buffer(oc, b) {
return Pervasives.output(oc, b[/* buffer */0], 0, b[/* position */1]);
}
function closing(param) {
if (param !== 40) {
if (param !== 123) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"buffer.ml",
115,
9
]
];
}
else {
return /* "}" */125;
}
}
else {
return /* ")" */41;
}
}
function advance_to_closing(opening, closing, k, s, start) {
var _k = k;
var _i = start;
var lim = s.length;
while(true) {
var i = _i;
var k$1 = _k;
if (i >= lim) {
throw Caml_builtin_exceptions.not_found;
}
else if (Caml_string.get(s, i) === opening) {
_i = i + 1 | 0;
_k = k$1 + 1 | 0;
continue ;
}
else if (Caml_string.get(s, i) === closing) {
if (k$1) {
_i = i + 1 | 0;
_k = k$1 - 1 | 0;
continue ;
}
else {
return i;
}
}
else {
_i = i + 1 | 0;
continue ;
}
};
}
function advance_to_non_alpha(s, start) {
var _i = start;
var lim = s.length;
while(true) {
var i = _i;
if (i >= lim) {
return lim;
}
else {
var match = Caml_string.get(s, i);
var exit = 0;
if (match >= 91) {
if (match >= 97) {
if (match >= 123) {
return i;
}
else {
exit = 1;
}
}
else if (match !== 95) {
return i;
}
else {
exit = 1;
}
}
else if (match >= 58) {
if (match >= 65) {
exit = 1;
}
else {
return i;
}
}
else if (match >= 48) {
exit = 1;
}
else {
return i;
}
if (exit === 1) {
_i = i + 1 | 0;
continue ;
}
}
};
}
function find_ident(s, start, lim) {
if (start >= lim) {
throw Caml_builtin_exceptions.not_found;
}
else {
var c = Caml_string.get(s, start);
var exit = 0;
if (c !== 40) {
if (c !== 123) {
var stop = advance_to_non_alpha(s, start + 1 | 0);
return /* tuple */[
$$String.sub(s, start, stop - start | 0),
stop
];
}
else {
exit = 1;
}
}
else {
exit = 1;
}
if (exit === 1) {
var new_start = start + 1 | 0;
var stop$1 = advance_to_closing(c, closing(c), 0, s, new_start);
return /* tuple */[
$$String.sub(s, new_start, (stop$1 - start | 0) - 1 | 0),
stop$1 + 1 | 0
];
}
}
}
function add_substitute(b, f, s) {
var lim = s.length;
var _previous = /* " " */32;
var _i = 0;
while(true) {
var i = _i;
var previous = _previous;
if (i < lim) {
var current = Caml_string.get(s, i);
if (current !== 36) {
if (previous === /* "\\" */92) {
add_char(b, /* "\\" */92);
add_char(b, current);
_i = i + 1 | 0;
_previous = /* " " */32;
continue ;
}
else if (current !== 92) {
add_char(b, current);
_i = i + 1 | 0;
_previous = current;
continue ;
}
else {
_i = i + 1 | 0;
_previous = current;
continue ;
}
}
else if (previous === /* "\\" */92) {
add_char(b, current);
_i = i + 1 | 0;
_previous = /* " " */32;
continue ;
}
else {
var j = i + 1 | 0;
var match = find_ident(s, j, lim);
add_string(b, Curry._1(f, match[0]));
_i = match[1];
_previous = /* " " */32;
continue ;
}
}
else if (previous === /* "\\" */92) {
return add_char(b, previous);
}
else {
return 0;
}
};
}
exports.create = create;
exports.contents = contents;
exports.to_bytes = to_bytes;
exports.sub = sub;
exports.blit = blit;
exports.nth = nth;
exports.length = length;
exports.clear = clear;
exports.reset = reset;
exports.add_char = add_char;
exports.add_string = add_string;
exports.add_bytes = add_bytes;
exports.add_substring = add_substring;
exports.add_subbytes = add_subbytes;
exports.add_substitute = add_substitute;
exports.add_buffer = add_buffer;
exports.add_channel = add_channel;
exports.output_buffer = output_buffer;
/* No side effect */
//////// end of buffer.js ////////
    return exports;
  };
_registry['bytes'] = function() {
    let exports = {};
//////// start of bytes.js ////////
'use strict';
var Char = require("./char");
var List = require("./list");
var Curry = require("./curry");
var Caml_obj = require("./caml_obj");
var Caml_int32 = require("./caml_int32");
var Pervasives = require("./pervasives");
var Caml_string = require("./caml_string");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function make(n, c) {
var s = Caml_string.caml_create_string(n);
Caml_string.caml_fill_string(s, 0, n, c);
return s;
}
function init(n, f) {
var s = Caml_string.caml_create_string(n);
for(var i = 0 ,i_finish = n - 1 | 0; i <= i_finish; ++i){
s[i] = Curry._1(f, i);
}
return s;
}
var empty = [];
function copy(s) {
var len = s.length;
var r = Caml_string.caml_create_string(len);
Caml_string.caml_blit_bytes(s, 0, r, 0, len);
return r;
}
function to_string(b) {
return Caml_string.bytes_to_string(copy(b));
}
function of_string(s) {
return copy(Caml_string.bytes_of_string(s));
}
function sub(s, ofs, len) {
if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"String.sub / Bytes.sub"
];
}
else {
var r = Caml_string.caml_create_string(len);
Caml_string.caml_blit_bytes(s, ofs, r, 0, len);
return r;
}
}
function sub_string(b, ofs, len) {
return Caml_string.bytes_to_string(sub(b, ofs, len));
}
function extend(s, left, right) {
var len = (s.length + left | 0) + right | 0;
var r = Caml_string.caml_create_string(len);
var match = left < 0 ? /* tuple */[
-left | 0,
0
] : /* tuple */[
0,
left
];
var dstoff = match[1];
var srcoff = match[0];
var cpylen = Pervasives.min(s.length - srcoff | 0, len - dstoff | 0);
if (cpylen > 0) {
Caml_string.caml_blit_bytes(s, srcoff, r, dstoff, cpylen);
}
return r;
}
function fill(s, ofs, len, c) {
if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"String.fill / Bytes.fill"
];
}
else {
return Caml_string.caml_fill_string(s, ofs, len, c);
}
}
function blit(s1, ofs1, s2, ofs2, len) {
if (len < 0 || ofs1 < 0 || ofs1 > (s1.length - len | 0) || ofs2 < 0 || ofs2 > (s2.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Bytes.blit"
];
}
else {
return Caml_string.caml_blit_bytes(s1, ofs1, s2, ofs2, len);
}
}
function blit_string(s1, ofs1, s2, ofs2, len) {
if (len < 0 || ofs1 < 0 || ofs1 > (s1.length - len | 0) || ofs2 < 0 || ofs2 > (s2.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"String.blit / Bytes.blit_string"
];
}
else {
return Caml_string.caml_blit_string(s1, ofs1, s2, ofs2, len);
}
}
function iter(f, a) {
for(var i = 0 ,i_finish = a.length - 1 | 0; i <= i_finish; ++i){
Curry._1(f, a[i]);
}
return /* () */0;
}
function iteri(f, a) {
for(var i = 0 ,i_finish = a.length - 1 | 0; i <= i_finish; ++i){
Curry._2(f, i, a[i]);
}
return /* () */0;
}
function concat(sep, l) {
if (l) {
var hd = l[0];
var num = [0];
var len = [0];
List.iter(function (s) {
num[0] = num[0] + 1 | 0;
len[0] = len[0] + s.length | 0;
return /* () */0;
}, l);
var r = Caml_string.caml_create_string(len[0] + Caml_int32.imul(sep.length, num[0] - 1 | 0) | 0);
Caml_string.caml_blit_bytes(hd, 0, r, 0, hd.length);
var pos = [hd.length];
List.iter(function (s) {
Caml_string.caml_blit_bytes(sep, 0, r, pos[0], sep.length);
pos[0] = pos[0] + sep.length | 0;
Caml_string.caml_blit_bytes(s, 0, r, pos[0], s.length);
pos[0] = pos[0] + s.length | 0;
return /* () */0;
}, l[1]);
return r;
}
else {
return empty;
}
}
function cat(a, b) {
return a.concat(b);
}
function is_space(param) {
var switcher = param - 9 | 0;
if (switcher > 4 || switcher < 0) {
if (switcher !== 23) {
return /* false */0;
}
else {
return /* true */1;
}
}
else if (switcher !== 2) {
return /* true */1;
}
else {
return /* false */0;
}
}
function trim(s) {
var len = s.length;
var i = 0;
while(i < len && is_space(s[i])) {
i = i + 1 | 0;
};
var j = len - 1 | 0;
while(j >= i && is_space(s[j])) {
j = j - 1 | 0;
};
if (j >= i) {
return sub(s, i, (j - i | 0) + 1 | 0);
}
else {
return empty;
}
}
function escaped(s) {
var n = 0;
for(var i = 0 ,i_finish = s.length - 1 | 0; i <= i_finish; ++i){
var match = s[i];
var $js;
if (match >= 32) {
var switcher = match - 34 | 0;
$js = switcher > 58 || switcher < 0 ? (
switcher >= 93 ? 4 : 1
) : (
switcher > 57 || switcher < 1 ? 2 : 1
);
}
else {
$js = match >= 11 ? (
match !== 13 ? 4 : 2
) : (
match >= 8 ? 2 : 4
);
}
n = n + $js | 0;
}
if (n === s.length) {
return copy(s);
}
else {
var s$prime = Caml_string.caml_create_string(n);
n = 0;
for(var i$1 = 0 ,i_finish$1 = s.length - 1 | 0; i$1 <= i_finish$1; ++i$1){
var c = s[i$1];
var exit = 0;
if (c >= 35) {
if (c !== 92) {
if (c >= 127) {
exit = 1;
}
else {
s$prime[n] = c;
}
}
else {
exit = 2;
}
}
else if (c >= 32) {
if (c >= 34) {
exit = 2;
}
else {
s$prime[n] = c;
}
}
else if (c >= 14) {
exit = 1;
}
else {
switch (c) {
case 8 :
s$prime[n] = /* "\\" */92;
n = n + 1 | 0;
s$prime[n] = /* "b" */98;
break;
case 9 :
s$prime[n] = /* "\\" */92;
n = n + 1 | 0;
s$prime[n] = /* "t" */116;
break;
case 10 :
s$prime[n] = /* "\\" */92;
n = n + 1 | 0;
s$prime[n] = /* "n" */110;
break;
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 11 :
case 12 :
exit = 1;
break;
case 13 :
s$prime[n] = /* "\\" */92;
n = n + 1 | 0;
s$prime[n] = /* "r" */114;
break;
}
}
switch (exit) {
case 1 :
s$prime[n] = /* "\\" */92;
n = n + 1 | 0;
s$prime[n] = 48 + (c / 100 | 0) | 0;
n = n + 1 | 0;
s$prime[n] = 48 + (c / 10 | 0) % 10 | 0;
n = n + 1 | 0;
s$prime[n] = 48 + c % 10 | 0;
break;
case 2 :
s$prime[n] = /* "\\" */92;
n = n + 1 | 0;
s$prime[n] = c;
break;
}
n = n + 1 | 0;
}
return s$prime;
}
}
function map(f, s) {
var l = s.length;
if (l) {
var r = Caml_string.caml_create_string(l);
for(var i = 0 ,i_finish = l - 1 | 0; i <= i_finish; ++i){
r[i] = Curry._1(f, s[i]);
}
return r;
}
else {
return s;
}
}
function mapi(f, s) {
var l = s.length;
if (l) {
var r = Caml_string.caml_create_string(l);
for(var i = 0 ,i_finish = l - 1 | 0; i <= i_finish; ++i){
r[i] = Curry._2(f, i, s[i]);
}
return r;
}
else {
return s;
}
}
function uppercase(s) {
return map(Char.uppercase, s);
}
function lowercase(s) {
return map(Char.lowercase, s);
}
function apply1(f, s) {
if (s.length) {
var r = copy(s);
r[0] = Curry._1(f, s[0]);
return r;
}
else {
return s;
}
}
function capitalize(s) {
return apply1(Char.uppercase, s);
}
function uncapitalize(s) {
return apply1(Char.lowercase, s);
}
function index_rec(s, lim, _i, c) {
while(true) {
var i = _i;
if (i >= lim) {
throw Caml_builtin_exceptions.not_found;
}
else if (s[i] === c) {
return i;
}
else {
_i = i + 1 | 0;
continue ;
}
};
}
function index(s, c) {
return index_rec(s, s.length, 0, c);
}
function index_from(s, i, c) {
var l = s.length;
if (i < 0 || i > l) {
throw [
Caml_builtin_exceptions.invalid_argument,
"String.index_from / Bytes.index_from"
];
}
else {
return index_rec(s, l, i, c);
}
}
function rindex_rec(s, _i, c) {
while(true) {
var i = _i;
if (i < 0) {
throw Caml_builtin_exceptions.not_found;
}
else if (s[i] === c) {
return i;
}
else {
_i = i - 1 | 0;
continue ;
}
};
}
function rindex(s, c) {
return rindex_rec(s, s.length - 1 | 0, c);
}
function rindex_from(s, i, c) {
if (i < -1 || i >= s.length) {
throw [
Caml_builtin_exceptions.invalid_argument,
"String.rindex_from / Bytes.rindex_from"
];
}
else {
return rindex_rec(s, i, c);
}
}
function contains_from(s, i, c) {
var l = s.length;
if (i < 0 || i > l) {
throw [
Caml_builtin_exceptions.invalid_argument,
"String.contains_from / Bytes.contains_from"
];
}
else {
try {
index_rec(s, l, i, c);
return /* true */1;
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
return /* false */0;
}
else {
throw exn;
}
}
}
}
function contains(s, c) {
return contains_from(s, 0, c);
}
function rcontains_from(s, i, c) {
if (i < 0 || i >= s.length) {
throw [
Caml_builtin_exceptions.invalid_argument,
"String.rcontains_from / Bytes.rcontains_from"
];
}
else {
try {
rindex_rec(s, i, c);
return /* true */1;
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
return /* false */0;
}
else {
throw exn;
}
}
}
}
var compare = Caml_obj.caml_compare;
var unsafe_to_string = Caml_string.bytes_to_string;
var unsafe_of_string = Caml_string.bytes_of_string;
exports.make = make;
exports.init = init;
exports.empty = empty;
exports.copy = copy;
exports.of_string = of_string;
exports.to_string = to_string;
exports.sub = sub;
exports.sub_string = sub_string;
exports.extend = extend;
exports.fill = fill;
exports.blit = blit;
exports.blit_string = blit_string;
exports.concat = concat;
exports.cat = cat;
exports.iter = iter;
exports.iteri = iteri;
exports.map = map;
exports.mapi = mapi;
exports.trim = trim;
exports.escaped = escaped;
exports.index = index;
exports.rindex = rindex;
exports.index_from = index_from;
exports.rindex_from = rindex_from;
exports.contains = contains;
exports.contains_from = contains_from;
exports.rcontains_from = rcontains_from;
exports.uppercase = uppercase;
exports.lowercase = lowercase;
exports.capitalize = capitalize;
exports.uncapitalize = uncapitalize;
exports.compare = compare;
exports.unsafe_to_string = unsafe_to_string;
exports.unsafe_of_string = unsafe_of_string;
/* No side effect */
//////// end of bytes.js ////////
    return exports;
  };
_registry['caml_array'] = function() {
    let exports = {};
//////// start of caml_array.js ////////
'use strict';
function caml_array_sub(x, offset, len) {
var result = new Array(len);
var j = 0;
var i = offset;
while(j < len) {
result[j] = x[i];
j = j + 1 | 0;
i = i + 1 | 0;
};
return result;
}
function len(_acc, _l) {
while(true) {
var l = _l;
var acc = _acc;
if (l) {
_l = l[1];
_acc = l[0].length + acc | 0;
continue ;
}
else {
return acc;
}
};
}
function fill(arr, _i, _l) {
while(true) {
var l = _l;
var i = _i;
if (l) {
var x = l[0];
var l$1 = x.length;
var k = i;
var j = 0;
while(j < l$1) {
arr[k] = x[j];
k = k + 1 | 0;
j = j + 1 | 0;
};
_l = l[1];
_i = k;
continue ;
}
else {
return /* () */0;
}
};
}
function caml_array_concat(l) {
var v = len(0, l);
var result = new Array(v);
fill(result, 0, l);
return result;
}
function caml_make_vect(len, init) {
var b = new Array(len);
for(var i = 0 ,i_finish = len - 1 | 0; i <= i_finish; ++i){
b[i] = init;
}
return b;
}
function caml_array_blit(a1, i1, a2, i2, len) {
if (i2 <= i1) {
for(var j = 0 ,j_finish = len - 1 | 0; j <= j_finish; ++j){
a2[j + i2 | 0] = a1[j + i1 | 0];
}
return /* () */0;
}
else {
for(var j$1 = len - 1 | 0; j$1 >= 0; --j$1){
a2[j$1 + i2 | 0] = a1[j$1 + i1 | 0];
}
return /* () */0;
}
}
exports.caml_array_sub = caml_array_sub;
exports.caml_array_concat = caml_array_concat;
exports.caml_make_vect = caml_make_vect;
exports.caml_array_blit = caml_array_blit;
/* No side effect */
//////// end of caml_array.js ////////
    return exports;
  };
_registry['caml_builtin_exceptions'] = function() {
    let exports = {};
//////// start of caml_builtin_exceptions.js ////////
'use strict';
var out_of_memory = /* tuple */[
"Out_of_memory",
0
];
var sys_error = /* tuple */[
"Sys_error",
-1
];
var failure = /* tuple */[
"Failure",
-2
];
var invalid_argument = /* tuple */[
"Invalid_argument",
-3
];
var end_of_file = /* tuple */[
"End_of_file",
-4
];
var division_by_zero = /* tuple */[
"Division_by_zero",
-5
];
var not_found = /* tuple */[
"Not_found",
-6
];
var match_failure = /* tuple */[
"Match_failure",
-7
];
var stack_overflow = /* tuple */[
"Stack_overflow",
-8
];
var sys_blocked_io = /* tuple */[
"Sys_blocked_io",
-9
];
var assert_failure = /* tuple */[
"Assert_failure",
-10
];
var undefined_recursive_module = /* tuple */[
"Undefined_recursive_module",
-11
];
exports.out_of_memory = out_of_memory;
exports.sys_error = sys_error;
exports.failure = failure;
exports.invalid_argument = invalid_argument;
exports.end_of_file = end_of_file;
exports.division_by_zero = division_by_zero;
exports.not_found = not_found;
exports.match_failure = match_failure;
exports.stack_overflow = stack_overflow;
exports.sys_blocked_io = sys_blocked_io;
exports.assert_failure = assert_failure;
exports.undefined_recursive_module = undefined_recursive_module;
/* No side effect */
//////// end of caml_builtin_exceptions.js ////////
    return exports;
  };
_registry['caml_bytes'] = function() {
    let exports = {};
//////// start of caml_bytes.js ////////
'use strict';
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function get(s, i) {
if (i < 0 || i >= s.length) {
throw [
Caml_builtin_exceptions.invalid_argument,
"index out of bounds"
];
}
else {
return s[i];
}
}
exports.get = get;
/* No side effect */
//////// end of caml_bytes.js ////////
    return exports;
  };
_registry['caml_exceptions'] = function() {
    let exports = {};
//////// start of caml_exceptions.js ////////
'use strict';
var id = [0];
function caml_set_oo_id(b) {
b[1] = id[0];
id[0] += 1;
return b;
}
function get_id() {
id[0] += 1;
return id[0];
}
function create(str) {
var v_001 = get_id(/* () */0);
var v = /* tuple */[
str,
v_001
];
v.tag = 248;
return v;
}
exports.caml_set_oo_id = caml_set_oo_id;
exports.get_id = get_id;
exports.create = create;
/* No side effect */
//////// end of caml_exceptions.js ////////
    return exports;
  };
_registry['caml_float'] = function() {
    let exports = {};
//////// start of caml_float.js ////////
'use strict';
function caml_int32_float_of_bits(x) {
var int32 = new Int32Array(/* array */[x]);
var float32 = new Float32Array(int32.buffer);
return float32[0];
}
function caml_int32_bits_of_float(x) {
var float32 = new Float32Array(/* float array */[x]);
return new Int32Array(float32.buffer)[0];
}
function caml_classify_float(x) {
if (isFinite(x)) {
if (Math.abs(x) >= 2.2250738585072014e-308) {
return /* FP_normal */0;
}
else if (x !== 0) {
return /* FP_subnormal */1;
}
else {
return /* FP_zero */2;
}
}
else if (isNaN(x)) {
return /* FP_nan */4;
}
else {
return /* FP_infinite */3;
}
}
function caml_modf_float(x) {
if (isFinite(x)) {
var neg = +(1 / x < 0);
var x$1 = Math.abs(x);
var i = Math.floor(x$1);
var f = x$1 - i;
if (neg) {
return /* tuple */[
-f,
-i
];
}
else {
return /* tuple */[
f,
i
];
}
}
else if (isNaN(x)) {
return /* tuple */[
NaN,
NaN
];
}
else {
return /* tuple */[
1 / x,
x
];
}
}
var caml_ldexp_float = ( function (x,exp) {
exp |= 0;
if (exp > 1023) {
exp -= 1023;
x *= Math.pow(2, 1023);
if (exp > 1023) { // in case x is subnormal
exp -= 1023;
x *= Math.pow(2, 1023);
}
}
if (exp < -1023) {
exp += 1023;
x *= Math.pow(2, -1023);
}
x *= Math.pow(2, exp);
return x;
}
);
var caml_frexp_float = (function (x) {
if ((x == 0) || !isFinite(x)) return [ x, 0];
var neg = x < 0;
if (neg) x = - x;
var exp = Math.floor(Math.LOG2E*Math.log(x)) + 1;
x *= Math.pow(2,-exp);
if (x < 0.5) { x *= 2; exp -= 1; }
if (neg) x = - x;
return [x, exp];
}
);
function caml_float_compare(x, y) {
if (x === y) {
return 0;
}
else if (x < y) {
return -1;
}
else if (x > y || x === x) {
return 1;
}
else if (y === y) {
return -1;
}
else {
return 0;
}
}
function caml_copysign_float(x, y) {
var x$1 = Math.abs(x);
var y$1 = y === 0 ? 1 / y : y;
if (y$1 < 0) {
return -x$1;
}
else {
return x$1;
}
}
function caml_expm1_float(x) {
var y = Math.exp(x);
var z = y - 1;
if (Math.abs(x) > 1) {
return z;
}
else if (z === 0) {
return x;
}
else {
return x * z / Math.log(y);
}
}
var caml_hypot_float = ( function (x, y) {
var x0 = Math.abs(x), y0 = Math.abs(y);
var a = Math.max(x0, y0), b = Math.min(x0,y0) / (a?a:1);
return a * Math.sqrt(1 + b*b);
}
);
var caml_log10_float = ( function (x) {
return Math.LOG10E * Math.log(x); }
);
exports.caml_int32_float_of_bits = caml_int32_float_of_bits;
exports.caml_int32_bits_of_float = caml_int32_bits_of_float;
exports.caml_classify_float = caml_classify_float;
exports.caml_modf_float = caml_modf_float;
exports.caml_ldexp_float = caml_ldexp_float;
exports.caml_frexp_float = caml_frexp_float;
exports.caml_float_compare = caml_float_compare;
exports.caml_copysign_float = caml_copysign_float;
exports.caml_expm1_float = caml_expm1_float;
exports.caml_hypot_float = caml_hypot_float;
exports.caml_log10_float = caml_log10_float;
/* caml_ldexp_float Not a pure module */
//////// end of caml_float.js ////////
    return exports;
  };
_registry['caml_format'] = function() {
    let exports = {};
//////// start of caml_format.js ////////
'use strict';
var Curry = require("./curry");
var Caml_int32 = require("./caml_int32");
var Caml_int64 = require("./caml_int64");
var Caml_utils = require("./caml_utils");
var Caml_string = require("./caml_string");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function caml_failwith(s) {
throw [
Caml_builtin_exceptions.failure,
s
];
}
function parse_digit(c) {
if (c >= 65) {
if (c >= 97) {
if (c >= 123) {
return -1;
}
else {
return c - 87 | 0;
}
}
else if (c >= 91) {
return -1;
}
else {
return c - 55 | 0;
}
}
else if (c > 57 || c < 48) {
return -1;
}
else {
return c - /* "0" */48 | 0;
}
}
function int_of_string_base(param) {
switch (param) {
case 0 :
return 8;
case 1 :
return 16;
case 2 :
return 10;
case 3 :
return 2;
}
}
function parse_sign_and_base(s) {
var sign = 1;
var base = /* Dec */2;
var i = 0;
if (s[i] === "-") {
sign = -1;
i = i + 1 | 0;
}
var match = s.charCodeAt(i);
var match$1 = s.charCodeAt(i + 1 | 0);
if (match === 48) {
if (match$1 >= 89) {
if (match$1 !== 98) {
if (match$1 !== 111) {
if (match$1 === 120) {
base = /* Hex */1;
i = i + 2 | 0;
}
}
else {
base = /* Oct */0;
i = i + 2 | 0;
}
}
else {
base = /* Bin */3;
i = i + 2 | 0;
}
}
else if (match$1 !== 66) {
if (match$1 !== 79) {
if (match$1 >= 88) {
base = /* Hex */1;
i = i + 2 | 0;
}
}
else {
base = /* Oct */0;
i = i + 2 | 0;
}
}
else {
base = /* Bin */3;
i = i + 2 | 0;
}
}
return /* tuple */[
i,
sign,
base
];
}
function caml_int_of_string(s) {
var match = parse_sign_and_base(s);
var i = match[0];
var base = int_of_string_base(match[2]);
var threshold = 4294967295;
var len = s.length;
var c = i < len ? s.charCodeAt(i) : /* "\000" */0;
var d = parse_digit(c);
if (d < 0 || d >= base) {
throw [
Caml_builtin_exceptions.failure,
"int_of_string"
];
}
var aux = function (_acc, _k) {
while(true) {
var k = _k;
var acc = _acc;
if (k === len) {
return acc;
}
else {
var a = s.charCodeAt(k);
if (a === /* "_" */95) {
_k = k + 1 | 0;
continue ;
}
else {
var v = parse_digit(a);
if (v < 0 || v >= base) {
throw [
Caml_builtin_exceptions.failure,
"int_of_string"
];
}
else {
var acc$1 = base * acc + v;
if (acc$1 > threshold) {
throw [
Caml_builtin_exceptions.failure,
"int_of_string"
];
}
else {
_k = k + 1 | 0;
_acc = acc$1;
continue ;
}
}
}
}
};
};
var res = match[1] * aux(d, i + 1 | 0);
var or_res = res | 0;
if (base === 10 && res !== or_res) {
throw [
Caml_builtin_exceptions.failure,
"int_of_string"
];
}
return or_res;
}
function caml_int64_of_string(s) {
var match = parse_sign_and_base(s);
var hbase = match[2];
var i = match[0];
var base = Caml_int64.of_int32(int_of_string_base(hbase));
var sign = Caml_int64.of_int32(match[1]);
var threshold;
switch (hbase) {
case 0 :
threshold = /* int64 */[
/* hi */536870911,
/* lo */4294967295
];
break;
case 1 :
threshold = /* int64 */[
/* hi */268435455,
/* lo */4294967295
];
break;
case 2 :
threshold = /* int64 */[
/* hi */429496729,
/* lo */2576980377
];
break;
case 3 :
threshold = /* int64 */[
/* hi */2147483647,
/* lo */4294967295
];
break;
}
var len = s.length;
var c = i < len ? s.charCodeAt(i) : /* "\000" */0;
var d = Caml_int64.of_int32(parse_digit(c));
if (Caml_int64.lt(d, /* int64 */[
/* hi */0,
/* lo */0
]) || Caml_int64.ge(d, base)) {
throw [
Caml_builtin_exceptions.failure,
"int64_of_string"
];
}
var aux = function (_acc, _k) {
while(true) {
var k = _k;
var acc = _acc;
if (k === len) {
return acc;
}
else {
var a = s.charCodeAt(k);
if (a === /* "_" */95) {
_k = k + 1 | 0;
continue ;
}
else {
var v = Caml_int64.of_int32(parse_digit(a));
if (Caml_int64.lt(v, /* int64 */[
/* hi */0,
/* lo */0
]) || Caml_int64.ge(v, base)) {
throw [
Caml_builtin_exceptions.failure,
"int64_of_string"
];
}
else {
var acc$1 = Caml_int64.add(Caml_int64.mul(base, acc), v);
if (Caml_int64.gt(acc$1, threshold)) {
throw [
Caml_builtin_exceptions.failure,
"int64_of_string"
];
}
else {
_k = k + 1 | 0;
_acc = acc$1;
continue ;
}
}
}
}
};
};
var res = Caml_int64.mul(sign, aux(d, i + 1 | 0));
var or_res_000 = /* hi */res[0] | /* hi */0;
var or_res_001 = /* lo */(res[1] >>> 0);
var or_res = /* int64 */[
or_res_000,
or_res_001
];
if (Caml_int64.eq(base, /* int64 */[
/* hi */0,
/* lo */10
]) && Caml_int64.neq(res, or_res)) {
throw [
Caml_builtin_exceptions.failure,
"int64_of_string"
];
}
return or_res;
}
function int_of_base(param) {
switch (param) {
case 0 :
return 8;
case 1 :
return 16;
case 2 :
return 10;
}
}
function lowercase(c) {
if (c >= /* "A" */65 && c <= /* "Z" */90 || c >= /* "\192" */192 && c <= /* "\214" */214 || c >= /* "\216" */216 && c <= /* "\222" */222) {
return c + 32 | 0;
}
else {
return c;
}
}
function parse_format(fmt) {
var len = fmt.length;
if (len > 31) {
throw [
Caml_builtin_exceptions.invalid_argument,
"format_int: format too long"
];
}
var f = /* record */[
/* justify */"+",
/* signstyle */"-",
/* filter */" ",
/* alternate : false */0,
/* base : Dec */2,
/* signedconv : false */0,
/* width */0,
/* uppercase : false */0,
/* sign */1,
/* prec */-1,
/* conv */"f"
];
var _i = 0;
while(true) {
var i = _i;
if (i >= len) {
return f;
}
else {
var c = fmt.charCodeAt(i);
var exit = 0;
if (c >= 69) {
if (c >= 88) {
if (c >= 121) {
exit = 1;
}
else {
switch (c - 88 | 0) {
case 0 :
f[/* base */4] = /* Hex */1;
f[/* uppercase */7] = /* true */1;
_i = i + 1 | 0;
continue ;
case 13 :
case 14 :
case 15 :
exit = 5;
break;
case 12 :
case 17 :
exit = 4;
break;
case 23 :
f[/* base */4] = /* Oct */0;
_i = i + 1 | 0;
continue ;
case 29 :
f[/* base */4] = /* Dec */2;
_i = i + 1 | 0;
continue ;
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 11 :
case 16 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 24 :
case 25 :
case 26 :
case 27 :
case 28 :
case 30 :
case 31 :
exit = 1;
break;
case 32 :
f[/* base */4] = /* Hex */1;
_i = i + 1 | 0;
continue ;
}
}
}
else if (c >= 72) {
exit = 1;
}
else {
f[/* signedconv */5] = /* true */1;
f[/* uppercase */7] = /* true */1;
f[/* conv */10] = String.fromCharCode(lowercase(c));
_i = i + 1 | 0;
continue ;
}
}
else {
var switcher = c - 32 | 0;
if (switcher > 25 || switcher < 0) {
exit = 1;
}
else {
switch (switcher) {
case 3 :
f[/* alternate */3] = /* true */1;
_i = i + 1 | 0;
continue ;
case 0 :
case 11 :
exit = 2;
break;
case 13 :
f[/* justify */0] = "-";
_i = i + 1 | 0;
continue ;
case 14 :
f[/* prec */9] = 0;
var j = i + 1 | 0;
while((function(j){
return function () {
var w = fmt.charCodeAt(j) - /* "0" */48 | 0;
return +(w >= 0 && w <= 9);
}
}(j))()) {
f[/* prec */9] = (Caml_int32.imul(f[/* prec */9], 10) + fmt.charCodeAt(j) | 0) - /* "0" */48 | 0;
j = j + 1 | 0;
};
_i = j;
continue ;
case 1 :
case 2 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 12 :
case 15 :
exit = 1;
break;
case 16 :
f[/* filter */2] = "0";
_i = i + 1 | 0;
continue ;
case 17 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 23 :
case 24 :
case 25 :
exit = 3;
break;
}
}
}
switch (exit) {
case 1 :
_i = i + 1 | 0;
continue ;
case 2 :
f[/* signstyle */1] = String.fromCharCode(c);
_i = i + 1 | 0;
continue ;
case 3 :
f[/* width */6] = 0;
var j$1 = i;
while((function(j$1){
return function () {
var w = fmt.charCodeAt(j$1) - /* "0" */48 | 0;
return +(w >= 0 && w <= 9);
}
}(j$1))()) {
f[/* width */6] = (Caml_int32.imul(f[/* width */6], 10) + fmt.charCodeAt(j$1) | 0) - /* "0" */48 | 0;
j$1 = j$1 + 1 | 0;
};
_i = j$1;
continue ;
case 4 :
f[/* signedconv */5] = /* true */1;
f[/* base */4] = /* Dec */2;
_i = i + 1 | 0;
continue ;
case 5 :
f[/* signedconv */5] = /* true */1;
f[/* conv */10] = String.fromCharCode(c);
_i = i + 1 | 0;
continue ;
}
}
};
}
function finish_formatting(param, rawbuffer) {
var justify = param[/* justify */0];
var signstyle = param[/* signstyle */1];
var filter = param[/* filter */2];
var alternate = param[/* alternate */3];
var base = param[/* base */4];
var signedconv = param[/* signedconv */5];
var width = param[/* width */6];
var uppercase = param[/* uppercase */7];
var sign = param[/* sign */8];
var len = rawbuffer.length;
if (signedconv && (sign < 0 || signstyle !== "-")) {
len = len + 1 | 0;
}
if (alternate) {
if (base) {
if (base === /* Hex */1) {
len = len + 2 | 0;
}
}
else {
len = len + 1 | 0;
}
}
var buffer = "";
if (justify === "+" && filter === " ") {
for(var i = len ,i_finish = width - 1 | 0; i <= i_finish; ++i){
buffer = buffer + filter;
}
}
if (signedconv) {
if (sign < 0) {
buffer = buffer + "-";
}
else if (signstyle !== "-") {
buffer = buffer + signstyle;
}
}
if (alternate && base === /* Oct */0) {
buffer = buffer + "0";
}
if (alternate && base === /* Hex */1) {
buffer = buffer + "0x";
}
if (justify === "+" && filter === "0") {
for(var i$1 = len ,i_finish$1 = width - 1 | 0; i$1 <= i_finish$1; ++i$1){
buffer = buffer + filter;
}
}
buffer = uppercase ? buffer + rawbuffer.toUpperCase() : buffer + rawbuffer;
if (justify === "-") {
for(var i$2 = len ,i_finish$2 = width - 1 | 0; i$2 <= i_finish$2; ++i$2){
buffer = buffer + " ";
}
}
return buffer;
}
function caml_format_int(fmt, i) {
if (fmt === "%d") {
return "" + i;
}
else {
var f = parse_format(fmt);
var f$1 = f;
var i$1 = i;
var i$2 = i$1 < 0 ? (
f$1[/* signedconv */5] ? (f$1[/* sign */8] = -1, -i$1) : (i$1 >>> 0)
) : i$1;
var s = i$2.toString(int_of_base(f$1[/* base */4]));
if (f$1[/* prec */9] >= 0) {
f$1[/* filter */2] = " ";
var n = f$1[/* prec */9] - s.length | 0;
if (n > 0) {
s = Caml_utils.repeat(n, "0") + s;
}
}
return finish_formatting(f$1, s);
}
}
function caml_int64_format(fmt, x) {
var f = parse_format(fmt);
var x$1 = f[/* signedconv */5] && Caml_int64.lt(x, /* int64 */[
/* hi */0,
/* lo */0
]) ? (f[/* sign */8] = -1, Caml_int64.neg(x)) : x;
var s = "";
var match = f[/* base */4];
switch (match) {
case 0 :
var wbase = /* int64 */[
/* hi */0,
/* lo */8
];
var cvtbl = "01234567";
if (Caml_int64.lt(x$1, /* int64 */[
/* hi */0,
/* lo */0
])) {
var y = Caml_int64.discard_sign(x$1);
var match$1 = Caml_int64.div_mod(y, wbase);
var quotient = Caml_int64.add(/* int64 */[
/* hi */268435456,
/* lo */0
], match$1[0]);
var modulus = match$1[1];
s = Caml_string.js_string_of_char(cvtbl.charCodeAt(modulus[1] | 0)) + s;
while(Caml_int64.neq(quotient, /* int64 */[
/* hi */0,
/* lo */0
])) {
var match$2 = Caml_int64.div_mod(quotient, wbase);
quotient = match$2[0];
modulus = match$2[1];
s = Caml_string.js_string_of_char(cvtbl.charCodeAt(modulus[1] | 0)) + s;
};
}
else {
var match$3 = Caml_int64.div_mod(x$1, wbase);
var quotient$1 = match$3[0];
var modulus$1 = match$3[1];
s = Caml_string.js_string_of_char(cvtbl.charCodeAt(modulus$1[1] | 0)) + s;
while(Caml_int64.neq(quotient$1, /* int64 */[
/* hi */0,
/* lo */0
])) {
var match$4 = Caml_int64.div_mod(quotient$1, wbase);
quotient$1 = match$4[0];
modulus$1 = match$4[1];
s = Caml_string.js_string_of_char(cvtbl.charCodeAt(modulus$1[1] | 0)) + s;
};
}
break;
case 1 :
s = Caml_int64.to_hex(x$1) + s;
break;
case 2 :
var wbase$1 = /* int64 */[
/* hi */0,
/* lo */10
];
var cvtbl$1 = "0123456789";
if (Caml_int64.lt(x$1, /* int64 */[
/* hi */0,
/* lo */0
])) {
var y$1 = Caml_int64.discard_sign(x$1);
var match$5 = Caml_int64.div_mod(y$1, wbase$1);
var match$6 = Caml_int64.div_mod(Caml_int64.add(/* int64 */[
/* hi */0,
/* lo */8
], match$5[1]), wbase$1);
var quotient$2 = Caml_int64.add(Caml_int64.add(/* int64 */[
/* hi */214748364,
/* lo */3435973836
], match$5[0]), match$6[0]);
var modulus$2 = match$6[1];
s = Caml_string.js_string_of_char(cvtbl$1.charCodeAt(modulus$2[1] | 0)) + s;
while(Caml_int64.neq(quotient$2, /* int64 */[
/* hi */0,
/* lo */0
])) {
var match$7 = Caml_int64.div_mod(quotient$2, wbase$1);
quotient$2 = match$7[0];
modulus$2 = match$7[1];
s = Caml_string.js_string_of_char(cvtbl$1.charCodeAt(modulus$2[1] | 0)) + s;
};
}
else {
var match$8 = Caml_int64.div_mod(x$1, wbase$1);
var quotient$3 = match$8[0];
var modulus$3 = match$8[1];
s = Caml_string.js_string_of_char(cvtbl$1.charCodeAt(modulus$3[1] | 0)) + s;
while(Caml_int64.neq(quotient$3, /* int64 */[
/* hi */0,
/* lo */0
])) {
var match$9 = Caml_int64.div_mod(quotient$3, wbase$1);
quotient$3 = match$9[0];
modulus$3 = match$9[1];
s = Caml_string.js_string_of_char(cvtbl$1.charCodeAt(modulus$3[1] | 0)) + s;
};
}
break;
}
if (f[/* prec */9] >= 0) {
f[/* filter */2] = " ";
var n = f[/* prec */9] - s.length | 0;
if (n > 0) {
s = Caml_utils.repeat(n, "0") + s;
}
}
return finish_formatting(f, s);
}
function caml_format_float(fmt, x) {
var f = parse_format(fmt);
var prec = f[/* prec */9] < 0 ? 6 : f[/* prec */9];
var x$1 = x < 0 ? (f[/* sign */8] = -1, -x) : x;
var s = "";
if (isNaN(x$1)) {
s = "nan";
f[/* filter */2] = " ";
}
else if (isFinite(x$1)) {
var match = f[/* conv */10];
switch (match) {
case "e" :
s = x$1.toExponential(prec);
var i = s.length;
if (s[i - 3 | 0] === "e") {
s = s.slice(0, i - 1 | 0) + ("0" + s.slice(i - 1 | 0));
}
break;
case "f" :
s = x$1.toFixed(prec);
break;
case "g" :
var prec$1 = prec !== 0 ? prec : 1;
s = x$1.toExponential(prec$1 - 1 | 0);
var j = s.indexOf("e");
var exp = +s.slice(j + 1 | 0);
if (exp < -4 || x$1 >= 1e21 || x$1.toFixed(0).length > prec$1) {
var i$1 = j - 1 | 0;
while(s[i$1] === "0") {
i$1 = i$1 - 1 | 0;
};
if (s[i$1] === ".") {
i$1 = i$1 - 1 | 0;
}
s = s.slice(0, i$1 + 1 | 0) + s.slice(j);
var i$2 = s.length;
if (s[i$2 - 3 | 0] === "e") {
s = s.slice(0, i$2 - 1 | 0) + ("0" + s.slice(i$2 - 1 | 0));
}
}
else {
var p = prec$1;
if (exp < 0) {
p = p - (exp + 1 | 0) | 0;
s = x$1.toFixed(p);
}
else {
while(function () {
s = x$1.toFixed(p);
return +(s.length > (prec$1 + 1 | 0));
}()) {
p = p - 1 | 0;
};
}
if (p !== 0) {
var k = s.length - 1 | 0;
while(s[k] === "0") {
k = k - 1 | 0;
};
if (s[k] === ".") {
k = k - 1 | 0;
}
s = s.slice(0, k + 1 | 0);
}
}
break;
default:
}
}
else {
s = "inf";
f[/* filter */2] = " ";
}
return finish_formatting(f, s);
}
var float_of_string = (
function (s, caml_failwith) {
var res = +s;
if ((s.length > 0) && (res === res))
return res;
s = s.replace(/_/g, "");
res = +s;
if (((s.length > 0) && (res === res)) || /^[+-]?nan$/i.test(s)) {
return res;
}
;
if (/^ *0x[0-9a-f_]+p[+-]?[0-9_]+/i.test(s)) {
var pidx = s.indexOf('p');
pidx = (pidx == -1) ? s.indexOf('P') : pidx;
var exp = +s.substring(pidx + 1);
res = +s.substring(0, pidx);
return res * Math.pow(2, exp);
}
if (/^\+?inf(inity)?$/i.test(s))
return Infinity;
if (/^-inf(inity)?$/i.test(s))
return -Infinity;
caml_failwith("float_of_string");
}
);
function caml_float_of_string(s) {
return Curry._2(float_of_string, s, caml_failwith);
}
var caml_nativeint_format = caml_format_int;
var caml_int32_format = caml_format_int;
var caml_int32_of_string = caml_int_of_string;
var caml_nativeint_of_string = caml_int_of_string;
exports.caml_format_float = caml_format_float;
exports.caml_format_int = caml_format_int;
exports.caml_nativeint_format = caml_nativeint_format;
exports.caml_int32_format = caml_int32_format;
exports.caml_float_of_string = caml_float_of_string;
exports.caml_int64_format = caml_int64_format;
exports.caml_int_of_string = caml_int_of_string;
exports.caml_int32_of_string = caml_int32_of_string;
exports.caml_int64_of_string = caml_int64_of_string;
exports.caml_nativeint_of_string = caml_nativeint_of_string;
/* float_of_string Not a pure module */
//////// end of caml_format.js ////////
    return exports;
  };
_registry['caml_int32'] = function() {
    let exports = {};
//////// start of caml_int32.js ////////
'use strict';
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function div(x, y) {
if (y === 0) {
throw Caml_builtin_exceptions.division_by_zero;
}
else {
return x / y | 0;
}
}
function mod_(x, y) {
if (y === 0) {
throw Caml_builtin_exceptions.division_by_zero;
}
else {
return x % y;
}
}
function caml_bswap16(x) {
return ((x & 255) << 8) | ((x & 65280) >>> 8);
}
function caml_int32_bswap(x) {
return ((x & 255) << 24) | ((x & 65280) << 8) | ((x & 16711680) >>> 8) | ((x & 4278190080) >>> 24);
}
var imul = ( Math.imul || function (x,y) {
y |= 0; return ((((x >> 16) * y) << 16) + (x & 0xffff) * y)|0;
}
);
var caml_nativeint_bswap = caml_int32_bswap;
exports.div = div;
exports.mod_ = mod_;
exports.caml_bswap16 = caml_bswap16;
exports.caml_int32_bswap = caml_int32_bswap;
exports.caml_nativeint_bswap = caml_nativeint_bswap;
exports.imul = imul;
/* imul Not a pure module */
//////// end of caml_int32.js ////////
    return exports;
  };
_registry['caml_int64'] = function() {
    let exports = {};
//////// start of caml_int64.js ////////
'use strict';
var Caml_obj = require("./caml_obj");
var Caml_int32 = require("./caml_int32");
var Caml_utils = require("./caml_utils");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
var min_int = /* record */[
/* hi */-2147483648,
/* lo */0
];
var max_int = /* record */[
/* hi */134217727,
/* lo */1
];
var one = /* record */[
/* hi */0,
/* lo */1
];
var zero = /* record */[
/* hi */0,
/* lo */0
];
var neg_one = /* record */[
/* hi */-1,
/* lo */4294967295
];
function neg_signed(x) {
return +((x & 2147483648) !== 0);
}
function add(param, param$1) {
var other_low_ = param$1[/* lo */1];
var this_low_ = param[/* lo */1];
var lo = this_low_ + other_low_ & 4294967295;
var overflow = neg_signed(this_low_) && (neg_signed(other_low_) || !neg_signed(lo)) || neg_signed(other_low_) && !neg_signed(lo) ? 1 : 0;
var hi = param[/* hi */0] + param$1[/* hi */0] + overflow & 4294967295;
return /* record */[
/* hi */hi,
/* lo */(lo >>> 0)
];
}
function not(param) {
var hi = param[/* hi */0] ^ -1;
var lo = param[/* lo */1] ^ -1;
return /* record */[
/* hi */hi,
/* lo */(lo >>> 0)
];
}
function eq(x, y) {
if (x[/* hi */0] === y[/* hi */0]) {
return +(x[/* lo */1] === y[/* lo */1]);
}
else {
return /* false */0;
}
}
function neg(x) {
if (eq(x, min_int)) {
return min_int;
}
else {
return add(not(x), one);
}
}
function sub(x, y) {
return add(x, neg(y));
}
function lsl_(x, numBits) {
var lo = x[/* lo */1];
if (numBits) {
if (numBits >= 32) {
return /* record */[
/* hi */(lo << (numBits - 32 | 0)),
/* lo */0
];
}
else {
var hi = (lo >>> (32 - numBits | 0)) | (x[/* hi */0] << numBits);
return /* record */[
/* hi */hi,
/* lo */((lo << numBits) >>> 0)
];
}
}
else {
return x;
}
}
function lsr_(x, numBits) {
var hi = x[/* hi */0];
if (numBits) {
var offset = numBits - 32 | 0;
if (offset) {
if (offset > 0) {
var lo = (hi >>> offset);
return /* record */[
/* hi */0,
/* lo */(lo >>> 0)
];
}
else {
var hi$1 = (hi >>> numBits);
var lo$1 = (hi << (-offset | 0)) | (x[/* lo */1] >>> numBits);
return /* record */[
/* hi */hi$1,
/* lo */(lo$1 >>> 0)
];
}
}
else {
return /* record */[
/* hi */0,
/* lo */(hi >>> 0)
];
}
}
else {
return x;
}
}
function asr_(x, numBits) {
var hi = x[/* hi */0];
if (numBits) {
if (numBits < 32) {
var hi$1 = (hi >> numBits);
var lo = (hi << (32 - numBits | 0)) | (x[/* lo */1] >>> numBits);
return /* record */[
/* hi */hi$1,
/* lo */(lo >>> 0)
];
}
else {
var lo$1 = (hi >> (numBits - 32 | 0));
return /* record */[
/* hi */hi >= 0 ? 0 : -1,
/* lo */(lo$1 >>> 0)
];
}
}
else {
return x;
}
}
function is_zero(param) {
if (param[/* hi */0] !== 0 || param[/* lo */1] !== 0) {
return /* false */0;
}
else {
return /* true */1;
}
}
function mul(_this, _other) {
while(true) {
var other = _other;
var $$this = _this;
var exit = 0;
var lo;
var this_hi = $$this[/* hi */0];
var exit$1 = 0;
var exit$2 = 0;
var exit$3 = 0;
if (this_hi !== 0) {
exit$3 = 4;
}
else if ($$this[/* lo */1] !== 0) {
exit$3 = 4;
}
else {
return zero;
}
if (exit$3 === 4) {
if (other[/* hi */0] !== 0) {
exit$2 = 3;
}
else if (other[/* lo */1] !== 0) {
exit$2 = 3;
}
else {
return zero;
}
}
if (exit$2 === 3) {
if (this_hi !== -2147483648) {
exit$1 = 2;
}
else if ($$this[/* lo */1] !== 0) {
exit$1 = 2;
}
else {
lo = other[/* lo */1];
exit = 1;
}
}
if (exit$1 === 2) {
var other_hi = other[/* hi */0];
var lo$1 = $$this[/* lo */1];
var exit$4 = 0;
if (other_hi !== -2147483648) {
exit$4 = 3;
}
else if (other[/* lo */1] !== 0) {
exit$4 = 3;
}
else {
lo = lo$1;
exit = 1;
}
if (exit$4 === 3) {
var other_lo = other[/* lo */1];
if (this_hi < 0) {
if (other_hi < 0) {
_other = neg(other);
_this = neg($$this);
continue ;
}
else {
return neg(mul(neg($$this), other));
}
}
else if (other_hi < 0) {
return neg(mul($$this, neg(other)));
}
else {
var a48 = (this_hi >>> 16);
var a32 = this_hi & 65535;
var a16 = (lo$1 >>> 16);
var a00 = lo$1 & 65535;
var b48 = (other_hi >>> 16);
var b32 = other_hi & 65535;
var b16 = (other_lo >>> 16);
var b00 = other_lo & 65535;
var c48 = 0;
var c32 = 0;
var c16 = 0;
var c00 = a00 * b00;
c16 = (c00 >>> 16) + a16 * b00;
c32 = (c16 >>> 16);
c16 = (c16 & 65535) + a00 * b16;
c32 = c32 + (c16 >>> 16) + a32 * b00;
c48 = (c32 >>> 16);
c32 = (c32 & 65535) + a16 * b16;
c48 += (c32 >>> 16);
c32 = (c32 & 65535) + a00 * b32;
c48 += (c32 >>> 16);
c32 = c32 & 65535;
c48 = c48 + (a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48) & 65535;
var hi = c32 | (c48 << 16);
var lo$2 = c00 & 65535 | ((c16 & 65535) << 16);
return /* record */[
/* hi */hi,
/* lo */(lo$2 >>> 0)
];
}
}
}
if (exit === 1) {
if ((lo & 1) === 0) {
return zero;
}
else {
return min_int;
}
}
};
}
function swap(param) {
var hi = Caml_int32.caml_int32_bswap(param[/* lo */1]);
var lo = Caml_int32.caml_int32_bswap(param[/* hi */0]);
return /* record */[
/* hi */hi,
/* lo */(lo >>> 0)
];
}
function xor(param, param$1) {
return /* record */[
/* hi */param[/* hi */0] ^ param$1[/* hi */0],
/* lo */((param[/* lo */1] ^ param$1[/* lo */1]) >>> 0)
];
}
function or_(param, param$1) {
return /* record */[
/* hi */param[/* hi */0] | param$1[/* hi */0],
/* lo */((param[/* lo */1] | param$1[/* lo */1]) >>> 0)
];
}
function and_(param, param$1) {
return /* record */[
/* hi */param[/* hi */0] & param$1[/* hi */0],
/* lo */((param[/* lo */1] & param$1[/* lo */1]) >>> 0)
];
}
function ge(param, param$1) {
var other_hi = param$1[/* hi */0];
var hi = param[/* hi */0];
if (hi > other_hi) {
return /* true */1;
}
else if (hi < other_hi) {
return /* false */0;
}
else {
return +(param[/* lo */1] >= param$1[/* lo */1]);
}
}
function neq(x, y) {
return 1 - eq(x, y);
}
function lt(x, y) {
return 1 - ge(x, y);
}
function gt(x, y) {
if (x[/* hi */0] > y[/* hi */0]) {
return /* true */1;
}
else if (x[/* hi */0] < y[/* hi */0]) {
return /* false */0;
}
else {
return +(x[/* lo */1] > y[/* lo */1]);
}
}
function le(x, y) {
return 1 - gt(x, y);
}
function to_float(param) {
return param[/* hi */0] * 4294967296 + param[/* lo */1];
}
var two_ptr_32_dbl = Math.pow(2, 32);
var two_ptr_63_dbl = Math.pow(2, 63);
var neg_two_ptr_63 = -Math.pow(2, 63);
function of_float(x) {
if (isNaN(x) || !isFinite(x)) {
return zero;
}
else if (x <= neg_two_ptr_63) {
return min_int;
}
else if (x + 1 >= two_ptr_63_dbl) {
return max_int;
}
else if (x < 0) {
return neg(of_float(-x));
}
else {
var hi = x / two_ptr_32_dbl | 0;
var lo = x % two_ptr_32_dbl | 0;
return /* record */[
/* hi */hi,
/* lo */(lo >>> 0)
];
}
}
function div(_self, _other) {
while(true) {
var other = _other;
var self = _self;
var self_hi = self[/* hi */0];
var exit = 0;
var exit$1 = 0;
if (other[/* hi */0] !== 0) {
exit$1 = 2;
}
else if (other[/* lo */1] !== 0) {
exit$1 = 2;
}
else {
throw Caml_builtin_exceptions.division_by_zero;
}
if (exit$1 === 2) {
if (self_hi !== -2147483648) {
if (self_hi !== 0) {
exit = 1;
}
else if (self[/* lo */1] !== 0) {
exit = 1;
}
else {
return zero;
}
}
else if (self[/* lo */1] !== 0) {
exit = 1;
}
else if (eq(other, one) || eq(other, neg_one)) {
return self;
}
else if (eq(other, min_int)) {
return one;
}
else {
var other_hi = other[/* hi */0];
var half_this = asr_(self, 1);
var approx = lsl_(div(half_this, other), 1);
var exit$2 = 0;
if (approx[/* hi */0] !== 0) {
exit$2 = 3;
}
else if (approx[/* lo */1] !== 0) {
exit$2 = 3;
}
else if (other_hi < 0) {
return one;
}
else {
return neg(one);
}
if (exit$2 === 3) {
var y = mul(other, approx);
var rem = add(self, neg(y));
return add(approx, div(rem, other));
}
}
}
if (exit === 1) {
var other_hi$1 = other[/* hi */0];
var exit$3 = 0;
if (other_hi$1 !== -2147483648) {
exit$3 = 2;
}
else if (other[/* lo */1] !== 0) {
exit$3 = 2;
}
else {
return zero;
}
if (exit$3 === 2) {
if (self_hi < 0) {
if (other_hi$1 < 0) {
_other = neg(other);
_self = neg(self);
continue ;
}
else {
return neg(div(neg(self), other));
}
}
else if (other_hi$1 < 0) {
return neg(div(self, neg(other)));
}
else {
var res = zero;
var rem$1 = self;
while(ge(rem$1, other)) {
var approx$1 = Math.max(1, Math.floor(to_float(rem$1) / to_float(other)));
var log2 = Math.ceil(Math.log(approx$1) / Math.LN2);
var delta = log2 <= 48 ? 1 : Math.pow(2, log2 - 48);
var approxRes = of_float(approx$1);
var approxRem = mul(approxRes, other);
while(approxRem[/* hi */0] < 0 || gt(approxRem, rem$1)) {
approx$1 -= delta;
approxRes = of_float(approx$1);
approxRem = mul(approxRes, other);
};
if (is_zero(approxRes)) {
approxRes = one;
}
res = add(res, approxRes);
rem$1 = add(rem$1, neg(approxRem));
};
return res;
}
}
}
};
}
function mod_(self, other) {
var y = mul(div(self, other), other);
return add(self, neg(y));
}
function div_mod(self, other) {
var quotient = div(self, other);
var y = mul(quotient, other);
return /* tuple */[
quotient,
add(self, neg(y))
];
}
function compare(self, other) {
var v = Caml_obj.caml_nativeint_compare(self[/* hi */0], other[/* hi */0]);
if (v) {
return v;
}
else {
return Caml_obj.caml_nativeint_compare(self[/* lo */1], other[/* lo */1]);
}
}
function of_int32(lo) {
return /* record */[
/* hi */lo < 0 ? -1 : 0,
/* lo */(lo >>> 0)
];
}
function to_int32(x) {
return x[/* lo */1] | 0;
}
function to_hex(x) {
var aux = function (v) {
return (v >>> 0).toString(16);
};
var match = x[/* hi */0];
var match$1 = x[/* lo */1];
var exit = 0;
if (match !== 0) {
exit = 1;
}
else if (match$1 !== 0) {
exit = 1;
}
else {
return "0";
}
if (exit === 1) {
if (match$1 !== 0) {
if (match !== 0) {
var lo = aux(x[/* lo */1]);
var pad = 8 - lo.length | 0;
if (pad <= 0) {
return aux(x[/* hi */0]) + lo;
}
else {
return aux(x[/* hi */0]) + (Caml_utils.repeat(pad, "0") + lo);
}
}
else {
return aux(x[/* lo */1]);
}
}
else {
return aux(x[/* hi */0]) + "00000000";
}
}
}
function discard_sign(x) {
return /* record */[
/* hi */2147483647 & x[/* hi */0],
/* lo */x[/* lo */1]
];
}
function float_of_bits(x) {
var int32 = new Int32Array(/* array */[
x[/* lo */1],
x[/* hi */0]
]);
return new Float64Array(int32.buffer)[0];
}
function bits_of_float(x) {
var to_nat = function (x) {
return x;
};
var u = new Float64Array(/* float array */[x]);
var int32 = new Int32Array(u.buffer);
var hi = to_nat(int32[1]);
var lo = to_nat(int32[0]);
return /* record */[
/* hi */hi,
/* lo */(lo >>> 0)
];
}
function get64(s, i) {
var hi = (s.charCodeAt(i + 4 | 0) << 32) | (s.charCodeAt(i + 5 | 0) << 40) | (s.charCodeAt(i + 6 | 0) << 48) | (s.charCodeAt(i + 7 | 0) << 56);
var lo = s.charCodeAt(i) | (s.charCodeAt(i + 1 | 0) << 8) | (s.charCodeAt(i + 2 | 0) << 16) | (s.charCodeAt(i + 3 | 0) << 24);
return /* record */[
/* hi */hi,
/* lo */(lo >>> 0)
];
}
exports.min_int = min_int;
exports.max_int = max_int;
exports.one = one;
exports.zero = zero;
exports.not = not;
exports.of_int32 = of_int32;
exports.to_int32 = to_int32;
exports.add = add;
exports.neg = neg;
exports.sub = sub;
exports.lsl_ = lsl_;
exports.lsr_ = lsr_;
exports.asr_ = asr_;
exports.is_zero = is_zero;
exports.mul = mul;
exports.xor = xor;
exports.or_ = or_;
exports.and_ = and_;
exports.swap = swap;
exports.ge = ge;
exports.eq = eq;
exports.neq = neq;
exports.lt = lt;
exports.gt = gt;
exports.le = le;
exports.to_float = to_float;
exports.of_float = of_float;
exports.div = div;
exports.mod_ = mod_;
exports.div_mod = div_mod;
exports.compare = compare;
exports.to_hex = to_hex;
exports.discard_sign = discard_sign;
exports.float_of_bits = float_of_bits;
exports.bits_of_float = bits_of_float;
exports.get64 = get64;
/* two_ptr_32_dbl Not a pure module */
//////// end of caml_int64.js ////////
    return exports;
  };
_registry['camlinternalFormatBasics'] = function() {
    let exports = {};
//////// start of camlinternalFormatBasics.js ////////
'use strict';
var Block = require("./block");
function erase_rel(param) {
if (typeof param === "number") {
return /* End_of_fmtty */0;
}
else {
switch (param.tag | 0) {
case 0 :
return /* Char_ty */Block.__(0, [erase_rel(param[0])]);
case 1 :
return /* String_ty */Block.__(1, [erase_rel(param[0])]);
case 2 :
return /* Int_ty */Block.__(2, [erase_rel(param[0])]);
case 3 :
return /* Int32_ty */Block.__(3, [erase_rel(param[0])]);
case 4 :
return /* Nativeint_ty */Block.__(4, [erase_rel(param[0])]);
case 5 :
return /* Int64_ty */Block.__(5, [erase_rel(param[0])]);
case 6 :
return /* Float_ty */Block.__(6, [erase_rel(param[0])]);
case 7 :
return /* Bool_ty */Block.__(7, [erase_rel(param[0])]);
case 8 :
return /* Format_arg_ty */Block.__(8, [
param[0],
erase_rel(param[1])
]);
case 9 :
var ty1 = param[0];
return /* Format_subst_ty */Block.__(9, [
ty1,
ty1,
erase_rel(param[2])
]);
case 10 :
return /* Alpha_ty */Block.__(10, [erase_rel(param[0])]);
case 11 :
return /* Theta_ty */Block.__(11, [erase_rel(param[0])]);
case 12 :
return /* Any_ty */Block.__(12, [erase_rel(param[0])]);
case 13 :
return /* Reader_ty */Block.__(13, [erase_rel(param[0])]);
case 14 :
return /* Ignored_reader_ty */Block.__(14, [erase_rel(param[0])]);
}
}
}
function concat_fmtty(fmtty1, fmtty2) {
if (typeof fmtty1 === "number") {
return fmtty2;
}
else {
switch (fmtty1.tag | 0) {
case 0 :
return /* Char_ty */Block.__(0, [concat_fmtty(fmtty1[0], fmtty2)]);
case 1 :
return /* String_ty */Block.__(1, [concat_fmtty(fmtty1[0], fmtty2)]);
case 2 :
return /* Int_ty */Block.__(2, [concat_fmtty(fmtty1[0], fmtty2)]);
case 3 :
return /* Int32_ty */Block.__(3, [concat_fmtty(fmtty1[0], fmtty2)]);
case 4 :
return /* Nativeint_ty */Block.__(4, [concat_fmtty(fmtty1[0], fmtty2)]);
case 5 :
return /* Int64_ty */Block.__(5, [concat_fmtty(fmtty1[0], fmtty2)]);
case 6 :
return /* Float_ty */Block.__(6, [concat_fmtty(fmtty1[0], fmtty2)]);
case 7 :
return /* Bool_ty */Block.__(7, [concat_fmtty(fmtty1[0], fmtty2)]);
case 8 :
return /* Format_arg_ty */Block.__(8, [
fmtty1[0],
concat_fmtty(fmtty1[1], fmtty2)
]);
case 9 :
return /* Format_subst_ty */Block.__(9, [
fmtty1[0],
fmtty1[1],
concat_fmtty(fmtty1[2], fmtty2)
]);
case 10 :
return /* Alpha_ty */Block.__(10, [concat_fmtty(fmtty1[0], fmtty2)]);
case 11 :
return /* Theta_ty */Block.__(11, [concat_fmtty(fmtty1[0], fmtty2)]);
case 12 :
return /* Any_ty */Block.__(12, [concat_fmtty(fmtty1[0], fmtty2)]);
case 13 :
return /* Reader_ty */Block.__(13, [concat_fmtty(fmtty1[0], fmtty2)]);
case 14 :
return /* Ignored_reader_ty */Block.__(14, [concat_fmtty(fmtty1[0], fmtty2)]);
}
}
}
function concat_fmt(fmt1, fmt2) {
if (typeof fmt1 === "number") {
return fmt2;
}
else {
switch (fmt1.tag | 0) {
case 0 :
return /* Char */Block.__(0, [concat_fmt(fmt1[0], fmt2)]);
case 1 :
return /* Caml_char */Block.__(1, [concat_fmt(fmt1[0], fmt2)]);
case 2 :
return /* String */Block.__(2, [
fmt1[0],
concat_fmt(fmt1[1], fmt2)
]);
case 3 :
return /* Caml_string */Block.__(3, [
fmt1[0],
concat_fmt(fmt1[1], fmt2)
]);
case 4 :
return /* Int */Block.__(4, [
fmt1[0],
fmt1[1],
fmt1[2],
concat_fmt(fmt1[3], fmt2)
]);
case 5 :
return /* Int32 */Block.__(5, [
fmt1[0],
fmt1[1],
fmt1[2],
concat_fmt(fmt1[3], fmt2)
]);
case 6 :
return /* Nativeint */Block.__(6, [
fmt1[0],
fmt1[1],
fmt1[2],
concat_fmt(fmt1[3], fmt2)
]);
case 7 :
return /* Int64 */Block.__(7, [
fmt1[0],
fmt1[1],
fmt1[2],
concat_fmt(fmt1[3], fmt2)
]);
case 8 :
return /* Float */Block.__(8, [
fmt1[0],
fmt1[1],
fmt1[2],
concat_fmt(fmt1[3], fmt2)
]);
case 9 :
return /* Bool */Block.__(9, [concat_fmt(fmt1[0], fmt2)]);
case 10 :
return /* Flush */Block.__(10, [concat_fmt(fmt1[0], fmt2)]);
case 11 :
return /* String_literal */Block.__(11, [
fmt1[0],
concat_fmt(fmt1[1], fmt2)
]);
case 12 :
return /* Char_literal */Block.__(12, [
fmt1[0],
concat_fmt(fmt1[1], fmt2)
]);
case 13 :
return /* Format_arg */Block.__(13, [
fmt1[0],
fmt1[1],
concat_fmt(fmt1[2], fmt2)
]);
case 14 :
return /* Format_subst */Block.__(14, [
fmt1[0],
fmt1[1],
concat_fmt(fmt1[2], fmt2)
]);
case 15 :
return /* Alpha */Block.__(15, [concat_fmt(fmt1[0], fmt2)]);
case 16 :
return /* Theta */Block.__(16, [concat_fmt(fmt1[0], fmt2)]);
case 17 :
return /* Formatting_lit */Block.__(17, [
fmt1[0],
concat_fmt(fmt1[1], fmt2)
]);
case 18 :
return /* Formatting_gen */Block.__(18, [
fmt1[0],
concat_fmt(fmt1[1], fmt2)
]);
case 19 :
return /* Reader */Block.__(19, [concat_fmt(fmt1[0], fmt2)]);
case 20 :
return /* Scan_char_set */Block.__(20, [
fmt1[0],
fmt1[1],
concat_fmt(fmt1[2], fmt2)
]);
case 21 :
return /* Scan_get_counter */Block.__(21, [
fmt1[0],
concat_fmt(fmt1[1], fmt2)
]);
case 22 :
return /* Scan_next_char */Block.__(22, [concat_fmt(fmt1[0], fmt2)]);
case 23 :
return /* Ignored_param */Block.__(23, [
fmt1[0],
concat_fmt(fmt1[1], fmt2)
]);
case 24 :
return /* Custom */Block.__(24, [
fmt1[0],
fmt1[1],
concat_fmt(fmt1[2], fmt2)
]);
}
}
}
exports.concat_fmtty = concat_fmtty;
exports.erase_rel = erase_rel;
exports.concat_fmt = concat_fmt;
/* No side effect */
//////// end of camlinternalFormatBasics.js ////////
    return exports;
  };
_registry['camlinternalFormat'] = function() {
    let exports = {};
//////// start of camlinternalFormat.js ////////
'use strict';
var Sys = require("./sys");
var Char = require("./char");
var Block = require("./block");
var Bytes = require("./bytes");
var Curry = require("./curry");
var Buffer = require("./buffer");
var $$String = require("./string");
var Caml_io = require("./caml_io");
var Caml_obj = require("./caml_obj");
var Caml_bytes = require("./caml_bytes");
var Caml_float = require("./caml_float");
var Caml_int32 = require("./caml_int32");
var Pervasives = require("./pervasives");
var Caml_format = require("./caml_format");
var Caml_string = require("./caml_string");
var Caml_exceptions = require("./caml_exceptions");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
var CamlinternalFormatBasics = require("./camlinternalFormatBasics");
function create_char_set() {
return Bytes.make(32, /* "\000" */0);
}
function add_in_char_set(char_set, c) {
var str_ind = (c >>> 3);
var mask = (1 << (c & 7));
char_set[str_ind] = Pervasives.char_of_int(Caml_bytes.get(char_set, str_ind) | mask);
return /* () */0;
}
var freeze_char_set = Bytes.to_string;
function rev_char_set(char_set) {
var char_set$prime = Bytes.make(32, /* "\000" */0);
for(var i = 0; i <= 31; ++i){
char_set$prime[i] = Pervasives.char_of_int(Caml_string.get(char_set, i) ^ 255);
}
return Caml_string.bytes_to_string(char_set$prime);
}
function is_in_char_set(char_set, c) {
var str_ind = (c >>> 3);
var mask = (1 << (c & 7));
return +((Caml_string.get(char_set, str_ind) & mask) !== 0);
}
function pad_of_pad_opt(pad_opt) {
if (pad_opt) {
return /* Lit_padding */Block.__(0, [
/* Right */1,
pad_opt[0]
]);
}
else {
return /* No_padding */0;
}
}
function prec_of_prec_opt(prec_opt) {
if (prec_opt) {
return /* Lit_precision */[prec_opt[0]];
}
else {
return /* No_precision */0;
}
}
function param_format_of_ignored_format(ign, fmt) {
if (typeof ign === "number") {
switch (ign) {
case 0 :
return /* Param_format_EBB */[/* Char */Block.__(0, [fmt])];
case 1 :
return /* Param_format_EBB */[/* Caml_char */Block.__(1, [fmt])];
case 2 :
return /* Param_format_EBB */[/* Bool */Block.__(9, [fmt])];
case 3 :
return /* Param_format_EBB */[/* Reader */Block.__(19, [fmt])];
case 4 :
return /* Param_format_EBB */[/* Scan_next_char */Block.__(22, [fmt])];
}
}
else {
switch (ign.tag | 0) {
case 0 :
return /* Param_format_EBB */[/* String */Block.__(2, [
pad_of_pad_opt(ign[0]),
fmt
])];
case 1 :
return /* Param_format_EBB */[/* Caml_string */Block.__(3, [
pad_of_pad_opt(ign[0]),
fmt
])];
case 2 :
return /* Param_format_EBB */[/* Int */Block.__(4, [
ign[0],
pad_of_pad_opt(ign[1]),
/* No_precision */0,
fmt
])];
case 3 :
return /* Param_format_EBB */[/* Int32 */Block.__(5, [
ign[0],
pad_of_pad_opt(ign[1]),
/* No_precision */0,
fmt
])];
case 4 :
return /* Param_format_EBB */[/* Nativeint */Block.__(6, [
ign[0],
pad_of_pad_opt(ign[1]),
/* No_precision */0,
fmt
])];
case 5 :
return /* Param_format_EBB */[/* Int64 */Block.__(7, [
ign[0],
pad_of_pad_opt(ign[1]),
/* No_precision */0,
fmt
])];
case 6 :
return /* Param_format_EBB */[/* Float */Block.__(8, [
/* Float_f */0,
pad_of_pad_opt(ign[0]),
prec_of_prec_opt(ign[1]),
fmt
])];
case 7 :
return /* Param_format_EBB */[/* Format_arg */Block.__(13, [
ign[0],
ign[1],
fmt
])];
case 8 :
return /* Param_format_EBB */[/* Format_subst */Block.__(14, [
ign[0],
ign[1],
fmt
])];
case 9 :
return /* Param_format_EBB */[/* Scan_char_set */Block.__(20, [
ign[0],
ign[1],
fmt
])];
case 10 :
return /* Param_format_EBB */[/* Scan_get_counter */Block.__(21, [
ign[0],
fmt
])];
}
}
}
function buffer_check_size(buf, overhead) {
var len = buf[/* bytes */1].length;
var min_len = buf[/* ind */0] + overhead | 0;
if (min_len > len) {
var new_len = Pervasives.max((len << 1), min_len);
var new_str = Caml_string.caml_create_string(new_len);
Bytes.blit(buf[/* bytes */1], 0, new_str, 0, len);
buf[/* bytes */1] = new_str;
return /* () */0;
}
else {
return 0;
}
}
function buffer_add_char(buf, c) {
buffer_check_size(buf, 1);
buf[/* bytes */1][buf[/* ind */0]] = c;
buf[/* ind */0] = buf[/* ind */0] + 1 | 0;
return /* () */0;
}
function buffer_add_string(buf, s) {
var str_len = s.length;
buffer_check_size(buf, str_len);
$$String.blit(s, 0, buf[/* bytes */1], buf[/* ind */0], str_len);
buf[/* ind */0] = buf[/* ind */0] + str_len | 0;
return /* () */0;
}
function buffer_contents(buf) {
return Bytes.sub_string(buf[/* bytes */1], 0, buf[/* ind */0]);
}
function char_of_iconv(iconv) {
switch (iconv) {
case 0 :
case 1 :
case 2 :
return /* "d" */100;
case 3 :
case 4 :
case 5 :
return /* "i" */105;
case 6 :
case 7 :
return /* "x" */120;
case 8 :
case 9 :
return /* "X" */88;
case 10 :
case 11 :
return /* "o" */111;
case 12 :
return /* "u" */117;
}
}
function char_of_fconv(fconv) {
switch (fconv) {
case 0 :
case 1 :
case 2 :
return /* "f" */102;
case 3 :
case 4 :
case 5 :
return /* "e" */101;
case 6 :
case 7 :
case 8 :
return /* "E" */69;
case 9 :
case 10 :
case 11 :
return /* "g" */103;
case 12 :
case 13 :
case 14 :
return /* "G" */71;
case 15 :
return /* "F" */70;
}
}
function char_of_counter(counter) {
switch (counter) {
case 0 :
return /* "l" */108;
case 1 :
return /* "n" */110;
case 2 :
return /* "N" */78;
}
}
function bprint_char_set(buf, char_set) {
var print_char = function (buf, i) {
var c = Pervasives.char_of_int(i);
if (c !== 37) {
if (c !== 64) {
return buffer_add_char(buf, c);
}
else {
buffer_add_char(buf, /* "%" */37);
return buffer_add_char(buf, /* "@" */64);
}
}
else {
buffer_add_char(buf, /* "%" */37);
return buffer_add_char(buf, /* "%" */37);
}
};
var print_out = function (set, _i) {
while(true) {
var i = _i;
if (i < 256) {
if (is_in_char_set(set, Pervasives.char_of_int(i))) {
var set$1 = set;
var i$1 = i;
var match = Pervasives.char_of_int(i$1);
var switcher = match - 45 | 0;
if (switcher > 48 || switcher < 0) {
if (switcher >= 210) {
return print_char(buf, 255);
}
else {
return print_second(set$1, i$1 + 1 | 0);
}
}
else if (switcher > 47 || switcher < 1) {
return print_out(set$1, i$1 + 1 | 0);
}
else {
return print_second(set$1, i$1 + 1 | 0);
}
}
else {
_i = i + 1 | 0;
continue ;
}
}
else {
return 0;
}
};
};
var print_second = function (set, i) {
if (is_in_char_set(set, Pervasives.char_of_int(i))) {
var match = Pervasives.char_of_int(i);
var exit = 0;
var switcher = match - 45 | 0;
if (switcher > 48 || switcher < 0) {
if (switcher >= 210) {
print_char(buf, 254);
return print_char(buf, 255);
}
else {
exit = 1;
}
}
else if (switcher > 47 || switcher < 1) {
if (is_in_char_set(set, Pervasives.char_of_int(i + 1 | 0))) {
exit = 1;
}
else {
print_char(buf, i - 1 | 0);
return print_out(set, i + 1 | 0);
}
}
else {
exit = 1;
}
if (exit === 1) {
if (is_in_char_set(set, Pervasives.char_of_int(i + 1 | 0))) {
var set$1 = set;
var i$1 = i - 1 | 0;
var _j = i + 2 | 0;
while(true) {
var j = _j;
if (j === 256 || !is_in_char_set(set$1, Pervasives.char_of_int(j))) {
print_char(buf, i$1);
print_char(buf, /* "-" */45);
print_char(buf, j - 1 | 0);
if (j < 256) {
return print_out(set$1, j + 1 | 0);
}
else {
return 0;
}
}
else {
_j = j + 1 | 0;
continue ;
}
};
}
else {
print_char(buf, i - 1 | 0);
print_char(buf, i);
return print_out(set, i + 2 | 0);
}
}
}
else {
print_char(buf, i - 1 | 0);
return print_out(set, i + 1 | 0);
}
};
var print_start = function (set) {
var is_alone = function (c) {
var match_000 = Char.chr(c - 1 | 0);
var match_001 = Char.chr(c + 1 | 0);
if (is_in_char_set(set, c)) {
return 1 - (is_in_char_set(set, match_000) && is_in_char_set(set, match_001));
}
else {
return /* false */0;
}
};
if (is_alone(/* "]" */93)) {
buffer_add_char(buf, /* "]" */93);
}
print_out(set, 1);
if (is_alone(/* "-" */45)) {
return buffer_add_char(buf, /* "-" */45);
}
else {
return 0;
}
};
buffer_add_char(buf, /* "[" */91);
print_start(is_in_char_set(char_set, /* "\000" */0) ? (buffer_add_char(buf, /* "^" */94), rev_char_set(char_set)) : char_set);
return buffer_add_char(buf, /* "]" */93);
}
function bprint_padty(buf, padty) {
switch (padty) {
case 0 :
return buffer_add_char(buf, /* "-" */45);
case 1 :
return /* () */0;
case 2 :
return buffer_add_char(buf, /* "0" */48);
}
}
function bprint_ignored_flag(buf, ign_flag) {
if (ign_flag) {
return buffer_add_char(buf, /* "_" */95);
}
else {
return 0;
}
}
function bprint_pad_opt(buf, pad_opt) {
if (pad_opt) {
return buffer_add_string(buf, "" + pad_opt[0]);
}
else {
return /* () */0;
}
}
function bprint_padding(buf, pad) {
if (typeof pad === "number") {
return /* () */0;
}
else {
bprint_padty(buf, pad[0]);
if (pad.tag) {
return buffer_add_char(buf, /* "*" */42);
}
else {
return buffer_add_string(buf, "" + pad[1]);
}
}
}
function bprint_precision(buf, prec) {
if (typeof prec === "number") {
if (prec !== 0) {
return buffer_add_string(buf, ".*");
}
else {
return /* () */0;
}
}
else {
buffer_add_char(buf, /* "." */46);
return buffer_add_string(buf, "" + prec[0]);
}
}
function bprint_iconv_flag(buf, iconv) {
switch (iconv) {
case 1 :
case 4 :
return buffer_add_char(buf, /* "+" */43);
case 2 :
case 5 :
return buffer_add_char(buf, /* " " */32);
case 7 :
case 9 :
case 11 :
return buffer_add_char(buf, /* "#" */35);
case 0 :
case 3 :
case 6 :
case 8 :
case 10 :
case 12 :
return /* () */0;
}
}
function bprint_int_fmt(buf, ign_flag, iconv, pad, prec) {
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
bprint_iconv_flag(buf, iconv);
bprint_padding(buf, pad);
bprint_precision(buf, prec);
return buffer_add_char(buf, char_of_iconv(iconv));
}
function bprint_altint_fmt(buf, ign_flag, iconv, pad, prec, c) {
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
bprint_iconv_flag(buf, iconv);
bprint_padding(buf, pad);
bprint_precision(buf, prec);
buffer_add_char(buf, c);
return buffer_add_char(buf, char_of_iconv(iconv));
}
function bprint_fconv_flag(buf, fconv) {
switch (fconv) {
case 1 :
case 4 :
case 7 :
case 10 :
case 13 :
return buffer_add_char(buf, /* "+" */43);
case 2 :
case 5 :
case 8 :
case 11 :
case 14 :
return buffer_add_char(buf, /* " " */32);
case 0 :
case 3 :
case 6 :
case 9 :
case 12 :
case 15 :
return /* () */0;
}
}
function bprint_float_fmt(buf, ign_flag, fconv, pad, prec) {
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
bprint_fconv_flag(buf, fconv);
bprint_padding(buf, pad);
bprint_precision(buf, prec);
return buffer_add_char(buf, char_of_fconv(fconv));
}
function string_of_formatting_lit(formatting_lit) {
if (typeof formatting_lit === "number") {
switch (formatting_lit) {
case 0 :
return "@]";
case 1 :
return "@}";
case 2 :
return "@?";
case 3 :
return "@\n";
case 4 :
return "@.";
case 5 :
return "@@";
case 6 :
return "@%";
}
}
else {
switch (formatting_lit.tag | 0) {
case 0 :
case 1 :
return formatting_lit[0];
case 2 :
return "@" + Caml_string.bytes_to_string(Bytes.make(1, formatting_lit[0]));
}
}
}
function string_of_formatting_gen(formatting_gen) {
return formatting_gen[0][1];
}
function bprint_char_literal(buf, chr) {
if (chr !== 37) {
return buffer_add_char(buf, chr);
}
else {
return buffer_add_string(buf, "%%");
}
}
function bprint_string_literal(buf, str) {
for(var i = 0 ,i_finish = str.length - 1 | 0; i <= i_finish; ++i){
bprint_char_literal(buf, Caml_string.get(str, i));
}
return /* () */0;
}
function bprint_fmtty(buf, _fmtty) {
while(true) {
var fmtty = _fmtty;
if (typeof fmtty === "number") {
return /* () */0;
}
else {
switch (fmtty.tag | 0) {
case 0 :
buffer_add_string(buf, "%c");
_fmtty = fmtty[0];
continue ;
case 1 :
buffer_add_string(buf, "%s");
_fmtty = fmtty[0];
continue ;
case 2 :
buffer_add_string(buf, "%i");
_fmtty = fmtty[0];
continue ;
case 3 :
buffer_add_string(buf, "%li");
_fmtty = fmtty[0];
continue ;
case 4 :
buffer_add_string(buf, "%ni");
_fmtty = fmtty[0];
continue ;
case 5 :
buffer_add_string(buf, "%Li");
_fmtty = fmtty[0];
continue ;
case 6 :
buffer_add_string(buf, "%f");
_fmtty = fmtty[0];
continue ;
case 7 :
buffer_add_string(buf, "%B");
_fmtty = fmtty[0];
continue ;
case 8 :
buffer_add_string(buf, "%{");
bprint_fmtty(buf, fmtty[0]);
buffer_add_string(buf, "%}");
_fmtty = fmtty[1];
continue ;
case 9 :
buffer_add_string(buf, "%(");
bprint_fmtty(buf, fmtty[0]);
buffer_add_string(buf, "%)");
_fmtty = fmtty[2];
continue ;
case 10 :
buffer_add_string(buf, "%a");
_fmtty = fmtty[0];
continue ;
case 11 :
buffer_add_string(buf, "%t");
_fmtty = fmtty[0];
continue ;
case 12 :
buffer_add_string(buf, "%?");
_fmtty = fmtty[0];
continue ;
case 13 :
buffer_add_string(buf, "%r");
_fmtty = fmtty[0];
continue ;
case 14 :
buffer_add_string(buf, "%_r");
_fmtty = fmtty[0];
continue ;
}
}
};
}
function int_of_custom_arity(param) {
if (param) {
return 1 + int_of_custom_arity(param[0]) | 0;
}
else {
return 0;
}
}
function bprint_fmt(buf, fmt) {
var _fmt = fmt;
var _ign_flag = /* false */0;
while(true) {
var ign_flag = _ign_flag;
var fmt$1 = _fmt;
if (typeof fmt$1 === "number") {
return /* () */0;
}
else {
switch (fmt$1.tag | 0) {
case 0 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* "c" */99);
_ign_flag = /* false */0;
_fmt = fmt$1[0];
continue ;
case 1 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* "C" */67);
_ign_flag = /* false */0;
_fmt = fmt$1[0];
continue ;
case 2 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
bprint_padding(buf, fmt$1[0]);
buffer_add_char(buf, /* "s" */115);
_ign_flag = /* false */0;
_fmt = fmt$1[1];
continue ;
case 3 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
bprint_padding(buf, fmt$1[0]);
buffer_add_char(buf, /* "S" */83);
_ign_flag = /* false */0;
_fmt = fmt$1[1];
continue ;
case 4 :
bprint_int_fmt(buf, ign_flag, fmt$1[0], fmt$1[1], fmt$1[2]);
_ign_flag = /* false */0;
_fmt = fmt$1[3];
continue ;
case 5 :
bprint_altint_fmt(buf, ign_flag, fmt$1[0], fmt$1[1], fmt$1[2], /* "l" */108);
_ign_flag = /* false */0;
_fmt = fmt$1[3];
continue ;
case 6 :
bprint_altint_fmt(buf, ign_flag, fmt$1[0], fmt$1[1], fmt$1[2], /* "n" */110);
_ign_flag = /* false */0;
_fmt = fmt$1[3];
continue ;
case 7 :
bprint_altint_fmt(buf, ign_flag, fmt$1[0], fmt$1[1], fmt$1[2], /* "L" */76);
_ign_flag = /* false */0;
_fmt = fmt$1[3];
continue ;
case 8 :
bprint_float_fmt(buf, ign_flag, fmt$1[0], fmt$1[1], fmt$1[2]);
_ign_flag = /* false */0;
_fmt = fmt$1[3];
continue ;
case 9 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* "B" */66);
_ign_flag = /* false */0;
_fmt = fmt$1[0];
continue ;
case 10 :
buffer_add_string(buf, "%!");
_fmt = fmt$1[0];
continue ;
case 11 :
bprint_string_literal(buf, fmt$1[0]);
_fmt = fmt$1[1];
continue ;
case 12 :
bprint_char_literal(buf, fmt$1[0]);
_fmt = fmt$1[1];
continue ;
case 13 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
bprint_pad_opt(buf, fmt$1[0]);
buffer_add_char(buf, /* "{" */123);
bprint_fmtty(buf, fmt$1[1]);
buffer_add_char(buf, /* "%" */37);
buffer_add_char(buf, /* "}" */125);
_ign_flag = /* false */0;
_fmt = fmt$1[2];
continue ;
case 14 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
bprint_pad_opt(buf, fmt$1[0]);
buffer_add_char(buf, /* "(" */40);
bprint_fmtty(buf, fmt$1[1]);
buffer_add_char(buf, /* "%" */37);
buffer_add_char(buf, /* ")" */41);
_ign_flag = /* false */0;
_fmt = fmt$1[2];
continue ;
case 15 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* "a" */97);
_ign_flag = /* false */0;
_fmt = fmt$1[0];
continue ;
case 16 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* "t" */116);
_ign_flag = /* false */0;
_fmt = fmt$1[0];
continue ;
case 17 :
bprint_string_literal(buf, string_of_formatting_lit(fmt$1[0]));
_fmt = fmt$1[1];
continue ;
case 18 :
bprint_string_literal(buf, "@{");
bprint_string_literal(buf, string_of_formatting_gen(fmt$1[0]));
_fmt = fmt$1[1];
continue ;
case 19 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* "r" */114);
_ign_flag = /* false */0;
_fmt = fmt$1[0];
continue ;
case 20 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
bprint_pad_opt(buf, fmt$1[0]);
bprint_char_set(buf, fmt$1[1]);
_ign_flag = /* false */0;
_fmt = fmt$1[2];
continue ;
case 21 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, char_of_counter(fmt$1[0]));
_ign_flag = /* false */0;
_fmt = fmt$1[1];
continue ;
case 22 :
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
bprint_string_literal(buf, "0c");
_ign_flag = /* false */0;
_fmt = fmt$1[0];
continue ;
case 23 :
var match = param_format_of_ignored_format(fmt$1[0], fmt$1[1]);
_ign_flag = /* true */1;
_fmt = match[0];
continue ;
case 24 :
for(var _i = 1 ,_i_finish = int_of_custom_arity(fmt$1[0]); _i <= _i_finish; ++_i){
buffer_add_char(buf, /* "%" */37);
bprint_ignored_flag(buf, ign_flag);
buffer_add_char(buf, /* "?" */63);
}
_ign_flag = /* false */0;
_fmt = fmt$1[2];
continue ;
}
}
};
}
function string_of_fmt(fmt) {
var buf = /* record */[
/* ind */0,
/* bytes */new Array(16)
];
bprint_fmt(buf, fmt);
return buffer_contents(buf);
}
function symm(param) {
if (typeof param === "number") {
return /* End_of_fmtty */0;
}
else {
switch (param.tag | 0) {
case 0 :
return /* Char_ty */Block.__(0, [symm(param[0])]);
case 1 :
return /* String_ty */Block.__(1, [symm(param[0])]);
case 2 :
return /* Int_ty */Block.__(2, [symm(param[0])]);
case 3 :
return /* Int32_ty */Block.__(3, [symm(param[0])]);
case 4 :
return /* Nativeint_ty */Block.__(4, [symm(param[0])]);
case 5 :
return /* Int64_ty */Block.__(5, [symm(param[0])]);
case 6 :
return /* Float_ty */Block.__(6, [symm(param[0])]);
case 7 :
return /* Bool_ty */Block.__(7, [symm(param[0])]);
case 8 :
return /* Format_arg_ty */Block.__(8, [
param[0],
symm(param[1])
]);
case 9 :
return /* Format_subst_ty */Block.__(9, [
param[1],
param[0],
symm(param[2])
]);
case 10 :
return /* Alpha_ty */Block.__(10, [symm(param[0])]);
case 11 :
return /* Theta_ty */Block.__(11, [symm(param[0])]);
case 12 :
return /* Any_ty */Block.__(12, [symm(param[0])]);
case 13 :
return /* Reader_ty */Block.__(13, [symm(param[0])]);
case 14 :
return /* Ignored_reader_ty */Block.__(14, [symm(param[0])]);
}
}
}
function fmtty_rel_det(param) {
if (typeof param === "number") {
return /* tuple */[
function () {
return /* Refl */0;
},
function () {
return /* Refl */0;
},
function () {
return /* Refl */0;
},
function () {
return /* Refl */0;
}
];
}
else {
switch (param.tag | 0) {
case 0 :
var match = fmtty_rel_det(param[0]);
var af = match[1];
var fa = match[0];
return /* tuple */[
function () {
Curry._1(fa, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af, /* Refl */0);
return /* Refl */0;
},
match[2],
match[3]
];
case 1 :
var match$1 = fmtty_rel_det(param[0]);
var af$1 = match$1[1];
var fa$1 = match$1[0];
return /* tuple */[
function () {
Curry._1(fa$1, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$1, /* Refl */0);
return /* Refl */0;
},
match$1[2],
match$1[3]
];
case 2 :
var match$2 = fmtty_rel_det(param[0]);
var af$2 = match$2[1];
var fa$2 = match$2[0];
return /* tuple */[
function () {
Curry._1(fa$2, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$2, /* Refl */0);
return /* Refl */0;
},
match$2[2],
match$2[3]
];
case 3 :
var match$3 = fmtty_rel_det(param[0]);
var af$3 = match$3[1];
var fa$3 = match$3[0];
return /* tuple */[
function () {
Curry._1(fa$3, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$3, /* Refl */0);
return /* Refl */0;
},
match$3[2],
match$3[3]
];
case 4 :
var match$4 = fmtty_rel_det(param[0]);
var af$4 = match$4[1];
var fa$4 = match$4[0];
return /* tuple */[
function () {
Curry._1(fa$4, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$4, /* Refl */0);
return /* Refl */0;
},
match$4[2],
match$4[3]
];
case 5 :
var match$5 = fmtty_rel_det(param[0]);
var af$5 = match$5[1];
var fa$5 = match$5[0];
return /* tuple */[
function () {
Curry._1(fa$5, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$5, /* Refl */0);
return /* Refl */0;
},
match$5[2],
match$5[3]
];
case 6 :
var match$6 = fmtty_rel_det(param[0]);
var af$6 = match$6[1];
var fa$6 = match$6[0];
return /* tuple */[
function () {
Curry._1(fa$6, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$6, /* Refl */0);
return /* Refl */0;
},
match$6[2],
match$6[3]
];
case 7 :
var match$7 = fmtty_rel_det(param[0]);
var af$7 = match$7[1];
var fa$7 = match$7[0];
return /* tuple */[
function () {
Curry._1(fa$7, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$7, /* Refl */0);
return /* Refl */0;
},
match$7[2],
match$7[3]
];
case 8 :
var match$8 = fmtty_rel_det(param[1]);
var af$8 = match$8[1];
var fa$8 = match$8[0];
return /* tuple */[
function () {
Curry._1(fa$8, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$8, /* Refl */0);
return /* Refl */0;
},
match$8[2],
match$8[3]
];
case 9 :
var match$9 = fmtty_rel_det(param[2]);
var de = match$9[3];
var ed = match$9[2];
var af$9 = match$9[1];
var fa$9 = match$9[0];
var ty = trans(symm(param[0]), param[1]);
var match$10 = fmtty_rel_det(ty);
var jd = match$10[3];
var dj = match$10[2];
var ga = match$10[1];
var ag = match$10[0];
return /* tuple */[
function () {
Curry._1(fa$9, /* Refl */0);
Curry._1(ag, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(ga, /* Refl */0);
Curry._1(af$9, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(ed, /* Refl */0);
Curry._1(dj, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(jd, /* Refl */0);
Curry._1(de, /* Refl */0);
return /* Refl */0;
}
];
case 10 :
var match$11 = fmtty_rel_det(param[0]);
var af$10 = match$11[1];
var fa$10 = match$11[0];
return /* tuple */[
function () {
Curry._1(fa$10, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$10, /* Refl */0);
return /* Refl */0;
},
match$11[2],
match$11[3]
];
case 11 :
var match$12 = fmtty_rel_det(param[0]);
var af$11 = match$12[1];
var fa$11 = match$12[0];
return /* tuple */[
function () {
Curry._1(fa$11, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$11, /* Refl */0);
return /* Refl */0;
},
match$12[2],
match$12[3]
];
case 12 :
var match$13 = fmtty_rel_det(param[0]);
var af$12 = match$13[1];
var fa$12 = match$13[0];
return /* tuple */[
function () {
Curry._1(fa$12, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$12, /* Refl */0);
return /* Refl */0;
},
match$13[2],
match$13[3]
];
case 13 :
var match$14 = fmtty_rel_det(param[0]);
var de$1 = match$14[3];
var ed$1 = match$14[2];
var af$13 = match$14[1];
var fa$13 = match$14[0];
return /* tuple */[
function () {
Curry._1(fa$13, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$13, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(ed$1, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(de$1, /* Refl */0);
return /* Refl */0;
}
];
case 14 :
var match$15 = fmtty_rel_det(param[0]);
var de$2 = match$15[3];
var ed$2 = match$15[2];
var af$14 = match$15[1];
var fa$14 = match$15[0];
return /* tuple */[
function () {
Curry._1(fa$14, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(af$14, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(ed$2, /* Refl */0);
return /* Refl */0;
},
function () {
Curry._1(de$2, /* Refl */0);
return /* Refl */0;
}
];
}
}
}
function trans(ty1, ty2) {
var exit = 0;
if (typeof ty1 === "number") {
if (typeof ty2 === "number") {
if (ty2) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
816,
23
]
];
}
else {
return /* End_of_fmtty */0;
}
}
else {
switch (ty2.tag | 0) {
case 8 :
exit = 6;
break;
case 9 :
exit = 7;
break;
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
816,
23
]
];
}
}
}
else {
switch (ty1.tag | 0) {
case 0 :
if (typeof ty2 === "number") {
exit = 8;
}
else {
switch (ty2.tag | 0) {
case 0 :
return /* Char_ty */Block.__(0, [trans(ty1[0], ty2[0])]);
case 8 :
exit = 6;
break;
case 9 :
exit = 7;
break;
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
}
}
break;
case 1 :
if (typeof ty2 === "number") {
exit = 8;
}
else {
switch (ty2.tag | 0) {
case 1 :
return /* String_ty */Block.__(1, [trans(ty1[0], ty2[0])]);
case 8 :
exit = 6;
break;
case 9 :
exit = 7;
break;
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
}
}
break;
case 2 :
if (typeof ty2 === "number") {
exit = 8;
}
else {
switch (ty2.tag | 0) {
case 2 :
return /* Int_ty */Block.__(2, [trans(ty1[0], ty2[0])]);
case 8 :
exit = 6;
break;
case 9 :
exit = 7;
break;
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
}
}
break;
case 3 :
if (typeof ty2 === "number") {
exit = 8;
}
else {
switch (ty2.tag | 0) {
case 3 :
return /* Int32_ty */Block.__(3, [trans(ty1[0], ty2[0])]);
case 8 :
exit = 6;
break;
case 9 :
exit = 7;
break;
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
}
}
break;
case 4 :
if (typeof ty2 === "number") {
exit = 8;
}
else {
switch (ty2.tag | 0) {
case 4 :
return /* Nativeint_ty */Block.__(4, [trans(ty1[0], ty2[0])]);
case 8 :
exit = 6;
break;
case 9 :
exit = 7;
break;
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
}
}
break;
case 5 :
if (typeof ty2 === "number") {
exit = 8;
}
else {
switch (ty2.tag | 0) {
case 5 :
return /* Int64_ty */Block.__(5, [trans(ty1[0], ty2[0])]);
case 8 :
exit = 6;
break;
case 9 :
exit = 7;
break;
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
}
}
break;
case 6 :
if (typeof ty2 === "number") {
exit = 8;
}
else {
switch (ty2.tag | 0) {
case 6 :
return /* Float_ty */Block.__(6, [trans(ty1[0], ty2[0])]);
case 8 :
exit = 6;
break;
case 9 :
exit = 7;
break;
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
}
}
break;
case 7 :
if (typeof ty2 === "number") {
exit = 8;
}
else {
switch (ty2.tag | 0) {
case 7 :
return /* Bool_ty */Block.__(7, [trans(ty1[0], ty2[0])]);
case 8 :
exit = 6;
break;
case 9 :
exit = 7;
break;
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
}
}
break;
case 8 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
802,
26
]
];
}
else {
switch (ty2.tag | 0) {
case 8 :
return /* Format_arg_ty */Block.__(8, [
trans(ty1[0], ty2[0]),
trans(ty1[1], ty2[1])
]);
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
802,
26
]
];
}
}
break;
case 9 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
812,
28
]
];
}
else {
switch (ty2.tag | 0) {
case 8 :
exit = 6;
break;
case 9 :
var ty = trans(symm(ty1[1]), ty2[0]);
var match = fmtty_rel_det(ty);
Curry._1(match[1], /* Refl */0);
Curry._1(match[3], /* Refl */0);
return /* Format_subst_ty */Block.__(9, [
ty1[0],
ty2[1],
trans(ty1[2], ty2[2])
]);
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
exit = 5;
break;
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
812,
28
]
];
}
}
break;
case 10 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
780,
21
]
];
}
else if (ty2.tag === 10) {
return /* Alpha_ty */Block.__(10, [trans(ty1[0], ty2[0])]);
}
else {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
780,
21
]
];
}
break;
case 11 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
784,
21
]
];
}
else {
switch (ty2.tag | 0) {
case 10 :
exit = 1;
break;
case 11 :
return /* Theta_ty */Block.__(11, [trans(ty1[0], ty2[0])]);
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
784,
21
]
];
}
}
break;
case 12 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
788,
19
]
];
}
else {
switch (ty2.tag | 0) {
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
return /* Any_ty */Block.__(12, [trans(ty1[0], ty2[0])]);
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
788,
19
]
];
}
}
break;
case 13 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
792,
22
]
];
}
else {
switch (ty2.tag | 0) {
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
return /* Reader_ty */Block.__(13, [trans(ty1[0], ty2[0])]);
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
792,
22
]
];
}
}
break;
case 14 :
if (typeof ty2 === "number") {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
797,
30
]
];
}
else {
switch (ty2.tag | 0) {
case 10 :
exit = 1;
break;
case 11 :
exit = 2;
break;
case 12 :
exit = 3;
break;
case 13 :
exit = 4;
break;
case 14 :
return /* Ignored_reader_ty */Block.__(14, [trans(ty1[0], ty2[0])]);
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
797,
30
]
];
}
}
break;
}
}
switch (exit) {
case 1 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
781,
21
]
];
case 2 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
785,
21
]
];
case 3 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
789,
19
]
];
case 4 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
793,
22
]
];
case 5 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
798,
30
]
];
case 6 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
803,
26
]
];
case 7 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
813,
28
]
];
case 8 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
817,
23
]
];
}
}
function fmtty_of_formatting_gen(formatting_gen) {
return fmtty_of_fmt(formatting_gen[0][0]);
}
function fmtty_of_fmt(_fmtty) {
while(true) {
var fmtty = _fmtty;
if (typeof fmtty === "number") {
return /* End_of_fmtty */0;
}
else {
switch (fmtty.tag | 0) {
case 2 :
case 3 :
return fmtty_of_padding_fmtty(fmtty[0], /* String_ty */Block.__(1, [fmtty_of_fmt(fmtty[1])]));
case 4 :
var ty_rest = fmtty_of_fmt(fmtty[3]);
var prec_ty = fmtty_of_precision_fmtty(fmtty[2], /* Int_ty */Block.__(2, [ty_rest]));
return fmtty_of_padding_fmtty(fmtty[1], prec_ty);
case 5 :
var ty_rest$1 = fmtty_of_fmt(fmtty[3]);
var prec_ty$1 = fmtty_of_precision_fmtty(fmtty[2], /* Int32_ty */Block.__(3, [ty_rest$1]));
return fmtty_of_padding_fmtty(fmtty[1], prec_ty$1);
case 6 :
var ty_rest$2 = fmtty_of_fmt(fmtty[3]);
var prec_ty$2 = fmtty_of_precision_fmtty(fmtty[2], /* Nativeint_ty */Block.__(4, [ty_rest$2]));
return fmtty_of_padding_fmtty(fmtty[1], prec_ty$2);
case 7 :
var ty_rest$3 = fmtty_of_fmt(fmtty[3]);
var prec_ty$3 = fmtty_of_precision_fmtty(fmtty[2], /* Int64_ty */Block.__(5, [ty_rest$3]));
return fmtty_of_padding_fmtty(fmtty[1], prec_ty$3);
case 8 :
var ty_rest$4 = fmtty_of_fmt(fmtty[3]);
var prec_ty$4 = fmtty_of_precision_fmtty(fmtty[2], /* Float_ty */Block.__(6, [ty_rest$4]));
return fmtty_of_padding_fmtty(fmtty[1], prec_ty$4);
case 9 :
return /* Bool_ty */Block.__(7, [fmtty_of_fmt(fmtty[0])]);
case 10 :
_fmtty = fmtty[0];
continue ;
case 13 :
return /* Format_arg_ty */Block.__(8, [
fmtty[1],
fmtty_of_fmt(fmtty[2])
]);
case 14 :
var ty = fmtty[1];
return /* Format_subst_ty */Block.__(9, [
ty,
ty,
fmtty_of_fmt(fmtty[2])
]);
case 15 :
return /* Alpha_ty */Block.__(10, [fmtty_of_fmt(fmtty[0])]);
case 16 :
return /* Theta_ty */Block.__(11, [fmtty_of_fmt(fmtty[0])]);
case 11 :
case 12 :
case 17 :
_fmtty = fmtty[1];
continue ;
case 18 :
return CamlinternalFormatBasics.concat_fmtty(fmtty_of_formatting_gen(fmtty[0]), fmtty_of_fmt(fmtty[1]));
case 19 :
return /* Reader_ty */Block.__(13, [fmtty_of_fmt(fmtty[0])]);
case 20 :
return /* String_ty */Block.__(1, [fmtty_of_fmt(fmtty[2])]);
case 21 :
return /* Int_ty */Block.__(2, [fmtty_of_fmt(fmtty[1])]);
case 0 :
case 1 :
case 22 :
return /* Char_ty */Block.__(0, [fmtty_of_fmt(fmtty[0])]);
case 23 :
var ign = fmtty[0];
var fmt = fmtty[1];
if (typeof ign === "number") {
switch (ign) {
case 3 :
return /* Ignored_reader_ty */Block.__(14, [fmtty_of_fmt(fmt)]);
case 0 :
case 1 :
case 2 :
case 4 :
return fmtty_of_fmt(fmt);
}
}
else {
switch (ign.tag | 0) {
case 8 :
return CamlinternalFormatBasics.concat_fmtty(ign[1], fmtty_of_fmt(fmt));
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 9 :
case 10 :
return fmtty_of_fmt(fmt);
}
}
case 24 :
return fmtty_of_custom(fmtty[0], fmtty_of_fmt(fmtty[2]));
}
}
};
}
function fmtty_of_custom(arity, fmtty) {
if (arity) {
return /* Any_ty */Block.__(12, [fmtty_of_custom(arity[0], fmtty)]);
}
else {
return fmtty;
}
}
function fmtty_of_padding_fmtty(pad, fmtty) {
if (typeof pad === "number" || !pad.tag) {
return fmtty;
}
else {
return /* Int_ty */Block.__(2, [fmtty]);
}
}
function fmtty_of_precision_fmtty(prec, fmtty) {
if (typeof prec === "number" && prec !== 0) {
return /* Int_ty */Block.__(2, [fmtty]);
}
else {
return fmtty;
}
}
var Type_mismatch = Caml_exceptions.create("CamlinternalFormat.Type_mismatch");
function type_padding(pad, fmtty) {
if (typeof pad === "number") {
return /* Padding_fmtty_EBB */[
/* No_padding */0,
fmtty
];
}
else if (pad.tag) {
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 2) {
return /* Padding_fmtty_EBB */[
/* Arg_padding */Block.__(1, [pad[0]]),
fmtty[0]
];
}
else {
throw Type_mismatch;
}
}
else {
return /* Padding_fmtty_EBB */[
/* Lit_padding */Block.__(0, [
pad[0],
pad[1]
]),
fmtty
];
}
}
function type_padprec(pad, prec, fmtty) {
var match = type_padding(pad, fmtty);
if (typeof prec === "number") {
if (prec !== 0) {
var match$1 = match[1];
if (typeof match$1 === "number") {
throw Type_mismatch;
}
else if (match$1.tag === 2) {
return /* Padprec_fmtty_EBB */[
match[0],
/* Arg_precision */1,
match$1[0]
];
}
else {
throw Type_mismatch;
}
}
else {
return /* Padprec_fmtty_EBB */[
match[0],
/* No_precision */0,
match[1]
];
}
}
else {
return /* Padprec_fmtty_EBB */[
match[0],
/* Lit_precision */[prec[0]],
match[1]
];
}
}
function type_ignored_param_one(ign, fmt, fmtty) {
var match = type_format_gen(fmt, fmtty);
return /* Fmt_fmtty_EBB */[
/* Ignored_param */Block.__(23, [
ign,
match[0]
]),
match[1]
];
}
function type_format_gen(fmt, fmtty) {
if (typeof fmt === "number") {
return /* Fmt_fmtty_EBB */[
/* End_of_format */0,
fmtty
];
}
else {
switch (fmt.tag | 0) {
case 0 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag) {
throw Type_mismatch;
}
else {
var match = type_format_gen(fmt[0], fmtty[0]);
return /* Fmt_fmtty_EBB */[
/* Char */Block.__(0, [match[0]]),
match[1]
];
}
break;
case 1 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag) {
throw Type_mismatch;
}
else {
var match$1 = type_format_gen(fmt[0], fmtty[0]);
return /* Fmt_fmtty_EBB */[
/* Caml_char */Block.__(1, [match$1[0]]),
match$1[1]
];
}
break;
case 2 :
var match$2 = type_padding(fmt[0], fmtty);
var match$3 = match$2[1];
if (typeof match$3 === "number") {
throw Type_mismatch;
}
else if (match$3.tag === 1) {
var match$4 = type_format_gen(fmt[1], match$3[0]);
return /* Fmt_fmtty_EBB */[
/* String */Block.__(2, [
match$2[0],
match$4[0]
]),
match$4[1]
];
}
else {
throw Type_mismatch;
}
break;
case 3 :
var match$5 = type_padding(fmt[0], fmtty);
var match$6 = match$5[1];
if (typeof match$6 === "number") {
throw Type_mismatch;
}
else if (match$6.tag === 1) {
var match$7 = type_format_gen(fmt[1], match$6[0]);
return /* Fmt_fmtty_EBB */[
/* Caml_string */Block.__(3, [
match$5[0],
match$7[0]
]),
match$7[1]
];
}
else {
throw Type_mismatch;
}
break;
case 4 :
var match$8 = type_padprec(fmt[1], fmt[2], fmtty);
var match$9 = match$8[2];
if (typeof match$9 === "number") {
throw Type_mismatch;
}
else if (match$9.tag === 2) {
var match$10 = type_format_gen(fmt[3], match$9[0]);
return /* Fmt_fmtty_EBB */[
/* Int */Block.__(4, [
fmt[0],
match$8[0],
match$8[1],
match$10[0]
]),
match$10[1]
];
}
else {
throw Type_mismatch;
}
break;
case 5 :
var match$11 = type_padprec(fmt[1], fmt[2], fmtty);
var match$12 = match$11[2];
if (typeof match$12 === "number") {
throw Type_mismatch;
}
else if (match$12.tag === 3) {
var match$13 = type_format_gen(fmt[3], match$12[0]);
return /* Fmt_fmtty_EBB */[
/* Int32 */Block.__(5, [
fmt[0],
match$11[0],
match$11[1],
match$13[0]
]),
match$13[1]
];
}
else {
throw Type_mismatch;
}
break;
case 6 :
var match$14 = type_padprec(fmt[1], fmt[2], fmtty);
var match$15 = match$14[2];
if (typeof match$15 === "number") {
throw Type_mismatch;
}
else if (match$15.tag === 4) {
var match$16 = type_format_gen(fmt[3], match$15[0]);
return /* Fmt_fmtty_EBB */[
/* Nativeint */Block.__(6, [
fmt[0],
match$14[0],
match$14[1],
match$16[0]
]),
match$16[1]
];
}
else {
throw Type_mismatch;
}
break;
case 7 :
var match$17 = type_padprec(fmt[1], fmt[2], fmtty);
var match$18 = match$17[2];
if (typeof match$18 === "number") {
throw Type_mismatch;
}
else if (match$18.tag === 5) {
var match$19 = type_format_gen(fmt[3], match$18[0]);
return /* Fmt_fmtty_EBB */[
/* Int64 */Block.__(7, [
fmt[0],
match$17[0],
match$17[1],
match$19[0]
]),
match$19[1]
];
}
else {
throw Type_mismatch;
}
break;
case 8 :
var match$20 = type_padprec(fmt[1], fmt[2], fmtty);
var match$21 = match$20[2];
if (typeof match$21 === "number") {
throw Type_mismatch;
}
else if (match$21.tag === 6) {
var match$22 = type_format_gen(fmt[3], match$21[0]);
return /* Fmt_fmtty_EBB */[
/* Float */Block.__(8, [
fmt[0],
match$20[0],
match$20[1],
match$22[0]
]),
match$22[1]
];
}
else {
throw Type_mismatch;
}
break;
case 9 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 7) {
var match$23 = type_format_gen(fmt[0], fmtty[0]);
return /* Fmt_fmtty_EBB */[
/* Bool */Block.__(9, [match$23[0]]),
match$23[1]
];
}
else {
throw Type_mismatch;
}
break;
case 10 :
var match$24 = type_format_gen(fmt[0], fmtty);
return /* Fmt_fmtty_EBB */[
/* Flush */Block.__(10, [match$24[0]]),
match$24[1]
];
case 11 :
var match$25 = type_format_gen(fmt[1], fmtty);
return /* Fmt_fmtty_EBB */[
/* String_literal */Block.__(11, [
fmt[0],
match$25[0]
]),
match$25[1]
];
case 12 :
var match$26 = type_format_gen(fmt[1], fmtty);
return /* Fmt_fmtty_EBB */[
/* Char_literal */Block.__(12, [
fmt[0],
match$26[0]
]),
match$26[1]
];
case 13 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 8) {
var sub_fmtty$prime = fmtty[0];
if (Caml_obj.caml_notequal(/* Fmtty_EBB */[fmt[1]], /* Fmtty_EBB */[sub_fmtty$prime])) {
throw Type_mismatch;
}
var match$27 = type_format_gen(fmt[2], fmtty[1]);
return /* Fmt_fmtty_EBB */[
/* Format_arg */Block.__(13, [
fmt[0],
sub_fmtty$prime,
match$27[0]
]),
match$27[1]
];
}
else {
throw Type_mismatch;
}
break;
case 14 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 9) {
var sub_fmtty1 = fmtty[0];
if (Caml_obj.caml_notequal(/* Fmtty_EBB */[CamlinternalFormatBasics.erase_rel(fmt[1])], /* Fmtty_EBB */[CamlinternalFormatBasics.erase_rel(sub_fmtty1)])) {
throw Type_mismatch;
}
var match$28 = type_format_gen(fmt[2], CamlinternalFormatBasics.erase_rel(fmtty[2]));
return /* Fmt_fmtty_EBB */[
/* Format_subst */Block.__(14, [
fmt[0],
sub_fmtty1,
match$28[0]
]),
match$28[1]
];
}
else {
throw Type_mismatch;
}
break;
case 15 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 10) {
var match$29 = type_format_gen(fmt[0], fmtty[0]);
return /* Fmt_fmtty_EBB */[
/* Alpha */Block.__(15, [match$29[0]]),
match$29[1]
];
}
else {
throw Type_mismatch;
}
break;
case 16 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 11) {
var match$30 = type_format_gen(fmt[0], fmtty[0]);
return /* Fmt_fmtty_EBB */[
/* Theta */Block.__(16, [match$30[0]]),
match$30[1]
];
}
else {
throw Type_mismatch;
}
break;
case 17 :
var match$31 = type_format_gen(fmt[1], fmtty);
return /* Fmt_fmtty_EBB */[
/* Formatting_lit */Block.__(17, [
fmt[0],
match$31[0]
]),
match$31[1]
];
case 18 :
var formatting_gen = fmt[0];
var fmt0 = fmt[1];
var fmtty0 = fmtty;
if (formatting_gen.tag) {
var match$32 = formatting_gen[0];
var match$33 = type_format_gen(match$32[0], fmtty0);
var match$34 = type_format_gen(fmt0, match$33[1]);
return /* Fmt_fmtty_EBB */[
/* Formatting_gen */Block.__(18, [
/* Open_box */Block.__(1, [/* Format */[
match$33[0],
match$32[1]
]]),
match$34[0]
]),
match$34[1]
];
}
else {
var match$35 = formatting_gen[0];
var match$36 = type_format_gen(match$35[0], fmtty0);
var match$37 = type_format_gen(fmt0, match$36[1]);
return /* Fmt_fmtty_EBB */[
/* Formatting_gen */Block.__(18, [
/* Open_tag */Block.__(0, [/* Format */[
match$36[0],
match$35[1]
]]),
match$37[0]
]),
match$37[1]
];
}
case 19 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 13) {
var match$38 = type_format_gen(fmt[0], fmtty[0]);
return /* Fmt_fmtty_EBB */[
/* Reader */Block.__(19, [match$38[0]]),
match$38[1]
];
}
else {
throw Type_mismatch;
}
break;
case 20 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 1) {
var match$39 = type_format_gen(fmt[2], fmtty[0]);
return /* Fmt_fmtty_EBB */[
/* Scan_char_set */Block.__(20, [
fmt[0],
fmt[1],
match$39[0]
]),
match$39[1]
];
}
else {
throw Type_mismatch;
}
break;
case 21 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 2) {
var match$40 = type_format_gen(fmt[1], fmtty[0]);
return /* Fmt_fmtty_EBB */[
/* Scan_get_counter */Block.__(21, [
fmt[0],
match$40[0]
]),
match$40[1]
];
}
else {
throw Type_mismatch;
}
break;
case 23 :
var ign = fmt[0];
var fmt$1 = fmt[1];
var fmtty$1 = fmtty;
if (typeof ign === "number") {
switch (ign) {
case 3 :
if (typeof fmtty$1 === "number") {
throw Type_mismatch;
}
else if (fmtty$1.tag === 14) {
var match$41 = type_format_gen(fmt$1, fmtty$1[0]);
return /* Fmt_fmtty_EBB */[
/* Ignored_param */Block.__(23, [
/* Ignored_reader */3,
match$41[0]
]),
match$41[1]
];
}
else {
throw Type_mismatch;
}
break;
case 0 :
case 1 :
case 2 :
case 4 :
return type_ignored_param_one(ign, fmt$1, fmtty$1);
}
}
else {
switch (ign.tag | 0) {
case 7 :
return type_ignored_param_one(/* Ignored_format_arg */Block.__(7, [
ign[0],
ign[1]
]), fmt$1, fmtty$1);
case 8 :
var match$42 = type_ignored_format_substitution(ign[1], fmt$1, fmtty$1);
var match$43 = match$42[1];
return /* Fmt_fmtty_EBB */[
/* Ignored_param */Block.__(23, [
/* Ignored_format_subst */Block.__(8, [
ign[0],
match$42[0]
]),
match$43[0]
]),
match$43[1]
];
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 9 :
case 10 :
return type_ignored_param_one(ign, fmt$1, fmtty$1);
}
}
case 22 :
case 24 :
throw Type_mismatch;
}
}
}
function type_ignored_format_substitution(sub_fmtty, fmt, fmtty) {
if (typeof sub_fmtty === "number") {
return /* Fmtty_fmt_EBB */[
/* End_of_fmtty */0,
type_format_gen(fmt, fmtty)
];
}
else {
switch (sub_fmtty.tag | 0) {
case 0 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag) {
throw Type_mismatch;
}
else {
var match = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Char_ty */Block.__(0, [match[0]]),
match[1]
];
}
break;
case 1 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 1) {
var match$1 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* String_ty */Block.__(1, [match$1[0]]),
match$1[1]
];
}
else {
throw Type_mismatch;
}
break;
case 2 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 2) {
var match$2 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Int_ty */Block.__(2, [match$2[0]]),
match$2[1]
];
}
else {
throw Type_mismatch;
}
break;
case 3 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 3) {
var match$3 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Int32_ty */Block.__(3, [match$3[0]]),
match$3[1]
];
}
else {
throw Type_mismatch;
}
break;
case 4 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 4) {
var match$4 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Nativeint_ty */Block.__(4, [match$4[0]]),
match$4[1]
];
}
else {
throw Type_mismatch;
}
break;
case 5 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 5) {
var match$5 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Int64_ty */Block.__(5, [match$5[0]]),
match$5[1]
];
}
else {
throw Type_mismatch;
}
break;
case 6 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 6) {
var match$6 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Float_ty */Block.__(6, [match$6[0]]),
match$6[1]
];
}
else {
throw Type_mismatch;
}
break;
case 7 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 7) {
var match$7 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Bool_ty */Block.__(7, [match$7[0]]),
match$7[1]
];
}
else {
throw Type_mismatch;
}
break;
case 8 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 8) {
var sub2_fmtty$prime = fmtty[0];
if (Caml_obj.caml_notequal(/* Fmtty_EBB */[sub_fmtty[0]], /* Fmtty_EBB */[sub2_fmtty$prime])) {
throw Type_mismatch;
}
var match$8 = type_ignored_format_substitution(sub_fmtty[1], fmt, fmtty[1]);
return /* Fmtty_fmt_EBB */[
/* Format_arg_ty */Block.__(8, [
sub2_fmtty$prime,
match$8[0]
]),
match$8[1]
];
}
else {
throw Type_mismatch;
}
break;
case 9 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 9) {
var sub2_fmtty$prime$1 = fmtty[1];
var sub1_fmtty$prime = fmtty[0];
if (Caml_obj.caml_notequal(/* Fmtty_EBB */[CamlinternalFormatBasics.erase_rel(sub_fmtty[0])], /* Fmtty_EBB */[CamlinternalFormatBasics.erase_rel(sub1_fmtty$prime)])) {
throw Type_mismatch;
}
if (Caml_obj.caml_notequal(/* Fmtty_EBB */[CamlinternalFormatBasics.erase_rel(sub_fmtty[1])], /* Fmtty_EBB */[CamlinternalFormatBasics.erase_rel(sub2_fmtty$prime$1)])) {
throw Type_mismatch;
}
var sub_fmtty$prime = trans(symm(sub1_fmtty$prime), sub2_fmtty$prime$1);
var match$9 = fmtty_rel_det(sub_fmtty$prime);
Curry._1(match$9[1], /* Refl */0);
Curry._1(match$9[3], /* Refl */0);
var match$10 = type_ignored_format_substitution(CamlinternalFormatBasics.erase_rel(sub_fmtty[2]), fmt, fmtty[2]);
return /* Fmtty_fmt_EBB */[
/* Format_subst_ty */Block.__(9, [
sub1_fmtty$prime,
sub2_fmtty$prime$1,
symm(match$10[0])
]),
match$10[1]
];
}
else {
throw Type_mismatch;
}
break;
case 10 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 10) {
var match$11 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Alpha_ty */Block.__(10, [match$11[0]]),
match$11[1]
];
}
else {
throw Type_mismatch;
}
break;
case 11 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 11) {
var match$12 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Theta_ty */Block.__(11, [match$12[0]]),
match$12[1]
];
}
else {
throw Type_mismatch;
}
break;
case 12 :
throw Type_mismatch;
case 13 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 13) {
var match$13 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Reader_ty */Block.__(13, [match$13[0]]),
match$13[1]
];
}
else {
throw Type_mismatch;
}
break;
case 14 :
if (typeof fmtty === "number") {
throw Type_mismatch;
}
else if (fmtty.tag === 14) {
var match$14 = type_ignored_format_substitution(sub_fmtty[0], fmt, fmtty[0]);
return /* Fmtty_fmt_EBB */[
/* Ignored_reader_ty */Block.__(14, [match$14[0]]),
match$14[1]
];
}
else {
throw Type_mismatch;
}
break;
}
}
}
function type_format(fmt, fmtty) {
var match = type_format_gen(fmt, fmtty);
if (typeof match[1] === "number") {
return match[0];
}
else {
throw Type_mismatch;
}
}
function recast(fmt, fmtty) {
return type_format(fmt, CamlinternalFormatBasics.erase_rel(symm(fmtty)));
}
function fix_padding(padty, width, str) {
var len = str.length;
var match_000 = Pervasives.abs(width);
var match_001 = width < 0 ? /* Left */0 : padty;
var padty$1 = match_001;
var width$1 = match_000;
if (width$1 <= len) {
return str;
}
else {
var res = Bytes.make(width$1, padty$1 === /* Zeros */2 ? /* "0" */48 : /* " " */32);
switch (padty$1) {
case 0 :
$$String.blit(str, 0, res, 0, len);
break;
case 1 :
$$String.blit(str, 0, res, width$1 - len | 0, len);
break;
case 2 :
if (len > 0 && (Caml_string.get(str, 0) === /* "+" */43 || Caml_string.get(str, 0) === /* "-" */45 || Caml_string.get(str, 0) === /* " " */32)) {
res[0] = Caml_string.get(str, 0);
$$String.blit(str, 1, res, (width$1 - len | 0) + 1 | 0, len - 1 | 0);
}
else if (len > 1 && Caml_string.get(str, 0) === /* "0" */48 && (Caml_string.get(str, 1) === /* "x" */120 || Caml_string.get(str, 1) === /* "X" */88)) {
res[1] = Caml_string.get(str, 1);
$$String.blit(str, 2, res, (width$1 - len | 0) + 2 | 0, len - 2 | 0);
}
else {
$$String.blit(str, 0, res, width$1 - len | 0, len);
}
break;
}
return Caml_string.bytes_to_string(res);
}
}
function fix_int_precision(prec, str) {
var prec$1 = Pervasives.abs(prec);
var len = str.length;
var c = Caml_string.get(str, 0);
var exit = 0;
if (c >= 58) {
if (c >= 71) {
if (c > 102 || c < 97) {
return str;
}
else {
exit = 2;
}
}
else if (c >= 65) {
exit = 2;
}
else {
return str;
}
}
else if (c !== 32) {
if (c >= 43) {
switch (c - 43 | 0) {
case 0 :
case 2 :
exit = 1;
break;
case 1 :
case 3 :
case 4 :
return str;
case 5 :
if ((prec$1 + 2 | 0) > len && len > 1 && (Caml_string.get(str, 1) === /* "x" */120 || Caml_string.get(str, 1) === /* "X" */88)) {
var res = Bytes.make(prec$1 + 2 | 0, /* "0" */48);
res[1] = Caml_string.get(str, 1);
$$String.blit(str, 2, res, (prec$1 - len | 0) + 4 | 0, len - 2 | 0);
return Caml_string.bytes_to_string(res);
}
else {
exit = 2;
}
break;
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 11 :
case 12 :
case 13 :
case 14 :
exit = 2;
break;
}
}
else {
return str;
}
}
else {
exit = 1;
}
switch (exit) {
case 1 :
if ((prec$1 + 1 | 0) > len) {
var res$1 = Bytes.make(prec$1 + 1 | 0, /* "0" */48);
res$1[0] = c;
$$String.blit(str, 1, res$1, (prec$1 - len | 0) + 2 | 0, len - 1 | 0);
return Caml_string.bytes_to_string(res$1);
}
else {
return str;
}
break;
case 2 :
if (prec$1 > len) {
var res$2 = Bytes.make(prec$1, /* "0" */48);
$$String.blit(str, 0, res$2, prec$1 - len | 0, len);
return Caml_string.bytes_to_string(res$2);
}
else {
return str;
}
break;
}
}
function string_to_caml_string(str) {
return $$String.concat($$String.escaped(str), /* :: */[
'"',
/* :: */[
'"',
/* [] */0
]
]);
}
function format_of_iconv(iconv) {
switch (iconv) {
case 0 :
return "%d";
case 1 :
return "%+d";
case 2 :
return "% d";
case 3 :
return "%i";
case 4 :
return "%+i";
case 5 :
return "% i";
case 6 :
return "%x";
case 7 :
return "%#x";
case 8 :
return "%X";
case 9 :
return "%#X";
case 10 :
return "%o";
case 11 :
return "%#o";
case 12 :
return "%u";
}
}
function format_of_aconv(iconv, c) {
var seps;
switch (iconv) {
case 0 :
seps = /* :: */[
"%",
/* :: */[
"d",
/* [] */0
]
];
break;
case 1 :
seps = /* :: */[
"%+",
/* :: */[
"d",
/* [] */0
]
];
break;
case 2 :
seps = /* :: */[
"% ",
/* :: */[
"d",
/* [] */0
]
];
break;
case 3 :
seps = /* :: */[
"%",
/* :: */[
"i",
/* [] */0
]
];
break;
case 4 :
seps = /* :: */[
"%+",
/* :: */[
"i",
/* [] */0
]
];
break;
case 5 :
seps = /* :: */[
"% ",
/* :: */[
"i",
/* [] */0
]
];
break;
case 6 :
seps = /* :: */[
"%",
/* :: */[
"x",
/* [] */0
]
];
break;
case 7 :
seps = /* :: */[
"%#",
/* :: */[
"x",
/* [] */0
]
];
break;
case 8 :
seps = /* :: */[
"%",
/* :: */[
"X",
/* [] */0
]
];
break;
case 9 :
seps = /* :: */[
"%#",
/* :: */[
"X",
/* [] */0
]
];
break;
case 10 :
seps = /* :: */[
"%",
/* :: */[
"o",
/* [] */0
]
];
break;
case 11 :
seps = /* :: */[
"%#",
/* :: */[
"o",
/* [] */0
]
];
break;
case 12 :
seps = /* :: */[
"%",
/* :: */[
"u",
/* [] */0
]
];
break;
}
return $$String.concat(Caml_string.bytes_to_string(Bytes.make(1, c)), seps);
}
function format_of_fconv(fconv, prec) {
if (fconv === /* Float_F */15) {
return "%.12g";
}
else {
var prec$1 = Pervasives.abs(prec);
var symb = char_of_fconv(fconv);
var buf = /* record */[
/* ind */0,
/* bytes */new Array(16)
];
buffer_add_char(buf, /* "%" */37);
bprint_fconv_flag(buf, fconv);
buffer_add_char(buf, /* "." */46);
buffer_add_string(buf, "" + prec$1);
buffer_add_char(buf, symb);
return buffer_contents(buf);
}
}
function convert_int(iconv, n) {
return Caml_format.caml_format_int(format_of_iconv(iconv), n);
}
function convert_int32(iconv, n) {
return Caml_format.caml_int32_format(format_of_aconv(iconv, /* "l" */108), n);
}
function convert_nativeint(iconv, n) {
return Caml_format.caml_nativeint_format(format_of_aconv(iconv, /* "n" */110), n);
}
function convert_int64(iconv, n) {
return Caml_format.caml_int64_format(format_of_aconv(iconv, /* "L" */76), n);
}
function convert_float(fconv, prec, x) {
var prec$1 = Pervasives.abs(prec);
var str = Caml_format.caml_format_float(format_of_fconv(fconv, prec$1), x);
if (fconv !== /* Float_F */15) {
return str;
}
else {
var len = str.length;
var is_valid = function (_i) {
while(true) {
var i = _i;
if (i === len) {
return /* false */0;
}
else {
var match = Caml_string.get(str, i);
var switcher = match - 46 | 0;
if (switcher > 23 || switcher < 0) {
if (switcher !== 55) {
_i = i + 1 | 0;
continue ;
}
else {
return /* true */1;
}
}
else if (switcher > 22 || switcher < 1) {
return /* true */1;
}
else {
_i = i + 1 | 0;
continue ;
}
}
};
};
var match = Caml_float.caml_classify_float(x);
if (match !== 3) {
if (match >= 4) {
return "nan";
}
else if (is_valid(0)) {
return str;
}
else {
return str + ".";
}
}
else if (x < 0.0) {
return "neg_infinity";
}
else {
return "infinity";
}
}
}
function format_caml_char(c) {
return $$String.concat(Char.escaped(c), /* :: */[
"'",
/* :: */[
"'",
/* [] */0
]
]);
}
function string_of_fmtty(fmtty) {
var buf = /* record */[
/* ind */0,
/* bytes */new Array(16)
];
bprint_fmtty(buf, fmtty);
return buffer_contents(buf);
}
function make_printf(_k, o, _acc, _fmt) {
while(true) {
var fmt = _fmt;
var acc = _acc;
var k = _k;
if (typeof fmt === "number") {
return Curry._2(k, o, acc);
}
else {
switch (fmt.tag | 0) {
case 0 :
var rest = fmt[0];
return (function(k,acc,rest){
return function (c) {
var new_acc = /* Acc_data_char */Block.__(5, [
acc,
c
]);
return make_printf(k, o, new_acc, rest);
}
}(k,acc,rest));
case 1 :
var rest$1 = fmt[0];
return (function(k,acc,rest$1){
return function (c) {
var new_acc_001 = format_caml_char(c);
var new_acc = /* Acc_data_string */Block.__(4, [
acc,
new_acc_001
]);
return make_printf(k, o, new_acc, rest$1);
}
}(k,acc,rest$1));
case 2 :
return make_string_padding(k, o, acc, fmt[1], fmt[0], function (str) {
return str;
});
case 3 :
return make_string_padding(k, o, acc, fmt[1], fmt[0], string_to_caml_string);
case 4 :
return make_int_padding_precision(k, o, acc, fmt[3], fmt[1], fmt[2], convert_int, fmt[0]);
case 5 :
return make_int_padding_precision(k, o, acc, fmt[3], fmt[1], fmt[2], convert_int32, fmt[0]);
case 6 :
return make_int_padding_precision(k, o, acc, fmt[3], fmt[1], fmt[2], convert_nativeint, fmt[0]);
case 7 :
return make_int_padding_precision(k, o, acc, fmt[3], fmt[1], fmt[2], convert_int64, fmt[0]);
case 8 :
var k$1 = k;
var o$1 = o;
var acc$1 = acc;
var fmt$1 = fmt[3];
var pad = fmt[1];
var prec = fmt[2];
var fconv = fmt[0];
if (typeof pad === "number") {
if (typeof prec === "number") {
if (prec !== 0) {
return (function(k$1,o$1,acc$1,fmt$1,fconv){
return function (p, x) {
var str = convert_float(fconv, p, x);
return make_printf(k$1, o$1, /* Acc_data_string */Block.__(4, [
acc$1,
str
]), fmt$1);
}
}(k$1,o$1,acc$1,fmt$1,fconv));
}
else {
return (function(k$1,o$1,acc$1,fmt$1,fconv){
return function (x) {
var str = convert_float(fconv, 6, x);
return make_printf(k$1, o$1, /* Acc_data_string */Block.__(4, [
acc$1,
str
]), fmt$1);
}
}(k$1,o$1,acc$1,fmt$1,fconv));
}
}
else {
var p = prec[0];
return (function(k$1,o$1,acc$1,fmt$1,fconv,p){
return function (x) {
var str = convert_float(fconv, p, x);
return make_printf(k$1, o$1, /* Acc_data_string */Block.__(4, [
acc$1,
str
]), fmt$1);
}
}(k$1,o$1,acc$1,fmt$1,fconv,p));
}
}
else if (pad.tag) {
var padty = pad[0];
if (typeof prec === "number") {
if (prec !== 0) {
return (function(k$1,o$1,acc$1,fmt$1,fconv,padty){
return function (w, p, x) {
var str = fix_padding(padty, w, convert_float(fconv, p, x));
return make_printf(k$1, o$1, /* Acc_data_string */Block.__(4, [
acc$1,
str
]), fmt$1);
}
}(k$1,o$1,acc$1,fmt$1,fconv,padty));
}
else {
return (function(k$1,o$1,acc$1,fmt$1,fconv,padty){
return function (w, x) {
var str = convert_float(fconv, 6, x);
var str$prime = fix_padding(padty, w, str);
return make_printf(k$1, o$1, /* Acc_data_string */Block.__(4, [
acc$1,
str$prime
]), fmt$1);
}
}(k$1,o$1,acc$1,fmt$1,fconv,padty));
}
}
else {
var p$1 = prec[0];
return (function(k$1,o$1,acc$1,fmt$1,fconv,padty,p$1){
return function (w, x) {
var str = fix_padding(padty, w, convert_float(fconv, p$1, x));
return make_printf(k$1, o$1, /* Acc_data_string */Block.__(4, [
acc$1,
str
]), fmt$1);
}
}(k$1,o$1,acc$1,fmt$1,fconv,padty,p$1));
}
}
else {
var w = pad[1];
var padty$1 = pad[0];
if (typeof prec === "number") {
if (prec !== 0) {
return (function(k$1,o$1,acc$1,fmt$1,fconv,padty$1,w){
return function (p, x) {
var str = fix_padding(padty$1, w, convert_float(fconv, p, x));
return make_printf(k$1, o$1, /* Acc_data_string */Block.__(4, [
acc$1,
str
]), fmt$1);
}
}(k$1,o$1,acc$1,fmt$1,fconv,padty$1,w));
}
else {
return (function(k$1,o$1,acc$1,fmt$1,fconv,padty$1,w){
return function (x) {
var str = convert_float(fconv, 6, x);
var str$prime = fix_padding(padty$1, w, str);
return make_printf(k$1, o$1, /* Acc_data_string */Block.__(4, [
acc$1,
str$prime
]), fmt$1);
}
}(k$1,o$1,acc$1,fmt$1,fconv,padty$1,w));
}
}
else {
var p$2 = prec[0];
return (function(k$1,o$1,acc$1,fmt$1,fconv,padty$1,w,p$2){
return function (x) {
var str = fix_padding(padty$1, w, convert_float(fconv, p$2, x));
return make_printf(k$1, o$1, /* Acc_data_string */Block.__(4, [
acc$1,
str
]), fmt$1);
}
}(k$1,o$1,acc$1,fmt$1,fconv,padty$1,w,p$2));
}
}
case 9 :
var rest$2 = fmt[0];
return (function(k,acc,rest$2){
return function (b) {
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
b ? "true" : "false"
]), rest$2);
}
}(k,acc,rest$2));
case 10 :
_fmt = fmt[0];
_acc = /* Acc_flush */Block.__(7, [acc]);
continue ;
case 11 :
_fmt = fmt[1];
_acc = /* Acc_string_literal */Block.__(2, [
acc,
fmt[0]
]);
continue ;
case 12 :
_fmt = fmt[1];
_acc = /* Acc_char_literal */Block.__(3, [
acc,
fmt[0]
]);
continue ;
case 13 :
var rest$3 = fmt[2];
var ty = string_of_fmtty(fmt[1]);
return (function(k,acc,rest$3,ty){
return function () {
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
ty
]), rest$3);
}
}(k,acc,rest$3,ty));
case 14 :
var rest$4 = fmt[2];
var fmtty = fmt[1];
return (function(k,acc,fmtty,rest$4){
return function (param) {
return make_printf(k, o, acc, CamlinternalFormatBasics.concat_fmt(recast(param[0], fmtty), rest$4));
}
}(k,acc,fmtty,rest$4));
case 15 :
var rest$5 = fmt[0];
return (function(k,acc,rest$5){
return function (f, x) {
return make_printf(k, o, /* Acc_delay */Block.__(6, [
acc,
function (o) {
return Curry._2(f, o, x);
}
]), rest$5);
}
}(k,acc,rest$5));
case 16 :
var rest$6 = fmt[0];
return (function(k,acc,rest$6){
return function (f) {
return make_printf(k, o, /* Acc_delay */Block.__(6, [
acc,
f
]), rest$6);
}
}(k,acc,rest$6));
case 17 :
_fmt = fmt[1];
_acc = /* Acc_formatting_lit */Block.__(0, [
acc,
fmt[0]
]);
continue ;
case 18 :
var match = fmt[0];
if (match.tag) {
var rest$7 = fmt[1];
var k$prime = (function(k,acc,rest$7){
return function k$prime(koc, kacc) {
return make_printf(k, koc, /* Acc_formatting_gen */Block.__(1, [
acc,
/* Acc_open_box */Block.__(1, [kacc])
]), rest$7);
}
}(k,acc,rest$7));
_fmt = match[0][0];
_acc = /* End_of_acc */0;
_k = k$prime;
continue ;
}
else {
var rest$8 = fmt[1];
var k$prime$1 = (function(k,acc,rest$8){
return function k$prime$1(koc, kacc) {
return make_printf(k, koc, /* Acc_formatting_gen */Block.__(1, [
acc,
/* Acc_open_tag */Block.__(0, [kacc])
]), rest$8);
}
}(k,acc,rest$8));
_fmt = match[0][0];
_acc = /* End_of_acc */0;
_k = k$prime$1;
continue ;
}
break;
case 19 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
1449,
4
]
];
case 20 :
var rest$9 = fmt[2];
var new_acc = /* Acc_invalid_arg */Block.__(8, [
acc,
"Printf: bad conversion %["
]);
return (function(k,rest$9,new_acc){
return function () {
return make_printf(k, o, new_acc, rest$9);
}
}(k,rest$9,new_acc));
case 21 :
var rest$10 = fmt[1];
return (function(k,acc,rest$10){
return function (n) {
var new_acc_001 = Caml_format.caml_format_int("%u", n);
var new_acc = /* Acc_data_string */Block.__(4, [
acc,
new_acc_001
]);
return make_printf(k, o, new_acc, rest$10);
}
}(k,acc,rest$10));
case 22 :
var rest$11 = fmt[0];
return (function(k,acc,rest$11){
return function (c) {
var new_acc = /* Acc_data_char */Block.__(5, [
acc,
c
]);
return make_printf(k, o, new_acc, rest$11);
}
}(k,acc,rest$11));
case 23 :
var k$2 = k;
var o$2 = o;
var acc$2 = acc;
var ign = fmt[0];
var fmt$2 = fmt[1];
if (typeof ign === "number") {
switch (ign) {
case 3 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
1517,
39
]
];
case 0 :
case 1 :
case 2 :
case 4 :
return make_invalid_arg(k$2, o$2, acc$2, fmt$2);
}
}
else {
switch (ign.tag | 0) {
case 8 :
return make_from_fmtty(k$2, o$2, acc$2, ign[1], fmt$2);
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 9 :
case 10 :
return make_invalid_arg(k$2, o$2, acc$2, fmt$2);
}
}
case 24 :
return make_custom(k, o, acc, fmt[2], fmt[0], Curry._1(fmt[1], /* () */0));
}
}
};
}
function make_from_fmtty(k, o, acc, fmtty, fmt) {
if (typeof fmtty === "number") {
return make_invalid_arg(k, o, acc, fmt);
}
else {
switch (fmtty.tag | 0) {
case 0 :
var rest = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest, fmt);
};
case 1 :
var rest$1 = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest$1, fmt);
};
case 2 :
var rest$2 = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest$2, fmt);
};
case 3 :
var rest$3 = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest$3, fmt);
};
case 4 :
var rest$4 = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest$4, fmt);
};
case 5 :
var rest$5 = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest$5, fmt);
};
case 6 :
var rest$6 = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest$6, fmt);
};
case 7 :
var rest$7 = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest$7, fmt);
};
case 8 :
var rest$8 = fmtty[1];
return function () {
return make_from_fmtty(k, o, acc, rest$8, fmt);
};
case 9 :
var rest$9 = fmtty[2];
var ty = trans(symm(fmtty[0]), fmtty[1]);
return function () {
return make_from_fmtty(k, o, acc, CamlinternalFormatBasics.concat_fmtty(ty, rest$9), fmt);
};
case 10 :
var rest$10 = fmtty[0];
return function (_, _$1) {
return make_from_fmtty(k, o, acc, rest$10, fmt);
};
case 11 :
var rest$11 = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest$11, fmt);
};
case 12 :
var rest$12 = fmtty[0];
return function () {
return make_from_fmtty(k, o, acc, rest$12, fmt);
};
case 13 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
1540,
31
]
];
case 14 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
1541,
31
]
];
}
}
}
function make_invalid_arg(k, o, acc, fmt) {
return make_printf(k, o, /* Acc_invalid_arg */Block.__(8, [
acc,
"Printf: bad conversion %_"
]), fmt);
}
function make_string_padding(k, o, acc, fmt, pad, trans) {
if (typeof pad === "number") {
return function (x) {
var new_acc_001 = Curry._1(trans, x);
var new_acc = /* Acc_data_string */Block.__(4, [
acc,
new_acc_001
]);
return make_printf(k, o, new_acc, fmt);
};
}
else if (pad.tag) {
var padty = pad[0];
return function (w, x) {
var new_acc_001 = fix_padding(padty, w, Curry._1(trans, x));
var new_acc = /* Acc_data_string */Block.__(4, [
acc,
new_acc_001
]);
return make_printf(k, o, new_acc, fmt);
};
}
else {
var width = pad[1];
var padty$1 = pad[0];
return function (x) {
var new_acc_001 = fix_padding(padty$1, width, Curry._1(trans, x));
var new_acc = /* Acc_data_string */Block.__(4, [
acc,
new_acc_001
]);
return make_printf(k, o, new_acc, fmt);
};
}
}
function make_int_padding_precision(k, o, acc, fmt, pad, prec, trans, iconv) {
if (typeof pad === "number") {
if (typeof prec === "number") {
if (prec !== 0) {
return function (p, x) {
var str = fix_int_precision(p, Curry._2(trans, iconv, x));
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
str
]), fmt);
};
}
else {
return function (x) {
var str = Curry._2(trans, iconv, x);
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
str
]), fmt);
};
}
}
else {
var p = prec[0];
return function (x) {
var str = fix_int_precision(p, Curry._2(trans, iconv, x));
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
str
]), fmt);
};
}
}
else if (pad.tag) {
var padty = pad[0];
if (typeof prec === "number") {
if (prec !== 0) {
return function (w, p, x) {
var str = fix_padding(padty, w, fix_int_precision(p, Curry._2(trans, iconv, x)));
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
str
]), fmt);
};
}
else {
return function (w, x) {
var str = fix_padding(padty, w, Curry._2(trans, iconv, x));
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
str
]), fmt);
};
}
}
else {
var p$1 = prec[0];
return function (w, x) {
var str = fix_padding(padty, w, fix_int_precision(p$1, Curry._2(trans, iconv, x)));
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
str
]), fmt);
};
}
}
else {
var w = pad[1];
var padty$1 = pad[0];
if (typeof prec === "number") {
if (prec !== 0) {
return function (p, x) {
var str = fix_padding(padty$1, w, fix_int_precision(p, Curry._2(trans, iconv, x)));
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
str
]), fmt);
};
}
else {
return function (x) {
var str = fix_padding(padty$1, w, Curry._2(trans, iconv, x));
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
str
]), fmt);
};
}
}
else {
var p$2 = prec[0];
return function (x) {
var str = fix_padding(padty$1, w, fix_int_precision(p$2, Curry._2(trans, iconv, x)));
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
str
]), fmt);
};
}
}
}
function make_custom(k, o, acc, rest, arity, f) {
if (arity) {
var arity$1 = arity[0];
return function (x) {
return make_custom(k, o, acc, rest, arity$1, Curry._1(f, x));
};
}
else {
return make_printf(k, o, /* Acc_data_string */Block.__(4, [
acc,
f
]), rest);
}
}
function output_acc(o, _acc) {
while(true) {
var acc = _acc;
var exit = 0;
if (typeof acc === "number") {
return /* () */0;
}
else {
switch (acc.tag | 0) {
case 0 :
var s = string_of_formatting_lit(acc[1]);
output_acc(o, acc[0]);
return Pervasives.output_string(o, s);
case 1 :
var match = acc[1];
var p = acc[0];
output_acc(o, p);
if (match.tag) {
Pervasives.output_string(o, "@[");
_acc = match[0];
continue ;
}
else {
Pervasives.output_string(o, "@{");
_acc = match[0];
continue ;
}
break;
case 2 :
case 4 :
exit = 1;
break;
case 3 :
case 5 :
exit = 2;
break;
case 6 :
output_acc(o, acc[0]);
return Curry._1(acc[1], o);
case 7 :
output_acc(o, acc[0]);
return Caml_io.caml_ml_flush(o);
case 8 :
output_acc(o, acc[0]);
throw [
Caml_builtin_exceptions.invalid_argument,
acc[1]
];
}
}
switch (exit) {
case 1 :
output_acc(o, acc[0]);
return Pervasives.output_string(o, acc[1]);
case 2 :
output_acc(o, acc[0]);
return Caml_io.caml_ml_output_char(o, acc[1]);
}
};
}
function bufput_acc(b, _acc) {
while(true) {
var acc = _acc;
var exit = 0;
if (typeof acc === "number") {
return /* () */0;
}
else {
switch (acc.tag | 0) {
case 0 :
var s = string_of_formatting_lit(acc[1]);
bufput_acc(b, acc[0]);
return Buffer.add_string(b, s);
case 1 :
var match = acc[1];
var p = acc[0];
bufput_acc(b, p);
if (match.tag) {
Buffer.add_string(b, "@[");
_acc = match[0];
continue ;
}
else {
Buffer.add_string(b, "@{");
_acc = match[0];
continue ;
}
break;
case 2 :
case 4 :
exit = 1;
break;
case 3 :
case 5 :
exit = 2;
break;
case 6 :
bufput_acc(b, acc[0]);
return Curry._1(acc[1], b);
case 7 :
_acc = acc[0];
continue ;
case 8 :
bufput_acc(b, acc[0]);
throw [
Caml_builtin_exceptions.invalid_argument,
acc[1]
];
}
}
switch (exit) {
case 1 :
bufput_acc(b, acc[0]);
return Buffer.add_string(b, acc[1]);
case 2 :
bufput_acc(b, acc[0]);
return Buffer.add_char(b, acc[1]);
}
};
}
function strput_acc(b, _acc) {
while(true) {
var acc = _acc;
var exit = 0;
if (typeof acc === "number") {
return /* () */0;
}
else {
switch (acc.tag | 0) {
case 0 :
var s = string_of_formatting_lit(acc[1]);
strput_acc(b, acc[0]);
return Buffer.add_string(b, s);
case 1 :
var match = acc[1];
var p = acc[0];
strput_acc(b, p);
if (match.tag) {
Buffer.add_string(b, "@[");
_acc = match[0];
continue ;
}
else {
Buffer.add_string(b, "@{");
_acc = match[0];
continue ;
}
break;
case 2 :
case 4 :
exit = 1;
break;
case 3 :
case 5 :
exit = 2;
break;
case 6 :
strput_acc(b, acc[0]);
return Buffer.add_string(b, Curry._1(acc[1], /* () */0));
case 7 :
_acc = acc[0];
continue ;
case 8 :
strput_acc(b, acc[0]);
throw [
Caml_builtin_exceptions.invalid_argument,
acc[1]
];
}
}
switch (exit) {
case 1 :
strput_acc(b, acc[0]);
return Buffer.add_string(b, acc[1]);
case 2 :
strput_acc(b, acc[0]);
return Buffer.add_char(b, acc[1]);
}
};
}
function failwith_message(param) {
var buf = Buffer.create(256);
var k = function (_, acc) {
strput_acc(buf, acc);
var s = Buffer.contents(buf);
throw [
Caml_builtin_exceptions.failure,
s
];
};
return make_printf(k, /* () */0, /* End_of_acc */0, param[0]);
}
function open_box_of_string(str) {
if (str === "") {
return /* tuple */[
0,
/* Pp_box */4
];
}
else {
var len = str.length;
var invalid_box = function () {
return Curry._1(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid box description ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
]),
"invalid box description %S"
]), str);
};
var parse_spaces = function (_i) {
while(true) {
var i = _i;
if (i === len) {
return i;
}
else {
var match = Caml_string.get(str, i);
if (match !== 9) {
if (match !== 32) {
return i;
}
else {
_i = i + 1 | 0;
continue ;
}
}
else {
_i = i + 1 | 0;
continue ;
}
}
};
};
var parse_lword = function (_, _j) {
while(true) {
var j = _j;
if (j === len) {
return j;
}
else {
var match = Caml_string.get(str, j);
if (match > 122 || match < 97) {
return j;
}
else {
_j = j + 1 | 0;
continue ;
}
}
};
};
var parse_int = function (_, _j) {
while(true) {
var j = _j;
if (j === len) {
return j;
}
else {
var match = Caml_string.get(str, j);
if (match >= 48) {
if (match >= 58) {
return j;
}
else {
_j = j + 1 | 0;
continue ;
}
}
else if (match !== 45) {
return j;
}
else {
_j = j + 1 | 0;
continue ;
}
}
};
};
var wstart = parse_spaces(0);
var wend = parse_lword(wstart, wstart);
var box_name = $$String.sub(str, wstart, wend - wstart | 0);
var nstart = parse_spaces(wend);
var nend = parse_int(nstart, nstart);
var indent;
if (nstart === nend) {
indent = 0;
}
else {
try {
indent = Caml_format.caml_int_of_string($$String.sub(str, nstart, nend - nstart | 0));
}
catch (exn){
if (exn[0] === Caml_builtin_exceptions.failure) {
indent = invalid_box(/* () */0);
}
else {
throw exn;
}
}
}
var exp_end = parse_spaces(nend);
if (exp_end !== len) {
invalid_box(/* () */0);
}
var box_type;
switch (box_name) {
case "" :
case "b" :
box_type = /* Pp_box */4;
break;
case "h" :
box_type = /* Pp_hbox */0;
break;
case "hov" :
box_type = /* Pp_hovbox */3;
break;
case "hv" :
box_type = /* Pp_hvbox */2;
break;
case "v" :
box_type = /* Pp_vbox */1;
break;
default:
box_type = invalid_box(/* () */0);
}
return /* tuple */[
indent,
box_type
];
}
}
function make_padding_fmt_ebb(pad, fmt) {
if (typeof pad === "number") {
return /* Padding_fmt_EBB */[
/* No_padding */0,
fmt
];
}
else if (pad.tag) {
return /* Padding_fmt_EBB */[
/* Arg_padding */Block.__(1, [pad[0]]),
fmt
];
}
else {
return /* Padding_fmt_EBB */[
/* Lit_padding */Block.__(0, [
pad[0],
pad[1]
]),
fmt
];
}
}
function make_precision_fmt_ebb(prec, fmt) {
if (typeof prec === "number") {
if (prec !== 0) {
return /* Precision_fmt_EBB */[
/* Arg_precision */1,
fmt
];
}
else {
return /* Precision_fmt_EBB */[
/* No_precision */0,
fmt
];
}
}
else {
return /* Precision_fmt_EBB */[
/* Lit_precision */[prec[0]],
fmt
];
}
}
function make_padprec_fmt_ebb(pad, prec, fmt) {
var match = make_precision_fmt_ebb(prec, fmt);
var fmt$prime = match[1];
var prec$1 = match[0];
if (typeof pad === "number") {
return /* Padprec_fmt_EBB */[
/* No_padding */0,
prec$1,
fmt$prime
];
}
else if (pad.tag) {
return /* Padprec_fmt_EBB */[
/* Arg_padding */Block.__(1, [pad[0]]),
prec$1,
fmt$prime
];
}
else {
return /* Padprec_fmt_EBB */[
/* Lit_padding */Block.__(0, [
pad[0],
pad[1]
]),
prec$1,
fmt$prime
];
}
}
function fmt_ebb_of_string(legacy_behavior, str) {
var legacy_behavior$1 = legacy_behavior ? legacy_behavior[0] : /* true */1;
var invalid_format_message = function (str_ind, msg) {
return Curry._3(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
": at character number ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* String_literal */Block.__(11, [
", ",
/* String */Block.__(2, [
/* No_padding */0,
/* End_of_format */0
])
])
])
])
])
]),
"invalid format %S: at character number %d, %s"
]), str, str_ind, msg);
};
var invalid_format_without = function (str_ind, c, s) {
return Curry._4(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
": at character number ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* String_literal */Block.__(11, [
", '",
/* Char */Block.__(0, [/* String_literal */Block.__(11, [
"' without ",
/* String */Block.__(2, [
/* No_padding */0,
/* End_of_format */0
])
])])
])
])
])
])
]),
"invalid format %S: at character number %d, '%c' without %s"
]), str, str_ind, c, s);
};
var expected_character = function (str_ind, expected, read) {
return Curry._4(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
": at character number ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* String_literal */Block.__(11, [
", ",
/* String */Block.__(2, [
/* No_padding */0,
/* String_literal */Block.__(11, [
" expected, read ",
/* Caml_char */Block.__(1, [/* End_of_format */0])
])
])
])
])
])
])
]),
"invalid format %S: at character number %d, %s expected, read %C"
]), str, str_ind, expected, read);
};
var compute_int_conv = function (pct_ind, str_ind, _plus, _sharp, _space, symb) {
while(true) {
var space = _space;
var sharp = _sharp;
var plus = _plus;
var exit = 0;
var exit$1 = 0;
if (plus !== 0) {
if (sharp !== 0) {
exit$1 = 2;
}
else if (space !== 0) {
exit = 1;
}
else if (symb !== 100) {
if (symb !== 105) {
exit = 1;
}
else {
return /* Int_pi */4;
}
}
else {
return /* Int_pd */1;
}
}
else if (sharp !== 0) {
if (space !== 0) {
exit$1 = 2;
}
else if (symb !== 88) {
if (symb !== 111) {
if (symb !== 120) {
exit$1 = 2;
}
else {
return /* Int_Cx */7;
}
}
else {
return /* Int_Co */11;
}
}
else {
return /* Int_CX */9;
}
}
else if (space !== 0) {
if (symb !== 100) {
if (symb !== 105) {
exit = 1;
}
else {
return /* Int_si */5;
}
}
else {
return /* Int_sd */2;
}
}
else {
var switcher = symb - 88 | 0;
if (switcher > 32 || switcher < 0) {
exit = 1;
}
else {
switch (switcher) {
case 0 :
return /* Int_X */8;
case 12 :
return /* Int_d */0;
case 17 :
return /* Int_i */3;
case 23 :
return /* Int_o */10;
case 29 :
return /* Int_u */12;
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 11 :
case 13 :
case 14 :
case 15 :
case 16 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 24 :
case 25 :
case 26 :
case 27 :
case 28 :
case 30 :
case 31 :
exit = 1;
break;
case 32 :
return /* Int_x */6;
}
}
}
if (exit$1 === 2) {
var exit$2 = 0;
var switcher$1 = symb - 88 | 0;
if (switcher$1 > 32 || switcher$1 < 0) {
exit = 1;
}
else {
switch (switcher$1) {
case 0 :
if (legacy_behavior$1) {
return /* Int_CX */9;
}
else {
exit = 1;
}
break;
case 23 :
if (legacy_behavior$1) {
return /* Int_Co */11;
}
else {
exit = 1;
}
break;
case 12 :
case 17 :
case 29 :
exit$2 = 3;
break;
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 11 :
case 13 :
case 14 :
case 15 :
case 16 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 24 :
case 25 :
case 26 :
case 27 :
case 28 :
case 30 :
case 31 :
exit = 1;
break;
case 32 :
if (legacy_behavior$1) {
return /* Int_Cx */7;
}
else {
exit = 1;
}
break;
}
}
if (exit$2 === 3) {
if (legacy_behavior$1) {
_sharp = /* false */0;
continue ;
}
else {
return incompatible_flag(pct_ind, str_ind, symb, "'#'");
}
}
}
if (exit === 1) {
if (plus !== 0) {
if (space !== 0) {
if (legacy_behavior$1) {
_space = /* false */0;
continue ;
}
else {
return incompatible_flag(pct_ind, str_ind, /* " " */32, "'+'");
}
}
else if (legacy_behavior$1) {
_plus = /* false */0;
continue ;
}
else {
return incompatible_flag(pct_ind, str_ind, symb, "'+'");
}
}
else if (space !== 0) {
if (legacy_behavior$1) {
_space = /* false */0;
continue ;
}
else {
return incompatible_flag(pct_ind, str_ind, symb, "' '");
}
}
else {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
2716,
28
]
];
}
}
};
};
var incompatible_flag = function (pct_ind, str_ind, symb, option) {
var subfmt = $$String.sub(str, pct_ind, str_ind - pct_ind | 0);
return Curry._5(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
": at character number ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* String_literal */Block.__(11, [
", ",
/* String */Block.__(2, [
/* No_padding */0,
/* String_literal */Block.__(11, [
" is incompatible with '",
/* Char */Block.__(0, [/* String_literal */Block.__(11, [
"' in sub-format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
])])
])
])
])
])
])
])
]),
"invalid format %S: at character number %d, %s is incompatible with '%c' in sub-format %S"
]), str, pct_ind, option, symb, subfmt);
};
var parse_positive = function (_str_ind, end_ind, _acc) {
while(true) {
var acc = _acc;
var str_ind = _str_ind;
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var c = Caml_string.get(str, str_ind);
if (c > 57 || c < 48) {
return /* tuple */[
str_ind,
acc
];
}
else {
var new_acc = Caml_int32.imul(acc, 10) + (c - /* "0" */48 | 0) | 0;
if (new_acc > Sys.max_string_length) {
return Curry._3(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
": integer ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* String_literal */Block.__(11, [
" is greater than the limit ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* End_of_format */0
])
])
])
])
])
]),
"invalid format %S: integer %d is greater than the limit %d"
]), str, new_acc, Sys.max_string_length);
}
else {
_acc = new_acc;
_str_ind = str_ind + 1 | 0;
continue ;
}
}
};
};
var parse_after_precision = function (pct_ind, str_ind, end_ind, minus, plus, sharp, space, ign, pad, prec) {
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var parse_conv = function (padprec) {
return parse_conversion(pct_ind, str_ind + 1 | 0, end_ind, plus, sharp, space, ign, pad, prec, padprec, Caml_string.get(str, str_ind));
};
if (typeof pad === "number") {
var exit = 0;
if (typeof prec === "number") {
if (prec !== 0) {
exit = 1;
}
else {
return parse_conv(/* No_padding */0);
}
}
else {
exit = 1;
}
if (exit === 1) {
if (minus !== 0) {
if (typeof prec === "number") {
return parse_conv(/* Arg_padding */Block.__(1, [/* Left */0]));
}
else {
return parse_conv(/* Lit_padding */Block.__(0, [
/* Left */0,
prec[0]
]));
}
}
else if (typeof prec === "number") {
return parse_conv(/* Arg_padding */Block.__(1, [/* Right */1]));
}
else {
return parse_conv(/* Lit_padding */Block.__(0, [
/* Right */1,
prec[0]
]));
}
}
}
else {
return parse_conv(pad);
}
};
var parse_after_padding = function (pct_ind, str_ind, end_ind, minus, plus, sharp, space, ign, pad) {
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var symb = Caml_string.get(str, str_ind);
if (symb !== 46) {
return parse_conversion(pct_ind, str_ind + 1 | 0, end_ind, plus, sharp, space, ign, pad, /* No_precision */0, pad, symb);
}
else {
var pct_ind$1 = pct_ind;
var str_ind$1 = str_ind + 1 | 0;
var end_ind$1 = end_ind;
var minus$1 = minus;
var plus$1 = plus;
var sharp$1 = sharp;
var space$1 = space;
var ign$1 = ign;
var pad$1 = pad;
if (str_ind$1 === end_ind$1) {
invalid_format_message(end_ind$1, "unexpected end of format");
}
var parse_literal = function (minus, str_ind) {
var match = parse_positive(str_ind, end_ind$1, 0);
return parse_after_precision(pct_ind$1, match[0], end_ind$1, minus, plus$1, sharp$1, space$1, ign$1, pad$1, /* Lit_precision */[match[1]]);
};
var symb$1 = Caml_string.get(str, str_ind$1);
var exit = 0;
var exit$1 = 0;
if (symb$1 >= 48) {
if (symb$1 >= 58) {
exit = 1;
}
else {
return parse_literal(minus$1, str_ind$1);
}
}
else if (symb$1 >= 42) {
switch (symb$1 - 42 | 0) {
case 0 :
return parse_after_precision(pct_ind$1, str_ind$1 + 1 | 0, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, pad$1, /* Arg_precision */1);
case 1 :
case 3 :
exit$1 = 2;
break;
case 2 :
case 4 :
case 5 :
exit = 1;
break;
}
}
else {
exit = 1;
}
if (exit$1 === 2) {
if (legacy_behavior$1) {
return parse_literal(minus$1 || +(symb$1 === /* "-" */45), str_ind$1 + 1 | 0);
}
else {
exit = 1;
}
}
if (exit === 1) {
if (legacy_behavior$1) {
return parse_after_precision(pct_ind$1, str_ind$1, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, pad$1, /* Lit_precision */[0]);
}
else {
return invalid_format_without(str_ind$1 - 1 | 0, /* "." */46, "precision");
}
}
}
};
var parse_literal = function (lit_start, _str_ind, end_ind) {
while(true) {
var str_ind = _str_ind;
if (str_ind === end_ind) {
return add_literal(lit_start, str_ind, /* End_of_format */0);
}
else {
var match = Caml_string.get(str, str_ind);
if (match !== 37) {
if (match !== 64) {
_str_ind = str_ind + 1 | 0;
continue ;
}
else {
var match$1 = parse_after_at(str_ind + 1 | 0, end_ind);
return add_literal(lit_start, str_ind, match$1[0]);
}
}
else {
var match$2 = parse_format(str_ind, end_ind);
return add_literal(lit_start, str_ind, match$2[0]);
}
}
};
};
var parse_format = function (pct_ind, end_ind) {
var pct_ind$1 = pct_ind;
var str_ind = pct_ind + 1 | 0;
var end_ind$1 = end_ind;
if (str_ind === end_ind$1) {
invalid_format_message(end_ind$1, "unexpected end of format");
}
var match = Caml_string.get(str, str_ind);
if (match !== 95) {
return parse_flags(pct_ind$1, str_ind, end_ind$1, /* false */0);
}
else {
return parse_flags(pct_ind$1, str_ind + 1 | 0, end_ind$1, /* true */1);
}
};
var parse_after_at = function (str_ind, end_ind) {
if (str_ind === end_ind) {
return /* Fmt_EBB */[/* Char_literal */Block.__(12, [
/* "@" */64,
/* End_of_format */0
])];
}
else {
var c = Caml_string.get(str, str_ind);
var exit = 0;
if (c >= 65) {
if (c >= 94) {
var switcher = c - 123 | 0;
if (switcher > 2 || switcher < 0) {
exit = 1;
}
else {
switch (switcher) {
case 0 :
return parse_tag(/* true */1, str_ind + 1 | 0, end_ind);
case 1 :
exit = 1;
break;
case 2 :
var beg_ind = str_ind + 1 | 0;
var match = parse_literal(beg_ind, beg_ind, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Close_tag */1,
match[0]
])];
}
}
}
else if (c >= 91) {
switch (c - 91 | 0) {
case 0 :
return parse_tag(/* false */0, str_ind + 1 | 0, end_ind);
case 1 :
exit = 1;
break;
case 2 :
var beg_ind$1 = str_ind + 1 | 0;
var match$1 = parse_literal(beg_ind$1, beg_ind$1, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Close_box */0,
match$1[0]
])];
}
}
else {
exit = 1;
}
}
else if (c !== 10) {
if (c >= 32) {
switch (c - 32 | 0) {
case 0 :
var beg_ind$2 = str_ind + 1 | 0;
var match$2 = parse_literal(beg_ind$2, beg_ind$2, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Break */Block.__(0, [
"@ ",
1,
0
]),
match$2[0]
])];
case 5 :
if ((str_ind + 1 | 0) < end_ind && Caml_string.get(str, str_ind + 1 | 0) === /* "%" */37) {
var beg_ind$3 = str_ind + 2 | 0;
var match$3 = parse_literal(beg_ind$3, beg_ind$3, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Escaped_percent */6,
match$3[0]
])];
}
else {
var match$4 = parse_literal(str_ind, str_ind, end_ind);
return /* Fmt_EBB */[/* Char_literal */Block.__(12, [
/* "@" */64,
match$4[0]
])];
}
break;
case 12 :
var beg_ind$4 = str_ind + 1 | 0;
var match$5 = parse_literal(beg_ind$4, beg_ind$4, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Break */Block.__(0, [
"@,",
0,
0
]),
match$5[0]
])];
case 14 :
var beg_ind$5 = str_ind + 1 | 0;
var match$6 = parse_literal(beg_ind$5, beg_ind$5, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Flush_newline */4,
match$6[0]
])];
case 27 :
var str_ind$1 = str_ind + 1 | 0;
var end_ind$1 = end_ind;
var match$7;
try {
if (str_ind$1 === end_ind$1 || Caml_string.get(str, str_ind$1) !== /* "<" */60) {
throw Caml_builtin_exceptions.not_found;
}
var str_ind_1 = parse_spaces(str_ind$1 + 1 | 0, end_ind$1);
var match$8 = Caml_string.get(str, str_ind_1);
var exit$1 = 0;
if (match$8 >= 48) {
if (match$8 >= 58) {
throw Caml_builtin_exceptions.not_found;
}
else {
exit$1 = 1;
}
}
else if (match$8 !== 45) {
throw Caml_builtin_exceptions.not_found;
}
else {
exit$1 = 1;
}
if (exit$1 === 1) {
var match$9 = parse_integer(str_ind_1, end_ind$1);
var width = match$9[1];
var str_ind_3 = parse_spaces(match$9[0], end_ind$1);
var match$10 = Caml_string.get(str, str_ind_3);
var switcher$1 = match$10 - 45 | 0;
if (switcher$1 > 12 || switcher$1 < 0) {
if (switcher$1 !== 17) {
throw Caml_builtin_exceptions.not_found;
}
else {
var s = $$String.sub(str, str_ind$1 - 2 | 0, (str_ind_3 - str_ind$1 | 0) + 3 | 0);
match$7 = /* tuple */[
str_ind_3 + 1 | 0,
/* Break */Block.__(0, [
s,
width,
0
])
];
}
}
else if (switcher$1 === 2 || switcher$1 === 1) {
throw Caml_builtin_exceptions.not_found;
}
else {
var match$11 = parse_integer(str_ind_3, end_ind$1);
var str_ind_5 = parse_spaces(match$11[0], end_ind$1);
if (Caml_string.get(str, str_ind_5) !== /* ">" */62) {
throw Caml_builtin_exceptions.not_found;
}
var s$1 = $$String.sub(str, str_ind$1 - 2 | 0, (str_ind_5 - str_ind$1 | 0) + 3 | 0);
match$7 = /* tuple */[
str_ind_5 + 1 | 0,
/* Break */Block.__(0, [
s$1,
width,
match$11[1]
])
];
}
}
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
match$7 = /* tuple */[
str_ind$1,
/* Break */Block.__(0, [
"@;",
1,
0
])
];
}
else if (exn[0] === Caml_builtin_exceptions.failure) {
match$7 = /* tuple */[
str_ind$1,
/* Break */Block.__(0, [
"@;",
1,
0
])
];
}
else {
throw exn;
}
}
var next_ind = match$7[0];
var match$12 = parse_literal(next_ind, next_ind, end_ind$1);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
match$7[1],
match$12[0]
])];
case 28 :
var str_ind$2 = str_ind + 1 | 0;
var end_ind$2 = end_ind;
var match$13;
try {
var str_ind_1$1 = parse_spaces(str_ind$2, end_ind$2);
var match$14 = Caml_string.get(str, str_ind_1$1);
var exit$2 = 0;
if (match$14 >= 48) {
if (match$14 >= 58) {
match$13 = /* None */0;
}
else {
exit$2 = 1;
}
}
else if (match$14 !== 45) {
match$13 = /* None */0;
}
else {
exit$2 = 1;
}
if (exit$2 === 1) {
var match$15 = parse_integer(str_ind_1$1, end_ind$2);
var str_ind_3$1 = parse_spaces(match$15[0], end_ind$2);
if (Caml_string.get(str, str_ind_3$1) !== /* ">" */62) {
throw Caml_builtin_exceptions.not_found;
}
var s$2 = $$String.sub(str, str_ind$2 - 2 | 0, (str_ind_3$1 - str_ind$2 | 0) + 3 | 0);
match$13 = /* Some */[/* tuple */[
str_ind_3$1 + 1 | 0,
/* Magic_size */Block.__(1, [
s$2,
match$15[1]
])
]];
}
}
catch (exn$1){
if (exn$1 === Caml_builtin_exceptions.not_found) {
match$13 = /* None */0;
}
else if (exn$1[0] === Caml_builtin_exceptions.failure) {
match$13 = /* None */0;
}
else {
throw exn$1;
}
}
if (match$13) {
var match$16 = match$13[0];
var next_ind$1 = match$16[0];
var match$17 = parse_literal(next_ind$1, next_ind$1, end_ind$2);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
match$16[1],
match$17[0]
])];
}
else {
var match$18 = parse_literal(str_ind$2, str_ind$2, end_ind$2);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Scan_indic */Block.__(2, [/* "<" */60]),
match$18[0]
])];
}
case 1 :
case 2 :
case 3 :
case 4 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 11 :
case 13 :
case 15 :
case 16 :
case 17 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 23 :
case 24 :
case 25 :
case 26 :
case 29 :
case 30 :
exit = 1;
break;
case 31 :
var beg_ind$6 = str_ind + 1 | 0;
var match$19 = parse_literal(beg_ind$6, beg_ind$6, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* FFlush */2,
match$19[0]
])];
case 32 :
var beg_ind$7 = str_ind + 1 | 0;
var match$20 = parse_literal(beg_ind$7, beg_ind$7, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Escaped_at */5,
match$20[0]
])];
}
}
else {
exit = 1;
}
}
else {
var beg_ind$8 = str_ind + 1 | 0;
var match$21 = parse_literal(beg_ind$8, beg_ind$8, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Force_newline */3,
match$21[0]
])];
}
if (exit === 1) {
var beg_ind$9 = str_ind + 1 | 0;
var match$22 = parse_literal(beg_ind$9, beg_ind$9, end_ind);
return /* Fmt_EBB */[/* Formatting_lit */Block.__(17, [
/* Scan_indic */Block.__(2, [c]),
match$22[0]
])];
}
}
};
var add_literal = function (lit_start, str_ind, fmt) {
var size = str_ind - lit_start | 0;
if (size !== 0) {
if (size !== 1) {
return /* Fmt_EBB */[/* String_literal */Block.__(11, [
$$String.sub(str, lit_start, size),
fmt
])];
}
else {
return /* Fmt_EBB */[/* Char_literal */Block.__(12, [
Caml_string.get(str, lit_start),
fmt
])];
}
}
else {
return /* Fmt_EBB */[fmt];
}
};
var parse_spaces = function (_str_ind, end_ind) {
while(true) {
var str_ind = _str_ind;
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
if (Caml_string.get(str, str_ind) === /* " " */32) {
_str_ind = str_ind + 1 | 0;
continue ;
}
else {
return str_ind;
}
};
};
var parse_integer = function (str_ind, end_ind) {
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var match = Caml_string.get(str, str_ind);
if (match >= 48) {
if (match >= 58) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
2621,
11
]
];
}
else {
return parse_positive(str_ind, end_ind, 0);
}
}
else if (match !== 45) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
2621,
11
]
];
}
else {
if ((str_ind + 1 | 0) === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var c = Caml_string.get(str, str_ind + 1 | 0);
if (c > 57 || c < 48) {
return expected_character(str_ind + 1 | 0, "digit", c);
}
else {
var match$1 = parse_positive(str_ind + 1 | 0, end_ind, 0);
return /* tuple */[
match$1[0],
-match$1[1] | 0
];
}
}
};
var compute_float_conv = function (pct_ind, str_ind, _plus, _space, symb) {
while(true) {
var space = _space;
var plus = _plus;
if (plus !== 0) {
if (space !== 0) {
if (legacy_behavior$1) {
_space = /* false */0;
continue ;
}
else {
return incompatible_flag(pct_ind, str_ind, /* " " */32, "'+'");
}
}
else {
var exit = 0;
if (symb >= 72) {
var switcher = symb - 101 | 0;
if (switcher > 2 || switcher < 0) {
exit = 1;
}
else {
switch (switcher) {
case 0 :
return /* Float_pe */4;
case 1 :
return /* Float_pf */1;
case 2 :
return /* Float_pg */10;
}
}
}
else if (symb >= 69) {
switch (symb - 69 | 0) {
case 0 :
return /* Float_pE */7;
case 1 :
exit = 1;
break;
case 2 :
return /* Float_pG */13;
}
}
else {
exit = 1;
}
if (exit === 1) {
if (legacy_behavior$1) {
_plus = /* false */0;
continue ;
}
else {
return incompatible_flag(pct_ind, str_ind, symb, "'+'");
}
}
}
}
else if (space !== 0) {
var exit$1 = 0;
if (symb >= 72) {
var switcher$1 = symb - 101 | 0;
if (switcher$1 > 2 || switcher$1 < 0) {
exit$1 = 1;
}
else {
switch (switcher$1) {
case 0 :
return /* Float_se */5;
case 1 :
return /* Float_sf */2;
case 2 :
return /* Float_sg */11;
}
}
}
else if (symb >= 69) {
switch (symb - 69 | 0) {
case 0 :
return /* Float_sE */8;
case 1 :
exit$1 = 1;
break;
case 2 :
return /* Float_sG */14;
}
}
else {
exit$1 = 1;
}
if (exit$1 === 1) {
if (legacy_behavior$1) {
_space = /* false */0;
continue ;
}
else {
return incompatible_flag(pct_ind, str_ind, symb, "' '");
}
}
}
else if (symb >= 72) {
var switcher$2 = symb - 101 | 0;
if (switcher$2 > 2 || switcher$2 < 0) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
2744,
25
]
];
}
else {
switch (switcher$2) {
case 0 :
return /* Float_e */3;
case 1 :
return /* Float_f */0;
case 2 :
return /* Float_g */9;
}
}
}
else if (symb >= 69) {
switch (symb - 69 | 0) {
case 0 :
return /* Float_E */6;
case 1 :
return /* Float_F */15;
case 2 :
return /* Float_G */12;
}
}
else {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
2744,
25
]
];
}
};
};
var search_subformat_end = function (_str_ind, end_ind, c) {
while(true) {
var str_ind = _str_ind;
if (str_ind === end_ind) {
Curry._3(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
': unclosed sub-format, expected "',
/* Char_literal */Block.__(12, [
/* "%" */37,
/* Char */Block.__(0, [/* String_literal */Block.__(11, [
'" at character number ',
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* End_of_format */0
])
])])
])
])
])
]),
'invalid format %S: unclosed sub-format, expected "%%%c" at character number %d'
]), str, c, end_ind);
}
var match = Caml_string.get(str, str_ind);
if (match !== 37) {
_str_ind = str_ind + 1 | 0;
continue ;
}
else {
if ((str_ind + 1 | 0) === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
if (Caml_string.get(str, str_ind + 1 | 0) === c) {
return str_ind;
}
else {
var match$1 = Caml_string.get(str, str_ind + 1 | 0);
var exit = 0;
if (match$1 >= 95) {
if (match$1 >= 123) {
if (match$1 >= 126) {
exit = 1;
}
else {
switch (match$1 - 123 | 0) {
case 0 :
var sub_end = search_subformat_end(str_ind + 2 | 0, end_ind, /* "}" */125);
_str_ind = sub_end + 2 | 0;
continue ;
case 1 :
exit = 1;
break;
case 2 :
return expected_character(str_ind + 1 | 0, "character ')'", /* "}" */125);
}
}
}
else if (match$1 >= 96) {
exit = 1;
}
else {
if ((str_ind + 2 | 0) === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var match$2 = Caml_string.get(str, str_ind + 2 | 0);
if (match$2 !== 40) {
if (match$2 !== 123) {
_str_ind = str_ind + 3 | 0;
continue ;
}
else {
var sub_end$1 = search_subformat_end(str_ind + 3 | 0, end_ind, /* "}" */125);
_str_ind = sub_end$1 + 2 | 0;
continue ;
}
}
else {
var sub_end$2 = search_subformat_end(str_ind + 3 | 0, end_ind, /* ")" */41);
_str_ind = sub_end$2 + 2 | 0;
continue ;
}
}
}
else if (match$1 !== 40) {
if (match$1 !== 41) {
exit = 1;
}
else {
return expected_character(str_ind + 1 | 0, "character '}'", /* ")" */41);
}
}
else {
var sub_end$3 = search_subformat_end(str_ind + 2 | 0, end_ind, /* ")" */41);
_str_ind = sub_end$3 + 2 | 0;
continue ;
}
if (exit === 1) {
_str_ind = str_ind + 2 | 0;
continue ;
}
}
}
};
};
var parse_conversion = function (pct_ind, str_ind, end_ind, plus, sharp, space, ign, pad, prec, padprec, symb) {
var plus_used = /* false */0;
var sharp_used = /* false */0;
var space_used = /* false */0;
var ign_used = [/* false */0];
var pad_used = /* false */0;
var prec_used = [/* false */0];
var check_no_0 = function (symb, pad) {
if (typeof pad === "number") {
return pad;
}
else if (pad.tag) {
if (pad[0] >= 2) {
if (legacy_behavior$1) {
return /* Arg_padding */Block.__(1, [/* Right */1]);
}
else {
return incompatible_flag(pct_ind, str_ind, symb, "0");
}
}
else {
return pad;
}
}
else if (pad[0] >= 2) {
if (legacy_behavior$1) {
return /* Lit_padding */Block.__(0, [
/* Right */1,
pad[1]
]);
}
else {
return incompatible_flag(pct_ind, str_ind, symb, "0");
}
}
else {
return pad;
}
};
var opt_of_pad = function (c, pad) {
if (typeof pad === "number") {
return /* None */0;
}
else if (pad.tag) {
return incompatible_flag(pct_ind, str_ind, c, "'*'");
}
else {
switch (pad[0]) {
case 0 :
if (legacy_behavior$1) {
return /* Some */[pad[1]];
}
else {
return incompatible_flag(pct_ind, str_ind, c, "'-'");
}
case 1 :
return /* Some */[pad[1]];
case 2 :
if (legacy_behavior$1) {
return /* Some */[pad[1]];
}
else {
return incompatible_flag(pct_ind, str_ind, c, "'0'");
}
}
}
};
var get_prec_opt = function () {
prec_used[0] = /* true */1;
if (typeof prec === "number") {
if (prec !== 0) {
return incompatible_flag(pct_ind, str_ind, /* "_" */95, "'*'");
}
else {
return /* None */0;
}
}
else {
return /* Some */[prec[0]];
}
};
var fmt_result;
var exit = 0;
var exit$1 = 0;
var exit$2 = 0;
if (symb >= 124) {
exit$1 = 6;
}
else {
switch (symb) {
case 33 :
var match = parse_literal(str_ind, str_ind, end_ind);
fmt_result = /* Fmt_EBB */[/* Flush */Block.__(10, [match[0]])];
break;
case 40 :
var sub_end = search_subformat_end(str_ind, end_ind, /* ")" */41);
var beg_ind = sub_end + 2 | 0;
var match$1 = parse_literal(beg_ind, beg_ind, end_ind);
var fmt_rest = match$1[0];
var match$2 = parse_literal(str_ind, str_ind, sub_end);
var sub_fmtty = fmtty_of_fmt(match$2[0]);
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored_000 = opt_of_pad(/* "_" */95, pad);
var ignored = /* Ignored_format_subst */Block.__(8, [
ignored_000,
sub_fmtty
]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored,
fmt_rest
])];
}
else {
pad_used = /* true */1;
fmt_result = /* Fmt_EBB */[/* Format_subst */Block.__(14, [
opt_of_pad(/* "(" */40, pad),
sub_fmtty,
fmt_rest
])];
}
break;
case 44 :
fmt_result = parse_literal(str_ind, str_ind, end_ind);
break;
case 37 :
case 64 :
exit$1 = 4;
break;
case 67 :
var match$3 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$1 = match$3[0];
fmt_result = (ign_used[0] = /* true */1, ign) ? /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
/* Ignored_caml_char */1,
fmt_rest$1
])] : /* Fmt_EBB */[/* Caml_char */Block.__(1, [fmt_rest$1])];
break;
case 78 :
var match$4 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$2 = match$4[0];
if (ign_used[0] = /* true */1, ign) {
var ignored$1 = /* Ignored_scan_get_counter */Block.__(10, [/* Token_counter */2]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$1,
fmt_rest$2
])];
}
else {
fmt_result = /* Fmt_EBB */[/* Scan_get_counter */Block.__(21, [
/* Token_counter */2,
fmt_rest$2
])];
}
break;
case 83 :
pad_used = /* true */1;
var pad$1 = check_no_0(symb, padprec);
var match$5 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$3 = match$5[0];
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored$2 = /* Ignored_caml_string */Block.__(1, [opt_of_pad(/* "_" */95, padprec)]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$2,
fmt_rest$3
])];
}
else {
var match$6 = make_padding_fmt_ebb(pad$1, fmt_rest$3);
fmt_result = /* Fmt_EBB */[/* Caml_string */Block.__(3, [
match$6[0],
match$6[1]
])];
}
break;
case 91 :
var match$7 = parse_char_set(str_ind, end_ind);
var char_set = match$7[1];
var next_ind = match$7[0];
var match$8 = parse_literal(next_ind, next_ind, end_ind);
var fmt_rest$4 = match$8[0];
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored_000$1 = opt_of_pad(/* "_" */95, pad);
var ignored$3 = /* Ignored_scan_char_set */Block.__(9, [
ignored_000$1,
char_set
]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$3,
fmt_rest$4
])];
}
else {
pad_used = /* true */1;
fmt_result = /* Fmt_EBB */[/* Scan_char_set */Block.__(20, [
opt_of_pad(/* "[" */91, pad),
char_set,
fmt_rest$4
])];
}
break;
case 32 :
case 35 :
case 43 :
case 45 :
case 95 :
exit$1 = 5;
break;
case 97 :
var match$9 = parse_literal(str_ind, str_ind, end_ind);
fmt_result = /* Fmt_EBB */[/* Alpha */Block.__(15, [match$9[0]])];
break;
case 66 :
case 98 :
exit$1 = 3;
break;
case 99 :
var char_format = function (fmt_rest) {
if (ign_used[0] = /* true */1, ign) {
return /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
/* Ignored_char */0,
fmt_rest
])];
}
else {
return /* Fmt_EBB */[/* Char */Block.__(0, [fmt_rest])];
}
};
var scan_format = function (fmt_rest) {
if (ign_used[0] = /* true */1, ign) {
return /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
/* Ignored_scan_next_char */4,
fmt_rest
])];
}
else {
return /* Fmt_EBB */[/* Scan_next_char */Block.__(22, [fmt_rest])];
}
};
var match$10 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$5 = match$10[0];
pad_used = /* true */1;
var match$11 = opt_of_pad(/* "c" */99, pad);
fmt_result = match$11 ? (
match$11[0] !== 0 ? (
legacy_behavior$1 ? char_format(fmt_rest$5) : invalid_format_message(str_ind, "non-zero widths are unsupported for %c conversions")
) : scan_format(fmt_rest$5)
) : char_format(fmt_rest$5);
break;
case 69 :
case 70 :
case 71 :
case 101 :
case 102 :
case 103 :
exit$1 = 2;
break;
case 76 :
case 108 :
case 110 :
exit$2 = 8;
break;
case 114 :
var match$12 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$6 = match$12[0];
fmt_result = (ign_used[0] = /* true */1, ign) ? /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
/* Ignored_reader */3,
fmt_rest$6
])] : /* Fmt_EBB */[/* Reader */Block.__(19, [fmt_rest$6])];
break;
case 115 :
pad_used = /* true */1;
var pad$2 = check_no_0(symb, padprec);
var match$13 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$7 = match$13[0];
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored$4 = /* Ignored_string */Block.__(0, [opt_of_pad(/* "_" */95, padprec)]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$4,
fmt_rest$7
])];
}
else {
var match$14 = make_padding_fmt_ebb(pad$2, fmt_rest$7);
fmt_result = /* Fmt_EBB */[/* String */Block.__(2, [
match$14[0],
match$14[1]
])];
}
break;
case 116 :
var match$15 = parse_literal(str_ind, str_ind, end_ind);
fmt_result = /* Fmt_EBB */[/* Theta */Block.__(16, [match$15[0]])];
break;
case 88 :
case 100 :
case 105 :
case 111 :
case 117 :
case 120 :
exit$2 = 7;
break;
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 11 :
case 12 :
case 13 :
case 14 :
case 15 :
case 16 :
case 17 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 23 :
case 24 :
case 25 :
case 26 :
case 27 :
case 28 :
case 29 :
case 30 :
case 31 :
case 34 :
case 36 :
case 38 :
case 39 :
case 41 :
case 42 :
case 46 :
case 47 :
case 48 :
case 49 :
case 50 :
case 51 :
case 52 :
case 53 :
case 54 :
case 55 :
case 56 :
case 57 :
case 58 :
case 59 :
case 60 :
case 61 :
case 62 :
case 63 :
case 65 :
case 68 :
case 72 :
case 73 :
case 74 :
case 75 :
case 77 :
case 79 :
case 80 :
case 81 :
case 82 :
case 84 :
case 85 :
case 86 :
case 87 :
case 89 :
case 90 :
case 92 :
case 93 :
case 94 :
case 96 :
case 104 :
case 106 :
case 107 :
case 109 :
case 112 :
case 113 :
case 118 :
case 119 :
case 121 :
case 122 :
exit$1 = 6;
break;
case 123 :
var sub_end$1 = search_subformat_end(str_ind, end_ind, /* "}" */125);
var match$16 = parse_literal(str_ind, str_ind, sub_end$1);
var beg_ind$1 = sub_end$1 + 2 | 0;
var match$17 = parse_literal(beg_ind$1, beg_ind$1, end_ind);
var fmt_rest$8 = match$17[0];
var sub_fmtty$1 = fmtty_of_fmt(match$16[0]);
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored_000$2 = opt_of_pad(/* "_" */95, pad);
var ignored$5 = /* Ignored_format_arg */Block.__(7, [
ignored_000$2,
sub_fmtty$1
]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$5,
fmt_rest$8
])];
}
else {
pad_used = /* true */1;
fmt_result = /* Fmt_EBB */[/* Format_arg */Block.__(13, [
opt_of_pad(/* "{" */123, pad),
sub_fmtty$1,
fmt_rest$8
])];
}
break;
}
}
switch (exit$2) {
case 7 :
plus_used = /* true */1;
sharp_used = /* true */1;
space_used = /* true */1;
var iconv = compute_int_conv(pct_ind, str_ind, plus, sharp, space, symb);
var match$18 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$9 = match$18[0];
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored_001 = opt_of_pad(/* "_" */95, pad);
var ignored$6 = /* Ignored_int */Block.__(2, [
iconv,
ignored_001
]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$6,
fmt_rest$9
])];
}
else {
pad_used = /* true */1;
prec_used[0] = /* true */1;
var pad$3;
var exit$3 = 0;
if (typeof prec === "number" && prec === 0) {
pad$3 = pad;
}
else {
exit$3 = 9;
}
if (exit$3 === 9) {
pad$3 = typeof pad === "number" ? /* No_padding */0 : (
pad.tag ? (
pad[0] >= 2 ? (
legacy_behavior$1 ? /* Arg_padding */Block.__(1, [/* Right */1]) : incompatible_flag(pct_ind, str_ind, /* "0" */48, "precision")
) : pad
) : (
pad[0] >= 2 ? (
legacy_behavior$1 ? /* Lit_padding */Block.__(0, [
/* Right */1,
pad[1]
]) : incompatible_flag(pct_ind, str_ind, /* "0" */48, "precision")
) : pad
)
);
}
var match$19 = make_padprec_fmt_ebb(pad$3, (prec_used[0] = /* true */1, prec), fmt_rest$9);
fmt_result = /* Fmt_EBB */[/* Int */Block.__(4, [
iconv,
match$19[0],
match$19[1],
match$19[2]
])];
}
break;
case 8 :
if (str_ind === end_ind || !is_int_base(Caml_string.get(str, str_ind))) {
var match$20 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$10 = match$20[0];
var counter = counter_of_char(symb);
if (ign_used[0] = /* true */1, ign) {
var ignored$7 = /* Ignored_scan_get_counter */Block.__(10, [counter]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$7,
fmt_rest$10
])];
}
else {
fmt_result = /* Fmt_EBB */[/* Scan_get_counter */Block.__(21, [
counter,
fmt_rest$10
])];
}
}
else {
exit$1 = 6;
}
break;
}
switch (exit$1) {
case 2 :
plus_used = /* true */1;
space_used = /* true */1;
var fconv = compute_float_conv(pct_ind, str_ind, plus, space, symb);
var match$21 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$11 = match$21[0];
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored_000$3 = opt_of_pad(/* "_" */95, pad);
var ignored_001$1 = get_prec_opt(/* () */0);
var ignored$8 = /* Ignored_float */Block.__(6, [
ignored_000$3,
ignored_001$1
]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$8,
fmt_rest$11
])];
}
else {
pad_used = /* true */1;
var match$22 = make_padprec_fmt_ebb(pad, (prec_used[0] = /* true */1, prec), fmt_rest$11);
fmt_result = /* Fmt_EBB */[/* Float */Block.__(8, [
fconv,
match$22[0],
match$22[1],
match$22[2]
])];
}
break;
case 3 :
var match$23 = parse_literal(str_ind, str_ind, end_ind);
var fmt_rest$12 = match$23[0];
fmt_result = (ign_used[0] = /* true */1, ign) ? /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
/* Ignored_bool */2,
fmt_rest$12
])] : /* Fmt_EBB */[/* Bool */Block.__(9, [fmt_rest$12])];
break;
case 4 :
var match$24 = parse_literal(str_ind, str_ind, end_ind);
fmt_result = /* Fmt_EBB */[/* Char_literal */Block.__(12, [
symb,
match$24[0]
])];
break;
case 5 :
fmt_result = Curry._3(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
": at character number ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* String_literal */Block.__(11, [
", flag ",
/* Caml_char */Block.__(1, [/* String_literal */Block.__(11, [
" is only allowed after the '",
/* Char_literal */Block.__(12, [
/* "%" */37,
/* String_literal */Block.__(11, [
"', before padding and precision",
/* End_of_format */0
])
])
])])
])
])
])
])
]),
"invalid format %S: at character number %d, flag %C is only allowed after the '%%', before padding and precision"
]), str, pct_ind, symb);
break;
case 6 :
if (symb >= 108) {
if (symb >= 111) {
exit = 1;
}
else {
switch (symb - 108 | 0) {
case 0 :
plus_used = /* true */1;
sharp_used = /* true */1;
space_used = /* true */1;
var iconv$1 = compute_int_conv(pct_ind, str_ind + 1 | 0, plus, sharp, space, Caml_string.get(str, str_ind));
var beg_ind$2 = str_ind + 1 | 0;
var match$25 = parse_literal(beg_ind$2, beg_ind$2, end_ind);
var fmt_rest$13 = match$25[0];
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored_001$2 = opt_of_pad(/* "_" */95, pad);
var ignored$9 = /* Ignored_int32 */Block.__(3, [
iconv$1,
ignored_001$2
]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$9,
fmt_rest$13
])];
}
else {
pad_used = /* true */1;
var match$26 = make_padprec_fmt_ebb(pad, (prec_used[0] = /* true */1, prec), fmt_rest$13);
fmt_result = /* Fmt_EBB */[/* Int32 */Block.__(5, [
iconv$1,
match$26[0],
match$26[1],
match$26[2]
])];
}
break;
case 1 :
exit = 1;
break;
case 2 :
plus_used = /* true */1;
sharp_used = /* true */1;
space_used = /* true */1;
var iconv$2 = compute_int_conv(pct_ind, str_ind + 1 | 0, plus, sharp, space, Caml_string.get(str, str_ind));
var beg_ind$3 = str_ind + 1 | 0;
var match$27 = parse_literal(beg_ind$3, beg_ind$3, end_ind);
var fmt_rest$14 = match$27[0];
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored_001$3 = opt_of_pad(/* "_" */95, pad);
var ignored$10 = /* Ignored_nativeint */Block.__(4, [
iconv$2,
ignored_001$3
]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$10,
fmt_rest$14
])];
}
else {
pad_used = /* true */1;
var match$28 = make_padprec_fmt_ebb(pad, (prec_used[0] = /* true */1, prec), fmt_rest$14);
fmt_result = /* Fmt_EBB */[/* Nativeint */Block.__(6, [
iconv$2,
match$28[0],
match$28[1],
match$28[2]
])];
}
break;
}
}
}
else if (symb !== 76) {
exit = 1;
}
else {
plus_used = /* true */1;
sharp_used = /* true */1;
space_used = /* true */1;
var iconv$3 = compute_int_conv(pct_ind, str_ind + 1 | 0, plus, sharp, space, Caml_string.get(str, str_ind));
var beg_ind$4 = str_ind + 1 | 0;
var match$29 = parse_literal(beg_ind$4, beg_ind$4, end_ind);
var fmt_rest$15 = match$29[0];
if (ign_used[0] = /* true */1, ign) {
pad_used = /* true */1;
var ignored_001$4 = opt_of_pad(/* "_" */95, pad);
var ignored$11 = /* Ignored_int64 */Block.__(5, [
iconv$3,
ignored_001$4
]);
fmt_result = /* Fmt_EBB */[/* Ignored_param */Block.__(23, [
ignored$11,
fmt_rest$15
])];
}
else {
pad_used = /* true */1;
var match$30 = make_padprec_fmt_ebb(pad, (prec_used[0] = /* true */1, prec), fmt_rest$15);
fmt_result = /* Fmt_EBB */[/* Int64 */Block.__(7, [
iconv$3,
match$30[0],
match$30[1],
match$30[2]
])];
}
}
break;
}
if (exit === 1) {
fmt_result = Curry._3(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
": at character number ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* String_literal */Block.__(11, [
', invalid conversion "',
/* Char_literal */Block.__(12, [
/* "%" */37,
/* Char */Block.__(0, [/* Char_literal */Block.__(12, [
/* "\"" */34,
/* End_of_format */0
])])
])
])
])
])
])
]),
'invalid format %S: at character number %d, invalid conversion "%%%c"'
]), str, str_ind - 1 | 0, symb);
}
if (!legacy_behavior$1) {
if (!plus_used && plus) {
incompatible_flag(pct_ind, str_ind, symb, "'+'");
}
if (!sharp_used && sharp) {
incompatible_flag(pct_ind, str_ind, symb, "'#'");
}
if (!space_used && space) {
incompatible_flag(pct_ind, str_ind, symb, "' '");
}
if (!pad_used && Caml_obj.caml_notequal(/* Padding_EBB */[pad], /* Padding_EBB */[/* No_padding */0])) {
incompatible_flag(pct_ind, str_ind, symb, "`padding'");
}
if (!prec_used[0] && Caml_obj.caml_notequal(/* Precision_EBB */[prec], /* Precision_EBB */[/* No_precision */0])) {
incompatible_flag(pct_ind, str_ind, ign ? /* "_" */95 : symb, "`precision'");
}
if (ign && plus) {
incompatible_flag(pct_ind, str_ind, /* "_" */95, "'+'");
}
}
if (!ign_used[0] && ign) {
var exit$4 = 0;
if (symb >= 38) {
if (symb !== 44) {
if (symb !== 64) {
exit$4 = 1;
}
else if (!legacy_behavior$1) {
exit$4 = 1;
}
}
else if (!legacy_behavior$1) {
exit$4 = 1;
}
}
else if (symb !== 33) {
if (symb >= 37) {
if (!legacy_behavior$1) {
exit$4 = 1;
}
}
else {
exit$4 = 1;
}
}
else if (!legacy_behavior$1) {
exit$4 = 1;
}
if (exit$4 === 1) {
incompatible_flag(pct_ind, str_ind, symb, "'_'");
}
}
return fmt_result;
};
var parse_flags = function (pct_ind, str_ind, end_ind, ign) {
var zero = [/* false */0];
var minus = [/* false */0];
var plus = [/* false */0];
var space = [/* false */0];
var sharp = [/* false */0];
var set_flag = function (str_ind, flag) {
if (flag[0] && !legacy_behavior$1) {
Curry._3(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
": at character number ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* String_literal */Block.__(11, [
", duplicate flag ",
/* Caml_char */Block.__(1, [/* End_of_format */0])
])
])
])
])
]),
"invalid format %S: at character number %d, duplicate flag %C"
]), str, str_ind, Caml_string.get(str, str_ind));
}
flag[0] = /* true */1;
return /* () */0;
};
var _str_ind = str_ind;
while(true) {
var str_ind$1 = _str_ind;
if (str_ind$1 === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var match = Caml_string.get(str, str_ind$1);
var exit = 0;
var switcher = match - 32 | 0;
if (switcher > 16 || switcher < 0) {
exit = 1;
}
else {
switch (switcher) {
case 0 :
set_flag(str_ind$1, space);
_str_ind = str_ind$1 + 1 | 0;
continue ;
case 3 :
set_flag(str_ind$1, sharp);
_str_ind = str_ind$1 + 1 | 0;
continue ;
case 11 :
set_flag(str_ind$1, plus);
_str_ind = str_ind$1 + 1 | 0;
continue ;
case 13 :
set_flag(str_ind$1, minus);
_str_ind = str_ind$1 + 1 | 0;
continue ;
case 1 :
case 2 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 12 :
case 14 :
case 15 :
exit = 1;
break;
case 16 :
set_flag(str_ind$1, zero);
_str_ind = str_ind$1 + 1 | 0;
continue ;
}
}
if (exit === 1) {
var pct_ind$1 = pct_ind;
var str_ind$2 = str_ind$1;
var end_ind$1 = end_ind;
var zero$1 = zero[0];
var minus$1 = minus[0];
var plus$1 = plus[0];
var sharp$1 = sharp[0];
var space$1 = space[0];
var ign$1 = ign;
if (str_ind$2 === end_ind$1) {
invalid_format_message(end_ind$1, "unexpected end of format");
}
var padty = zero$1 !== 0 ? (
minus$1 !== 0 ? (
legacy_behavior$1 ? /* Left */0 : incompatible_flag(pct_ind$1, str_ind$2, /* "-" */45, "0")
) : /* Zeros */2
) : (
minus$1 !== 0 ? /* Left */0 : /* Right */1
);
var match$1 = Caml_string.get(str, str_ind$2);
var exit$1 = 0;
if (match$1 >= 48) {
if (match$1 >= 58) {
exit$1 = 1;
}
else {
var match$2 = parse_positive(str_ind$2, end_ind$1, 0);
return parse_after_padding(pct_ind$1, match$2[0], end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, /* Lit_padding */Block.__(0, [
padty,
match$2[1]
]));
}
}
else if (match$1 !== 42) {
exit$1 = 1;
}
else {
return parse_after_padding(pct_ind$1, str_ind$2 + 1 | 0, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, /* Arg_padding */Block.__(1, [padty]));
}
if (exit$1 === 1) {
switch (padty) {
case 0 :
if (!legacy_behavior$1) {
invalid_format_without(str_ind$2 - 1 | 0, /* "-" */45, "padding");
}
return parse_after_padding(pct_ind$1, str_ind$2, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, /* No_padding */0);
case 1 :
return parse_after_padding(pct_ind$1, str_ind$2, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, /* No_padding */0);
case 2 :
return parse_after_padding(pct_ind$1, str_ind$2, end_ind$1, minus$1, plus$1, sharp$1, space$1, ign$1, /* Lit_padding */Block.__(0, [
/* Right */1,
0
]));
}
}
}
};
};
var is_int_base = function (symb) {
var switcher = symb - 88 | 0;
if (switcher > 32 || switcher < 0) {
return /* false */0;
}
else {
switch (switcher) {
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 11 :
case 13 :
case 14 :
case 15 :
case 16 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 24 :
case 25 :
case 26 :
case 27 :
case 28 :
case 30 :
case 31 :
return /* false */0;
case 0 :
case 12 :
case 17 :
case 23 :
case 29 :
case 32 :
return /* true */1;
}
}
};
var counter_of_char = function (symb) {
var exit = 0;
if (symb >= 108) {
if (symb >= 111) {
exit = 1;
}
else {
switch (symb - 108 | 0) {
case 0 :
return /* Line_counter */0;
case 1 :
exit = 1;
break;
case 2 :
return /* Char_counter */1;
}
}
}
else if (symb !== 76) {
exit = 1;
}
else {
return /* Token_counter */2;
}
if (exit === 1) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"camlinternalFormat.ml",
2683,
34
]
];
}
};
var parse_char_set = function (str_ind, end_ind) {
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var char_set = Bytes.make(32, /* "\000" */0);
var add_range = function (c, c$prime) {
for(var i = c; i <= c$prime; ++i){
add_in_char_set(char_set, Pervasives.char_of_int(i));
}
return /* () */0;
};
var fail_single_percent = function (str_ind) {
return Curry._2(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"invalid format ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
": '",
/* Char_literal */Block.__(12, [
/* "%" */37,
/* String_literal */Block.__(11, [
"' alone is not accepted in character sets, use ",
/* Char_literal */Block.__(12, [
/* "%" */37,
/* Char_literal */Block.__(12, [
/* "%" */37,
/* String_literal */Block.__(11, [
" instead at position ",
/* Int */Block.__(4, [
/* Int_d */0,
/* No_padding */0,
/* No_precision */0,
/* Char_literal */Block.__(12, [
/* "." */46,
/* End_of_format */0
])
])
])
])
])
])
])
])
])
]),
"invalid format %S: '%%' alone is not accepted in character sets, use %%%% instead at position %d."
]), str, str_ind);
};
var parse_char_set_after_char = function (_str_ind, end_ind, _c) {
while(true) {
var c = _c;
var str_ind = _str_ind;
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var c$prime = Caml_string.get(str, str_ind);
var exit = 0;
var exit$1 = 0;
if (c$prime >= 46) {
if (c$prime !== 64) {
if (c$prime !== 93) {
exit = 1;
}
else {
add_in_char_set(char_set, c);
return str_ind + 1 | 0;
}
}
else {
exit$1 = 2;
}
}
else if (c$prime !== 37) {
if (c$prime >= 45) {
var str_ind$1 = str_ind + 1 | 0;
var end_ind$1 = end_ind;
var c$1 = c;
if (str_ind$1 === end_ind$1) {
invalid_format_message(end_ind$1, "unexpected end of format");
}
var c$prime$1 = Caml_string.get(str, str_ind$1);
if (c$prime$1 !== 37) {
if (c$prime$1 !== 93) {
add_range(c$1, c$prime$1);
return parse_char_set_content(str_ind$1 + 1 | 0, end_ind$1);
}
else {
add_in_char_set(char_set, c$1);
add_in_char_set(char_set, /* "-" */45);
return str_ind$1 + 1 | 0;
}
}
else {
if ((str_ind$1 + 1 | 0) === end_ind$1) {
invalid_format_message(end_ind$1, "unexpected end of format");
}
var c$prime$2 = Caml_string.get(str, str_ind$1 + 1 | 0);
var exit$2 = 0;
if (c$prime$2 !== 37) {
if (c$prime$2 !== 64) {
return fail_single_percent(str_ind$1);
}
else {
exit$2 = 1;
}
}
else {
exit$2 = 1;
}
if (exit$2 === 1) {
add_range(c$1, c$prime$2);
return parse_char_set_content(str_ind$1 + 2 | 0, end_ind$1);
}
}
}
else {
exit = 1;
}
}
else {
exit$1 = 2;
}
if (exit$1 === 2) {
if (c === /* "%" */37) {
add_in_char_set(char_set, c$prime);
return parse_char_set_content(str_ind + 1 | 0, end_ind);
}
else {
exit = 1;
}
}
if (exit === 1) {
if (c === /* "%" */37) {
fail_single_percent(str_ind);
}
add_in_char_set(char_set, c);
_c = c$prime;
_str_ind = str_ind + 1 | 0;
continue ;
}
};
};
var parse_char_set_content = function (_str_ind, end_ind) {
while(true) {
var str_ind = _str_ind;
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var c = Caml_string.get(str, str_ind);
if (c !== 45) {
if (c !== 93) {
return parse_char_set_after_char(str_ind + 1 | 0, end_ind, c);
}
else {
return str_ind + 1 | 0;
}
}
else {
add_in_char_set(char_set, /* "-" */45);
_str_ind = str_ind + 1 | 0;
continue ;
}
};
};
var parse_char_set_start = function (str_ind, end_ind) {
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var c = Caml_string.get(str, str_ind);
return parse_char_set_after_char(str_ind + 1 | 0, end_ind, c);
};
if (str_ind === end_ind) {
invalid_format_message(end_ind, "unexpected end of format");
}
var match = Caml_string.get(str, str_ind);
var match$1 = match !== 94 ? /* tuple */[
str_ind,
/* false */0
] : /* tuple */[
str_ind + 1 | 0,
/* true */1
];
var next_ind = parse_char_set_start(match$1[0], end_ind);
var char_set$1 = Bytes.to_string(char_set);
return /* tuple */[
next_ind,
match$1[1] ? rev_char_set(char_set$1) : char_set$1
];
};
var check_open_box = function (fmt) {
if (typeof fmt === "number") {
return /* () */0;
}
else if (fmt.tag === 11) {
if (typeof fmt[1] === "number") {
try {
open_box_of_string(fmt[0]);
return /* () */0;
}
catch (exn){
if (exn[0] === Caml_builtin_exceptions.failure) {
return /* () */0;
}
else {
throw exn;
}
}
}
else {
return /* () */0;
}
}
else {
return /* () */0;
}
};
var parse_tag = function (is_open_tag, str_ind, end_ind) {
try {
if (str_ind === end_ind) {
throw Caml_builtin_exceptions.not_found;
}
var match = Caml_string.get(str, str_ind);
if (match !== 60) {
throw Caml_builtin_exceptions.not_found;
}
else {
var ind = $$String.index_from(str, str_ind + 1 | 0, /* ">" */62);
if (ind >= end_ind) {
throw Caml_builtin_exceptions.not_found;
}
var sub_str = $$String.sub(str, str_ind, (ind - str_ind | 0) + 1 | 0);
var beg_ind = ind + 1 | 0;
var match$1 = parse_literal(beg_ind, beg_ind, end_ind);
var match$2 = parse_literal(str_ind, str_ind, ind + 1 | 0);
var sub_fmt = match$2[0];
var sub_format = /* Format */[
sub_fmt,
sub_str
];
var formatting = is_open_tag ? /* Open_tag */Block.__(0, [sub_format]) : (check_open_box(sub_fmt), /* Open_box */Block.__(1, [sub_format]));
return /* Fmt_EBB */[/* Formatting_gen */Block.__(18, [
formatting,
match$1[0]
])];
}
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
var match$3 = parse_literal(str_ind, str_ind, end_ind);
var sub_format$1 = /* Format */[
/* End_of_format */0,
""
];
var formatting$1 = is_open_tag ? /* Open_tag */Block.__(0, [sub_format$1]) : /* Open_box */Block.__(1, [sub_format$1]);
return /* Fmt_EBB */[/* Formatting_gen */Block.__(18, [
formatting$1,
match$3[0]
])];
}
else {
throw exn;
}
}
};
return parse_literal(0, 0, str.length);
}
function format_of_string_fmtty(str, fmtty) {
var match = fmt_ebb_of_string(/* None */0, str);
try {
return /* Format */[
type_format(match[0], fmtty),
str
];
}
catch (exn){
if (exn === Type_mismatch) {
return Curry._2(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"bad input: format type mismatch between ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
" and ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
])
])
]),
"bad input: format type mismatch between %S and %S"
]), str, string_of_fmtty(fmtty));
}
else {
throw exn;
}
}
}
function format_of_string_format(str, param) {
var match = fmt_ebb_of_string(/* None */0, str);
try {
return /* Format */[
type_format(match[0], fmtty_of_fmt(param[0])),
str
];
}
catch (exn){
if (exn === Type_mismatch) {
return Curry._2(failwith_message(/* Format */[
/* String_literal */Block.__(11, [
"bad input: format type mismatch between ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* String_literal */Block.__(11, [
" and ",
/* Caml_string */Block.__(3, [
/* No_padding */0,
/* End_of_format */0
])
])
])
]),
"bad input: format type mismatch between %S and %S"
]), str, param[1]);
}
else {
throw exn;
}
}
}
exports.is_in_char_set = is_in_char_set;
exports.rev_char_set = rev_char_set;
exports.create_char_set = create_char_set;
exports.add_in_char_set = add_in_char_set;
exports.freeze_char_set = freeze_char_set;
exports.param_format_of_ignored_format = param_format_of_ignored_format;
exports.make_printf = make_printf;
exports.output_acc = output_acc;
exports.bufput_acc = bufput_acc;
exports.strput_acc = strput_acc;
exports.type_format = type_format;
exports.fmt_ebb_of_string = fmt_ebb_of_string;
exports.format_of_string_fmtty = format_of_string_fmtty;
exports.format_of_string_format = format_of_string_format;
exports.char_of_iconv = char_of_iconv;
exports.string_of_formatting_lit = string_of_formatting_lit;
exports.string_of_formatting_gen = string_of_formatting_gen;
exports.string_of_fmtty = string_of_fmtty;
exports.string_of_fmt = string_of_fmt;
exports.open_box_of_string = open_box_of_string;
exports.symm = symm;
exports.trans = trans;
exports.recast = recast;
/* No side effect */
//////// end of camlinternalFormat.js ////////
    return exports;
  };
_registry['caml_io'] = function() {
    let exports = {};
//////// start of caml_io.js ////////
'use strict';
var Curry = require("./curry");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function $caret(prim, prim$1) {
return prim + prim$1;
}
var stdin = undefined;
var stdout = /* record */[
/* buffer */"",
/* output */function (_, s) {
var v = s.length - 1 | 0;
if (( (typeof process !== "undefined") && process.stdout && process.stdout.write)) {
return ( process.stdout.write )(s);
}
else if (s[v] === "\n") {
console.log(s.slice(0, v));
return /* () */0;
}
else {
console.log(s);
return /* () */0;
}
}
];
var stderr = /* record */[
/* buffer */"",
/* output */function (_, s) {
var v = s.length - 1 | 0;
if (s[v] === "\n") {
console.log(s.slice(0, v));
return /* () */0;
}
else {
console.log(s);
return /* () */0;
}
}
];
function caml_ml_open_descriptor_in() {
throw [
Caml_builtin_exceptions.failure,
"caml_ml_open_descriptor_in not implemented"
];
}
function caml_ml_open_descriptor_out() {
throw [
Caml_builtin_exceptions.failure,
"caml_ml_open_descriptor_out not implemented"
];
}
function caml_ml_flush(oc) {
if (oc[/* buffer */0] !== "") {
Curry._2(oc[/* output */1], oc, oc[/* buffer */0]);
oc[/* buffer */0] = "";
return /* () */0;
}
else {
return 0;
}
}
var node_std_output = (function (s){
return (typeof process !== "undefined") && process.stdout && (process.stdout.write(s), true);
}
);
function caml_ml_output(oc, str, offset, len) {
var str$1 = offset === 0 && len === str.length ? str : str.slice(offset, len);
if (( (typeof process !== "undefined") && process.stdout && process.stdout.write ) && oc === stdout) {
return ( process.stdout.write )(str$1);
}
else {
var id = str$1.lastIndexOf("\n");
if (id < 0) {
oc[/* buffer */0] = oc[/* buffer */0] + str$1;
return /* () */0;
}
else {
oc[/* buffer */0] = oc[/* buffer */0] + str$1.slice(0, id + 1 | 0);
caml_ml_flush(oc);
oc[/* buffer */0] = oc[/* buffer */0] + str$1.slice(id + 1 | 0);
return /* () */0;
}
}
}
function caml_ml_output_char(oc, $$char) {
return caml_ml_output(oc, String.fromCharCode($$char), 0, 1);
}
function caml_ml_input(_, _$1, _$2, _$3) {
throw [
Caml_builtin_exceptions.failure,
"caml_ml_input ic not implemented"
];
}
function caml_ml_input_char() {
throw [
Caml_builtin_exceptions.failure,
"caml_ml_input_char not implemnted"
];
}
function caml_ml_out_channels_list() {
return /* :: */[
stdout,
/* :: */[
stderr,
/* [] */0
]
];
}
exports.$caret = $caret;
exports.stdin = stdin;
exports.stdout = stdout;
exports.stderr = stderr;
exports.caml_ml_open_descriptor_in = caml_ml_open_descriptor_in;
exports.caml_ml_open_descriptor_out = caml_ml_open_descriptor_out;
exports.caml_ml_flush = caml_ml_flush;
exports.node_std_output = node_std_output;
exports.caml_ml_output = caml_ml_output;
exports.caml_ml_output_char = caml_ml_output_char;
exports.caml_ml_input = caml_ml_input;
exports.caml_ml_input_char = caml_ml_input_char;
exports.caml_ml_out_channels_list = caml_ml_out_channels_list;
/* stdin Not a pure module */
//////// end of caml_io.js ////////
    return exports;
  };
_registry['caml_lexer'] = function() {
    let exports = {};
//////// start of caml_lexer.js ////////
'use strict';
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function fail() {
throw [
Caml_builtin_exceptions.failure,
"lexing: empty token"
];
}
/***********************************************************************/
/* */
/* Objective Caml */
/* */
/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */
/* */
/* Copyright 1996 Institut National de Recherche en Informatique et */
/* en Automatique. All rights reserved. This file is distributed */
/* under the terms of the GNU Library General Public License, with */
/* the special exception on linking described in file ../LICENSE. */
/* */
/***********************************************************************/
/* $Id: lexing.c 6045 2004-01-01 16:42:43Z doligez $ */
/* The table-driven automaton for lexers generated by camllex. */
function caml_lex_array(s) {
var l = s.length / 2;
var a = new Array(l);
// when s.charCodeAt(2 * i + 1 ) > 128 (0x80)
// a[i] < 0
// for(var i = 0 ; i <= 0xffff; ++i) { if (i << 16 >> 16 !==i){console.log(i<<16>>16, 'vs',i)}}
//
for (var i = 0; i < l; i++)
a[i] = (s.charCodeAt(2 * i) | (s.charCodeAt(2 * i + 1) << 8)) << 16 >> 16;
return a;
}
/**
* external c_engine : lex_tables -> int -> lexbuf -> int
* lexing.ml
* type lex_tables = {
* lex_base : string;
* lex_backtrk : string;
* lex_default : string;
* lex_trans : string;
* lex_check : string;
* lex_base_code : string;
* lex_backtrk_code : string;
* lex_default_code : string;
* lex_trans_code : string;
* lex_check_code : string;
* lex_code : string;
* }
*
* type lexbuf = {
* refill_buff : lexbuf -> unit ;
* mutable lex_buffer : bytes;
* mutable lex_buffer_len : int;
* mutable lex_abs_pos : int;
* mutable lex_start_pos : int;
* mutable lex_curr_pos : int;
* mutable lex_last_pos : int;
* mutable lex_last_action : int;
* mutable lex_eof_reached : bool;
* mutable lex_mem : int array;
* mutable lex_start_p : position;
* mutable lex_curr_p;
* }
* @param tbl
* @param start_state
* @param lexbuf
* @returns {any}
*/
function $$caml_lex_engine(tbl, start_state, lexbuf) {
// Lexing.lexbuf
var lex_buffer = 1;
var lex_buffer_len = 2;
var lex_start_pos = 4;
var lex_curr_pos = 5;
var lex_last_pos = 6;
var lex_last_action = 7;
var lex_eof_reached = 8;
// Lexing.lex_tables
var lex_base = 0;
var lex_backtrk = 1;
var lex_default = 2;
var lex_trans = 3;
var lex_check = 4;
if (!tbl.lex_default) {
tbl.lex_base = caml_lex_array(tbl[lex_base]);
tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]);
tbl.lex_check = caml_lex_array(tbl[lex_check]);
tbl.lex_trans = caml_lex_array(tbl[lex_trans]);
tbl.lex_default = caml_lex_array(tbl[lex_default]);
}
var c;
var state = start_state;
//var buffer = bytes_of_string(lexbuf[lex_buffer]);
var buffer = lexbuf[lex_buffer];
if (state >= 0) {
/* First entry */
lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos];
lexbuf[lex_last_action] = -1;
}
else {
/* Reentry after refill */
state = -state - 1;
}
for (;;) {
/* Lookup base address or action number for current state */
var base = tbl.lex_base[state];
if (base < 0)
return -base - 1;
/* See if it's a backtrack point */
var backtrk = tbl.lex_backtrk[state];
if (backtrk >= 0) {
lexbuf[lex_last_pos] = lexbuf[lex_curr_pos];
lexbuf[lex_last_action] = backtrk;
}
/* See if we need a refill */
if (lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) {
if (lexbuf[lex_eof_reached] === 0)
return -state - 1;
else
c = 256;
}
else {
/* Read next input char */
c = buffer[lexbuf[lex_curr_pos]];
lexbuf[lex_curr_pos]++;
}
/* Determine next state */
if (tbl.lex_check[base + c] === state) {
state = tbl.lex_trans[base + c];
}
else {
state = tbl.lex_default[state];
}
/* If no transition on this char, return to last backtrack point */
if (state < 0) {
lexbuf[lex_curr_pos] = lexbuf[lex_last_pos];
if (lexbuf[lex_last_action] == -1)
fail();
else
return lexbuf[lex_last_action];
}
else {
/* Erase the EOF condition only if the EOF pseudo-character was
consumed by the automaton (i.e. there was no backtrack above)
*/
if (c == 256)
lexbuf[lex_eof_reached] = 0;
}
}
}
/***********************************************/
/* New lexer engine, with memory of positions */
/***********************************************/
/**
* s -> Lexing.lex_tables.lex_code
* mem -> Lexing.lexbuf.lex_mem (* int array *)
*/
function caml_lex_run_mem(s, i, mem, curr_pos) {
for (;;) {
var dst = s.charCodeAt(i);
i++;
if (dst == 0xff)
return;
var src = s.charCodeAt(i);
i++;
if (src == 0xff)
mem[dst] = curr_pos;
else
mem[dst] = mem[src];
}
}
/**
* s -> Lexing.lex_tables.lex_code
* mem -> Lexing.lexbuf.lex_mem (* int array *)
*/
function caml_lex_run_tag(s, i, mem) {
for (;;) {
var dst = s.charCodeAt(i);
i++;
if (dst == 0xff)
return;
var src = s.charCodeAt(i);
i++;
if (src == 0xff)
mem[dst] = -1;
else
mem[dst] = mem[src];
}
}
/**
* external c_new_engine : lex_tables -> int -> lexbuf -> int = "caml_new_lex_engine"
* @param tbl
* @param start_state
* @param lexbuf
* @returns {any}
*/
function $$caml_new_lex_engine(tbl, start_state, lexbuf) {
// Lexing.lexbuf
var lex_buffer = 1;
var lex_buffer_len = 2;
var lex_start_pos = 4;
var lex_curr_pos = 5;
var lex_last_pos = 6;
var lex_last_action = 7;
var lex_eof_reached = 8;
var lex_mem = 9;
// Lexing.lex_tables
var lex_base = 0;
var lex_backtrk = 1;
var lex_default = 2;
var lex_trans = 3;
var lex_check = 4;
var lex_base_code = 5;
var lex_backtrk_code = 6;
var lex_default_code = 7;
var lex_trans_code = 8;
var lex_check_code = 9;
var lex_code = 10;
if (!tbl.lex_default) {
tbl.lex_base = caml_lex_array(tbl[lex_base]);
tbl.lex_backtrk = caml_lex_array(tbl[lex_backtrk]);
tbl.lex_check = caml_lex_array(tbl[lex_check]);
tbl.lex_trans = caml_lex_array(tbl[lex_trans]);
tbl.lex_default = caml_lex_array(tbl[lex_default]);
}
if (!tbl.lex_default_code) {
tbl.lex_base_code = caml_lex_array(tbl[lex_base_code]);
tbl.lex_backtrk_code = caml_lex_array(tbl[lex_backtrk_code]);
tbl.lex_check_code = caml_lex_array(tbl[lex_check_code]);
tbl.lex_trans_code = caml_lex_array(tbl[lex_trans_code]);
tbl.lex_default_code = caml_lex_array(tbl[lex_default_code]);
}
if (tbl.lex_code == null) {
//tbl.lex_code = caml_bytes_of_string(tbl[lex_code]);
tbl.lex_code = (tbl[lex_code]);
}
var c, state = start_state;
//var buffer = caml_bytes_of_string(lexbuf[lex_buffer]);
var buffer = lexbuf[lex_buffer];
if (state >= 0) {
/* First entry */
lexbuf[lex_last_pos] = lexbuf[lex_start_pos] = lexbuf[lex_curr_pos];
lexbuf[lex_last_action] = -1;
}
else {
/* Reentry after refill */
state = -state - 1;
}
for (;;) {
/* Lookup base address or action number for current state */
var base = tbl.lex_base[state];
if (base < 0) {
var pc_off = tbl.lex_base_code[state];
caml_lex_run_tag(tbl.lex_code, pc_off, lexbuf[lex_mem]);
return -base - 1;
}
/* See if it's a backtrack point */
var backtrk = tbl.lex_backtrk[state];
if (backtrk >= 0) {
var pc_off = tbl.lex_backtrk_code[state];
caml_lex_run_tag(tbl.lex_code, pc_off, lexbuf[lex_mem]);
lexbuf[lex_last_pos] = lexbuf[lex_curr_pos];
lexbuf[lex_last_action] = backtrk;
}
/* See if we need a refill */
if (lexbuf[lex_curr_pos] >= lexbuf[lex_buffer_len]) {
if (lexbuf[lex_eof_reached] == 0)
return -state - 1;
else
c = 256;
}
else {
/* Read next input char */
c = buffer[lexbuf[lex_curr_pos]];
lexbuf[lex_curr_pos]++;
}
/* Determine next state */
var pstate = state;
if (tbl.lex_check[base + c] == state)
state = tbl.lex_trans[base + c];
else
state = tbl.lex_default[state];
/* If no transition on this char, return to last backtrack point */
if (state < 0) {
lexbuf[lex_curr_pos] = lexbuf[lex_last_pos];
if (lexbuf[lex_last_action] == -1)
fail();
else
return lexbuf[lex_last_action];
}
else {
/* If some transition, get and perform memory moves */
var base_code = tbl.lex_base_code[pstate], pc_off;
if (tbl.lex_check_code[base_code + c] == pstate)
pc_off = tbl.lex_trans_code[base_code + c];
else
pc_off = tbl.lex_default_code[pstate];
if (pc_off > 0)
caml_lex_run_mem(tbl.lex_code, pc_off, lexbuf[lex_mem], lexbuf[lex_curr_pos]);
/* Erase the EOF condition only if the EOF pseudo-character was
consumed by the automaton (i.e. there was no backtrack above)
*/
if (c == 256)
lexbuf[lex_eof_reached] = 0;
}
}
}
;
function caml_lex_engine(prim, prim$1, prim$2) {
return $$caml_lex_engine(prim, prim$1, prim$2);
}
function caml_new_lex_engine(prim, prim$1, prim$2) {
return $$caml_new_lex_engine(prim, prim$1, prim$2);
}
exports.fail = fail;
exports.caml_lex_engine = caml_lex_engine;
exports.caml_new_lex_engine = caml_new_lex_engine;
/* Not a pure module */
//////// end of caml_lexer.js ////////
    return exports;
  };
_registry['caml_obj'] = function() {
    let exports = {};
//////// start of caml_obj.js ////////
'use strict';
var Block = require("./block");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function caml_obj_dup(x) {
var len = x.length;
var v = new Array(len);
for(var i = 0 ,i_finish = len - 1 | 0; i <= i_finish; ++i){
v[i] = x[i];
}
v.tag = x.tag | 0;
return v;
}
function caml_obj_truncate(x, new_size) {
var len = x.length;
if (new_size <= 0 || new_size > len) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Obj.truncate"
];
}
else if (len !== new_size) {
for(var i = new_size ,i_finish = len - 1 | 0; i <= i_finish; ++i){
x[i] = 0;
}
x.length = new_size;
return /* () */0;
}
else {
return 0;
}
}
function caml_lazy_make_forward(x) {
return Block.__(250, [x]);
}
function caml_update_dummy(x, y) {
var len = y.length;
for(var i = 0 ,i_finish = len - 1 | 0; i <= i_finish; ++i){
x[i] = y[i];
}
var y_tag = y.tag | 0;
if (y_tag !== 0) {
x.tag = y_tag;
return /* () */0;
}
else {
return 0;
}
}
function caml_int_compare(x, y) {
if (x < y) {
return -1;
}
else if (x === y) {
return 0;
}
else {
return 1;
}
}
function caml_compare(_a, _b) {
while(true) {
var b = _b;
var a = _a;
if (typeof a === "string") {
var x = a;
var y = b;
if (x < y) {
return -1;
}
else if (x === y) {
return 0;
}
else {
return 1;
}
}
else if (typeof a === "number") {
return caml_int_compare(a, b);
}
else if (typeof a === "boolean" || typeof a === "null" || typeof a === "undefined") {
var x$1 = a;
var y$1 = b;
if (x$1 === y$1) {
return 0;
}
else if (x$1 < y$1) {
return -1;
}
else {
return 1;
}
}
else {
var tag_a = a.tag | 0;
var tag_b = b.tag | 0;
if (tag_a === 250) {
_a = a[0];
continue ;
}
else if (tag_b === 250) {
_b = b[0];
continue ;
}
else if (tag_a === 248) {
return caml_int_compare(a[1], b[1]);
}
else if (tag_a === 251) {
throw [
Caml_builtin_exceptions.invalid_argument,
"equal: abstract value"
];
}
else if (tag_a !== tag_b) {
if (tag_a < tag_b) {
return -1;
}
else {
return 1;
}
}
else {
var len_a = a.length;
var len_b = b.length;
if (len_a === len_b) {
var a$1 = a;
var b$1 = b;
var _i = 0;
var same_length = len_a;
while(true) {
var i = _i;
if (i === same_length) {
return 0;
}
else {
var res = caml_compare(a$1[i], b$1[i]);
if (res !== 0) {
return res;
}
else {
_i = i + 1 | 0;
continue ;
}
}
};
}
else if (len_a < len_b) {
var a$2 = a;
var b$2 = b;
var _i$1 = 0;
var short_length = len_a;
while(true) {
var i$1 = _i$1;
if (i$1 === short_length) {
return -1;
}
else {
var res$1 = caml_compare(a$2[i$1], b$2[i$1]);
if (res$1 !== 0) {
return res$1;
}
else {
_i$1 = i$1 + 1 | 0;
continue ;
}
}
};
}
else {
var a$3 = a;
var b$3 = b;
var _i$2 = 0;
var short_length$1 = len_b;
while(true) {
var i$2 = _i$2;
if (i$2 === short_length$1) {
return 1;
}
else {
var res$2 = caml_compare(a$3[i$2], b$3[i$2]);
if (res$2 !== 0) {
return res$2;
}
else {
_i$2 = i$2 + 1 | 0;
continue ;
}
}
};
}
}
}
};
}
function caml_equal(_a, _b) {
while(true) {
var b = _b;
var a = _a;
if (a === b) {
return /* true */1;
}
else if (typeof a === "string" || typeof a === "number" || typeof a === "boolean" || typeof a === "undefined" || typeof a === "null") {
return /* false */0;
}
else {
var tag_a = a.tag | 0;
var tag_b = b.tag | 0;
if (tag_a === 250) {
_a = a[0];
continue ;
}
else if (tag_b === 250) {
_b = b[0];
continue ;
}
else if (tag_a === 248) {
return +(a[1] === b[1]);
}
else if (tag_a === 251) {
throw [
Caml_builtin_exceptions.invalid_argument,
"equal: abstract value"
];
}
else if (tag_a !== tag_b) {
return /* false */0;
}
else {
var len_a = a.length;
var len_b = b.length;
if (len_a === len_b) {
var a$1 = a;
var b$1 = b;
var _i = 0;
var same_length = len_a;
while(true) {
var i = _i;
if (i === same_length) {
return /* true */1;
}
else if (caml_equal(a$1[i], b$1[i])) {
_i = i + 1 | 0;
continue ;
}
else {
return /* false */0;
}
};
}
else {
return /* false */0;
}
}
}
};
}
function caml_notequal(a, b) {
return 1 - caml_equal(a, b);
}
function caml_greaterequal(a, b) {
return +(caml_compare(a, b) >= 0);
}
function caml_greaterthan(a, b) {
return +(caml_compare(a, b) > 0);
}
function caml_lessequal(a, b) {
return +(caml_compare(a, b) <= 0);
}
function caml_lessthan(a, b) {
return +(caml_compare(a, b) < 0);
}
var caml_int32_compare = caml_int_compare;
var caml_nativeint_compare = caml_int_compare;
exports.caml_obj_dup = caml_obj_dup;
exports.caml_obj_truncate = caml_obj_truncate;
exports.caml_lazy_make_forward = caml_lazy_make_forward;
exports.caml_update_dummy = caml_update_dummy;
exports.caml_int_compare = caml_int_compare;
exports.caml_int32_compare = caml_int32_compare;
exports.caml_nativeint_compare = caml_nativeint_compare;
exports.caml_compare = caml_compare;
exports.caml_equal = caml_equal;
exports.caml_notequal = caml_notequal;
exports.caml_greaterequal = caml_greaterequal;
exports.caml_greaterthan = caml_greaterthan;
exports.caml_lessthan = caml_lessthan;
exports.caml_lessequal = caml_lessequal;
/* No side effect */
//////// end of caml_obj.js ////////
    return exports;
  };
_registry['caml_oo'] = function() {
    let exports = {};
//////// start of caml_oo.js ////////
'use strict';
var Caml_array = require("./caml_array");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
var caml_methods_cache = Caml_array.caml_make_vect(1000, 0);
function caml_get_public_method(obj, tag, cacheid) {
var meths = obj[0];
var offs = caml_methods_cache[cacheid];
if (meths[offs] === tag) {
return meths[offs - 1 | 0];
}
else {
var aux = function (_i) {
while(true) {
var i = _i;
if (i < 3) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"caml_oo.ml",
54,
20
]
];
}
else if (meths[i] === tag) {
caml_methods_cache[cacheid] = i;
return i;
}
else {
_i = i - 2 | 0;
continue ;
}
};
};
return meths[aux((meths[0] << 1) + 1 | 0) - 1 | 0];
}
}
exports.caml_get_public_method = caml_get_public_method;
/* No side effect */
//////// end of caml_oo.js ////////
    return exports;
  };
_registry['caml_parser'] = function() {
    let exports = {};
//////// start of caml_parser.js ////////
'use strict';
/***********************************************************************/
/* */
/* Objective Caml */
/* */
/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */
/* */
/* Copyright 1996 Institut National de Recherche en Informatique et */
/* en Automatique. All rights reserved. This file is distributed */
/* under the terms of the GNU Library General Public License, with */
/* the special exception on linking described in file ../LICENSE. */
/* */
/***********************************************************************/
/* $Id: parsing.c 8983 2008-08-06 09:38:25Z xleroy $ */
/* The PDA automaton for parsers generated by camlyacc */
/* The pushdown automata */
/**
* caml_lex_array("abcd")
* [25185, 25699]
* @param s
* @returns {any[]}
* TODO: duplicated with module {!Caml_lex}
*/
function caml_lex_array(s) {
var l = s.length / 2;
var a = new Array(l);
for (var i = 0; i < l; i++)
a[i] = (s.charCodeAt(2 * i) | (s.charCodeAt(2 * i + 1) << 8)) << 16 >> 16;
return a;
}
/**
* Note that TS enum is not friendly to Closure compiler
* @enum{number}
*/
var Automata = {
START: 0,
LOOP: 6,
TOKEN_READ: 1,
TEST_SHIFT: 7,
ERROR_DETECTED: 5,
SHIFT: 8,
SHIFT_RECOVER: 9,
STACK_GROWN_1: 2,
REDUCE: 10,
STACK_GROWN_2: 3,
SEMANTIC_ACTION_COMPUTED: 4
};
/**
* @enum{number}
*/
var Result = {
READ_TOKEN: 0,
RAISE_PARSE_ERROR: 1,
GROW_STACKS_1: 2,
GROW_STACKS_2: 3,
COMPUTE_SEMANTIC_ACTION: 4,
CALL_ERROR_FUNCTION: 5
};
var PARSER_TRACE = false;
/**
* external parse_engine : parse_tables -> parser_env -> parser_input -> Obj.t -> parser_output
* parsing.ml
*
* type parse_tables = {
* actions : (parser_env -> Obj.t) array
* transl_const : int array;
* transl_block : int array;
* lhs : string;
* len : string;
* defred : string;
* dgoto : string;
* sindex : string;
* rindex : string;
* gindex : string;
* tablesize : int;
* table : string;
* check : string;
* error_function : string -> unit;
* names_const : string;
* names_block : string
* }
*
* type parser_env =
* { mutable s_stack : int array; (* States *)
* mutable v_stack : Obj.t array; (* Semantic attributes *)
* mutable symb_start_stack : position array; (* Start positions *)
* mutable symb_end_stack : position array; (* End positions *)
* mutable stacksize : int; (* Size of the stacks *)
* mutable stackbase : int; (* Base sp for current parse *)
* mutable curr_char : int; (* Last token read *)
* mutable lval : Obj.t; (* Its semantic attribute *)
* mutable symb_start : position; (* Start pos. of the current symbol*)
* mutable symb_end : position; (* End pos. of the current symbol *)
* mutable asp : int; (* The stack pointer for attributes *)
* mutable rule_len : int; (* Number of rhs items in the rule *)
* mutable rule_number : int; (* Rule number to reduce by *)
* mutable sp : int; (* Saved sp for parse_engine *)
* mutable state : int; (* Saved state for parse_engine *)
* mutable errflag : int } (* Saved error flag for parse_engine *)
*
* type parser_input =
* | Start
* | Token_read
* | Stacks_grown_1
* | Stacks_grown_2
* | Semantic_action_computed
* | Error_detected
* @param tables
* @param env
* @param cmd
* @param arg
* @returns {number}
*/
function $$caml_parse_engine(tables /* parser_table */, env /* parser_env */, cmd /* parser_input*/, arg /* Obj.t*/) {
var ERRCODE = 256;
//var START = 0;
//var TOKEN_READ = 1;
//var STACKS_GROWN_1 = 2;
//var STACKS_GROWN_2 = 3;
//var SEMANTIC_ACTION_COMPUTED = 4;
//var ERROR_DETECTED = 5;
//var loop = 6;
//var testshift = 7;
//var shift = 8;
//var shift_recover = 9;
//var reduce = 10;
// Parsing.parser_env
var env_s_stack = 0; // array
var env_v_stack = 1; // array
var env_symb_start_stack = 2; // array
var env_symb_end_stack = 3; // array
var env_stacksize = 4;
var env_stackbase = 5;
var env_curr_char = 6;
var env_lval = 7; // Obj.t
var env_symb_start = 8; // position
var env_symb_end = 9; // position
var env_asp = 10;
var env_rule_len = 11;
var env_rule_number = 12;
var env_sp = 13;
var env_state = 14;
var env_errflag = 15;
// Parsing.parse_tables
// var _tbl_actions = 1;
var tbl_transl_const = 1; // array
var tbl_transl_block = 2; // array
var tbl_lhs = 3;
var tbl_len = 4;
var tbl_defred = 5;
var tbl_dgoto = 6;
var tbl_sindex = 7;
var tbl_rindex = 8;
var tbl_gindex = 9;
var tbl_tablesize = 10;
var tbl_table = 11;
var tbl_check = 12;
// var _tbl_error_function = 14;
// var _tbl_names_const = 15;
// var _tbl_names_block = 16;
if (!tables.dgoto) {
tables.defred = caml_lex_array(tables[tbl_defred]);
tables.sindex = caml_lex_array(tables[tbl_sindex]);
tables.check = caml_lex_array(tables[tbl_check]);
tables.rindex = caml_lex_array(tables[tbl_rindex]);
tables.table = caml_lex_array(tables[tbl_table]);
tables.len = caml_lex_array(tables[tbl_len]);
tables.lhs = caml_lex_array(tables[tbl_lhs]);
tables.gindex = caml_lex_array(tables[tbl_gindex]);
tables.dgoto = caml_lex_array(tables[tbl_dgoto]);
}
var res;
var n, n1, n2, state1;
// RESTORE
var sp = env[env_sp];
var state = env[env_state];
var errflag = env[env_errflag];
exit: for (;;) {
//console.error("State", Automata[cmd]);
switch (cmd) {
case Automata.START:
state = 0;
errflag = 0;
// Fall through
case Automata.LOOP:
n = tables.defred[state];
if (n != 0) {
cmd = Automata.REDUCE;
break;
}
if (env[env_curr_char] >= 0) {
cmd = Automata.TEST_SHIFT;
break;
}
res = Result.READ_TOKEN;
break exit;
/* The ML code calls the lexer and updates */
/* symb_start and symb_end */
case Automata.TOKEN_READ:
if (typeof arg !== 'number') {
env[env_curr_char] = tables[tbl_transl_block][arg.tag | 0 /* + 1 */];
env[env_lval] = arg[0];
}
else {
env[env_curr_char] = tables[tbl_transl_const][arg /* + 1 */];
env[env_lval] = 0;
}
if (PARSER_TRACE) {
console.error("State %d, read token", state, arg);
}
// Fall through
case Automata.TEST_SHIFT:
n1 = tables.sindex[state];
n2 = n1 + env[env_curr_char];
if (n1 != 0 && n2 >= 0 && n2 <= tables[tbl_tablesize] &&
tables.check[n2] == env[env_curr_char]) {
cmd = Automata.SHIFT;
break;
}
n1 = tables.rindex[state];
n2 = n1 + env[env_curr_char];
if (n1 != 0 && n2 >= 0 && n2 <= tables[tbl_tablesize] &&
tables.check[n2] == env[env_curr_char]) {
n = tables.table[n2];
cmd = Automata.REDUCE;
break;
}
if (errflag <= 0) {
res = Result.CALL_ERROR_FUNCTION;
break exit;
}
// Fall through
/* The ML code calls the error function */
case Automata.ERROR_DETECTED:
if (errflag < 3) {
errflag = 3;
for (;;) {
state1 = env[env_s_stack][sp /* + 1*/];
n1 = tables.sindex[state1];
n2 = n1 + ERRCODE;
if (n1 != 0 && n2 >= 0 && n2 <= tables[tbl_tablesize] &&
tables.check[n2] == ERRCODE) {
cmd = Automata.SHIFT_RECOVER;
break;
}
else {
if (sp <= env[env_stackbase])
return Result.RAISE_PARSE_ERROR;
/* The ML code raises Parse_error */
sp--;
}
}
}
else {
if (env[env_curr_char] == 0)
return Result.RAISE_PARSE_ERROR;
/* The ML code raises Parse_error */
env[env_curr_char] = -1;
cmd = Automata.LOOP;
break;
}
// Fall through
case Automata.SHIFT:
env[env_curr_char] = -1;
if (errflag > 0)
errflag--;
// Fall through
case Automata.SHIFT_RECOVER:
if (PARSER_TRACE) {
console.error("State %d: shift to state %d", state, tables.table[n2]);
}
state = tables.table[n2];
sp++;
if (sp >= env[env_stacksize]) {
res = Result.GROW_STACKS_1;
break exit;
}
// Fall through
/* The ML code resizes the stacks */
case Automata.STACK_GROWN_1:
env[env_s_stack][sp /* + 1 */] = state;
env[env_v_stack][sp /* + 1 */] = env[env_lval];
env[env_symb_start_stack][sp /* + 1 */] = env[env_symb_start];
env[env_symb_end_stack][sp /* + 1 */] = env[env_symb_end];
cmd = Automata.LOOP;
break;
case Automata.REDUCE:
if (PARSER_TRACE) {
console.error("State %d : reduce by rule %d", state, n);
}
var m = tables.len[n];
env[env_asp] = sp;
env[env_rule_number] = n;
env[env_rule_len] = m;
sp = sp - m + 1;
m = tables.lhs[n];
state1 = env[env_s_stack][sp - 1]; //
n1 = tables.gindex[m];
n2 = n1 + state1;
if (n1 != 0 && n2 >= 0 && n2 <= tables[tbl_tablesize] &&
tables.check[n2] == state1)
state = tables.table[n2];
else
state = tables.dgoto[m];
if (sp >= env[env_stacksize]) {
res = Result.GROW_STACKS_2;
break exit;
}
// Fall through
/* The ML code resizes the stacks */
case Automata.STACK_GROWN_2:
res = Result.COMPUTE_SEMANTIC_ACTION;
break exit;
/* The ML code calls the semantic action */
case Automata.SEMANTIC_ACTION_COMPUTED:
env[env_s_stack][sp /* + 1 */] = state;
env[env_v_stack][sp /* + 1*/] = arg;
var asp = env[env_asp];
env[env_symb_end_stack][sp /* + 1*/] = env[env_symb_end_stack][asp /* + 1*/];
if (sp > asp) {
/* This is an epsilon production. Take symb_start equal to symb_end. */
env[env_symb_start_stack][sp /* + 1*/] = env[env_symb_end_stack][asp /*+ 1*/];
}
cmd = Automata.LOOP;
break;
/* Should not happen */
default:
return Result.RAISE_PARSE_ERROR;
}
}
// SAVE
env[env_sp] = sp;
env[env_state] = state;
env[env_errflag] = errflag;
return res;
}
/**
* external set_trace: bool -> bool = "caml_set_parser_trace"
* parsing.ml
* @param {boolean}
* @returns {boolean}
*/
function $$caml_set_parser_trace(v) {
var old = PARSER_TRACE;
PARSER_TRACE = v;
return old;
}
;
function caml_parse_engine(prim, prim$1, prim$2, prim$3) {
return $$caml_parse_engine(prim, prim$1, prim$2, prim$3);
}
function caml_set_parser_trace(prim) {
return $$caml_set_parser_trace(prim);
}
exports.caml_parse_engine = caml_parse_engine;
exports.caml_set_parser_trace = caml_set_parser_trace;
/* Not a pure module */
//////// end of caml_parser.js ////////
    return exports;
  };
_registry['caml_string'] = function() {
    let exports = {};
//////// start of caml_string.js ////////
'use strict';
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function js_string_of_char(prim) {
return String.fromCharCode(prim);
}
function caml_string_get(s, i) {
if (i >= s.length || i < 0) {
throw [
Caml_builtin_exceptions.invalid_argument,
"index out of bounds"
];
}
else {
return s.charCodeAt(i);
}
}
function caml_create_string(len) {
if (len < 0) {
throw [
Caml_builtin_exceptions.invalid_argument,
"String.create"
];
}
else {
return new Array(len);
}
}
function caml_string_compare(s1, s2) {
if (s1 === s2) {
return 0;
}
else if (s1 < s2) {
return -1;
}
else {
return 1;
}
}
function caml_fill_string(s, i, l, c) {
if (l > 0) {
for(var k = i ,k_finish = (l + i | 0) - 1 | 0; k <= k_finish; ++k){
s[k] = c;
}
return /* () */0;
}
else {
return 0;
}
}
function caml_blit_string(s1, i1, s2, i2, len) {
if (len > 0) {
var off1 = s1.length - i1 | 0;
if (len <= off1) {
for(var i = 0 ,i_finish = len - 1 | 0; i <= i_finish; ++i){
s2[i2 + i | 0] = s1.charCodeAt(i1 + i | 0);
}
return /* () */0;
}
else {
for(var i$1 = 0 ,i_finish$1 = off1 - 1 | 0; i$1 <= i_finish$1; ++i$1){
s2[i2 + i$1 | 0] = s1.charCodeAt(i1 + i$1 | 0);
}
for(var i$2 = off1 ,i_finish$2 = len - 1 | 0; i$2 <= i_finish$2; ++i$2){
s2[i2 + i$2 | 0] = /* "\000" */0;
}
return /* () */0;
}
}
else {
return 0;
}
}
function caml_blit_bytes(s1, i1, s2, i2, len) {
if (len > 0) {
if (s1 === s2) {
var s1$1 = s1;
var i1$1 = i1;
var i2$1 = i2;
var len$1 = len;
if (i1$1 < i2$1) {
var range_a = (s1$1.length - i2$1 | 0) - 1 | 0;
var range_b = len$1 - 1 | 0;
var range = range_a > range_b ? range_b : range_a;
for(var j = range; j >= 0; --j){
s1$1[i2$1 + j | 0] = s1$1[i1$1 + j | 0];
}
return /* () */0;
}
else if (i1$1 > i2$1) {
var range_a$1 = (s1$1.length - i1$1 | 0) - 1 | 0;
var range_b$1 = len$1 - 1 | 0;
var range$1 = range_a$1 > range_b$1 ? range_b$1 : range_a$1;
for(var k = 0; k <= range$1; ++k){
s1$1[i2$1 + k | 0] = s1$1[i1$1 + k | 0];
}
return /* () */0;
}
else {
return 0;
}
}
else {
var off1 = s1.length - i1 | 0;
if (len <= off1) {
for(var i = 0 ,i_finish = len - 1 | 0; i <= i_finish; ++i){
s2[i2 + i | 0] = s1[i1 + i | 0];
}
return /* () */0;
}
else {
for(var i$1 = 0 ,i_finish$1 = off1 - 1 | 0; i$1 <= i_finish$1; ++i$1){
s2[i2 + i$1 | 0] = s1[i1 + i$1 | 0];
}
for(var i$2 = off1 ,i_finish$2 = len - 1 | 0; i$2 <= i_finish$2; ++i$2){
s2[i2 + i$2 | 0] = /* "\000" */0;
}
return /* () */0;
}
}
}
else {
return 0;
}
}
function bytes_of_string(s) {
var len = s.length;
var res = new Array(len);
for(var i = 0 ,i_finish = len - 1 | 0; i <= i_finish; ++i){
res[i] = s.charCodeAt(i);
}
return res;
}
function bytes_to_string(a) {
var bytes = a;
var i = 0;
var len = a.length;
var s = "";
var s_len = len;
if (i === 0 && len <= 4096 && len === bytes.length) {
return String.fromCharCode.apply(null,bytes);
}
else {
var offset = 0;
while(s_len > 0) {
var next = s_len < 1024 ? s_len : 1024;
var tmp_bytes = new Array(next);
caml_blit_bytes(bytes, offset, tmp_bytes, 0, next);
s = s + String.fromCharCode.apply(null,tmp_bytes);
s_len = s_len - next | 0;
offset = offset + next | 0;
};
return s;
}
}
function caml_string_of_char_array(chars) {
var len = chars.length;
var bytes = new Array(len);
for(var i = 0 ,i_finish = len - 1 | 0; i <= i_finish; ++i){
bytes[i] = chars[i];
}
return bytes_to_string(bytes);
}
function caml_is_printable(c) {
if (c > 31) {
return +(c < 127);
}
else {
return /* false */0;
}
}
function caml_string_get16(s, i) {
return s.charCodeAt(i) + (s.charCodeAt(i + 1 | 0) << 8) | 0;
}
function caml_string_get32(s, i) {
return ((s.charCodeAt(i) + (s.charCodeAt(i + 1 | 0) << 8) | 0) + (s.charCodeAt(i + 2 | 0) << 16) | 0) + (s.charCodeAt(i + 3 | 0) << 24) | 0;
}
function get(s, i) {
if (i < 0 || i >= s.length) {
throw [
Caml_builtin_exceptions.invalid_argument,
"index out of bounds"
];
}
else {
return s.charCodeAt(i);
}
}
exports.bytes_of_string = bytes_of_string;
exports.bytes_to_string = bytes_to_string;
exports.caml_is_printable = caml_is_printable;
exports.caml_string_of_char_array = caml_string_of_char_array;
exports.caml_string_get = caml_string_get;
exports.caml_string_compare = caml_string_compare;
exports.caml_create_string = caml_create_string;
exports.caml_fill_string = caml_fill_string;
exports.caml_blit_string = caml_blit_string;
exports.caml_blit_bytes = caml_blit_bytes;
exports.caml_string_get16 = caml_string_get16;
exports.caml_string_get32 = caml_string_get32;
exports.js_string_of_char = js_string_of_char;
exports.get = get;
/* No side effect */
//////// end of caml_string.js ////////
    return exports;
  };
_registry['caml_utils'] = function() {
    let exports = {};
//////// start of caml_utils.js ////////
'use strict';
var repeat = ( (String.prototype.repeat && function (count,self){return self.repeat(count)}) ||
function(count , self) {
if (self.length == 0 || count == 0) {
return '';
}
// Ensuring count is a 31-bit integer allows us to heavily optimize the
// main part. But anyway, most current (August 2014) browsers can't handle
// strings 1 << 28 chars or longer, so:
if (self.length * count >= 1 << 28) {
throw new RangeError('repeat count must not overflow maximum string size');
}
var rpt = '';
for (;;) {
if ((count & 1) == 1) {
rpt += self;
}
count >>>= 1;
if (count == 0) {
break;
}
self += self;
}
return rpt;
}
);
exports.repeat = repeat;
/* repeat Not a pure module */
//////// end of caml_utils.js ////////
    return exports;
  };
_registry['char'] = function() {
    let exports = {};
//////// start of char.js ////////
'use strict';
var Caml_string = require("./caml_string");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function chr(n) {
if (n < 0 || n > 255) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Char.chr"
];
}
else {
return n;
}
}
function escaped(c) {
var exit = 0;
if (c >= 40) {
if (c !== 92) {
exit = c >= 127 ? 1 : 2;
}
else {
return "\\\\";
}
}
else if (c >= 32) {
if (c >= 39) {
return "\\'";
}
else {
exit = 2;
}
}
else if (c >= 14) {
exit = 1;
}
else {
switch (c) {
case 8 :
return "\\b";
case 9 :
return "\\t";
case 10 :
return "\\n";
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
case 6 :
case 7 :
case 11 :
case 12 :
exit = 1;
break;
case 13 :
return "\\r";
}
}
switch (exit) {
case 1 :
var s = new Array(4);
s[0] = /* "\\" */92;
s[1] = 48 + (c / 100 | 0) | 0;
s[2] = 48 + (c / 10 | 0) % 10 | 0;
s[3] = 48 + c % 10 | 0;
return Caml_string.bytes_to_string(s);
case 2 :
var s$1 = new Array(1);
s$1[0] = c;
return Caml_string.bytes_to_string(s$1);
}
}
function lowercase(c) {
if (c >= /* "A" */65 && c <= /* "Z" */90 || c >= /* "\192" */192 && c <= /* "\214" */214 || c >= /* "\216" */216 && c <= /* "\222" */222) {
return c + 32 | 0;
}
else {
return c;
}
}
function uppercase(c) {
if (c >= /* "a" */97 && c <= /* "z" */122 || c >= /* "\224" */224 && c <= /* "\246" */246 || c >= /* "\248" */248 && c <= /* "\254" */254) {
return c - 32 | 0;
}
else {
return c;
}
}
function compare(c1, c2) {
return c1 - c2 | 0;
}
exports.chr = chr;
exports.escaped = escaped;
exports.lowercase = lowercase;
exports.uppercase = uppercase;
exports.compare = compare;
/* No side effect */
//////// end of char.js ////////
    return exports;
  };
_registry['curry'] = function() {
    let exports = {};
//////// start of curry.js ////////
'use strict';
var Caml_oo = require("./caml_oo");
var Caml_array = require("./caml_array");
function app(_f, _args) {
while(true) {
var args = _args;
var f = _f;
var arity = f.length;
var arity$1 = arity ? arity : 1;
var len = args.length;
var d = arity$1 - len | 0;
if (d) {
if (d < 0) {
_args = Caml_array.caml_array_sub(args, arity$1, -d | 0);
_f = f.apply(null, Caml_array.caml_array_sub(args, 0, arity$1));
continue ;
}
else {
return (function(f,args){
return function (x) {
return app(f, args.concat(/* array */[x]));
}
}(f,args));
}
}
else {
return f.apply(null, args);
}
};
}
function js(label, cacheid, obj, args) {
var meth = Caml_oo.caml_get_public_method(obj, label, cacheid);
return app(meth, args);
}
function curry_1(o, a0, arity) {
if (arity > 7 || arity < 0) {
return app(o, /* array */[a0]);
}
else {
switch (arity) {
case 0 :
case 1 :
return o(a0);
case 2 :
return function (param) {
return o(a0, param);
};
case 3 :
return function (param, param$1) {
return o(a0, param, param$1);
};
case 4 :
return function (param, param$1, param$2) {
return o(a0, param, param$1, param$2);
};
case 5 :
return function (param, param$1, param$2, param$3) {
return o(a0, param, param$1, param$2, param$3);
};
case 6 :
return function (param, param$1, param$2, param$3, param$4) {
return o(a0, param, param$1, param$2, param$3, param$4);
};
case 7 :
return function (param, param$1, param$2, param$3, param$4, param$5) {
return o(a0, param, param$1, param$2, param$3, param$4, param$5);
};
}
}
}
function _1(o, a0) {
var arity = o.length;
if (arity === 1) {
return o(a0);
}
else {
return curry_1(o, a0, arity);
}
}
function js1(label, cacheid, a0) {
return _1(Caml_oo.caml_get_public_method(a0, label, cacheid), a0);
}
function __1(o) {
var arity = o.length;
if (arity === 1) {
return o;
}
else {
return function (a0) {
return _1(o, a0);
};
}
}
function curry_2(o, a0, a1, arity) {
if (arity > 7 || arity < 0) {
return app(o, /* array */[
a0,
a1
]);
}
else {
switch (arity) {
case 0 :
case 1 :
return app(o(a0), /* array */[a1]);
case 2 :
return o(a0, a1);
case 3 :
return function (param) {
return o(a0, a1, param);
};
case 4 :
return function (param, param$1) {
return o(a0, a1, param, param$1);
};
case 5 :
return function (param, param$1, param$2) {
return o(a0, a1, param, param$1, param$2);
};
case 6 :
return function (param, param$1, param$2, param$3) {
return o(a0, a1, param, param$1, param$2, param$3);
};
case 7 :
return function (param, param$1, param$2, param$3, param$4) {
return o(a0, a1, param, param$1, param$2, param$3, param$4);
};
}
}
}
function _2(o, a0, a1) {
var arity = o.length;
if (arity === 2) {
return o(a0, a1);
}
else {
return curry_2(o, a0, a1, arity);
}
}
function js2(label, cacheid, a0, a1) {
return _2(Caml_oo.caml_get_public_method(a0, label, cacheid), a0, a1);
}
function __2(o) {
var arity = o.length;
if (arity === 2) {
return o;
}
else {
return function (a0, a1) {
return _2(o, a0, a1);
};
}
}
function curry_3(o, a0, a1, a2, arity) {
if (arity > 7 || arity < 0) {
return app(o, /* array */[
a0,
a1,
a2
]);
}
else {
switch (arity) {
case 0 :
case 1 :
return app(o(a0), /* array */[
a1,
a2
]);
case 2 :
return app(o(a0, a1), /* array */[a2]);
case 3 :
return o(a0, a1, a2);
case 4 :
return function (param) {
return o(a0, a1, a2, param);
};
case 5 :
return function (param, param$1) {
return o(a0, a1, a2, param, param$1);
};
case 6 :
return function (param, param$1, param$2) {
return o(a0, a1, a2, param, param$1, param$2);
};
case 7 :
return function (param, param$1, param$2, param$3) {
return o(a0, a1, a2, param, param$1, param$2, param$3);
};
}
}
}
function _3(o, a0, a1, a2) {
var arity = o.length;
if (arity === 3) {
return o(a0, a1, a2);
}
else {
return curry_3(o, a0, a1, a2, arity);
}
}
function js3(label, cacheid, a0, a1, a2) {
return _3(Caml_oo.caml_get_public_method(a0, label, cacheid), a0, a1, a2);
}
function __3(o) {
var arity = o.length;
if (arity === 3) {
return o;
}
else {
return function (a0, a1, a2) {
return _3(o, a0, a1, a2);
};
}
}
function curry_4(o, a0, a1, a2, a3, arity) {
if (arity > 7 || arity < 0) {
return app(o, /* array */[
a0,
a1,
a2,
a3
]);
}
else {
switch (arity) {
case 0 :
case 1 :
return app(o(a0), /* array */[
a1,
a2,
a3
]);
case 2 :
return app(o(a0, a1), /* array */[
a2,
a3
]);
case 3 :
return app(o(a0, a1, a2), /* array */[a3]);
case 4 :
return o(a0, a1, a2, a3);
case 5 :
return function (param) {
return o(a0, a1, a2, a3, param);
};
case 6 :
return function (param, param$1) {
return o(a0, a1, a2, a3, param, param$1);
};
case 7 :
return function (param, param$1, param$2) {
return o(a0, a1, a2, a3, param, param$1, param$2);
};
}
}
}
function _4(o, a0, a1, a2, a3) {
var arity = o.length;
if (arity === 4) {
return o(a0, a1, a2, a3);
}
else {
return curry_4(o, a0, a1, a2, a3, arity);
}
}
function js4(label, cacheid, a0, a1, a2, a3) {
return _4(Caml_oo.caml_get_public_method(a0, label, cacheid), a0, a1, a2, a3);
}
function __4(o) {
var arity = o.length;
if (arity === 4) {
return o;
}
else {
return function (a0, a1, a2, a3) {
return _4(o, a0, a1, a2, a3);
};
}
}
function curry_5(o, a0, a1, a2, a3, a4, arity) {
if (arity > 7 || arity < 0) {
return app(o, /* array */[
a0,
a1,
a2,
a3,
a4
]);
}
else {
switch (arity) {
case 0 :
case 1 :
return app(o(a0), /* array */[
a1,
a2,
a3,
a4
]);
case 2 :
return app(o(a0, a1), /* array */[
a2,
a3,
a4
]);
case 3 :
return app(o(a0, a1, a2), /* array */[
a3,
a4
]);
case 4 :
return app(o(a0, a1, a2, a3), /* array */[a4]);
case 5 :
return o(a0, a1, a2, a3, a4);
case 6 :
return function (param) {
return o(a0, a1, a2, a3, a4, param);
};
case 7 :
return function (param, param$1) {
return o(a0, a1, a2, a3, a4, param, param$1);
};
}
}
}
function _5(o, a0, a1, a2, a3, a4) {
var arity = o.length;
if (arity === 5) {
return o(a0, a1, a2, a3, a4);
}
else {
return curry_5(o, a0, a1, a2, a3, a4, arity);
}
}
function js5(label, cacheid, a0, a1, a2, a3, a4) {
return _5(Caml_oo.caml_get_public_method(a0, label, cacheid), a0, a1, a2, a3, a4);
}
function __5(o) {
var arity = o.length;
if (arity === 5) {
return o;
}
else {
return function (a0, a1, a2, a3, a4) {
return _5(o, a0, a1, a2, a3, a4);
};
}
}
function curry_6(o, a0, a1, a2, a3, a4, a5, arity) {
if (arity > 7 || arity < 0) {
return app(o, /* array */[
a0,
a1,
a2,
a3,
a4,
a5
]);
}
else {
switch (arity) {
case 0 :
case 1 :
return app(o(a0), /* array */[
a1,
a2,
a3,
a4,
a5
]);
case 2 :
return app(o(a0, a1), /* array */[
a2,
a3,
a4,
a5
]);
case 3 :
return app(o(a0, a1, a2), /* array */[
a3,
a4,
a5
]);
case 4 :
return app(o(a0, a1, a2, a3), /* array */[
a4,
a5
]);
case 5 :
return app(o(a0, a1, a2, a3, a4), /* array */[a5]);
case 6 :
return o(a0, a1, a2, a3, a4, a5);
case 7 :
return function (param) {
return o(a0, a1, a2, a3, a4, a5, param);
};
}
}
}
function _6(o, a0, a1, a2, a3, a4, a5) {
var arity = o.length;
if (arity === 6) {
return o(a0, a1, a2, a3, a4, a5);
}
else {
return curry_6(o, a0, a1, a2, a3, a4, a5, arity);
}
}
function js6(label, cacheid, a0, a1, a2, a3, a4, a5) {
return _6(Caml_oo.caml_get_public_method(a0, label, cacheid), a0, a1, a2, a3, a4, a5);
}
function __6(o) {
var arity = o.length;
if (arity === 6) {
return o;
}
else {
return function (a0, a1, a2, a3, a4, a5) {
return _6(o, a0, a1, a2, a3, a4, a5);
};
}
}
function curry_7(o, a0, a1, a2, a3, a4, a5, a6, arity) {
if (arity > 7 || arity < 0) {
return app(o, /* array */[
a0,
a1,
a2,
a3,
a4,
a5,
a6
]);
}
else {
switch (arity) {
case 0 :
case 1 :
return app(o(a0), /* array */[
a1,
a2,
a3,
a4,
a5,
a6
]);
case 2 :
return app(o(a0, a1), /* array */[
a2,
a3,
a4,
a5,
a6
]);
case 3 :
return app(o(a0, a1, a2), /* array */[
a3,
a4,
a5,
a6
]);
case 4 :
return app(o(a0, a1, a2, a3), /* array */[
a4,
a5,
a6
]);
case 5 :
return app(o(a0, a1, a2, a3, a4), /* array */[
a5,
a6
]);
case 6 :
return app(o(a0, a1, a2, a3, a4, a5), /* array */[a6]);
case 7 :
return o(a0, a1, a2, a3, a4, a5, a6);
}
}
}
function _7(o, a0, a1, a2, a3, a4, a5, a6) {
var arity = o.length;
if (arity === 7) {
return o(a0, a1, a2, a3, a4, a5, a6);
}
else {
return curry_7(o, a0, a1, a2, a3, a4, a5, a6, arity);
}
}
function js7(label, cacheid, a0, a1, a2, a3, a4, a5, a6) {
return _7(Caml_oo.caml_get_public_method(a0, label, cacheid), a0, a1, a2, a3, a4, a5, a6);
}
function __7(o) {
var arity = o.length;
if (arity === 7) {
return o;
}
else {
return function (a0, a1, a2, a3, a4, a5, a6) {
return _7(o, a0, a1, a2, a3, a4, a5, a6);
};
}
}
function curry_8(o, a0, a1, a2, a3, a4, a5, a6, a7, arity) {
if (arity > 7 || arity < 0) {
return app(o, /* array */[
a0,
a1,
a2,
a3,
a4,
a5,
a6,
a7
]);
}
else {
switch (arity) {
case 0 :
case 1 :
return app(o(a0), /* array */[
a1,
a2,
a3,
a4,
a5,
a6,
a7
]);
case 2 :
return app(o(a0, a1), /* array */[
a2,
a3,
a4,
a5,
a6,
a7
]);
case 3 :
return app(o(a0, a1, a2), /* array */[
a3,
a4,
a5,
a6,
a7
]);
case 4 :
return app(o(a0, a1, a2, a3), /* array */[
a4,
a5,
a6,
a7
]);
case 5 :
return app(o(a0, a1, a2, a3, a4), /* array */[
a5,
a6,
a7
]);
case 6 :
return app(o(a0, a1, a2, a3, a4, a5), /* array */[
a6,
a7
]);
case 7 :
return app(o(a0, a1, a2, a3, a4, a5, a6), /* array */[a7]);
}
}
}
function _8(o, a0, a1, a2, a3, a4, a5, a6, a7) {
var arity = o.length;
if (arity === 8) {
return o(a0, a1, a2, a3, a4, a5, a6, a7);
}
else {
return curry_8(o, a0, a1, a2, a3, a4, a5, a6, a7, arity);
}
}
function js8(label, cacheid, a0, a1, a2, a3, a4, a5, a6, a7) {
return _8(Caml_oo.caml_get_public_method(a0, label, cacheid), a0, a1, a2, a3, a4, a5, a6, a7);
}
function __8(o) {
var arity = o.length;
if (arity === 8) {
return o;
}
else {
return function (a0, a1, a2, a3, a4, a5, a6, a7) {
return _8(o, a0, a1, a2, a3, a4, a5, a6, a7);
};
}
}
exports.app = app;
exports.js = js;
exports.curry_1 = curry_1;
exports._1 = _1;
exports.js1 = js1;
exports.__1 = __1;
exports.curry_2 = curry_2;
exports._2 = _2;
exports.js2 = js2;
exports.__2 = __2;
exports.curry_3 = curry_3;
exports._3 = _3;
exports.js3 = js3;
exports.__3 = __3;
exports.curry_4 = curry_4;
exports._4 = _4;
exports.js4 = js4;
exports.__4 = __4;
exports.curry_5 = curry_5;
exports._5 = _5;
exports.js5 = js5;
exports.__5 = __5;
exports.curry_6 = curry_6;
exports._6 = _6;
exports.js6 = js6;
exports.__6 = __6;
exports.curry_7 = curry_7;
exports._7 = _7;
exports.js7 = js7;
exports.__7 = __7;
exports.curry_8 = curry_8;
exports._8 = _8;
exports.js8 = js8;
exports.__8 = __8;
/* No side effect */
//////// end of curry.js ////////
    return exports;
  };
_registry['decode'] = function() {
    let exports = {};
//////// start of decode.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var F32 = require("./f32");
var F64 = require("./f64");
var I32 = require("./i32");
var Lib = require("./lib");
var List = require("bs-platform/lib/js/list");
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var $$Error = require("./error");
var Encode = require("./encode");
var Printf = require("bs-platform/lib/js/printf");
var Source = require("./source");
var $$String = require("bs-platform/lib/js/string");
var Caml_obj = require("bs-platform/lib/js/caml_obj");
var Operators = require("./operators");
var Caml_int64 = require("bs-platform/lib/js/caml_int64");
var Caml_string = require("bs-platform/lib/js/caml_string");
var Caml_exceptions = require("bs-platform/lib/js/caml_exceptions");
var EOS = Caml_exceptions.create("Decode.EOS");
function stream(name, bs) {
return /* record */[
/* name */name,
/* bytes */bs,
/* pos */[0]
];
}
function eos(s) {
return +(s[/* pos */2][0] === s[/* bytes */1].length);
}
function check(n, s) {
if ((s[/* pos */2][0] + n | 0) > s[/* bytes */1].length) {
throw EOS;
}
else {
return 0;
}
}
function skip(n, s) {
check(n, s);
s[/* pos */2][0] = s[/* pos */2][0] + n | 0;
return /* () */0;
}
function read(s) {
return Caml_string.get(s[/* bytes */1], s[/* pos */2][0]);
}
function peek(s) {
if (eos(s)) {
return /* None */0;
}
else {
return /* Some */[read(s)];
}
}
function get(s) {
check(1, s);
var b = read(s);
skip(1, s);
return b;
}
var Code = $$Error.Make(/* module */[]);
var Code$1 = Code[/* Error */0];
function string_of_byte(b) {
return Curry._1(Printf.sprintf(/* Format */[
/* Int */Block.__(4, [
/* Int_x */6,
/* Lit_padding */Block.__(0, [
/* Zeros */2,
2
]),
/* No_precision */0,
/* End_of_format */0
]),
"%02x"
]), b);
}
function position(s, pos) {
return /* record */[
/* file */s[/* name */0],
/* line */-1,
/* column */pos
];
}
function region(s, left, right) {
return /* record */[
/* left */position(s, left),
/* right */position(s, right)
];
}
function error(s, pos, msg) {
throw [
Code$1,
region(s, pos, pos),
msg
];
}
function $$require(b, s, pos, msg) {
if (b) {
return 0;
}
else {
return error(s, pos, msg);
}
}
function guard(f, s) {
try {
return Curry._1(f, s);
}
catch (exn){
if (exn === EOS) {
return error(s, s[/* bytes */1].length, "unexpected end of binary or function");
}
else {
throw exn;
}
}
}
function get$1(param) {
return guard(get, param);
}
function expect(b, s, msg) {
return $$require(+(guard(get$1, s) === b), s, s[/* pos */2][0] - 1 | 0, msg);
}
function illegal(s, pos, b) {
return error(s, pos, "illegal opcode " + string_of_byte(b));
}
function at(f, s) {
var left = s[/* pos */2][0];
var x = Curry._1(f, s);
var right = s[/* pos */2][0];
return Source.$at$at(x, region(s, left, right));
}
function u16(s) {
var lo = guard(get, s);
var hi = guard(get, s);
return (hi << 8) + lo | 0;
}
function u32(s) {
var lo = u16(s);
var hi = u16(s);
return lo + (hi << 16) | 0;
}
function u64(s) {
var lo = Caml_int64.of_int32(u32(s));
var hi = Caml_int64.of_int32(u32(s));
return Caml_int64.add(lo, Caml_int64.lsl_(hi, 32));
}
function vuN(n, s) {
$$require(+(n > 0), s, s[/* pos */2][0], "integer representation too long");
var b = guard(get, s);
$$require(+(n >= 7 || (b & 127) < (1 << n)), s, s[/* pos */2][0] - 1 | 0, "integer too large");
var x = Caml_int64.of_int32(b & 127);
if (b & 128) {
return Caml_int64.or_(x, Caml_int64.lsl_(vuN(n - 7 | 0, s), 7));
}
else {
return x;
}
}
function vsN(n, s) {
$$require(+(n > 0), s, s[/* pos */2][0], "integer representation too long");
var b = guard(get, s);
var mask = (-1 << n) & 127;
$$require(+(n >= 7 || (b & mask) === 0 || (b & mask) === mask), s, s[/* pos */2][0] - 1 | 0, "integer too large");
var x = Caml_int64.of_int32(b & 127);
if (b & 128) {
return Caml_int64.or_(x, Caml_int64.lsl_(vsN(n - 7 | 0, s), 7));
}
else if (b & 64) {
return /* int64 */[
/* hi */x[0] | /* hi */-1,
/* lo */((x[1] | /* lo */4294967168) >>> 0)
];
}
else {
return x;
}
}
function vu32(s) {
return vuN(32, s)[1] | 0;
}
function vs32(s) {
return vsN(32, s)[1] | 0;
}
function vs64(s) {
return vsN(64, s);
}
function f32(s) {
return Curry._1(F32.of_bits, u32(s));
}
function f64(s) {
return Curry._1(F64.of_bits, u64(s));
}
function len32(s) {
var pos = s[/* pos */2][0];
var n = vuN(32, s)[1] | 0;
if (n <= s[/* bytes */1].length) {
return n;
}
else {
return error(s, pos, "length out of bounds");
}
}
function string(s) {
var n = len32(s);
return guard(function (param) {
var n$1 = n;
var s = param;
var i = s[/* pos */2][0];
skip(n$1, s);
return $$String.sub(s[/* bytes */1], i, n$1);
}, s);
}
function list(f, n, s) {
if (n) {
var x = Curry._1(f, s);
return /* :: */[
x,
list(f, n - 1 | 0, s)
];
}
else {
return /* [] */0;
}
}
function opt(f, b, s) {
if (b) {
return /* Some */[Curry._1(f, s)];
}
else {
return /* None */0;
}
}
function vec(f, s) {
var n = len32(s);
return list(f, n, s);
}
function sized(f, s) {
var size = len32(s);
var start = s[/* pos */2][0];
var x = Curry._2(f, size, s);
$$require(+(s[/* pos */2][0] === (start + size | 0)), s, start, "section size mismatch");
return x;
}
function value_type(s) {
var match = vsN(7, s)[1] | 0;
var switcher = match + 4 | 0;
if (switcher > 3 || switcher < 0) {
return error(s, s[/* pos */2][0] - 1 | 0, "invalid value type");
}
else {
switch (switcher) {
case 0 :
return /* F64Type */3;
case 1 :
return /* F32Type */2;
case 2 :
return /* I64Type */1;
case 3 :
return /* I32Type */0;
}
}
}
function elem_type(s) {
var match = vsN(7, s)[1] | 0;
if (match !== -16) {
return error(s, s[/* pos */2][0] - 1 | 0, "invalid element type");
}
else {
return /* AnyFuncType */0;
}
}
function stack_type(s) {
var match = peek(s);
if (match) {
if (match[0] !== 64) {
return /* :: */[
value_type(s),
/* [] */0
];
}
else {
guard(function (param) {
return skip(1, param);
}, s);
return /* [] */0;
}
}
else {
return /* :: */[
value_type(s),
/* [] */0
];
}
}
function func_type(s) {
var match = vsN(7, s)[1] | 0;
if (match !== -32) {
return error(s, s[/* pos */2][0] - 1 | 0, "invalid function type");
}
else {
var ins = vec(value_type, s);
var out = vec(value_type, s);
return /* FuncType */[
ins,
out
];
}
}
function limits(vu, s) {
var has_max = +((vuN(1, s)[1] | 0) === 1);
var min = Curry._1(vu, s);
var max = opt(vu, has_max, s);
return /* record */[
/* min */min,
/* max */max
];
}
function table_type(s) {
var t = elem_type(s);
var lim = limits(vu32, s);
return /* TableType */[
lim,
t
];
}
function memory_type(s) {
var lim = limits(vu32, s);
return /* MemoryType */[lim];
}
function mutability(s) {
var match = guard(get, s);
if (match !== 0) {
if (match !== 1) {
return error(s, s[/* pos */2][0] - 1 | 0, "invalid mutability");
}
else {
return /* Mutable */1;
}
}
else {
return /* Immutable */0;
}
}
function global_type(s) {
var t = value_type(s);
var mut = mutability(s);
return /* GlobalType */[
t,
mut
];
}
function $$var(s) {
return vuN(32, s)[1] | 0;
}
function memop(s) {
var align = vuN(32, s)[1] | 0;
$$require(Curry._2(I32.le_u, align, 32), s, s[/* pos */2][0] - 1 | 0, "invalid memop flags");
var offset = vuN(32, s)[1] | 0;
return /* tuple */[
align,
offset
];
}
function instr(s) {
var pos = s[/* pos */2][0];
var b = guard(get, s);
if (b > 191 || b < 0) {
return illegal(s, pos, b);
}
else {
switch (b) {
case 0 :
return Operators.unreachable;
case 1 :
return Operators.nop;
case 2 :
var ts = stack_type(s);
var es$prime = List.rev(instr_block$prime(s, /* [] */0));
expect(11, s, "END opcode expected");
return Operators.block(ts, es$prime);
case 3 :
var ts$1 = stack_type(s);
var es$prime$1 = List.rev(instr_block$prime(s, /* [] */0));
expect(11, s, "END opcode expected");
return Operators.loop(ts$1, es$prime$1);
case 4 :
var ts$2 = stack_type(s);
var es1 = List.rev(instr_block$prime(s, /* [] */0));
if (Caml_obj.caml_equal(peek(s), /* Some */[5])) {
expect(5, s, "ELSE or END opcode expected");
var es2 = List.rev(instr_block$prime(s, /* [] */0));
expect(11, s, "END opcode expected");
return Operators.if_(ts$2, es1, es2);
}
else {
expect(11, s, "END opcode expected");
return Operators.if_(ts$2, es1, /* [] */0);
}
break;
case 5 :
return error(s, pos, "misplaced ELSE opcode");
case 11 :
return error(s, pos, "misplaced END opcode");
case 12 :
return Operators.br(at($$var, s));
case 13 :
return Operators.br_if(at($$var, s));
case 14 :
var xs = vec(function (param) {
return at($$var, param);
}, s);
var x = at($$var, s);
return Operators.br_table(xs, x);
case 15 :
return Operators.$$return;
case 16 :
return Operators.call(at($$var, s));
case 17 :
var x$1 = at($$var, s);
expect(0, s, "zero flag expected");
return Operators.call_indirect(x$1);
case 26 :
return Operators.drop;
case 27 :
return Operators.select;
case 32 :
return Operators.get_local(at($$var, s));
case 33 :
return Operators.set_local(at($$var, s));
case 34 :
return Operators.tee_local(at($$var, s));
case 35 :
return Operators.get_global(at($$var, s));
case 36 :
return Operators.set_global(at($$var, s));
case 6 :
case 7 :
case 8 :
case 9 :
case 10 :
case 18 :
case 19 :
case 20 :
case 21 :
case 22 :
case 23 :
case 24 :
case 25 :
case 28 :
case 29 :
case 30 :
case 31 :
case 37 :
case 38 :
case 39 :
return illegal(s, pos, b);
case 40 :
var match = memop(s);
return Operators.i32_load(match[0], match[1]);
case 41 :
var match$1 = memop(s);
return Operators.i64_load(match$1[0], match$1[1]);
case 42 :
var match$2 = memop(s);
return Operators.f32_load(match$2[0], match$2[1]);
case 43 :
var match$3 = memop(s);
return Operators.f64_load(match$3[0], match$3[1]);
case 44 :
var match$4 = memop(s);
return Operators.i32_load8_s(match$4[0], match$4[1]);
case 45 :
var match$5 = memop(s);
return Operators.i32_load8_u(match$5[0], match$5[1]);
case 46 :
var match$6 = memop(s);
return Operators.i32_load16_s(match$6[0], match$6[1]);
case 47 :
var match$7 = memop(s);
return Operators.i32_load16_u(match$7[0], match$7[1]);
case 48 :
var match$8 = memop(s);
return Operators.i64_load8_s(match$8[0], match$8[1]);
case 49 :
var match$9 = memop(s);
return Operators.i64_load8_u(match$9[0], match$9[1]);
case 50 :
var match$10 = memop(s);
return Operators.i64_load16_s(match$10[0], match$10[1]);
case 51 :
var match$11 = memop(s);
return Operators.i64_load16_u(match$11[0], match$11[1]);
case 52 :
var match$12 = memop(s);
return Operators.i64_load32_s(match$12[0], match$12[1]);
case 53 :
var match$13 = memop(s);
return Operators.i64_load32_u(match$13[0], match$13[1]);
case 54 :
var match$14 = memop(s);
return Operators.i32_store(match$14[0], match$14[1]);
case 55 :
var match$15 = memop(s);
return Operators.i64_store(match$15[0], match$15[1]);
case 56 :
var match$16 = memop(s);
return Operators.f32_store(match$16[0], match$16[1]);
case 57 :
var match$17 = memop(s);
return Operators.f64_store(match$17[0], match$17[1]);
case 58 :
var match$18 = memop(s);
return Operators.i32_store8(match$18[0], match$18[1]);
case 59 :
var match$19 = memop(s);
return Operators.i32_store16(match$19[0], match$19[1]);
case 60 :
var match$20 = memop(s);
return Operators.i64_store8(match$20[0], match$20[1]);
case 61 :
var match$21 = memop(s);
return Operators.i64_store16(match$21[0], match$21[1]);
case 62 :
var match$22 = memop(s);
return Operators.i64_store32(match$22[0], match$22[1]);
case 63 :
expect(0, s, "zero flag expected");
return Operators.current_memory;
case 64 :
expect(0, s, "zero flag expected");
return Operators.grow_memory;
case 65 :
return Operators.i32_const(at(vs32, s));
case 66 :
return Operators.i64_const(at(vs64, s));
case 67 :
return Operators.f32_const(at(f32, s));
case 68 :
return Operators.f64_const(at(f64, s));
case 69 :
return Operators.i32_eqz;
case 70 :
return Operators.i32_eq;
case 71 :
return Operators.i32_ne;
case 72 :
return Operators.i32_lt_s;
case 73 :
return Operators.i32_lt_u;
case 74 :
return Operators.i32_gt_s;
case 75 :
return Operators.i32_gt_u;
case 76 :
return Operators.i32_le_s;
case 77 :
return Operators.i32_le_u;
case 78 :
return Operators.i32_ge_s;
case 79 :
return Operators.i32_ge_u;
case 80 :
return Operators.i64_eqz;
case 81 :
return Operators.i64_eq;
case 82 :
return Operators.i64_ne;
case 83 :
return Operators.i64_lt_s;
case 84 :
return Operators.i64_lt_u;
case 85 :
return Operators.i64_gt_s;
case 86 :
return Operators.i64_gt_u;
case 87 :
return Operators.i64_le_s;
case 88 :
return Operators.i64_le_u;
case 89 :
return Operators.i64_ge_s;
case 90 :
return Operators.i64_ge_u;
case 91 :
return Operators.f32_eq;
case 92 :
return Operators.f32_ne;
case 93 :
return Operators.f32_lt;
case 94 :
return Operators.f32_gt;
case 95 :
return Operators.f32_le;
case 96 :
return Operators.f32_ge;
case 97 :
return Operators.f64_eq;
case 98 :
return Operators.f64_ne;
case 99 :
return Operators.f64_lt;
case 100 :
return Operators.f64_gt;
case 101 :
return Operators.f64_le;
case 102 :
return Operators.f64_ge;
case 103 :
return Operators.i32_clz;
case 104 :
return Operators.i32_ctz;
case 105 :
return Operators.i32_popcnt;
case 106 :
return Operators.i32_add;
case 107 :
return Operators.i32_sub;
case 108 :
return Operators.i32_mul;
case 109 :
return Operators.i32_div_s;
case 110 :
return Operators.i32_div_u;
case 111 :
return Operators.i32_rem_s;
case 112 :
return Operators.i32_rem_u;
case 113 :
return Operators.i32_and;
case 114 :
return Operators.i32_or;
case 115 :
return Operators.i32_xor;
case 116 :
return Operators.i32_shl;
case 117 :
return Operators.i32_shr_s;
case 118 :
return Operators.i32_shr_u;
case 119 :
return Operators.i32_rotl;
case 120 :
return Operators.i32_rotr;
case 121 :
return Operators.i64_clz;
case 122 :
return Operators.i64_ctz;
case 123 :
return Operators.i64_popcnt;
case 124 :
return Operators.i64_add;
case 125 :
return Operators.i64_sub;
case 126 :
return Operators.i64_mul;
case 127 :
return Operators.i64_div_s;
case 128 :
return Operators.i64_div_u;
case 129 :
return Operators.i64_rem_s;
case 130 :
return Operators.i64_rem_u;
case 131 :
return Operators.i64_and;
case 132 :
return Operators.i64_or;
case 133 :
return Operators.i64_xor;
case 134 :
return Operators.i64_shl;
case 135 :
return Operators.i64_shr_s;
case 136 :
return Operators.i64_shr_u;
case 137 :
return Operators.i64_rotl;
case 138 :
return Operators.i64_rotr;
case 139 :
return Operators.f32_abs;
case 140 :
return Operators.f32_neg;
case 141 :
return Operators.f32_ceil;
case 142 :
return Operators.f32_floor;
case 143 :
return Operators.f32_trunc;
case 144 :
return Operators.f32_nearest;
case 145 :
return Operators.f32_sqrt;
case 146 :
return Operators.f32_add;
case 147 :
return Operators.f32_sub;
case 148 :
return Operators.f32_mul;
case 149 :
return Operators.f32_div;
case 150 :
return Operators.f32_min;
case 151 :
return Operators.f32_max;
case 152 :
return Operators.f32_copysign;
case 153 :
return Operators.f64_abs;
case 154 :
return Operators.f64_neg;
case 155 :
return Operators.f64_ceil;
case 156 :
return Operators.f64_floor;
case 157 :
return Operators.f64_trunc;
case 158 :
return Operators.f64_nearest;
case 159 :
return Operators.f64_sqrt;
case 160 :
return Operators.f64_add;
case 161 :
return Operators.f64_sub;
case 162 :
return Operators.f64_mul;
case 163 :
return Operators.f64_div;
case 164 :
return Operators.f64_min;
case 165 :
return Operators.f64_max;
case 166 :
return Operators.f64_copysign;
case 167 :
return Operators.i32_wrap_i64;
case 168 :
return Operators.i32_trunc_s_f32;
case 169 :
return Operators.i32_trunc_u_f32;
case 170 :
return Operators.i32_trunc_s_f64;
case 171 :
return Operators.i32_trunc_u_f64;
case 172 :
return Operators.i64_extend_s_i32;
case 173 :
return Operators.i64_extend_u_i32;
case 174 :
return Operators.i64_trunc_s_f32;
case 175 :
return Operators.i64_trunc_u_f32;
case 176 :
return Operators.i64_trunc_s_f64;
case 177 :
return Operators.i64_trunc_u_f64;
case 178 :
return Operators.f32_convert_s_i32;
case 179 :
return Operators.f32_convert_u_i32;
case 180 :
return Operators.f32_convert_s_i64;
case 181 :
return Operators.f32_convert_u_i64;
case 182 :
return Operators.f32_demote_f64;
case 183 :
return Operators.f64_convert_s_i32;
case 184 :
return Operators.f64_convert_u_i32;
case 185 :
return Operators.f64_convert_s_i64;
case 186 :
return Operators.f64_convert_u_i64;
case 187 :
return Operators.f64_promote_f32;
case 188 :
return Operators.i32_reinterpret_f32;
case 189 :
return Operators.i64_reinterpret_f64;
case 190 :
return Operators.f32_reinterpret_i32;
case 191 :
return Operators.f64_reinterpret_i64;
}
}
}
function instr_block$prime(s, _es) {
while(true) {
var es = _es;
var match = peek(s);
if (match) {
var match$1 = match[0];
if (match$1 !== 5) {
if (match$1 !== 11) {
var pos = s[/* pos */2][0];
var e$prime = instr(s);
_es = /* :: */[
Source.$at$at(e$prime, region(s, pos, pos)),
es
];
continue ;
}
else {
return es;
}
}
else {
return es;
}
}
else {
return es;
}
};
}
function instr_block(s) {
return List.rev(instr_block$prime(s, /* [] */0));
}
function $$const(s) {
var c = at(instr_block, s);
expect(11, s, "END opcode expected");
return c;
}
function id(s) {
var bo = peek(s);
return Curry._2(Lib.Option[/* map */1], function (param) {
if (param > 11 || param < 0) {
return error(s, s[/* pos */2][0], "invalid section id");
}
else {
switch (param) {
case 0 :
return /* CustomSection */-808010220;
case 1 :
return /* TypeSection */836501035;
case 2 :
return /* ImportSection */696517344;
case 3 :
return /* FuncSection */205556449;
case 4 :
return /* TableSection */1031864215;
case 5 :
return /* MemorySection */-840203068;
case 6 :
return /* GlobalSection */-872313182;
case 7 :
return /* ExportSection */-440679759;
case 8 :
return /* StartSection */395720131;
case 9 :
return /* ElemSection */440380662;
case 10 :
return /* CodeSection */1021133848;
case 11 :
return /* DataSection */66447547;
}
}
}, bo);
}
function section_with_size(tag, f, $$default, s) {
var match = id(s);
if (match && Caml_obj.caml_equal(match[0], tag)) {
guard(get, s);
return sized(f, s);
}
else {
return $$default;
}
}
function section(tag, f, $$default, s) {
return section_with_size(tag, function () {
return f;
}, $$default, s);
}
function type_section(s) {
return section(/* TypeSection */836501035, function (param) {
return vec(func_type, param);
}, /* [] */0, s);
}
function import_kind(s) {
var match = guard(get, s);
if (match > 3 || match < 0) {
return error(s, s[/* pos */2][0] - 1 | 0, "invalid import kind");
}
else {
switch (match) {
case 0 :
return /* FuncImport */Block.__(0, [at($$var, s)]);
case 1 :
return /* TableImport */Block.__(1, [table_type(s)]);
case 2 :
return /* MemoryImport */Block.__(2, [memory_type(s)]);
case 3 :
return /* GlobalImport */Block.__(3, [global_type(s)]);
}
}
}
function $$import(s) {
var module_name = string(s);
var item_name = string(s);
var ikind = at(import_kind, s);
return /* record */[
/* module_name */module_name,
/* item_name */item_name,
/* ikind */ikind
];
}
function import_section(s) {
return section(/* ImportSection */696517344, function (param) {
return vec(function (param) {
return at($$import, param);
}, param);
}, /* [] */0, s);
}
function func_section(s) {
return section(/* FuncSection */205556449, function (param) {
return vec(function (param) {
return at($$var, param);
}, param);
}, /* [] */0, s);
}
function table(s) {
var ttype = table_type(s);
return /* record */[/* ttype */ttype];
}
function table_section(s) {
return section(/* TableSection */1031864215, function (param) {
return vec(function (param) {
return at(table, param);
}, param);
}, /* [] */0, s);
}
function memory(s) {
var mtype = memory_type(s);
return /* record */[/* mtype */mtype];
}
function memory_section(s) {
return section(/* MemorySection */-840203068, function (param) {
return vec(function (param) {
return at(memory, param);
}, param);
}, /* [] */0, s);
}
function global(s) {
var gtype = global_type(s);
var value = $$const(s);
return /* record */[
/* gtype */gtype,
/* value */value
];
}
function global_section(s) {
return section(/* GlobalSection */-872313182, function (param) {
return vec(function (param) {
return at(global, param);
}, param);
}, /* [] */0, s);
}
function export_kind(s) {
var match = guard(get, s);
if (match > 3 || match < 0) {
return error(s, s[/* pos */2][0] - 1 | 0, "invalid export kind");
}
else {
switch (match) {
case 0 :
return /* FuncExport */0;
case 1 :
return /* TableExport */1;
case 2 :
return /* MemoryExport */2;
case 3 :
return /* GlobalExport */3;
}
}
}
function $$export(s) {
var name = string(s);
var ekind = at(export_kind, s);
var item = at($$var, s);
return /* record */[
/* name */name,
/* ekind */ekind,
/* item */item
];
}
function export_section(s) {
return section(/* ExportSection */-440679759, function (param) {
return vec(function (param) {
return at($$export, param);
}, param);
}, /* [] */0, s);
}
function start_section(s) {
return section(/* StartSection */395720131, function (param) {
return /* Some */[at($$var, param)];
}, /* None */0, s);
}
function local(s) {
var n = len32(s);
var t = value_type(s);
return Curry._2(Lib.List[/* make */0], n, t);
}
function code(_, s) {
var locals = List.flatten(vec(local, s));
var body = List.rev(instr_block$prime(s, /* [] */0));
expect(11, s, "END opcode expected");
return /* record */[
/* ftype */Source.$at$at(-1, Source.no_region),
/* locals */locals,
/* body */body
];
}
function code_section(s) {
return section(/* CodeSection */1021133848, function (param) {
return vec(function (param) {
return at(function (param) {
return sized(code, param);
}, param);
}, param);
}, /* [] */0, s);
}
function segment(dat, s) {
var index = at($$var, s);
var offset = $$const(s);
var init = Curry._1(dat, s);
return /* record */[
/* index */index,
/* offset */offset,
/* init */init
];
}
function table_segment(s) {
return segment(function (param) {
return vec(function (param) {
return at($$var, param);
}, param);
}, s);
}
function elem_section(s) {
return section(/* ElemSection */440380662, function (param) {
return vec(function (param) {
return at(table_segment, param);
}, param);
}, /* [] */0, s);
}
function memory_segment(s) {
return segment(string, s);
}
function data_section(s) {
return section(/* DataSection */66447547, function (param) {
return vec(function (param) {
return at(memory_segment, param);
}, param);
}, /* [] */0, s);
}
function custom(size, s) {
var start = s[/* pos */2][0];
string(s);
var partial_arg = size - (s[/* pos */2][0] - start | 0) | 0;
var partial_arg$1 = function (param) {
return skip(partial_arg, param);
};
(function (param) {
return guard(partial_arg$1, param);
}(s));
return /* true */1;
}
function custom_section(s) {
return section_with_size(/* CustomSection */-808010220, custom, /* false */0, s);
}
function iterate(f, s) {
while(true) {
if (Curry._1(f, s)) {
continue ;
}
else {
return 0;
}
};
}
function module_(s) {
var magic = u32(s);
$$require(+(magic === 1836278016), s, 0, "magic header not detected");
var version = u32(s);
$$require(+(version === Encode.version), s, 4, "unknown binary version");
iterate(custom_section, s);
var types = type_section(s);
iterate(custom_section, s);
var imports = import_section(s);
iterate(custom_section, s);
var func_types = func_section(s);
iterate(custom_section, s);
var tables = table_section(s);
iterate(custom_section, s);
var memories = memory_section(s);
iterate(custom_section, s);
var globals = global_section(s);
iterate(custom_section, s);
var $$exports = export_section(s);
iterate(custom_section, s);
var start = start_section(s);
iterate(custom_section, s);
var elems = elem_section(s);
iterate(custom_section, s);
var func_bodies = code_section(s);
iterate(custom_section, s);
var data = data_section(s);
iterate(custom_section, s);
$$require(+(s[/* pos */2][0] === s[/* bytes */1].length), s, s[/* bytes */1].length, "junk after last section");
$$require(+(List.length(func_types) === List.length(func_bodies)), s, s[/* bytes */1].length, "function and code section have inconsistent lengths");
var funcs = List.map2(function (t, f) {
var init = f[/* it */1];
return Source.$at$at(/* record */[
/* ftype */t,
/* locals */init[/* locals */1],
/* body */init[/* body */2]
], f[/* at */0]);
}, func_types, func_bodies);
return /* record */[
/* types */types,
/* globals */globals,
/* tables */tables,
/* memories */memories,
/* funcs */funcs,
/* start */start,
/* elems */elems,
/* data */data,
/* imports */imports,
/* exports */$$exports
];
}
function decode(name, bs) {
return at(module_, stream(name, bs));
}
exports.Code = Code$1;
exports.decode = decode;
/* Code Not a pure module */
//////// end of decode.js ////////
    return exports;
  };
_registry['encode'] = function() {
    let exports = {};
//////// start of encode.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var F32 = require("./f32");
var F64 = require("./f64");
var Lib = require("./lib");
var Char = require("bs-platform/lib/js/char");
var List = require("bs-platform/lib/js/list");
var Bytes = require("bs-platform/lib/js/bytes");
var Curry = require("bs-platform/lib/js/curry");
var $$Error = require("./error");
var Buffer = require("bs-platform/lib/js/buffer");
var Source = require("./source");
var Caml_obj = require("bs-platform/lib/js/caml_obj");
var Caml_int64 = require("bs-platform/lib/js/caml_int64");
var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions");
var Code = $$Error.Make(/* module */[]);
var Code$1 = Code[/* Error */0];
function stream() {
return /* record */[
/* buf */Buffer.create(8192),
/* patches */[/* [] */0]
];
}
function patch(s, pos, b) {
s[/* patches */1][0] = /* :: */[
/* tuple */[
pos,
b
],
s[/* patches */1][0]
];
return /* () */0;
}
function encode(m) {
var s = stream(/* () */0);
var u8 = function (i) {
var b = Char.chr(i & 255);
return Buffer.add_char(s[/* buf */0], b);
};
var u16 = function (i) {
u8(i & 255);
return u8((i >>> 8));
};
var u32 = function (i) {
u16(i & 65535);
return u16((i >> 16));
};
var vu64 = function (_i) {
while(true) {
var i = _i;
var b = i[1] & /* lo */127 | 0;
if (Caml_int64.le(/* int64 */[
/* hi */0,
/* lo */0
], i) && Caml_int64.lt(i, /* int64 */[
/* hi */0,
/* lo */128
])) {
return u8(b);
}
else {
u8(b | 128);
_i = Caml_int64.lsr_(i, 7);
continue ;
}
};
};
var vs64 = function (_i) {
while(true) {
var i = _i;
var b = i[1] & /* lo */127 | 0;
if (Caml_int64.le(/* int64 */[
/* hi */-1,
/* lo */4294967232
], i) && Caml_int64.lt(i, /* int64 */[
/* hi */0,
/* lo */64
])) {
return u8(b);
}
else {
u8(b | 128);
_i = Caml_int64.asr_(i, 7);
continue ;
}
};
};
var vu32 = function (i) {
return vu64(Caml_int64.and_(Caml_int64.of_int32(i), /* int64 */[
/* hi */0,
/* lo */4294967295
]));
};
var len = function (i) {
if (i !== i) {
Curry._2(Code[/* error */2], Source.no_region, "cannot encode length with more than 32 bit");
}
return vu32(i);
};
var bool = function (b) {
var i = b ? 1 : 0;
return vu64(Caml_int64.and_(Caml_int64.of_int32(i), /* int64 */[
/* hi */0,
/* lo */1
]));
};
var string = function (bs) {
len(bs.length);
return Buffer.add_string(s[/* buf */0], bs);
};
var vec = function (f, xs) {
len(List.length(xs));
return List.iter(f, xs);
};
var gap32 = function () {
var p = Buffer.length(s[/* buf */0]);
u32(0);
u8(0);
return p;
};
var patch_gap32 = function (p, n) {
if (n > 268435455) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
80,
6
]
];
}
patch(s, p, Char.chr((n | 128) & 255));
patch(s, p + 1 | 0, Char.chr(((n >>> 7) | 128) & 255));
patch(s, p + 2 | 0, Char.chr(((n >>> 14) | 128) & 255));
patch(s, p + 3 | 0, Char.chr(((n >>> 21) | 128) & 255));
return patch(s, p + 4 | 0, Char.chr((n >>> 28) & 255));
};
var value_type = function (param) {
switch (param) {
case 0 :
return vs64(/* int64 */[
/* hi */-1,
/* lo */4294967295
]);
case 1 :
return vs64(/* int64 */[
/* hi */-1,
/* lo */4294967294
]);
case 2 :
return vs64(/* int64 */[
/* hi */-1,
/* lo */4294967293
]);
case 3 :
return vs64(/* int64 */[
/* hi */-1,
/* lo */4294967292
]);
}
};
var stack_type = function (param) {
if (param) {
if (param[1]) {
return Curry._2(Code[/* error */2], Source.no_region, "cannot encode stack type with arity > 1 (yet)");
}
else {
return value_type(param[0]);
}
}
else {
return vs64(/* int64 */[
/* hi */-1,
/* lo */4294967232
]);
}
};
var func_type = function (param) {
vs64(/* int64 */[
/* hi */-1,
/* lo */4294967264
]);
vec(value_type, param[0]);
return vec(value_type, param[1]);
};
var limits = function (vu, param) {
var max = param[/* max */1];
bool(+(max !== /* None */0));
Curry._1(vu, param[/* min */0]);
return Curry._2(Lib.Option[/* app */2], vu, max);
};
var table_type = function (param) {
vs64(/* int64 */[
/* hi */-1,
/* lo */4294967280
]);
return limits(vu32, param[0]);
};
var memory_type = function (param) {
return limits(vu32, param[0]);
};
var global_type = function (param) {
value_type(param[0]);
var param$1 = param[1];
if (param$1 !== 0) {
return u8(1);
}
else {
return u8(0);
}
};
var memop = function (param) {
vu32(param[/* align */1]);
return vu32(param[/* offset */2]);
};
var $$var = function (x) {
return vu32(x[/* it */1]);
};
var instr = function (e) {
var match = e[/* it */1];
if (typeof match === "number") {
switch (match) {
case 0 :
return u8(0);
case 1 :
return u8(1);
case 2 :
return u8(15);
case 3 :
return u8(26);
case 4 :
return u8(27);
case 5 :
u8(63);
return u8(0);
case 6 :
u8(64);
return u8(0);
}
}
else {
switch (match.tag | 0) {
case 0 :
u8(2);
stack_type(match[0]);
List.iter(instr, match[1]);
return u8(11);
case 1 :
u8(3);
stack_type(match[0]);
List.iter(instr, match[1]);
return u8(11);
case 2 :
var es2 = match[2];
u8(4);
stack_type(match[0]);
List.iter(instr, match[1]);
if (es2 !== /* [] */0) {
u8(5);
}
List.iter(instr, es2);
return u8(11);
case 3 :
u8(12);
return vu32(match[0][/* it */1]);
case 4 :
u8(13);
return vu32(match[0][/* it */1]);
case 5 :
u8(14);
vec($$var, match[0]);
return vu32(match[1][/* it */1]);
case 6 :
u8(16);
return vu32(match[0][/* it */1]);
case 7 :
u8(17);
vu32(match[0][/* it */1]);
return u8(0);
case 8 :
u8(32);
return vu32(match[0][/* it */1]);
case 9 :
u8(33);
return vu32(match[0][/* it */1]);
case 10 :
u8(34);
return vu32(match[0][/* it */1]);
case 11 :
u8(35);
return vu32(match[0][/* it */1]);
case 12 :
u8(36);
return vu32(match[0][/* it */1]);
case 13 :
var mo = match[0];
switch (mo[/* ty */0]) {
case 0 :
var match$1 = mo[/* sz */3];
if (match$1) {
var match$2 = match$1[0];
switch (match$2[0]) {
case 0 :
if (match$2[1] !== 0) {
u8(45);
return memop(mo);
}
else {
u8(44);
return memop(mo);
}
case 1 :
if (match$2[1] !== 0) {
u8(47);
return memop(mo);
}
else {
u8(46);
return memop(mo);
}
case 2 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
182,
8
]
];
}
}
else {
u8(40);
return memop(mo);
}
break;
case 1 :
var match$3 = mo[/* sz */3];
if (match$3) {
var match$4 = match$3[0];
switch (match$4[0]) {
case 0 :
if (match$4[1] !== 0) {
u8(49);
return memop(mo);
}
else {
u8(48);
return memop(mo);
}
case 1 :
if (match$4[1] !== 0) {
u8(51);
return memop(mo);
}
else {
u8(50);
return memop(mo);
}
case 2 :
if (match$4[1] !== 0) {
u8(53);
return memop(mo);
}
else {
u8(52);
return memop(mo);
}
}
}
else {
u8(41);
return memop(mo);
}
break;
case 2 :
if (mo[/* sz */3]) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
196,
8
]
];
}
else {
u8(42);
return memop(mo);
}
break;
case 3 :
if (mo[/* sz */3]) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
196,
8
]
];
}
else {
u8(43);
return memop(mo);
}
break;
}
break;
case 14 :
var mo$1 = match[0];
switch (mo$1[/* ty */0]) {
case 0 :
var match$5 = mo$1[/* sz */3];
if (match$5) {
switch (match$5[0]) {
case 0 :
u8(58);
return memop(mo$1);
case 1 :
u8(59);
return memop(mo$1);
case 2 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
204,
52
]
];
}
}
else {
u8(54);
return memop(mo$1);
}
break;
case 1 :
var match$6 = mo$1[/* sz */3];
if (match$6) {
switch (match$6[0]) {
case 0 :
u8(60);
return memop(mo$1);
case 1 :
u8(61);
return memop(mo$1);
case 2 :
u8(62);
return memop(mo$1);
}
}
else {
u8(55);
return memop(mo$1);
}
break;
case 2 :
if (mo$1[/* sz */3]) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
208,
58
]
];
}
else {
u8(56);
return memop(mo$1);
}
break;
case 3 :
if (mo$1[/* sz */3]) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
208,
58
]
];
}
else {
u8(57);
return memop(mo$1);
}
break;
}
break;
case 15 :
var match$7 = match[0][/* it */1];
switch (match$7.tag | 0) {
case 0 :
u8(65);
return vs64(Caml_int64.of_int32(match$7[0]));
case 1 :
u8(66);
return vs64(match$7[0]);
case 2 :
u8(67);
return u32(Curry._1(F32.to_bits, match$7[0]));
case 3 :
u8(68);
var i = Curry._1(F64.to_bits, match$7[0]);
u32(i[1] & /* lo */4294967295 | 0);
return u32(Caml_int64.asr_(i, 32)[1] | 0);
}
break;
case 16 :
switch (match[0].tag | 0) {
case 0 :
return u8(69);
case 1 :
return u8(80);
case 2 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
220,
24
]
];
case 3 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
221,
24
]
];
}
break;
case 17 :
var match$8 = match[0];
switch (match$8.tag | 0) {
case 0 :
switch (match$8[0]) {
case 0 :
return u8(70);
case 1 :
return u8(71);
case 2 :
return u8(72);
case 3 :
return u8(73);
case 4 :
return u8(74);
case 5 :
return u8(75);
case 6 :
return u8(76);
case 7 :
return u8(77);
case 8 :
return u8(78);
case 9 :
return u8(79);
}
break;
case 1 :
switch (match$8[0]) {
case 0 :
return u8(81);
case 1 :
return u8(82);
case 2 :
return u8(83);
case 3 :
return u8(84);
case 4 :
return u8(85);
case 5 :
return u8(86);
case 6 :
return u8(87);
case 7 :
return u8(88);
case 8 :
return u8(89);
case 9 :
return u8(90);
}
break;
case 2 :
switch (match$8[0]) {
case 0 :
return u8(91);
case 1 :
return u8(92);
case 2 :
return u8(93);
case 3 :
return u8(94);
case 4 :
return u8(95);
case 5 :
return u8(96);
}
break;
case 3 :
switch (match$8[0]) {
case 0 :
return u8(97);
case 1 :
return u8(98);
case 2 :
return u8(99);
case 3 :
return u8(100);
case 4 :
return u8(101);
case 5 :
return u8(102);
}
break;
}
break;
case 18 :
var match$9 = match[0];
switch (match$9.tag | 0) {
case 0 :
switch (match$9[0]) {
case 0 :
return u8(103);
case 1 :
return u8(104);
case 2 :
return u8(105);
}
break;
case 1 :
switch (match$9[0]) {
case 0 :
return u8(121);
case 1 :
return u8(122);
case 2 :
return u8(123);
}
break;
case 2 :
switch (match$9[0]) {
case 0 :
return u8(140);
case 1 :
return u8(139);
case 2 :
return u8(141);
case 3 :
return u8(142);
case 4 :
return u8(143);
case 5 :
return u8(144);
case 6 :
return u8(145);
}
break;
case 3 :
switch (match$9[0]) {
case 0 :
return u8(154);
case 1 :
return u8(153);
case 2 :
return u8(155);
case 3 :
return u8(156);
case 4 :
return u8(157);
case 5 :
return u8(158);
case 6 :
return u8(159);
}
break;
}
break;
case 19 :
var match$10 = match[0];
switch (match$10.tag | 0) {
case 0 :
switch (match$10[0]) {
case 0 :
return u8(106);
case 1 :
return u8(107);
case 2 :
return u8(108);
case 3 :
return u8(109);
case 4 :
return u8(110);
case 5 :
return u8(111);
case 6 :
return u8(112);
case 7 :
return u8(113);
case 8 :
return u8(114);
case 9 :
return u8(115);
case 10 :
return u8(116);
case 11 :
return u8(117);
case 12 :
return u8(118);
case 13 :
return u8(119);
case 14 :
return u8(120);
}
break;
case 1 :
switch (match$10[0]) {
case 0 :
return u8(124);
case 1 :
return u8(125);
case 2 :
return u8(126);
case 3 :
return u8(127);
case 4 :
return u8(128);
case 5 :
return u8(129);
case 6 :
return u8(130);
case 7 :
return u8(131);
case 8 :
return u8(132);
case 9 :
return u8(133);
case 10 :
return u8(134);
case 11 :
return u8(135);
case 12 :
return u8(136);
case 13 :
return u8(137);
case 14 :
return u8(138);
}
break;
case 2 :
switch (match$10[0]) {
case 0 :
return u8(146);
case 1 :
return u8(147);
case 2 :
return u8(148);
case 3 :
return u8(149);
case 4 :
return u8(150);
case 5 :
return u8(151);
case 6 :
return u8(152);
}
break;
case 3 :
switch (match$10[0]) {
case 0 :
return u8(160);
case 1 :
return u8(161);
case 2 :
return u8(162);
case 3 :
return u8(163);
case 4 :
return u8(164);
case 5 :
return u8(165);
case 6 :
return u8(166);
}
break;
}
break;
case 20 :
var match$11 = match[0];
switch (match$11.tag | 0) {
case 0 :
switch (match$11[0]) {
case 0 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
331,
42
]
];
case 1 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
332,
42
]
];
case 2 :
return u8(167);
case 3 :
return u8(168);
case 4 :
return u8(169);
case 5 :
return u8(170);
case 6 :
return u8(171);
case 7 :
return u8(188);
}
break;
case 1 :
switch (match$11[0]) {
case 0 :
return u8(172);
case 1 :
return u8(173);
case 2 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
342,
39
]
];
case 3 :
return u8(174);
case 4 :
return u8(175);
case 5 :
return u8(176);
case 6 :
return u8(177);
case 7 :
return u8(189);
}
break;
case 2 :
switch (match$11[0]) {
case 0 :
return u8(178);
case 1 :
return u8(179);
case 2 :
return u8(180);
case 3 :
return u8(181);
case 4 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
353,
42
]
];
case 5 :
return u8(182);
case 6 :
return u8(190);
}
break;
case 3 :
switch (match$11[0]) {
case 0 :
return u8(183);
case 1 :
return u8(184);
case 2 :
return u8(185);
case 3 :
return u8(186);
case 4 :
return u8(187);
case 5 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"/usr/local/google/home/rossberg/wasm/spec/interpreter/_build/jslib/src/encode.ml",
362,
41
]
];
case 6 :
return u8(191);
}
break;
}
break;
}
}
};
var $$const = function (c) {
List.iter(instr, c[/* it */1]);
return u8(11);
};
var section = function (id, f, x, needed) {
if (needed) {
u8(id);
var g = gap32(/* () */0);
var p = Buffer.length(s[/* buf */0]);
Curry._1(f, x);
return patch_gap32(g, Buffer.length(s[/* buf */0]) - p | 0);
}
else {
return 0;
}
};
var type_section = function (ts) {
return section(1, function (param) {
return vec(func_type, param);
}, ts, +(ts !== /* [] */0));
};
var $$import = function (im) {
var match = im[/* it */1];
string(match[/* module_name */0]);
string(match[/* item_name */1]);
var k = match[/* ikind */2];
var match$1 = k[/* it */1];
switch (match$1.tag | 0) {
case 0 :
u8(0);
return vu32(match$1[0][/* it */1]);
case 1 :
u8(1);
return table_type(match$1[0]);
case 2 :
u8(2);
return memory_type(match$1[0]);
case 3 :
u8(3);
return global_type(match$1[0]);
}
};
var import_section = function (ims) {
return section(2, function (param) {
return vec($$import, param);
}, ims, +(ims !== /* [] */0));
};
var func = function (f) {
return vu32(f[/* it */1][/* ftype */0][/* it */1]);
};
var func_section = function (fs) {
return section(3, function (param) {
return vec(func, param);
}, fs, +(fs !== /* [] */0));
};
var table = function (tab) {
var match = tab[/* it */1];
return table_type(match[/* ttype */0]);
};
var table_section = function (tabs) {
return section(4, function (param) {
return vec(table, param);
}, tabs, +(tabs !== /* [] */0));
};
var memory = function (mem) {
var match = mem[/* it */1];
return memory_type(match[/* mtype */0]);
};
var memory_section = function (mems) {
return section(5, function (param) {
return vec(memory, param);
}, mems, +(mems !== /* [] */0));
};
var global = function (g) {
var match = g[/* it */1];
global_type(match[/* gtype */0]);
return $$const(match[/* value */1]);
};
var global_section = function (gs) {
return section(6, function (param) {
return vec(global, param);
}, gs, +(gs !== /* [] */0));
};
var export_kind = function (k) {
var match = k[/* it */1];
switch (match) {
case 0 :
return u8(0);
case 1 :
return u8(1);
case 2 :
return u8(2);
case 3 :
return u8(3);
}
};
var $$export = function (ex) {
var match = ex[/* it */1];
string(match[/* name */0]);
export_kind(match[/* ekind */1]);
return vu32(match[/* item */2][/* it */1]);
};
var export_section = function (exs) {
return section(7, function (param) {
return vec($$export, param);
}, exs, +(exs !== /* [] */0));
};
var start_section = function (xo) {
return section(8, function (param) {
return Curry._2(Lib.Option[/* app */2], $$var, param);
}, xo, +(xo !== /* None */0));
};
var compress = function (ts) {
var combine = function (t, ts) {
if (ts) {
var match = ts[0];
if (Caml_obj.caml_equal(t, match[0])) {
return /* :: */[
/* tuple */[
t,
match[1] + 1 | 0
],
ts[1]
];
}
else {
return /* :: */[
/* tuple */[
t,
1
],
ts
];
}
}
else {
return /* :: */[
/* tuple */[
t,
1
],
ts
];
}
};
return List.fold_right(combine, ts, /* [] */0);
};
var local = function (param) {
len(param[1]);
return value_type(param[0]);
};
var code = function (f) {
var match = f[/* it */1];
var g = gap32(/* () */0);
var p = Buffer.length(s[/* buf */0]);
vec(local, compress(match[/* locals */1]));
List.iter(instr, match[/* body */2]);
u8(11);
return patch_gap32(g, Buffer.length(s[/* buf */0]) - p | 0);
};
var code_section = function (fs) {
return section(10, function (param) {
return vec(code, param);
}, fs, +(fs !== /* [] */0));
};
var segment = function (dat, seg) {
var match = seg[/* it */1];
vu32(match[/* index */0][/* it */1]);
$$const(match[/* offset */1]);
return Curry._1(dat, match[/* init */2]);
};
var table_segment = function (seg) {
return segment(function (param) {
return vec($$var, param);
}, seg);
};
var elem_section = function (elems) {
return section(9, function (param) {
return vec(table_segment, param);
}, elems, +(elems !== /* [] */0));
};
var memory_segment = function (seg) {
return segment(string, seg);
};
var module_ = function (m) {
u32(1836278016);
u32(13);
type_section(m[/* it */1][/* types */0]);
import_section(m[/* it */1][/* imports */8]);
func_section(m[/* it */1][/* funcs */4]);
table_section(m[/* it */1][/* tables */2]);
memory_section(m[/* it */1][/* memories */3]);
global_section(m[/* it */1][/* globals */1]);
export_section(m[/* it */1][/* exports */9]);
start_section(m[/* it */1][/* start */5]);
elem_section(m[/* it */1][/* elems */6]);
code_section(m[/* it */1][/* funcs */4]);
var data = m[/* it */1][/* data */7];
return section(11, function (param) {
return vec(memory_segment, param);
}, data, +(data !== /* [] */0));
};
module_(m);
var s$1 = s;
var bs = Buffer.to_bytes(s$1[/* buf */0]);
List.iter(function (param) {
bs[param[0]] = param[1];
return /* () */0;
}, s$1[/* patches */1][0]);
return Bytes.to_string(bs);
}
var version = 13;
exports.Code = Code$1;
exports.version = version;
exports.encode = encode;
/* Code Not a pure module */
//////// end of encode.js ////////
    return exports;
  };
_registry['error'] = function() {
    let exports = {};
//////// start of error.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Source = require("./source");
var Caml_exceptions = require("bs-platform/lib/js/caml_exceptions");
function Make() {
var $$Error = Caml_exceptions.create("Error.Make(*).Error");
var warn = function (at, m) {
console.error(Source.string_of_region(at) + (": warning: " + m));
return /* () */0;
};
var error = function (at, m) {
throw [
$$Error,
at,
m
];
};
return /* module */[
/* Error */$$Error,
/* warn */warn,
/* error */error
];
}
exports.Make = Make;
/* No side effect */
//////// end of error.js ////////
    return exports;
  };
_registry['f32'] = function() {
    let exports = {};
//////// start of f32.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var Float = require("./float");
var Int32 = require("bs-platform/lib/js/int32");
var Printf = require("bs-platform/lib/js/printf");
var Caml_float = require("bs-platform/lib/js/caml_float");
var Caml_format = require("bs-platform/lib/js/caml_format");
function print_nan_significand_digits(a) {
return Curry._1(Printf.sprintf(/* Format */[
/* Int32 */Block.__(5, [
/* Int_x */6,
/* No_padding */0,
/* No_precision */0,
/* End_of_format */0
]),
"%lx"
]), Int32.abs(2139095040 ^ a));
}
var include = Float.Make(/* module */[
/* pos_nan */2143289344,
/* neg_nan */-4194304,
/* caml_int32_bits_of_float */Caml_float.caml_int32_bits_of_float,
/* caml_int32_float_of_bits */Caml_float.caml_int32_float_of_bits,
/* caml_int32_of_string */Caml_format.caml_int32_of_string,
/* to_string */Int32.to_string,
/* %int32_and */function (prim, prim$1) {
return prim & prim$1;
},
/* %int32_or */function (prim, prim$1) {
return prim | prim$1;
},
/* %int32_xor */function (prim, prim$1) {
return prim ^ prim$1;
},
/* min_int */Int32.min_int,
/* max_int */Int32.max_int,
/* zero */Int32.zero,
/* bare_nan */2139095040,
/* print_nan_significand_digits */print_nan_significand_digits
]);
var pos_nan = include[0];
var neg_nan = include[1];
var of_float = include[2];
var to_float = include[3];
var of_string = include[4];
var to_string = include[5];
var of_bits = include[6];
var to_bits = include[7];
var add = include[8];
var sub = include[9];
var mul = include[10];
var div = include[11];
var sqrt = include[12];
var min = include[13];
var max = include[14];
var ceil = include[15];
var floor = include[16];
var trunc = include[17];
var nearest = include[18];
var abs = include[19];
var neg = include[20];
var copysign = include[21];
var eq = include[22];
var ne = include[23];
var lt = include[24];
var le = include[25];
var gt = include[26];
var ge = include[27];
var zero = include[28];
exports.pos_nan = pos_nan;
exports.neg_nan = neg_nan;
exports.of_float = of_float;
exports.to_float = to_float;
exports.of_string = of_string;
exports.to_string = to_string;
exports.of_bits = of_bits;
exports.to_bits = to_bits;
exports.add = add;
exports.sub = sub;
exports.mul = mul;
exports.div = div;
exports.sqrt = sqrt;
exports.min = min;
exports.max = max;
exports.ceil = ceil;
exports.floor = floor;
exports.trunc = trunc;
exports.nearest = nearest;
exports.abs = abs;
exports.neg = neg;
exports.copysign = copysign;
exports.eq = eq;
exports.ne = ne;
exports.lt = lt;
exports.le = le;
exports.gt = gt;
exports.ge = ge;
exports.zero = zero;
/* include Not a pure module */
//////// end of f32.js ////////
    return exports;
  };
_registry['f64'] = function() {
    let exports = {};
//////// start of f64.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var Float = require("./float");
var Int64 = require("bs-platform/lib/js/int64");
var Printf = require("bs-platform/lib/js/printf");
var Caml_int64 = require("bs-platform/lib/js/caml_int64");
var Caml_format = require("bs-platform/lib/js/caml_format");
var bare_nan = /* int64 */[
/* hi */2146435072,
/* lo */0
];
function print_nan_significand_digits(a) {
return Curry._1(Printf.sprintf(/* Format */[
/* Int64 */Block.__(7, [
/* Int_x */6,
/* No_padding */0,
/* No_precision */0,
/* End_of_format */0
]),
"%Lx"
]), Int64.abs(/* int64 */[
/* hi *//* hi */2146435072 ^ a[0],
/* lo */((/* lo */0 ^ a[1]) >>> 0)
]));
}
var include = Float.Make(/* module */[
/* pos_nan : int64 */[
/* hi */2146959360,
/* lo */0
],
/* neg_nan : int64 */[
/* hi */-524288,
/* lo */0
],
/* caml_int64_bits_of_float */Caml_int64.bits_of_float,
/* caml_int64_float_of_bits */Caml_int64.float_of_bits,
/* caml_int64_of_string */Caml_format.caml_int64_of_string,
/* to_string */Int64.to_string,
/* %int64_and */function (prim, prim$1) {
return /* int64 */[
/* hi */prim[0] & prim$1[0],
/* lo */((prim[1] & prim$1[1]) >>> 0)
];
},
/* %int64_or */function (prim, prim$1) {
return /* int64 */[
/* hi */prim[0] | prim$1[0],
/* lo */((prim[1] | prim$1[1]) >>> 0)
];
},
/* %int64_xor */function (prim, prim$1) {
return /* int64 */[
/* hi */prim[0] ^ prim$1[0],
/* lo */((prim[1] ^ prim$1[1]) >>> 0)
];
},
/* min_int */Int64.min_int,
/* max_int */Int64.max_int,
/* zero */Int64.zero,
/* bare_nan */bare_nan,
/* print_nan_significand_digits */print_nan_significand_digits
]);
var pos_nan = include[0];
var neg_nan = include[1];
var of_float = include[2];
var to_float = include[3];
var of_string = include[4];
var to_string = include[5];
var of_bits = include[6];
var to_bits = include[7];
var add = include[8];
var sub = include[9];
var mul = include[10];
var div = include[11];
var sqrt = include[12];
var min = include[13];
var max = include[14];
var ceil = include[15];
var floor = include[16];
var trunc = include[17];
var nearest = include[18];
var abs = include[19];
var neg = include[20];
var copysign = include[21];
var eq = include[22];
var ne = include[23];
var lt = include[24];
var le = include[25];
var gt = include[26];
var ge = include[27];
var zero = include[28];
exports.pos_nan = pos_nan;
exports.neg_nan = neg_nan;
exports.of_float = of_float;
exports.to_float = to_float;
exports.of_string = of_string;
exports.to_string = to_string;
exports.of_bits = of_bits;
exports.to_bits = to_bits;
exports.add = add;
exports.sub = sub;
exports.mul = mul;
exports.div = div;
exports.sqrt = sqrt;
exports.min = min;
exports.max = max;
exports.ceil = ceil;
exports.floor = floor;
exports.trunc = trunc;
exports.nearest = nearest;
exports.abs = abs;
exports.neg = neg;
exports.copysign = copysign;
exports.eq = eq;
exports.ne = ne;
exports.lt = lt;
exports.le = le;
exports.gt = gt;
exports.ge = ge;
exports.zero = zero;
/* include Not a pure module */
//////// end of f64.js ////////
    return exports;
  };
_registry['float'] = function() {
    let exports = {};
//////// start of float.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Curry = require("bs-platform/lib/js/curry");
var $$String = require("bs-platform/lib/js/string");
var Caml_obj = require("bs-platform/lib/js/caml_obj");
var Pervasives = require("bs-platform/lib/js/pervasives");
var Caml_format = require("bs-platform/lib/js/caml_format");
var Caml_string = require("bs-platform/lib/js/caml_string");
var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions");
function Make(Rep) {
var pos_nan = Rep[/* pos_nan */0];
var neg_nan = Rep[/* neg_nan */1];
var bare_nan = Rep[/* bare_nan */12];
var of_float = Rep[/* bits_of_float */2];
var to_float = Rep[/* float_of_bits */3];
var of_bits = function (x) {
return x;
};
var to_bits = function (x) {
return x;
};
var is_nan = function (x) {
var xf = Curry._1(Rep[/* float_of_bits */3], x);
return +(xf !== xf);
};
var canonicalize_nan = function (x) {
return Curry._2(Rep[/* logor */7], x, Rep[/* pos_nan */0]);
};
var determine_binary_nan = function (x, y) {
return canonicalize_nan(is_nan(x) ? x : (
is_nan(y) ? y : Rep[/* pos_nan */0]
));
};
var determine_unary_nan = function (x) {
return canonicalize_nan(is_nan(x) ? x : Rep[/* pos_nan */0]);
};
var binary = function (x, op, y) {
var xf = Curry._1(to_float, x);
var yf = Curry._1(to_float, y);
var t = Curry._2(op, xf, yf);
if (t === t) {
return Curry._1(of_float, t);
}
else {
return determine_binary_nan(x, y);
}
};
var unary = function (op, x) {
var t = Curry._1(op, Curry._1(to_float, x));
if (t === t) {
return Curry._1(of_float, t);
}
else {
return determine_unary_nan(x);
}
};
var zero = Curry._1(of_float, 0.0);
var add = function (x, y) {
return binary(x, function (prim, prim$1) {
return prim + prim$1;
}, y);
};
var sub = function (x, y) {
return binary(x, function (prim, prim$1) {
return prim - prim$1;
}, y);
};
var mul = function (x, y) {
return binary(x, function (prim, prim$1) {
return prim * prim$1;
}, y);
};
var div = function (x, y) {
return binary(x, function (prim, prim$1) {
return prim / prim$1;
}, y);
};
var sqrt = function (x) {
return unary(function (prim) {
return Math.sqrt(prim);
}, x);
};
var ceil = function (x) {
return unary(function (prim) {
return Math.ceil(prim);
}, x);
};
var floor = function (x) {
return unary(function (prim) {
return Math.floor(prim);
}, x);
};
var trunc = function (x) {
var xf = Curry._1(to_float, x);
if (xf === 0.0) {
return x;
}
else {
var f = xf < 0.0 ? Math.ceil(xf) : Math.floor(xf);
var result = Curry._1(of_float, f);
if (is_nan(result)) {
return determine_unary_nan(result);
}
else {
return result;
}
}
};
var nearest = function (x) {
var xf = Curry._1(to_float, x);
if (xf === 0.0) {
return x;
}
else {
var u = Math.ceil(xf);
var d = Math.floor(xf);
var um = Math.abs(xf - u);
var dm = Math.abs(xf - d);
var h = u / 2;
var u_or_d = +(um < dm || um === dm && Math.floor(h) === h);
var f = u_or_d ? u : d;
var result = Curry._1(of_float, f);
if (is_nan(result)) {
return determine_unary_nan(result);
}
else {
return result;
}
}
};
var min = function (x, y) {
var xf = Curry._1(to_float, x);
var yf = Curry._1(to_float, y);
if (xf === yf) {
return Curry._2(Rep[/* logor */7], x, y);
}
else if (xf < yf) {
return x;
}
else if (xf > yf) {
return y;
}
else {
return determine_binary_nan(x, y);
}
};
var max = function (x, y) {
var xf = Curry._1(to_float, x);
var yf = Curry._1(to_float, y);
if (xf === yf) {
return Curry._2(Rep[/* logand */6], x, y);
}
else if (xf > yf) {
return x;
}
else if (xf < yf) {
return y;
}
else {
return determine_binary_nan(x, y);
}
};
var abs = function (x) {
return Curry._2(Rep[/* logand */6], x, Rep[/* max_int */10]);
};
var neg = function (x) {
return Curry._2(Rep[/* logxor */8], x, Rep[/* min_int */9]);
};
var copysign = function (x, y) {
return Curry._2(Rep[/* logor */7], abs(x), Curry._2(Rep[/* logand */6], y, Rep[/* min_int */9]));
};
var eq = function (x, y) {
return +(Curry._1(to_float, x) === Curry._1(to_float, y));
};
var ne = function (x, y) {
return +(Curry._1(to_float, x) !== Curry._1(to_float, y));
};
var lt = function (x, y) {
return +(Curry._1(to_float, x) < Curry._1(to_float, y));
};
var gt = function (x, y) {
return +(Curry._1(to_float, x) > Curry._1(to_float, y));
};
var le = function (x, y) {
return +(Curry._1(to_float, x) <= Curry._1(to_float, y));
};
var ge = function (x, y) {
return +(Curry._1(to_float, x) >= Curry._1(to_float, y));
};
var of_signless_string = function (x, len) {
if (x !== "nan" && len > 6 && $$String.sub(x, 0, 6) === "nan:0x") {
var s = Curry._1(Rep[/* of_string */4], $$String.sub(x, 4, len - 4 | 0));
if (Caml_obj.caml_equal(s, Rep[/* zero */11])) {
throw [
Caml_builtin_exceptions.failure,
"nan payload must not be zero"
];
}
else if (Caml_obj.caml_notequal(Curry._2(Rep[/* logand */6], s, bare_nan), Rep[/* zero */11])) {
throw [
Caml_builtin_exceptions.failure,
"nan payload must not overlap with exponent bits"
];
}
else if (Caml_obj.caml_lessthan(s, Rep[/* zero */11])) {
throw [
Caml_builtin_exceptions.failure,
"nan payload must not overlap with sign bit"
];
}
else {
return Curry._2(Rep[/* logor */7], s, bare_nan);
}
}
else {
return Curry._1(of_float, Caml_format.caml_float_of_string(x));
}
};
var of_string = function (x) {
var len = x.length;
if (len > 0 && Caml_string.get(x, 0) === /* "-" */45) {
return neg(of_signless_string($$String.sub(x, 1, len - 1 | 0), len - 1 | 0));
}
else if (len > 0 && Caml_string.get(x, 0) === /* "+" */43) {
return of_signless_string($$String.sub(x, 1, len - 1 | 0), len - 1 | 0);
}
else {
return of_signless_string(x, len);
}
};
var to_string = function (x) {
var a = abs(x);
return (
Caml_obj.caml_lessthan(x, Rep[/* zero */11]) ? "-" : ""
) + (
is_nan(a) ? "nan:0x" + Curry._1(Rep[/* print_nan_significand_digits */13], a) : Pervasives.string_of_float(Curry._1(to_float, a))
);
};
return /* module */[
/* pos_nan */pos_nan,
/* neg_nan */neg_nan,
/* of_float */of_float,
/* to_float */to_float,
/* of_string */of_string,
/* to_string */to_string,
/* of_bits */of_bits,
/* to_bits */to_bits,
/* add */add,
/* sub */sub,
/* mul */mul,
/* div */div,
/* sqrt */sqrt,
/* min */min,
/* max */max,
/* ceil */ceil,
/* floor */floor,
/* trunc */trunc,
/* nearest */nearest,
/* abs */abs,
/* neg */neg,
/* copysign */copysign,
/* eq */eq,
/* ne */ne,
/* lt */lt,
/* le */le,
/* gt */gt,
/* ge */ge,
/* zero */zero
];
}
exports.Make = Make;
/* No side effect */
//////// end of float.js ////////
    return exports;
  };
_registry['format'] = function() {
    let exports = {};
//////// start of format.js ////////
'use strict';
var Block = require("./block");
var Bytes = require("./bytes");
var Curry = require("./curry");
var Buffer = require("./buffer");
var $$String = require("./string");
var Caml_io = require("./caml_io");
var Caml_obj = require("./caml_obj");
var Pervasives = require("./pervasives");
var Caml_string = require("./caml_string");
var Caml_exceptions = require("./caml_exceptions");
var CamlinternalFormat = require("./camlinternalFormat");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function add_queue(x, q) {
var c = /* Cons */[/* record */[
/* head */x,
/* tail : Nil */0
]];
var match = q[/* insert */0];
if (match) {
q[/* insert */0] = c;
match[0][/* tail */1] = c;
return /* () */0;
}
else {
q[/* insert */0] = c;
q[/* body */1] = c;
return /* () */0;
}
}
var Empty_queue = Caml_exceptions.create("Format.Empty_queue");
function peek_queue(param) {
var match = param[/* body */1];
if (match) {
return match[0][/* head */0];
}
else {
throw Empty_queue;
}
}
function take_queue(q) {
var match = q[/* body */1];
if (match) {
var match$1 = match[0];
var x = match$1[/* head */0];
var tl = match$1[/* tail */1];
q[/* body */1] = tl;
if (!tl) {
q[/* insert */0] = /* Nil */0;
}
return x;
}
else {
throw Empty_queue;
}
}
function pp_enqueue(state, token) {
state[/* pp_right_total */12] = state[/* pp_right_total */12] + token[/* length */2] | 0;
return add_queue(token, state[/* pp_queue */26]);
}
function pp_clear_queue(state) {
state[/* pp_left_total */11] = 1;
state[/* pp_right_total */12] = 1;
var q = state[/* pp_queue */26];
q[/* insert */0] = /* Nil */0;
q[/* body */1] = /* Nil */0;
return /* () */0;
}
function pp_output_string(state, s) {
return Curry._3(state[/* pp_out_string */16], s, 0, s.length);
}
function break_new_line(state, offset, width) {
Curry._1(state[/* pp_out_newline */18], /* () */0);
state[/* pp_is_new_line */10] = /* true */1;
var indent = (state[/* pp_margin */5] - width | 0) + offset | 0;
var real_indent = Pervasives.min(state[/* pp_max_indent */7], indent);
state[/* pp_current_indent */9] = real_indent;
state[/* pp_space_left */8] = state[/* pp_margin */5] - state[/* pp_current_indent */9] | 0;
return Curry._1(state[/* pp_out_spaces */19], state[/* pp_current_indent */9]);
}
function break_same_line(state, width) {
state[/* pp_space_left */8] = state[/* pp_space_left */8] - width | 0;
return Curry._1(state[/* pp_out_spaces */19], width);
}
function pp_force_break_line(state) {
var match = state[/* pp_format_stack */1];
if (match) {
var match$1 = match[0];
var width = match$1[1];
var bl_ty = match$1[0];
if (width > state[/* pp_space_left */8] && bl_ty !== 0 && bl_ty < 5) {
return break_new_line(state, 0, width);
}
else {
return 0;
}
}
else {
return Curry._1(state[/* pp_out_newline */18], /* () */0);
}
}
function format_pp_token(state, size, param) {
if (typeof param === "number") {
switch (param) {
case 0 :
var match = state[/* pp_tbox_stack */2];
if (match) {
var tabs = match[0][0];
var add_tab = function (n, ls) {
if (ls) {
var x = ls[0];
if (Caml_obj.caml_lessthan(n, x)) {
return /* :: */[
n,
ls
];
}
else {
return /* :: */[
x,
add_tab(n, ls[1])
];
}
}
else {
return /* :: */[
n,
/* [] */0
];
}
};
tabs[0] = add_tab(state[/* pp_margin */5] - state[/* pp_space_left */8] | 0, tabs[0]);
return /* () */0;
}
else {
return /* () */0;
}
break;
case 1 :
var match$1 = state[/* pp_format_stack */1];
if (match$1) {
state[/* pp_format_stack */1] = match$1[1];
return /* () */0;
}
else {
return /* () */0;
}
case 2 :
var match$2 = state[/* pp_tbox_stack */2];
if (match$2) {
state[/* pp_tbox_stack */2] = match$2[1];
return /* () */0;
}
else {
return /* () */0;
}
case 3 :
var match$3 = state[/* pp_format_stack */1];
if (match$3) {
return break_new_line(state, 0, match$3[0][1]);
}
else {
return Curry._1(state[/* pp_out_newline */18], /* () */0);
}
case 4 :
if (state[/* pp_current_indent */9] !== (state[/* pp_margin */5] - state[/* pp_space_left */8] | 0)) {
var state$1 = state;
var match$4 = take_queue(state$1[/* pp_queue */26]);
var size$1 = match$4[/* elem_size */0];
state$1[/* pp_left_total */11] = state$1[/* pp_left_total */11] - match$4[/* length */2] | 0;
state$1[/* pp_space_left */8] = state$1[/* pp_space_left */8] + size$1 | 0;
return /* () */0;
}
else {
return 0;
}
case 5 :
var match$5 = state[/* pp_mark_stack */4];
if (match$5) {
var marker = Curry._1(state[/* pp_mark_close_tag */23], match$5[0]);
pp_output_string(state, marker);
state[/* pp_mark_stack */4] = match$5[1];
return /* () */0;
}
else {
return /* () */0;
}
break;
}
}
else {
switch (param.tag | 0) {
case 0 :
state[/* pp_space_left */8] = state[/* pp_space_left */8] - size | 0;
pp_output_string(state, param[0]);
state[/* pp_is_new_line */10] = /* false */0;
return /* () */0;
case 1 :
var off = param[1];
var n = param[0];
var match$6 = state[/* pp_format_stack */1];
if (match$6) {
var match$7 = match$6[0];
var width = match$7[1];
switch (match$7[0]) {
case 1 :
case 2 :
return break_new_line(state, off, width);
case 3 :
if (size > state[/* pp_space_left */8]) {
return break_new_line(state, off, width);
}
else {
return break_same_line(state, n);
}
case 4 :
if (state[/* pp_is_new_line */10] || !(size > state[/* pp_space_left */8] || state[/* pp_current_indent */9] > ((state[/* pp_margin */5] - width | 0) + off | 0))) {
return break_same_line(state, n);
}
else {
return break_new_line(state, off, width);
}
case 0 :
case 5 :
return break_same_line(state, n);
}
}
else {
return /* () */0;
}
break;
case 2 :
var insertion_point = state[/* pp_margin */5] - state[/* pp_space_left */8] | 0;
var match$8 = state[/* pp_tbox_stack */2];
if (match$8) {
var tabs$1 = match$8[0][0];
var find = function (n, _param) {
while(true) {
var param = _param;
if (param) {
var x = param[0];
if (Caml_obj.caml_greaterequal(x, n)) {
return x;
}
else {
_param = param[1];
continue ;
}
}
else {
throw Caml_builtin_exceptions.not_found;
}
};
};
var match$9 = tabs$1[0];
var tab;
if (match$9) {
try {
tab = find(insertion_point, tabs$1[0]);
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
tab = match$9[0];
}
else {
throw exn;
}
}
}
else {
tab = insertion_point;
}
var offset = tab - insertion_point | 0;
if (offset >= 0) {
return break_same_line(state, offset + param[0] | 0);
}
else {
return break_new_line(state, tab + param[1] | 0, state[/* pp_margin */5]);
}
}
else {
return /* () */0;
}
break;
case 3 :
var ty = param[1];
var insertion_point$1 = state[/* pp_margin */5] - state[/* pp_space_left */8] | 0;
if (insertion_point$1 > state[/* pp_max_indent */7]) {
pp_force_break_line(state);
}
var offset$1 = state[/* pp_space_left */8] - param[0] | 0;
var bl_type = ty !== 1 ? (
size > state[/* pp_space_left */8] ? ty : /* Pp_fits */5
) : /* Pp_vbox */1;
state[/* pp_format_stack */1] = /* :: */[
/* Format_elem */[
bl_type,
offset$1
],
state[/* pp_format_stack */1]
];
return /* () */0;
case 4 :
state[/* pp_tbox_stack */2] = /* :: */[
param[0],
state[/* pp_tbox_stack */2]
];
return /* () */0;
case 5 :
var tag_name = param[0];
var marker$1 = Curry._1(state[/* pp_mark_open_tag */22], tag_name);
pp_output_string(state, marker$1);
state[/* pp_mark_stack */4] = /* :: */[
tag_name,
state[/* pp_mark_stack */4]
];
return /* () */0;
}
}
}
function advance_left(state) {
try {
var state$1 = state;
while(true) {
var match = peek_queue(state$1[/* pp_queue */26]);
var size = match[/* elem_size */0];
if (size < 0 && (state$1[/* pp_right_total */12] - state$1[/* pp_left_total */11] | 0) < state$1[/* pp_space_left */8]) {
return 0;
}
else {
take_queue(state$1[/* pp_queue */26]);
format_pp_token(state$1, size < 0 ? 1000000010 : size, match[/* token */1]);
state$1[/* pp_left_total */11] = match[/* length */2] + state$1[/* pp_left_total */11] | 0;
continue ;
}
};
}
catch (exn){
if (exn === Empty_queue) {
return /* () */0;
}
else {
throw exn;
}
}
}
function enqueue_advance(state, tok) {
pp_enqueue(state, tok);
return advance_left(state);
}
function enqueue_string_as(state, size, s) {
return enqueue_advance(state, /* record */[
/* elem_size */size,
/* token : Pp_text */Block.__(0, [s]),
/* length */size
]);
}
var q_elem = /* record */[
/* elem_size */-1,
/* token : Pp_text */Block.__(0, [""]),
/* length */0
];
var scan_stack_bottom_000 = /* Scan_elem */[
-1,
q_elem
];
var scan_stack_bottom = /* :: */[
scan_stack_bottom_000,
/* [] */0
];
function set_size(state, ty) {
var match = state[/* pp_scan_stack */0];
if (match) {
var match$1 = match[0];
var queue_elem = match$1[1];
var size = queue_elem[/* elem_size */0];
var t = match[1];
if (match$1[0] < state[/* pp_left_total */11]) {
state[/* pp_scan_stack */0] = scan_stack_bottom;
return /* () */0;
}
else {
var exit = 0;
var $js = queue_elem[/* token */1];
if (typeof $js === "number") {
return /* () */0;
}
else {
switch ($js.tag | 0) {
case 1 :
case 2 :
exit = 1;
break;
case 3 :
if (ty) {
return 0;
}
else {
queue_elem[/* elem_size */0] = state[/* pp_right_total */12] + size | 0;
state[/* pp_scan_stack */0] = t;
return /* () */0;
}
default:
return /* () */0;
}
}
if (exit === 1) {
if (ty) {
queue_elem[/* elem_size */0] = state[/* pp_right_total */12] + size | 0;
state[/* pp_scan_stack */0] = t;
return /* () */0;
}
else {
return 0;
}
}
}
}
else {
return /* () */0;
}
}
function scan_push(state, b, tok) {
pp_enqueue(state, tok);
if (b) {
set_size(state, /* true */1);
}
state[/* pp_scan_stack */0] = /* :: */[
/* Scan_elem */[
state[/* pp_right_total */12],
tok
],
state[/* pp_scan_stack */0]
];
return /* () */0;
}
function pp_open_box_gen(state, indent, br_ty) {
state[/* pp_curr_depth */13] = state[/* pp_curr_depth */13] + 1 | 0;
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
var elem = /* record */[
/* elem_size */-state[/* pp_right_total */12] | 0,
/* token : Pp_begin */Block.__(3, [
indent,
br_ty
]),
/* length */0
];
return scan_push(state, /* false */0, elem);
}
else if (state[/* pp_curr_depth */13] === state[/* pp_max_boxes */14]) {
var state$1 = state;
var s = state[/* pp_ellipsis */15];
var len = s.length;
return enqueue_string_as(state$1, len, s);
}
else {
return 0;
}
}
function pp_close_box(state, _) {
if (state[/* pp_curr_depth */13] > 1) {
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
pp_enqueue(state, /* record */[
/* elem_size */0,
/* token : Pp_end */1,
/* length */0
]);
set_size(state, /* true */1);
set_size(state, /* false */0);
}
state[/* pp_curr_depth */13] = state[/* pp_curr_depth */13] - 1 | 0;
return /* () */0;
}
else {
return 0;
}
}
function pp_open_tag(state, tag_name) {
if (state[/* pp_print_tags */20]) {
state[/* pp_tag_stack */3] = /* :: */[
tag_name,
state[/* pp_tag_stack */3]
];
Curry._1(state[/* pp_print_open_tag */24], tag_name);
}
if (state[/* pp_mark_tags */21]) {
return pp_enqueue(state, /* record */[
/* elem_size */0,
/* token : Pp_open_tag */Block.__(5, [tag_name]),
/* length */0
]);
}
else {
return 0;
}
}
function pp_close_tag(state, _) {
if (state[/* pp_mark_tags */21]) {
pp_enqueue(state, /* record */[
/* elem_size */0,
/* token : Pp_close_tag */5,
/* length */0
]);
}
if (state[/* pp_print_tags */20]) {
var match = state[/* pp_tag_stack */3];
if (match) {
Curry._1(state[/* pp_print_close_tag */25], match[0]);
state[/* pp_tag_stack */3] = match[1];
return /* () */0;
}
else {
return /* () */0;
}
}
else {
return 0;
}
}
function pp_set_print_tags(state, b) {
state[/* pp_print_tags */20] = b;
return /* () */0;
}
function pp_set_mark_tags(state, b) {
state[/* pp_mark_tags */21] = b;
return /* () */0;
}
function pp_get_print_tags(state, _) {
return state[/* pp_print_tags */20];
}
function pp_get_mark_tags(state, _) {
return state[/* pp_mark_tags */21];
}
function pp_set_tags(state, b) {
state[/* pp_print_tags */20] = b;
state[/* pp_mark_tags */21] = b;
return /* () */0;
}
function pp_get_formatter_tag_functions(state, _) {
return /* record */[
/* mark_open_tag */state[/* pp_mark_open_tag */22],
/* mark_close_tag */state[/* pp_mark_close_tag */23],
/* print_open_tag */state[/* pp_print_open_tag */24],
/* print_close_tag */state[/* pp_print_close_tag */25]
];
}
function pp_set_formatter_tag_functions(state, param) {
state[/* pp_mark_open_tag */22] = param[/* mark_open_tag */0];
state[/* pp_mark_close_tag */23] = param[/* mark_close_tag */1];
state[/* pp_print_open_tag */24] = param[/* print_open_tag */2];
state[/* pp_print_close_tag */25] = param[/* print_close_tag */3];
return /* () */0;
}
function pp_rinit(state) {
pp_clear_queue(state);
state[/* pp_scan_stack */0] = scan_stack_bottom;
state[/* pp_format_stack */1] = /* [] */0;
state[/* pp_tbox_stack */2] = /* [] */0;
state[/* pp_tag_stack */3] = /* [] */0;
state[/* pp_mark_stack */4] = /* [] */0;
state[/* pp_current_indent */9] = 0;
state[/* pp_curr_depth */13] = 0;
state[/* pp_space_left */8] = state[/* pp_margin */5];
return pp_open_box_gen(state, 0, /* Pp_hovbox */3);
}
function pp_flush_queue(state, b) {
while(state[/* pp_curr_depth */13] > 1) {
pp_close_box(state, /* () */0);
};
state[/* pp_right_total */12] = 1000000010;
advance_left(state);
if (b) {
Curry._1(state[/* pp_out_newline */18], /* () */0);
}
return pp_rinit(state);
}
function pp_print_as_size(state, size, s) {
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
return enqueue_string_as(state, size, s);
}
else {
return 0;
}
}
var pp_print_as = pp_print_as_size;
function pp_print_string(state, s) {
return pp_print_as(state, s.length, s);
}
function pp_print_int(state, i) {
return pp_print_string(state, "" + i);
}
function pp_print_float(state, f) {
return pp_print_string(state, Pervasives.string_of_float(f));
}
function pp_print_bool(state, b) {
return pp_print_string(state, b ? "true" : "false");
}
function pp_print_char(state, c) {
return pp_print_as(state, 1, Caml_string.bytes_to_string(Bytes.make(1, c)));
}
function pp_open_hbox(state, _) {
return pp_open_box_gen(state, 0, /* Pp_hbox */0);
}
function pp_open_vbox(state, indent) {
return pp_open_box_gen(state, indent, /* Pp_vbox */1);
}
function pp_open_hvbox(state, indent) {
return pp_open_box_gen(state, indent, /* Pp_hvbox */2);
}
function pp_open_hovbox(state, indent) {
return pp_open_box_gen(state, indent, /* Pp_hovbox */3);
}
function pp_open_box(state, indent) {
return pp_open_box_gen(state, indent, /* Pp_box */4);
}
function pp_print_newline(state, _) {
pp_flush_queue(state, /* true */1);
return Curry._1(state[/* pp_out_flush */17], /* () */0);
}
function pp_print_flush(state, _) {
pp_flush_queue(state, /* false */0);
return Curry._1(state[/* pp_out_flush */17], /* () */0);
}
function pp_force_newline(state, _) {
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
return enqueue_advance(state, /* record */[
/* elem_size */0,
/* token : Pp_newline */3,
/* length */0
]);
}
else {
return 0;
}
}
function pp_print_if_newline(state, _) {
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
return enqueue_advance(state, /* record */[
/* elem_size */0,
/* token : Pp_if_newline */4,
/* length */0
]);
}
else {
return 0;
}
}
function pp_print_break(state, width, offset) {
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
var elem = /* record */[
/* elem_size */-state[/* pp_right_total */12] | 0,
/* token : Pp_break */Block.__(1, [
width,
offset
]),
/* length */width
];
return scan_push(state, /* true */1, elem);
}
else {
return 0;
}
}
function pp_print_space(state, _) {
return pp_print_break(state, 1, 0);
}
function pp_print_cut(state, _) {
return pp_print_break(state, 0, 0);
}
function pp_open_tbox(state, _) {
state[/* pp_curr_depth */13] = state[/* pp_curr_depth */13] + 1 | 0;
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
var elem = /* record */[
/* elem_size */0,
/* token : Pp_tbegin */Block.__(4, [/* Pp_tbox */[[/* [] */0]]]),
/* length */0
];
return enqueue_advance(state, elem);
}
else {
return 0;
}
}
function pp_close_tbox(state, _) {
if (state[/* pp_curr_depth */13] > 1) {
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
var elem = /* record */[
/* elem_size */0,
/* token : Pp_tend */2,
/* length */0
];
enqueue_advance(state, elem);
state[/* pp_curr_depth */13] = state[/* pp_curr_depth */13] - 1 | 0;
return /* () */0;
}
else {
return 0;
}
}
else {
return 0;
}
}
function pp_print_tbreak(state, width, offset) {
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
var elem = /* record */[
/* elem_size */-state[/* pp_right_total */12] | 0,
/* token : Pp_tbreak */Block.__(2, [
width,
offset
]),
/* length */width
];
return scan_push(state, /* true */1, elem);
}
else {
return 0;
}
}
function pp_print_tab(state, _) {
return pp_print_tbreak(state, 0, 0);
}
function pp_set_tab(state, _) {
if (state[/* pp_curr_depth */13] < state[/* pp_max_boxes */14]) {
var elem = /* record */[
/* elem_size */0,
/* token : Pp_stab */0,
/* length */0
];
return enqueue_advance(state, elem);
}
else {
return 0;
}
}
function pp_print_list(_$staropt$star, pp_v, ppf, _param) {
while(true) {
var param = _param;
var $staropt$star = _$staropt$star;
var pp_sep = $staropt$star ? $staropt$star[0] : pp_print_cut;
if (param) {
var vs = param[1];
var v = param[0];
if (vs) {
Curry._2(pp_v, ppf, v);
Curry._2(pp_sep, ppf, /* () */0);
_param = vs;
_$staropt$star = /* Some */[pp_sep];
continue ;
}
else {
return Curry._2(pp_v, ppf, v);
}
}
else {
return /* () */0;
}
};
}
function pp_print_text(ppf, s) {
var len = s.length;
var left = [0];
var right = [0];
var flush = function () {
pp_print_string(ppf, $$String.sub(s, left[0], right[0] - left[0] | 0));
right[0] = right[0] + 1 | 0;
left[0] = right[0];
return /* () */0;
};
while(right[0] !== len) {
var match = Caml_string.get(s, right[0]);
if (match !== 10) {
if (match !== 32) {
right[0] = right[0] + 1 | 0;
}
else {
flush(/* () */0);
pp_print_break(ppf, 1, 0);
}
}
else {
flush(/* () */0);
pp_force_newline(ppf, /* () */0);
}
};
if (left[0] !== len) {
return flush(/* () */0);
}
else {
return 0;
}
}
function pp_set_max_boxes(state, n) {
if (n > 1) {
state[/* pp_max_boxes */14] = n;
return /* () */0;
}
else {
return 0;
}
}
function pp_get_max_boxes(state, _) {
return state[/* pp_max_boxes */14];
}
function pp_over_max_boxes(state, _) {
return +(state[/* pp_curr_depth */13] === state[/* pp_max_boxes */14]);
}
function pp_set_ellipsis_text(state, s) {
state[/* pp_ellipsis */15] = s;
return /* () */0;
}
function pp_get_ellipsis_text(state, _) {
return state[/* pp_ellipsis */15];
}
function pp_limit(n) {
if (n < 1000000010) {
return n;
}
else {
return 1000000009;
}
}
function pp_set_max_indent(state, n) {
var state$1 = state;
var n$1 = state[/* pp_margin */5] - n | 0;
if (n$1 >= 1) {
var n$2 = pp_limit(n$1);
state$1[/* pp_min_space_left */6] = n$2;
state$1[/* pp_max_indent */7] = state$1[/* pp_margin */5] - state$1[/* pp_min_space_left */6] | 0;
return pp_rinit(state$1);
}
else {
return 0;
}
}
function pp_get_max_indent(state, _) {
return state[/* pp_max_indent */7];
}
function pp_set_margin(state, n) {
if (n >= 1) {
var n$1 = pp_limit(n);
state[/* pp_margin */5] = n$1;
var new_max_indent = state[/* pp_max_indent */7] <= state[/* pp_margin */5] ? state[/* pp_max_indent */7] : Pervasives.max(Pervasives.max(state[/* pp_margin */5] - state[/* pp_min_space_left */6] | 0, state[/* pp_margin */5] / 2 | 0), 1);
return pp_set_max_indent(state, new_max_indent);
}
else {
return 0;
}
}
function pp_get_margin(state, _) {
return state[/* pp_margin */5];
}
function pp_set_formatter_out_functions(state, param) {
state[/* pp_out_string */16] = param[/* out_string */0];
state[/* pp_out_flush */17] = param[/* out_flush */1];
state[/* pp_out_newline */18] = param[/* out_newline */2];
state[/* pp_out_spaces */19] = param[/* out_spaces */3];
return /* () */0;
}
function pp_get_formatter_out_functions(state, _) {
return /* record */[
/* out_string */state[/* pp_out_string */16],
/* out_flush */state[/* pp_out_flush */17],
/* out_newline */state[/* pp_out_newline */18],
/* out_spaces */state[/* pp_out_spaces */19]
];
}
function pp_set_formatter_output_functions(state, f, g) {
state[/* pp_out_string */16] = f;
state[/* pp_out_flush */17] = g;
return /* () */0;
}
function pp_get_formatter_output_functions(state, _) {
return /* tuple */[
state[/* pp_out_string */16],
state[/* pp_out_flush */17]
];
}
function pp_set_all_formatter_output_functions(state, f, g, h, i) {
pp_set_formatter_output_functions(state, f, g);
state[/* pp_out_newline */18] = h;
state[/* pp_out_spaces */19] = i;
return /* () */0;
}
function pp_get_all_formatter_output_functions(state, _) {
return /* tuple */[
state[/* pp_out_string */16],
state[/* pp_out_flush */17],
state[/* pp_out_newline */18],
state[/* pp_out_spaces */19]
];
}
function display_newline(state, _) {
return Curry._3(state[/* pp_out_string */16], "\n", 0, 1);
}
var blank_line = Caml_string.bytes_to_string(Bytes.make(80, /* " " */32));
function display_blanks(state, _n) {
while(true) {
var n = _n;
if (n > 0) {
if (n <= 80) {
return Curry._3(state[/* pp_out_string */16], blank_line, 0, n);
}
else {
Curry._3(state[/* pp_out_string */16], blank_line, 0, 80);
_n = n - 80 | 0;
continue ;
}
}
else {
return 0;
}
};
}
function pp_set_formatter_out_channel(state, os) {
state[/* pp_out_string */16] = function (param, param$1, param$2) {
return Pervasives.output_substring(os, param, param$1, param$2);
};
state[/* pp_out_flush */17] = function () {
return Caml_io.caml_ml_flush(os);
};
state[/* pp_out_newline */18] = function (param) {
return display_newline(state, param);
};
state[/* pp_out_spaces */19] = function (param) {
return display_blanks(state, param);
};
return /* () */0;
}
function default_pp_mark_open_tag(s) {
return "<" + (s + ">");
}
function default_pp_mark_close_tag(s) {
return "</" + (s + ">");
}
function default_pp_print_open_tag() {
return /* () */0;
}
function default_pp_print_close_tag() {
return /* () */0;
}
function pp_make_formatter(f, g, h, i) {
var pp_q = /* record */[
/* insert : Nil */0,
/* body : Nil */0
];
var sys_tok = /* record */[
/* elem_size */-1,
/* token : Pp_begin */Block.__(3, [
0,
/* Pp_hovbox */3
]),
/* length */0
];
add_queue(sys_tok, pp_q);
var sys_scan_stack_000 = /* Scan_elem */[
1,
sys_tok
];
var sys_scan_stack = /* :: */[
sys_scan_stack_000,
scan_stack_bottom
];
return /* record */[
/* pp_scan_stack */sys_scan_stack,
/* pp_format_stack : [] */0,
/* pp_tbox_stack : [] */0,
/* pp_tag_stack : [] */0,
/* pp_mark_stack : [] */0,
/* pp_margin */78,
/* pp_min_space_left */10,
/* pp_max_indent */68,
/* pp_space_left */78,
/* pp_current_indent */0,
/* pp_is_new_line : true */1,
/* pp_left_total */1,
/* pp_right_total */1,
/* pp_curr_depth */1,
/* pp_max_boxes */Pervasives.max_int,
/* pp_ellipsis */".",
/* pp_out_string */f,
/* pp_out_flush */g,
/* pp_out_newline */h,
/* pp_out_spaces */i,
/* pp_print_tags : false */0,
/* pp_mark_tags : false */0,
/* pp_mark_open_tag */default_pp_mark_open_tag,
/* pp_mark_close_tag */default_pp_mark_close_tag,
/* pp_print_open_tag */default_pp_print_open_tag,
/* pp_print_close_tag */default_pp_print_close_tag,
/* pp_queue */pp_q
];
}
function make_formatter(output, flush) {
var ppf = pp_make_formatter(output, flush, function () {
return /* () */0;
}, function () {
return /* () */0;
});
ppf[/* pp_out_newline */18] = function (param) {
return display_newline(ppf, param);
};
ppf[/* pp_out_spaces */19] = function (param) {
return display_blanks(ppf, param);
};
return ppf;
}
function formatter_of_out_channel(oc) {
return make_formatter(function (param, param$1, param$2) {
return Pervasives.output_substring(oc, param, param$1, param$2);
}, function () {
return Caml_io.caml_ml_flush(oc);
});
}
function formatter_of_buffer(b) {
return make_formatter(function (param, param$1, param$2) {
return Buffer.add_substring(b, param, param$1, param$2);
}, function () {
return /* () */0;
});
}
var stdbuf = Buffer.create(512);
var std_formatter = formatter_of_out_channel(Pervasives.stdout);
var err_formatter = formatter_of_out_channel(Pervasives.stderr);
var str_formatter = formatter_of_buffer(stdbuf);
function flush_str_formatter() {
pp_flush_queue(str_formatter, /* false */0);
var s = Buffer.contents(stdbuf);
Buffer.reset(stdbuf);
return s;
}
function flush_buf_formatter(buf, ppf) {
pp_flush_queue(ppf, /* false */0);
var s = Buffer.contents(buf);
Buffer.reset(buf);
return s;
}
function open_hbox(param) {
return pp_open_hbox(std_formatter, param);
}
function open_vbox(param) {
return pp_open_vbox(std_formatter, param);
}
function open_hvbox(param) {
return pp_open_hvbox(std_formatter, param);
}
function open_hovbox(param) {
return pp_open_hovbox(std_formatter, param);
}
function open_box(param) {
return pp_open_box(std_formatter, param);
}
function close_box(param) {
return pp_close_box(std_formatter, param);
}
function open_tag(param) {
return pp_open_tag(std_formatter, param);
}
function close_tag(param) {
return pp_close_tag(std_formatter, param);
}
function print_as(param, param$1) {
return pp_print_as(std_formatter, param, param$1);
}
function print_string(param) {
return pp_print_string(std_formatter, param);
}
function print_int(param) {
return pp_print_string(std_formatter, "" + param);
}
function print_float(param) {
return pp_print_string(std_formatter, Pervasives.string_of_float(param));
}
function print_char(param) {
return pp_print_char(std_formatter, param);
}
function print_bool(param) {
return pp_print_string(std_formatter, param ? "true" : "false");
}
function print_break(param, param$1) {
return pp_print_break(std_formatter, param, param$1);
}
function print_cut() {
return pp_print_break(std_formatter, 0, 0);
}
function print_space() {
return pp_print_break(std_formatter, 1, 0);
}
function force_newline(param) {
return pp_force_newline(std_formatter, param);
}
function print_flush(param) {
return pp_print_flush(std_formatter, param);
}
function print_newline(param) {
return pp_print_newline(std_formatter, param);
}
function print_if_newline(param) {
return pp_print_if_newline(std_formatter, param);
}
function open_tbox(param) {
return pp_open_tbox(std_formatter, param);
}
function close_tbox(param) {
return pp_close_tbox(std_formatter, param);
}
function print_tbreak(param, param$1) {
return pp_print_tbreak(std_formatter, param, param$1);
}
function set_tab(param) {
return pp_set_tab(std_formatter, param);
}
function print_tab() {
return pp_print_tbreak(std_formatter, 0, 0);
}
function set_margin(param) {
return pp_set_margin(std_formatter, param);
}
function get_margin() {
return std_formatter[/* pp_margin */5];
}
function set_max_indent(param) {
return pp_set_max_indent(std_formatter, param);
}
function get_max_indent() {
return std_formatter[/* pp_max_indent */7];
}
function set_max_boxes(param) {
return pp_set_max_boxes(std_formatter, param);
}
function get_max_boxes() {
return std_formatter[/* pp_max_boxes */14];
}
function over_max_boxes(param) {
return pp_over_max_boxes(std_formatter, param);
}
function set_ellipsis_text(param) {
std_formatter[/* pp_ellipsis */15] = param;
return /* () */0;
}
function get_ellipsis_text() {
return std_formatter[/* pp_ellipsis */15];
}
function set_formatter_out_channel(param) {
return pp_set_formatter_out_channel(std_formatter, param);
}
function set_formatter_out_functions(param) {
return pp_set_formatter_out_functions(std_formatter, param);
}
function get_formatter_out_functions(param) {
return pp_get_formatter_out_functions(std_formatter, param);
}
function set_formatter_output_functions(param, param$1) {
return pp_set_formatter_output_functions(std_formatter, param, param$1);
}
function get_formatter_output_functions(param) {
return pp_get_formatter_output_functions(std_formatter, param);
}
function set_all_formatter_output_functions(param, param$1, param$2, param$3) {
return pp_set_all_formatter_output_functions(std_formatter, param, param$1, param$2, param$3);
}
function get_all_formatter_output_functions(param) {
return pp_get_all_formatter_output_functions(std_formatter, param);
}
function set_formatter_tag_functions(param) {
return pp_set_formatter_tag_functions(std_formatter, param);
}
function get_formatter_tag_functions(param) {
return pp_get_formatter_tag_functions(std_formatter, param);
}
function set_print_tags(param) {
std_formatter[/* pp_print_tags */20] = param;
return /* () */0;
}
function get_print_tags() {
return std_formatter[/* pp_print_tags */20];
}
function set_mark_tags(param) {
std_formatter[/* pp_mark_tags */21] = param;
return /* () */0;
}
function get_mark_tags() {
return std_formatter[/* pp_mark_tags */21];
}
function set_tags(param) {
return pp_set_tags(std_formatter, param);
}
function compute_tag(output, tag_acc) {
var buf = Buffer.create(16);
var ppf = formatter_of_buffer(buf);
Curry._2(output, ppf, tag_acc);
pp_print_flush(ppf, /* () */0);
var len = buf[/* position */1];
if (len < 2) {
return Buffer.contents(buf);
}
else {
return Buffer.sub(buf, 1, len - 2 | 0);
}
}
function output_formatting_lit(ppf, fmting_lit) {
if (typeof fmting_lit === "number") {
switch (fmting_lit) {
case 0 :
return pp_close_box(ppf, /* () */0);
case 1 :
return pp_close_tag(ppf, /* () */0);
case 2 :
return pp_print_flush(ppf, /* () */0);
case 3 :
return pp_force_newline(ppf, /* () */0);
case 4 :
return pp_print_newline(ppf, /* () */0);
case 5 :
return pp_print_char(ppf, /* "@" */64);
case 6 :
return pp_print_char(ppf, /* "%" */37);
}
}
else {
switch (fmting_lit.tag | 0) {
case 0 :
return pp_print_break(ppf, fmting_lit[1], fmting_lit[2]);
case 1 :
return /* () */0;
case 2 :
pp_print_char(ppf, /* "@" */64);
return pp_print_char(ppf, fmting_lit[0]);
}
}
}
function output_acc(ppf, acc) {
var exit = 0;
var p;
var size;
var s;
var p$1;
var size$1;
var c;
if (typeof acc === "number") {
return /* () */0;
}
else {
switch (acc.tag | 0) {
case 0 :
output_acc(ppf, acc[0]);
return output_formatting_lit(ppf, acc[1]);
case 1 :
var match = acc[1];
var p$2 = acc[0];
output_acc(ppf, p$2);
if (match.tag) {
var match$1 = CamlinternalFormat.open_box_of_string(compute_tag(output_acc, match[0]));
return pp_open_box_gen(ppf, match$1[0], match$1[1]);
}
else {
return pp_open_tag(ppf, compute_tag(output_acc, match[0]));
}
break;
case 2 :
var p$3 = acc[0];
var exit$1 = 0;
if (typeof p$3 === "number") {
exit$1 = 3;
}
else if (p$3.tag) {
exit$1 = 3;
}
else {
var match$2 = p$3[1];
if (typeof match$2 === "number") {
exit$1 = 3;
}
else if (match$2.tag === 1) {
p = p$3[0];
size = match$2[1];
s = acc[1];
exit = 1;
}
else {
exit$1 = 3;
}
}
if (exit$1 === 3) {
output_acc(ppf, p$3);
return pp_print_string(ppf, acc[1]);
}
break;
case 3 :
var p$4 = acc[0];
var exit$2 = 0;
if (typeof p$4 === "number") {
exit$2 = 3;
}
else if (p$4.tag) {
exit$2 = 3;
}
else {
var match$3 = p$4[1];
if (typeof match$3 === "number") {
exit$2 = 3;
}
else if (match$3.tag === 1) {
p$1 = p$4[0];
size$1 = match$3[1];
c = acc[1];
exit = 2;
}
else {
exit$2 = 3;
}
}
if (exit$2 === 3) {
output_acc(ppf, p$4);
return pp_print_char(ppf, acc[1]);
}
break;
case 4 :
var p$5 = acc[0];
var exit$3 = 0;
if (typeof p$5 === "number") {
exit$3 = 3;
}
else if (p$5.tag) {
exit$3 = 3;
}
else {
var match$4 = p$5[1];
if (typeof match$4 === "number") {
exit$3 = 3;
}
else if (match$4.tag === 1) {
p = p$5[0];
size = match$4[1];
s = acc[1];
exit = 1;
}
else {
exit$3 = 3;
}
}
if (exit$3 === 3) {
output_acc(ppf, p$5);
return pp_print_string(ppf, acc[1]);
}
break;
case 5 :
var p$6 = acc[0];
var exit$4 = 0;
if (typeof p$6 === "number") {
exit$4 = 3;
}
else if (p$6.tag) {
exit$4 = 3;
}
else {
var match$5 = p$6[1];
if (typeof match$5 === "number") {
exit$4 = 3;
}
else if (match$5.tag === 1) {
p$1 = p$6[0];
size$1 = match$5[1];
c = acc[1];
exit = 2;
}
else {
exit$4 = 3;
}
}
if (exit$4 === 3) {
output_acc(ppf, p$6);
return pp_print_char(ppf, acc[1]);
}
break;
case 6 :
output_acc(ppf, acc[0]);
return Curry._1(acc[1], ppf);
case 7 :
output_acc(ppf, acc[0]);
return pp_print_flush(ppf, /* () */0);
case 8 :
output_acc(ppf, acc[0]);
throw [
Caml_builtin_exceptions.invalid_argument,
acc[1]
];
}
}
switch (exit) {
case 1 :
output_acc(ppf, p);
return pp_print_as_size(ppf, size, s);
case 2 :
output_acc(ppf, p$1);
return pp_print_as_size(ppf, size$1, Caml_string.bytes_to_string(Bytes.make(1, c)));
}
}
function strput_acc(ppf, acc) {
var exit = 0;
var p;
var size;
var s;
var p$1;
var size$1;
var c;
if (typeof acc === "number") {
return /* () */0;
}
else {
switch (acc.tag | 0) {
case 0 :
strput_acc(ppf, acc[0]);
return output_formatting_lit(ppf, acc[1]);
case 1 :
var match = acc[1];
var p$2 = acc[0];
strput_acc(ppf, p$2);
if (match.tag) {
var match$1 = CamlinternalFormat.open_box_of_string(compute_tag(strput_acc, match[0]));
return pp_open_box_gen(ppf, match$1[0], match$1[1]);
}
else {
return pp_open_tag(ppf, compute_tag(strput_acc, match[0]));
}
break;
case 2 :
var p$3 = acc[0];
var exit$1 = 0;
if (typeof p$3 === "number") {
exit$1 = 3;
}
else if (p$3.tag) {
exit$1 = 3;
}
else {
var match$2 = p$3[1];
if (typeof match$2 === "number") {
exit$1 = 3;
}
else if (match$2.tag === 1) {
p = p$3[0];
size = match$2[1];
s = acc[1];
exit = 1;
}
else {
exit$1 = 3;
}
}
if (exit$1 === 3) {
strput_acc(ppf, p$3);
return pp_print_string(ppf, acc[1]);
}
break;
case 3 :
var p$4 = acc[0];
var exit$2 = 0;
if (typeof p$4 === "number") {
exit$2 = 3;
}
else if (p$4.tag) {
exit$2 = 3;
}
else {
var match$3 = p$4[1];
if (typeof match$3 === "number") {
exit$2 = 3;
}
else if (match$3.tag === 1) {
p$1 = p$4[0];
size$1 = match$3[1];
c = acc[1];
exit = 2;
}
else {
exit$2 = 3;
}
}
if (exit$2 === 3) {
strput_acc(ppf, p$4);
return pp_print_char(ppf, acc[1]);
}
break;
case 4 :
var p$5 = acc[0];
var exit$3 = 0;
if (typeof p$5 === "number") {
exit$3 = 3;
}
else if (p$5.tag) {
exit$3 = 3;
}
else {
var match$4 = p$5[1];
if (typeof match$4 === "number") {
exit$3 = 3;
}
else if (match$4.tag === 1) {
p = p$5[0];
size = match$4[1];
s = acc[1];
exit = 1;
}
else {
exit$3 = 3;
}
}
if (exit$3 === 3) {
strput_acc(ppf, p$5);
return pp_print_string(ppf, acc[1]);
}
break;
case 5 :
var p$6 = acc[0];
var exit$4 = 0;
if (typeof p$6 === "number") {
exit$4 = 3;
}
else if (p$6.tag) {
exit$4 = 3;
}
else {
var match$5 = p$6[1];
if (typeof match$5 === "number") {
exit$4 = 3;
}
else if (match$5.tag === 1) {
p$1 = p$6[0];
size$1 = match$5[1];
c = acc[1];
exit = 2;
}
else {
exit$4 = 3;
}
}
if (exit$4 === 3) {
strput_acc(ppf, p$6);
return pp_print_char(ppf, acc[1]);
}
break;
case 6 :
var p$7 = acc[0];
var exit$5 = 0;
if (typeof p$7 === "number") {
exit$5 = 3;
}
else if (p$7.tag) {
exit$5 = 3;
}
else {
var match$6 = p$7[1];
if (typeof match$6 === "number") {
exit$5 = 3;
}
else if (match$6.tag === 1) {
strput_acc(ppf, p$7[0]);
return pp_print_as_size(ppf, match$6[1], Curry._1(acc[1], /* () */0));
}
else {
exit$5 = 3;
}
}
if (exit$5 === 3) {
strput_acc(ppf, p$7);
return pp_print_string(ppf, Curry._1(acc[1], /* () */0));
}
break;
case 7 :
strput_acc(ppf, acc[0]);
return pp_print_flush(ppf, /* () */0);
case 8 :
strput_acc(ppf, acc[0]);
throw [
Caml_builtin_exceptions.invalid_argument,
acc[1]
];
}
}
switch (exit) {
case 1 :
strput_acc(ppf, p);
return pp_print_as_size(ppf, size, s);
case 2 :
strput_acc(ppf, p$1);
return pp_print_as_size(ppf, size$1, Caml_string.bytes_to_string(Bytes.make(1, c)));
}
}
function kfprintf(k, o, param) {
return CamlinternalFormat.make_printf(function (o, acc) {
output_acc(o, acc);
return Curry._1(k, o);
}, o, /* End_of_acc */0, param[0]);
}
function ikfprintf(k, x, param) {
return CamlinternalFormat.make_printf(function (_, _$1) {
return Curry._1(k, x);
}, x, /* End_of_acc */0, param[0]);
}
function fprintf(ppf, fmt) {
return kfprintf(function () {
return /* () */0;
}, ppf, fmt);
}
function ifprintf(ppf, fmt) {
return ikfprintf(function () {
return /* () */0;
}, ppf, fmt);
}
function printf(fmt) {
return fprintf(std_formatter, fmt);
}
function eprintf(fmt) {
return fprintf(err_formatter, fmt);
}
function ksprintf(k, param) {
var b = Buffer.create(512);
var ppf = formatter_of_buffer(b);
var k$prime = function (_, acc) {
strput_acc(ppf, acc);
return Curry._1(k, flush_buf_formatter(b, ppf));
};
return CamlinternalFormat.make_printf(k$prime, /* () */0, /* End_of_acc */0, param[0]);
}
function sprintf(fmt) {
return ksprintf(function (s) {
return s;
}, fmt);
}
function asprintf(param) {
var b = Buffer.create(512);
var ppf = formatter_of_buffer(b);
var k$prime = function (ppf, acc) {
output_acc(ppf, acc);
pp_flush_queue(ppf, /* false */0);
return flush_buf_formatter(b, ppf);
};
return CamlinternalFormat.make_printf(k$prime, ppf, /* End_of_acc */0, param[0]);
}
function bprintf(b, param) {
var k = function (ppf, acc) {
output_acc(ppf, acc);
return pp_flush_queue(ppf, /* false */0);
};
return CamlinternalFormat.make_printf(k, formatter_of_buffer(b), /* End_of_acc */0, param[0]);
}
Pervasives.at_exit(print_flush);
var kprintf = ksprintf;
exports.open_box = open_box;
exports.close_box = close_box;
exports.print_string = print_string;
exports.print_as = print_as;
exports.print_int = print_int;
exports.print_float = print_float;
exports.print_char = print_char;
exports.print_bool = print_bool;
exports.print_space = print_space;
exports.print_cut = print_cut;
exports.print_break = print_break;
exports.print_flush = print_flush;
exports.print_newline = print_newline;
exports.force_newline = force_newline;
exports.print_if_newline = print_if_newline;
exports.set_margin = set_margin;
exports.get_margin = get_margin;
exports.set_max_indent = set_max_indent;
exports.get_max_indent = get_max_indent;
exports.set_max_boxes = set_max_boxes;
exports.get_max_boxes = get_max_boxes;
exports.over_max_boxes = over_max_boxes;
exports.open_hbox = open_hbox;
exports.open_vbox = open_vbox;
exports.open_hvbox = open_hvbox;
exports.open_hovbox = open_hovbox;
exports.open_tbox = open_tbox;
exports.close_tbox = close_tbox;
exports.print_tbreak = print_tbreak;
exports.set_tab = set_tab;
exports.print_tab = print_tab;
exports.set_ellipsis_text = set_ellipsis_text;
exports.get_ellipsis_text = get_ellipsis_text;
exports.open_tag = open_tag;
exports.close_tag = close_tag;
exports.set_tags = set_tags;
exports.set_print_tags = set_print_tags;
exports.set_mark_tags = set_mark_tags;
exports.get_print_tags = get_print_tags;
exports.get_mark_tags = get_mark_tags;
exports.set_formatter_out_channel = set_formatter_out_channel;
exports.set_formatter_output_functions = set_formatter_output_functions;
exports.get_formatter_output_functions = get_formatter_output_functions;
exports.set_formatter_out_functions = set_formatter_out_functions;
exports.get_formatter_out_functions = get_formatter_out_functions;
exports.set_formatter_tag_functions = set_formatter_tag_functions;
exports.get_formatter_tag_functions = get_formatter_tag_functions;
exports.formatter_of_out_channel = formatter_of_out_channel;
exports.std_formatter = std_formatter;
exports.err_formatter = err_formatter;
exports.formatter_of_buffer = formatter_of_buffer;
exports.stdbuf = stdbuf;
exports.str_formatter = str_formatter;
exports.flush_str_formatter = flush_str_formatter;
exports.make_formatter = make_formatter;
exports.pp_open_hbox = pp_open_hbox;
exports.pp_open_vbox = pp_open_vbox;
exports.pp_open_hvbox = pp_open_hvbox;
exports.pp_open_hovbox = pp_open_hovbox;
exports.pp_open_box = pp_open_box;
exports.pp_close_box = pp_close_box;
exports.pp_open_tag = pp_open_tag;
exports.pp_close_tag = pp_close_tag;
exports.pp_print_string = pp_print_string;
exports.pp_print_as = pp_print_as;
exports.pp_print_int = pp_print_int;
exports.pp_print_float = pp_print_float;
exports.pp_print_char = pp_print_char;
exports.pp_print_bool = pp_print_bool;
exports.pp_print_break = pp_print_break;
exports.pp_print_cut = pp_print_cut;
exports.pp_print_space = pp_print_space;
exports.pp_force_newline = pp_force_newline;
exports.pp_print_flush = pp_print_flush;
exports.pp_print_newline = pp_print_newline;
exports.pp_print_if_newline = pp_print_if_newline;
exports.pp_open_tbox = pp_open_tbox;
exports.pp_close_tbox = pp_close_tbox;
exports.pp_print_tbreak = pp_print_tbreak;
exports.pp_set_tab = pp_set_tab;
exports.pp_print_tab = pp_print_tab;
exports.pp_set_tags = pp_set_tags;
exports.pp_set_print_tags = pp_set_print_tags;
exports.pp_set_mark_tags = pp_set_mark_tags;
exports.pp_get_print_tags = pp_get_print_tags;
exports.pp_get_mark_tags = pp_get_mark_tags;
exports.pp_set_margin = pp_set_margin;
exports.pp_get_margin = pp_get_margin;
exports.pp_set_max_indent = pp_set_max_indent;
exports.pp_get_max_indent = pp_get_max_indent;
exports.pp_set_max_boxes = pp_set_max_boxes;
exports.pp_get_max_boxes = pp_get_max_boxes;
exports.pp_over_max_boxes = pp_over_max_boxes;
exports.pp_set_ellipsis_text = pp_set_ellipsis_text;
exports.pp_get_ellipsis_text = pp_get_ellipsis_text;
exports.pp_set_formatter_out_channel = pp_set_formatter_out_channel;
exports.pp_set_formatter_output_functions = pp_set_formatter_output_functions;
exports.pp_get_formatter_output_functions = pp_get_formatter_output_functions;
exports.pp_set_formatter_tag_functions = pp_set_formatter_tag_functions;
exports.pp_get_formatter_tag_functions = pp_get_formatter_tag_functions;
exports.pp_set_formatter_out_functions = pp_set_formatter_out_functions;
exports.pp_get_formatter_out_functions = pp_get_formatter_out_functions;
exports.pp_print_list = pp_print_list;
exports.pp_print_text = pp_print_text;
exports.fprintf = fprintf;
exports.printf = printf;
exports.eprintf = eprintf;
exports.sprintf = sprintf;
exports.asprintf = asprintf;
exports.ifprintf = ifprintf;
exports.kfprintf = kfprintf;
exports.ikfprintf = ikfprintf;
exports.ksprintf = ksprintf;
exports.bprintf = bprintf;
exports.kprintf = kprintf;
exports.set_all_formatter_output_functions = set_all_formatter_output_functions;
exports.get_all_formatter_output_functions = get_all_formatter_output_functions;
exports.pp_set_all_formatter_output_functions = pp_set_all_formatter_output_functions;
exports.pp_get_all_formatter_output_functions = pp_get_all_formatter_output_functions;
/* blank_line Not a pure module */
//////// end of format.js ////////
    return exports;
  };
_registry['i32'] = function() {
    let exports = {};
//////// start of i32.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Int = require("./int");
var Int32 = require("bs-platform/lib/js/int32");
var Caml_int32 = require("bs-platform/lib/js/caml_int32");
var include = Int.Make(/* module */[
/* zero */Int32.zero,
/* one */Int32.one,
/* minus_one */Int32.minus_one,
/* max_int */Int32.max_int,
/* min_int */Int32.min_int,
/* %int32_neg */function (prim) {
return -prim | 0;
},
/* %int32_add */function (prim, prim$1) {
return prim + prim$1 | 0;
},
/* %int32_sub */function (prim, prim$1) {
return prim - prim$1 | 0;
},
/* %int32_mul */Caml_int32.imul,
/* %int32_div */Caml_int32.div,
/* %int32_mod */Caml_int32.mod_,
/* %int32_and */function (prim, prim$1) {
return prim & prim$1;
},
/* lognot */Int32.lognot,
/* %int32_or */function (prim, prim$1) {
return prim | prim$1;
},
/* %int32_xor */function (prim, prim$1) {
return prim ^ prim$1;
},
/* %int32_lsl */function (prim, prim$1) {
return (prim << prim$1);
},
/* %int32_asr */function (prim, prim$1) {
return (prim >> prim$1);
},
/* %int32_lsr */function (prim, prim$1) {
return (prim >>> prim$1) | 0;
},
/* %int32_of_int */function (prim) {
return prim;
},
/* %int32_to_int */function (prim) {
return prim;
},
/* to_string */Int32.to_string,
/* bitwidth */32
]);
var of_bits = include[0];
var to_bits = include[1];
var zero = include[2];
var add = include[3];
var sub = include[4];
var mul = include[5];
var div_s = include[6];
var div_u = include[7];
var rem_s = include[8];
var rem_u = include[9];
var and_ = include[10];
var or_ = include[11];
var xor = include[12];
var shl = include[13];
var shr_s = include[14];
var shr_u = include[15];
var rotl = include[16];
var rotr = include[17];
var clz = include[18];
var ctz = include[19];
var popcnt = include[20];
var eqz = include[21];
var eq = include[22];
var ne = include[23];
var lt_s = include[24];
var lt_u = include[25];
var le_s = include[26];
var le_u = include[27];
var gt_s = include[28];
var gt_u = include[29];
var ge_s = include[30];
var ge_u = include[31];
var of_int_s = include[32];
var of_int_u = include[33];
var of_string_s = include[34];
var of_string_u = include[35];
var of_string = include[36];
var to_string_s = include[37];
var to_string_u = include[38];
exports.of_bits = of_bits;
exports.to_bits = to_bits;
exports.zero = zero;
exports.add = add;
exports.sub = sub;
exports.mul = mul;
exports.div_s = div_s;
exports.div_u = div_u;
exports.rem_s = rem_s;
exports.rem_u = rem_u;
exports.and_ = and_;
exports.or_ = or_;
exports.xor = xor;
exports.shl = shl;
exports.shr_s = shr_s;
exports.shr_u = shr_u;
exports.rotl = rotl;
exports.rotr = rotr;
exports.clz = clz;
exports.ctz = ctz;
exports.popcnt = popcnt;
exports.eqz = eqz;
exports.eq = eq;
exports.ne = ne;
exports.lt_s = lt_s;
exports.lt_u = lt_u;
exports.le_s = le_s;
exports.le_u = le_u;
exports.gt_s = gt_s;
exports.gt_u = gt_u;
exports.ge_s = ge_s;
exports.ge_u = ge_u;
exports.of_int_s = of_int_s;
exports.of_int_u = of_int_u;
exports.of_string_s = of_string_s;
exports.of_string_u = of_string_u;
exports.of_string = of_string;
exports.to_string_s = to_string_s;
exports.to_string_u = to_string_u;
/* include Not a pure module */
//////// end of i32.js ////////
    return exports;
  };
_registry['i64'] = function() {
    let exports = {};
//////// start of i64.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Int = require("./int");
var Int64 = require("bs-platform/lib/js/int64");
var Caml_int64 = require("bs-platform/lib/js/caml_int64");
var include = Int.Make(/* module */[
/* zero */Int64.zero,
/* one */Int64.one,
/* minus_one */Int64.minus_one,
/* max_int */Int64.max_int,
/* min_int */Int64.min_int,
/* %int64_neg */Caml_int64.neg,
/* %int64_add */Caml_int64.add,
/* %int64_sub */Caml_int64.sub,
/* %int64_mul */Caml_int64.mul,
/* %int64_div */Caml_int64.div,
/* %int64_mod */Caml_int64.mod_,
/* %int64_and */function (prim, prim$1) {
return /* int64 */[
/* hi */prim[0] & prim$1[0],
/* lo */((prim[1] & prim$1[1]) >>> 0)
];
},
/* lognot */Int64.lognot,
/* %int64_or */function (prim, prim$1) {
return /* int64 */[
/* hi */prim[0] | prim$1[0],
/* lo */((prim[1] | prim$1[1]) >>> 0)
];
},
/* %int64_xor */function (prim, prim$1) {
return /* int64 */[
/* hi */prim[0] ^ prim$1[0],
/* lo */((prim[1] ^ prim$1[1]) >>> 0)
];
},
/* %int64_lsl */Caml_int64.lsl_,
/* %int64_asr */Caml_int64.asr_,
/* %int64_lsr */Caml_int64.lsr_,
/* %int64_of_int */Caml_int64.of_int32,
/* %int64_to_int */function (prim) {
return prim[1] | 0;
},
/* to_string */Int64.to_string,
/* bitwidth */64
]);
var of_bits = include[0];
var to_bits = include[1];
var zero = include[2];
var add = include[3];
var sub = include[4];
var mul = include[5];
var div_s = include[6];
var div_u = include[7];
var rem_s = include[8];
var rem_u = include[9];
var and_ = include[10];
var or_ = include[11];
var xor = include[12];
var shl = include[13];
var shr_s = include[14];
var shr_u = include[15];
var rotl = include[16];
var rotr = include[17];
var clz = include[18];
var ctz = include[19];
var popcnt = include[20];
var eqz = include[21];
var eq = include[22];
var ne = include[23];
var lt_s = include[24];
var lt_u = include[25];
var le_s = include[26];
var le_u = include[27];
var gt_s = include[28];
var gt_u = include[29];
var ge_s = include[30];
var ge_u = include[31];
var of_int_s = include[32];
var of_int_u = include[33];
var of_string_s = include[34];
var of_string_u = include[35];
var of_string = include[36];
var to_string_s = include[37];
var to_string_u = include[38];
exports.of_bits = of_bits;
exports.to_bits = to_bits;
exports.zero = zero;
exports.add = add;
exports.sub = sub;
exports.mul = mul;
exports.div_s = div_s;
exports.div_u = div_u;
exports.rem_s = rem_s;
exports.rem_u = rem_u;
exports.and_ = and_;
exports.or_ = or_;
exports.xor = xor;
exports.shl = shl;
exports.shr_s = shr_s;
exports.shr_u = shr_u;
exports.rotl = rotl;
exports.rotr = rotr;
exports.clz = clz;
exports.ctz = ctz;
exports.popcnt = popcnt;
exports.eqz = eqz;
exports.eq = eq;
exports.ne = ne;
exports.lt_s = lt_s;
exports.lt_u = lt_u;
exports.le_s = le_s;
exports.le_u = le_u;
exports.gt_s = gt_s;
exports.gt_u = gt_u;
exports.ge_s = ge_s;
exports.ge_u = ge_u;
exports.of_int_s = of_int_s;
exports.of_int_u = of_int_u;
exports.of_string_s = of_string_s;
exports.of_string_u = of_string_u;
exports.of_string = of_string;
exports.to_string_s = to_string_s;
exports.to_string_u = to_string_u;
/* include Not a pure module */
//////// end of i64.js ////////
    return exports;
  };
_registry['int32'] = function() {
    let exports = {};
//////// start of int32.js ////////
'use strict';
var Caml_obj = require("./caml_obj");
var Caml_format = require("./caml_format");
function succ(n) {
return n + 1 | 0;
}
function pred(n) {
return n - 1 | 0;
}
function abs(n) {
if (n >= 0) {
return n;
}
else {
return -n | 0;
}
}
function lognot(n) {
return n ^ -1;
}
function to_string(n) {
return Caml_format.caml_int32_format("%d", n);
}
var compare = Caml_obj.caml_int32_compare;
var zero = 0;
var one = 1;
var minus_one = -1;
var max_int = 2147483647;
var min_int = -2147483648;
exports.zero = zero;
exports.one = one;
exports.minus_one = minus_one;
exports.succ = succ;
exports.pred = pred;
exports.abs = abs;
exports.max_int = max_int;
exports.min_int = min_int;
exports.lognot = lognot;
exports.to_string = to_string;
exports.compare = compare;
/* No side effect */
//////// end of int32.js ////////
    return exports;
  };
_registry['int64'] = function() {
    let exports = {};
//////// start of int64.js ////////
'use strict';
var Caml_int64 = require("./caml_int64");
var Caml_format = require("./caml_format");
function succ(n) {
return Caml_int64.add(n, /* int64 */[
/* hi */0,
/* lo */1
]);
}
function pred(n) {
return Caml_int64.sub(n, /* int64 */[
/* hi */0,
/* lo */1
]);
}
function abs(n) {
if (Caml_int64.ge(n, /* int64 */[
/* hi */0,
/* lo */0
])) {
return n;
}
else {
return Caml_int64.neg(n);
}
}
function lognot(n) {
return /* int64 */[
/* hi */n[0] ^ /* hi */-1,
/* lo */((n[1] ^ /* lo */4294967295) >>> 0)
];
}
function to_string(n) {
return Caml_format.caml_int64_format("%d", n);
}
var compare = Caml_int64.compare;
var zero = /* int64 */[
/* hi */0,
/* lo */0
];
var one = /* int64 */[
/* hi */0,
/* lo */1
];
var minus_one = /* int64 */[
/* hi */-1,
/* lo */4294967295
];
var max_int = /* int64 */[
/* hi */2147483647,
/* lo */4294967295
];
var min_int = /* int64 */[
/* hi */-2147483648,
/* lo */0
];
exports.zero = zero;
exports.one = one;
exports.minus_one = minus_one;
exports.succ = succ;
exports.pred = pred;
exports.abs = abs;
exports.max_int = max_int;
exports.min_int = min_int;
exports.lognot = lognot;
exports.to_string = to_string;
exports.compare = compare;
/* No side effect */
//////// end of int64.js ////////
    return exports;
  };
_registry['int'] = function() {
    let exports = {};
//////// start of int.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Curry = require("bs-platform/lib/js/curry");
var Caml_obj = require("bs-platform/lib/js/caml_obj");
var Pervasives = require("bs-platform/lib/js/pervasives");
var Caml_string = require("bs-platform/lib/js/caml_string");
var Numeric_error = require("./numeric_error");
function Make(Rep) {
var cmp_u = function (x, op, y) {
return Curry._2(op, Curry._2(Rep[/* add */6], x, Rep[/* min_int */4]), Curry._2(Rep[/* add */6], y, Rep[/* min_int */4]));
};
var divrem_u = function (n, d) {
if (Caml_obj.caml_equal(d, Rep[/* zero */0])) {
throw Numeric_error.IntegerDivideByZero;
}
else {
var t = Curry._2(Rep[/* shift_right */16], d, Rep[/* bitwidth */21] - 1 | 0);
var n$prime = Curry._2(Rep[/* logand */11], n, Curry._1(Rep[/* lognot */12], t));
var q = Curry._2(Rep[/* shift_left */15], Curry._2(Rep[/* div */9], Curry._2(Rep[/* shift_right_logical */17], n$prime, 1), d), 1);
var r = Curry._2(Rep[/* sub */7], n, Curry._2(Rep[/* mul */8], q, d));
if (cmp_u(r, Caml_obj.caml_lessthan, d)) {
return /* tuple */[
q,
r
];
}
else {
return /* tuple */[
Curry._2(Rep[/* add */6], q, Rep[/* one */1]),
Curry._2(Rep[/* sub */7], r, d)
];
}
}
};
var of_bits = function (x) {
return x;
};
var to_bits = function (x) {
return x;
};
var zero = Rep[/* zero */0];
var one = Rep[/* one */1];
var ten = Curry._1(Rep[/* of_int */18], 10);
var add = Rep[/* add */6];
var sub = Rep[/* sub */7];
var mul = Rep[/* mul */8];
var div_s = function (x, y) {
if (Caml_obj.caml_equal(y, Rep[/* zero */0])) {
throw Numeric_error.IntegerDivideByZero;
}
else if (Caml_obj.caml_equal(x, Rep[/* min_int */4]) && Caml_obj.caml_equal(y, Rep[/* minus_one */2])) {
throw Numeric_error.IntegerOverflow;
}
else {
return Curry._2(Rep[/* div */9], x, y);
}
};
var div_u = function (x, y) {
return divrem_u(x, y)[0];
};
var rem_s = function (x, y) {
if (Caml_obj.caml_equal(y, Rep[/* zero */0])) {
throw Numeric_error.IntegerDivideByZero;
}
else {
return Curry._2(Rep[/* rem */10], x, y);
}
};
var rem_u = function (x, y) {
return divrem_u(x, y)[1];
};
var and_ = Rep[/* logand */11];
var or_ = Rep[/* logor */13];
var xor = Rep[/* logxor */14];
var shift = function (f, x, y) {
return Curry._2(f, x, Curry._1(Rep[/* to_int */19], Curry._2(Rep[/* logand */11], y, Curry._1(Rep[/* of_int */18], Rep[/* bitwidth */21] - 1 | 0))));
};
var shl = function (x, y) {
return shift(Rep[/* shift_left */15], x, y);
};
var shr_s = function (x, y) {
return shift(Rep[/* shift_right */16], x, y);
};
var shr_u = function (x, y) {
return shift(Rep[/* shift_right_logical */17], x, y);
};
var clamp_rotate_count = function (n) {
return Curry._1(Rep[/* to_int */19], Curry._2(Rep[/* logand */11], n, Curry._1(Rep[/* of_int */18], Rep[/* bitwidth */21] - 1 | 0)));
};
var rotl = function (x, y) {
var n = clamp_rotate_count(y);
return Curry._2(or_, Curry._2(Rep[/* shift_left */15], x, n), Curry._2(Rep[/* shift_right_logical */17], x, Rep[/* bitwidth */21] - n | 0));
};
var rotr = function (x, y) {
var n = clamp_rotate_count(y);
return Curry._2(or_, Curry._2(Rep[/* shift_right_logical */17], x, n), Curry._2(Rep[/* shift_left */15], x, Rep[/* bitwidth */21] - n | 0));
};
var clz = function (x) {
var loop = function (_acc, _n) {
while(true) {
var n = _n;
var acc = _acc;
if (Caml_obj.caml_equal(n, Rep[/* zero */0])) {
return Rep[/* bitwidth */21];
}
else if (Caml_obj.caml_equal(Curry._2(and_, n, Curry._2(Rep[/* shift_left */15], Rep[/* one */1], Rep[/* bitwidth */21] - 1 | 0)), Rep[/* zero */0])) {
_n = Curry._2(Rep[/* shift_left */15], n, 1);
_acc = 1 + acc | 0;
continue ;
}
else {
return acc;
}
};
};
return Curry._1(Rep[/* of_int */18], loop(0, x));
};
var ctz = function (x) {
var loop = function (_acc, _n) {
while(true) {
var n = _n;
var acc = _acc;
if (Caml_obj.caml_equal(n, Rep[/* zero */0])) {
return Rep[/* bitwidth */21];
}
else if (Caml_obj.caml_equal(Curry._2(and_, n, Rep[/* one */1]), Rep[/* one */1])) {
return acc;
}
else {
_n = Curry._2(Rep[/* shift_right_logical */17], n, 1);
_acc = 1 + acc | 0;
continue ;
}
};
};
return Curry._1(Rep[/* of_int */18], loop(0, x));
};
var popcnt = function (x) {
var loop = function (_acc, _i, _n) {
while(true) {
var n = _n;
var i = _i;
var acc = _acc;
if (Caml_obj.caml_equal(n, Rep[/* zero */0])) {
return acc;
}
else {
var acc$prime = Caml_obj.caml_equal(Curry._2(and_, n, Rep[/* one */1]), Rep[/* one */1]) ? acc + 1 | 0 : acc;
_n = Curry._2(Rep[/* shift_right_logical */17], n, 1);
_i = i - 1 | 0;
_acc = acc$prime;
continue ;
}
};
};
return Curry._1(Rep[/* of_int */18], loop(0, Rep[/* bitwidth */21], x));
};
var eqz = function (x) {
return Caml_obj.caml_equal(x, Rep[/* zero */0]);
};
var eq = Caml_obj.caml_equal;
var ne = Caml_obj.caml_notequal;
var lt_s = Caml_obj.caml_lessthan;
var lt_u = function (x, y) {
return cmp_u(x, Caml_obj.caml_lessthan, y);
};
var le_s = Caml_obj.caml_lessequal;
var le_u = function (x, y) {
return cmp_u(x, Caml_obj.caml_lessequal, y);
};
var gt_s = Caml_obj.caml_greaterthan;
var gt_u = function (x, y) {
return cmp_u(x, Caml_obj.caml_greaterthan, y);
};
var ge_s = Caml_obj.caml_greaterequal;
var ge_u = function (x, y) {
return cmp_u(x, Caml_obj.caml_greaterequal, y);
};
var of_int_s = Rep[/* of_int */18];
var of_int_u = function (i) {
return Curry._2(and_, Curry._1(Rep[/* of_int */18], i), Curry._2(or_, shl(Curry._1(Rep[/* of_int */18], Pervasives.max_int), one), one));
};
var to_string_s = Rep[/* to_string */20];
var to_string_u = function (i) {
if (Caml_obj.caml_greaterequal(i, Rep[/* zero */0])) {
return Curry._1(to_string_s, i);
}
else {
return Curry._1(to_string_s, div_u(i, ten)) + Curry._1(to_string_s, rem_u(i, ten));
}
};
var $$require = function (b) {
if (b) {
return 0;
}
else {
return Pervasives.failwith("of_string");
}
};
var dec_digit = function (c) {
if (c > 57 || c < 48) {
return Pervasives.failwith("of_string");
}
else {
return c - /* "0" */48 | 0;
}
};
var hex_digit = function (c) {
if (c >= 65) {
if (c >= 97) {
if (c >= 103) {
return Pervasives.failwith("of_string");
}
else {
return (10 + c | 0) - /* "a" */97 | 0;
}
}
else if (c >= 71) {
return Pervasives.failwith("of_string");
}
else {
return (10 + c | 0) - /* "A" */65 | 0;
}
}
else if (c > 57 || c < 48) {
return Pervasives.failwith("of_string");
}
else {
return c - /* "0" */48 | 0;
}
};
var match = divrem_u(Rep[/* minus_one */2], ten);
var max_lower = match[1];
var max_upper = match[0];
var of_string = function (s) {
var len = s.length;
var parse_int = function (i) {
$$require(+((len - i | 0) > 0));
if ((i + 2 | 0) <= len && Caml_string.get(s, i) === /* "0" */48 && Caml_string.get(s, i + 1 | 0) === /* "x" */120) {
var _i = i + 2 | 0;
var _num = Rep[/* zero */0];
while(true) {
var num = _num;
var i$1 = _i;
if (i$1 === len) {
return num;
}
else {
var digit = Curry._1(Rep[/* of_int */18], hex_digit(Caml_string.get(s, i$1)));
$$require(le_u(num, shr_u(Rep[/* minus_one */2], Curry._1(Rep[/* of_int */18], 4))));
_num = Curry._2(Rep[/* logor */13], Curry._2(Rep[/* shift_left */15], num, 4), digit);
_i = i$1 + 1 | 0;
continue ;
}
};
}
else {
var _i$1 = i;
var _num$1 = Rep[/* zero */0];
while(true) {
var num$1 = _num$1;
var i$2 = _i$1;
if (i$2 === len) {
return num$1;
}
else {
var digit$1 = Curry._1(Rep[/* of_int */18], dec_digit(Caml_string.get(s, i$2)));
$$require(lt_u(num$1, max_upper) || Caml_obj.caml_equal(num$1, max_upper) && le_u(digit$1, max_lower));
_num$1 = Curry._2(Rep[/* add */6], Curry._2(Rep[/* mul */8], num$1, ten), digit$1);
_i$1 = i$2 + 1 | 0;
continue ;
}
};
}
};
$$require(+(len > 0));
var match = Caml_string.get(s, 0);
var switcher = match - 43 | 0;
if (switcher > 2 || switcher < 0) {
return parse_int(0);
}
else {
switch (switcher) {
case 0 :
return parse_int(1);
case 1 :
return parse_int(0);
case 2 :
var n = parse_int(1);
$$require(Caml_obj.caml_greaterequal(Curry._2(Rep[/* sub */7], n, Rep[/* one */1]), Rep[/* minus_one */2]));
return Curry._1(Rep[/* neg */5], n);
}
}
};
var of_string_s = function (s) {
var n = of_string(s);
$$require(+(Caml_string.get(s, 0) === /* "-" */45) || Caml_obj.caml_greaterequal(n, Rep[/* zero */0]));
return n;
};
var of_string_u = function (s) {
var n = of_string(s);
$$require(+(Caml_string.get(s, 0) !== /* "+" */43 && Caml_string.get(s, 0) !== /* "-" */45));
return n;
};
return /* module */[
/* of_bits */of_bits,
/* to_bits */to_bits,
/* zero */zero,
/* add */add,
/* sub */sub,
/* mul */mul,
/* div_s */div_s,
/* div_u */div_u,
/* rem_s */rem_s,
/* rem_u */rem_u,
/* and_ */and_,
/* or_ */or_,
/* xor */xor,
/* shl */shl,
/* shr_s */shr_s,
/* shr_u */shr_u,
/* rotl */rotl,
/* rotr */rotr,
/* clz */clz,
/* ctz */ctz,
/* popcnt */popcnt,
/* eqz */eqz,
/* eq */eq,
/* ne */ne,
/* lt_s */lt_s,
/* lt_u */lt_u,
/* le_s */le_s,
/* le_u */le_u,
/* gt_s */gt_s,
/* gt_u */gt_u,
/* ge_s */ge_s,
/* ge_u */ge_u,
/* of_int_s */of_int_s,
/* of_int_u */of_int_u,
/* of_string_s */of_string_s,
/* of_string_u */of_string_u,
/* of_string */of_string,
/* to_string_s */to_string_s,
/* to_string_u */to_string_u
];
}
exports.Make = Make;
/* No side effect */
//////// end of int.js ////////
    return exports;
  };
_registry['lexer'] = function() {
    let exports = {};
//////// start of lexer.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var F32 = require("./f32");
var F64 = require("./f64");
var I32 = require("./i32");
var I64 = require("./i64");
var Lib = require("./lib");
var Char = require("bs-platform/lib/js/char");
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var Buffer = require("bs-platform/lib/js/buffer");
var Lexing = require("bs-platform/lib/js/lexing");
var Script = require("./script");
var Source = require("./source");
var $$String = require("bs-platform/lib/js/string");
var Operators = require("./operators");
var Caml_format = require("bs-platform/lib/js/caml_format");
var Caml_string = require("bs-platform/lib/js/caml_string");
var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions");
function convert_pos(pos) {
return /* record */[
/* file */pos[/* pos_fname */0],
/* line */pos[/* pos_lnum */1],
/* column */pos[/* pos_cnum */3] - pos[/* pos_bol */2] | 0
];
}
function region(lexbuf) {
var left = convert_pos(Lexing.lexeme_start_p(lexbuf));
var right = convert_pos(Lexing.lexeme_end_p(lexbuf));
return /* record */[
/* left */left,
/* right */right
];
}
function error(lexbuf, msg) {
throw [
Script.Syntax,
region(lexbuf),
msg
];
}
function error_nest(start, lexbuf, msg) {
lexbuf[/* lex_start_p */10] = start;
return error(lexbuf, msg);
}
function text(s) {
var b = Buffer.create(s.length);
var i = 1;
while(i < (s.length - 1 | 0)) {
var c;
if (Caml_string.get(s, i) !== /* "\\" */92) {
c = Caml_string.get(s, i);
}
else {
i = i + 1 | 0;
var d = Caml_string.get(s, i);
var exit = 0;
if (d >= 92) {
if (d !== 110) {
if (d !== 116) {
if (d >= 93) {
exit = 1;
}
else {
c = /* "\\" */92;
}
}
else {
c = /* "\t" */9;
}
}
else {
c = /* "\n" */10;
}
}
else if (d !== 34) {
if (d !== 39) {
exit = 1;
}
else {
c = /* "'" */39;
}
}
else {
c = /* "\"" */34;
}
if (exit === 1) {
i = i + 1 | 0;
c = Char.chr(Caml_format.caml_int_of_string("0x" + ($$String.make(1, d) + $$String.make(1, Caml_string.get(s, i)))));
}
}
Buffer.add_char(b, c);
i = i + 1 | 0;
};
return Buffer.contents(b);
}
function value_type(param) {
switch (param) {
case "f32" :
return /* F32Type */2;
case "f64" :
return /* F64Type */3;
case "i32" :
return /* I32Type */0;
case "i64" :
return /* I64Type */1;
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"text/lexer.mll",
45,
9
]
];
}
}
function intop(t, i32, i64) {
switch (t) {
case "i32" :
return i32;
case "i64" :
return i64;
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"text/lexer.mll",
51,
9
]
];
}
}
function floatop(t, f32, f64) {
switch (t) {
case "f32" :
return f32;
case "f64" :
return f64;
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"text/lexer.mll",
57,
9
]
];
}
}
function numop(t, i32, i64, f32, f64) {
switch (t) {
case "f32" :
return f32;
case "f64" :
return f64;
case "i32" :
return i32;
case "i64" :
return i64;
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"text/lexer.mll",
65,
9
]
];
}
}
function memsz(sz, m8, m16, m32) {
switch (sz) {
case "16" :
return m16;
case "32" :
return m32;
case "8" :
return m8;
default:
throw [
Caml_builtin_exceptions.assert_failure,
[
"text/lexer.mll",
72,
9
]
];
}
}
function ext(e, s, u) {
var switcher = e - 115 | 0;
if (switcher > 2 || switcher < 0) {
throw [
Caml_builtin_exceptions.assert_failure,
[
"text/lexer.mll",
78,
9
]
];
}
else {
switch (switcher) {
case 0 :
return s;
case 1 :
throw [
Caml_builtin_exceptions.assert_failure,
[
"text/lexer.mll",
78,
9
]
];
case 2 :
return u;
}
}
}
var opt = Lib.Option[/* get */0];
var __ocaml_lex_tables = /* record */[
/* lex_base */"\0\0o\xffp\xffq\xffr\xff\x01\0U\0\x07\0\x1b\0\x05\0o\0o\0t\0\x06\0j\0\x0e\0k\0y\0\x10\0y\0s\0\xb4\0\x01\x01z\0\xbe\0\xc5\0\x04\x01\x1a\x01\xfe\xff\x02\0s\xff\x13\0<\x01R\x01x\x01\"\0\x8f\x01\xd5\x01\x0e\x01\xee\x01/\x02>\x02U\x02\x96\x02\xa0\x02O\0D\0\xac\x02\xc2\x02\xe7\x02\0\x03&\x03L\x03z\0|\0~\0\x86\0|\0y\0\xfb\xff\x85\0\0\0\x0f\0\x87\0r\x03\x98\x03\xb1\0\xe8\xff\r\0\x10\0\xee\0\xad\0\xb6\0\xbb\0\xc2\0\x82\xff\xb4\0x\xff\0\0\x9c\x02\xb8\0\xbb\0\xf1\0\xca\0\xbf\0\xc2\0\xe3\0\xf2\0\xef\0\xe4\0\xf8\0\xeb\0\xf3\0*\x01\n\x01\xe6\0\xe8\0\xf5\0\xf7\0\xf7\0\xf5\xff\xd7\xff\xd6\xff\0\0\x01\0\x16\x01\x14\x01j\x01\x1c\0\x1a\0\x1b\x01\b\x01\xdb\xff\x19\x01\xb3\xff\xb4\xff'\x01\xb1\xff\xb2\xff3\x01\x1a\x01\x1e\x01\x1e\x01,\x01\xae\x01\x1f\0&\0\xda\xff\xcc\xffA\x01\xc3\xffV\x01\xc1\xff\xc2\xff3\x01A\x019\x01>\x01\xd5\xfff\x01h\x01\xcd\xff\xc6\xffa\x01\xcb\xffX\x01p\x01c\x01\xc9\xff\xca\xffc\x01w\x01t\x01\x84\x01r\x01\xc7\xff\xc8\xffu\x01\x85\x01y\x01|\x01{\x01\x89\x01{\x01\0\0\x90\x01*\0,\0\x97\xff\x8b\x01\xbf\xff\xc0\xff\xc5\xff\x86\x01\xc4\xff\x7f\x01\xb7\xff\xb5\xff\x9b\x01\x9c\x01\x89\x01\xaf\xff\xb0\xff\x9c\x01\xad\xff\xae\xff\xa3\x01\xa0\x01\xe3\x01\xaa\x01\xde\x01\xe1\x01\xa6\xff\xa8\x01\xba\x01\xc6\x01\xcb\x01\xb8\x01\xfd\x01\xff\x01\xcf\x01\t\x02\t\x02\f\x02\xa1\xff\x9f\xff\xda\x01\x0e\x02\x0e\x02\x11\x02\xa0\xff\x9e\xff\x18\x02~\x03\xd6\x01\xe6\x01\xdf\x01\xdb\x01\xd6\x01\xe8\x01\xe4\x01\xe7\x01\xe6\x01\xf4\x01\xe6\x01,\x02\xf6\x01'\x026\x02\x96\xff\xf8\x01\b\x02\n\x02\x15\x02\x1b\x02\b\x02M\x02O\x02&\x02]\x02_\x02\xa5\xff)\x02`\x02b\x02\xa4\xff&\x02*\x02)\x02\x86\xff.\x02\xf2\xff\xf8\xff\xf9\xff\xfa\xff\xd1\x03F\x04\xf7\xff9\x04\xa4\x047\x02r\x02u\x02z\x02\xb7\x03D\x02H\x029\x02F\x02K\x02>\x02E\x02Q\x02M\x02M\x02\xbd\x03\x97\x02T\x02x\x02F\x02t\x02^\x02R\x02g\x02\x8a\x02x\x02\xbd\x02\xbf\x02\x86\x02\xcf\x02\xca\x02\xd2\x02\x9d\xff\x9b\xff\xa4\x02\xdf\x02\xe2\x02\xef\x02\x9c\xff\x9a\xff\xaf\x02\xba\x02\xbd\x02\xb7\x02\xb8\xff\xba\x02\xd1\xff\xa9\xff\xaa\xff\xce\x02\xd7\x02\xdd\xff\xda\x02\xcb\x02\xcf\x02\xcd\x02\xdb\x02\xdc\xff\xd3\x02\xd2\xff\xbd\xff\xee\x02\xdc\x02\xd4\xff\xeb\x02\xdf\x02\xec\x02\xce\xff\t\x03\xfb\x02\xd3\xff\xbe\xff\0\x03\x02\x03\0\x03\xd0\xff\xfe\x02\x06\x03\x12\x03\xcf\xff\xfe\x02\t\x03\f\x03\xbc\xff\xba\xff\xb9\xff\f\x03\x05\x03\xbb\xff\x17\x03\x1f\x03/\x03f\x031\x03b\x03e\x03\xa3\xff\xac\xff\xa7\xff\xa8\xff1\x03-\x03(\x038\x03,\x03/\x03.\x03<\x038\x03\x8a\x03Q\x03\x88\x03\x8b\x03\x99\xff\x90\x03\x1f\x04Z\x03N\x03X\x03S\x03V\x03U\x03Q\x03a\x03\x98\x03l\x03\xad\x03\xb2\x03\xa2\xff}\x03y\x03t\x03\x84\x03}\x03\x84\x03\x83\x03\x92\x03\x8b\x03\xd1\x03\xa2\x03\xd6\x03\xd9\x03\x98\xff\xab\x03\x92\xff\x9c\x03\xa7\x03\x98\x03\xb3\x03\xaa\x03\xb2\x03\xbe\x03\xf4\xff\xbf\x03\xb9\x03\xeb\x03\x97\x04\xa2\x04\xac\x04\xb6\x04\xdc\x04\xc9\x03\xbd\x03\xbc\x03\xd9\x03\xc0\x04\xc1\x03\xc8\x03\xd6\x03\xce\x03\xce\x03\xd0\x03\xdf\x03\xd5\x03\xdc\x03\xd4\x03\xd2\x03\xf9\x03\x02\x04\x0f\x04\x80\xff\xfe\x03\x14\x04\n\x04\x0e\x04\x14\x04\x7f\xff\x13\x04\r\x04(\x04\x1f\x04\x1b\x04\x14\x04-\x04$\x04+\x041\x04~\xff*\x04.\x04*\x04.\x04?\x04?\x047\x04_\x04}\xff|\x04|\x04\x80\x04\x85\x04\x95\x04\x87\x04\x95\x04\x8f\x04{\xff\x9d\x04\x8f\x04z\xff\x99\x04\xa1\x04\x8e\x04\x91\x04\x91\x04\x9d\x04\x98\x04\x9a\x04y\xff\x9c\x04\xa6\x04\x97\x04\xf3\xff\xa1\x04\xba\x04\xc2\x04\x8c\xff\xb9\x04\xb8\x04\xb2\x04\x8a\xff\xba\x04\xc9\x04\xce\x04\xcd\x04\xc9\x04\xd5\x04\xd5\x04\xcc\x04\xd4\x04\xf1\xff\xc6\x04\xcc\x04\xcc\x04\xf0\xff\xe2\x04\x88\xff\xe5\x04\xd6\x04\xe4\x04\xdd\x04\xef\xff\xe0\x04\xe9\x04\xe5\x04\xeb\xff\xea\x04\xe1\x04\xe9\x04\xea\xff\xec\x04\xef\x04\xe1\x04\xee\xff\xe6\x04\x8e\xff\xe3\x04\xf0\x04\xf2\x04\xed\xff\xea\x04\xf3\x04\xe6\xff\x89\xff\xea\x04\xe8\x04\xe8\x04\x85\xff\xf6\x04\xf5\x04\xea\x04\xeb\x04\xef\x04\xf4\x04\xe9\xff\xf8\x04\xf1\x04\x8f\xff\xf3\x04\xf3\x04\x03\x05\xf9\x04\x83\xff\n\x05\xfd\x04\t\x05\n\x05\x02\x05\xe7\xff\x12\x05\x06\x05\x04\x05\x11\x05\x14\x05\n\x05\xe0\xff\x12\x05\x93\xff\f\x05\x14\x05\x8b\xff\b\x05\x1a\x05\x10\x05\x1e\x05\x19\x05\x1c\x05\f\x05\xe5\xff\x1a\x05\x16\x05\x14\x05\"\x05&\x05\x1c\x05\xe1\xff\x1a\x05(\x05*\x05 \x05\xde\xff\x1b\x05\x1a\x05\x91\xff&\x05 \x05\x1d\x05\x84\xff \x05'\x05(\x056\x05-\x05)\x054\x050\x05(\x056\x059\x05)\x05\xe3\xff,\x05:\x052\x05-\x05C\x056\x05@\x059\x058\x056\x050\x05\x95\xff;\x05<\x058\x05N\x05G\x05C\x05A\x05N\x05Q\x05H\x05\xe2\xffF\x05T\x05V\x05L\x05\xdf\xffB\x05[\x05N\x05W\x05P\x05O\x05M\x05G\x05\x94\xff_\x05a\x05W\x05\x8d\xffP\x05_\x05S\x05b\x05T\x05\x8c\x05\x9a\x05\xa4\x05\xae\x05\xb8\x05\xcf\x05\x82\x05~\x05\x80\x05w\xff\x83\x05\x95\x05\x8a\x05\x90\xff\x15\x06\xee\x05t\xffu\xff\x02\x06\xfb\xff\xfc\xff\xfd\xff\xce\x05\x01\0\xff\xff\xfe\xff",
/* lex_backtrk */"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x90\0\x02\0\x02\0\xff\xff\0\0\xff\xff\xff\xff\x04\0\xff\xff\x02\0\xff\xff\xff\xff\x02\0\xff\xff\x02\0\x04\0\xff\xff\x04\0\x04\0\xff\xff\xff\xff\xff\xff\x03\0\x03\0\xff\xff\x03\0\x03\0\x03\0\xff\xff\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\xff\xff\xff\xff\xff\xff\x04\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\"\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff#\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffI\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\b\0\b\0\xff\xff\xff\xff\xff\xff\t\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffT\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\t\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'\0'\0\xff\xff'\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x83\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x13\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x1b\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff~\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffx\0\xff\xff&\0&\0\xff\xff&\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x89\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x04\0\x04\0\xff\xff\xff\xff",
/* lex_default */"\x01\0\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\0\0\0\0\xff\xff\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\0\0\0\0\0\0\x01\x01\0\x01\0\0\xff\xff\0\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\xff\xff\xa9\x02\0\0\0\0\xad\x02\0\0\0\0\0\0\xff\xff\xff\xff\0\0\0\0",
/* lex_trans */'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x04\0\0\0\x16\0\0\0\x06\0\0\0\0\0\0\0\x1d\0\x1c\0\xb2\x02\x19\0\0\0\x19\0O\0\xa5\0\x1b\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0>\0\x05\0\xa9\x02\x1e\0,\0?\0,\0\xd4\0N\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0&\0n\0&\0n\0\x7f\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0\x7f\0\xa7\0\xa8\0t\0q\0\x14\0\x10\0\n\0\x11\0\x0e\0\x15\0\t\0\xa4\x02\x18\0z\x02#\x02\x0f\0\x13\0\x17\0\b\0\x07\0x\x02\r\0\x0b\0\f\0\x12\0\xa8\x02y\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\x11\x02\xf4\x01\xa8\x02\xa8\x02\x96\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\x95\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02<\0\xa8\x025\0\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02`\x02\xa8\x02D\x02\xa8\x02F\x022\x02\x18\x02\x05\x02\x19\x024\x02\xfe\x01<\x005\x02\x04\x02\xe8\x01\x96\x016\0\x97\x01\x17\x02E\x02_\x027\0\x95\x01\x06\x01\xe9\x01\xfa\0\x05\x01\xff\x018\x003\x02\xea\x019\0:\0E\0;\0=\0D\x000\0/\0/\0/\0/\0/\0/\0/\0/\0/\0@\0\x02\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfd\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xf6\0L\0\xfe\0C\0I\0J\0K\0M\0\x04\x01\xc1\0B\0F\0\xba\0.\0\xb1\0\xaf\0\xad\0 \0-\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0 \0\x1f\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\x006\0\xac\0\xb2\0\x97\0\x91\0\x8f\0\x86\0w\0\x8c\0\xff\0G\0\x1f\0f\0\x96\0e\0b\0H\0\xb3\0\x8b\0y\0x\0\x1f\0c\0d\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0`\0j\0k\0a\0o\0p\0\x80\0p\0_\0\x1f\0\xfc\0\x1f\0"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0s\0z\0r\0g\0{\0|\0!\0"\0"\0"\0"\0"\0"\0i\0v\0m\0u\0l\0h\0\x82\0\x83\0\x1f\0n\0\x87\0\x88\0\x81\0$\0\x89\0"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0\x8a\0"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0%\0"\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0\x85\0\x8e\0\x84\0\x8d\0\x90\0\x92\0\x93\0$\0$\0$\0$\0)\0$\0\x95\0\xa9\0\x94\0"\0"\0"\0"\0%\0"\0~\0\x98\0}\0\x9d\0\x9a\0\x99\0\x9c\0\x7f\0\x9b\0#\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0$\0$\0$\0$\0)\0$\0\xa6\0\xab\0\xae\0\xb0\0\xb7\0\xb4\0\xb6\0\xaa\0\xb5\0#\0&\0\xfd\0&\0$\0\xbb\0\'\0\'\0\'\0\'\0\'\0\'\0\'\0\'\0\'\0\'\0\xb9\0\xbc\0\xb8\0\xbd\0\xbe\0\xbf\0\xc0\0"\0"\0"\0"\0%\0"\0$\0\xc2\0\'\0\'\0\'\0\'\0\'\0\'\0\'\0\'\0\'\0\'\0\xc3\0\xc4\0\xc5\0\xc7\0\xce\0\xc6\0\xc8\0"\0"\0"\0"\0%\0"\0\xc9\0"\0"\0"\0"\0%\0"\0\xcb\0\xcd\0\xcc\0\xca\0\xcf\0\xd1\0\xd3\0\xd2\0\xd0\0#\0\xd5\0\xaf\0\xd9\0\xda\0\xdb\0\xd8\0\x99\0\xdc\0\xe6\0"\0"\0"\0"\0%\0"\0\x96\0\xdd\0\xde\0\xdf\0\xe0\0\xe1\0\xe2\0\xe3\0\xe4\0#\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0&\0\xe5\0&\0\xe7\0\xe8\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0\xe9\0\xea\0\xeb\0\xed\0\xf2\0\xec\0\xee\0$\0$\0$\0$\0)\0$\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0\xef\0\xf0\0\xf1\0\xf3\0\xf4\0\xf5\0\xf7\0$\0$\0$\0$\0)\0$\0\xf8\0\xf9\0\xfb\0$\0$\0$\0$\0)\0$\0\x93\x01v\x01\x07\x01\b\x01h\x01e\x01Z\x01T\x01f\x01#\0[\x01P\x01L\x01A\x01I\x01U\x01H\x01$\0$\0$\0$\0)\0$\0g\x011\x019\x01,\x01V\x01:\x018\x01\x1a\x01\x1b\x01#\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0 \0\x1c\x01/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0\x18\x01c\0\x17\x01\x1d\x01\x19\x01\x1f\x01&\x01\x1e\x01 \x01!\x01 \0\x1f\0/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0\x15\x01Z\0%\x01^\0X\0T\0#\x01R\0$\x01"\x01\x16\x01\x1f\0]\0Y\0S\0V\0[\0\'\x01W\0\\\0P\0\x1f\0)\x01Q\0U\0(\x01+\x012\x002\x002\x002\x002\x002\x002\x002\x002\x002\0*\x01-\x01.\x01/\x010\x012\x01\x1f\x002\x002\x002\x002\x002\x002\0$\x006\x012\x002\x002\x002\x002\x002\x002\x002\x002\x002\x001\x007\x01@\x01>\x01;\x01<\x01=\x012\x002\x002\x002\x003\x002\0?\x012\x002\x002\x002\x002\x002\0D\x01B\x01E\x01&\0F\x01&\0$\0C\x014\x004\x004\x004\x004\x004\x004\x004\x004\x004\0G\x012\x002\x002\x002\x003\x002\x002\x002\x002\x002\x003\x002\0K\x01J\x01M\x01#\0N\x01O\x01Q\x01R\x01S\x01Y\x01X\x01W\x01]\x01$\0\\\x014\x004\x004\x004\x004\x004\x004\x004\x004\x004\0^\x012\x002\x002\x002\x003\x002\x002\x002\x002\x002\x003\x002\0_\x01`\x01a\x01#\0b\x01c\x01d\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01p\x01A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0q\x012\x002\x002\x002\x003\x002\0A\0A\0A\0A\0A\0A\0r\x01s\x01t\x01#\0u\x01w\x01\x85\x01{\x01[\x01|\x01}\x01~\x01\x7f\x01\x80\x01\x81\x01A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0\x82\x01A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0Z\0\x83\x01^\0X\0\xd6\0\x84\x01R\0\x86\x01\x87\x01\x88\x01\x89\x01]\0Y\0S\0V\0[\0\x8a\x01\xd7\0\\\0P\0\x03\x01\x8b\x01\x8c\x01U\0\x8d\x01\x03\x01A\0A\0A\0A\0A\0A\0\x8e\x01\x8f\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x90\x01\x91\x01\x92\x01\x94\x01\xa5\x01\x9d\x01\x98\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x10\x01\x99\x01\x14\x01\f\x01\x0b\x01\x0f\x01\n\x01\x9a\x01\x9b\x01\x9c\x013\x01\x13\x01\r\x01\x11\x01\x9e\x01\x9f\x01\xa0\x01\t\x01\x12\x01\x0e\x015\x01\x03\x01\xa6\x01\xa7\x01\xa8\x014\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\xa9\x01\xdf\x01\xdc\x01\xd3\x01\xca\x01\xbf\x01\xb9\x01\x03\x01\xb1\x01\xb2\x01\xb3\x01\xb4\x01\xb5\x01\x03\x01\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfd\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xb6\x01\xb7\x01\xfe\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\xb8\x01\xba\x01\xbb\x01\xbc\x01\xbd\x01\xbe\x01\xc0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\x10\x01\xc1\x01\x14\x01z\x01\x0b\x01\x0f\x01\n\x01\xc2\x01\xc3\x01\xc4\x01\xc5\x01\x13\x01\r\x01\x11\x01\xc6\x01y\x01\xc7\x01x\x01\x12\x01\x0e\x01\xc8\x01\xc9\x01\xcb\x01\xcc\x01\xcd\x01\xce\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\xcf\x01\xd0\x01\xff\0\xd1\x01\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfd\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xfc\0\xd2\x01\xfc\0\xfe\0\xa2\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xff\xff\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xd4\x01\xd5\x01\xd6\x01\xd7\x01\xd8\x01\xd9\x01\xda\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xdb\x01\xdd\x01\xde\x01\xff\0\xe0\x01\xe1\x01\xe2\x01\xe3\x01\xe4\x01\xe5\x01\xe6\x01\xe7\x01\xf0\x01\xec\x01\xeb\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xed\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xfc\0\xa3\x01\xaa\x01\xee\x01\xef\x01\xf1\x01\xaf\x01\xf2\x01\xf3\x01\xf5\x01\xb0\x01\xf6\x01\xf7\x01\xf8\x01\xf9\x01\xac\x01\xae\x01\xab\x01\xad\x01\xfa\x01\xfb\x01\xfc\x01\xfd\x01\x02\x02\0\x02\x01\x02\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\x03\x02\t\x02\x06\x02\xfd\0\x07\x02\b\x02\x0b\x02\r\x02\f\x02\x0e\x02\x0f\x02\x10\x02\x12\x02\x15\x02\x14\x02\x16\x02\x1f\x02\n\x02\x1b\x02\x1a\x02\x1e\x02\x1d\x02 \x02!\x02\x13\x02"\x02$\x02-\x02*\x02\'\x02(\x02)\x02\x1c\x02+\x02,\x02.\x02/\x020\x02%\x02&\x021\x02A\x02?\x028\x026\x027\x029\x02:\x02;\x02<\x02=\x02>\x02@\x02B\x02C\x02[\x02X\x02H\x02L\x02I\x02J\x02K\x02M\x02S\x02O\x02G\x02P\x02N\x02Q\x02R\x02T\x02U\x02V\x02W\x02Y\x02Z\x02\\\x02]\x02^\x02l\x02a\x02b\x02c\x02d\x02e\x02f\x02g\x02h\x02i\x02j\x02k\x02m\x02n\x02o\x02p\x02q\x02r\x02\xfd\0s\x02t\x02u\x02v\x02w\x02\x91\x02\x88\x02{\x02|\x02}\x02\x83\x02\x7f\x02\x80\x02\x81\x02~\x02\x82\x02\x84\x02\x85\x02\x86\x02\x87\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x8d\x02\x8e\x02\x8f\x02\x90\x02\x92\x02\x93\x02\x94\x02\xa0\x02\x97\x02\x98\x02\x99\x02\x9a\x02\x9b\x02\x9d\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\xa1\x02\xa2\x02\xa3\x02\xa5\x02\xa6\x02\xa7\x02\xaa\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\xb3\x02\0\0\0\0\xaf\x02\0\0\0\0\0\0\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\0\0\0\0\0\0\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9e\x02\0\0\0\0\0\0\xb0\x02\0\0\0\0\0\0\0\0\0\0\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\xa8\x02\0\0\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xb1\x02\0\0\xa8\x02\xa8\x02\0\0\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\0\0\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\0\0\xa8\x02\0\0\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\0\0\xa8\x02\0\0\xa8\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xab\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xae\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
/* lex_check */"\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\0\0\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\0\0\xff\xff\0\0\xff\xff\0\0\xff\xff\xff\xff\xff\xff\0\0\0\0\xb1\x02\0\0\xff\xff\0\0N\0\xa4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0\0\0\x05\0\x1d\0\x1f\0>\0\x1f\0D\0E\0\x1f\0\x1f\0\x1f\0\x1f\0\x1f\0\x1f\0\x1f\0\x1f\0\x1f\0\x1f\0#\0l\0#\0m\0}\0#\0#\0#\0#\0#\0#\0#\0#\0#\0#\0~\0\xa6\0\xa7\0g\0h\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x07\0\0\0\t\0\r\0\0\0\0\0\0\0\0\0\0\0\t\0\0\0\0\0\0\0\0\0\x06\0\t\0\x06\0\x06\0\x06\0\x06\0\x06\0\x0f\0\x12\0\x06\0\x06\0\b\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\b\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0-\0\x06\0.\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\n\0\x06\0\x0b\0\x06\0\x0b\0\f\0\x0e\0\x10\0\x0e\0\f\0\x11\0\x17\0\f\0\x10\0\x13\0\x14\x005\0\x14\0\x0e\0\x0b\0\n\x006\0\x14\0\x15\0\x13\0\x17\0\x15\0\x11\x007\0\f\0\x13\x008\x009\0\x18\0:\0<\0\x18\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0?\0\0\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0\x16\0B\0G\0\x16\0\x18\0H\0I\0J\0L\0\x15\0P\0\x18\0\x18\0Q\0\x19\0S\0T\0U\0\x1a\0\x19\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0\x1a\0&\0&\0&\0&\0&\0&\0&\0&\0&\0&\0\x1b\0\x1a\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0\x1b\0F\0V\0R\0W\0X\0Y\0[\0\\\0Z\0\x16\0F\0\x1b\0_\0W\0`\0a\0F\0R\0Z\0\\\0\\\0\x1a\0b\0c\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0^\0i\0j\0^\0n\0o\0x\0o\0^\0\x1b\0\x16\0 \0!\0!\0!\0!\0!\0!\0!\0!\0!\0!\0q\0y\0q\0]\0z\0{\0\x1b\0!\0!\0!\0!\0!\0!\0]\0t\0k\0t\0k\0]\0w\0\x81\0 \0k\0\x86\0\x87\0w\0\"\0\x88\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\"\0\x89\0!\0!\0!\0!\0!\0!\0\"\0\"\0\"\0\"\0\"\0\"\0$\0$\0$\0$\0$\0$\0$\0$\0$\0$\0\x83\0\x8b\0\x83\0\x8c\0\x8f\0\x91\0\x92\0$\0$\0$\0$\0$\0$\0\x93\0\x96\0\x93\0\"\0\"\0\"\0\"\0\"\0\"\0|\0\x97\0|\0\x98\0\x99\0\x97\0\x9a\0|\0\x9a\0\"\0\x9d\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0$\0$\0$\0$\0$\0$\0\xa5\0\xa9\0\xad\0\xaf\0\xb2\0\xb3\0\xb4\0\xa9\0\xb4\0$\0%\0\x16\0%\0%\0\xba\0%\0%\0%\0%\0%\0%\0%\0%\0%\0%\0\xb7\0\xbb\0\xb7\0\xbc\0\xbd\0\xbe\0\xbf\0%\0%\0%\0%\0%\0%\0'\0\xc1\0'\0'\0'\0'\0'\0'\0'\0'\0'\0'\0\xc2\0\xc3\0\xc4\0\xc5\0\xc6\0\xc5\0\xc7\0'\0'\0'\0'\0'\0'\0\xc8\0%\0%\0%\0%\0%\0%\0\xc9\0\xca\0\xcb\0\xc9\0\xce\0\xcf\0\xd0\0\xd1\0\xcf\0%\0\xd4\0\xd6\0\xd8\0\xd9\0\xda\0\xd7\0\xd8\0\xdb\0\xd6\0'\0'\0'\0'\0'\0'\0\xd7\0\xdc\0\xdd\0\xde\0\xdf\0\xe0\0\xe1\0\xe2\0\xe3\0'\0(\0(\0(\0(\0(\0(\0(\0(\0(\0(\0)\0\xe4\0)\0\xe6\0\xe7\0)\0)\0)\0)\0)\0)\0)\0)\0)\0)\0\xe8\0\xe9\0\xea\0\xeb\0\xec\0\xeb\0\xed\0)\0)\0)\0)\0)\0)\0*\0*\0*\0*\0*\0*\0*\0*\0*\0*\0\xee\0\xef\0\xf0\0\xf2\0\xf3\0\xf4\0\xf6\0*\0*\0*\0*\0*\0*\0\xf7\0\xf8\0\xfa\0)\0)\0)\0)\0)\0)\0\x04\x01\x05\x01\x06\x01\x07\x01\t\x01\x0b\x01\f\x01\r\x01\n\x01)\0\f\x01\x0e\x01\x0f\x01\x11\x01\x10\x01\r\x01\x10\x01*\0*\0*\0*\0*\0*\0\n\x01\x15\x01\x12\x01\x17\x01\r\x01\x12\x01\x12\x01\x19\x01\x1a\x01*\0+\0+\0+\0+\0+\0+\0+\0+\0+\0+\0,\0,\0,\0,\0,\0,\0,\0,\0,\0,\0/\0\x1b\x01/\0/\0/\0/\0/\0/\0/\0/\0/\0/\0\x16\x01\x18\x01\x16\x01\x1c\x01\x18\x01\x1d\x01\x1e\x01\x1d\x01\x1f\x01 \x010\0/\x000\x000\x000\x000\x000\x000\x000\x000\x000\x000\0\x14\x01O\0\"\x01O\0O\0O\0!\x01O\0#\x01!\x01\x14\x010\0O\0O\0O\0O\0O\0&\x01O\0O\0O\0/\0'\x01O\0O\0'\x01(\x011\x001\x001\x001\x001\x001\x001\x001\x001\x001\0)\x01,\x01-\x01.\x01/\x011\x010\x001\x001\x001\x001\x001\x001\x002\x005\x012\x002\x002\x002\x002\x002\x002\x002\x002\x002\x000\x006\x018\x019\x01:\x01;\x01<\x012\x002\x002\x002\x002\x002\0>\x011\x001\x001\x001\x001\x001\0B\x01A\x01D\x013\0E\x013\x003\0A\x013\x003\x003\x003\x003\x003\x003\x003\x003\x003\0F\x012\x002\x002\x002\x002\x002\x003\x003\x003\x003\x003\x003\0H\x01I\x01L\x012\0M\x01N\x01P\x01Q\x01R\x01T\x01U\x01V\x01Z\x014\0[\x014\x004\x004\x004\x004\x004\x004\x004\x004\x004\0]\x013\x003\x003\x003\x003\x003\x004\x004\x004\x004\x004\x004\0^\x01_\x01`\x013\0a\x01b\x01c\x01h\x01i\x01j\x01k\x01l\x01m\x01n\x01o\x01@\0@\0@\0@\0@\0@\0@\0@\0@\0@\0p\x014\x004\x004\x004\x004\x004\0@\0@\0@\0@\0@\0@\0q\x01r\x01s\x014\0t\x01v\x01x\x01y\x01z\x01{\x01|\x01}\x01~\x01\x7f\x01\x80\x01A\0A\0A\0A\0A\0A\0A\0A\0A\0A\0\x81\x01@\0@\0@\0@\0@\0@\0A\0A\0A\0A\0A\0A\0\xd5\0\x82\x01\xd5\0\xd5\0\xd5\0\x83\x01\xd5\0\x85\x01\x86\x01\x87\x01\x88\x01\xd5\0\xd5\0\xd5\0\xd5\0\xd5\0\x89\x01\xd5\0\xd5\0\xd5\0\xff\0\x8a\x01\x8b\x01\xd5\0\x8c\x01\xff\0A\0A\0A\0A\0A\0A\0\x8d\x01\x8e\x01\xff\0\xff\0\xff\0\xff\0\xff\0\xff\0\xff\0\xff\0\xff\0\xff\0\x8f\x01\x90\x01\x91\x01\x93\x01\x95\x01\x96\x01\x97\x01\xff\0\xff\0\xff\0\xff\0\xff\0\xff\0\b\x01\x98\x01\b\x01\b\x01\b\x01\b\x01\b\x01\x99\x01\x9a\x01\x9b\x01\x13\x01\b\x01\b\x01\b\x01\x9d\x01\x9e\x01\x9f\x01\b\x01\b\x01\b\x01\x13\x01\xff\0\xa5\x01\xa6\x01\xa7\x01\x13\x01\xff\0\xff\0\xff\0\xff\0\xff\0\xff\0\xa8\x01\xaa\x01\xab\x01\xac\x01\xad\x01\xae\x01\xaf\x01\xff\0\xb0\x01\xb1\x01\xb2\x01\xb3\x01\xb4\x01\xff\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\xb5\x01\xb6\x01\0\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\xb7\x01\xb9\x01\xba\x01\xbb\x01\xbc\x01\xbd\x01\xbf\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01w\x01\xc0\x01w\x01w\x01w\x01w\x01w\x01\xc1\x01\xc2\x01\xc3\x01\xc4\x01w\x01w\x01w\x01\xc5\x01w\x01\xc6\x01w\x01w\x01w\x01\xc7\x01\xc8\x01\xca\x01\xcb\x01\xcc\x01\xcd\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\x02\x01\xce\x01\xcf\x01\0\x01\xd0\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\x03\x01\xd1\x01\0\x01\x03\x01\xa0\x01\xa0\x01\xa0\x01\xa0\x01\xa0\x01\xa0\x01\xa0\x01\xa0\x01\xa0\x01\xa0\x01\xff\0\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa1\x01\xa2\x01\xa2\x01\xa2\x01\xa2\x01\xa2\x01\xa2\x01\xa2\x01\xa2\x01\xa2\x01\xa2\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xd3\x01\xd4\x01\xd5\x01\xd6\x01\xd7\x01\xd8\x01\xd9\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xda\x01\xdc\x01\xdd\x01\x03\x01\xdf\x01\xe0\x01\xe1\x01\xe2\x01\xe3\x01\xe4\x01\xe5\x01\xe6\x01\xe8\x01\xe9\x01\xea\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xec\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa3\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\x03\x01\xa2\x01\xa9\x01\xed\x01\xee\x01\xf0\x01\xa9\x01\xf1\x01\xf2\x01\xf4\x01\xa9\x01\xf5\x01\xf6\x01\xf7\x01\xf8\x01\xa9\x01\xa9\x01\xa9\x01\xa9\x01\xf9\x01\xfa\x01\xfb\x01\xfc\x01\xfe\x01\xff\x01\0\x02\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\xa4\x01\x02\x02\x04\x02\x05\x02\0\x01\x06\x02\x07\x02\t\x02\n\x02\x0b\x02\r\x02\x0e\x02\x0f\x02\x11\x02\x12\x02\x13\x02\x15\x02\x17\x02\t\x02\x18\x02\x19\x02\x1b\x02\x1c\x02\x1f\x02 \x02\x11\x02!\x02#\x02$\x02%\x02&\x02'\x02(\x02\x18\x02*\x02+\x02-\x02.\x02/\x02#\x02#\x020\x022\x023\x024\x025\x026\x028\x029\x02:\x02;\x02<\x02=\x02?\x02A\x02B\x02D\x02E\x02F\x02G\x02H\x02I\x02J\x02L\x02M\x02N\x02F\x02O\x02L\x02P\x02Q\x02S\x02T\x02U\x02V\x02X\x02Y\x02[\x02\\\x02]\x02_\x02`\x02a\x02b\x02c\x02d\x02e\x02f\x02g\x02h\x02i\x02j\x02l\x02m\x02n\x02o\x02p\x02q\x02\x03\x01r\x02s\x02t\x02u\x02v\x02x\x02y\x02z\x02{\x02|\x02}\x02~\x02\x7f\x02\x80\x02|\x02\x81\x02\x83\x02\x84\x02\x85\x02\x86\x02\x88\x02\x89\x02\x8a\x02\x8b\x02\x8c\x02\x8d\x02\x8e\x02\x8f\x02\x91\x02\x92\x02\x93\x02\x95\x02\x96\x02\x97\x02\x98\x02\x99\x02\x9a\x02\x9b\x02\x9b\x02\x9b\x02\x9b\x02\x9b\x02\x9b\x02\x9b\x02\x9b\x02\x9b\x02\x9b\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9c\x02\x9d\x02\x9d\x02\x9d\x02\x9d\x02\x9d\x02\x9d\x02\x9d\x02\x9d\x02\x9d\x02\x9d\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\xa0\x02\xa1\x02\xa2\x02\xa4\x02\xa5\x02\xa6\x02\xa9\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\xb0\x02\xff\xff\xff\xff\xac\x02\xff\xff\xff\xff\xff\xff\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\xff\xff\xff\xff\xff\xff\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\x9e\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9d\x02\xff\xff\xff\xff\xff\xff\xac\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\x9f\x02\xa8\x02\xff\xff\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xac\x02\xff\xff\xa8\x02\xa8\x02\xff\xff\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xff\xff\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xff\xff\xa8\x02\xff\xff\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xa8\x02\xff\xff\xa8\x02\xff\xff\xa8\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xa9\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xac\x02\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff",
/* lex_base_code */"",
/* lex_backtrk_code */"",
/* lex_default_code */"",
/* lex_trans_code */"",
/* lex_check_code */"",
/* lex_code */""
];
function token(lexbuf) {
var lexbuf$1 = lexbuf;
var ___ocaml_lex_state = 0;
while(true) {
var __ocaml_lex_state = ___ocaml_lex_state;
var __ocaml_lex_state$1 = Lexing.engine(__ocaml_lex_tables, __ocaml_lex_state, lexbuf$1);
if (__ocaml_lex_state$1 > 144 || __ocaml_lex_state$1 < 0) {
Curry._1(lexbuf$1[/* refill_buff */0], lexbuf$1);
___ocaml_lex_state = __ocaml_lex_state$1;
continue ;
}
else {
switch (__ocaml_lex_state$1) {
case 0 :
return /* LPAR */2;
case 1 :
return /* RPAR */3;
case 2 :
var s = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_curr_pos */5]);
return /* NAT */Block.__(0, [s]);
case 3 :
var s$1 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_curr_pos */5]);
return /* INT */Block.__(1, [s$1]);
case 4 :
var s$2 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_curr_pos */5]);
return /* FLOAT */Block.__(2, [s$2]);
case 5 :
var s$3 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_curr_pos */5]);
return /* TEXT */Block.__(3, [text(s$3)]);
case 6 :
return error(lexbuf$1, "unclosed text literal");
case 7 :
return error(lexbuf$1, "illegal control character in text literal");
case 8 :
return error_nest(Lexing.lexeme_end_p(lexbuf$1), lexbuf$1, "illegal escape");
case 9 :
var t = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* VALUE_TYPE */Block.__(5, [value_type(t)]);
case 10 :
var t$1 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* CONST */Block.__(10, [numop(t$1, function (s) {
var n = Curry._1(I32.of_string, s[/* it */1]);
return /* tuple */[
Operators.i32_const(Source.$at$at(n, s[/* at */0])),
/* I32 */Block.__(0, [n])
];
}, function (s) {
var n = Curry._1(I64.of_string, s[/* it */1]);
return /* tuple */[
Operators.i64_const(Source.$at$at(n, s[/* at */0])),
/* I64 */Block.__(1, [n])
];
}, function (s) {
var n = Curry._1(F32.of_string, s[/* it */1]);
return /* tuple */[
Operators.f32_const(Source.$at$at(n, s[/* at */0])),
/* F32 */Block.__(2, [n])
];
}, function (s) {
var n = Curry._1(F64.of_string, s[/* it */1]);
return /* tuple */[
Operators.f64_const(Source.$at$at(n, s[/* at */0])),
/* F64 */Block.__(3, [n])
];
})]);
case 11 :
return /* ANYFUNC */0;
case 12 :
return /* MUT */1;
case 13 :
return /* NOP */4;
case 14 :
return /* UNREACHABLE */24;
case 15 :
return /* DROP */5;
case 16 :
return /* BLOCK */6;
case 17 :
return /* LOOP */12;
case 18 :
return /* END */7;
case 19 :
return /* BR */13;
case 20 :
return /* BR_IF */14;
case 21 :
return /* BR_TABLE */15;
case 22 :
return /* RETURN */18;
case 23 :
return /* IF */8;
case 24 :
return /* THEN */9;
case 25 :
return /* ELSE */10;
case 26 :
return /* SELECT */11;
case 27 :
return /* CALL */16;
case 28 :
return /* CALL_INDIRECT */17;
case 29 :
return /* GET_LOCAL */19;
case 30 :
return /* SET_LOCAL */20;
case 31 :
return /* TEE_LOCAL */21;
case 32 :
return /* GET_GLOBAL */22;
case 33 :
return /* SET_GLOBAL */23;
case 34 :
var t$2 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* LOAD */Block.__(6, [(function(t$2){
return function (a, o) {
var partial_arg = Curry._2(opt, a, 2);
var partial_arg$1 = Curry._2(opt, a, 3);
var partial_arg$2 = Curry._2(opt, a, 2);
var partial_arg$3 = Curry._2(opt, a, 3);
return Curry._1(numop(t$2, function (param) {
return Operators.i32_load(partial_arg, param);
}, function (param) {
return Operators.i64_load(partial_arg$1, param);
}, function (param) {
return Operators.f32_load(partial_arg$2, param);
}, function (param) {
return Operators.f64_load(partial_arg$3, param);
}), o);
}
}(t$2))]);
case 35 :
var t$3 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* STORE */Block.__(7, [(function(t$3){
return function (a, o) {
var partial_arg = Curry._2(opt, a, 2);
var partial_arg$1 = Curry._2(opt, a, 3);
var partial_arg$2 = Curry._2(opt, a, 2);
var partial_arg$3 = Curry._2(opt, a, 3);
return Curry._1(numop(t$3, function (param) {
return Operators.i32_store(partial_arg, param);
}, function (param) {
return Operators.i64_store(partial_arg$1, param);
}, function (param) {
return Operators.f32_store(partial_arg$2, param);
}, function (param) {
return Operators.f64_store(partial_arg$3, param);
}), o);
}
}(t$3))]);
case 36 :
var t$4 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
var sz = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4] + 8 | 0, lexbuf$1[/* lex_curr_pos */5] - 2 | 0);
var s$4 = Lexing.sub_lexeme_char(lexbuf$1, lexbuf$1[/* lex_curr_pos */5] - 1 | 0);
if (t$4 === "i32" && sz === "32") {
error(lexbuf$1, "unknown operator");
}
return /* LOAD */Block.__(6, [(function(t$4,sz,s$4){
return function (a, o) {
return intop(t$4, Curry._1(memsz(sz, Curry._1(ext(s$4, Operators.i32_load8_s, Operators.i32_load8_u), Curry._2(opt, a, 0)), Curry._1(ext(s$4, Operators.i32_load16_s, Operators.i32_load16_u), Curry._2(opt, a, 1)), function () {
return Operators.unreachable;
}), o), Curry._1(memsz(sz, Curry._1(ext(s$4, Operators.i64_load8_s, Operators.i64_load8_u), Curry._2(opt, a, 0)), Curry._1(ext(s$4, Operators.i64_load16_s, Operators.i64_load16_u), Curry._2(opt, a, 1)), Curry._1(ext(s$4, Operators.i64_load32_s, Operators.i64_load32_u), Curry._2(opt, a, 2))), o));
}
}(t$4,sz,s$4))]);
case 37 :
var t$5 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
var sz$1 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4] + 9 | 0, lexbuf$1[/* lex_curr_pos */5]);
if (t$5 === "i32" && sz$1 === "32") {
error(lexbuf$1, "unknown operator");
}
return /* STORE */Block.__(7, [(function(t$5,sz$1){
return function (a, o) {
var partial_arg = Curry._2(opt, a, 0);
var partial_arg$1 = Curry._2(opt, a, 1);
var partial_arg$2 = Curry._2(opt, a, 0);
var partial_arg$3 = Curry._2(opt, a, 1);
var partial_arg$4 = Curry._2(opt, a, 2);
return intop(t$5, Curry._1(memsz(sz$1, function (param) {
return Operators.i32_store8(partial_arg, param);
}, function (param) {
return Operators.i32_store16(partial_arg$1, param);
}, function () {
return Operators.unreachable;
}), o), Curry._1(memsz(sz$1, function (param) {
return Operators.i64_store8(partial_arg$2, param);
}, function (param) {
return Operators.i64_store16(partial_arg$3, param);
}, function (param) {
return Operators.i64_store32(partial_arg$4, param);
}), o));
}
}(t$5,sz$1))]);
case 38 :
var s$5 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4] + 7 | 0, lexbuf$1[/* lex_curr_pos */5]);
return /* OFFSET_EQ_NAT */Block.__(8, [s$5]);
case 39 :
var s$6 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4] + 6 | 0, lexbuf$1[/* lex_curr_pos */5]);
return /* ALIGN_EQ_NAT */Block.__(9, [s$6]);
case 40 :
var t$6 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [intop(t$6, Operators.i32_clz, Operators.i64_clz)]);
case 41 :
var t$7 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [intop(t$7, Operators.i32_ctz, Operators.i64_ctz)]);
case 42 :
var t$8 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [intop(t$8, Operators.i32_popcnt, Operators.i64_popcnt)]);
case 43 :
var t$9 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [floatop(t$9, Operators.f32_neg, Operators.f64_neg)]);
case 44 :
var t$10 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [floatop(t$10, Operators.f32_abs, Operators.f64_abs)]);
case 45 :
var t$11 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [floatop(t$11, Operators.f32_sqrt, Operators.f64_sqrt)]);
case 46 :
var t$12 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [floatop(t$12, Operators.f32_ceil, Operators.f64_ceil)]);
case 47 :
var t$13 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [floatop(t$13, Operators.f32_floor, Operators.f64_floor)]);
case 48 :
var t$14 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [floatop(t$14, Operators.f32_trunc, Operators.f64_trunc)]);
case 49 :
var t$15 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* UNARY */Block.__(11, [floatop(t$15, Operators.f32_nearest, Operators.f64_nearest)]);
case 50 :
var t$16 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$16, Operators.i32_add, Operators.i64_add)]);
case 51 :
var t$17 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$17, Operators.i32_sub, Operators.i64_sub)]);
case 52 :
var t$18 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$18, Operators.i32_mul, Operators.i64_mul)]);
case 53 :
var t$19 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$19, Operators.i32_div_s, Operators.i64_div_s)]);
case 54 :
var t$20 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$20, Operators.i32_div_u, Operators.i64_div_u)]);
case 55 :
var t$21 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$21, Operators.i32_rem_s, Operators.i64_rem_s)]);
case 56 :
var t$22 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$22, Operators.i32_rem_u, Operators.i64_rem_u)]);
case 57 :
var t$23 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$23, Operators.i32_and, Operators.i64_and)]);
case 58 :
var t$24 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$24, Operators.i32_or, Operators.i64_or)]);
case 59 :
var t$25 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$25, Operators.i32_xor, Operators.i64_xor)]);
case 60 :
var t$26 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$26, Operators.i32_shl, Operators.i64_shl)]);
case 61 :
var t$27 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$27, Operators.i32_shr_s, Operators.i64_shr_s)]);
case 62 :
var t$28 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$28, Operators.i32_shr_u, Operators.i64_shr_u)]);
case 63 :
var t$29 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$29, Operators.i32_rotl, Operators.i64_rotl)]);
case 64 :
var t$30 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [intop(t$30, Operators.i32_rotr, Operators.i64_rotr)]);
case 65 :
var t$31 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [floatop(t$31, Operators.f32_add, Operators.f64_add)]);
case 66 :
var t$32 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [floatop(t$32, Operators.f32_sub, Operators.f64_sub)]);
case 67 :
var t$33 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [floatop(t$33, Operators.f32_mul, Operators.f64_mul)]);
case 68 :
var t$34 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [floatop(t$34, Operators.f32_div, Operators.f64_div)]);
case 69 :
var t$35 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [floatop(t$35, Operators.f32_min, Operators.f64_min)]);
case 70 :
var t$36 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [floatop(t$36, Operators.f32_max, Operators.f64_max)]);
case 71 :
var t$37 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* BINARY */Block.__(12, [floatop(t$37, Operators.f32_copysign, Operators.f64_copysign)]);
case 72 :
var t$38 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* TEST */Block.__(15, [intop(t$38, Operators.i32_eqz, Operators.i64_eqz)]);
case 73 :
var t$39 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$39, Operators.i32_eq, Operators.i64_eq)]);
case 74 :
var t$40 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$40, Operators.i32_ne, Operators.i64_ne)]);
case 75 :
var t$41 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$41, Operators.i32_lt_s, Operators.i64_lt_s)]);
case 76 :
var t$42 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$42, Operators.i32_lt_u, Operators.i64_lt_u)]);
case 77 :
var t$43 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$43, Operators.i32_le_s, Operators.i64_le_s)]);
case 78 :
var t$44 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$44, Operators.i32_le_u, Operators.i64_le_u)]);
case 79 :
var t$45 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$45, Operators.i32_gt_s, Operators.i64_gt_s)]);
case 80 :
var t$46 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$46, Operators.i32_gt_u, Operators.i64_gt_u)]);
case 81 :
var t$47 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$47, Operators.i32_ge_s, Operators.i64_ge_s)]);
case 82 :
var t$48 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [intop(t$48, Operators.i32_ge_u, Operators.i64_ge_u)]);
case 83 :
var t$49 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [floatop(t$49, Operators.f32_eq, Operators.f64_eq)]);
case 84 :
var t$50 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [floatop(t$50, Operators.f32_ne, Operators.f64_ne)]);
case 85 :
var t$51 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [floatop(t$51, Operators.f32_lt, Operators.f64_lt)]);
case 86 :
var t$52 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [floatop(t$52, Operators.f32_le, Operators.f64_le)]);
case 87 :
var t$53 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [floatop(t$53, Operators.f32_gt, Operators.f64_gt)]);
case 88 :
var t$54 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* COMPARE */Block.__(13, [floatop(t$54, Operators.f32_ge, Operators.f64_ge)]);
case 89 :
return /* CONVERT */Block.__(14, [Operators.i32_wrap_i64]);
case 90 :
return /* CONVERT */Block.__(14, [Operators.i64_extend_s_i32]);
case 91 :
return /* CONVERT */Block.__(14, [Operators.i64_extend_u_i32]);
case 92 :
return /* CONVERT */Block.__(14, [Operators.f32_demote_f64]);
case 93 :
return /* CONVERT */Block.__(14, [Operators.f64_promote_f32]);
case 94 :
var t$55 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* CONVERT */Block.__(14, [intop(t$55, Operators.i32_trunc_s_f32, Operators.i64_trunc_s_f32)]);
case 95 :
var t$56 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* CONVERT */Block.__(14, [intop(t$56, Operators.i32_trunc_u_f32, Operators.i64_trunc_u_f32)]);
case 96 :
var t$57 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* CONVERT */Block.__(14, [intop(t$57, Operators.i32_trunc_s_f64, Operators.i64_trunc_s_f64)]);
case 97 :
var t$58 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* CONVERT */Block.__(14, [intop(t$58, Operators.i32_trunc_u_f64, Operators.i64_trunc_u_f64)]);
case 98 :
var t$59 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* CONVERT */Block.__(14, [floatop(t$59, Operators.f32_convert_s_i32, Operators.f64_convert_s_i32)]);
case 99 :
var t$60 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* CONVERT */Block.__(14, [floatop(t$60, Operators.f32_convert_u_i32, Operators.f64_convert_u_i32)]);
case 100 :
var t$61 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* CONVERT */Block.__(14, [floatop(t$61, Operators.f32_convert_s_i64, Operators.f64_convert_s_i64)]);
case 101 :
var t$62 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_start_pos */4] + 3 | 0);
return /* CONVERT */Block.__(14, [floatop(t$62, Operators.f32_convert_u_i64, Operators.f64_convert_u_i64)]);
case 102 :
return /* CONVERT */Block.__(14, [Operators.f32_reinterpret_i32]);
case 103 :
return /* CONVERT */Block.__(14, [Operators.f64_reinterpret_i64]);
case 104 :
return /* CONVERT */Block.__(14, [Operators.i32_reinterpret_f32]);
case 105 :
return /* CONVERT */Block.__(14, [Operators.i64_reinterpret_f64]);
case 106 :
return /* CURRENT_MEMORY */25;
case 107 :
return /* GROW_MEMORY */26;
case 108 :
return /* TYPE */29;
case 109 :
return /* FUNC */27;
case 110 :
return /* START */28;
case 111 :
return /* PARAM */30;
case 112 :
return /* RESULT */31;
case 113 :
return /* LOCAL */32;
case 114 :
return /* GLOBAL */33;
case 115 :
return /* MODULE */34;
case 116 :
return /* TABLE */35;
case 117 :
return /* MEMORY */37;
case 118 :
return /* ELEM */36;
case 119 :
return /* DATA */38;
case 120 :
return /* OFFSET */39;
case 121 :
return /* IMPORT */40;
case 122 :
return /* EXPORT */41;
case 123 :
return /* SCRIPT */42;
case 124 :
return /* REGISTER */43;
case 125 :
return /* INVOKE */44;
case 126 :
return /* GET */45;
case 127 :
return /* ASSERT_MALFORMED */46;
case 128 :
return /* ASSERT_INVALID */47;
case 129 :
return /* ASSERT_SOFT_INVALID */48;
case 130 :
return /* ASSERT_UNLINKABLE */49;
case 131 :
return /* ASSERT_RETURN */50;
case 132 :
return /* ASSERT_RETURN_NAN */51;
case 133 :
return /* ASSERT_TRAP */52;
case 134 :
return /* ASSERT_EXHAUSTION */53;
case 135 :
return /* INPUT */54;
case 136 :
return /* OUTPUT */55;
case 137 :
var s$7 = Lexing.sub_lexeme(lexbuf$1, lexbuf$1[/* lex_start_pos */4], lexbuf$1[/* lex_curr_pos */5]);
return /* VAR */Block.__(4, [s$7]);
case 140 :
__ocaml_lex_comment_rec(Lexing.lexeme_start_p(lexbuf$1), lexbuf$1, 684);
return token(lexbuf$1);
case 141 :
return token(lexbuf$1);
case 139 :
case 142 :
Lexing.new_line(lexbuf$1);
return token(lexbuf$1);
case 138 :
case 143 :
return /* EOF */56;
case 144 :
return error(lexbuf$1, "unknown operator");
}
}
};
}
function __ocaml_lex_comment_rec(start, lexbuf, ___ocaml_lex_state) {
while(true) {
var __ocaml_lex_state = ___ocaml_lex_state;
var __ocaml_lex_state$1 = Lexing.engine(__ocaml_lex_tables, __ocaml_lex_state, lexbuf);
if (__ocaml_lex_state$1 > 4 || __ocaml_lex_state$1 < 0) {
Curry._1(lexbuf[/* refill_buff */0], lexbuf);
___ocaml_lex_state = __ocaml_lex_state$1;
continue ;
}
else {
switch (__ocaml_lex_state$1) {
case 0 :
return /* () */0;
case 1 :
__ocaml_lex_comment_rec(Lexing.lexeme_start_p(lexbuf), lexbuf, 684);
___ocaml_lex_state = 684;
continue ;
case 2 :
Lexing.new_line(lexbuf);
___ocaml_lex_state = 684;
continue ;
case 3 :
return error_nest(start, lexbuf, "unclosed comment");
case 4 :
___ocaml_lex_state = 684;
continue ;
}
}
};
}
exports.convert_pos = convert_pos;
exports.token = token;
/* F32 Not a pure module */
//////// end of lexer.js ////////
    return exports;
  };
_registry['lexing'] = function() {
    let exports = {};
//////// start of lexing.js ////////
'use strict';
var Sys = require("./sys");
var Bytes = require("./bytes");
var Curry = require("./curry");
var Caml_bytes = require("./caml_bytes");
var Caml_lexer = require("./caml_lexer");
var Pervasives = require("./pervasives");
var Caml_string = require("./caml_string");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function engine(tbl, state, buf) {
var result = Caml_lexer.caml_lex_engine(tbl, state, buf);
if (result >= 0) {
buf[/* lex_start_p */10] = buf[/* lex_curr_p */11];
var init = buf[/* lex_curr_p */11];
buf[/* lex_curr_p */11] = /* record */[
/* pos_fname */init[/* pos_fname */0],
/* pos_lnum */init[/* pos_lnum */1],
/* pos_bol */init[/* pos_bol */2],
/* pos_cnum */buf[/* lex_abs_pos */3] + buf[/* lex_curr_pos */5] | 0
];
}
return result;
}
function new_engine(tbl, state, buf) {
var result = Caml_lexer.caml_new_lex_engine(tbl, state, buf);
if (result >= 0) {
buf[/* lex_start_p */10] = buf[/* lex_curr_p */11];
var init = buf[/* lex_curr_p */11];
buf[/* lex_curr_p */11] = /* record */[
/* pos_fname */init[/* pos_fname */0],
/* pos_lnum */init[/* pos_lnum */1],
/* pos_bol */init[/* pos_bol */2],
/* pos_cnum */buf[/* lex_abs_pos */3] + buf[/* lex_curr_pos */5] | 0
];
}
return result;
}
var zero_pos = /* record */[
/* pos_fname */"",
/* pos_lnum */1,
/* pos_bol */0,
/* pos_cnum */0
];
function from_function(f) {
var partial_arg = new Array(512);
return /* record */[
/* refill_buff */function (param) {
var read_fun = f;
var aux_buffer = partial_arg;
var lexbuf = param;
var read = Curry._2(read_fun, aux_buffer, aux_buffer.length);
var n = read > 0 ? read : (lexbuf[/* lex_eof_reached */8] = /* true */1, 0);
if ((lexbuf[/* lex_buffer_len */2] + n | 0) > lexbuf[/* lex_buffer */1].length) {
if (((lexbuf[/* lex_buffer_len */2] - lexbuf[/* lex_start_pos */4] | 0) + n | 0) <= lexbuf[/* lex_buffer */1].length) {
Bytes.blit(lexbuf[/* lex_buffer */1], lexbuf[/* lex_start_pos */4], lexbuf[/* lex_buffer */1], 0, lexbuf[/* lex_buffer_len */2] - lexbuf[/* lex_start_pos */4] | 0);
}
else {
var newlen = Pervasives.min((lexbuf[/* lex_buffer */1].length << 1), Sys.max_string_length);
if (((lexbuf[/* lex_buffer_len */2] - lexbuf[/* lex_start_pos */4] | 0) + n | 0) > newlen) {
throw [
Caml_builtin_exceptions.failure,
"Lexing.lex_refill: cannot grow buffer"
];
}
var newbuf = Caml_string.caml_create_string(newlen);
Bytes.blit(lexbuf[/* lex_buffer */1], lexbuf[/* lex_start_pos */4], newbuf, 0, lexbuf[/* lex_buffer_len */2] - lexbuf[/* lex_start_pos */4] | 0);
lexbuf[/* lex_buffer */1] = newbuf;
}
var s = lexbuf[/* lex_start_pos */4];
lexbuf[/* lex_abs_pos */3] = lexbuf[/* lex_abs_pos */3] + s | 0;
lexbuf[/* lex_curr_pos */5] = lexbuf[/* lex_curr_pos */5] - s | 0;
lexbuf[/* lex_start_pos */4] = 0;
lexbuf[/* lex_last_pos */6] = lexbuf[/* lex_last_pos */6] - s | 0;
lexbuf[/* lex_buffer_len */2] = lexbuf[/* lex_buffer_len */2] - s | 0;
var t = lexbuf[/* lex_mem */9];
for(var i = 0 ,i_finish = t.length - 1 | 0; i <= i_finish; ++i){
var v = t[i];
if (v >= 0) {
t[i] = v - s | 0;
}
}
}
Bytes.blit(aux_buffer, 0, lexbuf[/* lex_buffer */1], lexbuf[/* lex_buffer_len */2], n);
lexbuf[/* lex_buffer_len */2] = lexbuf[/* lex_buffer_len */2] + n | 0;
return /* () */0;
},
/* lex_buffer */new Array(1024),
/* lex_buffer_len */0,
/* lex_abs_pos */0,
/* lex_start_pos */0,
/* lex_curr_pos */0,
/* lex_last_pos */0,
/* lex_last_action */0,
/* lex_eof_reached : false */0,
/* lex_mem : int array */[],
/* lex_start_p */zero_pos,
/* lex_curr_p */zero_pos
];
}
function from_channel(ic) {
return from_function(function (buf, n) {
return Pervasives.input(ic, buf, 0, n);
});
}
function from_string(s) {
return /* record */[
/* refill_buff */function (lexbuf) {
lexbuf[/* lex_eof_reached */8] = /* true */1;
return /* () */0;
},
/* lex_buffer */Bytes.of_string(s),
/* lex_buffer_len */s.length,
/* lex_abs_pos */0,
/* lex_start_pos */0,
/* lex_curr_pos */0,
/* lex_last_pos */0,
/* lex_last_action */0,
/* lex_eof_reached : true */1,
/* lex_mem : int array */[],
/* lex_start_p */zero_pos,
/* lex_curr_p */zero_pos
];
}
function lexeme(lexbuf) {
var len = lexbuf[/* lex_curr_pos */5] - lexbuf[/* lex_start_pos */4] | 0;
return Bytes.sub_string(lexbuf[/* lex_buffer */1], lexbuf[/* lex_start_pos */4], len);
}
function sub_lexeme(lexbuf, i1, i2) {
var len = i2 - i1 | 0;
return Bytes.sub_string(lexbuf[/* lex_buffer */1], i1, len);
}
function sub_lexeme_opt(lexbuf, i1, i2) {
if (i1 >= 0) {
var len = i2 - i1 | 0;
return /* Some */[Bytes.sub_string(lexbuf[/* lex_buffer */1], i1, len)];
}
else {
return /* None */0;
}
}
function sub_lexeme_char(lexbuf, i) {
return Caml_bytes.get(lexbuf[/* lex_buffer */1], i);
}
function sub_lexeme_char_opt(lexbuf, i) {
if (i >= 0) {
return /* Some */[Caml_bytes.get(lexbuf[/* lex_buffer */1], i)];
}
else {
return /* None */0;
}
}
function lexeme_char(lexbuf, i) {
return Caml_bytes.get(lexbuf[/* lex_buffer */1], lexbuf[/* lex_start_pos */4] + i | 0);
}
function lexeme_start(lexbuf) {
return lexbuf[/* lex_start_p */10][/* pos_cnum */3];
}
function lexeme_end(lexbuf) {
return lexbuf[/* lex_curr_p */11][/* pos_cnum */3];
}
function lexeme_start_p(lexbuf) {
return lexbuf[/* lex_start_p */10];
}
function lexeme_end_p(lexbuf) {
return lexbuf[/* lex_curr_p */11];
}
function new_line(lexbuf) {
var lcp = lexbuf[/* lex_curr_p */11];
lexbuf[/* lex_curr_p */11] = /* record */[
/* pos_fname */lcp[/* pos_fname */0],
/* pos_lnum */lcp[/* pos_lnum */1] + 1 | 0,
/* pos_bol */lcp[/* pos_cnum */3],
/* pos_cnum */lcp[/* pos_cnum */3]
];
return /* () */0;
}
function flush_input(lb) {
lb[/* lex_curr_pos */5] = 0;
lb[/* lex_abs_pos */3] = 0;
var init = lb[/* lex_curr_p */11];
lb[/* lex_curr_p */11] = /* record */[
/* pos_fname */init[/* pos_fname */0],
/* pos_lnum */init[/* pos_lnum */1],
/* pos_bol */init[/* pos_bol */2],
/* pos_cnum */0
];
lb[/* lex_buffer_len */2] = 0;
return /* () */0;
}
var dummy_pos = /* record */[
/* pos_fname */"",
/* pos_lnum */0,
/* pos_bol */0,
/* pos_cnum */-1
];
exports.dummy_pos = dummy_pos;
exports.from_channel = from_channel;
exports.from_string = from_string;
exports.from_function = from_function;
exports.lexeme = lexeme;
exports.lexeme_char = lexeme_char;
exports.lexeme_start = lexeme_start;
exports.lexeme_end = lexeme_end;
exports.lexeme_start_p = lexeme_start_p;
exports.lexeme_end_p = lexeme_end_p;
exports.new_line = new_line;
exports.flush_input = flush_input;
exports.sub_lexeme = sub_lexeme;
exports.sub_lexeme_opt = sub_lexeme_opt;
exports.sub_lexeme_char = sub_lexeme_char;
exports.sub_lexeme_char_opt = sub_lexeme_char_opt;
exports.engine = engine;
exports.new_engine = new_engine;
/* No side effect */
//////// end of lexing.js ////////
    return exports;
  };
_registry['lib'] = function() {
    let exports = {};
//////// start of lib.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var $$Array = require("bs-platform/lib/js/array");
var Curry = require("bs-platform/lib/js/curry");
var Int32 = require("bs-platform/lib/js/int32");
var $$String = require("bs-platform/lib/js/string");
var Bigarray = require("bs-platform/lib/js/bigarray");
var Caml_obj = require("bs-platform/lib/js/caml_obj");
var Caml_array = require("bs-platform/lib/js/caml_array");
var Caml_int64 = require("bs-platform/lib/js/caml_int64");
var Pervasives = require("bs-platform/lib/js/pervasives");
var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions");
function repeat(_n, f, x) {
while(true) {
var n = _n;
if (n) {
Curry._1(f, x);
_n = n - 1 | 0;
continue ;
}
else {
return /* () */0;
}
};
}
var Fun = /* module */[/* repeat */repeat];
function make(n, x) {
if (n) {
return /* :: */[
x,
make(n - 1 | 0, x)
];
}
else {
return /* [] */0;
}
}
function table$prime(i, n, f) {
if (i === n) {
return /* [] */0;
}
else {
return /* :: */[
Curry._1(f, i),
table$prime(i + 1 | 0, n, f)
];
}
}
function table(n, f) {
return table$prime(0, n, f);
}
function take(n, xs) {
if (n !== 0) {
if (xs) {
if (n > 0) {
return /* :: */[
xs[0],
take(n - 1 | 0, xs[1])
];
}
else {
return Pervasives.failwith("take");
}
}
else {
return Pervasives.failwith("take");
}
}
else {
return /* [] */0;
}
}
function drop(_n, _xs) {
while(true) {
var xs = _xs;
var n = _n;
if (n !== 0) {
if (xs) {
if (n > 0) {
_xs = xs[1];
_n = n - 1 | 0;
continue ;
}
else {
return Pervasives.failwith("drop");
}
}
else {
return Pervasives.failwith("drop");
}
}
else {
return xs;
}
};
}
function last(_param) {
while(true) {
var param = _param;
if (param) {
var xs = param[1];
if (xs) {
_param = xs;
continue ;
}
else {
return param[0];
}
}
else {
return Pervasives.failwith("last");
}
};
}
function split_last(param) {
if (param) {
var xs = param[1];
var x = param[0];
if (xs) {
var match = split_last(xs);
return /* tuple */[
/* :: */[
x,
match[0]
],
match[1]
];
}
else {
return /* tuple */[
/* [] */0,
x
];
}
}
else {
return Pervasives.failwith("split_last");
}
}
function index_of(x, xs) {
var x$1 = x;
var _xs = xs;
var _i = 0;
while(true) {
var i = _i;
var xs$1 = _xs;
if (xs$1) {
if (Caml_obj.caml_equal(x$1, xs$1[0])) {
return /* Some */[i];
}
else {
_i = i + 1 | 0;
_xs = xs$1[1];
continue ;
}
}
else {
return /* None */0;
}
};
}
function length(xs) {
var _xs = xs;
var _n = 0;
while(true) {
var n = _n;
var xs$1 = _xs;
if (xs$1) {
if (n < Int32.max_int) {
_n = n + 1 | 0;
_xs = xs$1[1];
continue ;
}
else {
return Pervasives.failwith("length");
}
}
else {
return n;
}
};
}
function nth(_xs, _n) {
while(true) {
var n = _n;
var xs = _xs;
if (n !== 0) {
if (xs) {
if (n > 0) {
_n = n - 1 | 0;
_xs = xs[1];
continue ;
}
else {
return Pervasives.failwith("nth");
}
}
else {
return Pervasives.failwith("nth");
}
}
else if (xs) {
return xs[0];
}
else {
return Pervasives.failwith("nth");
}
};
}
function take$1(n, xs) {
if (n !== 0) {
if (xs) {
if (n > 0) {
return /* :: */[
xs[0],
take$1(n - 1 | 0, xs[1])
];
}
else {
return Pervasives.failwith("take");
}
}
else {
return Pervasives.failwith("take");
}
}
else {
return /* [] */0;
}
}
function drop$1(_n, _xs) {
while(true) {
var xs = _xs;
var n = _n;
if (n !== 0) {
if (xs) {
if (n > 0) {
_xs = xs[1];
_n = n - 1 | 0;
continue ;
}
else {
return Pervasives.failwith("drop");
}
}
else {
return Pervasives.failwith("drop");
}
}
else {
return xs;
}
};
}
function make$1(n, x) {
if (n < 0 || Caml_int64.gt(Caml_int64.of_int32(n), Caml_int64.of_int32(Pervasives.max_int))) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Array32.make"
];
}
return Caml_array.caml_make_vect(n, x);
}
function length$1(a) {
return a.length;
}
function index_of_int32(i) {
if (i < 0 || Caml_int64.gt(Caml_int64.of_int32(i), Caml_int64.of_int32(Pervasives.max_int))) {
return -1;
}
else {
return i;
}
}
function get(a, i) {
return a[index_of_int32(i)];
}
function set(a, i, x) {
a[index_of_int32(i)] = x;
return /* () */0;
}
function blit(a1, i1, a2, i2, n) {
return $$Array.blit(a1, index_of_int32(i1), a2, index_of_int32(i2), index_of_int32(n));
}
function create(kind, layout, n) {
if (Caml_int64.lt(n, /* int64 */[
/* hi */0,
/* lo */0
]) || Caml_int64.gt(n, Caml_int64.of_int32(Pervasives.max_int))) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Bigarray.Array1_64.create"
];
}
return Curry._3(Bigarray.Array1[/* create */0], kind, layout, n[1] | 0);
}
function dim() {
return Caml_int64.of_int32(function () {
throw "caml_ba_dim_1 not implemented by bucklescript yet\n";
}());
}
function get$1(_, _$1) {
return function () {
throw "caml_ba_get_1 not implemented by bucklescript yet\n";
}();
}
function set$1(_, _$1, _$2) {
return function () {
throw "caml_ba_set_1 not implemented by bucklescript yet\n";
}();
}
function sub(_, _$1, _$2) {
return function () {
throw "caml_ba_sub not implemented by bucklescript yet\n";
}();
}
function get$2(o, x) {
if (o) {
return o[0];
}
else {
return x;
}
}
function map(f, param) {
if (param) {
return /* Some */[Curry._1(f, param[0])];
}
else {
return /* None */0;
}
}
function app(f, param) {
if (param) {
return Curry._1(f, param[0]);
}
else {
return /* () */0;
}
}
var Option = /* module */[
/* get */get$2,
/* map */map,
/* app */app
];
function log2(n) {
if (n <= 0) {
Pervasives.failwith("log2");
}
var _acc = 0;
var _n = n;
while(true) {
var n$1 = _n;
var acc = _acc;
if (n$1 === 1) {
return acc;
}
else {
_n = (n$1 >>> 1);
_acc = acc + 1 | 0;
continue ;
}
};
}
function is_power_of_two(n) {
if (n < 0) {
Pervasives.failwith("is_power_of_two");
}
if (n !== 0) {
return +((n & (n - 1 | 0)) === 0);
}
else {
return /* false */0;
}
}
var Int = /* module */[
/* log2 */log2,
/* is_power_of_two */is_power_of_two
];
function breakup(s, n) {
var loop = function (i) {
var len = Pervasives.min(n, s.length - i | 0);
if (len) {
return /* :: */[
$$String.sub(s, i, len),
loop(i + len | 0)
];
}
else {
return /* [] */0;
}
};
return loop(0);
}
var $$String$1 = /* module */[/* breakup */breakup];
var List = [
make,
table,
take,
drop,
last,
split_last,
index_of
];
var List32 = [
length,
nth,
take$1,
drop$1
];
var Array32 = [
make$1,
length$1,
get,
set,
blit
];
var Bigarray$1 = [[
create,
dim,
get$1,
set$1,
sub
]];
exports.Fun = Fun;
exports.List = List;
exports.List32 = List32;
exports.Array32 = Array32;
exports.Bigarray = Bigarray$1;
exports.Option = Option;
exports.Int = Int;
exports.$$String = $$String$1;
/* Bigarray Not a pure module */
//////// end of lib.js ////////
    return exports;
  };
_registry['list'] = function() {
    let exports = {};
//////// start of list.js ////////
'use strict';
var Curry = require("./curry");
var Caml_obj = require("./caml_obj");
var Pervasives = require("./pervasives");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function length(l) {
var _len = 0;
var _param = l;
while(true) {
var param = _param;
var len = _len;
if (param) {
_param = param[1];
_len = len + 1 | 0;
continue ;
}
else {
return len;
}
};
}
function hd(param) {
if (param) {
return param[0];
}
else {
throw [
Caml_builtin_exceptions.failure,
"hd"
];
}
}
function tl(param) {
if (param) {
return param[1];
}
else {
throw [
Caml_builtin_exceptions.failure,
"tl"
];
}
}
function nth(l, n) {
if (n < 0) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.nth"
];
}
else {
var _l = l;
var _n = n;
while(true) {
var n$1 = _n;
var l$1 = _l;
if (l$1) {
if (n$1) {
_n = n$1 - 1 | 0;
_l = l$1[1];
continue ;
}
else {
return l$1[0];
}
}
else {
throw [
Caml_builtin_exceptions.failure,
"nth"
];
}
};
}
}
function rev_append(_l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
_l2 = /* :: */[
l1[0],
l2
];
_l1 = l1[1];
continue ;
}
else {
return l2;
}
};
}
function rev(l) {
return rev_append(l, /* [] */0);
}
function flatten(param) {
if (param) {
return Pervasives.$at(param[0], flatten(param[1]));
}
else {
return /* [] */0;
}
}
function map(f, param) {
if (param) {
var r = Curry._1(f, param[0]);
return /* :: */[
r,
map(f, param[1])
];
}
else {
return /* [] */0;
}
}
function mapi(i, f, param) {
if (param) {
var r = Curry._2(f, i, param[0]);
return /* :: */[
r,
mapi(i + 1 | 0, f, param[1])
];
}
else {
return /* [] */0;
}
}
function mapi$1(f, l) {
return mapi(0, f, l);
}
function rev_map(f, l) {
var _accu = /* [] */0;
var _param = l;
while(true) {
var param = _param;
var accu = _accu;
if (param) {
_param = param[1];
_accu = /* :: */[
Curry._1(f, param[0]),
accu
];
continue ;
}
else {
return accu;
}
};
}
function iter(f, _param) {
while(true) {
var param = _param;
if (param) {
Curry._1(f, param[0]);
_param = param[1];
continue ;
}
else {
return /* () */0;
}
};
}
function iteri(f, l) {
var _i = 0;
var f$1 = f;
var _param = l;
while(true) {
var param = _param;
var i = _i;
if (param) {
Curry._2(f$1, i, param[0]);
_param = param[1];
_i = i + 1 | 0;
continue ;
}
else {
return /* () */0;
}
};
}
function fold_left(f, _accu, _l) {
while(true) {
var l = _l;
var accu = _accu;
if (l) {
_l = l[1];
_accu = Curry._2(f, accu, l[0]);
continue ;
}
else {
return accu;
}
};
}
function fold_right(f, l, accu) {
if (l) {
return Curry._2(f, l[0], fold_right(f, l[1], accu));
}
else {
return accu;
}
}
function map2(f, l1, l2) {
if (l1) {
if (l2) {
var r = Curry._2(f, l1[0], l2[0]);
return /* :: */[
r,
map2(f, l1[1], l2[1])
];
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.map2"
];
}
}
else if (l2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.map2"
];
}
else {
return /* [] */0;
}
}
function rev_map2(f, l1, l2) {
var _accu = /* [] */0;
var _l1 = l1;
var _l2 = l2;
while(true) {
var l2$1 = _l2;
var l1$1 = _l1;
var accu = _accu;
if (l1$1) {
if (l2$1) {
_l2 = l2$1[1];
_l1 = l1$1[1];
_accu = /* :: */[
Curry._2(f, l1$1[0], l2$1[0]),
accu
];
continue ;
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.rev_map2"
];
}
}
else if (l2$1) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.rev_map2"
];
}
else {
return accu;
}
};
}
function iter2(f, _l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
if (l2) {
Curry._2(f, l1[0], l2[0]);
_l2 = l2[1];
_l1 = l1[1];
continue ;
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.iter2"
];
}
}
else if (l2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.iter2"
];
}
else {
return /* () */0;
}
};
}
function fold_left2(f, _accu, _l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
var accu = _accu;
if (l1) {
if (l2) {
_l2 = l2[1];
_l1 = l1[1];
_accu = Curry._3(f, accu, l1[0], l2[0]);
continue ;
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.fold_left2"
];
}
}
else if (l2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.fold_left2"
];
}
else {
return accu;
}
};
}
function fold_right2(f, l1, l2, accu) {
if (l1) {
if (l2) {
return Curry._3(f, l1[0], l2[0], fold_right2(f, l1[1], l2[1], accu));
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.fold_right2"
];
}
}
else if (l2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.fold_right2"
];
}
else {
return accu;
}
}
function for_all(p, _param) {
while(true) {
var param = _param;
if (param) {
if (Curry._1(p, param[0])) {
_param = param[1];
continue ;
}
else {
return /* false */0;
}
}
else {
return /* true */1;
}
};
}
function exists(p, _param) {
while(true) {
var param = _param;
if (param) {
if (Curry._1(p, param[0])) {
return /* true */1;
}
else {
_param = param[1];
continue ;
}
}
else {
return /* false */0;
}
};
}
function for_all2(p, _l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
if (l2) {
if (Curry._2(p, l1[0], l2[0])) {
_l2 = l2[1];
_l1 = l1[1];
continue ;
}
else {
return /* false */0;
}
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.for_all2"
];
}
}
else if (l2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.for_all2"
];
}
else {
return /* true */1;
}
};
}
function exists2(p, _l1, _l2) {
while(true) {
var l2 = _l2;
var l1 = _l1;
if (l1) {
if (l2) {
if (Curry._2(p, l1[0], l2[0])) {
return /* true */1;
}
else {
_l2 = l2[1];
_l1 = l1[1];
continue ;
}
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.exists2"
];
}
}
else if (l2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.exists2"
];
}
else {
return /* false */0;
}
};
}
function mem(x, _param) {
while(true) {
var param = _param;
if (param) {
if (Caml_obj.caml_compare(param[0], x)) {
_param = param[1];
continue ;
}
else {
return /* true */1;
}
}
else {
return /* false */0;
}
};
}
function memq(x, _param) {
while(true) {
var param = _param;
if (param) {
if (param[0] === x) {
return /* true */1;
}
else {
_param = param[1];
continue ;
}
}
else {
return /* false */0;
}
};
}
function assoc(x, _param) {
while(true) {
var param = _param;
if (param) {
var match = param[0];
if (Caml_obj.caml_compare(match[0], x)) {
_param = param[1];
continue ;
}
else {
return match[1];
}
}
else {
throw Caml_builtin_exceptions.not_found;
}
};
}
function assq(x, _param) {
while(true) {
var param = _param;
if (param) {
var match = param[0];
if (match[0] === x) {
return match[1];
}
else {
_param = param[1];
continue ;
}
}
else {
throw Caml_builtin_exceptions.not_found;
}
};
}
function mem_assoc(x, _param) {
while(true) {
var param = _param;
if (param) {
if (Caml_obj.caml_compare(param[0][0], x)) {
_param = param[1];
continue ;
}
else {
return /* true */1;
}
}
else {
return /* false */0;
}
};
}
function mem_assq(x, _param) {
while(true) {
var param = _param;
if (param) {
if (param[0][0] === x) {
return /* true */1;
}
else {
_param = param[1];
continue ;
}
}
else {
return /* false */0;
}
};
}
function remove_assoc(x, param) {
if (param) {
var l = param[1];
var pair = param[0];
if (Caml_obj.caml_compare(pair[0], x)) {
return /* :: */[
pair,
remove_assoc(x, l)
];
}
else {
return l;
}
}
else {
return /* [] */0;
}
}
function remove_assq(x, param) {
if (param) {
var l = param[1];
var pair = param[0];
if (pair[0] === x) {
return l;
}
else {
return /* :: */[
pair,
remove_assq(x, l)
];
}
}
else {
return /* [] */0;
}
}
function find(p, _param) {
while(true) {
var param = _param;
if (param) {
var x = param[0];
if (Curry._1(p, x)) {
return x;
}
else {
_param = param[1];
continue ;
}
}
else {
throw Caml_builtin_exceptions.not_found;
}
};
}
function find_all(p) {
return function (param) {
var _accu = /* [] */0;
var _param = param;
while(true) {
var param$1 = _param;
var accu = _accu;
if (param$1) {
var l = param$1[1];
var x = param$1[0];
if (Curry._1(p, x)) {
_param = l;
_accu = /* :: */[
x,
accu
];
continue ;
}
else {
_param = l;
continue ;
}
}
else {
return rev_append(accu, /* [] */0);
}
};
};
}
function partition(p, l) {
var _yes = /* [] */0;
var _no = /* [] */0;
var _param = l;
while(true) {
var param = _param;
var no = _no;
var yes = _yes;
if (param) {
var l$1 = param[1];
var x = param[0];
if (Curry._1(p, x)) {
_param = l$1;
_yes = /* :: */[
x,
yes
];
continue ;
}
else {
_param = l$1;
_no = /* :: */[
x,
no
];
continue ;
}
}
else {
return /* tuple */[
rev_append(yes, /* [] */0),
rev_append(no, /* [] */0)
];
}
};
}
function split(param) {
if (param) {
var match = param[0];
var match$1 = split(param[1]);
return /* tuple */[
/* :: */[
match[0],
match$1[0]
],
/* :: */[
match[1],
match$1[1]
]
];
}
else {
return /* tuple */[
/* [] */0,
/* [] */0
];
}
}
function combine(l1, l2) {
if (l1) {
if (l2) {
return /* :: */[
/* tuple */[
l1[0],
l2[0]
],
combine(l1[1], l2[1])
];
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.combine"
];
}
}
else if (l2) {
throw [
Caml_builtin_exceptions.invalid_argument,
"List.combine"
];
}
else {
return /* [] */0;
}
}
function merge(cmp, l1, l2) {
if (l1) {
if (l2) {
var h2 = l2[0];
var h1 = l1[0];
if (Curry._2(cmp, h1, h2) <= 0) {
return /* :: */[
h1,
merge(cmp, l1[1], l2)
];
}
else {
return /* :: */[
h2,
merge(cmp, l1, l2[1])
];
}
}
else {
return l1;
}
}
else {
return l2;
}
}
function chop(_k, _l) {
while(true) {
var l = _l;
var k = _k;
if (k) {
if (l) {
_l = l[1];
_k = k - 1 | 0;
continue ;
}
else {
throw [
Caml_builtin_exceptions.assert_failure,
[
"list.ml",
223,
11
]
];
}
}
else {
return l;
}
};
}
function stable_sort(cmp, l) {
var sort = function (n, l) {
var exit = 0;
if (n !== 2) {
if (n !== 3) {
exit = 1;
}
else if (l) {
var match = l[1];
if (match) {
var match$1 = match[1];
if (match$1) {
var x3 = match$1[0];
var x2 = match[0];
var x1 = l[0];
if (Curry._2(cmp, x1, x2) <= 0) {
if (Curry._2(cmp, x2, x3) <= 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
]
];
}
else if (Curry._2(cmp, x1, x3) <= 0) {
return /* :: */[
x1,
/* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
]
];
}
}
else if (Curry._2(cmp, x1, x3) <= 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* :: */[
x3,
/* [] */0
]
]
];
}
else if (Curry._2(cmp, x2, x3) <= 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* :: */[
x1,
/* [] */0
]
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
]
];
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
}
else if (l) {
var match$2 = l[1];
if (match$2) {
var x2$1 = match$2[0];
var x1$1 = l[0];
if (Curry._2(cmp, x1$1, x2$1) <= 0) {
return /* :: */[
x1$1,
/* :: */[
x2$1,
/* [] */0
]
];
}
else {
return /* :: */[
x2$1,
/* :: */[
x1$1,
/* [] */0
]
];
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
if (exit === 1) {
var n1 = (n >> 1);
var n2 = n - n1 | 0;
var l2 = chop(n1, l);
var s1 = rev_sort(n1, l);
var s2 = rev_sort(n2, l2);
var _l1 = s1;
var _l2 = s2;
var _accu = /* [] */0;
while(true) {
var accu = _accu;
var l2$1 = _l2;
var l1 = _l1;
if (l1) {
if (l2$1) {
var h2 = l2$1[0];
var h1 = l1[0];
if (Curry._2(cmp, h1, h2) > 0) {
_accu = /* :: */[
h1,
accu
];
_l1 = l1[1];
continue ;
}
else {
_accu = /* :: */[
h2,
accu
];
_l2 = l2$1[1];
continue ;
}
}
else {
return rev_append(l1, accu);
}
}
else {
return rev_append(l2$1, accu);
}
};
}
};
var rev_sort = function (n, l) {
var exit = 0;
if (n !== 2) {
if (n !== 3) {
exit = 1;
}
else if (l) {
var match = l[1];
if (match) {
var match$1 = match[1];
if (match$1) {
var x3 = match$1[0];
var x2 = match[0];
var x1 = l[0];
if (Curry._2(cmp, x1, x2) > 0) {
if (Curry._2(cmp, x2, x3) > 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
]
];
}
else if (Curry._2(cmp, x1, x3) > 0) {
return /* :: */[
x1,
/* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
]
];
}
}
else if (Curry._2(cmp, x1, x3) > 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* :: */[
x3,
/* [] */0
]
]
];
}
else if (Curry._2(cmp, x2, x3) > 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* :: */[
x1,
/* [] */0
]
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
]
];
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
}
else if (l) {
var match$2 = l[1];
if (match$2) {
var x2$1 = match$2[0];
var x1$1 = l[0];
if (Curry._2(cmp, x1$1, x2$1) > 0) {
return /* :: */[
x1$1,
/* :: */[
x2$1,
/* [] */0
]
];
}
else {
return /* :: */[
x2$1,
/* :: */[
x1$1,
/* [] */0
]
];
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
if (exit === 1) {
var n1 = (n >> 1);
var n2 = n - n1 | 0;
var l2 = chop(n1, l);
var s1 = sort(n1, l);
var s2 = sort(n2, l2);
var _l1 = s1;
var _l2 = s2;
var _accu = /* [] */0;
while(true) {
var accu = _accu;
var l2$1 = _l2;
var l1 = _l1;
if (l1) {
if (l2$1) {
var h2 = l2$1[0];
var h1 = l1[0];
if (Curry._2(cmp, h1, h2) <= 0) {
_accu = /* :: */[
h1,
accu
];
_l1 = l1[1];
continue ;
}
else {
_accu = /* :: */[
h2,
accu
];
_l2 = l2$1[1];
continue ;
}
}
else {
return rev_append(l1, accu);
}
}
else {
return rev_append(l2$1, accu);
}
};
}
};
var len = length(l);
if (len < 2) {
return l;
}
else {
return sort(len, l);
}
}
function sort_uniq(cmp, l) {
var sort = function (n, l) {
var exit = 0;
if (n !== 2) {
if (n !== 3) {
exit = 1;
}
else if (l) {
var match = l[1];
if (match) {
var match$1 = match[1];
if (match$1) {
var x3 = match$1[0];
var x2 = match[0];
var x1 = l[0];
var c = Curry._2(cmp, x1, x2);
if (c) {
if (c < 0) {
var c$1 = Curry._2(cmp, x2, x3);
if (c$1) {
if (c$1 < 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
]
];
}
else {
var c$2 = Curry._2(cmp, x1, x3);
if (c$2) {
if (c$2 < 0) {
return /* :: */[
x1,
/* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
]
];
}
}
else {
return /* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
];
}
}
}
else {
return /* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
];
}
}
else {
var c$3 = Curry._2(cmp, x1, x3);
if (c$3) {
if (c$3 < 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* :: */[
x3,
/* [] */0
]
]
];
}
else {
var c$4 = Curry._2(cmp, x2, x3);
if (c$4) {
if (c$4 < 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* :: */[
x1,
/* [] */0
]
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
]
];
}
}
else {
return /* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
];
}
}
}
else {
return /* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
];
}
}
}
else {
var c$5 = Curry._2(cmp, x2, x3);
if (c$5) {
if (c$5 < 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
];
}
}
else {
return /* :: */[
x2,
/* [] */0
];
}
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
}
else if (l) {
var match$2 = l[1];
if (match$2) {
var x2$1 = match$2[0];
var x1$1 = l[0];
var c$6 = Curry._2(cmp, x1$1, x2$1);
if (c$6) {
if (c$6 < 0) {
return /* :: */[
x1$1,
/* :: */[
x2$1,
/* [] */0
]
];
}
else {
return /* :: */[
x2$1,
/* :: */[
x1$1,
/* [] */0
]
];
}
}
else {
return /* :: */[
x1$1,
/* [] */0
];
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
if (exit === 1) {
var n1 = (n >> 1);
var n2 = n - n1 | 0;
var l2 = chop(n1, l);
var s1 = rev_sort(n1, l);
var s2 = rev_sort(n2, l2);
var _l1 = s1;
var _l2 = s2;
var _accu = /* [] */0;
while(true) {
var accu = _accu;
var l2$1 = _l2;
var l1 = _l1;
if (l1) {
if (l2$1) {
var t2 = l2$1[1];
var h2 = l2$1[0];
var t1 = l1[1];
var h1 = l1[0];
var c$7 = Curry._2(cmp, h1, h2);
if (c$7) {
if (c$7 > 0) {
_accu = /* :: */[
h1,
accu
];
_l1 = t1;
continue ;
}
else {
_accu = /* :: */[
h2,
accu
];
_l2 = t2;
continue ;
}
}
else {
_accu = /* :: */[
h1,
accu
];
_l2 = t2;
_l1 = t1;
continue ;
}
}
else {
return rev_append(l1, accu);
}
}
else {
return rev_append(l2$1, accu);
}
};
}
};
var rev_sort = function (n, l) {
var exit = 0;
if (n !== 2) {
if (n !== 3) {
exit = 1;
}
else if (l) {
var match = l[1];
if (match) {
var match$1 = match[1];
if (match$1) {
var x3 = match$1[0];
var x2 = match[0];
var x1 = l[0];
var c = Curry._2(cmp, x1, x2);
if (c) {
if (c > 0) {
var c$1 = Curry._2(cmp, x2, x3);
if (c$1) {
if (c$1 > 0) {
return /* :: */[
x1,
/* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
]
];
}
else {
var c$2 = Curry._2(cmp, x1, x3);
if (c$2) {
if (c$2 > 0) {
return /* :: */[
x1,
/* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
]
];
}
}
else {
return /* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
];
}
}
}
else {
return /* :: */[
x1,
/* :: */[
x2,
/* [] */0
]
];
}
}
else {
var c$3 = Curry._2(cmp, x1, x3);
if (c$3) {
if (c$3 > 0) {
return /* :: */[
x2,
/* :: */[
x1,
/* :: */[
x3,
/* [] */0
]
]
];
}
else {
var c$4 = Curry._2(cmp, x2, x3);
if (c$4) {
if (c$4 > 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* :: */[
x1,
/* [] */0
]
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
]
];
}
}
else {
return /* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
];
}
}
}
else {
return /* :: */[
x2,
/* :: */[
x1,
/* [] */0
]
];
}
}
}
else {
var c$5 = Curry._2(cmp, x2, x3);
if (c$5) {
if (c$5 > 0) {
return /* :: */[
x2,
/* :: */[
x3,
/* [] */0
]
];
}
else {
return /* :: */[
x3,
/* :: */[
x2,
/* [] */0
]
];
}
}
else {
return /* :: */[
x2,
/* [] */0
];
}
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
}
else if (l) {
var match$2 = l[1];
if (match$2) {
var x2$1 = match$2[0];
var x1$1 = l[0];
var c$6 = Curry._2(cmp, x1$1, x2$1);
if (c$6) {
if (c$6 > 0) {
return /* :: */[
x1$1,
/* :: */[
x2$1,
/* [] */0
]
];
}
else {
return /* :: */[
x2$1,
/* :: */[
x1$1,
/* [] */0
]
];
}
}
else {
return /* :: */[
x1$1,
/* [] */0
];
}
}
else {
exit = 1;
}
}
else {
exit = 1;
}
if (exit === 1) {
var n1 = (n >> 1);
var n2 = n - n1 | 0;
var l2 = chop(n1, l);
var s1 = sort(n1, l);
var s2 = sort(n2, l2);
var _l1 = s1;
var _l2 = s2;
var _accu = /* [] */0;
while(true) {
var accu = _accu;
var l2$1 = _l2;
var l1 = _l1;
if (l1) {
if (l2$1) {
var t2 = l2$1[1];
var h2 = l2$1[0];
var t1 = l1[1];
var h1 = l1[0];
var c$7 = Curry._2(cmp, h1, h2);
if (c$7) {
if (c$7 < 0) {
_accu = /* :: */[
h1,
accu
];
_l1 = t1;
continue ;
}
else {
_accu = /* :: */[
h2,
accu
];
_l2 = t2;
continue ;
}
}
else {
_accu = /* :: */[
h1,
accu
];
_l2 = t2;
_l1 = t1;
continue ;
}
}
else {
return rev_append(l1, accu);
}
}
else {
return rev_append(l2$1, accu);
}
};
}
};
var len = length(l);
if (len < 2) {
return l;
}
else {
return sort(len, l);
}
}
var append = Pervasives.$at;
var concat = flatten;
var filter = find_all;
var sort = stable_sort;
var fast_sort = stable_sort;
exports.length = length;
exports.hd = hd;
exports.tl = tl;
exports.nth = nth;
exports.rev = rev;
exports.append = append;
exports.rev_append = rev_append;
exports.concat = concat;
exports.flatten = flatten;
exports.iter = iter;
exports.iteri = iteri;
exports.map = map;
exports.mapi = mapi$1;
exports.rev_map = rev_map;
exports.fold_left = fold_left;
exports.fold_right = fold_right;
exports.iter2 = iter2;
exports.map2 = map2;
exports.rev_map2 = rev_map2;
exports.fold_left2 = fold_left2;
exports.fold_right2 = fold_right2;
exports.for_all = for_all;
exports.exists = exists;
exports.for_all2 = for_all2;
exports.exists2 = exists2;
exports.mem = mem;
exports.memq = memq;
exports.find = find;
exports.filter = filter;
exports.find_all = find_all;
exports.partition = partition;
exports.assoc = assoc;
exports.assq = assq;
exports.mem_assoc = mem_assoc;
exports.mem_assq = mem_assq;
exports.remove_assoc = remove_assoc;
exports.remove_assq = remove_assq;
exports.split = split;
exports.combine = combine;
exports.sort = sort;
exports.stable_sort = stable_sort;
exports.fast_sort = fast_sort;
exports.sort_uniq = sort_uniq;
exports.merge = merge;
/* No side effect */
//////// end of list.js ////////
    return exports;
  };
_registry['map'] = function() {
    let exports = {};
//////// start of map.js ////////
'use strict';
var Curry = require("./curry");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function Make(funarg) {
var height = function (param) {
if (param) {
return param[4];
}
else {
return 0;
}
};
var create = function (l, x, d, r) {
var hl = height(l);
var hr = height(r);
return /* Node */[
l,
x,
d,
r,
hl >= hr ? hl + 1 | 0 : hr + 1 | 0
];
};
var singleton = function (x, d) {
return /* Node */[
/* Empty */0,
x,
d,
/* Empty */0,
1
];
};
var bal = function (l, x, d, r) {
var hl = l ? l[4] : 0;
var hr = r ? r[4] : 0;
if (hl > (hr + 2 | 0)) {
if (l) {
var lr = l[3];
var ld = l[2];
var lv = l[1];
var ll = l[0];
if (height(ll) >= height(lr)) {
return create(ll, lv, ld, create(lr, x, d, r));
}
else if (lr) {
return create(create(ll, lv, ld, lr[0]), lr[1], lr[2], create(lr[3], x, d, r));
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"Map.bal"
];
}
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"Map.bal"
];
}
}
else if (hr > (hl + 2 | 0)) {
if (r) {
var rr = r[3];
var rd = r[2];
var rv = r[1];
var rl = r[0];
if (height(rr) >= height(rl)) {
return create(create(l, x, d, rl), rv, rd, rr);
}
else if (rl) {
return create(create(l, x, d, rl[0]), rl[1], rl[2], create(rl[3], rv, rd, rr));
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"Map.bal"
];
}
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"Map.bal"
];
}
}
else {
return /* Node */[
l,
x,
d,
r,
hl >= hr ? hl + 1 | 0 : hr + 1 | 0
];
}
};
var is_empty = function (param) {
if (param) {
return /* false */0;
}
else {
return /* true */1;
}
};
var add = function (x, data, param) {
if (param) {
var r = param[3];
var d = param[2];
var v = param[1];
var l = param[0];
var c = Curry._2(funarg[/* compare */0], x, v);
if (c) {
if (c < 0) {
return bal(add(x, data, l), v, d, r);
}
else {
return bal(l, v, d, add(x, data, r));
}
}
else {
return /* Node */[
l,
x,
data,
r,
param[4]
];
}
}
else {
return /* Node */[
/* Empty */0,
x,
data,
/* Empty */0,
1
];
}
};
var find = function (x, _param) {
while(true) {
var param = _param;
if (param) {
var c = Curry._2(funarg[/* compare */0], x, param[1]);
if (c) {
_param = c < 0 ? param[0] : param[3];
continue ;
}
else {
return param[2];
}
}
else {
throw Caml_builtin_exceptions.not_found;
}
};
};
var mem = function (x, _param) {
while(true) {
var param = _param;
if (param) {
var c = Curry._2(funarg[/* compare */0], x, param[1]);
if (c) {
_param = c < 0 ? param[0] : param[3];
continue ;
}
else {
return /* true */1;
}
}
else {
return /* false */0;
}
};
};
var min_binding = function (_param) {
while(true) {
var param = _param;
if (param) {
var l = param[0];
if (l) {
_param = l;
continue ;
}
else {
return /* tuple */[
param[1],
param[2]
];
}
}
else {
throw Caml_builtin_exceptions.not_found;
}
};
};
var max_binding = function (_param) {
while(true) {
var param = _param;
if (param) {
var r = param[3];
if (r) {
_param = r;
continue ;
}
else {
return /* tuple */[
param[1],
param[2]
];
}
}
else {
throw Caml_builtin_exceptions.not_found;
}
};
};
var remove_min_binding = function (param) {
if (param) {
var l = param[0];
if (l) {
return bal(remove_min_binding(l), param[1], param[2], param[3]);
}
else {
return param[3];
}
}
else {
throw [
Caml_builtin_exceptions.invalid_argument,
"Map.remove_min_elt"
];
}
};
var remove = function (x, param) {
if (param) {
var r = param[3];
var d = param[2];
var v = param[1];
var l = param[0];
var c = Curry._2(funarg[/* compare */0], x, v);
if (c) {
if (c < 0) {
return bal(remove(x, l), v, d, r);
}
else {
return bal(l, v, d, remove(x, r));
}
}
else {
var t1 = l;
var t2 = r;
if (t1) {
if (t2) {
var match = min_binding(t2);
return bal(t1, match[0], match[1], remove_min_binding(t2));
}
else {
return t1;
}
}
else {
return t2;
}
}
}
else {
return /* Empty */0;
}
};
var iter = function (f, _param) {
while(true) {
var param = _param;
if (param) {
iter(f, param[0]);
Curry._2(f, param[1], param[2]);
_param = param[3];
continue ;
}
else {
return /* () */0;
}
};
};
var map = function (f, param) {
if (param) {
var l$prime = map(f, param[0]);
var d$prime = Curry._1(f, param[2]);
var r$prime = map(f, param[3]);
return /* Node */[
l$prime,
param[1],
d$prime,
r$prime,
param[4]
];
}
else {
return /* Empty */0;
}
};
var mapi = function (f, param) {
if (param) {
var v = param[1];
var l$prime = mapi(f, param[0]);
var d$prime = Curry._2(f, v, param[2]);
var r$prime = mapi(f, param[3]);
return /* Node */[
l$prime,
v,
d$prime,
r$prime,
param[4]
];
}
else {
return /* Empty */0;
}
};
var fold = function (f, _m, _accu) {
while(true) {
var accu = _accu;
var m = _m;
if (m) {
_accu = Curry._3(f, m[1], m[2], fold(f, m[0], accu));
_m = m[3];
continue ;
}
else {
return accu;
}
};
};
var for_all = function (p, _param) {
while(true) {
var param = _param;
if (param) {
if (Curry._2(p, param[1], param[2])) {
if (for_all(p, param[0])) {
_param = param[3];
continue ;
}
else {
return /* false */0;
}
}
else {
return /* false */0;
}
}
else {
return /* true */1;
}
};
};
var exists = function (p, _param) {
while(true) {
var param = _param;
if (param) {
if (Curry._2(p, param[1], param[2])) {
return /* true */1;
}
else if (exists(p, param[0])) {
return /* true */1;
}
else {
_param = param[3];
continue ;
}
}
else {
return /* false */0;
}
};
};
var add_min_binding = function (k, v, param) {
if (param) {
return bal(add_min_binding(k, v, param[0]), param[1], param[2], param[3]);
}
else {
return singleton(k, v);
}
};
var add_max_binding = function (k, v, param) {
if (param) {
return bal(param[0], param[1], param[2], add_max_binding(k, v, param[3]));
}
else {
return singleton(k, v);
}
};
var join = function (l, v, d, r) {
if (l) {
if (r) {
var rh = r[4];
var lh = l[4];
if (lh > (rh + 2 | 0)) {
return bal(l[0], l[1], l[2], join(l[3], v, d, r));
}
else if (rh > (lh + 2 | 0)) {
return bal(join(l, v, d, r[0]), r[1], r[2], r[3]);
}
else {
return create(l, v, d, r);
}
}
else {
return add_max_binding(v, d, l);
}
}
else {
return add_min_binding(v, d, r);
}
};
var concat = function (t1, t2) {
if (t1) {
if (t2) {
var match = min_binding(t2);
return join(t1, match[0], match[1], remove_min_binding(t2));
}
else {
return t1;
}
}
else {
return t2;
}
};
var concat_or_join = function (t1, v, d, t2) {
if (d) {
return join(t1, v, d[0], t2);
}
else {
return concat(t1, t2);
}
};
var split = function (x, param) {
if (param) {
var r = param[3];
var d = param[2];
var v = param[1];
var l = param[0];
var c = Curry._2(funarg[/* compare */0], x, v);
if (c) {
if (c < 0) {
var match = split(x, l);
return /* tuple */[
match[0],
match[1],
join(match[2], v, d, r)
];
}
else {
var match$1 = split(x, r);
return /* tuple */[
join(l, v, d, match$1[0]),
match$1[1],
match$1[2]
];
}
}
else {
return /* tuple */[
l,
/* Some */[d],
r
];
}
}
else {
return /* tuple */[
/* Empty */0,
/* None */0,
/* Empty */0
];
}
};
var merge = function (f, s1, s2) {
var exit = 0;
if (s1) {
var v1 = s1[1];
if (s1[4] >= height(s2)) {
var match = split(v1, s2);
return concat_or_join(merge(f, s1[0], match[0]), v1, Curry._3(f, v1, /* Some */[s1[2]], match[1]), merge(f, s1[3], match[2]));
}
else {
exit = 1;
}
}
else if (s2) {
exit = 1;
}
else {
return /* Empty */0;
}
if (exit === 1) {
if (s2) {
var v2 = s2[1];
var match$1 = split(v2, s1);
return concat_or_join(merge(f, match$1[0], s2[0]), v2, Curry._3(f, v2, match$1[1], /* Some */[s2[2]]), merge(f, match$1[2], s2[3]));
}
else {
throw [
Caml_builtin_exceptions.assert_failure,
[
"map.ml",
270,
10
]
];
}
}
};
var filter = function (p, param) {
if (param) {
var d = param[2];
var v = param[1];
var l$prime = filter(p, param[0]);
var pvd = Curry._2(p, v, d);
var r$prime = filter(p, param[3]);
if (pvd) {
return join(l$prime, v, d, r$prime);
}
else {
return concat(l$prime, r$prime);
}
}
else {
return /* Empty */0;
}
};
var partition = function (p, param) {
if (param) {
var d = param[2];
var v = param[1];
var match = partition(p, param[0]);
var lf = match[1];
var lt = match[0];
var pvd = Curry._2(p, v, d);
var match$1 = partition(p, param[3]);
var rf = match$1[1];
var rt = match$1[0];
if (pvd) {
return /* tuple */[
join(lt, v, d, rt),
concat(lf, rf)
];
}
else {
return /* tuple */[
concat(lt, rt),
join(lf, v, d, rf)
];
}
}
else {
return /* tuple */[
/* Empty */0,
/* Empty */0
];
}
};
var cons_enum = function (_m, _e) {
while(true) {
var e = _e;
var m = _m;
if (m) {
_e = /* More */[
m[1],
m[2],
m[3],
e
];
_m = m[0];
continue ;
}
else {
return e;
}
};
};
var compare = function (cmp, m1, m2) {
var _e1 = cons_enum(m1, /* End */0);
var _e2 = cons_enum(m2, /* End */0);
while(true) {
var e2 = _e2;
var e1 = _e1;
if (e1) {
if (e2) {
var c = Curry._2(funarg[/* compare */0], e1[0], e2[0]);
if (c !== 0) {
return c;
}
else {
var c$1 = Curry._2(cmp, e1[1], e2[1]);
if (c$1 !== 0) {
return c$1;
}
else {
_e2 = cons_enum(e2[2], e2[3]);
_e1 = cons_enum(e1[2], e1[3]);
continue ;
}
}
}
else {
return 1;
}
}
else if (e2) {
return -1;
}
else {
return 0;
}
};
};
var equal = function (cmp, m1, m2) {
var _e1 = cons_enum(m1, /* End */0);
var _e2 = cons_enum(m2, /* End */0);
while(true) {
var e2 = _e2;
var e1 = _e1;
if (e1) {
if (e2) {
if (Curry._2(funarg[/* compare */0], e1[0], e2[0])) {
return /* false */0;
}
else if (Curry._2(cmp, e1[1], e2[1])) {
_e2 = cons_enum(e2[2], e2[3]);
_e1 = cons_enum(e1[2], e1[3]);
continue ;
}
else {
return /* false */0;
}
}
else {
return /* false */0;
}
}
else if (e2) {
return /* false */0;
}
else {
return /* true */1;
}
};
};
var cardinal = function (param) {
if (param) {
return (cardinal(param[0]) + 1 | 0) + cardinal(param[3]) | 0;
}
else {
return 0;
}
};
var bindings_aux = function (_accu, _param) {
while(true) {
var param = _param;
var accu = _accu;
if (param) {
_param = param[0];
_accu = /* :: */[
/* tuple */[
param[1],
param[2]
],
bindings_aux(accu, param[3])
];
continue ;
}
else {
return accu;
}
};
};
var bindings = function (s) {
return bindings_aux(/* [] */0, s);
};
return [
/* Empty */0,
is_empty,
mem,
add,
singleton,
remove,
merge,
compare,
equal,
iter,
fold,
for_all,
exists,
filter,
partition,
cardinal,
bindings,
min_binding,
max_binding,
min_binding,
split,
find,
map,
mapi
];
}
exports.Make = Make;
/* No side effect */
//////// end of map.js ////////
    return exports;
  };
_registry['numeric_error'] = function() {
    let exports = {};
//////// start of numeric_error.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Caml_exceptions = require("bs-platform/lib/js/caml_exceptions");
var IntegerOverflow = Caml_exceptions.create("Numeric_error.IntegerOverflow");
var IntegerDivideByZero = Caml_exceptions.create("Numeric_error.IntegerDivideByZero");
var InvalidConversionToInteger = Caml_exceptions.create("Numeric_error.InvalidConversionToInteger");
exports.IntegerOverflow = IntegerOverflow;
exports.IntegerDivideByZero = IntegerDivideByZero;
exports.InvalidConversionToInteger = InvalidConversionToInteger;
/* No side effect */
//////// end of numeric_error.js ////////
    return exports;
  };
_registry['obj'] = function() {
    let exports = {};
//////// start of obj.js ////////
'use strict';
var Marshal = require("./marshal");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
function double_field(x, i) {
return x[i];
}
function set_double_field(x, i, v) {
x[i] = v;
return /* () */0;
}
function marshal() {
return function () {
throw "caml_output_value_to_string not implemented by bucklescript yet\n";
}();
}
function unmarshal(str, pos) {
return /* tuple */[
Marshal.from_bytes(str, pos),
pos + Marshal.total_size(str, pos) | 0
];
}
function extension_slot(x) {
var slot = x.length !== undefined && (x.tag | 0) !== 248 && x.length >= 1 ? x[0] : x;
var name;
if (slot.length !== undefined && slot.tag === 248) {
name = slot[0];
}
else {
throw Caml_builtin_exceptions.not_found;
}
if (name.tag === 252) {
return slot;
}
else {
throw Caml_builtin_exceptions.not_found;
}
}
function extension_name(x) {
try {
var slot = extension_slot(x);
return slot[0];
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Obj.extension_name"
];
}
else {
throw exn;
}
}
}
function extension_id(x) {
try {
var slot = extension_slot(x);
return slot[1];
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Obj.extension_id"
];
}
else {
throw exn;
}
}
}
function extension_slot$1(x) {
try {
return extension_slot(x);
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
throw [
Caml_builtin_exceptions.invalid_argument,
"Obj.extension_slot"
];
}
else {
throw exn;
}
}
}
var first_non_constant_constructor_tag = 0;
var last_non_constant_constructor_tag = 245;
var lazy_tag = 246;
var closure_tag = 247;
var object_tag = 248;
var infix_tag = 249;
var forward_tag = 250;
var no_scan_tag = 251;
var abstract_tag = 251;
var string_tag = 252;
var double_tag = 253;
var double_array_tag = 254;
var custom_tag = 255;
var final_tag = 255;
var int_tag = 1000;
var out_of_heap_tag = 1001;
var unaligned_tag = 1002;
exports.double_field = double_field;
exports.set_double_field = set_double_field;
exports.first_non_constant_constructor_tag = first_non_constant_constructor_tag;
exports.last_non_constant_constructor_tag = last_non_constant_constructor_tag;
exports.lazy_tag = lazy_tag;
exports.closure_tag = closure_tag;
exports.object_tag = object_tag;
exports.infix_tag = infix_tag;
exports.forward_tag = forward_tag;
exports.no_scan_tag = no_scan_tag;
exports.abstract_tag = abstract_tag;
exports.string_tag = string_tag;
exports.double_tag = double_tag;
exports.double_array_tag = double_array_tag;
exports.custom_tag = custom_tag;
exports.final_tag = final_tag;
exports.int_tag = int_tag;
exports.out_of_heap_tag = out_of_heap_tag;
exports.unaligned_tag = unaligned_tag;
exports.extension_name = extension_name;
exports.extension_id = extension_id;
exports.extension_slot = extension_slot$1;
exports.marshal = marshal;
exports.unmarshal = unmarshal;
/* No side effect */
//////// end of obj.js ////////
    return exports;
  };
_registry['oo'] = function() {
    let exports = {};
//////// start of oo.js ////////
'use strict';
var CamlinternalOO = require("./camlinternalOO");
var copy = CamlinternalOO.copy;
var new_method = CamlinternalOO.public_method_label;
var public_method_label = CamlinternalOO.public_method_label;
exports.copy = copy;
exports.new_method = new_method;
exports.public_method_label = public_method_label;
/* No side effect */
//////// end of oo.js ////////
    return exports;
  };
_registry['operators'] = function() {
    let exports = {};
//////// start of operators.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Block = require("bs-platform/lib/js/block");
var Source = require("./source");
function i32_const(n) {
return /* Const */Block.__(15, [Source.$at$at(/* I32 */Block.__(0, [n[/* it */1]]), n[/* at */0])]);
}
function i64_const(n) {
return /* Const */Block.__(15, [Source.$at$at(/* I64 */Block.__(1, [n[/* it */1]]), n[/* at */0])]);
}
function f32_const(n) {
return /* Const */Block.__(15, [Source.$at$at(/* F32 */Block.__(2, [n[/* it */1]]), n[/* at */0])]);
}
function f64_const(n) {
return /* Const */Block.__(15, [Source.$at$at(/* F64 */Block.__(3, [n[/* it */1]]), n[/* at */0])]);
}
function block(ts, es) {
return /* Block */Block.__(0, [
ts,
es
]);
}
function loop(ts, es) {
return /* Loop */Block.__(1, [
ts,
es
]);
}
function br(x) {
return /* Br */Block.__(3, [x]);
}
function br_if(x) {
return /* BrIf */Block.__(4, [x]);
}
function br_table(xs, x) {
return /* BrTable */Block.__(5, [
xs,
x
]);
}
function if_(ts, es1, es2) {
return /* If */Block.__(2, [
ts,
es1,
es2
]);
}
function call(x) {
return /* Call */Block.__(6, [x]);
}
function call_indirect(x) {
return /* CallIndirect */Block.__(7, [x]);
}
function get_local(x) {
return /* GetLocal */Block.__(8, [x]);
}
function set_local(x) {
return /* SetLocal */Block.__(9, [x]);
}
function tee_local(x) {
return /* TeeLocal */Block.__(10, [x]);
}
function get_global(x) {
return /* GetGlobal */Block.__(11, [x]);
}
function set_global(x) {
return /* SetGlobal */Block.__(12, [x]);
}
function i32_load(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I32Type */0,
/* align */align,
/* offset */offset,
/* sz : None */0
]]);
}
function i64_load(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : None */0
]]);
}
function f32_load(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : F32Type */2,
/* align */align,
/* offset */offset,
/* sz : None */0
]]);
}
function f64_load(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : F64Type */3,
/* align */align,
/* offset */offset,
/* sz : None */0
]]);
}
function i32_load8_s(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I32Type */0,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem8 */0,
/* SX */0
]]
]]);
}
function i32_load8_u(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I32Type */0,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem8 */0,
/* ZX */1
]]
]]);
}
function i32_load16_s(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I32Type */0,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem16 */1,
/* SX */0
]]
]]);
}
function i32_load16_u(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I32Type */0,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem16 */1,
/* ZX */1
]]
]]);
}
function i64_load8_s(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem8 */0,
/* SX */0
]]
]]);
}
function i64_load8_u(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem8 */0,
/* ZX */1
]]
]]);
}
function i64_load16_s(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem16 */1,
/* SX */0
]]
]]);
}
function i64_load16_u(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem16 */1,
/* ZX */1
]]
]]);
}
function i64_load32_s(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem32 */2,
/* SX */0
]]
]]);
}
function i64_load32_u(align, offset) {
return /* Load */Block.__(13, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : Some */[/* tuple */[
/* Mem32 */2,
/* ZX */1
]]
]]);
}
function i32_store(align, offset) {
return /* Store */Block.__(14, [/* record */[
/* ty : I32Type */0,
/* align */align,
/* offset */offset,
/* sz : None */0
]]);
}
function i64_store(align, offset) {
return /* Store */Block.__(14, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : None */0
]]);
}
function f32_store(align, offset) {
return /* Store */Block.__(14, [/* record */[
/* ty : F32Type */2,
/* align */align,
/* offset */offset,
/* sz : None */0
]]);
}
function f64_store(align, offset) {
return /* Store */Block.__(14, [/* record */[
/* ty : F64Type */3,
/* align */align,
/* offset */offset,
/* sz : None */0
]]);
}
function i32_store8(align, offset) {
return /* Store */Block.__(14, [/* record */[
/* ty : I32Type */0,
/* align */align,
/* offset */offset,
/* sz : Some */[/* Mem8 */0]
]]);
}
function i32_store16(align, offset) {
return /* Store */Block.__(14, [/* record */[
/* ty : I32Type */0,
/* align */align,
/* offset */offset,
/* sz : Some */[/* Mem16 */1]
]]);
}
function i64_store8(align, offset) {
return /* Store */Block.__(14, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : Some */[/* Mem8 */0]
]]);
}
function i64_store16(align, offset) {
return /* Store */Block.__(14, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : Some */[/* Mem16 */1]
]]);
}
function i64_store32(align, offset) {
return /* Store */Block.__(14, [/* record */[
/* ty : I64Type */1,
/* align */align,
/* offset */offset,
/* sz : Some */[/* Mem32 */2]
]]);
}
var unreachable = /* Unreachable */0;
var nop = /* Nop */1;
var drop = /* Drop */3;
var $$return = /* Return */2;
var select = /* Select */4;
var i32_clz = /* Unary */Block.__(18, [/* I32 */Block.__(0, [/* Clz */0])]);
var i32_ctz = /* Unary */Block.__(18, [/* I32 */Block.__(0, [/* Ctz */1])]);
var i32_popcnt = /* Unary */Block.__(18, [/* I32 */Block.__(0, [/* Popcnt */2])]);
var i64_clz = /* Unary */Block.__(18, [/* I64 */Block.__(1, [/* Clz */0])]);
var i64_ctz = /* Unary */Block.__(18, [/* I64 */Block.__(1, [/* Ctz */1])]);
var i64_popcnt = /* Unary */Block.__(18, [/* I64 */Block.__(1, [/* Popcnt */2])]);
var f32_neg = /* Unary */Block.__(18, [/* F32 */Block.__(2, [/* Neg */0])]);
var f32_abs = /* Unary */Block.__(18, [/* F32 */Block.__(2, [/* Abs */1])]);
var f32_sqrt = /* Unary */Block.__(18, [/* F32 */Block.__(2, [/* Sqrt */6])]);
var f32_ceil = /* Unary */Block.__(18, [/* F32 */Block.__(2, [/* Ceil */2])]);
var f32_floor = /* Unary */Block.__(18, [/* F32 */Block.__(2, [/* Floor */3])]);
var f32_trunc = /* Unary */Block.__(18, [/* F32 */Block.__(2, [/* Trunc */4])]);
var f32_nearest = /* Unary */Block.__(18, [/* F32 */Block.__(2, [/* Nearest */5])]);
var f64_neg = /* Unary */Block.__(18, [/* F64 */Block.__(3, [/* Neg */0])]);
var f64_abs = /* Unary */Block.__(18, [/* F64 */Block.__(3, [/* Abs */1])]);
var f64_sqrt = /* Unary */Block.__(18, [/* F64 */Block.__(3, [/* Sqrt */6])]);
var f64_ceil = /* Unary */Block.__(18, [/* F64 */Block.__(3, [/* Ceil */2])]);
var f64_floor = /* Unary */Block.__(18, [/* F64 */Block.__(3, [/* Floor */3])]);
var f64_trunc = /* Unary */Block.__(18, [/* F64 */Block.__(3, [/* Trunc */4])]);
var f64_nearest = /* Unary */Block.__(18, [/* F64 */Block.__(3, [/* Nearest */5])]);
var i32_add = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* Add */0])]);
var i32_sub = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* Sub */1])]);
var i32_mul = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* Mul */2])]);
var i32_div_s = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* DivS */3])]);
var i32_div_u = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* DivU */4])]);
var i32_rem_s = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* RemS */5])]);
var i32_rem_u = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* RemU */6])]);
var i32_and = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* And */7])]);
var i32_or = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* Or */8])]);
var i32_xor = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* Xor */9])]);
var i32_shl = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* Shl */10])]);
var i32_shr_s = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* ShrS */11])]);
var i32_shr_u = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* ShrU */12])]);
var i32_rotl = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* Rotl */13])]);
var i32_rotr = /* Binary */Block.__(19, [/* I32 */Block.__(0, [/* Rotr */14])]);
var i64_add = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* Add */0])]);
var i64_sub = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* Sub */1])]);
var i64_mul = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* Mul */2])]);
var i64_div_s = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* DivS */3])]);
var i64_div_u = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* DivU */4])]);
var i64_rem_s = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* RemS */5])]);
var i64_rem_u = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* RemU */6])]);
var i64_and = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* And */7])]);
var i64_or = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* Or */8])]);
var i64_xor = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* Xor */9])]);
var i64_shl = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* Shl */10])]);
var i64_shr_s = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* ShrS */11])]);
var i64_shr_u = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* ShrU */12])]);
var i64_rotl = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* Rotl */13])]);
var i64_rotr = /* Binary */Block.__(19, [/* I64 */Block.__(1, [/* Rotr */14])]);
var f32_add = /* Binary */Block.__(19, [/* F32 */Block.__(2, [/* Add */0])]);
var f32_sub = /* Binary */Block.__(19, [/* F32 */Block.__(2, [/* Sub */1])]);
var f32_mul = /* Binary */Block.__(19, [/* F32 */Block.__(2, [/* Mul */2])]);
var f32_div = /* Binary */Block.__(19, [/* F32 */Block.__(2, [/* Div */3])]);
var f32_min = /* Binary */Block.__(19, [/* F32 */Block.__(2, [/* Min */4])]);
var f32_max = /* Binary */Block.__(19, [/* F32 */Block.__(2, [/* Max */5])]);
var f32_copysign = /* Binary */Block.__(19, [/* F32 */Block.__(2, [/* CopySign */6])]);
var f64_add = /* Binary */Block.__(19, [/* F64 */Block.__(3, [/* Add */0])]);
var f64_sub = /* Binary */Block.__(19, [/* F64 */Block.__(3, [/* Sub */1])]);
var f64_mul = /* Binary */Block.__(19, [/* F64 */Block.__(3, [/* Mul */2])]);
var f64_div = /* Binary */Block.__(19, [/* F64 */Block.__(3, [/* Div */3])]);
var f64_min = /* Binary */Block.__(19, [/* F64 */Block.__(3, [/* Min */4])]);
var f64_max = /* Binary */Block.__(19, [/* F64 */Block.__(3, [/* Max */5])]);
var f64_copysign = /* Binary */Block.__(19, [/* F64 */Block.__(3, [/* CopySign */6])]);
var i32_eqz = /* Test */Block.__(16, [/* I32 */Block.__(0, [/* Eqz */0])]);
var i64_eqz = /* Test */Block.__(16, [/* I64 */Block.__(1, [/* Eqz */0])]);
var i32_eq = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* Eq */0])]);
var i32_ne = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* Ne */1])]);
var i32_lt_s = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* LtS */2])]);
var i32_lt_u = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* LtU */3])]);
var i32_le_s = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* LeS */6])]);
var i32_le_u = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* LeU */7])]);
var i32_gt_s = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* GtS */4])]);
var i32_gt_u = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* GtU */5])]);
var i32_ge_s = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* GeS */8])]);
var i32_ge_u = /* Compare */Block.__(17, [/* I32 */Block.__(0, [/* GeU */9])]);
var i64_eq = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* Eq */0])]);
var i64_ne = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* Ne */1])]);
var i64_lt_s = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* LtS */2])]);
var i64_lt_u = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* LtU */3])]);
var i64_le_s = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* LeS */6])]);
var i64_le_u = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* LeU */7])]);
var i64_gt_s = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* GtS */4])]);
var i64_gt_u = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* GtU */5])]);
var i64_ge_s = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* GeS */8])]);
var i64_ge_u = /* Compare */Block.__(17, [/* I64 */Block.__(1, [/* GeU */9])]);
var f32_eq = /* Compare */Block.__(17, [/* F32 */Block.__(2, [/* Eq */0])]);
var f32_ne = /* Compare */Block.__(17, [/* F32 */Block.__(2, [/* Ne */1])]);
var f32_lt = /* Compare */Block.__(17, [/* F32 */Block.__(2, [/* Lt */2])]);
var f32_le = /* Compare */Block.__(17, [/* F32 */Block.__(2, [/* Le */4])]);
var f32_gt = /* Compare */Block.__(17, [/* F32 */Block.__(2, [/* Gt */3])]);
var f32_ge = /* Compare */Block.__(17, [/* F32 */Block.__(2, [/* Ge */5])]);
var f64_eq = /* Compare */Block.__(17, [/* F64 */Block.__(3, [/* Eq */0])]);
var f64_ne = /* Compare */Block.__(17, [/* F64 */Block.__(3, [/* Ne */1])]);
var f64_lt = /* Compare */Block.__(17, [/* F64 */Block.__(3, [/* Lt */2])]);
var f64_le = /* Compare */Block.__(17, [/* F64 */Block.__(3, [/* Le */4])]);
var f64_gt = /* Compare */Block.__(17, [/* F64 */Block.__(3, [/* Gt */3])]);
var f64_ge = /* Compare */Block.__(17, [/* F64 */Block.__(3, [/* Ge */5])]);
var i32_wrap_i64 = /* Convert */Block.__(20, [/* I32 */Block.__(0, [/* WrapI64 */2])]);
var i32_trunc_s_f32 = /* Convert */Block.__(20, [/* I32 */Block.__(0, [/* TruncSF32 */3])]);
var i32_trunc_u_f32 = /* Convert */Block.__(20, [/* I32 */Block.__(0, [/* TruncUF32 */4])]);
var i32_trunc_s_f64 = /* Convert */Block.__(20, [/* I32 */Block.__(0, [/* TruncSF64 */5])]);
var i32_trunc_u_f64 = /* Convert */Block.__(20, [/* I32 */Block.__(0, [/* TruncUF64 */6])]);
var i64_extend_s_i32 = /* Convert */Block.__(20, [/* I64 */Block.__(1, [/* ExtendSI32 */0])]);
var i64_extend_u_i32 = /* Convert */Block.__(20, [/* I64 */Block.__(1, [/* ExtendUI32 */1])]);
var i64_trunc_s_f32 = /* Convert */Block.__(20, [/* I64 */Block.__(1, [/* TruncSF32 */3])]);
var i64_trunc_u_f32 = /* Convert */Block.__(20, [/* I64 */Block.__(1, [/* TruncUF32 */4])]);
var i64_trunc_s_f64 = /* Convert */Block.__(20, [/* I64 */Block.__(1, [/* TruncSF64 */5])]);
var i64_trunc_u_f64 = /* Convert */Block.__(20, [/* I64 */Block.__(1, [/* TruncUF64 */6])]);
var f32_convert_s_i32 = /* Convert */Block.__(20, [/* F32 */Block.__(2, [/* ConvertSI32 */0])]);
var f32_convert_u_i32 = /* Convert */Block.__(20, [/* F32 */Block.__(2, [/* ConvertUI32 */1])]);
var f32_convert_s_i64 = /* Convert */Block.__(20, [/* F32 */Block.__(2, [/* ConvertSI64 */2])]);
var f32_convert_u_i64 = /* Convert */Block.__(20, [/* F32 */Block.__(2, [/* ConvertUI64 */3])]);
var f32_demote_f64 = /* Convert */Block.__(20, [/* F32 */Block.__(2, [/* DemoteF64 */5])]);
var f64_convert_s_i32 = /* Convert */Block.__(20, [/* F64 */Block.__(3, [/* ConvertSI32 */0])]);
var f64_convert_u_i32 = /* Convert */Block.__(20, [/* F64 */Block.__(3, [/* ConvertUI32 */1])]);
var f64_convert_s_i64 = /* Convert */Block.__(20, [/* F64 */Block.__(3, [/* ConvertSI64 */2])]);
var f64_convert_u_i64 = /* Convert */Block.__(20, [/* F64 */Block.__(3, [/* ConvertUI64 */3])]);
var f64_promote_f32 = /* Convert */Block.__(20, [/* F64 */Block.__(3, [/* PromoteF32 */4])]);
var i32_reinterpret_f32 = /* Convert */Block.__(20, [/* I32 */Block.__(0, [/* ReinterpretFloat */7])]);
var i64_reinterpret_f64 = /* Convert */Block.__(20, [/* I64 */Block.__(1, [/* ReinterpretFloat */7])]);
var f32_reinterpret_i32 = /* Convert */Block.__(20, [/* F32 */Block.__(2, [/* ReinterpretInt */6])]);
var f64_reinterpret_i64 = /* Convert */Block.__(20, [/* F64 */Block.__(3, [/* ReinterpretInt */6])]);
var current_memory = /* CurrentMemory */5;
var grow_memory = /* GrowMemory */6;
exports.i32_const = i32_const;
exports.i64_const = i64_const;
exports.f32_const = f32_const;
exports.f64_const = f64_const;
exports.unreachable = unreachable;
exports.nop = nop;
exports.drop = drop;
exports.block = block;
exports.loop = loop;
exports.br = br;
exports.br_if = br_if;
exports.br_table = br_table;
exports.$$return = $$return;
exports.if_ = if_;
exports.select = select;
exports.call = call;
exports.call_indirect = call_indirect;
exports.get_local = get_local;
exports.set_local = set_local;
exports.tee_local = tee_local;
exports.get_global = get_global;
exports.set_global = set_global;
exports.i32_load = i32_load;
exports.i64_load = i64_load;
exports.f32_load = f32_load;
exports.f64_load = f64_load;
exports.i32_load8_s = i32_load8_s;
exports.i32_load8_u = i32_load8_u;
exports.i32_load16_s = i32_load16_s;
exports.i32_load16_u = i32_load16_u;
exports.i64_load8_s = i64_load8_s;
exports.i64_load8_u = i64_load8_u;
exports.i64_load16_s = i64_load16_s;
exports.i64_load16_u = i64_load16_u;
exports.i64_load32_s = i64_load32_s;
exports.i64_load32_u = i64_load32_u;
exports.i32_store = i32_store;
exports.i64_store = i64_store;
exports.f32_store = f32_store;
exports.f64_store = f64_store;
exports.i32_store8 = i32_store8;
exports.i32_store16 = i32_store16;
exports.i64_store8 = i64_store8;
exports.i64_store16 = i64_store16;
exports.i64_store32 = i64_store32;
exports.i32_clz = i32_clz;
exports.i32_ctz = i32_ctz;
exports.i32_popcnt = i32_popcnt;
exports.i64_clz = i64_clz;
exports.i64_ctz = i64_ctz;
exports.i64_popcnt = i64_popcnt;
exports.f32_neg = f32_neg;
exports.f32_abs = f32_abs;
exports.f32_sqrt = f32_sqrt;
exports.f32_ceil = f32_ceil;
exports.f32_floor = f32_floor;
exports.f32_trunc = f32_trunc;
exports.f32_nearest = f32_nearest;
exports.f64_neg = f64_neg;
exports.f64_abs = f64_abs;
exports.f64_sqrt = f64_sqrt;
exports.f64_ceil = f64_ceil;
exports.f64_floor = f64_floor;
exports.f64_trunc = f64_trunc;
exports.f64_nearest = f64_nearest;
exports.i32_add = i32_add;
exports.i32_sub = i32_sub;
exports.i32_mul = i32_mul;
exports.i32_div_s = i32_div_s;
exports.i32_div_u = i32_div_u;
exports.i32_rem_s = i32_rem_s;
exports.i32_rem_u = i32_rem_u;
exports.i32_and = i32_and;
exports.i32_or = i32_or;
exports.i32_xor = i32_xor;
exports.i32_shl = i32_shl;
exports.i32_shr_s = i32_shr_s;
exports.i32_shr_u = i32_shr_u;
exports.i32_rotl = i32_rotl;
exports.i32_rotr = i32_rotr;
exports.i64_add = i64_add;
exports.i64_sub = i64_sub;
exports.i64_mul = i64_mul;
exports.i64_div_s = i64_div_s;
exports.i64_div_u = i64_div_u;
exports.i64_rem_s = i64_rem_s;
exports.i64_rem_u = i64_rem_u;
exports.i64_and = i64_and;
exports.i64_or = i64_or;
exports.i64_xor = i64_xor;
exports.i64_shl = i64_shl;
exports.i64_shr_s = i64_shr_s;
exports.i64_shr_u = i64_shr_u;
exports.i64_rotl = i64_rotl;
exports.i64_rotr = i64_rotr;
exports.f32_add = f32_add;
exports.f32_sub = f32_sub;
exports.f32_mul = f32_mul;
exports.f32_div = f32_div;
exports.f32_min = f32_min;
exports.f32_max = f32_max;
exports.f32_copysign = f32_copysign;
exports.f64_add = f64_add;
exports.f64_sub = f64_sub;
exports.f64_mul = f64_mul;
exports.f64_div = f64_div;
exports.f64_min = f64_min;
exports.f64_max = f64_max;
exports.f64_copysign = f64_copysign;
exports.i32_eqz = i32_eqz;
exports.i64_eqz = i64_eqz;
exports.i32_eq = i32_eq;
exports.i32_ne = i32_ne;
exports.i32_lt_s = i32_lt_s;
exports.i32_lt_u = i32_lt_u;
exports.i32_le_s = i32_le_s;
exports.i32_le_u = i32_le_u;
exports.i32_gt_s = i32_gt_s;
exports.i32_gt_u = i32_gt_u;
exports.i32_ge_s = i32_ge_s;
exports.i32_ge_u = i32_ge_u;
exports.i64_eq = i64_eq;
exports.i64_ne = i64_ne;
exports.i64_lt_s = i64_lt_s;
exports.i64_lt_u = i64_lt_u;
exports.i64_le_s = i64_le_s;
exports.i64_le_u = i64_le_u;
exports.i64_gt_s = i64_gt_s;
exports.i64_gt_u = i64_gt_u;
exports.i64_ge_s = i64_ge_s;
exports.i64_ge_u = i64_ge_u;
exports.f32_eq = f32_eq;
exports.f32_ne = f32_ne;
exports.f32_lt = f32_lt;
exports.f32_le = f32_le;
exports.f32_gt = f32_gt;
exports.f32_ge = f32_ge;
exports.f64_eq = f64_eq;
exports.f64_ne = f64_ne;
exports.f64_lt = f64_lt;
exports.f64_le = f64_le;
exports.f64_gt = f64_gt;
exports.f64_ge = f64_ge;
exports.i32_wrap_i64 = i32_wrap_i64;
exports.i32_trunc_s_f32 = i32_trunc_s_f32;
exports.i32_trunc_u_f32 = i32_trunc_u_f32;
exports.i32_trunc_s_f64 = i32_trunc_s_f64;
exports.i32_trunc_u_f64 = i32_trunc_u_f64;
exports.i64_extend_s_i32 = i64_extend_s_i32;
exports.i64_extend_u_i32 = i64_extend_u_i32;
exports.i64_trunc_s_f32 = i64_trunc_s_f32;
exports.i64_trunc_u_f32 = i64_trunc_u_f32;
exports.i64_trunc_s_f64 = i64_trunc_s_f64;
exports.i64_trunc_u_f64 = i64_trunc_u_f64;
exports.f32_convert_s_i32 = f32_convert_s_i32;
exports.f32_convert_u_i32 = f32_convert_u_i32;
exports.f32_convert_s_i64 = f32_convert_s_i64;
exports.f32_convert_u_i64 = f32_convert_u_i64;
exports.f32_demote_f64 = f32_demote_f64;
exports.f64_convert_s_i32 = f64_convert_s_i32;
exports.f64_convert_u_i32 = f64_convert_u_i32;
exports.f64_convert_s_i64 = f64_convert_s_i64;
exports.f64_convert_u_i64 = f64_convert_u_i64;
exports.f64_promote_f32 = f64_promote_f32;
exports.i32_reinterpret_f32 = i32_reinterpret_f32;
exports.i64_reinterpret_f64 = i64_reinterpret_f64;
exports.f32_reinterpret_i32 = f32_reinterpret_i32;
exports.f64_reinterpret_i64 = f64_reinterpret_i64;
exports.current_memory = current_memory;
exports.grow_memory = grow_memory;
/* No side effect */
//////// end of operators.js ////////
    return exports;
  };
_registry['parse'] = function() {
    let exports = {};
//////// start of parse.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Curry = require("bs-platform/lib/js/curry");
var Lexer = require("./lexer");
var Lexing = require("bs-platform/lib/js/lexing");
var Parser = require("./parser");
var Script = require("./script");
var Source = require("./source");
var Caml_obj = require("bs-platform/lib/js/caml_obj");
function parse$prime(name, lexbuf, start) {
var init = lexbuf[/* lex_curr_p */11];
lexbuf[/* lex_curr_p */11] = /* record */[
/* pos_fname */name,
/* pos_lnum */init[/* pos_lnum */1],
/* pos_bol */init[/* pos_bol */2],
/* pos_cnum */init[/* pos_cnum */3]
];
try {
return Curry._2(start, Lexer.token, lexbuf);
}
catch (exn){
if (exn[0] === Script.Syntax) {
var region = exn[1];
var region$prime = Caml_obj.caml_notequal(region, Source.no_region) ? region : /* record */[
/* left */Lexer.convert_pos(lexbuf[/* lex_start_p */10]),
/* right */Lexer.convert_pos(lexbuf[/* lex_curr_p */11])
];
throw [
Script.Syntax,
region$prime,
exn[2]
];
}
else {
throw exn;
}
}
}
function parse(name, lexbuf, param) {
switch (param) {
case 0 :
return parse$prime(name, lexbuf, Parser.module1);
case 1 :
return parse$prime(name, lexbuf, Parser.script);
case 2 :
return parse$prime(name, lexbuf, Parser.script1);
}
}
function string_to(start, s) {
var lexbuf = Lexing.from_string(s);
return parse("string", lexbuf, start);
}
function string_to_script(s) {
return string_to(/* Script */1, s);
}
function string_to_module(s) {
return string_to(/* Module */0, s);
}
var Syntax = Script.Syntax;
exports.Syntax = Syntax;
exports.parse = parse;
exports.string_to_script = string_to_script;
exports.string_to_module = string_to_module;
/* Lexer Not a pure module */
//////// end of parse.js ////////
    return exports;
  };
_registry['parser'] = function() {
    let exports = {};
//////// start of parser.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Ast = require("./ast");
var I32 = require("./i32");
var Lib = require("./lib");
var $$Map = require("bs-platform/lib/js/map");
var List = require("bs-platform/lib/js/list");
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var Script = require("./script");
var Source = require("./source");
var $$String = require("bs-platform/lib/js/string");
var Parsing = require("bs-platform/lib/js/parsing");
var Caml_obj = require("bs-platform/lib/js/caml_obj");
var Operators = require("./operators");
var Pervasives = require("bs-platform/lib/js/pervasives");
var Caml_format = require("bs-platform/lib/js/caml_format");
var Caml_builtin_exceptions = require("bs-platform/lib/js/caml_builtin_exceptions");
function parse_error(msg) {
var msg$1 = msg === "syntax error" ? "unexpected token" : msg;
throw [
Script.Syntax,
Source.no_region,
msg$1
];
}
function position_to_pos(position) {
return /* record */[
/* file */position[/* pos_fname */0],
/* line */position[/* pos_lnum */1],
/* column */position[/* pos_cnum */3] - position[/* pos_bol */2] | 0
];
}
function positions_to_region(position1, position2) {
return /* record */[
/* left */position_to_pos(position1),
/* right */position_to_pos(position2)
];
}
function at() {
return positions_to_region(Parsing.symbol_start_pos(/* () */0), Parsing.symbol_end_pos(/* () */0));
}
function ati(i) {
return positions_to_region(Parsing.rhs_start_pos(i), Parsing.rhs_end_pos(i));
}
function literal(f, s) {
try {
return Curry._1(f, s);
}
catch (exn){
if (exn[0] === Caml_builtin_exceptions.failure) {
throw [
Script.Syntax,
s[/* at */0],
"constant out of range"
];
}
else {
throw exn;
}
}
}
function nat(s, at) {
try {
var n = Caml_format.caml_int_of_string(s);
if (n >= 0) {
return n;
}
else {
throw [
Caml_builtin_exceptions.failure,
""
];
}
}
catch (exn){
if (exn[0] === Caml_builtin_exceptions.failure) {
throw [
Script.Syntax,
at,
"integer constant out of range"
];
}
else {
throw exn;
}
}
}
function nat32(s, at) {
try {
return Curry._1(I32.of_string_u, s);
}
catch (exn){
if (exn[0] === Caml_builtin_exceptions.failure) {
throw [
Script.Syntax,
at,
"i32 constant out of range"
];
}
else {
throw exn;
}
}
}
var VarMap = $$Map.Make([$$String.compare]);
function empty_context() {
return /* record */[
/* types : record */[
/* tmap */VarMap[/* empty */0],
/* tlist : [] */0
],
/* tables : record */[
/* map */VarMap[/* empty */0],
/* count */0
],
/* memories : record */[
/* map */VarMap[/* empty */0],
/* count */0
],
/* funcs : record */[
/* map */VarMap[/* empty */0],
/* count */0
],
/* locals : record */[
/* map */VarMap[/* empty */0],
/* count */0
],
/* globals : record */[
/* map */VarMap[/* empty */0],
/* count */0
],
/* labels */VarMap[/* empty */0]
];
}
function enter_func(c) {
return /* record */[
/* types */c[/* types */0],
/* tables */c[/* tables */1],
/* memories */c[/* memories */2],
/* funcs */c[/* funcs */3],
/* locals : record */[
/* map */VarMap[/* empty */0],
/* count */0
],
/* globals */c[/* globals */5],
/* labels */VarMap[/* empty */0]
];
}
function type_(c, x) {
try {
return Curry._2(VarMap[/* find */21], x[/* it */1], c[/* types */0][/* tmap */0]);
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
throw [
Script.Syntax,
x[/* at */0],
"unknown type " + x[/* it */1]
];
}
else {
throw exn;
}
}
}
function lookup(category, space, x) {
try {
return Curry._2(VarMap[/* find */21], x[/* it */1], space[/* map */0]);
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
throw [
Script.Syntax,
x[/* at */0],
"unknown " + (category + (" " + x[/* it */1]))
];
}
else {
throw exn;
}
}
}
function func(c, x) {
return lookup("function", c[/* funcs */3], x);
}
function local(c, x) {
return lookup("local", c[/* locals */4], x);
}
function global(c, x) {
return lookup("global", c[/* globals */5], x);
}
function table(c, x) {
return lookup("table", c[/* tables */1], x);
}
function memory(c, x) {
return lookup("memory", c[/* memories */2], x);
}
function label(c, x) {
try {
return Curry._2(VarMap[/* find */21], x[/* it */1], c[/* labels */6]);
}
catch (exn){
if (exn === Caml_builtin_exceptions.not_found) {
throw [
Script.Syntax,
x[/* at */0],
"unknown label " + x[/* it */1]
];
}
else {
throw exn;
}
}
}
function anon_type(c, ty) {
c[/* types */0][/* tlist */1] = Pervasives.$at(c[/* types */0][/* tlist */1], /* :: */[
ty,
/* [] */0
]);
return /* () */0;
}
function bind(category, space, x) {
if (Curry._2(VarMap[/* mem */2], x[/* it */1], space[/* map */0])) {
throw [
Script.Syntax,
x[/* at */0],
"duplicate " + (category + (" " + x[/* it */1]))
];
}
space[/* map */0] = Curry._3(VarMap[/* add */3], x[/* it */1], space[/* count */1], space[/* map */0]);
space[/* count */1] = space[/* count */1] + 1 | 0;
if (space[/* count */1]) {
return 0;
}
else {
throw [
Script.Syntax,
x[/* at */0],
"too many " + (category + " bindings")
];
}
}
function bind_func(c, x) {
return bind("function", c[/* funcs */3], x);
}
function bind_local(c, x) {
return bind("local", c[/* locals */4], x);
}
function bind_global(c, x) {
return bind("global", c[/* globals */5], x);
}
function bind_table(c, x) {
return bind("table", c[/* tables */1], x);
}
function bind_memory(c, x) {
return bind("memory", c[/* memories */2], x);
}
function anon(category, space, n) {
space[/* count */1] = space[/* count */1] + n | 0;
if (Curry._2(I32.lt_u, space[/* count */1], n)) {
throw [
Script.Syntax,
Source.no_region,
"too many " + (category + " bindings")
];
}
else {
return 0;
}
}
function anon_func(c) {
return anon("function", c[/* funcs */3], 1);
}
function anon_locals(c, ts) {
return anon("local", c[/* locals */4], Curry._1(Lib.List32[/* length */0], ts));
}
function anon_global(c) {
return anon("global", c[/* globals */5], 1);
}
function anon_table(c) {
return anon("table", c[/* tables */1], 1);
}
function anon_memory(c) {
return anon("memory", c[/* memories */2], 1);
}
function anon_label(c) {
var newrecord = c.slice();
newrecord[/* labels */6] = Curry._2(VarMap[/* map */22], function (param) {
return 1 + param | 0;
}, c[/* labels */6]);
return newrecord;
}
var empty_type = /* FuncType */[
/* [] */0,
/* [] */0
];
function explicit_sig(c, var_sem, ty, at) {
var x = Curry._2(var_sem, c, type_);
if (x[/* it */1] < Curry._1(Lib.List32[/* length */0], c[/* types */0][/* tlist */1]) && Caml_obj.caml_notequal(ty, empty_type) && Caml_obj.caml_notequal(ty, Curry._2(Lib.List32[/* nth */1], c[/* types */0][/* tlist */1], x[/* it */1]))) {
throw [
Script.Syntax,
at,
"signature mismatch"
];
}
return x;
}
function inline_type(c, ty, at) {
var match = Curry._2(Lib.List[/* index_of */6], ty, c[/* types */0][/* tlist */1]);
if (match) {
return Source.$at$at(match[0], at);
}
else {
var i = Curry._1(Lib.List32[/* length */0], c[/* types */0][/* tlist */1]);
anon_type(c, ty);
return Source.$at$at(i, at);
}
}
var yytransl_const = /* array */[
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
0,
0
];
var yytransl_block = /* array */[
257,
258,
259,
260,
261,
262,
287,
288,
289,
290,
291,
292,
293,
294,
295,
328,
0
];
var yyact = /* array */[
function () {
return Pervasives.failwith("parser");
},
function () {
return "";
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return _1 + _2;
},
function () {
return /* [] */0;
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return /* :: */[
_1,
_2
];
},
function () {
return /* AnyFuncType */0;
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return /* GlobalType */[
_1,
/* Immutable */0
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return /* GlobalType */[
_3,
/* Mutable */1
];
},
function (__caml_parser_env) {
return Parsing.peek_val(__caml_parser_env, 1);
},
function () {
return /* FuncType */[
/* [] */0,
/* [] */0
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 0);
var ins = _5[0];
if (ins !== /* [] */0) {
var at$1 = at(/* () */0);
throw [
Script.Syntax,
at$1,
"result before parameter"
];
}
return /* FuncType */[
ins,
Pervasives.$at(_3, _5[1])
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 0);
return /* FuncType */[
Pervasives.$at(_3, _5[0]),
_5[1]
];
},
function (__caml_parser_env) {
Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _6 = Parsing.peek_val(__caml_parser_env, 0);
return /* FuncType */[
/* :: */[
_4,
_6[0]
],
_6[1]
];
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return /* TableType */[
_1,
_2
];
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return /* MemoryType */[_1];
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return /* record */[
/* min */nat32(_1, ati(1)),
/* max : None */0
];
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return /* record */[
/* min */nat32(_1, ati(1)),
/* max : Some */[nat32(_2, ati(2))]
];
},
function (__caml_parser_env) {
return Parsing.peek_val(__caml_parser_env, 1);
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return Source.$at$at(_1, at(/* () */0));
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return Source.$at$at(_1, at(/* () */0));
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return Source.$at$at(_1, at(/* () */0));
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
var at$1 = at(/* () */0);
return function (_, _$1) {
return Source.$at$at(nat32(_1, at$1), at$1);
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
var at$1 = at(/* () */0);
return function (c, lookup) {
return Source.$at$at(Curry._2(lookup, c, Source.$at$at(_1, at$1)), at$1);
};
},
function () {
return function (_, _$1) {
return /* [] */0;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c, lookup) {
return /* :: */[
Curry._2(_1, c, lookup),
Curry._2(_2, c, lookup)
];
};
},
function () {
return function (c, anon, _) {
return Curry._1(anon, c);
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return function (c, _, bind) {
return Curry._2(bind, c, _1);
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return Source.$at$at(_1, at(/* () */0));
},
function () {
return function (c, xs) {
List.iter(function (x) {
throw [
Script.Syntax,
x[/* at */0],
"mismatching label"
];
}, xs);
return anon_label(c);
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return function (c, xs) {
List.iter(function (x) {
if (x[/* it */1] !== _1[/* it */1]) {
throw [
Script.Syntax,
x[/* at */0],
"mismatching label"
];
}
else {
return 0;
}
}, xs);
var c$1 = c;
var x = _1;
var newrecord = c$1.slice();
newrecord[/* labels */6] = Curry._3(VarMap[/* add */3], x[/* it */1], 0, Curry._2(VarMap[/* map */22], function (param) {
return 1 + param | 0;
}, c$1[/* labels */6]));
return newrecord;
};
},
function () {
return /* [] */0;
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return /* :: */[
_1,
/* [] */0
];
},
function () {
return 0;
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return nat32(_1, at(/* () */0));
},
function () {
return /* None */0;
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
var n = nat(_1, at(/* () */0));
if (!Curry._1(Lib.Int[/* is_power_of_two */1], n)) {
var at$1 = at(/* () */0);
throw [
Script.Syntax,
at$1,
"alignment must be a power of two"
];
}
return /* Some */[Curry._1(Lib.Int[/* log2 */0], n)];
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
var at$1 = at(/* () */0);
return function (c) {
return /* :: */[
Source.$at$at(Curry._1(_1, c), at$1),
/* [] */0
];
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
var at$1 = at(/* () */0);
return function (c) {
return /* :: */[
Source.$at$at(Curry._1(_1, c), at$1),
/* [] */0
];
};
},
function (__caml_parser_env) {
return Parsing.peek_val(__caml_parser_env, 0);
},
function () {
return function () {
return Operators.unreachable;
};
},
function () {
return function () {
return Operators.nop;
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Operators.br(Curry._2(_2, c, label));
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Operators.br_if(Curry._2(_2, c, label));
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 1);
var _3 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var match = Curry._1(Lib.List[/* split_last */5], /* :: */[
Curry._2(_2, c, label),
Curry._2(_3, c, label)
]);
return Operators.br_table(match[0], match[1]);
};
},
function () {
return function () {
return Operators.$$return;
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Operators.call(Curry._2(_2, c, func));
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Operators.call_indirect(Curry._2(_2, c, type_));
};
},
function () {
return function () {
return Operators.drop;
};
},
function () {
return function () {
return Operators.select;
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Operators.get_local(Curry._2(_2, c, local));
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Operators.set_local(Curry._2(_2, c, local));
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Operators.tee_local(Curry._2(_2, c, local));
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Operators.get_global(Curry._2(_2, c, global));
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Operators.set_global(Curry._2(_2, c, global));
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 2);
var _2 = Parsing.peek_val(__caml_parser_env, 1);
var _3 = Parsing.peek_val(__caml_parser_env, 0);
return function () {
return Curry._2(_1, _3, _2);
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 2);
var _2 = Parsing.peek_val(__caml_parser_env, 1);
var _3 = Parsing.peek_val(__caml_parser_env, 0);
return function () {
return Curry._2(_1, _3, _2);
};
},
function () {
return function () {
return Operators.current_memory;
};
},
function () {
return function () {
return Operators.grow_memory;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function () {
return literal(_1, _2)[0];
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return function () {
return _1;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return function () {
return _1;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return function () {
return _1;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return function () {
return _1;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return function () {
return _1;
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 3);
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var c$prime = Curry._2(_2, c, _5);
var match = Curry._1(_3, c$prime);
return Operators.block(match[0], match[1]);
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 3);
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var c$prime = Curry._2(_2, c, _5);
var match = Curry._1(_3, c$prime);
return Operators.loop(match[0], match[1]);
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 3);
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var c$prime = Curry._2(_2, c, _5);
var match = Curry._1(_3, c$prime);
return Operators.if_(match[0], match[1], /* [] */0);
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 6);
var _3 = Parsing.peek_val(__caml_parser_env, 5);
var _5 = Parsing.peek_val(__caml_parser_env, 3);
var _6 = Parsing.peek_val(__caml_parser_env, 2);
var _8 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var c$prime = Curry._2(_2, c, Pervasives.$at(_5, _8));
var match = Curry._1(_3, c$prime);
return Operators.if_(match[0], match[1], Curry._1(_6, c$prime));
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return /* tuple */[
_1,
Curry._1(_2, c)
];
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
var match = Curry._1(_2, c);
return Pervasives.$at(match[0], /* :: */[
Source.$at$at(match[1], at$1),
/* [] */0
]);
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return /* tuple */[
Curry._1(_2, c)[1],
Curry._1(_1, c)
];
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 1);
var _3 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var c$prime = Curry._2(_2, c, /* [] */0);
var match = Curry._1(_3, c$prime);
return /* tuple */[
/* [] */0,
Operators.block(match[0], match[1])
];
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 1);
var _3 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var c$prime = Curry._2(_2, c, /* [] */0);
var match = Curry._1(_3, c$prime);
return /* tuple */[
/* [] */0,
Operators.loop(match[0], match[1])
];
};
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 2);
var _3 = Parsing.peek_val(__caml_parser_env, 1);
var _4 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var c$prime = Curry._2(_2, c, /* [] */0);
var match = Curry._2(_4, c, c$prime);
return /* tuple */[
match[0],
Operators.if_(_3, match[1], match[2])
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 5);
var _7 = Parsing.peek_val(__caml_parser_env, 1);
return function (_, c$prime) {
return /* tuple */[
/* [] */0,
Curry._1(_3, c$prime),
Curry._1(_7, c$prime)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return function (_, c$prime) {
return /* tuple */[
/* [] */0,
Curry._1(_3, c$prime),
/* [] */0
];
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 8);
var _4 = Parsing.peek_val(__caml_parser_env, 5);
var _8 = Parsing.peek_val(__caml_parser_env, 1);
return function (c, c$prime) {
return /* tuple */[
Curry._1(_1, c),
Curry._1(_4, c$prime),
Curry._1(_8, c$prime)
];
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 4);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return function (c, c$prime) {
return /* tuple */[
Curry._1(_1, c),
Curry._1(_4, c$prime),
/* [] */0
];
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 2);
var _2 = Parsing.peek_val(__caml_parser_env, 1);
var _3 = Parsing.peek_val(__caml_parser_env, 0);
return function (c, c$prime) {
return /* tuple */[
Curry._1(_1, c),
Curry._1(_2, c$prime),
Curry._1(_3, c$prime)
];
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c, c$prime) {
return /* tuple */[
Curry._1(_1, c),
Curry._1(_2, c$prime),
/* [] */0
];
};
},
function () {
return function () {
return /* [] */0;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
return Pervasives.$at(Curry._1(_1, c), Curry._1(_2, c));
};
},
function () {
return function () {
return /* tuple */[
0,
/* [] */0
];
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var es1 = Curry._1(_1, c);
var match = Curry._1(_2, c);
return /* tuple */[
match[0] + 1 | 0,
Pervasives.$at(es1, match[1])
];
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
var at$1 = at(/* () */0);
return function (c) {
return Source.$at$at(Curry._1(_1, c), at$1);
};
},
function (__caml_parser_env) {
return Parsing.peek_val(__caml_parser_env, 0);
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 0);
var match = _5[0];
return /* tuple */[
/* FuncType */[
match[0],
Pervasives.$at(_3, match[1])
],
function (c) {
return Curry._1(_5[1], c);
}
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 0);
var match = _5[0];
return /* tuple */[
/* FuncType */[
Pervasives.$at(_3, match[0]),
match[1]
],
function (c) {
anon_locals(c, _3);
return Curry._1(_5[1], c);
}
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _6 = Parsing.peek_val(__caml_parser_env, 0);
var match = _6[0];
return /* tuple */[
/* FuncType */[
/* :: */[
_4,
match[0]
],
match[1]
],
function (c) {
bind_local(c, _3);
return Curry._1(_6[1], c);
}
];
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return /* tuple */[
empty_type,
function (c) {
var c$prime = anon_label(c);
return /* record */[
/* ftype */Source.$at$at(-1, at(/* () */0)),
/* locals : [] */0,
/* body */Curry._1(_1, c$prime)
];
}
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 0);
return /* tuple */[
_5[0],
function (c) {
anon_locals(c, _3);
var f = Curry._1(_5[1], c);
return /* record */[
/* ftype */f[/* ftype */0],
/* locals */Pervasives.$at(_3, f[/* locals */1]),
/* body */f[/* body */2]
];
}
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _6 = Parsing.peek_val(__caml_parser_env, 0);
return /* tuple */[
_6[0],
function (c) {
bind_local(c, _3);
var f = Curry._1(_6[1], c);
return /* record */[
/* ftype */f[/* ftype */0],
/* locals : :: */[
_4,
f[/* locals */1]
],
/* body */f[/* body */2]
];
}
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 4);
var _4 = Parsing.peek_val(__caml_parser_env, 3);
var _5 = Parsing.peek_val(__caml_parser_env, 2);
var _6 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_func, bind_func);
var t = explicit_sig(c, _5, _6[0], at$1);
return /* tuple */[
function () {
var init = Curry._1(_6[1], enter_func(c));
return Source.$at$at(/* record */[
/* ftype */t,
/* locals */init[/* locals */1],
/* body */init[/* body */2]
], at$1);
},
Curry._3(_4, /* FuncExport */0, c[/* funcs */3][/* count */1], c)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_func, bind_func);
var t = explicit_sig(c, _4, _5[0], at$1);
return /* tuple */[
function () {
var init = Curry._1(_5[1], enter_func(c));
return Source.$at$at(/* record */[
/* ftype */t,
/* locals */init[/* locals */1],
/* body */init[/* body */2]
], at$1);
},
/* [] */0
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_func, bind_func);
var t = inline_type(c, _5[0], at$1);
return /* tuple */[
function () {
var init = Curry._1(_5[1], enter_func(c));
return Source.$at$at(/* record */[
/* ftype */t,
/* locals */init[/* locals */1],
/* body */init[/* body */2]
], at$1);
},
Curry._3(_4, /* FuncExport */0, c[/* funcs */3][/* count */1], c)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_func, bind_func);
var t = inline_type(c, _4[0], at$1);
return /* tuple */[
function () {
var init = Curry._1(_4[1], enter_func(c));
return Source.$at$at(/* record */[
/* ftype */t,
/* locals */init[/* locals */1],
/* body */init[/* body */2]
], at$1);
},
/* [] */0
];
};
},
function (__caml_parser_env) {
return Parsing.peek_val(__caml_parser_env, 1);
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
var at$1 = at(/* () */0);
return function (c) {
return Source.$at$at(Curry._1(_1, c), at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
return Source.$at$at(/* record */[
/* index */Curry._2(_3, c, table),
/* offset */Curry._1(_4, c),
/* init */Curry._2(_5, c, func)
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
return Source.$at$at(/* record */[
/* index */Source.$at$at(0, at$1),
/* offset */Curry._1(_3, c),
/* init */Curry._2(_4, c, func)
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_table, bind_table);
return function () {
return /* tuple */[
Source.$at$at(/* record */[/* ttype */_5], at$1),
/* [] */0,
Curry._3(_4, /* TableExport */1, c[/* tables */1][/* count */1], c)
];
};
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 7);
var _4 = Parsing.peek_val(__caml_parser_env, 6);
var _5 = Parsing.peek_val(__caml_parser_env, 5);
var _8 = Parsing.peek_val(__caml_parser_env, 2);
var at$1 = at(/* () */0);
return function (c) {
var i = c[/* tables */1][/* count */1];
Curry._3(_3, c, anon_table, bind_table);
return function () {
var init = Curry._2(_8, c, func);
var size = List.length(init);
return /* tuple */[
Source.$at$at(/* record */[/* ttype : TableType */[
/* record */[
/* min */size,
/* max : Some */[size]
],
_5
]], at$1),
/* :: */[
Source.$at$at(/* record */[
/* index */Source.$at$at(i, at$1),
/* offset */Source.$at$at(/* :: */[
Source.$at$at(Operators.i32_const(Source.$at$at(0, at$1)), at$1),
/* [] */0
], at$1),
/* init */init
], at$1),
/* [] */0
],
Curry._3(_4, /* TableExport */1, c[/* tables */1][/* count */1], c)
];
};
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
return Source.$at$at(/* record */[
/* index */Curry._2(_3, c, memory),
/* offset */Curry._1(_4, c),
/* init */_5
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
return Source.$at$at(/* record */[
/* index */Source.$at$at(0, at$1),
/* offset */Curry._1(_3, c),
/* init */_4
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_memory, bind_memory);
return /* tuple */[
Source.$at$at(/* record */[/* mtype */_5], at$1),
/* [] */0,
Curry._3(_4, /* MemoryExport */2, c[/* memories */2][/* count */1], c)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 6);
var _4 = Parsing.peek_val(__caml_parser_env, 5);
var _7 = Parsing.peek_val(__caml_parser_env, 2);
var at$1 = at(/* () */0);
return function (c) {
var i = c[/* memories */2][/* count */1];
Curry._3(_3, c, anon_memory, bind_memory);
var size = (_7.length + 65535 | 0) / 65536 | 0;
return /* tuple */[
Source.$at$at(/* record */[/* mtype : MemoryType */[/* record */[
/* min */size,
/* max : Some */[size]
]]], at$1),
/* :: */[
Source.$at$at(/* record */[
/* index */Source.$at$at(i, at$1),
/* offset */Source.$at$at(/* :: */[
Source.$at$at(Operators.i32_const(Source.$at$at(0, at$1)), at$1),
/* [] */0
], at$1),
/* init */_7
], at$1),
/* [] */0
],
Curry._3(_4, /* MemoryExport */2, c[/* memories */2][/* count */1], c)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 5);
var _6 = Parsing.peek_val(__caml_parser_env, 2);
var at$1 = at(/* () */0);
return function (c) {
var i = c[/* memories */2][/* count */1];
Curry._3(_3, c, anon_memory, bind_memory);
var size = (_6.length + 65535 | 0) / 65536 | 0;
return /* tuple */[
Source.$at$at(/* record */[/* mtype : MemoryType */[/* record */[
/* min */size,
/* max : Some */[size]
]]], at$1),
/* :: */[
Source.$at$at(/* record */[
/* index */Source.$at$at(i, at$1),
/* offset */Source.$at$at(/* :: */[
Source.$at$at(Operators.i32_const(Source.$at$at(0, at$1)), at$1),
/* [] */0
], at$1),
/* init */_6
], at$1),
/* [] */0
],
/* [] */0
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 4);
var _4 = Parsing.peek_val(__caml_parser_env, 3);
var _5 = Parsing.peek_val(__caml_parser_env, 2);
var _6 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_global, bind_global);
return /* tuple */[
function () {
return Source.$at$at(/* record */[
/* gtype */_5,
/* value */Curry._1(_6, c)
], at$1);
},
Curry._3(_4, /* GlobalExport */3, c[/* globals */5][/* count */1], c)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_global, bind_global);
return /* tuple */[
function () {
return Source.$at$at(/* record */[
/* gtype */_4,
/* value */Curry._1(_5, c)
], at$1);
},
/* [] */0
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
Curry._3(_3, c, anon_func, bind_func);
return /* FuncImport */Block.__(0, [Curry._2(_4, c, type_)]);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
var at4 = ati(4);
return function (c) {
Curry._3(_3, c, anon_func, bind_func);
return /* FuncImport */Block.__(0, [inline_type(c, _4, at4)]);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
Curry._3(_3, c, anon_table, bind_table);
return /* TableImport */Block.__(1, [_4]);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
Curry._3(_3, c, anon_memory, bind_memory);
return /* MemoryImport */Block.__(2, [_4]);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
Curry._3(_3, c, anon_global, bind_global);
return /* GlobalImport */Block.__(3, [_4]);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
var at5 = ati(5);
return function (c) {
return Source.$at$at(/* record */[
/* module_name */_3,
/* item_name */_4,
/* ikind */Source.$at$at(Curry._1(_5, c), at5)
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_func, bind_func);
return Source.$at$at(/* record */[
/* module_name */_4[0],
/* item_name */_4[1],
/* ikind */Source.$at$at(/* FuncImport */Block.__(0, [Curry._2(_5, c, type_)]), at$1)
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
var at5 = ati(5);
return function (c) {
Curry._3(_3, c, anon_func, bind_func);
return Source.$at$at(/* record */[
/* module_name */_4[0],
/* item_name */_4[1],
/* ikind */Source.$at$at(/* FuncImport */Block.__(0, [inline_type(c, _5, at5)]), at$1)
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_table, bind_table);
return Source.$at$at(/* record */[
/* module_name */_4[0],
/* item_name */_4[1],
/* ikind */Source.$at$at(/* TableImport */Block.__(1, [_5]), at$1)
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_memory, bind_memory);
return Source.$at$at(/* record */[
/* module_name */_4[0],
/* item_name */_4[1],
/* ikind */Source.$at$at(/* MemoryImport */Block.__(2, [_5]), at$1)
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (c) {
Curry._3(_3, c, anon_global, bind_global);
return Source.$at$at(/* record */[
/* module_name */_4[0],
/* item_name */_4[1],
/* ikind */Source.$at$at(/* GlobalImport */Block.__(3, [_5]), at$1)
], at$1);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return /* tuple */[
_3,
_4
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
return /* tuple */[
/* FuncExport */0,
Curry._2(_3, c, func)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
return /* tuple */[
/* TableExport */1,
Curry._2(_3, c, table)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
return /* tuple */[
/* MemoryExport */2,
Curry._2(_3, c, memory)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
return /* tuple */[
/* GlobalExport */3,
Curry._2(_3, c, global)
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
var at4 = ati(4);
return function (c) {
var match = Curry._1(_4, c);
return Source.$at$at(/* record */[
/* name */_3,
/* ekind */Source.$at$at(match[0], at4),
/* item */match[1]
], at$1);
};
},
function () {
return function (_, _$1, _$2) {
return /* [] */0;
};
},
function (__caml_parser_env) {
return Parsing.peek_val(__caml_parser_env, 0);
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
var at$1 = at(/* () */0);
return function (k, count, _) {
return /* :: */[
Source.$at$at(/* record */[
/* name */_3,
/* ekind */Source.$at$at(k, at$1),
/* item */Source.$at$at(count - 1 | 0, at$1)
], at$1),
/* [] */0
];
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
return anon_type(c, _3);
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
var c$1 = c;
var x = _3;
var ty = _4;
if (Curry._2(VarMap[/* mem */2], x[/* it */1], c$1[/* types */0][/* tmap */0])) {
throw [
Script.Syntax,
x[/* at */0],
"duplicate type " + x[/* it */1]
];
}
c$1[/* types */0][/* tmap */0] = Curry._3(VarMap[/* add */3], x[/* it */1], Curry._1(Lib.List32[/* length */0], c$1[/* types */0][/* tlist */1]), c$1[/* types */0][/* tmap */0]);
c$1[/* types */0][/* tlist */1] = Pervasives.$at(c$1[/* types */0][/* tlist */1], /* :: */[
ty,
/* [] */0
]);
return /* () */0;
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return function (c) {
return Curry._2(_3, c, func);
};
},
function () {
return function (c) {
var newrecord = Ast.empty_module.slice();
newrecord[/* types */0] = c[/* types */0][/* tlist */1];
return newrecord;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
Curry._1(_1, c);
return Curry._1(_2, c);
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var match = Curry._1(_1, c);
var m = Curry._1(_2, c);
if (m[/* imports */8] !== /* [] */0) {
var at = List.hd(m[/* imports */8])[/* at */0];
throw [
Script.Syntax,
at,
"import after global definition"
];
}
var newrecord = m.slice();
newrecord[/* globals */1] = /* :: */[
Curry._1(match[0], /* () */0),
m[/* globals */1]
];
newrecord[/* exports */9] = Pervasives.$at(match[1], m[/* exports */9]);
return newrecord;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var t = Curry._1(_1, c);
var m = Curry._1(_2, c);
var match = Curry._1(t, /* () */0);
if (m[/* imports */8] !== /* [] */0) {
var at = List.hd(m[/* imports */8])[/* at */0];
throw [
Script.Syntax,
at,
"import after table definition"
];
}
var newrecord = m.slice();
newrecord[/* tables */2] = /* :: */[
match[0],
m[/* tables */2]
];
newrecord[/* elems */6] = Pervasives.$at(match[1], m[/* elems */6]);
newrecord[/* exports */9] = Pervasives.$at(match[2], m[/* exports */9]);
return newrecord;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var match = Curry._1(_1, c);
var m = Curry._1(_2, c);
if (m[/* imports */8] !== /* [] */0) {
var at = List.hd(m[/* imports */8])[/* at */0];
throw [
Script.Syntax,
at,
"import after memory definition"
];
}
var newrecord = m.slice();
newrecord[/* memories */3] = /* :: */[
match[0],
m[/* memories */3]
];
newrecord[/* data */7] = Pervasives.$at(match[1], m[/* data */7]);
newrecord[/* exports */9] = Pervasives.$at(match[2], m[/* exports */9]);
return newrecord;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var match = Curry._1(_1, c);
var m = Curry._1(_2, c);
var func = Curry._1(match[0], /* () */0);
if (m[/* imports */8] !== /* [] */0) {
var at = List.hd(m[/* imports */8])[/* at */0];
throw [
Script.Syntax,
at,
"import after function definition"
];
}
var newrecord = m.slice();
newrecord[/* funcs */4] = /* :: */[
func,
m[/* funcs */4]
];
newrecord[/* exports */9] = Pervasives.$at(match[1], m[/* exports */9]);
return newrecord;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var m = Curry._1(_2, c);
var newrecord = m.slice();
newrecord[/* elems */6] = /* :: */[
Curry._1(_1, c),
m[/* elems */6]
];
return newrecord;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var m = Curry._1(_2, c);
var newrecord = m.slice();
newrecord[/* data */7] = /* :: */[
Curry._1(_1, c),
m[/* data */7]
];
return newrecord;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var m = Curry._1(_2, c);
var x = Curry._1(_1, c);
var match = m[/* start */5];
if (match) {
throw [
Script.Syntax,
x[/* at */0],
"multiple start sections"
];
}
else {
var newrecord = m.slice();
newrecord[/* start */5] = /* Some */[x];
return newrecord;
}
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var i = Curry._1(_1, c);
var m = Curry._1(_2, c);
var newrecord = m.slice();
newrecord[/* imports */8] = /* :: */[
i,
m[/* imports */8]
];
return newrecord;
};
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return function (c) {
var m = Curry._1(_2, c);
var newrecord = m.slice();
newrecord[/* exports */9] = /* :: */[
Curry._1(_1, c),
m[/* exports */9]
];
return newrecord;
};
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return /* tuple */[
_3,
Source.$at$at(/* Textual */Block.__(0, [Source.$at$at(Curry._1(_4, empty_context(/* () */0)), at(/* () */0))]), at(/* () */0))
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
return /* tuple */[
_3,
Source.$at$at(/* Encoded */Block.__(1, [
"binary",
_4 + _5
]), at(/* () */0))
];
},
function () {
return /* None */0;
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return /* Some */[Source.$at$at(_1, at(/* () */0))];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 3);
var _4 = Parsing.peek_val(__caml_parser_env, 2);
var _5 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* Invoke */Block.__(0, [
_3,
_4,
_5
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* Get */Block.__(1, [
_3,
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* AssertMalformed */Block.__(0, [
_3[1],
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* AssertInvalid */Block.__(1, [
_3[1],
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* AssertSoftInvalid */Block.__(2, [
_3[1],
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* AssertUnlinkable */Block.__(3, [
_3[1],
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* AssertUninstantiable */Block.__(4, [
_3[1],
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* AssertReturn */Block.__(5, [
_3,
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* AssertReturnNaN */Block.__(6, [_3]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* AssertTrap */Block.__(7, [
_3,
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* AssertExhaustion */Block.__(8, [
_3,
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return Source.$at$at(/* Action */Block.__(2, [_1]), at(/* () */0));
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return Source.$at$at(/* Assertion */Block.__(3, [_1]), at(/* () */0));
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return Source.$at$at(/* Module */Block.__(0, [
_1[0],
_1[1]
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* Register */Block.__(1, [
_3,
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return Source.$at$at(/* Meta */Block.__(4, [_1]), at(/* () */0));
},
function () {
return /* [] */0;
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return /* :: */[
_1,
_2
];
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* Script */Block.__(2, [
_3,
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* Input */Block.__(0, [
_3,
_4
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 2);
var _4 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* Output */Block.__(1, [
_3,
/* Some */[_4]
]), at(/* () */0));
},
function (__caml_parser_env) {
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(/* Output */Block.__(1, [
_3,
/* None */0
]), at(/* () */0));
},
function (__caml_parser_env) {
var _2 = Parsing.peek_val(__caml_parser_env, 2);
var _3 = Parsing.peek_val(__caml_parser_env, 1);
return Source.$at$at(literal(_2, _3)[1], ati(3));
},
function () {
return /* [] */0;
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 1);
var _2 = Parsing.peek_val(__caml_parser_env, 0);
return /* :: */[
_1,
_2
];
},
function (__caml_parser_env) {
return Parsing.peek_val(__caml_parser_env, 1);
},
function (__caml_parser_env) {
var _1 = Parsing.peek_val(__caml_parser_env, 0);
return /* :: */[
_1,
/* [] */0
];
},
function (__caml_parser_env) {
return Parsing.peek_val(__caml_parser_env, 1)[1];
},
function (__caml_parser_env) {
throw [
Parsing.YYexit,
Parsing.peek_val(__caml_parser_env, 0)
];
},
function (__caml_parser_env) {
throw [
Parsing.YYexit,
Parsing.peek_val(__caml_parser_env, 0)
];
},
function (__caml_parser_env) {
throw [
Parsing.YYexit,
Parsing.peek_val(__caml_parser_env, 0)
];
}
];
var yytables = /* record */[
/* actions */yyact,
/* transl_const */yytransl_const,
/* transl_block */yytransl_block,
/* lhs */'\xff\xff\x04\0\x04\0\x05\0\x05\0\x06\0\x07\0\x07\0\b\0\t\0\t\0\t\0\t\0\x0b\0\r\0\f\0\f\0\x0e\0\x10\0\x10\0\x10\0\x0f\0\x0f\0\x11\0\x11\0\x12\0\x12\0\n\0\x13\0\x13\0\x14\0\x14\0\x15\0\x15\0\x16\0\x16\0\x17\0\x17\0\x17\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x18\0\x19\0\x19\0\x19\0\x19\0\x1b\0\x1a\0\x1d\0\x1d\0\x1d\0\x1d\0\x1f\0\x1f\0\x1f\0\x1f\0\x1f\0\x1f\0\x1c\0\x1c\0\x1e\0\x1e\0 \0!\0!\0!\0!\0"\0"\0"\0#\0#\0#\0#\0%\0%\0&\0&\0\'\0\'\0)\0)\0*\0*\0*\0+\0+\0,\0,\0,\0,\0,\0-\0-\0-\0-\0-\0-\0.\0/\0/\0/\0/\x000\0(\0(\0$\x001\x001\x002\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x003\x004\x004\x005\x005\x006\x006\x008\x008\x008\x008\x008\x008\x008\x008\x008\x009\x009\x009\x009\x009\0;\0;\0:\0:\0:\0:\0<\x007\x007\0\x01\0\x02\0\x03\0\0\0\0\0\0\0',
/* len */"\x02\0\0\0\x02\0\0\0\x02\0\x01\0\x01\0\x04\0\x04\0\0\0\x05\0\x05\0\x06\0\x02\0\x01\0\x01\0\x02\0\x04\0\x01\0\x01\0\x01\0\x01\0\x01\0\0\0\x02\0\0\0\x01\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\0\0\x01\0\x01\0\x01\0\x01\0\x01\0\x01\0\x02\0\x02\0\x03\0\x01\0\x02\0\x02\0\x01\0\x01\0\x02\0\x02\0\x02\0\x02\0\x02\0\x03\0\x03\0\x01\0\x01\0\x02\0\x01\0\x01\0\x01\0\x01\0\x01\0\x05\0\x05\0\x05\0\b\0\x02\0\x03\0\x02\0\x03\0\x03\0\x04\0\b\0\x04\0\t\0\x05\0\x03\0\x02\0\0\0\x02\0\0\0\x02\0\x01\0\x01\0\x05\0\x05\0\x06\0\x01\0\x05\0\x06\0\x07\0\x06\0\x06\0\x05\0\x04\0\x01\0\x06\0\x05\0\x06\0\n\0\x06\0\x05\0\x06\0\t\0\b\0\x07\0\x06\0\x05\0\x05\0\x05\0\x05\0\x05\0\x06\0\x06\0\x06\0\x06\0\x06\0\x06\0\x05\0\x04\0\x04\0\x04\0\x04\0\x05\0\0\0\x01\0\x04\0\x04\0\x05\0\x04\0\0\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x02\0\x05\0\x06\0\0\0\x01\0\x06\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x05\0\x04\0\x05\0\x05\0\x01\0\x01\0\x01\0\x05\0\x01\0\0\0\x02\0\x05\0\x05\0\x05\0\x04\0\x04\0\0\0\x02\0\x02\0\x01\0\x02\0\x02\0\x02\0\x02\0",
/* defred */"\0\0\0\0\0\0\0\0\0\0\0\0\xaf\0\xa0\0\x9e\0\x9f\0\0\0\xa2\0\0\0\xb0\0\xad\0\0\0\xb1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xa4\0\xac\0\xae\0\x92\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9b\0\0\0\0\0\0\0\0\0\0\0\xa8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x89\0\x8a\0\x87\0\x8b\0\x88\0\x86\0\x8d\0\x8e\0\x85\0\x8c\0\x8f\0\xa5\0\xa1\0\0\0\x94\0\x95\0\x96\0\x97\0\x98\0\0\0\x9a\0\xab\0\x99\0\x9c\0\x9d\0\xa6\0\xa7\0\x02\0\x90\0\x1b\0\x1a\0\0\0\x15\0\x16\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0a\0\0\0\0\0\0\0\x01\0\0\0\0\0\x93\0\x12\0\x13\0\x14\0\0\0\0\0(\0/\0\0\0\0\x000\0\0\0\0\0\0\0\0\0\0\0\0\0,\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0=\0>\0<\0?\0'\x008\x009\0;\0\0\0\0\0$\0%\0&\0Y\0\0\0U\0\0\0\0\0\x83\0\0\0\x81\0\0\0\x06\0\0\0\0\0\0\0\0\0\0\0\x7f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\xa9\0\0\0\0\0\0\0\0\0\0\0\0\0\x1d\0\0\0\0\0\0\0)\0*\0\0\0-\0.\x001\x002\x003\x004\x005\0!\0\0\0\0\0:\0\0\0\0\0\0\0Q\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x82\0\0\0T\0\0\0\0\0\0\0\0\0\0\0\x05\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0F\0E\0\0\0\x18\0c\0\x01\0\0\0\x0e\0\0\0\0\0\0\0g\0\0\0\0\0\0\0\0\0\0\0\0\0}\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0+\0#\x006\x007\0]\0\0\0^\0\0\0\0\0t\0s\0\b\0\0\0l\0\0\0w\0\x10\0\0\0d\0\r\0u\0G\0\0\0H\0`\0S\0b\0\0\0\x01\0h\0v\0f\0\0\0\0\0\0\0\0\0r\0\0\0\0\0\0\0\0\0\x11\0\x04\0\0\0\0\0\0\0\0\0\0\0\0\0\x80\0D\0\0\0\0\0\0\0\0\0\\\0\0\0\0\0\0\0\x07\0k\0\0\0\0\0\0\0I\0\0\0\0\0\0\0\0\0\0\0\0\0y\0|\0z\0{\0W\0\0\0\0\0V\0Z\0\0\0x\0\x1f\0@\0B\0\0\0A\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0j\0\0\0\0\0\0\0\0\0\0\0\0\0X\0[\0\0\0\x0b\0\0\0\n\0\0\0\0\0\0\0N\0i\0n\0m\0q\0o\0p\0\0\0\f\0e\0\0\0\0\0C\0\0\0\0\0\0\0\0\0\0\0\0\0J\0\0\0L\0",
/* dgoto */'\x04\0\x06\0\r\0\x10\0V\x001\x01\f\x01\xc4\0\x85\0\xff\0\x7f\0\r\x01\x0e\x01\x1d\x01\xb4\0\xd2\0\x96\0\xd3\0\x80\0\xe5\0\x88\x01\xf3\x007\x01\xb5\0\xb6\0\xb7\0\xb8\x002\x01\xb9\0\xd0\0\x15\x01u\x01\x06\x01\xba\0\xbb\x009\0\xbc\0\x8c\0:\0;\0\xc9\0<\0=\0>\0"\x01?\0\xbd\0\xdc\0@\0A\0B\0C\0\x07\0%\0\b\0M\0\t\0\n\0\x0b\0\f\0N\0',
/* sindex */'\xd4\0\x17\xff\x17\xff.\xff\0\0a\xff\0\0\0\0\0\0\0\0\x17\xff\0\0@\0\0\0\0\0"\xff\0\0l\0i\xffi\xffw\xffi\xffi\xff.\xff.\xff.\xff.\xffp\xffp\xff~\xffp\xffi\xffi\xff\0\0\0\0\0\0\0\0\xab\xff\x17\xffi\xff\x92\xff\xac\xff\xc9\xff\xd9\xff\xf6\xff\xf9\xff\f\xff\xa1\xff\xaf\xff\xfc\xfe\xfb\xff\xfe\xff\x15\0\x1c\x001\xff\0\0\x17\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\x1d\0\xb1\xff\xb6\xff\x11\0\xa1\xff-\x007\0=\0?\0D\0/\0J\0\xa1\xff\0\0K\0S\0d\0e\0n\0\0\0[\xffR\0\xb7\xff\xc6\xffR\0R\0\x8f\xffR\0\x8f\xffv\0w\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0y\0\0\0\0\0\0\0\0\0\0\0\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x02\0\0\0\0z\0V\0\x8a\0\x95\0\xe9\xff\x97\0W\x03\x98\0\0\0\xb7\xff\x99\0\x98\0\0\0\x9b\0\xa1\0\0\0\0\0\0\0\0\0\xbb\0\xd4\x02\0\0\0\0R\0R\0\0\0R\0\xb7\xff\xb7\xff\xb7\xff\xb7\xff\xb7\xff\0\0\xb7\xff\xb7\xff\xb7\xff\xb7\xff\xb7\xff\xa5\0\xa5\0\x0b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\x02b\x02\0\0\0\0\0\0\0\0\xbd\0\0\0\x88\x02\xbf\0\0\0\xc7\0\0\0\xd7\0\0\0\r\xffb\x02\xed\xff\xed\xff\xcd\xff\0\0u\xff\xea\0R\0R\0R\0b\x02\xe3\0\xe4\0\xb7\xff\xb7\xff\xec\0\x98\xff\xfe\0\xea\0\xea\0\0\0\x7f\xff\b\x01\xfe\xfe\t\x01\0\0\xb7\xff\x12\0\xe7\0\x12\0\x0e\x01\x10\x01\0\0\xe7\0\xe7\0\xe7\0\0\0\0\0\xb7\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xfa\0\xfa\0\0\x001\x03#\x01\xef\x03\0\0\0\0\x0b\x03<\x02-\x01\xe7\xff.\x01/\x01\x99\xff0\x01\0\0<\x01\0\0I\x01U\x01b\x02T\x01^\x01\0\0W\x01o\x01[\x01y\x01\xe7\0\xe7\0\xe7\0z\x01\xe3\0\0\0\0\0{\x01\0\0\0\0\0\0P\x01\0\0\x82\x01\x84\x01\xa9\xff\0\0d\xff\x85\x01\xb7\xff\xb7\xff\xb7\xff\xb7\xff\0\0\x95\x01\xe7\0\x9f\x01b\x01\xa0\x01\xa1\x01\xa6\x01\xaa\x01\xab\x01b\x02\xb7\x01\xe6\xff\xc1\x01\0\0\0\0\0\0\0\0\0\0\xc6\x01\0\0\x12\0\xe7\0\0\0\0\0\0\0\xc7\x01\0\0\xc8\x01\0\0\0\0\x80\x01\0\0\0\0\0\0\0\0\xcf\x01\0\0\0\0\0\0\0\0\xad\xff\0\0\0\0\0\0\0\0R\0R\0R\0R\0\0\0\xd0\x01\xd1\x01\xe1\x01\xeb\x01\0\0\0\0<\x02\xec\x01\xae\x02\xae\x02\xed\x01\xee\x01\0\0\0\0R\0R\0R\0R\0\0\0\xf6\x01\xf4\x01\xf7\x01\0\0\0\0\xb7\xff}\x03\b\x02\0\0\x11\x02\xbb\xff\xbf\0\xed\xff\xea\0\xea\0\0\0\0\0\0\0\0\0\0\0<\x02\xa3\x03\0\0\0\0\xae\x02\0\0\0\0\0\0\0\0b\x02\0\0\xc7\0\x12\x02\xc7\0\x13\x02b\x02\xc9\x03\xe3\0\0\0\x14\x02\x1a\x02\x1c\x02\x1d\x02-\x027\x02\0\0\0\x004\x02\0\0\xc7\0\0\x009\x02:\x02b\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0R\0\0\0\0\0\x17\x02@\x02\0\x005\x02C\x02b\x02L\x02]\x02b\x02\0\0^\x02\0\0',
/* rindex */"\0\0M\x03\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0O\xff\x14\0\0\0w\0w\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0w\0\xc2\xff\0\0\0\0\0\0\0\0_\x02`\x02f\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0_\x02_\x02_\x02_\x02_\x02_\x02_\x02_\x02_\x02_\x02\0\0\0\0\0\0h\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0h\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0~\x01\0\0\0\0\xf2\xffh\xff\0\0)\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\xff\0\0\0\0\0\0y\x02k\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0M\0\x16\0\0\0M\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x9a\0\x9a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\x02t\xff\0\0\0\0\0\0\0\0\0\0\0\0i\x02\x83\x02\0\0\x83\x02\0\0\0\0\0\0\0\0i\x02\0\0\0\0\0\0\0\0\0\0\0\0s\0\xf3\xffs\0i\x02\x84\x02\0\0y\x02\xc0\0\0\0\0\0\x8e\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86\x02\x86\x02\x86\x02\0\0\0\0\0\0\xa4\x01X\x01\xa4\x01\0\0\0\0\xc0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe6\0\xe6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\x02\0\0\xf7\xff\0\0\0\0\0\0\0\0\0\0\xca\x01\x89\x02\xca\x01\0\0\x84\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\f\x01\0\0\0\0\0\0\0\0\0\0\0\0\0\0t\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x86\x02\x86\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0<\0\xf2\xff\x95\x02\x95\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\x02\0\0i\x02i\x02\0\0\0\0\0\0\0\x002\x012\x01\xf0\x012\x01\0\0\0\0\0\0\0\0\0\0\0\0y\x02\0\0\0\0\0\0\0\0\0\0\x83\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0i\x02\0\0\0\0\0\0i\x02\0\0\0\0\0\0\0\0\x8a\x02\0\0\x83\x02\0\0\x83\x02\0\0i\x02\0\0\xaf\xff\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x83\x02\0\0\0\0\0\0i\x02\0\0\0\0\0\0\0\0\0\0\0\0\0\x002\x01\0\0\0\0\x8f\x02\0\0\0\0\0\0\x9f\x02i\x02\0\0\0\0i\x02\0\0\0\0\0\0",
/* gindex */"\0\0\0\0\0\0\0\0x\xffD\xff\xa5\x02Q\xff.\x03F\xff\xa7\xffG\xffH\xff3\xffL\xff\xbc\xff\n\x03P\xff\xb2\xff\x80\xff\xbd\xfe\f\x03\xc4\x02\0\0\x82\xff\0\0\xa6\xffV\xffN\xff\0\0\xa8\x02\0\0B\xffR\xff\xca\xfe\0\0\xca\xff\xb5\xff\0\0\0\x002\x03\0\0\0\0\0\0\0\0\0\0\xe3\xff\0\0\0\0\0\0\0\0\xac\0t\0\x96\0\xbe\0\xf0\xff\0\0\xbc\x03\0\0!\0\0\0",
/* tablesize */1335,
/* table */'\x86\0\xa3\0\x8b\0\xf9\0\x8b\0\x02\x01\xf7\0\xd9\0\xfc\0\0\x01\x1e\x01\xcf\0\x87\0\x88\0\xfd\0\x8d\0\x13\x01\x0f\x01\x05\x01\x8f\0\x83\0\x04\x01\b\x01\t\x01\x8a\0\xcf\0\x8e\0\xe6\0\x05\x01\xe7\0\x1c\x01\x1c\x01\x05\0\x17\x01\x18\x01*\x01,\x01-\x01\x89\x01\x8a\x01\x8b\x01#\x01\x19\0!\0\x83\x01\x84\x01\x12\0$\x01\x8b\0%\x01\x19\0&\x01\x8b\0T\0n\0\x0f\0\x15\0\x16\x005\x01U\x003\x014\x01v\0\xd1\0"\0\xe4\0\xe4\0\xd8\0\xe4\0\xe2\0\xe3\0D\0\x15\0\x16\0C\x01\x10\x01\x11\x01\x12\x01:\x01\x9b\x01\x1f\x01\xc5\0\xc8\0\x91\0\x12\0K\x01\x05\x01\xd5\0\x91\0\x91\0\xe8\0\xe9\0\xea\0\xeb\0\xec\0|\0\xed\0\xee\0\xef\0\xf0\0\xf1\0}\0J\x01\xaf\x01L\x01\x19\0\xc6\0\xca\0#\0_\x01$\0\x19\0\xd7\0\x19\0\xe4\0\xe4\0\xe4\0\x14\x01\n\x01\x11\0\xcf\0.\0\xcf\0\'\0\x0b\x01\xcf\0P\0g\x01m\x01o\x01P\0|\0~\0P\0+\x011\0.\x01 \x01~\0*\0+\0,\0-\0U\x01\x81\x002\0P\x01\x12\0\x82\0V\x01F\0W\x01\x89\0X\x01(\x01\x13\0\x14\0\x15\0\x16\0\x17\0\x18\0\x19\0\x1a\0\x1b\0\x1c\0\x1d\0\x1e\0\x1f\0 \0&\0L\0(\0)\0|\0\x99\x017\0G\0|\0\x80\x01T\x018\x005\x006\0v\x01\x81\0O\0\x14\x01k\0\x82\0E\0\x95\x01|\0l\0\x98\x01\x8f\x01\x1c\x01\x96\x01\x94\x01\x91\0<\x01=\x01w\x01\x97\x01~\0\x91\0H\0\x1a\x01\x84\0\xe2\0\xe3\0\x9d\x01\x9a\x01\x9f\x01\x01\0\x02\0\x03\0\x9c\x01/\x000\x003\x004\0I\0\xa1\x01Z\x01[\x01\\\x01]\x01n\x01\xab\x01a\0b\0c\0d\0e\0f\0g\0h\0i\0j\0\xc2\0\xae\x01t\x01\xc3\0\xc2\0i\x01\xcf\0\x07\x01j\x01\x19\0\x1c\0J\0\x19\0\x1c\0K\0\x0f\0P\0\xb4\x01\x0f\0Q\0\xb7\x01\xcf\0\xe2\0\xe3\0x\x01y\x01z\x01{\x01\xa3\0\x93\0\x94\0\x95\0\x87\x01\x87\x01\x87\x01\x87\x01\xcf\0\xde\0<\x01=\x01~\0)\x01R\0\x92\x01m\0\x1c\0\x91\0\x91\0\x1c\0S\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\x008\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0o\0\xa3\x01\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0p\0W\0X\0Y\0\x19\0\x19\0q\0Z\0r\0[\0\\\0]\0^\0s\0_\0`\0\x87\x01t\0\x1c\0u\0w\0\x1c\0~\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0x\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0y\0z\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0{\0\x1c\0\x90\0\x91\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\xbf\0\x1c\0\x92\0\xbe\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\xc0\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x1c\0\x84\0\xda\0\xc7\0\x89\0\xd4\0 \0 \0 \0 \0 \0 \0 \0\xdb\0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0\x1c\0 \0 \0 \0 \0 \0 \0 \0 \0 \0\xdd\0\xf2\0\xfa\0\xfe\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x01\x01\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x03\x01 \0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\x17\0\n\x01\xf8\0)\x01\x16\x01"\0"\0"\0"\0"\0"\0"\0\x19\x01"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0"\0\x1b\x01\x17\0"\0"\0"\0"\0"\0"\0"\0"\0!\x01/\x01\'\x010\x01\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\x006\x01\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\x009\x01"\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0;\x01>\x01?\x01@\x01\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0A\x01\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0B\x01\x03\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x04\x01D\x01E\x01F\x01\x03\0\x0b\x01\x03\0\x03\0\x03\0\x03\0\x03\0a\x01\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0G\x01\x1e\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0I\x01M\x01O\x01Q\x01\x19\0\x19\0\x19\0\x19\0\x19\0R\x01\x19\0S\x01Y\x01\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0^\x01\x03\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0\x19\0`\x01b\x01c\x01d\x01\x03\0e\x01\x03\0\x03\0\x03\0\x03\0\x03\0r\x01f\x01\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0h\x01\x19\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0k\x01l\x01p\x01q\x01\x03\0\x03\0\x03\0\x03\0\x03\0s\x01\x03\0|\x01}\x01\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0~\x01\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x03\0\x7f\x01\x81\x01\x85\x01\x86\x01\x1e\0\x8d\x01\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x8c\x01\x8e\x01\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x91\x01\x03\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x1e\0\x93\x01\x9e\x01\xa0\x01\xa4\x01\x97\0\xb0\x01\x98\0\x99\0\x9a\0\xa5\x01\x9b\0\xa6\x01\xa7\x01\x9c\0\x9d\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\xa8\x01\x1e\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\xa9\x01\xaa\x01\xac\x01\xad\x01\xf6\0\xb2\x01\x98\0\x99\0\x9a\0\xb1\x01\x9b\0\xb3\x01\xa3\0\x9c\0\x9d\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\xb5\x01\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\xb6\x01\xb8\x01\x84\0\xa3\0\xf8\0~\0\x98\0\x99\0\x9a\0\x91\0\x9b\0\xaa\0P\0\x9c\0\x9d\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\x17\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\t\0R\0\x7f\0\x03\0\xfb\0\x03\0\x98\0\x99\0\x9a\0\x19\0\x9b\0P\0K\0\x9c\0\x9d\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0M\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0H\x01\xc1\0\xf5\0\xf4\0\x82\x018\x01\x98\0\x99\0\x9a\0N\x01\x9b\0\x0e\0\xd6\0\x9c\0\x9d\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\0\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\0\x99\0\xcb\0\0\0\xcc\0\0\0\0\0\x9c\0\xcd\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\0\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\0\0\0\0\xde\0\xdf\0\xe0\0\xe1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xe2\0\xe3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\0\x99\0\xcb\0\0\0\xcc\0\0\0\xb3\0\x9c\0\xcd\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\0\0\0\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\0\0\0\0\xde\0\xdf\0\xe0\0\xe1\0\x98\0\x99\0\xcb\0\0\0\xcc\0\0\0\0\0\x9c\0\xcd\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\0\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\0\0\0\0\0\0\xdf\0\xe0\0\xe1\0\x98\0\x99\0\xcb\0\0\0\xcc\0\0\0\0\0\x9c\0\xcd\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\0\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\0\x99\0\xcb\0\0\0\xcc\0\x90\x01\xce\0\x9c\0\xcd\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\0\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\0\x99\0\xcb\0\0\0\xcc\0\0\0\0\0\x9c\0\xcd\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\0\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\0\0\0\0\0\0\0\0\0\0\xe1\0\x98\0\x99\0\xcb\0\0\0\xcc\0\xa2\x01\0\0\x9c\0\xcd\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\0\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\0\0\0\0\0\0\0\0\0\0\0\0\x98\0\x99\0\xcb\0\0\0\xcc\0\0\0\0\0\x9c\0\xcd\0\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\xa3\0\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\xa9\0\xaa\0\0\0\xb3\0\xab\0\xac\0\xad\0\xae\0\xaf\0\xb0\0\xb1\0\xb2\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xb3\0',
/* check */"Y\0\0\0\\\0\xb5\0^\0\xbf\0\xb4\0\x8f\0\xbc\0\xbd\0\xd7\0\x89\0Z\0[\0\xbc\0]\0\xce\0\xca\0\xc4\0^\0X\0\b\x01\xc5\0\xc6\0\\\0\x97\0^\0\x9b\0\xce\0\x9d\0\xd6\0\xd7\0\t\x01\xd1\0\xd2\0\xdf\0\xe0\0\xe1\0i\x01j\x01k\x01+\x01\x01\x01\n\0b\x01c\x012\x011\x01\x8a\x003\x01\t\x015\x01\x8e\0\x04\x01F\0\t\x01<\x01=\x01\xea\0\n\x01\xe6\0\xe7\0N\0\x8a\0\0\0\x9a\0\x9b\0\x8e\0\x9d\x008\x019\x01&\0<\x01=\x01\b\x01\xcb\0\xcc\0\xcd\0\xfc\0\x85\x01\xd8\0\x87\0\x88\0\x04\x012\x01\x11\x01\b\x01\x8d\0\t\x01\n\x01\x9e\0\x9f\0\xa0\0\xa1\0\xa2\0\x04\x01\xa4\0\xa5\0\xa6\0\xa7\0\xa8\0\n\x01\x10\x01\xaa\x01\x12\x01\x01\x01\x87\0\x88\0\0\0)\x01\x05\x01\x07\x01\x8d\0\t\x01\xcb\0\xcc\0\xcd\0\xcf\0\x01\x01\x03\0\xf6\0\t\x01\xf8\0\x04\x01\x07\x01\xfb\0\n\x011\x01<\x01=\x01\x0e\x01\x04\x01\x01\x01\x11\x01\xdf\0\t\x01\xe1\0\n\x01\x07\x01\x17\0\x18\0\x19\0\x1a\0+\x01\x01\x01\x1d\0\x1a\x012\x01\x05\x011\x01\x04\x013\x01\t\x015\x01\xde\0:\x01;\x01<\x01=\x01>\x01?\x01@\x01A\x01B\x01C\x01D\x01E\x01F\x01G\x01\x13\0\t\x01\x15\0\x16\0\x04\x01{\x01\x04\x01\x04\x01\x04\x01`\x01\n\x01\t\x01\x1f\0 \0\n\x01\x01\x01\n\x01\x14\x01\n\x01\x05\x01'\0x\x01\x04\x01\n\x01z\x01r\x01{\x01x\x01\n\x01\x04\x01.\x01/\x01Q\x01y\x01\x05\x01\n\x01\x04\x016\x01\t\x018\x019\x01\x8c\x01\x81\x01\x8e\x01\x01\0\x02\0\x03\0\x8a\x01\x1b\0\x1c\0\x1d\0\x1e\0\x04\x01\x90\x01#\x01$\x01%\x01&\x01<\x01\x9e\x019\0:\0;\0<\0=\0>\0?\0@\0A\0B\0\x06\x01\xa2\x01K\x01\t\x01\x06\x01\x0e\x01s\x01\t\x01\x11\x01\x06\x01\x06\x01\x04\x01\t\x01\t\x01\x04\x01\x07\x01\x04\x01\xb2\x01\n\x01\x04\x01\xb5\x01\x82\x018\x019\x01U\x01V\x01W\x01X\x01\n\x01\x01\x01\x02\x01\x03\x01h\x01i\x01j\x01k\x01\x91\x01-\x01.\x01/\x01\x05\x01\x06\x01\x04\x01t\x01\n\x01\x06\x01\t\x01\n\x01\t\x01\x04\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x01\t\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01\x92\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01+\x01,\x01-\x01\t\x01\n\x01\n\x011\x01\n\x013\x014\x015\x016\x01\n\x018\x019\x01\xaa\x01#\x01\x06\x01\n\x01\n\x01\t\x01\x05\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x01\n\x01H\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01\n\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01\x06\x01\x04\x01\x04\x01\t\x01\n\x01\x0b\x01\f\x01\r\x01+\x01\x0f\x01\n\x01\n\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\t\x01\x04\x01\t\x01\t\x01\t\x01\t\x01\n\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x01\t\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01H\x01\"\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01!\x01\n\x01\t\x01\t\x01\n\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x01\t\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\x01\x01\t\x01\x06\x01\n\x01\t\x01\n\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x01\n\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\t\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\t\x01\x04\x01\n\x01\x04\x01\t\x01\n\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x01\"\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01\n\x01\n\x01\n\x01\t\x01\n\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x01\x06\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\b\x01\n\x01\x01\x01\t\x01\t\x01\x07\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x01\x06\x01\x11\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01\n\x01\n\x016\x01\t\x01\n\x01\x0b\x01\f\x01\r\x01\n\x01\x0f\x01\n\x01\n\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01\n\x01\n\x01\x06\x01\t\x01\x04\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x014\x01\n\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\x0e\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\x0e\x01\n\x01\n\x01\n\x01\t\x01\n\x01\x0b\x01\f\x01\r\x01\t\x01\x0f\x01\n\x01\n\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01\n\x01\n\x01\n\x01\t\x01\x06\x01\x0b\x01\f\x01\r\x01\x0e\x01\x0f\x01\n\x01\n\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\t\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01\n\x01\n\x01\n\x01\t\x01\t\x01\x0b\x01\f\x01\r\x01\n\x01\x0f\x01\n\x01\n\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01\x0e\x01\n\x01\n\x01\t\x01\x11\x01\x0b\x01\f\x01\r\x01\n\x01\x0f\x01\t\x01\0\0\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\x11\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01\n\x01\n\x01\n\x01\t\x01\x01\x01\x0b\x01\f\x01\r\x01\n\x01\x0f\x01\n\x01\n\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\n\x01\n\x01\x01\x01\n\x01\t\x01\t\x01\x0b\x01\f\x01\r\x01\x01\x01\x0f\x01\x0e\x01\n\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\n\x01H\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\x0e\x01\x86\0\xab\0\xaa\0\t\x01\xf4\0\x0b\x01\f\x01\r\x01\x14\x01\x0f\x01\x02\0\x8d\0\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\xff\xffH\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x01\f\x01\r\x01\xff\xff\x0f\x01\xff\xff\xff\xff\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\xff\xffH\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\xff\xff\xff\xff-\x01.\x01/\x010\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff8\x019\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x01\f\x01\r\x01\xff\xff\x0f\x01\xff\xffH\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\xff\xff\xff\xff#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\xff\xff\xff\xff-\x01.\x01/\x010\x01\x0b\x01\f\x01\r\x01\xff\xff\x0f\x01\xff\xff\xff\xff\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\xff\xffH\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\xff\xff\xff\xff\xff\xff.\x01/\x010\x01\x0b\x01\f\x01\r\x01\xff\xff\x0f\x01\xff\xff\xff\xff\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\xff\xffH\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x01\f\x01\r\x01\xff\xff\x0f\x01\x10\x017\x01\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\xff\xffH\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x01\f\x01\r\x01\xff\xff\x0f\x01\xff\xff\xff\xff\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\xff\xffH\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff0\x01\x0b\x01\f\x01\r\x01\xff\xff\x0f\x01\x10\x01\xff\xff\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\xff\xffH\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x0b\x01\f\x01\r\x01\xff\xff\x0f\x01\xff\xff\xff\xff\x12\x01\x13\x01\x14\x01\x15\x01\x16\x01\x17\x01\x18\x01\x19\x01\x1a\x01\x1b\x01\x1c\x01\x1d\x01\x1e\x01\x1f\x01 \x01\xff\xffH\x01#\x01$\x01%\x01&\x01'\x01(\x01)\x01*\x01\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xffH\x01",
/* error_function */parse_error,
/* names_const */"ANYFUNC\0MUT\0LPAR\0RPAR\0NOP\0DROP\0BLOCK\0END\0IF\0THEN\0ELSE\0SELECT\0LOOP\0BR\0BR_IF\0BR_TABLE\0CALL\0CALL_INDIRECT\0RETURN\0GET_LOCAL\0SET_LOCAL\0TEE_LOCAL\0GET_GLOBAL\0SET_GLOBAL\0UNREACHABLE\0CURRENT_MEMORY\0GROW_MEMORY\0FUNC\0START\0TYPE\0PARAM\0RESULT\0LOCAL\0GLOBAL\0MODULE\0TABLE\0ELEM\0MEMORY\0DATA\0OFFSET\0IMPORT\0EXPORT\0SCRIPT\0REGISTER\0INVOKE\0GET\0ASSERT_MALFORMED\0ASSERT_INVALID\0ASSERT_SOFT_INVALID\0ASSERT_UNLINKABLE\0ASSERT_RETURN\0ASSERT_RETURN_NAN\0ASSERT_TRAP\0ASSERT_EXHAUSTION\0INPUT\0OUTPUT\0EOF\0",
/* names_block */"NAT\0INT\0FLOAT\0TEXT\0VAR\0VALUE_TYPE\0LOAD\0STORE\0OFFSET_EQ_NAT\0ALIGN_EQ_NAT\0CONST\0UNARY\0BINARY\0COMPARE\0CONVERT\0TEST\0"
];
function script(lexfun, lexbuf) {
return Parsing.yyparse(yytables, 1, lexfun, lexbuf);
}
function script1(lexfun, lexbuf) {
return Parsing.yyparse(yytables, 2, lexfun, lexbuf);
}
function module1(lexfun, lexbuf) {
return Parsing.yyparse(yytables, 3, lexfun, lexbuf);
}
exports.script = script;
exports.script1 = script1;
exports.module1 = module1;
/* VarMap Not a pure module */
//////// end of parser.js ////////
    return exports;
  };
_registry['parsing'] = function() {
    let exports = {};
//////// start of parsing.js ////////
'use strict';
var $$Array = require("./array");
var Curry = require("./curry");
var Lexing = require("./lexing");
var Caml_obj = require("./caml_obj");
var Caml_array = require("./caml_array");
var Caml_parser = require("./caml_parser");
var Caml_exceptions = require("./caml_exceptions");
var YYexit = Caml_exceptions.create("Parsing.YYexit");
var Parse_error = Caml_exceptions.create("Parsing.Parse_error");
var env = /* record */[
/* s_stack */Caml_array.caml_make_vect(100, 0),
/* v_stack */Caml_array.caml_make_vect(100, /* () */0),
/* symb_start_stack */Caml_array.caml_make_vect(100, Lexing.dummy_pos),
/* symb_end_stack */Caml_array.caml_make_vect(100, Lexing.dummy_pos),
/* stacksize */100,
/* stackbase */0,
/* curr_char */0,
/* lval : () */0,
/* symb_start */Lexing.dummy_pos,
/* symb_end */Lexing.dummy_pos,
/* asp */0,
/* rule_len */0,
/* rule_number */0,
/* sp */0,
/* state */0,
/* errflag */0
];
function grow_stacks() {
var oldsize = env[/* stacksize */4];
var newsize = (oldsize << 1);
var new_s = Caml_array.caml_make_vect(newsize, 0);
var new_v = Caml_array.caml_make_vect(newsize, /* () */0);
var new_start = Caml_array.caml_make_vect(newsize, Lexing.dummy_pos);
var new_end = Caml_array.caml_make_vect(newsize, Lexing.dummy_pos);
$$Array.blit(env[/* s_stack */0], 0, new_s, 0, oldsize);
env[/* s_stack */0] = new_s;
$$Array.blit(env[/* v_stack */1], 0, new_v, 0, oldsize);
env[/* v_stack */1] = new_v;
$$Array.blit(env[/* symb_start_stack */2], 0, new_start, 0, oldsize);
env[/* symb_start_stack */2] = new_start;
$$Array.blit(env[/* symb_end_stack */3], 0, new_end, 0, oldsize);
env[/* symb_end_stack */3] = new_end;
env[/* stacksize */4] = newsize;
return /* () */0;
}
function clear_parser() {
$$Array.fill(env[/* v_stack */1], 0, env[/* stacksize */4], /* () */0);
env[/* lval */7] = /* () */0;
return /* () */0;
}
var current_lookahead_fun = [function () {
return /* false */0;
}];
function yyparse(tables, start, lexer, lexbuf) {
var init_asp = env[/* asp */10];
var init_sp = env[/* sp */13];
var init_stackbase = env[/* stackbase */5];
var init_state = env[/* state */14];
var init_curr_char = env[/* curr_char */6];
var init_lval = env[/* lval */7];
var init_errflag = env[/* errflag */15];
env[/* stackbase */5] = env[/* sp */13] + 1 | 0;
env[/* curr_char */6] = start;
env[/* symb_end */9] = lexbuf[/* lex_curr_p */11];
try {
var _cmd = /* Start */0;
var _arg = /* () */0;
while(true) {
var arg = _arg;
var cmd = _cmd;
var match = Caml_parser.caml_parse_engine(tables, env, cmd, arg);
switch (match) {
case 0 :
var t = Curry._1(lexer, lexbuf);
env[/* symb_start */8] = lexbuf[/* lex_start_p */10];
env[/* symb_end */9] = lexbuf[/* lex_curr_p */11];
_arg = t;
_cmd = /* Token_read */1;
continue ;
case 1 :
throw Parse_error;
case 2 :
grow_stacks(/* () */0);
_arg = /* () */0;
_cmd = /* Stacks_grown_1 */2;
continue ;
case 3 :
grow_stacks(/* () */0);
_arg = /* () */0;
_cmd = /* Stacks_grown_2 */3;
continue ;
case 4 :
var match$1;
try {
match$1 = /* tuple */[
/* Semantic_action_computed */4,
Curry._1(tables[/* actions */0][env[/* rule_number */12]], env)
];
}
catch (exn){
if (exn === Parse_error) {
match$1 = /* tuple */[
/* Error_detected */5,
/* () */0
];
}
else {
throw exn;
}
}
_arg = match$1[1];
_cmd = match$1[0];
continue ;
case 5 :
Curry._1(tables[/* error_function */13], "syntax error");
_arg = /* () */0;
_cmd = /* Error_detected */5;
continue ;
}
};
}
catch (exn$1){
var curr_char = env[/* curr_char */6];
env[/* asp */10] = init_asp;
env[/* sp */13] = init_sp;
env[/* stackbase */5] = init_stackbase;
env[/* state */14] = init_state;
env[/* curr_char */6] = init_curr_char;
env[/* lval */7] = init_lval;
env[/* errflag */15] = init_errflag;
if (exn$1[0] === YYexit) {
return exn$1[1];
}
else {
current_lookahead_fun[0] = function (tok) {
if (tok.length !== undefined) {
return +(tables[/* transl_block */2][tok.tag | 0] === curr_char);
}
else {
return +(tables[/* transl_const */1][tok] === curr_char);
}
};
throw exn$1;
}
}
}
function peek_val(env, n) {
return env[/* v_stack */1][env[/* asp */10] - n | 0];
}
function symbol_start_pos() {
var _i = env[/* rule_len */11];
while(true) {
var i = _i;
if (i <= 0) {
return env[/* symb_end_stack */3][env[/* asp */10]];
}
else {
var st = env[/* symb_start_stack */2][(env[/* asp */10] - i | 0) + 1 | 0];
var en = env[/* symb_end_stack */3][(env[/* asp */10] - i | 0) + 1 | 0];
if (Caml_obj.caml_notequal(st, en)) {
return st;
}
else {
_i = i - 1 | 0;
continue ;
}
}
};
}
function symbol_end_pos() {
return env[/* symb_end_stack */3][env[/* asp */10]];
}
function rhs_start_pos(n) {
return env[/* symb_start_stack */2][env[/* asp */10] - (env[/* rule_len */11] - n | 0) | 0];
}
function rhs_end_pos(n) {
return env[/* symb_end_stack */3][env[/* asp */10] - (env[/* rule_len */11] - n | 0) | 0];
}
function symbol_start() {
return symbol_start_pos(/* () */0)[/* pos_cnum */3];
}
function symbol_end() {
return symbol_end_pos(/* () */0)[/* pos_cnum */3];
}
function rhs_start(n) {
return rhs_start_pos(n)[/* pos_cnum */3];
}
function rhs_end(n) {
return rhs_end_pos(n)[/* pos_cnum */3];
}
function is_current_lookahead(tok) {
return Curry._1(current_lookahead_fun[0], tok);
}
function parse_error() {
return /* () */0;
}
var set_trace = Caml_parser.caml_set_parser_trace;
exports.symbol_start = symbol_start;
exports.symbol_end = symbol_end;
exports.rhs_start = rhs_start;
exports.rhs_end = rhs_end;
exports.symbol_start_pos = symbol_start_pos;
exports.symbol_end_pos = symbol_end_pos;
exports.rhs_start_pos = rhs_start_pos;
exports.rhs_end_pos = rhs_end_pos;
exports.clear_parser = clear_parser;
exports.Parse_error = Parse_error;
exports.set_trace = set_trace;
exports.YYexit = YYexit;
exports.yyparse = yyparse;
exports.peek_val = peek_val;
exports.is_current_lookahead = is_current_lookahead;
exports.parse_error = parse_error;
/* No side effect */
//////// end of parsing.js ////////
    return exports;
  };
_registry['pervasives'] = function() {
    let exports = {};
//////// start of pervasives.js ////////
'use strict';
var Curry = require("./curry");
var Caml_io = require("./caml_io");
var Caml_obj = require("./caml_obj");
var Caml_format = require("./caml_format");
var Caml_string = require("./caml_string");
var Caml_exceptions = require("./caml_exceptions");
var Caml_builtin_exceptions = require("./caml_builtin_exceptions");
var CamlinternalFormatBasics = require("./camlinternalFormatBasics");
function failwith(s) {
throw [
Caml_builtin_exceptions.failure,
s
];
}
function invalid_arg(s) {
throw [
Caml_builtin_exceptions.invalid_argument,
s
];
}
var Exit = Caml_exceptions.create("Pervasives.Exit");
function min(x, y) {
if (Caml_obj.caml_lessequal(x, y)) {
return x;
}
else {
return y;
}
}
function max(x, y) {
if (Caml_obj.caml_greaterequal(x, y)) {
return x;
}
else {
return y;
}
}
function abs(x) {
if (x >= 0) {
return x;
}
else {
return -x | 0;
}
}
function lnot(x) {
return x ^ -1;
}
var min_int = -2147483648;
function $caret(a, b) {
return a + b;
}
function char_of_int(n) {
if (n < 0 || n > 255) {
throw [
Caml_builtin_exceptions.invalid_argument,
"char_of_int"
];
}
else {
return n;
}
}
function string_of_bool(b) {
if (b) {
return "true";
}
else {
return "false";
}
}
function bool_of_string(param) {
switch (param) {
case "false" :
return /* false */0;
case "true" :
return /* true */1;
default:
throw [
Caml_builtin_exceptions.invalid_argument,
"bool_of_string"
];
}
}
function string_of_int(param) {
return "" + param;
}
function valid_float_lexem(s) {
var l = s.length;
var _i = 0;
while(true) {
var i = _i;
if (i >= l) {
return $caret(s, ".");
}
else {
var match = Caml_string.get(s, i);
if (match >= 48) {
if (match >= 58) {
return s;
}
else {
_i = i + 1 | 0;
continue ;
}
}
else if (match !== 45) {
return s;
}
else {
_i = i + 1 | 0;
continue ;
}
}
};
}
function string_of_float(f) {
return valid_float_lexem(Caml_format.caml_format_float("%.12g", f));
}
function $at(l1, l2) {
if (l1) {
return /* :: */[
l1[0],
$at(l1[1], l2)
];
}
else {
return l2;
}
}
var stdin = Caml_io.stdin;
var stdout = Caml_io.stdout;
var stderr = Caml_io.stderr;
function open_out_gen(_, _$1, _$2) {
return Caml_io.caml_ml_open_descriptor_out(function () {
throw "caml_sys_open not implemented by bucklescript yet\n";
}());
}
function open_out(name) {
return open_out_gen(/* :: */[
/* Open_wronly */1,
/* :: */[
/* Open_creat */3,
/* :: */[
/* Open_trunc */4,
/* :: */[
/* Open_text */7,
/* [] */0
]
]
]
], 438, name);
}
function open_out_bin(name) {
return open_out_gen(/* :: */[
/* Open_wronly */1,
/* :: */[
/* Open_creat */3,
/* :: */[
/* Open_trunc */4,
/* :: */[
/* Open_binary */6,
/* [] */0
]
]
]
], 438, name);
}
function flush_all() {
var _param = Caml_io.caml_ml_out_channels_list(/* () */0);
while(true) {
var param = _param;
if (param) {
try {
Caml_io.caml_ml_flush(param[0]);
}
catch (exn){
}
_param = param[1];
continue ;
}
else {
return /* () */0;
}
};
}
function output_bytes(oc, s) {
return Caml_io.caml_ml_output(oc, s, 0, s.length);
}
function output_string(oc, s) {
return Caml_io.caml_ml_output(oc, s, 0, s.length);
}
function output(oc, s, ofs, len) {
if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"output"
];
}
else {
return Caml_io.caml_ml_output(oc, s, ofs, len);
}
}
function output_substring(oc, s, ofs, len) {
if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"output_substring"
];
}
else {
return Caml_io.caml_ml_output(oc, s, ofs, len);
}
}
function output_value(_, _$1) {
return function () {
throw "caml_output_value not implemented by bucklescript yet\n";
}();
}
function close_out(oc) {
Caml_io.caml_ml_flush(oc);
return function () {
throw "caml_ml_close_channel not implemented by bucklescript yet\n";
}();
}
function close_out_noerr(oc) {
try {
Caml_io.caml_ml_flush(oc);
}
catch (exn){
}
try {
return function () {
throw "caml_ml_close_channel not implemented by bucklescript yet\n";
}();
}
catch (exn$1){
return /* () */0;
}
}
function open_in_gen(_, _$1, _$2) {
return Caml_io.caml_ml_open_descriptor_in(function () {
throw "caml_sys_open not implemented by bucklescript yet\n";
}());
}
function open_in(name) {
return open_in_gen(/* :: */[
/* Open_rdonly */0,
/* :: */[
/* Open_text */7,
/* [] */0
]
], 0, name);
}
function open_in_bin(name) {
return open_in_gen(/* :: */[
/* Open_rdonly */0,
/* :: */[
/* Open_binary */6,
/* [] */0
]
], 0, name);
}
function input(_, s, ofs, len) {
if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"input"
];
}
else {
return function () {
throw "caml_ml_input not implemented by bucklescript yet\n";
}();
}
}
function unsafe_really_input(_, _$1, _ofs, _len) {
while(true) {
var len = _len;
var ofs = _ofs;
if (len <= 0) {
return /* () */0;
}
else {
var r = function () {
throw "caml_ml_input not implemented by bucklescript yet\n";
}();
if (r) {
_len = len - r | 0;
_ofs = ofs + r | 0;
continue ;
}
else {
throw Caml_builtin_exceptions.end_of_file;
}
}
};
}
function really_input(ic, s, ofs, len) {
if (ofs < 0 || len < 0 || ofs > (s.length - len | 0)) {
throw [
Caml_builtin_exceptions.invalid_argument,
"really_input"
];
}
else {
return unsafe_really_input(ic, s, ofs, len);
}
}
function really_input_string(ic, len) {
var s = Caml_string.caml_create_string(len);
really_input(ic, s, 0, len);
return Caml_string.bytes_to_string(s);
}
function input_line(chan) {
var build_result = function (buf, _pos, _param) {
while(true) {
var param = _param;
var pos = _pos;
if (param) {
var hd = param[0];
var len = hd.length;
Caml_string.caml_blit_bytes(hd, 0, buf, pos - len | 0, len);
_param = param[1];
_pos = pos - len | 0;
continue ;
}
else {
return buf;
}
};
};
var scan = function (_accu, _len) {
while(true) {
var len = _len;
var accu = _accu;
var n = function () {
throw "caml_ml_input_scan_line not implemented by bucklescript yet\n";
}();
if (n) {
if (n > 0) {
var res = Caml_string.caml_create_string(n - 1 | 0);
(function () {
throw "caml_ml_input not implemented by bucklescript yet\n";
}());
Caml_io.caml_ml_input_char(chan);
if (accu) {
var len$1 = (len + n | 0) - 1 | 0;
return build_result(Caml_string.caml_create_string(len$1), len$1, /* :: */[
res,
accu
]);
}
else {
return res;
}
}
else {
var beg = Caml_string.caml_create_string(-n | 0);
(function () {
throw "caml_ml_input not implemented by bucklescript yet\n";
}());
_len = len - n | 0;
_accu = /* :: */[
beg,
accu
];
continue ;
}
}
else if (accu) {
return build_result(Caml_string.caml_create_string(len), len, accu);
}
else {
throw Caml_builtin_exceptions.end_of_file;
}
};
};
return Caml_string.bytes_to_string(scan(/* [] */0, 0));
}
function close_in_noerr() {
try {
return function () {
throw "caml_ml_close_channel not implemented by bucklescript yet\n";
}();
}
catch (exn){
return /* () */0;
}
}
function print_char(c) {
return Caml_io.caml_ml_output_char(stdout, c);
}
function print_string(s) {
return output_string(stdout, s);
}
function print_bytes(s) {
return output_bytes(stdout, s);
}
function print_int(i) {
return output_string(stdout, "" + i);
}
function print_float(f) {
return output_string(stdout, valid_float_lexem(Caml_format.caml_format_float("%.12g", f)));
}
function print_endline(param) {
console.log(param);
return 0;
}
function print_newline() {
Caml_io.caml_ml_output_char(stdout, /* "\n" */10);
return Caml_io.caml_ml_flush(stdout);
}
function prerr_char(c) {
return Caml_io.caml_ml_output_char(stderr, c);
}
function prerr_string(s) {
return output_string(stderr, s);
}
function prerr_bytes(s) {
return output_bytes(stderr, s);
}
function prerr_int(i) {
return output_string(stderr, "" + i);
}
function prerr_float(f) {
return output_string(stderr, valid_float_lexem(Caml_format.caml_format_float("%.12g", f)));
}
function prerr_endline(param) {
console.error(param);
return 0;
}
function prerr_newline() {
Caml_io.caml_ml_output_char(stderr, /* "\n" */10);
return Caml_io.caml_ml_flush(stderr);
}
function read_line() {
Caml_io.caml_ml_flush(stdout);
return input_line(stdin);
}
function read_int() {
return Caml_format.caml_int_of_string((Caml_io.caml_ml_flush(stdout), input_line(stdin)));
}
function read_float() {
return Caml_format.caml_float_of_string((Caml_io.caml_ml_flush(stdout), input_line(stdin)));
}
function string_of_format(param) {
return param[1];
}
function $caret$caret(param, param$1) {
return /* Format */[
CamlinternalFormatBasics.concat_fmt(param[0], param$1[0]),
$caret(param[1], $caret("%,", param$1[1]))
];
}
var exit_function = [flush_all];
function at_exit(f) {
var g = exit_function[0];
exit_function[0] = function () {
Curry._1(f, /* () */0);
return Curry._1(g, /* () */0);
};
return /* () */0;
}
function do_at_exit() {
return Curry._1(exit_function[0], /* () */0);
}
function exit() {
do_at_exit(/* () */0);
return function () {
throw "caml_sys_exit not implemented by bucklescript yet\n";
}();
}
var max_int = 2147483647;
var infinity = Infinity;
var neg_infinity = -Infinity;
var nan = NaN;
var max_float = Number.MAX_VALUE;
var min_float = Number.MIN_VALUE;
var epsilon_float = 2.220446049250313e-16;
var flush = Caml_io.caml_ml_flush;
var output_char = Caml_io.caml_ml_output_char;
var output_byte = Caml_io.caml_ml_output_char;
function output_binary_int(_, _$1) {
return function () {
throw "caml_ml_output_int not implemented by bucklescript yet\n";
}();
}
function seek_out(_, _$1) {
return function () {
throw "caml_ml_seek_out not implemented by bucklescript yet\n";
}();
}
function pos_out() {
return function () {
throw "caml_ml_pos_out not implemented by bucklescript yet\n";
}();
}
function out_channel_length() {
return function () {
throw "caml_ml_channel_size not implemented by bucklescript yet\n";
}();
}
function set_binary_mode_out(_, _$1) {
return function () {
throw "caml_ml_set_binary_mode not implemented by bucklescript yet\n";
}();
}
var input_char = Caml_io.caml_ml_input_char;
var input_byte = Caml_io.caml_ml_input_char;
function input_binary_int() {
return function () {
throw "caml_ml_input_int not implemented by bucklescript yet\n";
}();
}
function input_value() {
return function () {
throw "caml_input_value not implemented by bucklescript yet\n";
}();
}
function seek_in(_, _$1) {
return function () {
throw "caml_ml_seek_in not implemented by bucklescript yet\n";
}();
}
function pos_in() {
return function () {
throw "caml_ml_pos_in not implemented by bucklescript yet\n";
}();
}
function in_channel_length() {
return function () {
throw "caml_ml_channel_size not implemented by bucklescript yet\n";
}();
}
function close_in() {
return function () {
throw "caml_ml_close_channel not implemented by bucklescript yet\n";
}();
}
function set_binary_mode_in(_, _$1) {
return function () {
throw "caml_ml_set_binary_mode not implemented by bucklescript yet\n";
}();
}
function LargeFile_000(_, _$1) {
return function () {
throw "caml_ml_seek_out_64 not implemented by bucklescript yet\n";
}();
}
function LargeFile_001() {
return function () {
throw "caml_ml_pos_out_64 not implemented by bucklescript yet\n";
}();
}
function LargeFile_002() {
return function () {
throw "caml_ml_channel_size_64 not implemented by bucklescript yet\n";
}();
}
function LargeFile_003(_, _$1) {
return function () {
throw "caml_ml_seek_in_64 not implemented by bucklescript yet\n";
}();
}
function LargeFile_004() {
return function () {
throw "caml_ml_pos_in_64 not implemented by bucklescript yet\n";
}();
}
function LargeFile_005() {
return function () {
throw "caml_ml_channel_size_64 not implemented by bucklescript yet\n";
}();
}
var LargeFile = [
LargeFile_000,
LargeFile_001,
LargeFile_002,
LargeFile_003,
LargeFile_004,
LargeFile_005
];
exports.invalid_arg = invalid_arg;
exports.failwith = failwith;
exports.Exit = Exit;
exports.min = min;
exports.max = max;
exports.abs = abs;
exports.max_int = max_int;
exports.min_int = min_int;
exports.lnot = lnot;
exports.infinity = infinity;
exports.neg_infinity = neg_infinity;
exports.nan = nan;
exports.max_float = max_float;
exports.min_float = min_float;
exports.epsilon_float = epsilon_float;
exports.$caret = $caret;
exports.char_of_int = char_of_int;
exports.string_of_bool = string_of_bool;
exports.bool_of_string = bool_of_string;
exports.string_of_int = string_of_int;
exports.string_of_float = string_of_float;
exports.$at = $at;
exports.stdin = stdin;
exports.stdout = stdout;
exports.stderr = stderr;
exports.print_char = print_char;
exports.print_string = print_string;
exports.print_bytes = print_bytes;
exports.print_int = print_int;
exports.print_float = print_float;
exports.print_endline = print_endline;
exports.print_newline = print_newline;
exports.prerr_char = prerr_char;
exports.prerr_string = prerr_string;
exports.prerr_bytes = prerr_bytes;
exports.prerr_int = prerr_int;
exports.prerr_float = prerr_float;
exports.prerr_endline = prerr_endline;
exports.prerr_newline = prerr_newline;
exports.read_line = read_line;
exports.read_int = read_int;
exports.read_float = read_float;
exports.open_out = open_out;
exports.open_out_bin = open_out_bin;
exports.open_out_gen = open_out_gen;
exports.flush = flush;
exports.flush_all = flush_all;
exports.output_char = output_char;
exports.output_string = output_string;
exports.output_bytes = output_bytes;
exports.output = output;
exports.output_substring = output_substring;
exports.output_byte = output_byte;
exports.output_binary_int = output_binary_int;
exports.output_value = output_value;
exports.seek_out = seek_out;
exports.pos_out = pos_out;
exports.out_channel_length = out_channel_length;
exports.close_out = close_out;
exports.close_out_noerr = close_out_noerr;
exports.set_binary_mode_out = set_binary_mode_out;
exports.open_in = open_in;
exports.open_in_bin = open_in_bin;
exports.open_in_gen = open_in_gen;
exports.input_char = input_char;
exports.input_line = input_line;
exports.input = input;
exports.really_input = really_input;
exports.really_input_string = really_input_string;
exports.input_byte = input_byte;
exports.input_binary_int = input_binary_int;
exports.input_value = input_value;
exports.seek_in = seek_in;
exports.pos_in = pos_in;
exports.in_channel_length = in_channel_length;
exports.close_in = close_in;
exports.close_in_noerr = close_in_noerr;
exports.set_binary_mode_in = set_binary_mode_in;
exports.LargeFile = LargeFile;
exports.string_of_format = string_of_format;
exports.$caret$caret = $caret$caret;
exports.exit = exit;
exports.at_exit = at_exit;
exports.valid_float_lexem = valid_float_lexem;
exports.unsafe_really_input = unsafe_really_input;
exports.do_at_exit = do_at_exit;
/* No side effect */
//////// end of pervasives.js ////////
    return exports;
  };
_registry['printf'] = function() {
    let exports = {};
//////// start of printf.js ////////
'use strict';
var Curry = require("./curry");
var Buffer = require("./buffer");
var Pervasives = require("./pervasives");
var CamlinternalFormat = require("./camlinternalFormat");
function kfprintf(k, o, param) {
return CamlinternalFormat.make_printf(function (o, acc) {
CamlinternalFormat.output_acc(o, acc);
return Curry._1(k, o);
}, o, /* End_of_acc */0, param[0]);
}
function kbprintf(k, b, param) {
return CamlinternalFormat.make_printf(function (b, acc) {
CamlinternalFormat.bufput_acc(b, acc);
return Curry._1(k, b);
}, b, /* End_of_acc */0, param[0]);
}
function ikfprintf(k, oc, param) {
return CamlinternalFormat.make_printf(function (oc, _) {
return Curry._1(k, oc);
}, oc, /* End_of_acc */0, param[0]);
}
function fprintf(oc, fmt) {
return kfprintf(function () {
return /* () */0;
}, oc, fmt);
}
function bprintf(b, fmt) {
return kbprintf(function () {
return /* () */0;
}, b, fmt);
}
function ifprintf(oc, fmt) {
return ikfprintf(function () {
return /* () */0;
}, oc, fmt);
}
function printf(fmt) {
return fprintf(Pervasives.stdout, fmt);
}
function eprintf(fmt) {
return fprintf(Pervasives.stderr, fmt);
}
function ksprintf(k, param) {
var k$prime = function (_, acc) {
var buf = Buffer.create(64);
CamlinternalFormat.strput_acc(buf, acc);
return Curry._1(k, Buffer.contents(buf));
};
return CamlinternalFormat.make_printf(k$prime, /* () */0, /* End_of_acc */0, param[0]);
}
function sprintf(fmt) {
return ksprintf(function (s) {
return s;
}, fmt);
}
var kprintf = ksprintf;
exports.fprintf = fprintf;
exports.printf = printf;
exports.eprintf = eprintf;
exports.sprintf = sprintf;
exports.bprintf = bprintf;
exports.ifprintf = ifprintf;
exports.kfprintf = kfprintf;
exports.ikfprintf = ikfprintf;
exports.ksprintf = ksprintf;
exports.kbprintf = kbprintf;
exports.kprintf = kprintf;
/* No side effect */
//////// end of printf.js ////////
    return exports;
  };
_registry['print'] = function() {
    let exports = {};
//////// start of print.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var List = require("bs-platform/lib/js/list");
var Sexpr = require("./sexpr");
var Arrange = require("./arrange");
function instr(oc, width, e) {
return Sexpr.output(oc, width, Arrange.instr(e));
}
function func(oc, width, f) {
return Sexpr.output(oc, width, Arrange.func(f));
}
function module_(oc, width, m) {
return Sexpr.output(oc, width, Arrange.module_(m));
}
function script(oc, width, mode, s) {
return List.iter(function (param) {
return Sexpr.output(oc, width, param);
}, Arrange.script(mode, s));
}
exports.instr = instr;
exports.func = func;
exports.module_ = module_;
exports.script = script;
/* Arrange Not a pure module */
//////// end of print.js ////////
    return exports;
  };
_registry['script'] = function() {
    let exports = {};
//////// start of script.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Caml_exceptions = require("bs-platform/lib/js/caml_exceptions");
var Syntax = Caml_exceptions.create("Script.Syntax");
exports.Syntax = Syntax;
/* No side effect */
//////// end of script.js ////////
    return exports;
  };
_registry['sexpr'] = function() {
    let exports = {};
//////// start of sexpr.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var List = require("bs-platform/lib/js/list");
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var $$String = require("bs-platform/lib/js/string");
var Pervasives = require("bs-platform/lib/js/pervasives");
function $caret$plus(s, r) {
return /* Concat */Block.__(1, [/* :: */[
/* Leaf */Block.__(0, [s]),
/* :: */[
r,
/* [] */0
]
]]);
}
function $plus$caret(r, s) {
return /* Concat */Block.__(1, [/* :: */[
r,
/* :: */[
/* Leaf */Block.__(0, [s]),
/* [] */0
]
]]);
}
function iter(f, param) {
if (param.tag) {
return List.iter(function (param) {
return iter(f, param);
}, param[0]);
}
else {
return Curry._1(f, param[0]);
}
}
function concat(param) {
if (param.tag) {
return $$String.concat("", List.map(concat, param[0]));
}
else {
return param[0];
}
}
function pp(off, width, param) {
if (param.tag) {
var s = param[0];
var partial_arg = off + 2 | 0;
var match = List.split(List.map(function (param) {
return pp(partial_arg, width, param);
}, param[1]));
var rs = match[1];
var len = (s.length + List.length(rs) | 0) + List.fold_left(function (prim, prim$1) {
return prim + prim$1 | 0;
}, 2, match[0]) | 0;
var match$1;
if ((off + len | 0) <= width) {
match$1 = /* tuple */[
" ",
""
];
}
else {
var indent = $$String.make(off, /* " " */32);
match$1 = /* tuple */[
"\n " + indent,
"\n" + indent
];
}
var sep = match$1[0];
return /* tuple */[
len,
$caret$plus("(", $caret$plus(s, $plus$caret($plus$caret(/* Concat */Block.__(1, [List.map(function (r) {
return $caret$plus(sep, r);
}, rs)]), match$1[1]), ")")))
];
}
else {
var s$1 = param[0];
return /* tuple */[
s$1.length,
/* Leaf */Block.__(0, [s$1])
];
}
}
function output(oc, width, x) {
iter(function (param) {
return Pervasives.output_string(oc, param);
}, pp(0, width, x)[1]);
Pervasives.output_string(oc, "\n");
return Curry._1(Pervasives.flush, oc);
}
function print(param, param$1) {
return output(Pervasives.stdout, param, param$1);
}
function to_string(width, x) {
return concat(pp(0, width, x)[1]) + "\n";
}
exports.output = output;
exports.print = print;
exports.to_string = to_string;
/* No side effect */
//////// end of sexpr.js ////////
    return exports;
  };
_registry['source'] = function() {
    let exports = {};
//////// start of source.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var Printf = require("bs-platform/lib/js/printf");
var Caml_obj = require("bs-platform/lib/js/caml_obj");
var Pervasives = require("bs-platform/lib/js/pervasives");
function $at$at(x, region) {
return /* record */[
/* at */region,
/* it */x
];
}
var no_pos = /* record */[
/* file */"",
/* line */0,
/* column */0
];
var no_region = /* record */[
/* left */no_pos,
/* right */no_pos
];
function string_of_pos(pos) {
if (pos[/* line */1] === -1) {
return Curry._1(Printf.sprintf(/* Format */[
/* String_literal */Block.__(11, [
"0x",
/* Int */Block.__(4, [
/* Int_x */6,
/* No_padding */0,
/* No_precision */0,
/* End_of_format */0
])
]),
"0x%x"
]), pos[/* column */2]);
}
else {
return Pervasives.string_of_int(pos[/* line */1]) + ("." + Pervasives.string_of_int(pos[/* column */2] + 1 | 0));
}
}
function string_of_region(r) {
return r[/* left */0][/* file */0] + (":" + (string_of_pos(r[/* left */0]) + (
Caml_obj.caml_equal(r[/* right */1], r[/* left */0]) ? "" : "-" + string_of_pos(r[/* right */1])
)));
}
exports.no_pos = no_pos;
exports.no_region = no_region;
exports.string_of_pos = string_of_pos;
exports.string_of_region = string_of_region;
exports.$at$at = $at$at;
/* No side effect */
//////// end of source.js ////////
    return exports;
  };
_registry['string'] = function() {
    let exports = {};
//////// start of string.js ////////
'use strict';
var List = require("./list");
var Bytes = require("./bytes");
var Caml_int32 = require("./caml_int32");
var Caml_string = require("./caml_string");
function make(n, c) {
return Caml_string.bytes_to_string(Bytes.make(n, c));
}
function init(n, f) {
return Caml_string.bytes_to_string(Bytes.init(n, f));
}
function copy(s) {
return Caml_string.bytes_to_string(Bytes.copy(Caml_string.bytes_of_string(s)));
}
function sub(s, ofs, len) {
return Caml_string.bytes_to_string(Bytes.sub(Caml_string.bytes_of_string(s), ofs, len));
}
function concat(sep, l) {
if (l) {
var hd = l[0];
var num = [0];
var len = [0];
List.iter(function (s) {
num[0] = num[0] + 1 | 0;
len[0] = len[0] + s.length | 0;
return /* () */0;
}, l);
var r = Caml_string.caml_create_string(len[0] + Caml_int32.imul(sep.length, num[0] - 1 | 0) | 0);
Caml_string.caml_blit_string(hd, 0, r, 0, hd.length);
var pos = [hd.length];
List.iter(function (s) {
Caml_string.caml_blit_string(sep, 0, r, pos[0], sep.length);
pos[0] = pos[0] + sep.length | 0;
Caml_string.caml_blit_string(s, 0, r, pos[0], s.length);
pos[0] = pos[0] + s.length | 0;
return /* () */0;
}, l[1]);
return Caml_string.bytes_to_string(r);
}
else {
return "";
}
}
function iter(f, s) {
return Bytes.iter(f, Caml_string.bytes_of_string(s));
}
function iteri(f, s) {
return Bytes.iteri(f, Caml_string.bytes_of_string(s));
}
function map(f, s) {
return Caml_string.bytes_to_string(Bytes.map(f, Caml_string.bytes_of_string(s)));
}
function mapi(f, s) {
return Caml_string.bytes_to_string(Bytes.mapi(f, Caml_string.bytes_of_string(s)));
}
function is_space(param) {
var switcher = param - 9 | 0;
if (switcher > 4 || switcher < 0) {
if (switcher !== 23) {
return /* false */0;
}
else {
return /* true */1;
}
}
else if (switcher !== 2) {
return /* true */1;
}
else {
return /* false */0;
}
}
function trim(s) {
if (s === "" || !(is_space(s.charCodeAt(0)) || is_space(s.charCodeAt(s.length - 1 | 0)))) {
return s;
}
else {
return Caml_string.bytes_to_string(Bytes.trim(Caml_string.bytes_of_string(s)));
}
}
function escaped(s) {
var needs_escape = function (_i) {
while(true) {
var i = _i;
if (i >= s.length) {
return /* false */0;
}
else {
var match = s.charCodeAt(i);
if (match >= 32) {
var switcher = match - 34 | 0;
if (switcher > 58 || switcher < 0) {
if (switcher >= 93) {
return /* true */1;
}
else {
_i = i + 1 | 0;
continue ;
}
}
else if (switcher > 57 || switcher < 1) {
return /* true */1;
}
else {
_i = i + 1 | 0;
continue ;
}
}
else {
return /* true */1;
}
}
};
};
if (needs_escape(0)) {
return Caml_string.bytes_to_string(Bytes.escaped(Caml_string.bytes_of_string(s)));
}
else {
return s;
}
}
function index(s, c) {
return Bytes.index(Caml_string.bytes_of_string(s), c);
}
function rindex(s, c) {
return Bytes.rindex(Caml_string.bytes_of_string(s), c);
}
function index_from(s, i, c) {
return Bytes.index_from(Caml_string.bytes_of_string(s), i, c);
}
function rindex_from(s, i, c) {
return Bytes.rindex_from(Caml_string.bytes_of_string(s), i, c);
}
function contains(s, c) {
return Bytes.contains(Caml_string.bytes_of_string(s), c);
}
function contains_from(s, i, c) {
return Bytes.contains_from(Caml_string.bytes_of_string(s), i, c);
}
function rcontains_from(s, i, c) {
return Bytes.rcontains_from(Caml_string.bytes_of_string(s), i, c);
}
function uppercase(s) {
return Caml_string.bytes_to_string(Bytes.uppercase(Caml_string.bytes_of_string(s)));
}
function lowercase(s) {
return Caml_string.bytes_to_string(Bytes.lowercase(Caml_string.bytes_of_string(s)));
}
function capitalize(s) {
return Caml_string.bytes_to_string(Bytes.capitalize(Caml_string.bytes_of_string(s)));
}
function uncapitalize(s) {
return Caml_string.bytes_to_string(Bytes.uncapitalize(Caml_string.bytes_of_string(s)));
}
var compare = Caml_string.caml_string_compare;
var fill = Bytes.fill;
var blit = Bytes.blit_string;
exports.make = make;
exports.init = init;
exports.copy = copy;
exports.sub = sub;
exports.fill = fill;
exports.blit = blit;
exports.concat = concat;
exports.iter = iter;
exports.iteri = iteri;
exports.map = map;
exports.mapi = mapi;
exports.trim = trim;
exports.escaped = escaped;
exports.index = index;
exports.rindex = rindex;
exports.index_from = index_from;
exports.rindex_from = rindex_from;
exports.contains = contains;
exports.contains_from = contains_from;
exports.rcontains_from = rcontains_from;
exports.uppercase = uppercase;
exports.lowercase = lowercase;
exports.capitalize = capitalize;
exports.uncapitalize = uncapitalize;
exports.compare = compare;
/* No side effect */
//////// end of string.js ////////
    return exports;
  };
_registry['sys'] = function() {
    let exports = {};
//////// start of sys.js ////////
'use strict';
var Caml_exceptions = require("./caml_exceptions");
var is_js = /* true */1;
var match_001 = /* array */[];
var big_endian = /* false */0;
var unix = /* true */1;
var win32 = /* false */0;
var cygwin = /* false */0;
var max_array_length = 2147483647;
var max_string_length = 2147483647;
var interactive = [/* false */0];
function set_signal(_, _$1) {
return /* () */0;
}
var Break = Caml_exceptions.create("Sys.Break");
function catch_break() {
return /* () */0;
}
var argv = match_001;
var executable_name = "cmd";
var os_type = "Unix";
var word_size = 32;
var sigabrt = -1;
var sigalrm = -2;
var sigfpe = -3;
var sighup = -4;
var sigill = -5;
var sigint = -6;
var sigkill = -7;
var sigpipe = -8;
var sigquit = -9;
var sigsegv = -10;
var sigterm = -11;
var sigusr1 = -12;
var sigusr2 = -13;
var sigchld = -14;
var sigcont = -15;
var sigstop = -16;
var sigtstp = -17;
var sigttin = -18;
var sigttou = -19;
var sigvtalrm = -20;
var sigprof = -21;
var ocaml_version = "4.02.3+dev1-2015-07-10";
exports.argv = argv;
exports.executable_name = executable_name;
exports.interactive = interactive;
exports.os_type = os_type;
exports.unix = unix;
exports.win32 = win32;
exports.cygwin = cygwin;
exports.word_size = word_size;
exports.big_endian = big_endian;
exports.is_js = is_js;
exports.max_string_length = max_string_length;
exports.max_array_length = max_array_length;
exports.set_signal = set_signal;
exports.sigabrt = sigabrt;
exports.sigalrm = sigalrm;
exports.sigfpe = sigfpe;
exports.sighup = sighup;
exports.sigill = sigill;
exports.sigint = sigint;
exports.sigkill = sigkill;
exports.sigpipe = sigpipe;
exports.sigquit = sigquit;
exports.sigsegv = sigsegv;
exports.sigterm = sigterm;
exports.sigusr1 = sigusr1;
exports.sigusr2 = sigusr2;
exports.sigchld = sigchld;
exports.sigcont = sigcont;
exports.sigstop = sigstop;
exports.sigtstp = sigtstp;
exports.sigttin = sigttin;
exports.sigttou = sigttou;
exports.sigvtalrm = sigvtalrm;
exports.sigprof = sigprof;
exports.Break = Break;
exports.catch_break = catch_break;
exports.ocaml_version = ocaml_version;
/* No side effect */
//////// end of sys.js ////////
    return exports;
  };
_registry['types'] = function() {
    let exports = {};
//////// start of types.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var I32 = require("./i32");
var List = require("bs-platform/lib/js/list");
var Curry = require("bs-platform/lib/js/curry");
var $$String = require("bs-platform/lib/js/string");
function size(param) {
if (param !== 1 && param < 3) {
return 4;
}
else {
return 8;
}
}
function string_of_value_type(param) {
switch (param) {
case 0 :
return "i32";
case 1 :
return "i64";
case 2 :
return "f32";
case 3 :
return "f64";
}
}
function string_of_value_types(ts) {
var exit = 0;
if (ts) {
if (ts[1]) {
exit = 1;
}
else {
return string_of_value_type(ts[0]);
}
}
else {
exit = 1;
}
if (exit === 1) {
return "[" + ($$String.concat(" ", List.map(string_of_value_type, ts)) + "]");
}
}
function string_of_elem_type() {
return "anyfunc";
}
function string_of_limits(param) {
var max = param[/* max */1];
return Curry._1(I32.to_string_u, param[/* min */0]) + (
max ? " " + Curry._1(I32.to_string_u, max[0]) : ""
);
}
function string_of_memory_type(param) {
return string_of_limits(param[0]);
}
function string_of_table_type(param) {
return string_of_limits(param[0]) + " anyfunc";
}
function string_of_global_type(param) {
var t = param[0];
if (param[1] !== 0) {
return "(mut " + (string_of_value_type(t) + ")");
}
else {
return string_of_value_type(t);
}
}
function string_of_stack_type(ts) {
return "[" + ($$String.concat(" ", List.map(string_of_value_type, ts)) + "]");
}
function string_of_func_type(param) {
return string_of_stack_type(param[0]) + (" -> " + string_of_stack_type(param[1]));
}
exports.size = size;
exports.string_of_value_type = string_of_value_type;
exports.string_of_value_types = string_of_value_types;
exports.string_of_elem_type = string_of_elem_type;
exports.string_of_limits = string_of_limits;
exports.string_of_memory_type = string_of_memory_type;
exports.string_of_table_type = string_of_table_type;
exports.string_of_global_type = string_of_global_type;
exports.string_of_stack_type = string_of_stack_type;
exports.string_of_func_type = string_of_func_type;
/* I32 Not a pure module */
//////// end of types.js ////////
    return exports;
  };
_registry['values'] = function() {
    let exports = {};
//////// start of values.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var F32 = require("./f32");
var F64 = require("./f64");
var I32 = require("./i32");
var I64 = require("./i64");
var List = require("bs-platform/lib/js/list");
var Block = require("bs-platform/lib/js/block");
var Curry = require("bs-platform/lib/js/curry");
var $$String = require("bs-platform/lib/js/string");
var Caml_exceptions = require("bs-platform/lib/js/caml_exceptions");
function type_of(param) {
switch (param.tag | 0) {
case 0 :
return /* I32Type */0;
case 1 :
return /* I64Type */1;
case 2 :
return /* F32Type */2;
case 3 :
return /* F64Type */3;
}
}
function default_value(param) {
switch (param) {
case 0 :
return /* I32 */Block.__(0, [I32.zero]);
case 1 :
return /* I64 */Block.__(1, [I64.zero]);
case 2 :
return /* F32 */Block.__(2, [F32.zero]);
case 3 :
return /* F64 */Block.__(3, [F64.zero]);
}
}
function value_of_bool(b) {
return /* I32 */Block.__(0, [b ? 1 : 0]);
}
function string_of_value(param) {
switch (param.tag | 0) {
case 0 :
return Curry._1(I32.to_string_s, param[0]);
case 1 :
return Curry._1(I64.to_string_s, param[0]);
case 2 :
return Curry._1(F32.to_string, param[0]);
case 3 :
return Curry._1(F64.to_string, param[0]);
}
}
function string_of_values(vs) {
var exit = 0;
if (vs) {
if (vs[1]) {
exit = 1;
}
else {
return string_of_value(vs[0]);
}
}
else {
exit = 1;
}
if (exit === 1) {
return "[" + ($$String.concat(" ", List.map(string_of_value, vs)) + "]");
}
}
var Value = Caml_exceptions.create("Values.Value");
function to_value(i) {
return /* I32 */Block.__(0, [i]);
}
function of_value(param) {
if (param.tag) {
throw [
Value,
/* I32Type */0
];
}
else {
return param[0];
}
}
var I32Value = /* module */[
/* to_value */to_value,
/* of_value */of_value
];
function to_value$1(i) {
return /* I64 */Block.__(1, [i]);
}
function of_value$1(param) {
if (param.tag === 1) {
return param[0];
}
else {
throw [
Value,
/* I64Type */1
];
}
}
var I64Value = /* module */[
/* to_value */to_value$1,
/* of_value */of_value$1
];
function to_value$2(i) {
return /* F32 */Block.__(2, [i]);
}
function of_value$2(param) {
if (param.tag === 2) {
return param[0];
}
else {
throw [
Value,
/* F32Type */2
];
}
}
var F32Value = /* module */[
/* to_value */to_value$2,
/* of_value */of_value$2
];
function to_value$3(i) {
return /* F64 */Block.__(3, [i]);
}
function of_value$3(param) {
if (param.tag === 3) {
return param[0];
}
else {
throw [
Value,
/* F64Type */3
];
}
}
var F64Value = /* module */[
/* to_value */to_value$3,
/* of_value */of_value$3
];
exports.type_of = type_of;
exports.default_value = default_value;
exports.value_of_bool = value_of_bool;
exports.string_of_value = string_of_value;
exports.string_of_values = string_of_values;
exports.Value = Value;
exports.I32Value = I32Value;
exports.I64Value = I64Value;
exports.F32Value = F32Value;
exports.F64Value = F64Value;
/* F32 Not a pure module */
//////// end of values.js ////////
    return exports;
  };
_registry['wasm'] = function() {
    let exports = {};
//////// start of wasm.js ////////
// Generated by BUCKLESCRIPT VERSION 1.4.3 , PLEASE EDIT WITH CARE
'use strict';
var Parse = require("./parse");
var Sexpr = require("./sexpr");
var Decode = require("./decode");
var Encode = require("./encode");
var Arrange = require("./arrange");
var Caml_int64 = require("bs-platform/lib/js/caml_int64");
var Pervasives = require("bs-platform/lib/js/pervasives");
function encode(s) {
var def = Parse.string_to_module(s);
var match = def[/* it */1];
if (match.tag) {
return match[1];
}
else {
return Encode.encode(match[0]);
}
}
function decode(s, width) {
var m = Decode.decode("(decode)", s);
return Sexpr.to_string(width, Arrange.module_(m));
}
function f(x) {
Pervasives.print_string("f");
return x;
}
function g(x) {
return Caml_int64.or_(x, (Pervasives.print_string("f"), x));
}
exports.encode = encode;
exports.decode = decode;
exports.f = f;
exports.g = g;
/* Parse Not a pure module */
//////// end of wasm.js ////////
    return exports;
  };
function binary(bytes) {
let buffer = new ArrayBuffer(bytes.length);
let view = new Uint8Array(buffer);
for (let i = 0; i < bytes.length; ++i) {
view[i] = bytes.charCodeAt(i);
}
return buffer;
}
function bytes(buffer) {
let string = '';
let view = new Uint8Array(buffer);
for (let i = 0; i < view.length; ++i) {
string += String.fromCodePoint(view[i]);
}
return string;
}
  let Wasm = require('wasm');
return {
encode(s) { return binary(Wasm.encode(s)) },
decode(b, w = 80) { return Wasm.decode(bytes(b), w) }
};
})();