Files
rose-ash/shared/static/wasm/sx_browser.bc.wasm.assets/js_of_ocaml-651f6707.wasm.map
giles c72a5af04d WIP: pre-existing changes from WASM browser work + test infrastructure
Accumulated changes from WASM browser development sessions:
- sx_runtime.ml: signal subscription + notify, env unwrap tolerance
- sx_browser.bc.js: rebuilt js_of_ocaml browser kernel
- sx_browser.bc.wasm.js + assets: WASM browser kernel build
- sx-platform.js browser tests (test_js, test_platform, test_wasm)
- Playwright sx-inspect.js: interactive page inspector tool
- harness-web.sx: DOM assertion updates
- deploy.sh, Dockerfile, dune-project: build config updates
- test-stepper.sx: stepper unit tests
- reader-macro-demo plan update

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 16:40:38 +00:00

2 lines
368 KiB
Plaintext

{"version":3,"sections":[{"offset":{"line":0,"column":63542},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/import.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml\n * http://www.ocsigen.org/js_of_ocaml/\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nmodule Poly = struct\n external ( < ) : 'a -> 'a -> bool = \"%lessthan\"\n\n external ( <= ) : 'a -> 'a -> bool = \"%lessequal\"\n\n external ( <> ) : 'a -> 'a -> bool = \"%notequal\"\n\n external ( = ) : 'a -> 'a -> bool = \"%equal\"\n\n external ( > ) : 'a -> 'a -> bool = \"%greaterthan\"\n\n external ( >= ) : 'a -> 'a -> bool = \"%greaterequal\"\n\n external compare : 'a -> 'a -> int = \"%compare\"\n\n external equal : 'a -> 'a -> bool = \"%equal\"\nend\n\nmodule Int_replace_polymorphic_compare = struct\n external ( < ) : int -> int -> bool = \"%lessthan\"\n\n external ( <= ) : int -> int -> bool = \"%lessequal\"\n\n external ( <> ) : int -> int -> bool = \"%notequal\"\n\n external ( = ) : int -> int -> bool = \"%equal\"\n\n external ( > ) : int -> int -> bool = \"%greaterthan\"\n\n external ( >= ) : int -> int -> bool = \"%greaterequal\"\n\n external compare : int -> int -> int = \"%compare\"\n\n external equal : int -> int -> bool = \"%equal\"\n\n let max (x : int) y = if x >= y then x else y\n\n let min (x : int) y = if x <= y then x else y\nend\n\nmodule String = struct\n include String\n\n let equal (x : string) (y : string) = Poly.equal x y\nend\n\nmodule Char = struct\n include Char\n\n let equal (x : char) (y : char) = Poly.equal x y\nend\n\ninclude Int_replace_polymorphic_compare\n","(* generated code *)"],"names":[],"mappings":"EAmEoC,sCAAc,C,EANV,MAAc,C,KANf,OAAO,OAAtB,aAAuB,C,KAFR,OAAO,OAAtB,aAAuB,C,MCrD/C,0iB,EAAA,c,QAAA","ignoreList":[1]}},{"offset":{"line":0,"column":64272},"map":{"version":3,"sources":["/builtin/blackbox.ml","/root/.opam/5.2.0/lib/js_of_ocaml/js.ml"],"sourcesContent":["(* generated code *)","(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Jérôme Vouillon\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\n\n(* This local module [Js] is needed so that the ppx_js extension work within that file. *)\nmodule Js = struct\n type +'a t\n\n type (-'a, +'b) meth_callback\n\n module Unsafe = struct\n type top\n\n type any = top t\n\n type any_js_array = any\n\n external inject : 'a -> any = \"%identity\"\n\n external coerce : _ t -> _ t = \"%identity\"\n\n external get : 'a -> 'b -> 'c = \"caml_js_get\"\n\n external set : 'a -> 'b -> 'c -> unit = \"caml_js_set\"\n\n external delete : 'a -> 'b -> unit = \"caml_js_delete\"\n\n external call : 'a -> 'b -> any array -> 'c = \"caml_js_call\"\n\n external fun_call : 'a -> any array -> 'b = \"caml_js_fun_call\"\n\n external meth_call : 'a -> string -> any array -> 'b = \"caml_js_meth_call\"\n\n external new_obj : 'a -> any array -> 'b = \"caml_js_new\"\n\n external new_obj_arr : 'a -> any_js_array -> 'b = \"caml_ojs_new_arr\"\n\n external obj : (string * any) array -> 'a = \"caml_js_object\"\n\n external equals : 'a -> 'b -> bool = \"caml_js_equals\"\n\n external strict_equals : 'a -> 'b -> bool = \"caml_js_strict_equals\"\n\n external pure_expr : (unit -> 'a) -> 'a = \"caml_js_pure_expr\"\n\n external eval_string : string -> 'a = \"caml_js_eval_string\"\n\n external js_expr : string -> 'a = \"caml_js_expr\"\n\n external pure_js_expr : string -> 'a = \"caml_pure_js_expr\"\n\n let global = pure_js_expr \"globalThis\"\n\n external callback : ('a -> 'b) -> ('c, 'a -> 'b) meth_callback\n = \"caml_js_wrap_callback_unsafe\"\n\n external callback_with_arguments :\n (any_js_array -> 'b) -> ('c, any_js_array -> 'b) meth_callback\n = \"caml_js_wrap_callback_arguments\"\n\n external callback_with_arity : int -> ('a -> 'b) -> ('c, 'a -> 'b) meth_callback\n = \"caml_js_wrap_callback_strict\"\n\n external meth_callback : ('b -> 'a) -> ('b, 'a) meth_callback\n = \"caml_js_wrap_meth_callback_unsafe\"\n\n external meth_callback_with_arity : int -> ('b -> 'a) -> ('b, 'a) meth_callback\n = \"caml_js_wrap_meth_callback_strict\"\n\n external meth_callback_with_arguments :\n ('b -> any_js_array -> 'a) -> ('b, any_js_array -> 'a) meth_callback\n = \"caml_js_wrap_meth_callback_arguments\"\n\n external runtime_value : string -> 'a = \"caml_jsoo_runtime_value\"\n\n (* DEPRECATED *)\n external variable : string -> 'a = \"caml_js_var\"\n end\n\n (****)\n\n type 'a opt = 'a\n\n type 'a optdef = 'a\n\n external debugger : unit -> unit = \"debugger\"\n\n let null : 'a opt = Unsafe.pure_js_expr \"null\"\n\n external some : 'a -> 'a opt = \"%identity\"\n\n let undefined : 'a optdef = Unsafe.pure_js_expr \"undefined\"\n\n external def : 'a -> 'a optdef = \"%identity\"\n\n module type OPT = sig\n type 'a t\n\n val empty : 'a t\n\n val return : 'a -> 'a t\n\n val map : 'a t -> ('a -> 'b) -> 'b t\n\n val bind : 'a t -> ('a -> 'b t) -> 'b t\n\n val test : 'a t -> bool\n\n val iter : 'a t -> ('a -> unit) -> unit\n\n val case : 'a t -> (unit -> 'b) -> ('a -> 'b) -> 'b\n\n val get : 'a t -> (unit -> 'a) -> 'a\n\n val option : 'a option -> 'a t\n\n val to_option : 'a t -> 'a option\n\n external equals : _ t -> _ t -> bool = \"caml_js_equals\"\n\n external strict_equals : _ t -> _ t -> bool = \"caml_js_strict_equals\"\n end\n\n module Opt : OPT with type 'a t = 'a opt = struct\n type 'a t = 'a opt\n\n let empty = null\n\n let return = some\n\n external equals : _ t -> _ t -> bool = \"caml_js_equals\"\n\n external strict_equals : _ t -> _ t -> bool = \"caml_js_strict_equals\"\n\n let map x f = if equals x null then null else return (f x)\n\n let bind x f = if equals x null then null else f x\n\n let test x = not (equals x null)\n\n let iter x f = if not (equals x null) then f x\n\n let case x f g = if equals x null then f () else g x\n\n let get x f = if equals x null then f () else x\n\n let option x =\n match x with\n | None -> empty\n | Some x -> return x\n\n let to_option x = case x (fun () -> None) (fun x -> Some x)\n end\n\n module Optdef : OPT with type 'a t = 'a optdef = struct\n type 'a t = 'a optdef\n\n let empty = undefined\n\n let return = def\n\n external equals : _ t -> _ t -> bool = \"caml_js_equals\"\n\n external strict_equals : _ t -> _ t -> bool = \"caml_js_strict_equals\"\n\n let map x f = if strict_equals x undefined then undefined else return (f x)\n\n let bind x f = if strict_equals x undefined then undefined else f x\n\n let test x = not (strict_equals x undefined)\n\n let iter x f = if not (strict_equals x undefined) then f x\n\n let case x f g = if strict_equals x undefined then f () else g x\n\n let get x f = if strict_equals x undefined then f () else x\n\n let option x =\n match x with\n | None -> empty\n | Some x -> return x\n\n let to_option x = case x (fun () -> None) (fun x -> Some x)\n end\n\n (****)\n\n let coerce x f g = Opt.get (f x) (fun () -> g x)\n\n let coerce_opt x f g = Opt.get (Opt.bind x f) (fun () -> g x)\n\n (****)\n\n type +'a meth\n\n type +'a gen_prop\n\n type 'a readonly_prop = < get : 'a > gen_prop\n\n type 'a writeonly_prop = < set : 'a -> unit > gen_prop\n\n type 'a prop = < get : 'a ; set : 'a -> unit > gen_prop\n\n type 'a optdef_prop = < get : 'a optdef ; set : 'a -> unit > gen_prop\n\n type +'a constr\n\n (****)\n\n type 'a callback = (unit, 'a) meth_callback\n\n external wrap_callback : ('a -> 'b) -> ('c, 'a -> 'b) meth_callback\n = \"caml_js_wrap_callback\"\n\n external wrap_meth_callback : ('a -> 'b) -> ('a, 'b) meth_callback\n = \"caml_js_wrap_meth_callback\"\n\n (****)\n\n external equals : _ t -> _ t -> bool = \"caml_js_equals\"\n\n external strict_equals : _ t -> _ t -> bool = \"caml_js_strict_equals\"\n\n (****)\n\n let _true = Unsafe.pure_js_expr \"true\"\n\n let _false = Unsafe.pure_js_expr \"false\"\n\n type match_result_handle\n\n type string_array\n\n class type number = object\n method toString : js_string t meth\n\n method toString_radix : int -> js_string t meth\n\n method toLocaleString : js_string t meth\n\n method toFixed : int -> js_string t meth\n\n method toExponential : js_string t meth\n\n method toExponential_digits : int -> js_string t meth\n\n method toPrecision : int -> js_string t meth\n end\n\n and js_string = object\n method toString : js_string t meth\n\n method valueOf : js_string t meth\n\n method charAt : int -> js_string t meth\n\n method charCodeAt : int -> number t meth\n\n method codePointAt : int -> number t optdef meth\n\n (* This may return NaN... *)\n method concat : js_string t -> js_string t meth\n\n method concat_2 : js_string t -> js_string t -> js_string t meth\n\n method concat_3 : js_string t -> js_string t -> js_string t -> js_string t meth\n\n method concat_4 :\n js_string t -> js_string t -> js_string t -> js_string t -> js_string t meth\n\n method indexOf : js_string t -> int meth\n\n method indexOf_from : js_string t -> int -> int meth\n\n method lastIndexOf : js_string t -> int meth\n\n method lastIndexOf_from : js_string t -> int -> int meth\n\n method localeCompare : js_string t -> number t meth\n\n method _match : regExp t -> match_result_handle t opt meth\n\n method normalize : js_string t meth\n\n method normalize_form : normalization t -> js_string t meth\n\n method replace : regExp t -> js_string t -> js_string t meth\n\n method replace_string : js_string t -> js_string t -> js_string t meth\n\n method search : regExp t -> int meth\n\n method slice : int -> int -> js_string t meth\n\n method slice_end : int -> js_string t meth\n\n method split : js_string t -> string_array t meth\n\n method split_limited : js_string t -> int -> string_array t meth\n\n method split_regExp : regExp t -> string_array t meth\n\n method split_regExpLimited : regExp t -> int -> string_array t meth\n\n method substring : int -> int -> js_string t meth\n\n method substring_toEnd : int -> js_string t meth\n\n method toLowerCase : js_string t meth\n\n method toLocaleLowerCase : js_string t meth\n\n method toUpperCase : js_string t meth\n\n method toLocaleUpperCase : js_string t meth\n\n method trim : js_string t meth\n\n method length : int readonly_prop\n end\n\n and regExp = object\n method exec : js_string t -> match_result_handle t opt meth\n\n method test : js_string t -> bool t meth\n\n method toString : js_string t meth\n\n method source : js_string t readonly_prop\n\n method global : bool t readonly_prop\n\n method ignoreCase : bool t readonly_prop\n\n method multiline : bool t readonly_prop\n\n method lastIndex : int prop\n end\n\n and normalization = js_string\n\n type number_t = number t\n\n (* string is used by ppx_js, it needs to come before any use of the\n new syntax in this file *)\n external string : string -> js_string t = \"caml_jsstring_of_string\"\n\n external to_string : js_string t -> string = \"caml_string_of_jsstring\"\n\n let nfc = string \"NFC\"\n\n let nfd = string \"NFD\"\n\n let nfkc = string \"NFKC\"\n\n let nfkd = string \"NFKD\"\nend\n\ninclude Js\n\nclass type string_constr = object\n method fromCharCode : int -> js_string t meth\nend\n\nlet string_constr = Unsafe.global##._String\n\nlet regExp = Unsafe.global##._RegExp\n\nlet regExp_copy = regExp\n\nlet regExp_withFlags = regExp\n\nclass type ['a] js_array = object\n method toString : js_string t meth\n\n method toLocaleString : js_string t meth\n\n method concat : 'a js_array t -> 'a js_array t meth\n\n method join : js_string t -> js_string t meth\n\n method pop : 'a optdef meth\n\n method push : 'a -> int meth\n\n method push_2 : 'a -> 'a -> int meth\n\n method push_3 : 'a -> 'a -> 'a -> int meth\n\n method push_4 : 'a -> 'a -> 'a -> 'a -> int meth\n\n method reverse : 'a js_array t meth\n\n method shift : 'a optdef meth\n\n method slice : int -> int -> 'a js_array t meth\n\n method slice_end : int -> 'a js_array t meth\n\n method sort : ('a -> 'a -> number_t) callback -> 'a js_array t meth\n\n method sort_asStrings : 'a js_array t meth\n\n method splice : int -> int -> 'a js_array t meth\n\n method splice_1 : int -> int -> 'a -> 'a js_array t meth\n\n method splice_2 : int -> int -> 'a -> 'a -> 'a js_array t meth\n\n method splice_3 : int -> int -> 'a -> 'a -> 'a -> 'a js_array t meth\n\n method splice_4 : int -> int -> 'a -> 'a -> 'a -> 'a -> 'a js_array t meth\n\n method unshift : 'a -> int meth\n\n method unshift_2 : 'a -> 'a -> int meth\n\n method unshift_3 : 'a -> 'a -> 'a -> int meth\n\n method unshift_4 : 'a -> 'a -> 'a -> 'a -> int meth\n\n method some : ('a -> int -> 'a js_array t -> bool t) callback -> bool t meth\n\n method every : ('a -> int -> 'a js_array t -> bool t) callback -> bool t meth\n\n method forEach : ('a -> int -> 'a js_array t -> unit) callback -> unit meth\n\n method map : ('a -> int -> 'a js_array t -> 'b) callback -> 'b js_array t meth\n\n method filter : ('a -> int -> 'a js_array t -> bool t) callback -> 'a js_array t meth\n\n method reduce_init : ('b -> 'a -> int -> 'a js_array t -> 'b) callback -> 'b -> 'b meth\n\n method reduce : ('a -> 'a -> int -> 'a js_array t -> 'a) callback -> 'a meth\n\n method reduceRight_init :\n ('b -> 'a -> int -> 'a js_array t -> 'b) callback -> 'b -> 'b meth\n\n method reduceRight : ('a -> 'a -> int -> 'a js_array t -> 'a) callback -> 'a meth\n\n method length : int prop\nend\n\nlet object_constructor = Unsafe.global##._Object\n\nlet object_keys o : js_string t js_array t = object_constructor##keys o\n\nlet array_constructor = Unsafe.global##._Array\n\nlet array_empty = array_constructor\n\nlet array_length = array_constructor\n\nlet array_get : 'a #js_array t -> int -> 'a optdef = Unsafe.get\n\nlet array_set : 'a #js_array t -> int -> 'a -> unit = Unsafe.set\n\nlet array_map_poly :\n 'a #js_array t -> ('a -> int -> 'a #js_array t -> 'b) callback -> 'b #js_array t =\n fun a cb -> (Unsafe.coerce a)##map cb\n\nlet array_map f a = array_map_poly a (wrap_callback (fun x _idx _ -> f x))\n\nlet array_mapi f a = array_map_poly a (wrap_callback (fun x idx _ -> f idx x))\n\nclass type match_result = object\n inherit [js_string t] js_array\n\n method index : int readonly_prop\n\n method input : js_string t readonly_prop\nend\n\nlet str_array : string_array t -> js_string t js_array t = Unsafe.coerce\n\nlet match_result : match_result_handle t -> match_result t = Unsafe.coerce\n\nclass type date = object\n method toString : js_string t meth\n\n method toDateString : js_string t meth\n\n method toTimeString : js_string t meth\n\n method toLocaleString : js_string t meth\n\n method toLocaleDateString : js_string t meth\n\n method toLocaleTimeString : js_string t meth\n\n method valueOf : number_t meth\n\n method getTime : number_t meth\n\n method getFullYear : int meth\n\n method getUTCFullYear : int meth\n\n method getMonth : int meth\n\n method getUTCMonth : int meth\n\n method getDate : int meth\n\n method getUTCDate : int meth\n\n method getDay : int meth\n\n method getUTCDay : int meth\n\n method getHours : int meth\n\n method getUTCHours : int meth\n\n method getMinutes : int meth\n\n method getUTCMinutes : int meth\n\n method getSeconds : int meth\n\n method getUTCSeconds : int meth\n\n method getMilliseconds : int meth\n\n method getUTCMilliseconds : int meth\n\n method getTimezoneOffset : int meth\n\n method setTime : number_t -> number_t meth\n\n method setFullYear : int -> number_t meth\n\n method setUTCFullYear : int -> number_t meth\n\n method setMonth : int -> number_t meth\n\n method setUTCMonth : int -> number_t meth\n\n method setDate : int -> number_t meth\n\n method setUTCDate : int -> number_t meth\n\n method setHours : int -> number_t meth\n\n method setUTCHours : int -> number_t meth\n\n method setMinutes : int -> number_t meth\n\n method setUTCMinutes : int -> number_t meth\n\n method setSeconds : int -> number_t meth\n\n method setUTCSeconds : int -> number_t meth\n\n method setMilliseconds : int -> number_t meth\n\n method setUTCMilliseconds : int -> number_t meth\n\n method toUTCString : js_string t meth\n\n method toISOString : js_string t meth\n\n method toJSON : 'a -> js_string t meth\nend\n\nclass type date_constr = object\n method parse : js_string t -> number_t meth\n\n method _UTC_month : int -> int -> number_t meth\n\n method _UTC_day : int -> int -> number_t meth\n\n method _UTC_hour : int -> int -> int -> int -> number_t meth\n\n method _UTC_min : int -> int -> int -> int -> int -> number_t meth\n\n method _UTC_sec : int -> int -> int -> int -> int -> int -> number_t meth\n\n method _UTC_ms : int -> int -> int -> int -> int -> int -> int -> number_t meth\n\n method now : number_t meth\nend\n\nlet date_constr = Unsafe.global##._Date\n\nlet date : date_constr t = date_constr\n\nlet date_now : date t constr = date_constr\n\nlet date_fromTimeValue : (number_t -> date t) constr = date_constr\n\nlet date_month : (int -> int -> date t) constr = date_constr\n\nlet date_day : (int -> int -> int -> date t) constr = date_constr\n\nlet date_hour : (int -> int -> int -> int -> date t) constr = date_constr\n\nlet date_min : (int -> int -> int -> int -> int -> date t) constr = date_constr\n\nlet date_sec : (int -> int -> int -> int -> int -> int -> date t) constr = date_constr\n\nlet date_ms : (int -> int -> int -> int -> int -> int -> int -> date t) constr =\n date_constr\n\nclass type math = object\n method _E : number_t readonly_prop\n\n method _LN2 : number_t readonly_prop\n\n method _LN10 : number_t readonly_prop\n\n method _LOG2E : number_t readonly_prop\n\n method _LOG10E : number_t readonly_prop\n\n method _PI : number_t readonly_prop\n\n method _SQRT1_2_ : number_t readonly_prop\n\n method _SQRT2 : number_t readonly_prop\n\n method abs : number_t -> number_t meth\n\n method acos : number_t -> number_t meth\n\n method asin : number_t -> number_t meth\n\n method atan : number_t -> number_t meth\n\n method atan2 : number_t -> number_t -> number_t meth\n\n method ceil : number_t -> number_t meth\n\n method cos : number_t -> number_t meth\n\n method exp : number_t -> number_t meth\n\n method floor : number_t -> number_t meth\n\n method log : number_t -> number_t meth\n\n method max : number_t -> number_t -> number_t meth\n\n method max_3 : number_t -> number_t -> number_t -> number_t meth\n\n method max_4 : number_t -> number_t -> number_t -> number_t -> number_t meth\n\n method min : number_t -> number_t -> number_t meth\n\n method min_3 : number_t -> number_t -> number_t -> number_t meth\n\n method min_4 : number_t -> number_t -> number_t -> number_t -> number_t meth\n\n method pow : number_t -> number_t -> number_t meth\n\n method random : number_t meth\n\n method round : number_t -> number_t meth\n\n method sin : number_t -> number_t meth\n\n method sqrt : number_t -> number_t meth\n\n method tan : number_t -> number_t meth\nend\n\nlet math = Unsafe.global##._Math\n\nclass type error = object\n method name : js_string t prop\n\n method message : js_string t prop\n\n method stack : js_string t optdef prop\n\n method toString : js_string t meth\nend\n\nlet error_constr = Unsafe.global##._Error\n\nmodule Js_error = struct\n type error_t = error t\n\n include Jsoo_runtime.Error\n\n external of_error : error_t -> t = \"%identity\"\n\n external to_error : t -> error_t = \"%identity\"\n\n let name e = to_string (to_error e)##.name\n\n let message e = to_string (to_error e)##.message\n\n let stack (e : t) : string option =\n Opt.to_option (Opt.map (to_error e)##.stack to_string)\n\n let to_string e = to_string (to_error e)##toString\nend\n\nmodule Magic = struct\n module type T = sig\n exception Error of error t\n end\n\n type ('a, 'b) eq = Eq : ('a, 'a) eq\n\n let (eq : (error t, Js_error.t) eq) = Obj.magic Eq\n\n let m =\n match eq with\n | Eq ->\n (module struct\n exception Error = Js_error.Exn\n end : T)\n\n module Error = (val m : T)\nend\n\ninclude Magic.Error\n\nlet raise_js_error e = Js_error.raise_ (Js_error.of_error e)\n\nlet string_of_error e = Js_error.to_string (Js_error.of_error e)\n\nlet exn_with_js_backtrace = Js_error.attach_js_backtrace\n\nexternal js_error_of_exn : exn -> error t opt = \"caml_js_error_of_exception\"\n\nclass type json = object\n method parse : js_string t -> 'a meth\n\n method stringify : 'a -> js_string t meth\nend\n\nlet _JSON : json t = Unsafe.global##._JSON\n\nlet decodeURI (s : js_string t) : js_string t =\n Unsafe.fun_call Unsafe.global##.decodeURI [| Unsafe.inject s |]\n\nlet decodeURIComponent (s : js_string t) : js_string t =\n Unsafe.fun_call Unsafe.global##.decodeURIComponent [| Unsafe.inject s |]\n\nlet encodeURI (s : js_string t) : js_string t =\n Unsafe.fun_call Unsafe.global##.encodeURI [| Unsafe.inject s |]\n\nlet encodeURIComponent (s : js_string t) : js_string t =\n Unsafe.fun_call Unsafe.global##.encodeURIComponent [| Unsafe.inject s |]\n\nlet escape (s : js_string t) : js_string t =\n Unsafe.fun_call Unsafe.global##.escape [| Unsafe.inject s |]\n\nlet unescape (s : js_string t) : js_string t =\n Unsafe.fun_call Unsafe.global##.unescape [| Unsafe.inject s |]\n\nexternal bool : bool -> bool t = \"caml_js_from_bool\"\n\nexternal to_bool : bool t -> bool = \"caml_js_to_bool\"\n\nexternal array : 'a array -> 'a js_array t = \"caml_js_from_array\"\n\nexternal to_array : 'a js_array t -> 'a array = \"caml_js_to_array\"\n\nexternal bytestring : string -> js_string t = \"caml_jsbytes_of_string\"\n\nexternal to_bytestring : js_string t -> string = \"caml_string_of_jsbytes\"\n\nexternal float : float -> number_t = \"caml_js_from_float\"\n\nexternal to_float : number_t -> float = \"caml_js_to_float\"\n\nexternal number_of_float : float -> number t = \"caml_js_from_float\"\n\nexternal float_of_number : number t -> float = \"caml_js_to_float\"\n\nexternal int32 : int32 -> number_t = \"caml_js_from_int32\"\n\nexternal to_int32 : number_t -> int32 = \"caml_js_to_int32\"\n\nexternal nativeint : nativeint -> number_t = \"caml_js_from_nativeint\"\n\nexternal to_nativeint : number_t -> nativeint = \"caml_js_to_nativeint\"\n\nexternal typeof : _ t -> js_string t = \"caml_js_typeof\"\n\nexternal instanceof : _ t -> _ constr -> bool = \"caml_js_instanceof\"\n\nlet isNaN (i : 'a) : bool =\n to_bool (Unsafe.fun_call Unsafe.global##.isNaN [| Unsafe.inject i |])\n\nlet parseInt (s : js_string t) : int =\n let s = Unsafe.fun_call Unsafe.global##.parseInt [| Unsafe.inject s |] in\n if isNaN s then failwith \"parseInt\" else s\n\nlet parseFloat (s : js_string t) : number_t =\n let s = Unsafe.fun_call Unsafe.global##.parseFloat [| Unsafe.inject s |] in\n if isNaN s then failwith \"parseFloat\" else s\n\nlet _ =\n Printexc.register_printer (fun e ->\n if instanceof (Obj.magic e : < .. > t) error_constr\n then\n let e = Js_error.of_error (Obj.magic e : error t) in\n Some (Js_error.to_string e)\n else\n match e with\n | Js_error.Exn e -> Some (Js_error.to_string e)\n | _ -> None)\n\nlet export_js (field : js_string t) x =\n Unsafe.set\n (Unsafe.pure_js_expr \"jsoo_exports\")\n field\n (if\n String.equal (Js.to_string (typeof (Obj.magic x))) \"function\"\n (* function with arity/length equal to zero are already wrapped *)\n && Unsafe.get (Obj.magic x) (Js.string \"length\") > 0\n then Obj.magic (wrap_callback (Obj.magic x))\n else x)\n\nlet export field x = export_js (string field) x\n\nlet export_all obj =\n let keys = object_keys obj in\n keys##forEach\n (wrap_callback (fun (key : js_string t) _ _ -> export_js key (Unsafe.get obj key)))\n\n(****)\n\n(* DEPRECATED *)\n\ntype float_prop = number_t prop\n"],"names":[],"mappings":"cCy0BqF,EAApB,aAAoB,I,EA3XxC,qBA0X3C,WACE,IAAmF,a,EALxD,IAAc,KAAE,C,KANb,IAAd,EAAb,EAAkD,gBAAlD,aAA6D,K,CAAA,EAE1D,QAA6C,UACnC,IAA6B,IAN7C,IADF,MAQU,C,SAlBH,eAAgD,QAKjD,yDAC+C,IAD/C,UACyB,OAAsB,KACxC,MAJoB,IAAtB,SAAsB,KAIhB,C,KAZO,iBAAhB,YACL,SAAO,QAAiC,GAA3B,uBAA4B,C,KALpB,iBAAhB,YACL,SAAO,QAA+B,GAAzB,uBAA0B,C,EAJjB,eAAjB,UAAR,EAAqE,C,EAnCrD,eAAhB,UAA8D,C,EAH9C,eAAhB,UAA4D,C,EAH5C,eAAhB,UAAwE,C,EAHxD,eAAhB,UAA+D,C,EAH/C,eAAhB,UAAwE,C,EAHxD,eAAhB,UAA+D,C,EAfzC,SAAwC,C,EAFzC,wBAAqC,C,EAxB9B,QAAV,EAAgC,C,KAFzB,iBAhjBN,QAAa,QAAuB,KAAK,OAgjBJ,U,EAH9B,QAAV,EAAgC,C,EAFzB,QAAV,EAA6B,C,EAlOyB,gBAAO,C,EAAvD,WAAiB,IAJzB,YAIiE,C,EAFT,wBAAG,C,EAApD,WAAiB,IAFxB,YAE6D,C,sBAhB7B,mBAA0B,C,QAhQtC,oBA7CZ,QAAa,QAAgB,GA6CS,kBAAI,C,QAFlC,0BA3CR,QAAa,QAAgB,GA2CJ,kBAAI,C,EAd1B,aAAyB,QASO,WAAhB,KAAuB,C,EAJzD,eACU,gBACU,C,KALL,aAAyB,QAAgB,GAAV,oBAAW,C,KAFvC,aAAyB,OAAgB,kBAAV,oB,CAAa,C,OAF1C,aAA2B,WAAM,uBAAG,C,EAFzC,aAA2B,S,QAF1B,eAAyB,QAAqB,kBAAf,OAAkB,C,QAFlD,eAAyB,QAA4B,kBAAtB,OAA2B,C,EAvBvD,aAAa,QASmB,WAAhB,KAAuB,C,KAP1C,aAAa,QAAgB,GAAV,oBAAW,C,KAF3B,aAAa,OAAgB,kBAAV,oB,CAAa,C,OAF9B,aAAe,WAAM,uBAAG,C,EAF7B,aAAe,S,QAFd,eAAa,QAAgB,kBAAV,OAAa,C,QAFjC,eAAa,QAAuB,kBAAjB,OAAsB,C,wBAnFpB,IAAzB,MAAyB,MAoCpB,MAIQ,MAA+B,0NAsI/C,MAEC,MAyIK,UAEP,UA6EmC,GAAvB,UAAuB,KAIxB,UAwIN,UAmFP,UAYQ,UAAsB,0DAiCjC,UAuBa,UAAqB,6GAgExC,cAQkB,iK","ignoreList":[0]}},{"offset":{"line":0,"column":67032},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/dom.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Jérôme Vouillon\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen! Import\n\nclass type ['node] nodeList = object\n method item : int -> 'node t opt meth\n\n method length : int readonly_prop\nend\n\nlet list_of_nodeList (nodeList : 'a nodeList t) =\n let length = nodeList##.length in\n let rec add_item acc i =\n if i < length\n then\n match Opt.to_option (nodeList##item i) with\n | None -> add_item acc (i + 1)\n | Some e -> add_item (e :: acc) (i + 1)\n else List.rev acc\n in\n add_item [] 0\n\ntype nodeType =\n | OTHER\n (* Will not happen *)\n | ELEMENT\n | ATTRIBUTE\n | TEXT\n | CDATA_SECTION\n | ENTITY_REFERENCE\n | ENTITY\n | PROCESSING_INSTRUCTION\n | COMMENT\n | DOCUMENT\n | DOCUMENT_TYPE\n | DOCUMENT_FRAGMENT\n | NOTATION\n\nmodule DocumentPosition = struct\n type t = int\n\n type mask = int\n\n let disconnected = 0x01\n\n let preceding = 0x02\n\n let following = 0x04\n\n let contains = 0x08\n\n let contained_by = 0x10\n\n let implementation_specific = 0x20\n\n let has t mask = t land mask = mask\n\n let add x y = x lor y\n\n let ( + ) = add\nend\n\nclass type node = object\n method nodeName : js_string t readonly_prop\n\n method nodeValue : js_string t opt readonly_prop\n\n method nodeType : nodeType readonly_prop\n\n method parentNode : node t opt prop\n\n method childNodes : node nodeList t prop\n\n method firstChild : node t opt prop\n\n method lastChild : node t opt prop\n\n method previousSibling : node t opt prop\n\n method nextSibling : node t opt prop\n\n method namespaceURI : js_string t opt prop\n\n method insertBefore : node t -> node t opt -> node t meth\n\n method replaceChild : node t -> node t -> node t meth\n\n method removeChild : node t -> node t meth\n\n method appendChild : node t -> node t meth\n\n method hasChildNodes : bool t meth\n\n method cloneNode : bool t -> node t meth\n\n method compareDocumentPosition : node t -> DocumentPosition.t meth\n\n method lookupNamespaceURI : js_string t -> js_string t opt meth\n\n method lookupPrefix : js_string t -> js_string t opt meth\nend\n\nlet appendChild (p : #node t) (n : #node t) = ignore (p##appendChild (n :> node t))\n\nlet removeChild (p : #node t) (n : #node t) = ignore (p##removeChild (n :> node t))\n\nlet replaceChild (p : #node t) (n : #node t) (o : #node t) =\n ignore (p##replaceChild (n :> node t) (o :> node t))\n\nlet insertBefore (p : #node t) (n : #node t) (o : #node t opt) =\n ignore (p##insertBefore (n :> node t) (o :> node t opt))\n\n(** Specification of [Attr] objects. *)\nclass type attr = object\n inherit node\n\n method name : js_string t readonly_prop\n\n method specified : bool t readonly_prop\n\n method value : js_string t prop\n\n method ownerElement : element t prop\nend\n\n(** Specification of [NamedNodeMap] objects. *)\nand ['node] namedNodeMap = object\n method getNamedItem : js_string t -> 'node t opt meth\n\n method setNamedItem : 'node t -> 'node t opt meth\n\n method removeNamedItem : js_string t -> 'node t opt meth\n\n method item : int -> 'node t opt meth\n\n method length : int readonly_prop\nend\n\n(** Specification of [Element] objects. *)\nand element = object\n inherit node\n\n method tagName : js_string t readonly_prop\n\n method getAttribute : js_string t -> js_string t opt meth\n\n method setAttribute : js_string t -> js_string t -> unit meth\n\n method removeAttribute : js_string t -> unit meth\n\n method hasAttribute : js_string t -> bool t meth\n\n method getAttributeNS : js_string t -> js_string t -> js_string t opt meth\n\n method setAttributeNS : js_string t -> js_string t -> js_string t -> unit meth\n\n method removeAttributeNS : js_string t -> js_string t -> unit meth\n\n method hasAttributeNS : js_string t -> js_string t -> bool t meth\n\n method getAttributeNode : js_string t -> attr t opt meth\n\n method setAttributeNode : attr t -> attr t opt meth\n\n method removeAttributeNode : attr t -> attr t meth\n\n method getAttributeNodeNS : js_string t -> js_string t -> attr t opt meth\n\n method setAttributeNodeNS : attr t -> attr t opt meth\n\n method getElementsByTagName : js_string t -> element nodeList t meth\n\n method attributes : attr namedNodeMap t readonly_prop\nend\n\nclass type characterData = object\n inherit node\n\n method data : js_string t prop\n\n method length : int readonly_prop\n\n method substringData : int -> int -> js_string t meth\n\n method appendData : js_string t -> unit meth\n\n method insertData : int -> js_string t -> unit meth\n\n method deleteData : int -> int -> unit meth\n\n method replaceData : int -> int -> js_string t -> unit meth\nend\n\nclass type comment = characterData\n\nclass type text = characterData\n\nclass type documentFragment = node\n\nclass type ['element] document = object\n inherit node\n\n method documentElement : 'element t readonly_prop\n\n method createDocumentFragment : documentFragment t meth\n\n method createElement : js_string t -> 'element t meth\n\n method createElementNS : js_string t -> js_string t -> 'element t meth\n\n method createTextNode : js_string t -> text t meth\n\n method createAttribute : js_string t -> attr t meth\n\n method createComment : js_string t -> comment t meth\n\n method getElementById : js_string t -> 'element t opt meth\n\n method getElementsByTagName : js_string t -> 'element nodeList t meth\n\n method importNode : element t -> bool t -> 'element t meth\n\n method adoptNode : element t -> 'element t meth\nend\n\ntype node_type =\n | Element of element t\n | Attr of attr t\n | Text of text t\n | Other of node t\n\nlet nodeType e =\n match e##.nodeType with\n | ELEMENT -> Element (Js.Unsafe.coerce e)\n | ATTRIBUTE -> Attr (Js.Unsafe.coerce e)\n | CDATA_SECTION | TEXT -> Text (Js.Unsafe.coerce e)\n | _ -> Other (e :> node t)\n\nmodule CoerceTo = struct\n let cast (e : #node Js.t) t =\n if e##.nodeType == t then Js.some (Js.Unsafe.coerce e) else Js.null\n\n let element e : element Js.t Js.opt = cast e ELEMENT\n\n let text e : text Js.t Js.opt =\n if e##.nodeType == TEXT || e##.nodeType == CDATA_SECTION\n then Js.some (Js.Unsafe.coerce e)\n else Js.null\n\n let attr e : attr Js.t Js.opt = cast e ATTRIBUTE\nend\n\ntype ('a, 'b) event_listener = ('a, 'b -> bool t) meth_callback opt\n(** The type of event listener functions. The first type parameter\n ['a] is the type of the target object; the second parameter\n ['b] is the type of the event object. *)\n\nclass type ['a] event = object\n method _type : js_string t readonly_prop\n\n method target : 'a t opt readonly_prop\n\n method currentTarget : 'a t opt readonly_prop\n\n method preventDefault : unit meth\n\n (* Legacy methods *)\n method srcElement : 'a t opt readonly_prop\nend\n\nclass type ['a, 'b] customEvent = object\n inherit ['a] event\n\n method detail : 'b Js.opt Js.readonly_prop\nend\n\nlet no_handler : ('a, 'b) event_listener = Js.null\n\n(* The function preventDefault must be called explicitly when\n using addEventListener... *)\nlet handler f =\n Js.some\n (Js.Unsafe.callback (fun e ->\n let res = f e in\n if not (Js.to_bool res) then e##preventDefault;\n res))\n\nlet full_handler f =\n Js.some\n (Js.Unsafe.meth_callback (fun this e ->\n let res = f this e in\n if not (Js.to_bool res) then e##preventDefault;\n res))\n\nlet invoke_handler (f : ('a, 'b) event_listener) (this : 'a) (event : 'b) : bool t =\n Js.Unsafe.call f this [| Js.Unsafe.inject event |]\n\nlet eventTarget (e : (< .. > as 'a) #event t) : 'a t =\n Opt.get e##.target (fun () -> Opt.get e##.srcElement (fun () -> raise Not_found))\n\nmodule Event = struct\n type 'a typ = Js.js_string Js.t\n\n let make s = Js.string s\nend\n\ntype event_listener_id = unit -> unit\n\nclass type event_listener_options = object\n method capture : bool t writeonly_prop\n\n method once : bool t writeonly_prop\n\n method passive : bool t writeonly_prop\nend\n\nlet addEventListenerWithOptions (e : < .. > t) typ ?capture ?once ?passive h =\n if not (Js.Optdef.test (Js.Unsafe.coerce e)##.addEventListener)\n then\n let ev = (Js.string \"on\")##concat typ in\n let callback e = Js.Unsafe.call (h, e, [||]) in\n let () = (Js.Unsafe.coerce e)##attachEvent ev callback in\n fun () -> (Js.Unsafe.coerce e)##detachEvent ev callback\n else\n let opts : event_listener_options t = Js.Unsafe.obj [||] in\n let iter t f =\n match t with\n | None -> ()\n | Some b -> f b\n in\n iter capture (fun b -> opts##.capture := b);\n iter once (fun b -> opts##.once := b);\n iter passive (fun b -> opts##.passive := b);\n let () = (Js.Unsafe.coerce e)##addEventListener typ h opts in\n fun () -> (Js.Unsafe.coerce e)##removeEventListener typ h opts\n\nlet addEventListener (e : < .. > t) typ h capt =\n addEventListenerWithOptions e typ ~capture:capt h\n\nlet removeEventListener id = id ()\n\nlet preventDefault ev = ev##preventDefault\n\nlet createCustomEvent ?bubbles ?cancelable ?detail typ =\n let opt_iter f = function\n | None -> ()\n | Some x -> f x\n in\n let opts = Unsafe.obj [||] in\n opt_iter (fun x -> opts##.bubbles := bool x) bubbles;\n opt_iter (fun x -> opts##.cancelable := bool x) cancelable;\n opt_iter (fun x -> opts##.detail := some x) detail;\n let constr :\n ( ('a, 'b) #customEvent Js.t Event.typ\n -> < detail : 'b opt prop > t\n -> ('a, 'b) customEvent t)\n constr =\n Unsafe.global##._CustomEvent\n in\n new%js constr typ opts\n\nclass type stringList = object\n method item : int -> js_string t opt meth\n\n method length : int readonly_prop\n\n method contains : js_string t -> bool t meth\nend\n","(* generated code *)"],"names":[],"mappings":"GA+Wa,MAJE,O,CAAA,YAKwB,IAAM,cAL9B,O,CAAA,YAM2B,IAAM,cANjC,O,CAAA,YAOM,OAAiB,eAAM,cAAQ,eAMhD,MAEF,cAAsB,C,EAlBA,QAAkB,C,KAFb,mBAAK,C,EAFhC,+BAAiD,C,KAfrC,iCAA6C,C,ECrV3D,gB,EDmVqB,oCAA2B,C,KAclC,yCAAoD,C,MAjBzC,QAAuC,eAAvD,aAAwD,QAEpD,cACT,UACS,iBACT,aAEsC,MAEpC,O,CAAA,cAIqB,cAJrB,O,CAAA,cAKkB,cALlB,O,CAAA,cAMqB,cACd,qBACT,eAA8D,C,EA/BnD,IAAW,C,EALwC,SAAe,C,EAAjD,KAAQ,UAAc,8BAA4B,C,KAAhF,UAAQ,QAAU,8BAA+D,C,EAHjF,gBAAkD,C,EALjC,kBACH,EAAgB,QAAM,UAC7B,EAAG,C,EAJV,WACE,EAGU,qB,EATK,0BACH,EAAgB,QAAM,UAC7B,EAAG,C,EAJV,QACE,EAGU,qB,EApCoB,SAAgB,C,EAJ/B,IAAZ,QAAY,C,CAAA,EAAwB,IAAZ,QAAY,C,CAAA,EAElC,UADA,sBACO,C,EALwB,SAAc,C,KAF/C,QAAY,+BAAW,uBAAkC,QAAO,C,EAR/D,UAAY,K,CAAA,E,EAAA,8BAGQ,YADX,YADF,aAGN,UAAmB,C,EA9HnB,iBAAiD,K,EAHjD,iBAA6C,K,EAHD,aAA8B,K,EAF9B,aAA8B,K,EA7CnE,iBAAO,C,KAFJ,wBAAkB,C,QA5CtB,UASb,QAPE,kBAEsB,cAAkB,eAAhC,eAAgC,OAC5B,UACE,IADF,UACE,kB,EACT,uB,GAEM,C,ECvCf,kH,QAAA,4D,EAAA,c,QAAA,8B,EAAA,c,EAAA,c,WAAA,0C,EAAA,c,EAAA,c,EAAA,c,cAAA,sD,EAAA,c,EAAA,c,EAAA,c,EAAA,c,EAAA,c,oBAAA","ignoreList":[1]}},{"offset":{"line":0,"column":69168},"map":{"version":3,"sources":["/builtin/blackbox.ml","/root/.opam/5.2.0/lib/js_of_ocaml/typed_array.ml"],"sourcesContent":["(* generated code *)","(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2012 Jérôme Vouillon\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\nopen Js\n\nclass type arrayBuffer = object\n method byteLength : int readonly_prop\n\n method slice : int -> int -> arrayBuffer t meth\n\n method slice_toEnd : int -> arrayBuffer t meth\nend\n\nlet arrayBuffer : (int -> arrayBuffer t) constr = Js.Unsafe.global##._ArrayBuffer\n\nclass type arrayBufferView = object\n method buffer : arrayBuffer t readonly_prop\n\n method byteOffset : int readonly_prop\n\n method byteLength : int readonly_prop\nend\n\nclass type ['a, 'b, 'c] typedArray = object\n inherit arrayBufferView\n\n method _BYTES_PER_ELEMENT : int readonly_prop\n\n method length : int readonly_prop\n\n method set_fromArray : 'a js_array t -> int -> unit meth\n\n method set_fromTypedArray : ('a, 'b, 'c) typedArray t -> int -> unit meth\n\n method subarray : int -> int -> ('a, 'b, 'c) typedArray t meth\n\n method subarray_toEnd : int -> ('a, 'b, 'c) typedArray t meth\n\n method slice : int -> int -> ('a, 'b, 'c) typedArray t meth\n\n method slice_toEnd : int -> ('a, 'b, 'c) typedArray t meth\n\n (* This fake method is needed for typing purposes.\n Without it, ['b] would not be constrained. *)\n method _content_type_ : ('b * 'c) optdef readonly_prop\nend\n\ntype int8Array = (int, int, Bigarray.int8_signed_elt) typedArray\n\ntype uint8Array = (int, int, Bigarray.int8_unsigned_elt) typedArray\n\ntype int16Array = (int, int, Bigarray.int16_signed_elt) typedArray\n\ntype uint16Array = (int, int, Bigarray.int16_unsigned_elt) typedArray\n\ntype int32Array = (number_t, Int32.t, Bigarray.int32_elt) typedArray\n\ntype uint32Array = (number_t, Int32.t, Bigarray.int32_elt) typedArray\n\ntype float32Array = (number_t, float, Bigarray.float32_elt) typedArray\n\ntype float64Array = (number_t, float, Bigarray.float64_elt) typedArray\n\ntype (_, _, _) kind =\n | Int8_signed : (int, int, Bigarray.int8_signed_elt) kind\n | Int8_unsigned : (int, int, Bigarray.int8_unsigned_elt) kind\n | Int16_signed : (int, int, Bigarray.int16_signed_elt) kind\n | Int16_unsigned : (int, int, Bigarray.int16_unsigned_elt) kind\n | Int32_signed : (number_t, Int32.t, Bigarray.int32_elt) kind\n | Int32_unsigned : (number_t, Int32.t, Bigarray.int32_elt) kind\n | Float32 : (number_t, float, Bigarray.float32_elt) kind\n | Float64 : (number_t, float, Bigarray.float64_elt) kind\n\nexternal kind :\n ('typed_array, 'bigarray, 'elt) typedArray t -> ('bigarray, 'elt) Bigarray.kind\n = \"caml_ba_kind_of_typed_array\"\n\nexternal from_genarray_impl :\n ('bigarray, 'elt, Bigarray.c_layout) Bigarray.Genarray.t\n -> ('typed_array, 'bigarray, 'elt) typedArray t = \"caml_ba_to_typed_array\"\n\nexternal to_genarray :\n ('typed_array, 'bigarray, 'elt) typedArray t\n -> ('bigarray, 'elt, Bigarray.c_layout) Bigarray.Genarray.t = \"caml_ba_from_typed_array\"\n\nlet from_genarray (_ : ('typed_array, 'bigarray, 'elt) kind) a = from_genarray_impl a\n\nlet int8Array = Js.Unsafe.global##._Int8Array\n\nlet int8Array_fromArray = int8Array\n\nlet int8Array_fromTypedArray = int8Array\n\nlet int8Array_fromBuffer = int8Array\n\nlet int8Array_inBuffer = int8Array\n\nlet uint8Array = Js.Unsafe.global##._Uint8Array\n\nlet uint8Array_fromArray = uint8Array\n\nlet uint8Array_fromTypedArray = uint8Array\n\nlet uint8Array_fromBuffer = uint8Array\n\nlet uint8Array_inBuffer = uint8Array\n\nlet int16Array = Js.Unsafe.global##._Int16Array\n\nlet int16Array_fromArray = int16Array\n\nlet int16Array_fromTypedArray = int16Array\n\nlet int16Array_fromBuffer = int16Array\n\nlet int16Array_inBuffer = int16Array\n\nlet uint16Array = Js.Unsafe.global##._Uint16Array\n\nlet uint16Array_fromArray = uint16Array\n\nlet uint16Array_fromTypedArray = uint16Array\n\nlet uint16Array_fromBuffer = uint16Array\n\nlet uint16Array_inBuffer = uint16Array\n\nlet int32Array = Js.Unsafe.global##._Int32Array\n\nlet int32Array_fromArray = int32Array\n\nlet int32Array_fromTypedArray = int32Array\n\nlet int32Array_fromBuffer = int32Array\n\nlet int32Array_inBuffer = int32Array\n\nlet uint32Array = Js.Unsafe.global##._Uint32Array\n\nlet uint32Array_fromArray = uint32Array\n\nlet uint32Array_fromTypedArray = uint32Array\n\nlet uint32Array_fromBuffer = uint32Array\n\nlet uint32Array_inBuffer = uint32Array\n\nlet float32Array = Js.Unsafe.global##._Float32Array\n\nlet float32Array_fromArray = float32Array\n\nlet float32Array_fromTypedArray = float32Array\n\nlet float32Array_fromBuffer = float32Array\n\nlet float32Array_inBuffer = float32Array\n\nlet float64Array = Js.Unsafe.global##._Float64Array\n\nlet float64Array_fromArray = float64Array\n\nlet float64Array_fromTypedArray = float64Array\n\nlet float64Array_fromBuffer = float64Array\n\nlet float64Array_inBuffer = float64Array\n\nlet set : ('a, _, _) typedArray t -> int -> 'a -> unit =\n fun a i v -> array_set (Unsafe.coerce a) i v\n\nlet get : ('a, _, _) typedArray t -> int -> 'a optdef = fun a i -> Js.Unsafe.get a i\n\nlet unsafe_get : ('a, _, _) typedArray t -> int -> 'a = fun a i -> Js.Unsafe.get a i\n\nclass type dataView = object\n inherit arrayBufferView\n\n method getInt8 : int -> int meth\n\n method getUint8 : int -> int meth\n\n method getInt16 : int -> int meth\n\n method getInt16_ : int -> bool t -> int meth\n\n method getUint16 : int -> int meth\n\n method getUint16_ : int -> bool t -> int meth\n\n method getInt32 : int -> number_t meth\n\n method getInt32_ : int -> bool t -> number_t meth\n\n method getUint32 : int -> number_t meth\n\n method getUint32_ : int -> bool t -> number_t meth\n\n method getFloat32 : int -> number_t meth\n\n method getFloat32_ : int -> bool t -> number_t meth\n\n method getFloat64 : int -> number_t meth\n\n method getFloat64_ : int -> bool t -> number_t meth\n\n method setInt8 : int -> int -> unit meth\n\n method setUint8 : int -> int -> unit meth\n\n method setInt16 : int -> int -> unit meth\n\n method setInt16_ : int -> int -> bool t -> unit meth\n\n method setUint16 : int -> int -> unit meth\n\n method setUint16_ : int -> int -> bool t -> unit meth\n\n method setInt32 : int -> number_t -> unit meth\n\n method setInt32_ : int -> number_t -> bool t -> unit meth\n\n method setUint32 : int -> number_t -> unit meth\n\n method setUint32_ : int -> number_t -> bool t -> unit meth\n\n method setFloat32 : int -> number_t -> unit meth\n\n method setFloat32_ : int -> number_t -> bool t -> unit meth\n\n method setFloat64 : int -> number_t -> unit meth\n\n method setFloat64_ : int -> number_t -> bool t -> unit meth\nend\n\nlet dataView = Js.Unsafe.global##._DataView\n\nlet dataView_inBuffer = dataView\n\nmodule Bigstring = struct\n type t = (char, Bigarray.int8_unsigned_elt, Bigarray.c_layout) Bigarray.Array1.t\n\n external to_arrayBuffer : t -> arrayBuffer Js.t = \"bigstring_to_array_buffer\"\n\n external to_uint8Array : t -> uint8Array Js.t = \"bigstring_to_typed_array\"\n\n external of_arrayBuffer : arrayBuffer Js.t -> t = \"bigstring_of_array_buffer\"\n\n external of_uint8Array : uint8Array Js.t -> t = \"bigstring_of_typed_array\"\nend\n\nmodule String = struct\n external of_uint8Array : uint8Array Js.t -> string = \"caml_string_of_uint8_array\"\n\n let of_arrayBuffer ab =\n let uint8 = new%js uint8Array_fromBuffer ab in\n of_uint8Array uint8\nend\n\nmodule Bytes = struct\n external of_uint8Array : uint8Array Js.t -> bytes = \"caml_bytes_of_uint8_array\"\n\n external to_uint8Array : bytes -> uint8Array Js.t = \"caml_uint8_array_of_bytes\"\n\n let of_arrayBuffer ab =\n let uint8 = new%js uint8Array_fromBuffer ab in\n of_uint8Array uint8\nend\n"],"names":[],"mappings":"iECyRgB,mBACZ,EAAmB,C,EAXP,mBACZ,EAAmB,C,EAnF4C,MAAiB,C,EAJtE,0BAA+B,C,EAnFoB,IAAoB,C,MAqJ1C,ID3P3C,eC8BkD,MA6NP,OA7NsC,eA0EjE,QAmJ2B,QAnJE,eAU5B,QAyI0B,QAzII,eAU9B,QA+H0B,QA/HI,eAU7B,QAqHyB,QArHM,eAUhC,QA2G0B,QA3GI,eAU7B,QAiGyB,QAjGM,eAU9B,QAuFwB,QAvFQ,eAUhC,QA6EwB,cA7EQ,eA6EpC,QAA4B,oE","ignoreList":[0]}},{"offset":{"line":0,"column":69846},"map":{"version":3,"sources":["/builtin/blackbox.ml","/root/.opam/5.2.0/lib/js_of_ocaml/file.ml"],"sourcesContent":["(* generated code *)","(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2011 Pierre Chambart\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen Dom\nopen! Import\n\nclass type blob = object\n method size : int readonly_prop\n\n method _type : js_string t readonly_prop\n\n method slice : int -> int -> blob t meth\n\n method slice_withContentType : int -> int -> js_string t -> blob t meth\nend\n\nlet blob_constr = Unsafe.global##._Blob\n\ntype 'a make_blob =\n ?contentType:string -> ?endings:[ `Transparent | `Native ] -> 'a -> blob t\n\nlet rec filter_map f = function\n | [] -> []\n | v :: q -> (\n match f v with\n | None -> filter_map f q\n | Some v' -> v' :: filter_map f q)\n\nlet make_blob_options contentType endings =\n let options =\n filter_map\n (fun (name, v) ->\n match v with\n | None -> None\n | Some v -> Some (name, Unsafe.inject (string v)))\n [ \"type\", contentType\n ; ( \"endings\"\n , match endings with\n | None -> None\n | Some `Transparent -> Some \"transparent\"\n | Some `Native -> Some \"native\" )\n ]\n in\n match options with\n | [] -> undefined\n | l -> Unsafe.obj (Array.of_list l)\n\nlet blob_raw ?contentType ?endings a =\n let options = make_blob_options contentType endings in\n new%js blob_constr (array a) options\n\nlet blob_from_string ?contentType ?endings s =\n blob_raw ?contentType ?endings [| string s |]\n\nlet blob_from_any ?contentType ?endings l =\n let l =\n List.map\n (function\n | `arrayBuffer a -> Unsafe.inject a\n | `arrayBufferView a -> Unsafe.inject a\n | `string s -> Unsafe.inject (string s)\n | `js_string s -> Unsafe.inject s\n | `blob b -> Unsafe.inject b)\n l\n in\n blob_raw ?contentType ?endings (Array.of_list l)\n\nclass type file = object\n inherit blob\n\n method name : js_string t readonly_prop\n\n method lastModified : number_t readonly_prop\n\n method lastModifiedDate : Js.date t readonly_prop\n (** @deprecated Use [lastModified] instead. *)\nend\n\n(* in firefox 3.0-3.5 file.name is not available, we use the nonstandard fileName instead *)\nclass type file_name_only = object\n method name : js_string t optdef readonly_prop\n\n method fileName : js_string t optdef readonly_prop\nend\n\nlet filename file =\n let file : file_name_only t = Js.Unsafe.coerce file in\n match Optdef.to_option file##.name with\n | None -> (\n match Optdef.to_option file##.fileName with\n | None -> failwith \"can't retrieve file name: not implemented\"\n | Some name -> name)\n | Some name -> name\n\ntype file_any = < > t\n\nlet doc_constr = Unsafe.global##._Document\n\nmodule CoerceTo = struct\n external json : file_any -> 'a Opt.t = \"%identity\"\n\n let document (e : file_any) =\n if instanceof e doc_constr\n then Js.some (Unsafe.coerce e : element document t)\n else Js.null\n\n let blob (e : file_any) =\n if instanceof e blob_constr then Js.some (Unsafe.coerce e : #blob t) else Js.null\n\n let string (e : file_any) =\n if Js.equals (typeof e) (string \"string\")\n then Js.some (Unsafe.coerce e : js_string t)\n else Js.null\n\n let arrayBuffer (e : file_any) =\n if instanceof e Typed_array.arrayBuffer\n then Js.some (Unsafe.coerce e : Typed_array.arrayBuffer t)\n else Js.null\nend\n\nclass type fileList = object\n inherit [file] Dom.nodeList\nend\n\nclass type fileError = object\n method code : int readonly_prop\nend\n\nclass type ['a] progressEvent = object\n inherit ['a] event\n\n method lengthComputable : bool t readonly_prop\n\n method loaded : int readonly_prop\n\n method total : int readonly_prop\nend\n\nclass type progressEventTarget = object ('self)\n method onloadstart : ('self t, 'self progressEvent t) event_listener writeonly_prop\n\n method onprogress : ('self t, 'self progressEvent t) event_listener writeonly_prop\n\n method onload : ('self t, 'self progressEvent t) event_listener writeonly_prop\n\n method onabort : ('self t, 'self progressEvent t) event_listener writeonly_prop\n\n method onerror : ('self t, 'self progressEvent t) event_listener writeonly_prop\n\n method onloadend : ('self t, 'self progressEvent t) event_listener writeonly_prop\nend\n\ntype readyState =\n | EMPTY\n | LOADING\n | DONE\n\nclass type fileReader = object ('self)\n method readAsArrayBuffer : #blob t -> unit meth\n\n method readAsBinaryString : #blob t -> unit meth\n\n method readAsText : #blob t -> unit meth\n\n method readAsText_withEncoding : #blob t -> js_string t -> unit meth\n\n method readAsDataURL : #blob t -> unit meth\n\n method abort : unit meth\n\n method readyState : readyState readonly_prop\n\n method result : file_any readonly_prop\n\n method error : fileError t readonly_prop\n\n inherit progressEventTarget\nend\n\nmodule ReaderEvent = struct\n type typ = fileReader progressEvent t Dom.Event.typ\n\n let loadstart = Event.make \"loadstart\"\n\n let progress = Event.make \"progress\"\n\n let abort = Event.make \"abort\"\n\n let error = Event.make \"error\"\n\n let load = Event.make \"load\"\n\n let loadend = Event.make \"loadend\"\nend\n\nlet fileReader : fileReader t constr = Js.Unsafe.global##._FileReader\n\nlet addEventListener = Dom.addEventListener\n"],"names":[],"mappings":"OCqIO,EAAH,QAAG,EAAoC,QAElC,QADA,uBACO,C,EAPC,IAAV,KAAsC,QAEpC,QADA,uBACO,C,EALT,aAAwB,QAA+C,QAAzC,uBAAgD,C,GApB5D,QAAW,eAA5B,eAA4B,QAEP,QAAe,eAAhC,eAAgC,QAC5B,oCACK,WACA,C,QAnCf,kCAIoB,8BAFM,2BACK,GAAU,aAEV,C,KAPnC,OAUgD,IAT9C,KADF,OACE,aASF,OAA+B,aAAiB,U,KAbd,OAAQ,QAAR,IAAQ,eAAG,C,EArBzC,YACE,QACU,KACsC,QAHlD,UAEY,UAC4B,EAAU,SAAE,C,GAJtD,GAQgB,4BATlB,UASkB,qDARhB,KAaF,QACQ,QACU,EAAX,OAAW,aAAX,G,EAIY,MAAS,oBAAQ,C,QA5BnB,aACT,0BAEE,YAAG,OAEwB,IAFxB,UAEU,OAAc,MAAC,C,SAyK6B,IAnL9B,MDlCvC,eCkCkB,QAAqB,mBAmL8B,IAnG3B,GAhFH,eAgFtB,MAAyB,WAmG2B,aAHjC,IAVlB,GAtFwB,eAsFxB,aAED,GAFuB,eAEvB,aAEH,GAFwB,eAExB,aAEA,GAFkB,eAElB,aAED,GAFmB,eAEnB,aAEG,GAFc,eAEd,aAAoB,IAGiC,GAHjC,eAGG,MAA8B,mB","ignoreList":[0]}},{"offset":{"line":0,"column":71149},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/dom_html.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Jérôme Vouillon\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen! Import\n\nexternal html_escape : js_string t -> js_string t = \"caml_js_html_escape\"\n\nexternal html_entities : js_string t -> js_string t opt = \"caml_js_html_entities\"\n\nlet decode_html_entities s =\n Js.Opt.get (html_entities s) (fun () -> failwith (\"Invalid entity \" ^ Js.to_string s))\n\nclass type cssStyleDeclaration = object\n method setProperty :\n js_string t -> js_string t -> js_string t optdef -> js_string t meth\n\n method getPropertyValue : js_string t -> js_string t meth\n\n method getPropertyPriority : js_string t -> js_string t meth\n\n method removeProperty : js_string t -> js_string t meth\n\n method animation : js_string t prop\n\n method animationDelay : js_string t prop\n\n method animationDirection : js_string t prop\n\n method animationDuration : js_string t prop\n\n method animationFillMode : js_string t prop\n\n method animationIterationCount : js_string t prop\n\n method animationName : js_string t prop\n\n method animationPlayState : js_string t prop\n\n method animationTimingFunction : js_string t prop\n\n method background : js_string t prop\n\n method backgroundAttachment : js_string t prop\n\n method backgroundColor : js_string t prop\n\n method backgroundImage : js_string t prop\n\n method backgroundPosition : js_string t prop\n\n method backgroundRepeat : js_string t prop\n\n method border : js_string t prop\n\n method borderBottom : js_string t prop\n\n method borderBottomColor : js_string t prop\n\n method borderBottomStyle : js_string t prop\n\n method borderBottomWidth : js_string t prop\n\n method borderCollapse : js_string t prop\n\n method borderColor : js_string t prop\n\n method borderLeft : js_string t prop\n\n method borderLeftColor : js_string t prop\n\n method borderLeftStyle : js_string t prop\n\n method borderLeftWidth : js_string t prop\n\n method borderRadius : js_string t prop\n\n method borderRight : js_string t prop\n\n method borderRightColor : js_string t prop\n\n method borderRightStyle : js_string t prop\n\n method borderRightWidth : js_string t prop\n\n method borderSpacing : js_string t prop\n\n method borderStyle : js_string t prop\n\n method borderTop : js_string t prop\n\n method borderTopColor : js_string t prop\n\n method borderTopStyle : js_string t prop\n\n method borderTopWidth : js_string t prop\n\n method borderWidth : js_string t prop\n\n method bottom : js_string t prop\n\n method captionSide : js_string t prop\n\n method clear : js_string t prop\n\n method clip : js_string t prop\n\n method color : js_string t prop\n\n method content : js_string t prop\n\n method counterIncrement : js_string t prop\n\n method counterReset : js_string t prop\n\n method cssFloat : js_string t prop\n\n method cssText : js_string t prop\n\n method cursor : js_string t prop\n\n method direction : js_string t prop\n\n method display : js_string t prop\n\n method emptyCells : js_string t prop\n\n method fill : js_string t prop\n\n method font : js_string t prop\n\n method fontFamily : js_string t prop\n\n method fontSize : js_string t prop\n\n method fontStyle : js_string t prop\n\n method fontVariant : js_string t prop\n\n method fontWeight : js_string t prop\n\n method height : js_string t prop\n\n method left : js_string t prop\n\n method letterSpacing : js_string t prop\n\n method lineHeight : js_string t prop\n\n method listStyle : js_string t prop\n\n method listStyleImage : js_string t prop\n\n method listStylePosition : js_string t prop\n\n method listStyleType : js_string t prop\n\n method margin : js_string t prop\n\n method marginBottom : js_string t prop\n\n method marginLeft : js_string t prop\n\n method marginRight : js_string t prop\n\n method marginTop : js_string t prop\n\n method maxHeight : js_string t prop\n\n method maxWidth : js_string t prop\n\n method minHeight : js_string t prop\n\n method minWidth : js_string t prop\n\n method opacity : js_string t prop\n\n method outline : js_string t prop\n\n method outlineColor : js_string t prop\n\n method outlineOffset : js_string t prop\n\n method outlineStyle : js_string t prop\n\n method outlineWidth : js_string t prop\n\n method overflow : js_string t prop\n\n method overflowX : js_string t prop\n\n method overflowY : js_string t prop\n\n method padding : js_string t prop\n\n method paddingBottom : js_string t prop\n\n method paddingLeft : js_string t prop\n\n method paddingRight : js_string t prop\n\n method paddingTop : js_string t prop\n\n method pageBreakAfter : js_string t prop\n\n method pageBreakBefore : js_string t prop\n\n method pointerEvents : js_string t prop\n\n method position : js_string t prop\n\n method right : js_string t prop\n\n method stroke : js_string t prop\n\n method strokeWidth : js_string t prop\n\n method tableLayout : js_string t prop\n\n method textAlign : js_string t prop\n\n method textAnchor : js_string t prop\n\n method textDecoration : js_string t prop\n\n method textIndent : js_string t prop\n\n method textTransform : js_string t prop\n\n method top : js_string t prop\n\n method transform : js_string t prop\n\n method verticalAlign : js_string t prop\n\n method visibility : js_string t prop\n\n method whiteSpace : js_string t prop\n\n method width : js_string t prop\n\n method wordSpacing : js_string t prop\n\n method zIndex : js_string t prop\nend\n\ntype ('a, 'b) event_listener = ('a, 'b) Dom.event_listener\n\ntype mouse_button =\n | No_button\n | Left_button\n | Middle_button\n | Right_button\n\ntype delta_mode =\n | Delta_pixel\n | Delta_line\n | Delta_page\n\nclass type event = object\n inherit [element] Dom.event\nend\n\nand ['a] customEvent = object\n inherit [element, 'a] Dom.customEvent\nend\n\nand focusEvent = object\n inherit event\n\n method relatedTarget : element t opt readonly_prop\nend\n\nand mouseEvent = object\n inherit event\n\n method relatedTarget : element t opt readonly_prop\n\n method clientX : number_t readonly_prop\n\n method clientY : number_t readonly_prop\n\n method screenX : number_t readonly_prop\n\n method screenY : number_t readonly_prop\n\n method offsetX : number_t readonly_prop\n\n method offsetY : number_t readonly_prop\n\n method ctrlKey : bool t readonly_prop\n\n method shiftKey : bool t readonly_prop\n\n method altKey : bool t readonly_prop\n\n method metaKey : bool t readonly_prop\n\n method button : int readonly_prop\n\n method buttons : int readonly_prop\n\n method which : mouse_button optdef readonly_prop\n\n method fromElement : element t opt optdef readonly_prop\n (** @deprecated Use [relatedTarget] instead. *)\n\n method toElement : element t opt optdef readonly_prop\n (** @deprecated Use [relatedTarget] instead. *)\n\n method pageX : number_t optdef readonly_prop\n\n method pageY : number_t optdef readonly_prop\nend\n\nand keyboardEvent = object\n inherit event\n\n method altKey : bool t readonly_prop\n\n method shiftKey : bool t readonly_prop\n\n method ctrlKey : bool t readonly_prop\n\n method metaKey : bool t readonly_prop\n\n method location : int readonly_prop\n\n method key : js_string t optdef readonly_prop\n\n method code : js_string t optdef readonly_prop\n\n method isComposing : bool t readonly_prop\n\n method repeat : bool t readonly_prop\n\n method getModifierState : js_string t -> bool t meth\n\n method which : int optdef readonly_prop\n\n method charCode : int optdef readonly_prop\n\n method keyCode : int readonly_prop\n\n method keyIdentifier : js_string t optdef readonly_prop\nend\n\nand wheelEvent = object\n (* All modern browsers *)\n inherit mouseEvent\n\n method deltaX : number_t readonly_prop\n\n method deltaY : number_t readonly_prop\n\n method deltaZ : number_t readonly_prop\n\n method deltaMode : delta_mode readonly_prop\n\n method wheelDelta : int readonly_prop\n\n method wheelDeltaX : int optdef readonly_prop\n\n method wheelDeltaY : int optdef readonly_prop\nend\n\nand mousewheelEvent = wheelEvent\n\nand mouseScrollEvent = object\n (* Deprecated *)\n inherit mouseEvent\n\n method detail : int readonly_prop\n\n method axis : int optdef readonly_prop\n\n method _HORIZONTAL_AXIS : int optdef readonly_prop\n\n method _VERTICAL_AXIS : int optdef readonly_prop\nend\n\nand touchEvent = object\n inherit event\n\n method touches : touchList t readonly_prop\n\n method targetTouches : touchList t readonly_prop\n\n method changedTouches : touchList t readonly_prop\n\n method ctrlKey : bool t readonly_prop\n\n method shiftKey : bool t readonly_prop\n\n method altKey : bool t readonly_prop\n\n method metaKey : bool t readonly_prop\n\n method relatedTarget : element t opt readonly_prop\nend\n\nand touchList = object\n method length : int readonly_prop\n\n method item : int -> touch t optdef meth\nend\n\nand touch = object\n method identifier : int readonly_prop\n\n method target : element t optdef readonly_prop\n\n method screenX : number_t readonly_prop\n\n method screenY : number_t readonly_prop\n\n method clientX : number_t readonly_prop\n\n method clientY : number_t readonly_prop\n\n method pageX : number_t readonly_prop\n\n method pageY : number_t readonly_prop\nend\n\nand submitEvent = object\n inherit event\n\n method submitter : element t opt readonly_prop\nend\n\nand dragEvent = object\n inherit mouseEvent\n\n method dataTransfer : dataTransfer t readonly_prop\nend\n\nand clipboardEvent = object\n inherit event\n\n method clipboardData : dataTransfer t readonly_prop\nend\n\nand toggleEvent = object\n inherit event\n\n method newState : js_string t readonly_prop\n\n method oldState : js_string t readonly_prop\nend\n\nand mediaQueryListEvent = object\n inherit event\n\n method matches : bool t readonly_prop\n\n method media : js_string t readonly_prop\nend\n\nand dataTransfer = object\n method dropEffect : js_string t prop\n\n method effectAllowed : js_string t prop\n\n method files : File.fileList t readonly_prop\n\n method types : js_string t js_array t readonly_prop\n\n method addElement : element t -> unit meth\n\n method clearData : js_string t -> unit meth\n\n method clearData_all : unit meth\n\n method getData : js_string t -> js_string t meth\n\n method setData : js_string t -> js_string t -> unit meth\n\n method setDragImage : element t -> int -> int -> unit meth\nend\n\nand eventTarget = object ('self)\n method onclick : ('self t, mouseEvent t) event_listener writeonly_prop\n\n method ondblclick : ('self t, mouseEvent t) event_listener writeonly_prop\n\n method onmousedown : ('self t, mouseEvent t) event_listener writeonly_prop\n\n method onmouseup : ('self t, mouseEvent t) event_listener writeonly_prop\n\n method onmouseover : ('self t, mouseEvent t) event_listener writeonly_prop\n\n method onmousemove : ('self t, mouseEvent t) event_listener writeonly_prop\n\n method onmouseout : ('self t, mouseEvent t) event_listener writeonly_prop\n\n method onkeypress : ('self t, keyboardEvent t) event_listener writeonly_prop\n\n method onkeydown : ('self t, keyboardEvent t) event_listener writeonly_prop\n\n method onkeyup : ('self t, keyboardEvent t) event_listener writeonly_prop\n\n method onscroll : ('self t, event t) event_listener writeonly_prop\n\n method onwheel : ('self t, wheelEvent t) event_listener writeonly_prop\n\n method ondragstart : ('self t, dragEvent t) event_listener writeonly_prop\n\n method ondragend : ('self t, dragEvent t) event_listener writeonly_prop\n\n method ondragenter : ('self t, dragEvent t) event_listener writeonly_prop\n\n method ondragover : ('self t, dragEvent t) event_listener writeonly_prop\n\n method ondragleave : ('self t, dragEvent t) event_listener writeonly_prop\n\n method ondrag : ('self t, dragEvent t) event_listener writeonly_prop\n\n method ondrop : ('self t, dragEvent t) event_listener writeonly_prop\n\n method onanimationstart : ('self t, animationEvent t) event_listener writeonly_prop\n\n method onanimationend : ('self t, animationEvent t) event_listener writeonly_prop\n\n method onanimationiteration : ('self t, animationEvent t) event_listener writeonly_prop\n\n method onanimationcancel : ('self t, animationEvent t) event_listener writeonly_prop\n\n method ontransitionrun : ('self t, transitionEvent t) event_listener writeonly_prop\n\n method ontransitionstart : ('self t, transitionEvent t) event_listener writeonly_prop\n\n method ontransitionend : ('self t, transitionEvent t) event_listener writeonly_prop\n\n method ontransitioncancel : ('self t, transitionEvent t) event_listener writeonly_prop\n\n method ongotpointercapture : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method onlostpointercapture : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method onpointerenter : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method onpointercancel : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method onpointerdown : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method onpointerleave : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method onpointermove : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method onpointerout : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method onpointerover : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method onpointerup : ('self t, pointerEvent t) event_listener writeonly_prop\n\n method dispatchEvent : event t -> bool t meth\nend\n\nand popStateEvent = object\n inherit event\n\n method state : Js.Unsafe.any readonly_prop\nend\n\nand pointerEvent = object\n inherit mouseEvent\n\n method pointerId : int readonly_prop\n\n method width : number_t readonly_prop\n\n method height : number_t readonly_prop\n\n method pressure : number_t readonly_prop\n\n method tangentialPressure : number_t readonly_prop\n\n method tiltX : int readonly_prop\n\n method tiltY : int readonly_prop\n\n method twist : int readonly_prop\n\n method pointerType : js_string t readonly_prop\n\n method isPrimary : bool t readonly_prop\nend\n\nand storageEvent = object\n inherit event\n\n method key : js_string t opt readonly_prop\n\n method oldValue : js_string t opt readonly_prop\n\n method newValue : js_string t opt readonly_prop\n\n method url : js_string t readonly_prop\n\n method storageArea : storage t opt readonly_prop\nend\n\nand storage = object\n method length : int readonly_prop\n\n method key : int -> js_string t opt meth\n\n method getItem : js_string t -> js_string t opt meth\n\n method setItem : js_string t -> js_string t -> unit meth\n\n method removeItem : js_string t -> unit meth\n\n method clear : unit meth\nend\n\nand hashChangeEvent = object\n inherit event\n\n method oldURL : js_string t readonly_prop\n\n method newURL : js_string t readonly_prop\nend\n\nand animationEvent = object\n inherit event\n\n method animationName : js_string t readonly_prop\n\n method elapsedTime : number_t readonly_prop\n\n method pseudoElement : js_string t readonly_prop\nend\n\nand transitionEvent = object\n inherit event\n\n method propertyName : js_string t readonly_prop\n\n method elapsedTime : number_t readonly_prop\n\n method pseudoElement : js_string t readonly_prop\nend\n\nand mediaEvent = object\n inherit event\nend\n\nand messageEvent = object\n inherit event\n\n method data : Unsafe.any opt readonly_prop\n\n method source : Unsafe.any opt readonly_prop\nend\n\nand nodeSelector = object\n method querySelector : js_string t -> element t opt meth\n\n method querySelectorAll : js_string t -> element Dom.nodeList t meth\nend\n\nand tokenList = object\n method length : int readonly_prop\n\n method item : int -> js_string t optdef meth\n\n method contains : js_string t -> bool t meth\n\n method add : js_string t -> unit meth\n\n method remove : js_string t -> unit meth\n\n method toggle : js_string t -> bool t meth\n\n method stringifier : js_string t prop\nend\n\nand element = object\n inherit Dom.element\n\n inherit nodeSelector\n\n method id : js_string t prop\n\n method title : js_string t prop\n\n method lang : js_string t prop\n\n method dir : js_string t prop\n\n method className : js_string t prop\n\n method classList : tokenList t readonly_prop\n\n method closest : js_string t -> element t opt meth\n\n method style : cssStyleDeclaration t prop\n\n method innerHTML : js_string t prop\n\n method outerHTML : js_string t prop\n\n method textContent : js_string t opt prop\n\n method innerText : js_string t prop\n\n method clientLeft : int readonly_prop\n\n method clientTop : int readonly_prop\n\n method clientWidth : int readonly_prop\n\n method clientHeight : int readonly_prop\n\n method offsetLeft : int readonly_prop\n\n method offsetTop : int readonly_prop\n\n method offsetParent : element t opt readonly_prop\n\n method offsetWidth : int readonly_prop\n\n method offsetHeight : int readonly_prop\n\n method scrollLeft : number_t prop\n\n method scrollTop : number_t prop\n\n method scrollWidth : int readonly_prop\n\n method scrollHeight : int readonly_prop\n\n method getClientRects : clientRectList t meth\n\n method getBoundingClientRect : clientRect t meth\n\n method scrollIntoView : bool t -> unit meth\n\n method click : unit meth\n\n method focus : unit meth\n\n method blur : unit meth\n\n inherit eventTarget\nend\n\nand clientRect = object\n method top : number_t readonly_prop\n\n method right : number_t readonly_prop\n\n method bottom : number_t readonly_prop\n\n method left : number_t readonly_prop\n\n method width : number_t readonly_prop\n\n method height : number_t readonly_prop\nend\n\nand clientRectList = object\n method length : int readonly_prop\n\n method item : int -> clientRect t opt meth\nend\n\nlet no_handler : ('a, 'b) event_listener = Dom.no_handler\n\nlet handler = Dom.handler\n\nlet full_handler = Dom.full_handler\n\nlet invoke_handler = Dom.invoke_handler\n\nmodule Event = struct\n type 'a typ = 'a Dom.Event.typ\n\n let cancel = Dom.Event.make \"cancel\"\n\n let click = Dom.Event.make \"click\"\n\n let close = Dom.Event.make \"close\"\n\n let copy = Dom.Event.make \"copy\"\n\n let cut = Dom.Event.make \"cut\"\n\n let paste = Dom.Event.make \"paste\"\n\n let dblclick = Dom.Event.make \"dblclick\"\n\n let mousedown = Dom.Event.make \"mousedown\"\n\n let mouseup = Dom.Event.make \"mouseup\"\n\n let mouseover = Dom.Event.make \"mouseover\"\n\n let mousemove = Dom.Event.make \"mousemove\"\n\n let mouseout = Dom.Event.make \"mouseout\"\n\n let keypress = Dom.Event.make \"keypress\"\n\n let keydown = Dom.Event.make \"keydown\"\n\n let keyup = Dom.Event.make \"keyup\"\n\n let mousewheel = Dom.Event.make \"mousewheel\"\n\n let wheel = Dom.Event.make \"wheel\"\n\n let _DOMMouseScroll = Dom.Event.make \"DOMMouseScroll\"\n\n let touchstart = Dom.Event.make \"touchstart\"\n\n let touchmove = Dom.Event.make \"touchmove\"\n\n let touchend = Dom.Event.make \"touchend\"\n\n let touchcancel = Dom.Event.make \"touchcancel\"\n\n let dragstart = Dom.Event.make \"dragstart\"\n\n let dragend = Dom.Event.make \"dragend\"\n\n let dragenter = Dom.Event.make \"dragenter\"\n\n let dragover = Dom.Event.make \"dragover\"\n\n let dragleave = Dom.Event.make \"dragleave\"\n\n let drag = Dom.Event.make \"drag\"\n\n let drop = Dom.Event.make \"drop\"\n\n let hashchange = Dom.Event.make \"hashchange\"\n\n let change = Dom.Event.make \"change\"\n\n let input = Dom.Event.make \"input\"\n\n let timeupdate = Dom.Event.make \"timeupdate\"\n\n let submit = Dom.Event.make \"submit\"\n\n let scroll = Dom.Event.make \"scroll\"\n\n let focus = Dom.Event.make \"focus\"\n\n let blur = Dom.Event.make \"blur\"\n\n let load = Dom.Event.make \"load\"\n\n let unload = Dom.Event.make \"unload\"\n\n let beforeunload = Dom.Event.make \"beforeunload\"\n\n let resize = Dom.Event.make \"resize\"\n\n let orientationchange = Dom.Event.make \"orientationchange\"\n\n let popstate = Dom.Event.make \"popstate\"\n\n let error = Dom.Event.make \"error\"\n\n let abort = Dom.Event.make \"abort\"\n\n let select = Dom.Event.make \"select\"\n\n let online = Dom.Event.make \"online\"\n\n let offline = Dom.Event.make \"offline\"\n\n let checking = Dom.Event.make \"checking\"\n\n let noupdate = Dom.Event.make \"noupdate\"\n\n let downloading = Dom.Event.make \"downloading\"\n\n let progress = Dom.Event.make \"progress\"\n\n let updateready = Dom.Event.make \"updateready\"\n\n let cached = Dom.Event.make \"cached\"\n\n let obsolete = Dom.Event.make \"obsolete\"\n\n let domContentLoaded = Dom.Event.make \"DOMContentLoaded\"\n\n let animationstart = Dom.Event.make \"animationstart\"\n\n let animationend = Dom.Event.make \"animationend\"\n\n let animationiteration = Dom.Event.make \"animationiteration\"\n\n let animationcancel = Dom.Event.make \"animationcancel\"\n\n let transitionrun = Dom.Event.make \"transitionrun\"\n\n let transitionstart = Dom.Event.make \"transitionstart\"\n\n let transitionend = Dom.Event.make \"transitionend\"\n\n let transitioncancel = Dom.Event.make \"transitioncancel\"\n\n let canplay = Dom.Event.make \"canplay\"\n\n let canplaythrough = Dom.Event.make \"canplaythrough\"\n\n let durationchange = Dom.Event.make \"durationchange\"\n\n let emptied = Dom.Event.make \"emptied\"\n\n let ended = Dom.Event.make \"ended\"\n\n let gotpointercapture = Dom.Event.make \"gotpointercapture\"\n\n let loadeddata = Dom.Event.make \"loadeddata\"\n\n let loadedmetadata = Dom.Event.make \"loadedmetadata\"\n\n let loadstart = Dom.Event.make \"loadstart\"\n\n let lostpointercapture = Dom.Event.make \"lostpointercapture\"\n\n let message = Dom.Event.make \"message\"\n\n let pause = Dom.Event.make \"pause\"\n\n let play = Dom.Event.make \"play\"\n\n let playing = Dom.Event.make \"playing\"\n\n let pointerenter = Dom.Event.make \"pointerenter\"\n\n let pointercancel = Dom.Event.make \"pointercancel\"\n\n let pointerdown = Dom.Event.make \"pointerdown\"\n\n let pointerleave = Dom.Event.make \"pointerleave\"\n\n let pointermove = Dom.Event.make \"pointermove\"\n\n let pointerout = Dom.Event.make \"pointerout\"\n\n let pointerover = Dom.Event.make \"pointerover\"\n\n let pointerup = Dom.Event.make \"pointerup\"\n\n let ratechange = Dom.Event.make \"ratechange\"\n\n let seeked = Dom.Event.make \"seeked\"\n\n let seeking = Dom.Event.make \"seeking\"\n\n let stalled = Dom.Event.make \"stalled\"\n\n let suspend = Dom.Event.make \"suspend\"\n\n let volumechange = Dom.Event.make \"volumechange\"\n\n let waiting = Dom.Event.make \"waiting\"\n\n let toggle = Dom.Event.make \"toggle\"\n\n let make = Dom.Event.make\nend\n\ntype event_listener_id = Dom.event_listener_id\n\nlet addEventListener = Dom.addEventListener\n\nlet addEventListenerWithOptions = Dom.addEventListenerWithOptions\n\nlet removeEventListener = Dom.removeEventListener\n\nlet createCustomEvent = Dom.createCustomEvent\n\nclass type ['node] collection = object\n method length : int readonly_prop\n\n method item : int -> 'node t opt meth\n\n method namedItem : js_string t -> 'node t opt meth\nend\n\nclass type htmlElement = element\n\nclass type headElement = object\n inherit element\n\n method profile : js_string t prop\nend\n\nclass type linkElement = object\n inherit element\n\n method disabled : bool t prop\n\n method charset : js_string t prop\n\n method crossorigin : js_string t prop\n\n method href : js_string t prop\n\n method hreflang : js_string t prop\n\n method media : js_string t prop\n\n method rel : js_string t prop\n\n method rev : js_string t prop\n\n method target : js_string t prop\n\n method _type : js_string t prop\nend\n\nclass type titleElement = object\n inherit element\n\n method text : js_string t prop\nend\n\nclass type metaElement = object\n inherit element\n\n method content : js_string t prop\n\n method httpEquiv : js_string t prop\n\n method name : js_string t prop\n\n method scheme : js_string t prop\nend\n\nclass type baseElement = object\n inherit element\n\n method href : js_string t prop\n\n method target : js_string t prop\nend\n\nclass type styleElement = object\n inherit element\n\n method disabled : bool t prop\n\n method media : js_string t prop\n\n method _type : js_string t prop\nend\n\nclass type bodyElement = element\n\nclass type formElement = object\n inherit element\n\n method elements : element collection t readonly_prop\n\n method length : int readonly_prop\n\n method acceptCharset : js_string t prop\n\n method action : js_string t prop\n\n method enctype : js_string t prop\n\n method _method : js_string t prop\n\n method target : js_string t prop\n\n method submit : unit meth\n\n method reset : unit meth\n\n method onsubmit : ('self t, submitEvent t) event_listener writeonly_prop\nend\n\nclass type optGroupElement = object\n inherit element\n\n method disabled : bool t prop\n\n method label : js_string t prop\nend\n\nclass type optionElement = object\n inherit optGroupElement\n\n method form : formElement t opt readonly_prop\n\n method defaultSelected : bool t prop\n\n method text : js_string t readonly_prop\n\n method index : int readonly_prop\n\n method selected : bool t prop\n\n method value : js_string t prop\nend\n\nclass type selectElement = object ('self)\n inherit element\n\n method _type : js_string t readonly_prop\n\n method selectedIndex : int prop\n\n method value : js_string t prop\n\n method length : int prop\n\n method form : formElement t opt readonly_prop\n\n method options : optionElement collection t readonly_prop\n\n method disabled : bool t prop\n\n method multiple : bool t prop\n\n method name : js_string t readonly_prop\n\n method size : int prop\n\n method tabIndex : int prop\n\n method add : #optGroupElement t -> #optGroupElement t opt -> unit meth\n\n method remove : int -> unit meth\n\n method required : bool t writeonly_prop\n\n method onchange : ('self t, event t) event_listener prop\n\n method oninput : ('self t, event t) event_listener prop\nend\n\nclass type inputElement = object ('self)\n inherit element\n\n method defaultValue : js_string t prop\n\n method defaultChecked : js_string t prop\n\n method form : formElement t opt readonly_prop\n\n method accept : js_string t prop\n\n method accessKey : js_string t prop\n\n method align : js_string t prop\n (** @deprecated Use CSS instead. *)\n\n method alt : js_string t prop\n\n method checked : bool t prop\n\n method disabled : bool t prop\n\n method maxLength : int prop\n\n method name : js_string t readonly_prop\n\n method readOnly : bool t prop\n\n method required : bool t writeonly_prop\n\n method size : int prop\n\n method src : js_string t prop\n\n method tabIndex : int prop\n\n method _type : js_string t readonly_prop\n\n method useMap : js_string t prop\n\n method value : js_string t prop\n\n method select : unit meth\n\n method files : File.fileList t readonly_prop\n\n method placeholder : js_string t writeonly_prop\n\n method selectionDirection : js_string t prop\n\n method selectionStart : int prop\n\n method selectionEnd : int prop\n\n method onselect : ('self t, event t) event_listener prop\n\n method onchange : ('self t, event t) event_listener prop\n\n method oninput : ('self t, event t) event_listener prop\n\n method onblur : ('self t, focusEvent t) event_listener prop\n\n method onfocus : ('self t, focusEvent t) event_listener prop\nend\n\nclass type textAreaElement = object ('self)\n inherit element\n\n method defaultValue : js_string t prop\n\n method form : formElement t opt readonly_prop\n\n method accessKey : js_string t prop\n\n method cols : int prop\n\n method disabled : bool t prop\n\n method name : js_string t readonly_prop\n\n method readOnly : bool t prop\n\n method rows : int prop\n\n method selectionDirection : js_string t prop\n\n method selectionEnd : int prop\n\n method selectionStart : int prop\n\n method tabIndex : int prop\n\n method _type : js_string t readonly_prop\n\n method value : js_string t prop\n\n method select : unit meth\n\n method required : bool t writeonly_prop\n\n method placeholder : js_string t writeonly_prop\n\n method onselect : ('self t, event t) event_listener prop\n\n method onchange : ('self t, event t) event_listener prop\n\n method oninput : ('self t, event t) event_listener prop\n\n method onblur : ('self t, focusEvent t) event_listener prop\n\n method onfocus : ('self t, focusEvent t) event_listener prop\nend\n\nclass type buttonElement = object\n inherit element\n\n method form : formElement t opt readonly_prop\n\n method accessKey : js_string t prop\n\n method disabled : bool t prop\n\n method name : js_string t readonly_prop\n\n method tabIndex : int prop\n\n method _type : js_string t readonly_prop\n\n method value : js_string t prop\nend\n\nclass type labelElement = object\n inherit element\n\n method form : formElement t opt readonly_prop\n\n method accessKey : js_string t prop\n\n method htmlFor : js_string t prop\nend\n\nclass type fieldSetElement = object\n inherit element\n\n method form : formElement t opt readonly_prop\nend\n\nclass type legendElement = object\n inherit element\n\n method form : formElement t opt readonly_prop\n\n method accessKey : js_string t prop\nend\n\nclass type uListElement = element\n\nclass type oListElement = element\n\nclass type dListElement = element\n\nclass type liElement = element\n\nclass type dialogElement = object\n inherit element\n\n method close : unit meth\n\n method close_returnValue : js_string t -> unit meth\n\n method open_ : bool t prop\n\n method returnValue : js_string t prop\n\n method show : unit meth\n\n method showModal : unit meth\n\n method oncancel : ('self t, event t) event_listener prop\n\n method onclose : ('self t, event t) event_listener prop\nend\n\nclass type divElement = element\n\nclass type paragraphElement = element\n\nclass type headingElement = element\n\nclass type quoteElement = object\n inherit element\n\n method cite : js_string t prop\nend\n\nclass type preElement = element\n\nclass type brElement = element\n\nclass type hrElement = element\n\nclass type modElement = object\n inherit element\n\n method cite : js_string t prop\n\n method dateTime : js_string t prop\nend\n\nclass type anchorElement = object\n inherit element\n\n method accessKey : js_string t prop\n\n method charset : js_string t prop\n\n method coords : js_string t prop\n\n method download : js_string t prop\n\n method href : js_string t prop\n\n method hreflang : js_string t prop\n\n method name : js_string t prop\n\n method rel : js_string t prop\n\n method rev : js_string t prop\n\n method shape : js_string t prop\n\n method tabIndex : int prop\n\n method target : js_string t prop\n\n method _type : js_string t prop\nend\n\nclass type detailsElement = object ('self)\n inherit element\n\n method open_ : bool t prop\n\n method name : js_string t prop\n\n method ontoggle : ('self t, toggleEvent t) event_listener prop\nend\n\nclass type imageElement = object ('self)\n inherit element\n\n method alt : js_string t prop\n\n method src : js_string t prop\n\n method useMap : js_string t prop\n\n method isMap : bool t prop\n\n method width : int prop\n\n method height : int prop\n\n method naturalWidth : int readonly_prop\n\n method naturalHeight : int readonly_prop\n\n method complete : bool t prop\n\n method onload : ('self t, event t) event_listener prop\n\n method onerror : ('self t, event t) event_listener prop\n\n method onabort : ('self t, event t) event_listener prop\nend\n\nclass type objectElement = object\n inherit element\n\n method form : formElement t opt readonly_prop\n\n method code : js_string t prop\n\n method archive : js_string t prop\n\n method codeBase : js_string t prop\n\n method codeType : js_string t prop\n\n method data : js_string t prop\n\n method declare : bool t prop\n\n method height : js_string t prop\n\n method name : js_string t prop\n\n method standby : js_string t prop\n\n method tabIndex : int prop\n\n method _type : js_string t prop\n\n method useMap : js_string t prop\n\n method width : js_string t prop\n\n method document : Dom.element Dom.document t opt readonly_prop\nend\n\nclass type paramElement = object\n inherit element\n\n method name : js_string t prop\n\n method _type : js_string t prop\n\n method value : js_string t prop\n\n method valueType : js_string t prop\nend\n\nclass type areaElement = object\n inherit element\n\n method accessKey : js_string t prop\n\n method alt : js_string t prop\n\n method coords : js_string t prop\n\n method href : js_string t prop\n\n method noHref : bool t prop\n\n method shape : js_string t prop\n\n method tabIndex : int prop\n\n method target : js_string t prop\nend\n\nclass type mapElement = object\n inherit element\n\n method areas : areaElement collection t readonly_prop\n\n method name : js_string t prop\nend\n\nclass type scriptElement = object\n inherit element\n\n method text : js_string t prop\n\n method charset : js_string t prop\n\n method defer : bool t prop\n\n method src : js_string t prop\n\n method _type : js_string t prop\n\n method async : bool t prop\nend\n\nclass type embedElement = object\n inherit element\n\n method src : js_string t prop\n\n method height : js_string t prop\n\n method width : js_string t prop\n\n method _type : js_string t prop\nend\n\nclass type tableCellElement = object\n inherit element\n\n method cellIndex : int readonly_prop\n\n method abbr : js_string t prop\n\n method align : js_string t prop\n\n method axis : js_string t prop\n\n method ch : js_string t prop\n\n method chOff : js_string t prop\n\n method colSpan : int prop\n\n method headers : js_string t prop\n\n method rowSpan : int prop\n\n method scope : js_string t prop\n\n method vAlign : js_string t prop\nend\n\nclass type tableRowElement = object\n inherit element\n\n method rowIndex : int readonly_prop\n\n method sectionRowIndex : int readonly_prop\n\n method cells : tableCellElement collection t readonly_prop\n\n method align : js_string t prop\n\n method ch : js_string t prop\n\n method chOff : js_string t prop\n\n method vAlign : js_string t prop\n\n method insertCell : int -> tableCellElement t meth\n\n method deleteCell : int -> unit meth\nend\n\nclass type tableColElement = object\n inherit element\n\n method align : js_string t prop\n\n method ch : js_string t prop\n\n method chOff : js_string t prop\n\n method span : int prop\n\n method vAlign : js_string t prop\n\n method width : js_string t prop\nend\n\nclass type tableSectionElement = object\n inherit element\n\n method align : js_string t prop\n\n method ch : js_string t prop\n\n method chOff : js_string t prop\n\n method vAlign : js_string t prop\n\n method rows : tableRowElement collection t readonly_prop\n\n method insertRow : int -> tableRowElement t meth\n\n method deleteRow : int -> unit meth\nend\n\nclass type tableCaptionElement = element\n\nclass type tableElement = object\n inherit element\n\n method caption : tableCaptionElement t prop\n\n method tHead : tableSectionElement t prop\n\n method tFoot : tableSectionElement t prop\n\n method rows : tableRowElement collection t readonly_prop\n\n method tBodies : tableSectionElement collection t readonly_prop\n\n method align : js_string t prop\n\n method border : js_string t prop\n\n method cellPadding : js_string t prop\n\n method cellSpacing : js_string t prop\n\n method frame : js_string t prop\n\n method rules : js_string t prop\n\n method summary : js_string t prop\n\n method width : js_string t prop\n\n method createTHead : tableSectionElement t meth\n\n method deleteTHead : unit meth\n\n method createTFoot : tableSectionElement t meth\n\n method deleteTFoot : unit meth\n\n method createCaption : tableCaptionElement t meth\n\n method deleteCaption : unit meth\n\n method insertRow : int -> tableRowElement t meth\n\n method deleteRow : int -> unit meth\nend\n\nclass type timeRanges = object\n method length : int readonly_prop\n\n method start : int -> number_t meth\n\n method end_ : int -> number_t meth\nend\n\ntype networkState =\n | NETWORK_EMPTY\n | NETWORK_IDLE\n | NETWORK_LOADING\n | NETWORK_NO_SOURCE\n\ntype readyState =\n | HAVE_NOTHING\n | HAVE_METADATA\n | HAVE_CURRENT_DATA\n | HAVE_FUTURE_DATA\n | HAVE_ENOUGH_DATA\n\n(* http://www.w3schools.com/tags/ref_av_dom.asp *)\n(* only features supported by all browser. (IE9+) *)\nclass type mediaElement = object\n inherit element\n\n method canPlayType : js_string t -> js_string t meth\n\n method load : unit meth\n\n method play : unit meth\n\n method pause : unit meth\n\n method autoplay : bool t prop\n\n method buffered : timeRanges t readonly_prop\n\n method controls : bool t prop\n\n method currentSrc : js_string t readonly_prop\n\n method currentTime : number_t prop\n\n method duration : number_t readonly_prop\n\n method ended : bool t readonly_prop\n\n method loop : bool t prop\n\n method mediagroup : js_string t prop\n\n method muted : bool t prop\n\n method networkState_int : int readonly_prop\n\n method networkState : networkState readonly_prop\n\n method paused : bool t readonly_prop\n\n method playbackRate : number_t prop\n\n method played : timeRanges t readonly_prop\n\n method preload : js_string t prop\n\n method readyState_int : int readonly_prop\n\n method readyState : readyState readonly_prop\n\n method seekable : timeRanges t readonly_prop\n\n method seeking : bool t readonly_prop\n\n method src : js_string t prop\n\n method volume : number_t prop\n\n method oncanplay : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method oncanplaythrough : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method ondurationchange : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onemptied : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onended : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onloadeddata : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onloadedmetadata : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onloadstart : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onpause : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onplay : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onplaying : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onratechange : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onseeked : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onseeking : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onstalled : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onsuspend : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onvolumechange : ('self t, mediaEvent t) event_listener writeonly_prop\n\n method onwaiting : ('self t, mediaEvent t) event_listener writeonly_prop\nend\n\nclass type audioElement = object\n inherit mediaElement\nend\n\nclass type videoElement = object\n inherit mediaElement\nend\n\ntype context = js_string t\n\nlet _2d_ = Js.string \"2d\"\n\ntype canvasPattern\n\nclass type canvasElement = object\n inherit element\n\n method width : int prop\n\n method height : int prop\n\n method toDataURL : js_string t meth\n\n method toDataURL_type : js_string t -> js_string t meth\n\n method toDataURL_type_compression : js_string t -> number_t -> js_string t meth\n\n method getContext : js_string t -> canvasRenderingContext2D t meth\nend\n\nand canvasRenderingContext2D = object\n method canvas : canvasElement t readonly_prop\n\n method save : unit meth\n\n method restore : unit meth\n\n method scale : number_t -> number_t -> unit meth\n\n method rotate : number_t -> unit meth\n\n method translate : number_t -> number_t -> unit meth\n\n method transform :\n number_t -> number_t -> number_t -> number_t -> number_t -> number_t -> unit meth\n\n method setTransform :\n number_t -> number_t -> number_t -> number_t -> number_t -> number_t -> unit meth\n\n method globalAlpha : number_t prop\n\n method globalCompositeOperation : js_string t prop\n\n method strokeStyle : js_string t writeonly_prop\n\n method strokeStyle_gradient : canvasGradient t writeonly_prop\n\n method strokeStyle_pattern : canvasPattern t writeonly_prop\n\n method fillStyle : js_string t writeonly_prop\n\n method fillStyle_gradient : canvasGradient t writeonly_prop\n\n method fillStyle_pattern : canvasPattern t writeonly_prop\n\n method createLinearGradient :\n number_t -> number_t -> number_t -> number_t -> canvasGradient t meth\n\n method createRadialGradient :\n number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> canvasGradient t meth\n\n method createPattern : imageElement t -> js_string t -> canvasPattern t meth\n\n method createPattern_fromCanvas : canvasElement t -> js_string t -> canvasPattern t meth\n\n method createPattern_fromVideo : videoElement t -> js_string t -> canvasPattern t meth\n\n method lineWidth : number_t prop\n\n method lineCap : js_string t prop\n\n method lineJoin : js_string t prop\n\n method miterLimit : number_t prop\n\n method shadowOffsetX : number_t prop\n\n method shadowOffsetY : number_t prop\n\n method shadowBlur : number_t prop\n\n method shadowColor : js_string t prop\n\n method clearRect : number_t -> number_t -> number_t -> number_t -> unit meth\n\n method fillRect : number_t -> number_t -> number_t -> number_t -> unit meth\n\n method strokeRect : number_t -> number_t -> number_t -> number_t -> unit meth\n\n method beginPath : unit meth\n\n method closePath : unit meth\n\n method moveTo : number_t -> number_t -> unit meth\n\n method lineTo : number_t -> number_t -> unit meth\n\n method quadraticCurveTo : number_t -> number_t -> number_t -> number_t -> unit meth\n\n method bezierCurveTo :\n number_t -> number_t -> number_t -> number_t -> number_t -> number_t -> unit meth\n\n method arcTo : number_t -> number_t -> number_t -> number_t -> number_t -> unit meth\n\n method rect : number_t -> number_t -> number_t -> number_t -> unit meth\n\n method arc :\n number_t -> number_t -> number_t -> number_t -> number_t -> bool t -> unit meth\n\n method ellipse :\n number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> bool t\n -> unit meth\n\n method fill : unit meth\n\n method stroke : unit meth\n\n method clip : unit meth\n\n method isPointInPath : number_t -> number_t -> bool t meth\n\n method drawFocusRing : #element t -> number_t -> number_t -> bool t -> bool t meth\n\n method font : js_string t prop\n\n method textAlign : js_string t prop\n\n method textBaseline : js_string t prop\n\n method fillText : js_string t -> number_t -> number_t -> unit meth\n\n method fillText_withWidth : js_string t -> number_t -> number_t -> number_t -> unit meth\n\n method strokeText : js_string t -> number_t -> number_t -> unit meth\n\n method strokeText_withWidth :\n js_string t -> number_t -> number_t -> number_t -> unit meth\n\n method measureText : js_string t -> textMetrics t meth\n\n method drawImage : imageElement t -> number_t -> number_t -> unit meth\n\n method drawImage_withSize :\n imageElement t -> number_t -> number_t -> number_t -> number_t -> unit meth\n\n method drawImage_full :\n imageElement t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> unit meth\n\n method drawImage_fromCanvas : canvasElement t -> number_t -> number_t -> unit meth\n\n method drawImage_fromCanvasWithSize :\n canvasElement t -> number_t -> number_t -> number_t -> number_t -> unit meth\n\n method drawImage_fullFromCanvas :\n canvasElement t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> unit meth\n\n method drawImage_fromVideoWithVideo :\n videoElement t -> number_t -> number_t -> unit meth\n\n method drawImage_fromVideoWithSize :\n videoElement t -> number_t -> number_t -> number_t -> number_t -> unit meth\n\n method drawImage_fullFromVideo :\n videoElement t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> unit meth\n\n method createImageData : int -> int -> imageData t meth\n\n method getImageData : number_t -> number_t -> number_t -> number_t -> imageData t meth\n\n method putImageData : imageData t -> number_t -> number_t -> unit meth\nend\n\nand canvasGradient = object\n method addColorStop : number_t -> js_string t -> unit meth\nend\n\nand textMetrics = object\n method actualBoundingBoxAscent : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxAscent *)\n\n method actualBoundingBoxDescent : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxDescent *)\n\n method actualBoundingBoxLeft : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxLeft *)\n\n method actualBoundingBoxRight : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/actualBoundingBoxRight *)\n\n method alphabeticBaseline : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/alphabeticBaseline *)\n\n method fontBoundingBoxAscent : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/fontBoundingBoxAscent *)\n\n method fontBoundingBoxDescent : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/fontBoundingBoxDescent *)\n\n method hangingBaseline : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/hangingBaseline *)\n\n method ideographicBaseline : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/ideographicBaseline *)\n\n method width : number_t readonly_prop\n (** https://developer.mozilla.org/docs/Web/API/TextMetrics/width *)\nend\n\nand imageData = object\n method width : int readonly_prop\n\n method height : int readonly_prop\n\n method data : canvasPixelArray t readonly_prop\nend\n\nand canvasPixelArray = object\n method length : int readonly_prop\nend\n\nexternal pixel_get : canvasPixelArray t -> int -> int = \"caml_js_get\"\n\nexternal pixel_set : canvasPixelArray t -> int -> int -> unit = \"caml_js_set\"\n\nclass type range = object\n method collapsed : bool t readonly_prop\n\n method startOffset : int readonly_prop\n\n method endOffset : int readonly_prop\n\n method startContainer : Dom.node t readonly_prop\n\n method endContainer : Dom.node t readonly_prop\n\n method setStart : Dom.node t -> int -> unit meth\n\n method setEnd : Dom.node t -> int -> unit meth\n\n method setStartBefore : Dom.node t -> unit meth\n\n method setEndBefore : Dom.node t -> unit meth\n\n method setStartAfter : Dom.node t -> unit meth\n\n method setEndAfter : Dom.node t -> unit meth\n\n method selectNode : Dom.node t -> unit meth\n\n method selectNodeContents : Dom.node t -> unit meth\n\n method collapse : bool t -> unit meth\n\n method cloneContents : Dom.documentFragment t meth\n\n method extractContents : Dom.documentFragment t meth\n\n method deleteContents : unit meth\n\n method insertNode : Dom.node t -> unit meth\n\n method surroundContents : Dom.node t -> unit meth\n\n method cloneRange : range t meth\n\n method toString : js_string t meth\nend\n\n(** Information on current selection *)\nclass type selection = object\n method anchorNode : Dom.node t readonly_prop\n\n method anchorOffset : int readonly_prop\n\n method focusNode : Dom.node t readonly_prop\n\n method focusOffset : int readonly_prop\n\n method isCollapsed : bool t readonly_prop\n\n method rangeCount : int readonly_prop\n\n method getRangeAt : int -> range t meth\n\n method collapse : bool t -> unit meth\n\n method extend : Dom.node t -> int -> unit meth\n\n method modify : js_string t -> js_string t -> js_string t -> unit meth\n\n method collapseToStart : unit meth\n\n method collapseToEnd : unit meth\n\n method selectAllChildren : Dom.node t -> unit meth\n\n method addRange : range t -> unit meth\n\n method removeRange : range t -> unit meth\n\n method removeAllRanges : unit meth\n\n method deleteFromDocument : unit meth\n\n method containsNode : Dom.node t -> bool t -> bool t meth\n\n method toString : js_string t meth\nend\n\nclass type document = object\n inherit [element] Dom.document\n\n inherit nodeSelector\n\n inherit eventTarget\n\n method title : js_string t prop\n\n method referrer : js_string t readonly_prop\n\n method domain : js_string t prop\n\n method _URL : js_string t readonly_prop\n\n method head : headElement t prop\n\n method body : bodyElement t prop\n\n method documentElement : htmlElement t readonly_prop\n\n method images : imageElement collection t readonly_prop\n\n method applets : element collection t readonly_prop\n\n method links : element collection t readonly_prop\n\n method forms : formElement collection t readonly_prop\n\n method anchors : element collection t readonly_prop\n\n method cookie : js_string t prop\n\n method designMode : js_string t prop\n\n method open_ : unit meth\n\n method close : unit meth\n\n method write : js_string t -> unit meth\n\n method execCommand : js_string t -> bool t -> js_string t opt -> unit meth\n\n method createRange : range t meth\n\n method readyState : js_string t readonly_prop\n\n method getElementsByClassName : js_string t -> element Dom.nodeList t meth\n\n method getElementsByName : js_string t -> element Dom.nodeList t meth\n\n method activeElement : element t opt readonly_prop\n\n method hidden : bool t readonly_prop\n\n method onfullscreenchange : (document t, event t) event_listener writeonly_prop\n\n method onwebkitfullscreenchange : (document t, event t) event_listener writeonly_prop\n\n inherit eventTarget\nend\n\ntype interval_id\n\ntype timeout_id\n\ntype animation_frame_request_id\n\nclass type location = object\n method href : js_string t prop\n\n method protocol : js_string t prop\n\n method host : js_string t prop\n\n method hostname : js_string t prop\n\n method origin : js_string t readonly_prop\n\n method port : js_string t prop\n\n method pathname : js_string t prop\n\n method search : js_string t prop\n\n method hash : js_string t prop\n\n method assign : js_string t -> unit meth\n\n method replace : js_string t -> unit meth\n\n method reload : unit meth\nend\n\nlet location_origin (loc : location t) = loc##.origin\n\nclass type history = object\n method length : int readonly_prop\n\n method state : Js.Unsafe.any readonly_prop\n\n method go : int opt -> unit meth\n\n method back : unit meth\n\n method forward : unit meth\n\n method pushState : 'a. 'a -> js_string t -> js_string t opt -> unit meth\n\n method replaceState : 'a. 'a -> js_string t -> js_string t opt -> unit meth\nend\n\nclass type undoManager = object end\n\nclass type navigator = object\n method appCodeName : js_string t readonly_prop\n\n method appName : js_string t readonly_prop\n\n method appVersion : js_string t readonly_prop\n\n method cookieEnabled : bool t readonly_prop\n\n method onLine : bool t readonly_prop\n\n method platform : js_string t readonly_prop\n\n method vendor : js_string t readonly_prop\n\n method userAgent : js_string t readonly_prop\n\n method language : js_string t opt readonly_prop\n\n method maxTouchPoints : int readonly_prop\n\n method userLanguage : js_string t optdef readonly_prop\nend\n\nclass type screen = object\n method width : int readonly_prop\n\n method height : int readonly_prop\n\n method availWidth : int readonly_prop\n\n method availHeight : int readonly_prop\nend\n\nclass type applicationCache = object\n method status : int readonly_prop\n\n method update : unit meth\n\n method abort : unit meth\n\n method swapCache : unit meth\n\n method onchecking : (applicationCache t, event t) event_listener prop\n\n method onerror : (applicationCache t, event t) event_listener prop\n\n method onnoupdate : (applicationCache t, event t) event_listener prop\n\n method ondownloading : (applicationCache t, event t) event_listener prop\n\n method onprogress : (applicationCache t, event t) event_listener prop\n\n method onupdateready : (applicationCache t, event t) event_listener prop\n\n method oncached : (applicationCache t, event t) event_listener prop\n\n method onobsolete : (applicationCache t, event t) event_listener prop\n\n inherit eventTarget\nend\n\nclass type _URL = object\n method createObjectURL : #File.blob t -> js_string t meth\n\n method revokeObjectURL : js_string t -> unit meth\nend\n\nclass type mediaQueryList = object\n method media : js_string t prop\n\n method matches : bool t readonly_prop\n\n method onchange : (mediaQueryList t, mediaQueryListEvent t) event_listener prop\n\n inherit eventTarget\nend\n\nclass type window = object\n inherit eventTarget\n\n method document : document t readonly_prop\n\n method applicationCache : applicationCache t readonly_prop\n\n method name : js_string t prop\n\n method location : location t readonly_prop\n\n method history : history t readonly_prop\n\n method undoManager : undoManager t readonly_prop\n\n method navigator : navigator t readonly_prop\n\n method getSelection : selection t meth\n\n method close : unit meth\n\n method closed : bool t readonly_prop\n\n method stop : unit meth\n\n method focus : unit meth\n\n method blur : unit meth\n\n method scrollX : number_t readonly_prop\n\n method scrollY : number_t readonly_prop\n\n method scroll : number_t -> number_t -> unit meth\n\n method scrollTo : number_t -> number_t -> unit meth\n\n method scrollBy : number_t -> number_t -> unit meth\n\n method sessionStorage : storage t optdef readonly_prop\n\n method localStorage : storage t optdef readonly_prop\n\n method top : window t readonly_prop\n\n method parent : window t readonly_prop\n\n method frameElement : element t opt readonly_prop\n\n method open_ : js_string t -> js_string t -> js_string t opt -> window t opt meth\n\n method alert : js_string t -> unit meth\n\n method confirm : js_string t -> bool t meth\n\n method prompt : js_string t -> js_string t -> js_string t opt meth\n\n method print : unit meth\n\n method setInterval : (unit -> unit) Js.callback -> number_t -> interval_id meth\n\n method clearInterval : interval_id -> unit meth\n\n method setTimeout : (unit -> unit) Js.callback -> number_t -> timeout_id meth\n\n method clearTimeout : timeout_id -> unit meth\n\n method requestAnimationFrame :\n (number_t -> unit) Js.callback -> animation_frame_request_id meth\n\n method cancelAnimationFrame : animation_frame_request_id -> unit meth\n\n method screen : screen t readonly_prop\n\n method innerWidth : int readonly_prop\n\n method innerHeight : int readonly_prop\n\n method outerWidth : int readonly_prop\n\n method outerHeight : int readonly_prop\n\n method getComputedStyle : #element t -> cssStyleDeclaration t meth\n\n method getComputedStyle_pseudoElt :\n #element t -> js_string t -> cssStyleDeclaration t meth\n\n method atob : js_string t -> js_string t meth\n\n method btoa : js_string t -> js_string t meth\n\n method onload : (window t, event t) event_listener prop\n\n method onunload : (window t, event t) event_listener prop\n\n method onbeforeunload : (window t, event t) event_listener prop\n\n method onblur : (window t, focusEvent t) event_listener prop\n\n method onfocus : (window t, focusEvent t) event_listener prop\n\n method onresize : (window t, event t) event_listener prop\n\n method onorientationchange : (window t, event t) event_listener prop\n\n method onpopstate : (window t, popStateEvent t) event_listener prop\n\n method onhashchange : (window t, hashChangeEvent t) event_listener prop\n\n method ononline : (window t, event t) event_listener writeonly_prop\n\n method onoffline : (window t, event t) event_listener writeonly_prop\n\n method _URL : _URL t readonly_prop\n\n method devicePixelRatio : number_t readonly_prop\n\n method matchMedia : js_string t -> mediaQueryList t meth\nend\n\nlet window : window t = Js.Unsafe.global\n\n(* The toplevel object *)\n\nlet document = window##.document\n\nlet getElementById id =\n Js.Opt.case\n (document##getElementById (Js.string id))\n (fun () -> raise Not_found)\n (fun pnode -> pnode)\n\nlet getElementById_exn id =\n Js.Opt.case\n (document##getElementById (Js.string id))\n (fun () -> failwith (Printf.sprintf \"getElementById_exn: %S not found\" id))\n (fun pnode -> pnode)\n\nlet getElementById_opt id = Js.Opt.to_option (document##getElementById (Js.string id))\n\nlet getElementById_coerce id coerce =\n Js.Opt.case\n (document##getElementById (Js.string id))\n (fun () -> None)\n (fun e -> Js.Opt.to_option (coerce e))\n\n(****)\n\nclass type frameSetElement = object\n inherit element\n\n method cols : js_string t prop\n\n method rows : js_string t prop\nend\n\nclass type frameElement = object\n inherit element\n\n method frameBorder : js_string t prop\n\n method longDesc : js_string t prop\n\n method marginHeight : js_string t prop\n\n method marginWidth : js_string t prop\n\n method name : js_string t prop\n\n method noResize : bool t prop\n\n method scrolling : js_string t prop\n\n method src : js_string t prop\n\n method contentDocument : document t opt readonly_prop\nend\n\nclass type iFrameElement = object\n inherit element\n\n method frameBorder : js_string t prop\n\n method height : js_string t prop\n\n method width : js_string t prop\n\n method longDesc : js_string t prop\n\n method marginHeight : js_string t prop\n\n method marginWidth : js_string t prop\n\n method name : js_string t prop\n\n method scrolling : js_string t prop\n\n method src : js_string t prop\n\n method contentDocument : document t opt readonly_prop\n\n method contentWindow : window t readonly_prop\nend\n\n(****)\n\n(*XXX Should provide creation functions a la lablgtk... *)\n\nlet opt_iter x f =\n match x with\n | None -> ()\n | Some v -> f v\n\nlet createElement (doc : document t) name = doc##createElement (Js.string name)\n\nlet unsafeCreateElement doc name = Js.Unsafe.coerce (createElement doc name)\n\nlet createElementSyntax = ref `Unknown\n\nlet rec unsafeCreateElementEx ?_type ?name doc elt =\n if Poly.(_type = None) && Poly.(name = None)\n then Js.Unsafe.coerce (createElement doc elt)\n else\n match !createElementSyntax with\n | `Standard ->\n let res = Js.Unsafe.coerce (createElement doc elt) in\n opt_iter _type (fun t -> res##._type := t);\n opt_iter name (fun n -> res##.name := n);\n res\n | `Extended ->\n let a = new%js Js.array_empty in\n ignore (a##push_2 (Js.string \"<\") (Js.string elt));\n opt_iter _type (fun t ->\n ignore (a##push_3 (Js.string \" type=\\\"\") (html_escape t) (Js.string \"\\\"\")));\n opt_iter name (fun n ->\n ignore (a##push_3 (Js.string \" name=\\\"\") (html_escape n) (Js.string \"\\\"\")));\n ignore (a##push (Js.string \">\"));\n Js.Unsafe.coerce (doc##createElement (a##join (Js.string \"\")))\n | `Unknown ->\n createElementSyntax :=\n if\n try\n let el : inputElement Js.t =\n Js.Unsafe.coerce\n (document##createElement (Js.string \"<input name=\\\"x\\\">\"))\n in\n Js.equals el##.tagName##toLowerCase (Js.string \"input\")\n && Js.equals el##.name (Js.string \"x\")\n with _ -> false\n then `Extended\n else `Standard;\n unsafeCreateElementEx ?_type ?name doc elt\n\nlet createHtml doc : htmlElement t = unsafeCreateElement doc \"html\"\n\nlet createHead doc : headElement t = unsafeCreateElement doc \"head\"\n\nlet createLink doc : linkElement t = unsafeCreateElement doc \"link\"\n\nlet createTitle doc : titleElement t = unsafeCreateElement doc \"title\"\n\nlet createMeta doc : metaElement t = unsafeCreateElement doc \"meta\"\n\nlet createBase doc : baseElement t = unsafeCreateElement doc \"base\"\n\nlet createStyle doc : styleElement t = unsafeCreateElement doc \"style\"\n\nlet createBody doc : bodyElement t = unsafeCreateElement doc \"body\"\n\nlet createForm doc : formElement t = unsafeCreateElement doc \"form\"\n\nlet createOptgroup doc : optGroupElement t = unsafeCreateElement doc \"optgroup\"\n\nlet createOption doc : optionElement t = unsafeCreateElement doc \"option\"\n\nlet createSelect ?_type ?name doc : selectElement t =\n unsafeCreateElementEx ?_type ?name doc \"select\"\n\nlet createInput ?_type ?name doc : inputElement t =\n unsafeCreateElementEx ?_type ?name doc \"input\"\n\nlet createTextarea ?_type ?name doc : textAreaElement t =\n unsafeCreateElementEx ?_type ?name doc \"textarea\"\n\nlet createButton ?_type ?name doc : buttonElement t =\n unsafeCreateElementEx ?_type ?name doc \"button\"\n\nlet createLabel doc : labelElement t = unsafeCreateElement doc \"label\"\n\nlet createFieldset doc : fieldSetElement t = unsafeCreateElement doc \"fieldset\"\n\nlet createLegend doc : legendElement t = unsafeCreateElement doc \"legend\"\n\nlet createUl doc : uListElement t = unsafeCreateElement doc \"ul\"\n\nlet createOl doc : oListElement t = unsafeCreateElement doc \"ol\"\n\nlet createDl doc : dListElement t = unsafeCreateElement doc \"dl\"\n\nlet createLi doc : liElement t = unsafeCreateElement doc \"li\"\n\nlet createDialog doc : dialogElement t = unsafeCreateElement doc \"dialog\"\n\nlet createDiv doc : divElement t = unsafeCreateElement doc \"div\"\n\nlet createEmbed doc : embedElement t = unsafeCreateElement doc \"embed\"\n\nlet createP doc : paragraphElement t = unsafeCreateElement doc \"p\"\n\nlet createH1 doc : headingElement t = unsafeCreateElement doc \"h1\"\n\nlet createH2 doc : headingElement t = unsafeCreateElement doc \"h2\"\n\nlet createH3 doc : headingElement t = unsafeCreateElement doc \"h3\"\n\nlet createH4 doc : headingElement t = unsafeCreateElement doc \"h4\"\n\nlet createH5 doc : headingElement t = unsafeCreateElement doc \"h5\"\n\nlet createH6 doc : headingElement t = unsafeCreateElement doc \"h6\"\n\nlet createQ doc : quoteElement t = unsafeCreateElement doc \"q\"\n\nlet createBlockquote doc : quoteElement t = unsafeCreateElement doc \"blockquote\"\n\nlet createPre doc : preElement t = unsafeCreateElement doc \"pre\"\n\nlet createBr doc : brElement t = unsafeCreateElement doc \"br\"\n\nlet createHr doc : hrElement t = unsafeCreateElement doc \"hr\"\n\nlet createIns doc : modElement t = unsafeCreateElement doc \"ins\"\n\nlet createDel doc : modElement t = unsafeCreateElement doc \"del\"\n\nlet createA doc : anchorElement t = unsafeCreateElement doc \"a\"\n\nlet createImg doc : imageElement t = unsafeCreateElement doc \"img\"\n\nlet createObject doc : objectElement t = unsafeCreateElement doc \"object\"\n\nlet createParam doc : paramElement t = unsafeCreateElement doc \"param\"\n\nlet createMap doc : mapElement t = unsafeCreateElement doc \"map\"\n\nlet createArea doc : areaElement t = unsafeCreateElement doc \"area\"\n\nlet createScript doc : scriptElement t = unsafeCreateElement doc \"script\"\n\nlet createTable doc : tableElement t = unsafeCreateElement doc \"table\"\n\nlet createCaption doc : tableCaptionElement t = unsafeCreateElement doc \"caption\"\n\nlet createCol doc : tableColElement t = unsafeCreateElement doc \"col\"\n\nlet createColgroup doc : tableColElement t = unsafeCreateElement doc \"colgroup\"\n\nlet createThead doc : tableSectionElement t = unsafeCreateElement doc \"thead\"\n\nlet createTfoot doc : tableSectionElement t = unsafeCreateElement doc \"tfoot\"\n\nlet createTbody doc : tableSectionElement t = unsafeCreateElement doc \"tbody\"\n\nlet createTr doc : tableRowElement t = unsafeCreateElement doc \"tr\"\n\nlet createTh doc : tableCellElement t = unsafeCreateElement doc \"th\"\n\nlet createTd doc : tableCellElement t = unsafeCreateElement doc \"td\"\n\nlet createSub doc = createElement doc \"sub\"\n\nlet createSup doc = createElement doc \"sup\"\n\nlet createSpan doc = createElement doc \"span\"\n\nlet createTt doc = createElement doc \"tt\"\n\nlet createI doc = createElement doc \"i\"\n\nlet createB doc = createElement doc \"b\"\n\nlet createBig doc = createElement doc \"big\"\n\nlet createSmall doc = createElement doc \"small\"\n\nlet createEm doc = createElement doc \"em\"\n\nlet createStrong doc = createElement doc \"strong\"\n\nlet createCite doc = createElement doc \"cite\"\n\nlet createDfn doc = createElement doc \"dfn\"\n\nlet createCode doc = createElement doc \"code\"\n\nlet createSamp doc = createElement doc \"samp\"\n\nlet createKbd doc = createElement doc \"kbd\"\n\nlet createVar doc = createElement doc \"var\"\n\nlet createAbbr doc = createElement doc \"abbr\"\n\nlet createDd doc = createElement doc \"dd\"\n\nlet createDt doc = createElement doc \"dt\"\n\nlet createNoscript doc = createElement doc \"noscript\"\n\nlet createAddress doc = createElement doc \"address\"\n\nlet createFrameset doc : frameSetElement t = unsafeCreateElement doc \"frameset\"\n\nlet createFrame doc : frameElement t = unsafeCreateElement doc \"frame\"\n\nlet createIframe doc : iFrameElement t = unsafeCreateElement doc \"iframe\"\n\nlet createAudio doc : audioElement t = unsafeCreateElement doc \"audio\"\n\nlet createVideo doc : audioElement t = unsafeCreateElement doc \"video\"\n\nexception Canvas_not_available\n\nlet createCanvas doc : canvasElement t =\n let c = unsafeCreateElement doc \"canvas\" in\n if not (Opt.test c##.getContext) then raise Canvas_not_available;\n c\n\nlet html_element : htmlElement t constr = Js.Unsafe.global##._HTMLElement\n\nmodule CoerceTo = struct\n let element (e : #Dom.node Js.t) : element Js.t Js.opt =\n if Js.instanceof e html_element then Js.some (Js.Unsafe.coerce e) else Js.null\n\n let unsafeCoerce tag (e : #element t) =\n if Js.equals e##.tagName##toLowerCase (Js.string tag)\n then Js.some (Js.Unsafe.coerce e)\n else Js.null\n\n let a e = unsafeCoerce \"a\" e\n\n let area e = unsafeCoerce \"area\" e\n\n let base e = unsafeCoerce \"base\" e\n\n let blockquote e = unsafeCoerce \"blockquote\" e\n\n let body e = unsafeCoerce \"body\" e\n\n let br e = unsafeCoerce \"br\" e\n\n let button e = unsafeCoerce \"button\" e\n\n let canvas e = unsafeCoerce \"canvas\" e\n\n let caption e = unsafeCoerce \"caption\" e\n\n let col e = unsafeCoerce \"col\" e\n\n let colgroup e = unsafeCoerce \"colgroup\" e\n\n let del e = unsafeCoerce \"del\" e\n\n let details e = unsafeCoerce \"details\" e\n\n let div e = unsafeCoerce \"div\" e\n\n let dl e = unsafeCoerce \"dl\" e\n\n let fieldset e = unsafeCoerce \"fieldset\" e\n\n let embed e = unsafeCoerce \"embed\" e\n\n let form e = unsafeCoerce \"form\" e\n\n let frameset e = unsafeCoerce \"frameset\" e\n\n let frame e = unsafeCoerce \"frame\" e\n\n let h1 e = unsafeCoerce \"h1\" e\n\n let h2 e = unsafeCoerce \"h2\" e\n\n let h3 e = unsafeCoerce \"h3\" e\n\n let h4 e = unsafeCoerce \"h4\" e\n\n let h5 e = unsafeCoerce \"h5\" e\n\n let h6 e = unsafeCoerce \"h6\" e\n\n let head e = unsafeCoerce \"head\" e\n\n let hr e = unsafeCoerce \"hr\" e\n\n let html e = unsafeCoerce \"html\" e\n\n let iframe e = unsafeCoerce \"iframe\" e\n\n let img e = unsafeCoerce \"img\" e\n\n let input e = unsafeCoerce \"input\" e\n\n let ins e = unsafeCoerce \"ins\" e\n\n let label e = unsafeCoerce \"label\" e\n\n let legend e = unsafeCoerce \"legend\" e\n\n let li e = unsafeCoerce \"li\" e\n\n let link e = unsafeCoerce \"link\" e\n\n let map e = unsafeCoerce \"map\" e\n\n let meta e = unsafeCoerce \"meta\" e\n\n let _object e = unsafeCoerce \"object\" e\n\n let ol e = unsafeCoerce \"ol\" e\n\n let optgroup e = unsafeCoerce \"optgroup\" e\n\n let option e = unsafeCoerce \"option\" e\n\n let p e = unsafeCoerce \"p\" e\n\n let param e = unsafeCoerce \"param\" e\n\n let pre e = unsafeCoerce \"pre\" e\n\n let q e = unsafeCoerce \"q\" e\n\n let script e = unsafeCoerce \"script\" e\n\n let select e = unsafeCoerce \"select\" e\n\n let style e = unsafeCoerce \"style\" e\n\n let table e = unsafeCoerce \"table\" e\n\n let tbody e = unsafeCoerce \"tbody\" e\n\n let td e = unsafeCoerce \"td\" e\n\n let textarea e = unsafeCoerce \"textarea\" e\n\n let tfoot e = unsafeCoerce \"tfoot\" e\n\n let th e = unsafeCoerce \"th\" e\n\n let thead e = unsafeCoerce \"thead\" e\n\n let title e = unsafeCoerce \"title\" e\n\n let tr e = unsafeCoerce \"tr\" e\n\n let ul e = unsafeCoerce \"ul\" e\n\n let audio e = unsafeCoerce \"audio\" e\n\n let video e = unsafeCoerce \"video\" e\n\n let unsafeCoerceEvent constr (ev : #event t) =\n if Js.Optdef.test (def constr) && Js.instanceof ev constr\n then Js.some (Js.Unsafe.coerce ev)\n else Js.null\n\n let mouseEvent ev = unsafeCoerceEvent Js.Unsafe.global##._MouseEvent ev\n\n let keyboardEvent ev = unsafeCoerceEvent Js.Unsafe.global##._KeyboardEvent ev\n\n let wheelEvent ev = unsafeCoerceEvent Js.Unsafe.global##._WheelEvent ev\n\n let mouseScrollEvent ev = unsafeCoerceEvent Js.Unsafe.global##._MouseScrollEvent ev\n\n let popStateEvent ev = unsafeCoerceEvent Js.Unsafe.global##._PopStateEvent ev\n\n let messageEvent ev = unsafeCoerceEvent Js.Unsafe.global##._MessageEvent ev\nend\n\n(****)\n\nlet eventTarget = Dom.eventTarget\n\nlet eventRelatedTarget (e : #mouseEvent t) = e##.relatedTarget\n\nlet eventAbsolutePosition' (e : #mouseEvent t) =\n let body = document##.body in\n let html = document##.documentElement in\n ( Js.to_float e##.clientX\n +. Js.to_float body##.scrollLeft\n +. Js.to_float html##.scrollLeft\n , Js.to_float e##.clientY\n +. Js.to_float body##.scrollTop\n +. Js.to_float html##.scrollTop )\n\nlet eventAbsolutePosition (e : #mouseEvent t) =\n Optdef.case\n e##.pageX\n (fun () -> eventAbsolutePosition' e)\n (fun x ->\n Optdef.case\n e##.pageY\n (fun () -> eventAbsolutePosition' e)\n (fun y -> Js.to_float x, Js.to_float y))\n\nlet elementClientPosition (e : #element t) =\n let r = e##getBoundingClientRect in\n let body = document##.body in\n let html = document##.documentElement in\n ( truncate (Js.to_float r##.left) - body##.clientLeft - html##.clientLeft\n , truncate (Js.to_float r##.top) - body##.clientTop - html##.clientTop )\n\nlet getDocumentScroll () =\n let body = document##.body in\n let html = document##.documentElement in\n ( Js.to_float body##.scrollLeft +. Js.to_float html##.scrollLeft\n , Js.to_float body##.scrollTop +. Js.to_float html##.scrollTop )\n\nlet buttonPressed (ev : #mouseEvent Js.t) =\n Js.Optdef.case\n ev##.which\n (fun () ->\n match ev##.button with\n | 1 -> Left_button\n | 2 -> Right_button\n | 4 -> Middle_button\n | _ -> No_button)\n (fun x -> x)\n\nlet addMousewheelEventListenerWithOptions e ?capture ?once ?passive h =\n addEventListenerWithOptions\n ?capture\n ?once\n ?passive\n e\n Event.wheel\n (handler (fun (e : mousewheelEvent t) ->\n let dx = -Optdef.get e##.wheelDeltaX (fun () -> 0) / 40 in\n let dy = -Optdef.get e##.wheelDeltaY (fun () -> e##.wheelDelta) / 40 in\n h (e :> mouseEvent t) ~dx ~dy))\n\nlet addMousewheelEventListener e h capt =\n addMousewheelEventListenerWithOptions ~capture:capt e h\n\n(*****)\n\nmodule Keyboard_code = struct\n type t =\n | Unidentified\n (* Alphabetic Characters *)\n | KeyA\n | KeyB\n | KeyC\n | KeyD\n | KeyE\n | KeyF\n | KeyG\n | KeyH\n | KeyI\n | KeyJ\n | KeyK\n | KeyL\n | KeyM\n | KeyN\n | KeyO\n | KeyP\n | KeyQ\n | KeyR\n | KeyS\n | KeyT\n | KeyU\n | KeyV\n | KeyW\n | KeyX\n | KeyY\n | KeyZ\n (* Digits *)\n | Digit0\n | Digit1\n | Digit2\n | Digit3\n | Digit4\n | Digit5\n | Digit6\n | Digit7\n | Digit8\n | Digit9\n | Minus\n | Equal\n (* Whitespace *)\n | Tab\n | Enter\n | Space\n (* Editing *)\n | Escape\n | Backspace\n | Insert\n | Delete\n | CapsLock\n (* Misc Printable *)\n | BracketLeft\n | BracketRight\n | Semicolon\n | Quote\n | Backquote\n | Backslash\n | Comma\n | Period\n | Slash\n (* Function keys *)\n | F1\n | F2\n | F3\n | F4\n | F5\n | F6\n | F7\n | F8\n | F9\n | F10\n | F11\n | F12\n (* Numpad keys *)\n | Numpad0\n | Numpad1\n | Numpad2\n | Numpad3\n | Numpad4\n | Numpad5\n | Numpad6\n | Numpad7\n | Numpad8\n | Numpad9\n | NumpadMultiply\n | NumpadSubtract\n | NumpadAdd\n | NumpadDecimal\n | NumpadEqual\n | NumpadEnter\n | NumpadDivide\n | NumLock\n (* Modifier keys *)\n | ControlLeft\n | ControlRight\n | MetaLeft\n | MetaRight\n | ShiftLeft\n | ShiftRight\n | AltLeft\n | AltRight\n (* Arrow keys *)\n | ArrowLeft\n | ArrowRight\n | ArrowUp\n | ArrowDown\n (* Navigation *)\n | PageUp\n | PageDown\n | Home\n | End\n (* Sound *)\n | VolumeMute\n | VolumeDown\n | VolumeUp\n (* Media *)\n | MediaTrackPrevious\n | MediaTrackNext\n | MediaPlayPause\n | MediaStop\n (* Browser special *)\n | ContextMenu\n | BrowserSearch\n | BrowserHome\n | BrowserFavorites\n | BrowserRefresh\n | BrowserStop\n | BrowserForward\n | BrowserBack\n (* Misc *)\n | OSLeft\n | OSRight\n | ScrollLock\n | PrintScreen\n | IntlBackslash\n | IntlYen\n | Pause\n\n let try_code v =\n match Js.to_string v with\n (* Alphabetic Characters *)\n | \"KeyA\" -> KeyA\n | \"KeyB\" -> KeyB\n | \"KeyC\" -> KeyC\n | \"KeyD\" -> KeyD\n | \"KeyE\" -> KeyE\n | \"KeyF\" -> KeyF\n | \"KeyG\" -> KeyG\n | \"KeyH\" -> KeyH\n | \"KeyI\" -> KeyI\n | \"KeyJ\" -> KeyJ\n | \"KeyK\" -> KeyK\n | \"KeyL\" -> KeyL\n | \"KeyM\" -> KeyM\n | \"KeyN\" -> KeyN\n | \"KeyO\" -> KeyO\n | \"KeyP\" -> KeyP\n | \"KeyQ\" -> KeyQ\n | \"KeyR\" -> KeyR\n | \"KeyS\" -> KeyS\n | \"KeyT\" -> KeyT\n | \"KeyU\" -> KeyU\n | \"KeyV\" -> KeyV\n | \"KeyW\" -> KeyW\n | \"KeyX\" -> KeyX\n | \"KeyY\" -> KeyY\n | \"KeyZ\" -> KeyZ\n (* Digits *)\n | \"Digit0\" -> Digit0\n | \"Digit1\" -> Digit1\n | \"Digit2\" -> Digit2\n | \"Digit3\" -> Digit3\n | \"Digit4\" -> Digit4\n | \"Digit5\" -> Digit5\n | \"Digit6\" -> Digit6\n | \"Digit7\" -> Digit7\n | \"Digit8\" -> Digit8\n | \"Digit9\" -> Digit9\n | \"Minus\" -> Minus\n | \"Equal\" -> Equal\n (* Whitespace *)\n | \"Tab\" -> Tab\n | \"Enter\" -> Enter\n | \"Space\" -> Space\n (* Editing *)\n | \"Escape\" -> Escape\n | \"Backspace\" -> Backspace\n | \"Insert\" -> Insert\n | \"Delete\" -> Delete\n | \"CapsLock\" -> CapsLock\n (* Misc Printable *)\n | \"BracketLeft\" -> BracketLeft\n | \"BracketRight\" -> BracketRight\n | \"Semicolon\" -> Semicolon\n | \"Quote\" -> Quote\n | \"Backquote\" -> Backquote\n | \"Backslash\" -> Backslash\n | \"Comma\" -> Comma\n | \"Period\" -> Period\n | \"Slash\" -> Slash\n (* Function keys *)\n | \"F1\" -> F1\n | \"F2\" -> F2\n | \"F3\" -> F3\n | \"F4\" -> F4\n | \"F5\" -> F5\n | \"F6\" -> F6\n | \"F7\" -> F7\n | \"F8\" -> F8\n | \"F9\" -> F9\n | \"F10\" -> F10\n | \"F11\" -> F11\n | \"F12\" -> F12\n (* Numpad keys *)\n | \"Numpad0\" -> Numpad0\n | \"Numpad1\" -> Numpad1\n | \"Numpad2\" -> Numpad2\n | \"Numpad3\" -> Numpad3\n | \"Numpad4\" -> Numpad4\n | \"Numpad5\" -> Numpad5\n | \"Numpad6\" -> Numpad6\n | \"Numpad7\" -> Numpad7\n | \"Numpad8\" -> Numpad8\n | \"Numpad9\" -> Numpad9\n | \"NumpadMultiply\" -> NumpadMultiply\n | \"NumpadSubtract\" -> NumpadSubtract\n | \"NumpadAdd\" -> NumpadAdd\n | \"NumpadDecimal\" -> NumpadDecimal\n | \"NumpadEqual\" -> NumpadEqual\n | \"NumpadEnter\" -> NumpadEnter\n | \"NumpadDivide\" -> NumpadDivide\n | \"NumLock\" -> NumLock\n (* Modifier keys *)\n | \"ControlLeft\" -> ControlLeft\n | \"ControlRight\" -> ControlRight\n | \"MetaLeft\" -> MetaLeft\n | \"MetaRight\" -> MetaRight\n | \"ShiftLeft\" -> ShiftLeft\n | \"ShiftRight\" -> ShiftRight\n | \"AltLeft\" -> AltLeft\n | \"AltRight\" -> AltRight\n (* Arrow keys *)\n | \"ArrowLeft\" -> ArrowLeft\n | \"ArrowRight\" -> ArrowRight\n | \"ArrowUp\" -> ArrowUp\n | \"ArrowDown\" -> ArrowDown\n (* Navigation *)\n | \"PageUp\" -> PageUp\n | \"PageDown\" -> PageDown\n | \"Home\" -> Home\n | \"End\" -> End\n (* Sound *)\n | \"VolumeMute\" -> VolumeMute\n | \"VolumeDown\" -> VolumeDown\n | \"VolumeUp\" -> VolumeUp\n (* Media *)\n | \"MediaTrackPrevious\" -> MediaTrackPrevious\n | \"MediaTrackNext\" -> MediaTrackNext\n | \"MediaPlayPause\" -> MediaPlayPause\n | \"MediaStop\" -> MediaStop\n (* Browser special *)\n | \"ContextMenu\" -> ContextMenu\n | \"BrowserSearch\" -> BrowserSearch\n | \"BrowserHome\" -> BrowserHome\n | \"BrowserFavorites\" -> BrowserFavorites\n | \"BrowserRefresh\" -> BrowserRefresh\n | \"BrowserStop\" -> BrowserStop\n | \"BrowserForward\" -> BrowserForward\n | \"BrowserBack\" -> BrowserBack\n (* Misc *)\n | \"OSLeft\" -> OSLeft\n | \"OSRight\" -> OSRight\n | \"ScrollLock\" -> ScrollLock\n | \"PrintScreen\" -> PrintScreen\n | \"IntlBackslash\" -> IntlBackslash\n | \"IntlYen\" -> IntlYen\n | \"Pause\" -> Pause\n | _ -> Unidentified\n\n let try_key_code_left = function\n | 16 -> ShiftLeft\n | 17 -> ControlLeft\n | 18 -> AltLeft\n | 91 -> MetaLeft\n | _ -> Unidentified\n\n let try_key_code_right = function\n | 16 -> ShiftRight\n | 17 -> ControlRight\n | 18 -> AltRight\n | 91 -> MetaRight\n | _ -> Unidentified\n\n let try_key_code_numpad = function\n | 46 -> NumpadDecimal\n | 45 -> Numpad0\n | 35 -> Numpad1\n | 40 -> Numpad2\n | 34 -> Numpad3\n | 37 -> Numpad4\n | 12 -> Numpad5\n | 39 -> Numpad6\n | 36 -> Numpad7\n | 38 -> Numpad8\n | 33 -> Numpad9\n | 13 -> NumpadEnter\n | 111 -> NumpadDivide\n | 107 -> NumpadAdd\n | 109 -> NumpadSubtract\n | 106 -> NumpadMultiply\n | 110 -> NumpadDecimal\n | 96 -> Numpad0\n | 97 -> Numpad1\n | 98 -> Numpad2\n | 99 -> Numpad3\n | 100 -> Numpad4\n | 101 -> Numpad5\n | 102 -> Numpad6\n | 103 -> Numpad7\n | 104 -> Numpad8\n | 105 -> Numpad9\n | _ -> Unidentified\n\n let try_key_code_normal = function\n | 27 -> Escape\n | 112 -> F1\n | 113 -> F2\n | 114 -> F3\n | 115 -> F4\n | 116 -> F5\n | 117 -> F6\n | 118 -> F7\n | 119 -> F8\n | 120 -> F9\n | 121 -> F10\n | 122 -> F11\n | 123 -> F12\n | 42 -> PrintScreen\n | 145 -> ScrollLock\n | 19 -> Pause\n | 192 -> Backquote\n | 49 -> Digit1\n | 50 -> Digit2\n | 51 -> Digit3\n | 52 -> Digit4\n | 53 -> Digit5\n | 54 -> Digit6\n | 55 -> Digit7\n | 56 -> Digit8\n | 57 -> Digit9\n | 48 -> Digit0\n | 189 -> Minus\n | 187 -> Equal\n | 8 -> Backspace\n | 9 -> Tab\n | 81 -> KeyQ\n | 87 -> KeyW\n | 69 -> KeyE\n | 82 -> KeyR\n | 84 -> KeyT\n | 89 -> KeyY\n | 85 -> KeyU\n | 73 -> KeyI\n | 79 -> KeyO\n | 80 -> KeyP\n | 219 -> BracketLeft\n | 221 -> BracketRight\n | 220 -> Backslash\n | 20 -> CapsLock\n | 65 -> KeyA\n | 83 -> KeyS\n | 68 -> KeyD\n | 70 -> KeyF\n | 71 -> KeyG\n | 72 -> KeyH\n | 74 -> KeyJ\n | 75 -> KeyK\n | 76 -> KeyL\n | 186 -> Semicolon\n | 222 -> Quote\n | 13 -> Enter\n | 90 -> KeyZ\n | 88 -> KeyX\n | 67 -> KeyC\n | 86 -> KeyV\n | 66 -> KeyB\n | 78 -> KeyN\n | 77 -> KeyM\n | 188 -> Comma\n | 190 -> Period\n | 191 -> Slash\n | 32 -> Space\n | 93 -> ContextMenu\n | 45 -> Insert\n | 36 -> Home\n | 33 -> PageUp\n | 46 -> Delete\n | 35 -> End\n | 34 -> PageDown\n | 37 -> ArrowLeft\n | 40 -> ArrowDown\n | 39 -> ArrowRight\n | 38 -> ArrowUp\n | _ -> Unidentified\n\n let make_unidentified _ = Unidentified\n\n let try_next value f = function\n | Unidentified -> Optdef.case value make_unidentified f\n | v -> v\n\n let run_next value f = function\n | Unidentified -> f value\n | v -> v\n\n let get_key_code evt = evt##.keyCode\n\n let try_key_location evt =\n match evt##.location with\n | 1 -> run_next (get_key_code evt) try_key_code_left\n | 2 -> run_next (get_key_code evt) try_key_code_right\n | 3 -> run_next (get_key_code evt) try_key_code_numpad\n | _ -> fun v -> v\n\n let ( |> ) x f = f x\n\n let of_event evt =\n Unidentified\n |> try_next evt##.code try_code\n |> try_key_location evt\n |> run_next (get_key_code evt) try_key_code_normal\n\n let of_key_code = try_key_code_normal\nend\n\nmodule Keyboard_key = struct\n type t = Uchar.t option\n\n let char_of_int value =\n if 0 < value then try Some (Uchar.of_int value) with _ -> None else None\n\n let empty_string _ = Js.string \"\"\n\n let none _ = None\n\n let of_event evt =\n let key = Optdef.get evt##.key empty_string in\n match key##.length with\n | 0 -> Optdef.case evt##.charCode none char_of_int\n | 1 -> char_of_int (int_of_float (Js.to_float (key##charCodeAt 0)))\n | _ -> None\nend\n\n(*****)\n\nlet element : #Dom.element t -> element t = Js.Unsafe.coerce\n\ntype taggedElement =\n | A of anchorElement t\n | Area of areaElement t\n | Audio of audioElement t\n | Base of baseElement t\n | Blockquote of quoteElement t\n | Body of bodyElement t\n | Br of brElement t\n | Button of buttonElement t\n | Canvas of canvasElement t\n | Caption of tableCaptionElement t\n | Col of tableColElement t\n | Colgroup of tableColElement t\n | Del of modElement t\n | Dialog of dialogElement t\n | Div of divElement t\n | Dl of dListElement t\n | Embed of embedElement t\n | Fieldset of fieldSetElement t\n | Form of formElement t\n | Frameset of frameSetElement t\n | Frame of frameElement t\n | H1 of headingElement t\n | H2 of headingElement t\n | H3 of headingElement t\n | H4 of headingElement t\n | H5 of headingElement t\n | H6 of headingElement t\n | Head of headElement t\n | Hr of hrElement t\n | Html of htmlElement t\n | Iframe of iFrameElement t\n | Img of imageElement t\n | Input of inputElement t\n | Ins of modElement t\n | Label of labelElement t\n | Legend of legendElement t\n | Li of liElement t\n | Link of linkElement t\n | Map of mapElement t\n | Meta of metaElement t\n | Object of objectElement t\n | Ol of oListElement t\n | Optgroup of optGroupElement t\n | Option of optionElement t\n | P of paragraphElement t\n | Param of paramElement t\n | Pre of preElement t\n | Q of quoteElement t\n | Script of scriptElement t\n | Select of selectElement t\n | Style of styleElement t\n | Table of tableElement t\n | Tbody of tableSectionElement t\n | Td of tableCellElement t\n | Textarea of textAreaElement t\n | Tfoot of tableSectionElement t\n | Th of tableCellElement t\n | Thead of tableSectionElement t\n | Title of titleElement t\n | Tr of tableRowElement t\n | Ul of uListElement t\n | Video of videoElement t\n | Other of element t\n\nlet other e = Other (e : #element t :> element t)\n\nlet tagged (e : #element t) =\n let tag = Js.to_bytestring e##.tagName##toLowerCase in\n if String.length tag = 0\n then other e\n else\n match String.unsafe_get tag 0 with\n | 'a' -> (\n match tag with\n | \"a\" -> A (Js.Unsafe.coerce e)\n | \"area\" -> Area (Js.Unsafe.coerce e)\n | \"audio\" -> Audio (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'b' -> (\n match tag with\n | \"base\" -> Base (Js.Unsafe.coerce e)\n | \"blockquote\" -> Blockquote (Js.Unsafe.coerce e)\n | \"body\" -> Body (Js.Unsafe.coerce e)\n | \"br\" -> Br (Js.Unsafe.coerce e)\n | \"button\" -> Button (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'c' -> (\n match tag with\n | \"canvas\" -> Canvas (Js.Unsafe.coerce e)\n | \"caption\" -> Caption (Js.Unsafe.coerce e)\n | \"col\" -> Col (Js.Unsafe.coerce e)\n | \"colgroup\" -> Colgroup (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'd' -> (\n match tag with\n | \"del\" -> Del (Js.Unsafe.coerce e)\n | \"div\" -> Div (Js.Unsafe.coerce e)\n | \"dl\" -> Dl (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'e' -> (\n match tag with\n | \"embed\" -> Embed (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'f' -> (\n match tag with\n | \"fieldset\" -> Fieldset (Js.Unsafe.coerce e)\n | \"form\" -> Form (Js.Unsafe.coerce e)\n | \"frameset\" -> Frameset (Js.Unsafe.coerce e)\n | \"frame\" -> Frame (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'h' -> (\n match tag with\n | \"h1\" -> H1 (Js.Unsafe.coerce e)\n | \"h2\" -> H2 (Js.Unsafe.coerce e)\n | \"h3\" -> H3 (Js.Unsafe.coerce e)\n | \"h4\" -> H4 (Js.Unsafe.coerce e)\n | \"h5\" -> H5 (Js.Unsafe.coerce e)\n | \"h6\" -> H6 (Js.Unsafe.coerce e)\n | \"head\" -> Head (Js.Unsafe.coerce e)\n | \"hr\" -> Hr (Js.Unsafe.coerce e)\n | \"html\" -> Html (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'i' -> (\n match tag with\n | \"iframe\" -> Iframe (Js.Unsafe.coerce e)\n | \"img\" -> Img (Js.Unsafe.coerce e)\n | \"input\" -> Input (Js.Unsafe.coerce e)\n | \"ins\" -> Ins (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'l' -> (\n match tag with\n | \"label\" -> Label (Js.Unsafe.coerce e)\n | \"legend\" -> Legend (Js.Unsafe.coerce e)\n | \"li\" -> Li (Js.Unsafe.coerce e)\n | \"link\" -> Link (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'm' -> (\n match tag with\n | \"map\" -> Map (Js.Unsafe.coerce e)\n | \"meta\" -> Meta (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'o' -> (\n match tag with\n | \"object\" -> Object (Js.Unsafe.coerce e)\n | \"ol\" -> Ol (Js.Unsafe.coerce e)\n | \"optgroup\" -> Optgroup (Js.Unsafe.coerce e)\n | \"option\" -> Option (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'p' -> (\n match tag with\n | \"p\" -> P (Js.Unsafe.coerce e)\n | \"param\" -> Param (Js.Unsafe.coerce e)\n | \"pre\" -> Pre (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'q' -> (\n match tag with\n | \"q\" -> Q (Js.Unsafe.coerce e)\n | _ -> other e)\n | 's' -> (\n match tag with\n | \"script\" -> Script (Js.Unsafe.coerce e)\n | \"select\" -> Select (Js.Unsafe.coerce e)\n | \"style\" -> Style (Js.Unsafe.coerce e)\n | _ -> other e)\n | 't' -> (\n match tag with\n | \"table\" -> Table (Js.Unsafe.coerce e)\n | \"tbody\" -> Tbody (Js.Unsafe.coerce e)\n | \"td\" -> Td (Js.Unsafe.coerce e)\n | \"textarea\" -> Textarea (Js.Unsafe.coerce e)\n | \"tfoot\" -> Tfoot (Js.Unsafe.coerce e)\n | \"th\" -> Th (Js.Unsafe.coerce e)\n | \"thead\" -> Thead (Js.Unsafe.coerce e)\n | \"title\" -> Title (Js.Unsafe.coerce e)\n | \"tr\" -> Tr (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'u' -> (\n match tag with\n | \"ul\" -> Ul (Js.Unsafe.coerce e)\n | _ -> other e)\n | 'v' -> (\n match tag with\n | \"video\" -> Video (Js.Unsafe.coerce e)\n | _ -> other e)\n | _ -> other e\n\nlet opt_tagged e = Opt.case e (fun () -> None) (fun e -> Some (tagged e))\n\ntype taggedEvent =\n | MouseEvent of mouseEvent t\n | KeyboardEvent of keyboardEvent t\n | MessageEvent of messageEvent t\n | MousewheelEvent of mousewheelEvent t\n | MouseScrollEvent of mouseScrollEvent t\n | PopStateEvent of popStateEvent t\n | OtherEvent of event t\n\nlet taggedEvent (ev : #event Js.t) =\n Js.Opt.case\n (CoerceTo.mouseEvent ev)\n (fun () ->\n Js.Opt.case\n (CoerceTo.keyboardEvent ev)\n (fun () ->\n Js.Opt.case\n (CoerceTo.wheelEvent ev)\n (fun () ->\n Js.Opt.case\n (CoerceTo.mouseScrollEvent ev)\n (fun () ->\n Js.Opt.case\n (CoerceTo.popStateEvent ev)\n (fun () ->\n Js.Opt.case\n (CoerceTo.messageEvent ev)\n (fun () -> OtherEvent (ev :> event t))\n (fun ev -> MessageEvent ev))\n (fun ev -> PopStateEvent ev))\n (fun ev -> MouseScrollEvent ev))\n (fun ev -> MousewheelEvent ev))\n (fun ev -> KeyboardEvent ev))\n (fun ev -> MouseEvent ev)\n\nlet opt_taggedEvent ev = Opt.case ev (fun () -> None) (fun ev -> Some (taggedEvent ev))\n\nlet stopPropagation ev =\n let e = Js.Unsafe.coerce ev in\n Optdef.case\n e##.stopPropagation\n (fun () -> e##.cancelBubble := Js._true)\n (fun _ -> e##_stopPropagation)\n\nlet _requestAnimationFrame : (unit -> unit) Js.callback -> unit =\n Js.Unsafe.pure_expr (fun _ ->\n let w = Js.Unsafe.coerce window in\n let l =\n [ w##.requestAnimationFrame\n ; w##.mozRequestAnimationFrame\n ; w##.webkitRequestAnimationFrame\n ; w##.oRequestAnimationFrame\n ; w##.msRequestAnimationFrame\n ]\n in\n try\n let req = List.find (fun c -> Js.Optdef.test c) l in\n fun callback -> Js.Unsafe.fun_call req [| Js.Unsafe.inject callback |]\n with Not_found ->\n let now () = Js.to_float (new%js Js.date_now)##getTime in\n let last = ref (now ()) in\n fun callback ->\n let t = now () in\n let dt = !last +. (1000. /. 60.) -. t in\n let dt = if Poly.(dt < 0.) then 0. else dt in\n last := t;\n ignore (window##setTimeout callback (Js.float dt)))\n\n(****)\n\nlet hasPushState () = Js.Optdef.test (Js.Unsafe.coerce window##.history)##.pushState\n\nlet hasPlaceholder () =\n let i = createInput document in\n Js.Optdef.test (Js.Unsafe.coerce i)##.placeholder\n\nlet hasRequired () =\n let i = createInput document in\n Js.Optdef.test (Js.Unsafe.coerce i)##.required\n\nlet overflow_limit = 2147483_000.\n\n(* ms *)\n\ntype timeout_id_safe = timeout_id option ref\n\nlet setTimeout callback d : timeout_id_safe =\n let id = ref None in\n let rec loop d () =\n let step, remain =\n if Poly.(d > overflow_limit) then overflow_limit, d -. overflow_limit else d, 0.\n in\n let cb = if Poly.(remain = 0.) then callback else loop remain in\n id := Some (window##setTimeout (Js.wrap_callback cb) (Js.float step))\n in\n loop d ();\n id\n\nlet clearTimeout (id : timeout_id_safe) =\n match !id with\n | None -> ()\n | Some x ->\n id := None;\n window##clearTimeout x\n\nlet onload f =\n let complete = Js.string \"complete\" in\n if document##.readyState == complete\n then f ()\n else\n ignore\n (Dom.addEventListener\n window\n Event.load\n (handler (fun _ ->\n f ();\n Js._true))\n Js._false)\n\nlet js_array_of_collection (c : #element collection Js.t) : #element Js.t Js.js_array Js.t\n =\n Js.Unsafe.(meth_call (js_expr \"[].slice\") \"call\" [| inject c |])\n","(* generated code *)"],"names":[],"mappings":"EAyqHuB,KAAV,WAAqD,C,EANpD,2BAAI,OACI,C,SAVL,OACZ,WAAqB,8BACnB,oBAEH,SACE,YADF,QAIK,mBAHH,EAKkB,OALlB,cAMa,M,KAlBjB,oBACU,iBAEN,cAHJ,KAII,gBAAsB,C,KAX0B,0B,WAHlD,8BACuE,KAAnB,iBAEpD,gCAAkD,W,EACG,OAAtB,MAAsC,YAA1D,qBAA0D,U,KAEvE,EARA,KACA,MADA,I,EAAA,KACA,GAOA,IAAS,EACP,C,KA1lCF,QAukCA,OAvkCA,gBAwkCe,OAA+B,6B,KAxkC9C,QAmkCA,OAnkCA,gBAokCe,OAAkC,6B,EAJI,eAAlB,OAA+C,6B,SAR1E,OAAQ,KACwB,WAAvB,kCAET,aADgC,KAAhC,oBAEoC,KAA7B,sBAA2C,K,EAPvC,OAAY,cAAZ,GAAyC,C,EAFtC,mBAAsD,C,EADxC,8BAAgB,C,SAJjB,IAN/B,OAMI,WAA2B,UADD,IAA1B,aAA0B,QADK,IAA/B,aAA+B,QADH,IAA5B,aAA4B,QADH,IAAzB,aAAyB,QAO7B,OAEE,GADU,KADZ,OACY,aACV,M,AAAA,I,AAAA,G,EAAA,ICzmHR,kDD6mHQ,SADuB,IAAR,GAAQ,IACvB,SAKoD,C,EAzB7C,6BAA4B,C,EAC7B,gBAAmB,C,KAH/B,oBACE,SAAmB,gCAEW,C,EAPc,IAAI,C,EAAkC,IAAhB,SAAgB,K,EAA7D,oCAA8D,C,EARpD,iBAA0B,C,EAC1B,UAAe,C,KAH5B,mBACE,aAA0B,iCAEC,C,EACpB,UAAgB,C,KAP7B,mBACE,aAA2B,iCAMC,C,EACrB,UAAmB,C,KAXhC,mBACE,aAA8B,iCAUC,C,EACxB,UAAkB,C,KAf/B,mBACE,aAAwB,iCAcM,C,EACvB,UAAgB,C,KAnB7B,mBACE,aAA2B,iCAkBC,C,EACrB,UAAa,C,KAvB1B,UACE,SAAwB,iCAsBC,C,EAnC2C,IAAV,SAAU,K,EAArD,oCAAsD,C,KAvH5C,gBAAjB,KACV,QAGE,wB,EAAA,mEA6GS,gBAEQ,WAtHP,aAgHD,gBAEK,WAlHJ,aAoGD,gBAEQ,2BACA,2BACH,2BACM,2BACH,2BACH,2BACG,2BACA,2BACH,WA9GJ,qBA8FD,gBAES,2BACA,2BACD,WAlGP,eA0FD,gBAEI,WA5FH,aAoFD,gBAEI,2BACI,2BACF,WAxFL,eA6ED,gBAES,2BACJ,2BACM,2BACF,WAlFR,gBAwED,gBAEM,2BACC,WA3EN,cAiED,gBAEQ,2BACC,2BACJ,2BACE,WAtEN,gBA0DD,gBAES,2BACH,2BACE,2BACF,WA/DL,gBA8CD,gBAEK,2BACA,2BACA,2BACA,2BACA,2BACA,2BACE,2BACF,2BACE,WAxDN,qBAuCD,gBAEW,2BACJ,2BAEC,2BADG,WA3CV,gBAmCD,gBAEQ,WArCP,aA6BD,gBAEM,2BACA,2BACD,WAjCJ,eAsBD,gBAES,2BACC,2BACJ,2BACK,WA3BV,gBAcD,gBAEO,2BACM,2BACN,2BACF,2BACI,WApBR,iBAQD,gBAEI,2BACG,2BACC,WAZP,sCAwHI,C,EC5iHlB,G,MDy2GsB,IADG,QAAX,GAAoB,eAApB,eACJ,SAAY,IACC,QAAc,6CACa,eAAb,GAAiC,mBAC3D,MAAI,C,EAToB,I,KAF/B,sBAA+C,IAApB,EAA3B,OAA2B,aAAoB,O,AAAA,I,AAAA,G,EAAA,KAAW,KAAU,KAAI,C,MA5B7D,iBApIW,4BAId,wDADA,OADA,OADA,QAID,KAiIA,I,MAFI,iBA7HY,4BAIf,wDADA,OADA,OADA,QAID,KA0HA,I,QAFI,iBAtHa,uC,EAAA,yDAaf,OAIA,OAFA,OADA,OAEA,OAWA,OADA,OADA,OADA,OADA,OADA,OADD,OADA,OADA,OADA,yB,EAAA,kFAjBA,OACA,OAEA,OAIA,OAEA,OAJA,OAGA,OANA,OAEA,OAMA,OACA,OALA,SAqBD,KA4FA,I,WAEc,WAGf,SAAc,mBAIb,I,GAAA,oBAD2B,GANb,SAMa,MADA,GALb,SAKa,MADA,GAJb,SAIa,K,EAStB,QApBM,kCAgBH,iBAbJ,QACO,UACX,GAiB2C,C,KA3G1B,qB,EAAA,iYAwDf,MAbA,MACA,MAFA,MAzBA,MAkDA,MADA,MAtCA,MAqCA,MApCA,MA0BA,MAxCA,OAFA,OADA,OADA,OADA,OADA,MADA,MADA,MADA,MADA,MADA,MADA,MADA,MAmED,OAXA,MArBA,MAsBA,MA1BA,MA4BA,MAvBA,MAFA,MAWA,MAZA,MAHA,MASA,MADA,MAuBA,MACA,MAVA,MADA,MADA,MAbA,MAYA,MADA,MADA,MAfA,MAcA,MAYA,MAEA,MAhBA,MApBA,MADA,MADA,MADA,MADA,MADA,MADA,MADA,MADA,MASA,MA8CA,MAHA,MAxDA,OA+DA,OACA,OACA,OAHA,OALA,OAGA,OACA,OAHA,OAJA,MAnEA,MA4CA,MA7BA,OAyCA,MA1BD,MADA,OAkDA,IAAY,C,MAxQb,MAAc,iIA4DP,qBAhBA,qBAFF,qBAwEO,sBADA,sBAEF,aAhBE,uBAsCL,sBA9EC,qBA2EK,sBA/EN,qBA8EK,sBA/ED,qBA4CA,eAUH,oDAlBK,sBADA,sBAJG,sBACA,sBA6CR,sBACC,sBAvBC,cAlBI,uBAXL,sBACA,sBACA,sBACA,sBACA,sBAGE,sBACI,gBATN,iFAxCF,qBAqDE,sBAjBA,sBACA,sBACA,sBACA,aAmBE,uBAvEL,qBACA,qBA4FU,sBACL,sBAFK,sBADI,sBArBV,eAvEJ,mDAPA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,aAPA,sBAPA,qBACA,qBACA,qBACA,qBACA,qBACA,qBACA,gBAPA,6GANA,qBACA,qBACA,qBACA,qBACA,qBACA,YANA,sBAkEF,qBACA,qBACA,sBAwCE,sBA9DE,qBAuFO,sBACN,eArEL,mDAIC,sBACA,sBACA,sBAVD,qBACA,qBACA,qBACA,aAJA,sBA1BI,qBACA,qBACA,qBAyEH,sBApEE,qBAHA,qBAMC,eAXA,gFANA,qBACA,qBACA,qBACA,qBACA,qBACA,YAeA,sBA0EO,sBAIF,sBA7EH,qBAQH,qBAgEM,sBA5BA,sBACC,eA+BE,oDA/EL,qBAKE,qBACC,qBA4ED,sBAJK,sBAGF,sBAJH,cAnEF,sBA2CF,sBACC,sBAKC,sBAHA,sBACC,sBACH,sBAjDE,gBAkFV,IAAY,C,EA5RrB,mCAAuD,C,EAJA,gBAAc,C,QAD9D,OAAkD,EAA7B,SAAX,GAA0B,eAA1B,aAAwC,iBAClD,UACA,MAD+D,EAA1C,SAAX,EAA0B,eAA1B,aAAqD,eAC/D,WAA6B,C,KAAE,EATtC,OASsC,UATtC,QAME,mBAGoC,oB,IAjB5B,eAAW,kB,EAAA,qBAGV,MADA,MADA,OAGA,IAAS,C,KAPpB,UACE,SAAU,iCAOE,C,YAdH,mBACA,cAEmC,OAAZ,KAApB,SAAZ,yBAD6C,SAAZ,KAA6B,IAAlD,SAAZ,uBAA8D,MACA,C,WAVxD,kBACG,cACA,cAE2C,QAAnB,UAAX,SAAb,GAAqB,2BADwB,UAApB,UAAH,IAAT,SAAb,GAAsB,mCACuC,C,KAZ3D,oBAAwB,C,KAKN,cAAF,IAAb,SAAa,MAAe,C,QAHxC,mCACE,aAAS,gCAE8B,C,QAP7C,qCACE,SAAS,gCAMmC,C,SAjBnC,cACA,cAMM,OAAZ,KADY,SAAZ,KADS,QAAZ,mCADe,SAAZ,KADY,SAAZ,KAC6B,IAFpB,QAAZ,iCAEgC,MAGC,C,EAVQ,SAAiB,C,EAPtC,eAAkB,MAAgC,KAAG,C,EAFpD,eAAkB,MAAiC,KAAG,C,EAFnD,eAAkB,MAAoC,KAAG,C,EAF/D,eAAkB,MAA8B,KAAG,C,EAFhD,eAAkB,MAAiC,KAAG,C,EAFzD,eAAkB,MAA8B,KAAG,C,KAJnD,EAAlB,OAAkB,aAAY,eAA3B,aAA2B,K,CAAA,EAAI,MAAuB,K,CAAA,EACpD,wBACA,OAAO,C,EALA,QAAsB,C,EAFtB,QAAsB,C,EAFzB,QAAmB,C,EAFnB,QAAmB,C,EAFhB,QAAsB,C,EAFtB,QAAsB,C,EAFzB,QAAmB,C,EAFhB,QAAsB,C,EAFnB,QAAyB,C,EAF/B,QAAmB,C,EAFhB,QAAsB,C,EAFtB,QAAsB,C,EAFtB,QAAsB,C,EAFrB,QAAuB,C,EAFvB,QAAuB,C,EAF5B,QAAkB,C,EAFhB,QAAoB,C,EAFlB,QAAsB,C,EAF1B,QAAkB,C,EAFb,QAAuB,C,EAFrB,QAAyB,C,EAF/B,QAAmB,C,EAFd,QAAuB,C,EAF1B,QAAqB,C,EAFtB,QAAoB,C,EAFnB,QAAqB,C,EAFvB,QAAmB,C,EAFf,QAAuB,C,EAFxB,QAAsB,C,EAFxB,QAAoB,C,EAFlB,QAAsB,C,EAFxB,QAAoB,C,EAFjB,QAAuB,C,EAFzB,QAAqB,C,EAFvB,QAAmB,C,EAFjB,QAAqB,C,EAFvB,QAAmB,C,EAFnB,QAAmB,C,EAFnB,QAAmB,C,EAFnB,QAAmB,C,EAFnB,QAAmB,C,EAFnB,QAAmB,C,EAFhB,QAAsB,C,EAFnB,QAAyB,C,EAF7B,QAAqB,C,EAFpB,QAAsB,C,EAFnB,QAAyB,C,EAF/B,QAAmB,C,EAFlB,QAAoB,C,EAFhB,QAAwB,C,EAF5B,QAAoB,C,EAFf,QAAyB,C,EAF9B,QAAoB,C,EAFhB,QAAwB,C,EAFzB,QAAuB,C,EAFvB,QAAuB,C,EAF3B,QAAmB,C,EAFjB,QAAqB,C,EAFf,QAA2B,C,EAFjC,QAAqB,C,EAFrB,QAAqB,C,EAFxB,QAAkB,C,OAJY,IAAzB,gBAAV,IAAkD,QAEhD,QADA,uBACO,C,EALT,aAA4B,QAAwC,QAAlC,uBAAyC,C,MAzN/C,kBAkNhB,MAAc,eAAxB,aAAyB,QAChC,GADsC,SACrC,C,EAnNgC,QA4MmC,C,EA5MnC,QA0MmC,C,EA1MnC,QAwMsC,C,EAxMtC,QAsMmC,C,EAtMnC,QAoM4C,C,EAFvD,QAA2B,C,EAF1B,QAA4B,C,EAFlC,QAAsB,C,EAFtB,QAAsB,C,EAFpB,QAAwB,C,EAFzB,QAAuB,C,EAFvB,QAAuB,C,EAFtB,QAAwB,C,EAFxB,QAAwB,C,EAFzB,QAAuB,C,EAFtB,QAAwB,C,EAFtB,QAA0B,C,EAF9B,QAAsB,C,EAFnB,QAAyB,C,EAF3B,QAAuB,C,EAFzB,QAAqB,C,EAFrB,QAAqB,C,EAFpB,QAAsB,C,EAFpB,QAAwB,C,EAFzB,QAAuB,C,EAFvB,QAAuB,C,EA1JR,QAwJiC,C,EAxJjC,QAsJiC,C,EAtJjC,QAoJgC,C,EApJhC,QAkJ0C,C,EAlJ1C,QAgJ0C,C,EAhJ1C,QA8I0C,C,EA9I1C,QA4I4C,C,EA5I5C,QA0IkC,C,EA1IlC,QAwI8C,C,EAxI9C,QAsImC,C,EAtInC,QAoIsC,C,EApItC,QAkIgC,C,EAlIhC,QAgI6B,C,EAhI7B,QA8HmC,C,EA9HnC,QA4HsC,C,EA5HtC,QA0H+B,C,EA1H/B,QAwH4B,C,EAxH5B,QAsH6B,C,EAtH7B,QAoH6B,C,EApH7B,QAkH0B,C,EAlH1B,QAgH0B,C,EAhH1B,QA8G6B,C,EA9G7B,QA4G6C,C,EA5G7C,QA0G2B,C,EA1G3B,QAwG+B,C,EAxG/B,QAsG+B,C,EAtG/B,QAoG+B,C,EApG/B,QAkG+B,C,EAlG/B,QAgG+B,C,EAhG/B,QA8F+B,C,EA9F/B,QA4F+B,C,EA5F/B,QA0FmC,C,EA1FnC,QAwF6B,C,EAxF7B,QAsFsC,C,EAtFtC,QAoF0B,C,EApF1B,QAkF6B,C,EAlF7B,QAgF6B,C,EAhF7B,QA8E6B,C,EA9E7B,QA4EsC,C,EA5EtC,QA0E4C,C,EA1E5C,QAwEmC,C,EAFpE,qBAA+C,C,EAH/C,qBAAiD,C,EAHjD,qBAA8C,C,EAH9C,qBAA+C,C,EA7Dd,QA0DsC,C,EA1DtC,QAwD4C,C,EAxD5C,QAsDgC,C,EAtDhC,QAoDgC,C,EApDhC,QAkDmC,C,EAlDnC,QAgDgC,C,EAhDhC,QA8CgC,C,EA9ChC,QA4CmC,C,EA5CnC,QA0CgC,C,EA1ChC,QAwCgC,C,EAxChC,QAsCgC,C,YAjCjE,oBACK,SAEH,wBA0BW,QACA,MADA,MA1BX,SAqBc,oBAEM,cAAV,OAAuD,O,GAC1C,SAAV,MAAmC,I,AAAA,I,AAAA,G,EAAA,KAC9B,WACP,KAEP,qBArBA,OAAQ,SAC0B,MAA3B,E,CAAA,iBAtBb,O,CAAA,YAwBmD,KAAlC,E,CAAA,uBAxBjB,O,CAAA,YA0BmD,KAAlC,E,CAAA,uBACJ,E,CAAA,aAC8B,E,CAAA,cAAwB,cAZlC,SAhBjC,O,CAAA,cAiB+B,eAjB/B,O,CAAA,cAkB8B,eAAgB,GAwBE,C,OAtCa,IAAgB,c,EArEhD,wBAAU,6B,QAHvC,iBAC4B,MAA1B,iBAAyC,iCAEH,C,KAN6B,aAA1B,iBAAyC,6B,EAHvE,KAAS,OAAT,OAAS,0BAAsD,qB,KAF5E,iBAC4B,MAA1B,iBAAyC,iCAErB,C,EAPT,SAAe,C,KAF5B,OAC4B,MAA1B,iBAAyC,kCAErB,C,EApOiB,SAAY,C,EAjqEF,GAAqB,WAAc,OAAnC,aAAoC,qB,KAArF,UAAW,KAAiB,8BAA0D,C,gCC5BxF,oCD6xBe,GC7xBf,eD6xBe,eAED,GAFwB,eAExB,eAEA,GAFsB,eAEtB,eAED,GAFuB,eAEvB,eAED,GAFsB,eAEtB,eAEE,GAFkB,eAElB,eAEG,GAFmB,eAEnB,eAEC,GAFwB,eAExB,eAEF,GAF4B,eAE5B,eAEE,GAFsB,eAEtB,eAEA,GAF0B,eAE1B,eAED,GAF2B,eAE3B,eAEA,GAFyB,eAEzB,eAED,GAF0B,eAE1B,eAEF,GAF0B,eAE1B,eAEK,GAFiB,eAEjB,eAEL,GAFgC,eAEhC,eAEU,GAFY,eAEZ,eAEL,GAFoC,eAEpC,eAED,GAF4B,eAE5B,eAED,GAF2B,eAE3B,eAEG,GAFsB,eAEtB,eAEF,GAF8B,eAE9B,eAEF,GAF4B,eAE5B,eAEE,GAFsB,eAEtB,eAED,GAF2B,eAE3B,eAEC,GAFwB,eAExB,eAEL,GAF+B,eAE/B,eAEA,GAFqB,eAErB,eAEM,GAFe,eAEf,eAEJ,GAF+B,eAE/B,eAED,GAFwB,eAExB,eAEK,GAFiB,eAEjB,eAEJ,GAF+B,eAE/B,eAEA,GAFuB,eAEvB,eAED,GAFwB,eAExB,eAED,GAFuB,eAEvB,eAEA,GAFqB,eAErB,eAEE,GAFmB,eAEnB,eAEM,GAFiB,eAEjB,eAEN,GAFmC,eAEnC,eAEW,GAFY,eAEZ,eAET,GAF2C,eAE3C,eAEH,GAF4B,eAE5B,eAEA,GAFsB,eAEtB,eAEC,GAFqB,eAErB,eAEA,GAFuB,eAEvB,eAEC,GAFsB,eAEtB,eAEC,GAFuB,eAEvB,eAEA,GAFyB,eAEzB,eAEG,GAFsB,eAEtB,eAEH,GAF+B,eAE/B,eAEG,GAFsB,eAEtB,eAEL,GAFiC,eAEjC,eAEE,GAFqB,eAErB,eAEQ,GAFiB,eAEjB,eAEF,GAFmC,eAEnC,eAEF,GAFiC,eAEjC,eAEM,GAFuB,eAEvB,eAEH,GAFsC,eAEtC,eAEF,GAFkC,eAElC,eAEE,GAF4B,eAE5B,eAEF,GAFkC,eAElC,eAEG,GAF2B,eAE3B,eAET,GAF0C,eAE1C,eAEO,GAFiB,eAEjB,eAEA,GAF+B,eAE/B,eAEP,GAFsC,eAEtC,eAEF,GAF0B,eAE1B,eAEY,GAFU,eAEV,eAEP,GAFyC,eAEzC,eAEI,GAFuB,eAEvB,eAEL,GAFoC,eAEpC,eAES,GAFiB,eAEjB,eAEX,GAF8C,eAE9C,eAEF,GAF0B,eAE1B,eAED,GAFuB,eAEvB,eAEG,GAFkB,eAElB,eAEK,GAFmB,eAEnB,eAEC,GAF4B,eAE5B,eAEF,GAFgC,eAEhC,eAEC,GAF2B,eAE3B,eAED,GAF8B,eAE9B,eAED,GAF6B,eAE7B,eAEC,GAF0B,eAE1B,eAEF,GAF8B,eAE9B,eAEC,GAFyB,eAEzB,eAEJ,GAF+B,eAE/B,eAEC,GAFsB,eAEtB,eAEA,GAFwB,eAExB,eAEA,GAFwB,eAExB,eAEK,GAFmB,eAEnB,eAEL,GAFkC,eAElC,eAED,GAFyB,eAEzB,eAAuB,qDAo8CN,GAzpBP,iBAypBV,QAAiB,2JAgTU,QAA+B,4BAu6BZ,8BAv6BY,OAu6BZ,wNAv6BY,2BAu6BZ,qSAv6BY,QAu6BZ,oPAv6BY,QAk5BvE,GAqB2D,4C,QClnH7D,6E,EAAA,c,QAAA,8B,EAAA,c,EAAA,c,WAAA,0C,EAAA,c,EAAA,c,EAAA,c,EAAA,c,kBAAA","ignoreList":[1]}},{"offset":{"line":0,"column":89351},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/form.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2011 Pierre Chambart\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen Dom_html\nopen! Import\n\nclass type formData = object\n method append : js_string t -> js_string t -> unit meth\n\n method append_blob : js_string t -> File.blob t -> unit meth\nend\n\nlet formData : formData t constr = Js.Unsafe.global##._FormData\n\nlet formData_form : (formElement t -> formData t) constr = Js.Unsafe.global##._FormData\n\ntype form_elt =\n [ `String of js_string t\n | `File of File.file t\n ]\n\ntype form_contents =\n [ `Fields of (string * form_elt) list ref\n | `FormData of formData t\n ]\n\nlet rec filter_map f = function\n | [] -> []\n | v :: q -> (\n match f v with\n | None -> filter_map f q\n | Some v' -> v' :: filter_map f q)\n\nclass type submittableElement = object\n method disabled : bool t prop\n\n method name : js_string t readonly_prop\n\n method value : js_string t prop\nend\n\nlet have_content (elt : submittableElement t) =\n elt##.name##.length > 0 && not (Js.to_bool elt##.disabled)\n\nlet get_textarea_val (elt : textAreaElement t) =\n if have_content (elt :> submittableElement t)\n then\n let name = to_string elt##.name in\n [ name, `String elt##.value ]\n else []\n\nlet get_select_val (elt : selectElement t) =\n if have_content (elt :> submittableElement t)\n then\n let name = to_string elt##.name in\n if to_bool elt##.multiple\n then\n let options =\n Array.init elt##.options##.length (fun i -> Opt.to_option (elt##.options##item i))\n in\n filter_map\n (function\n | None -> None\n | Some e ->\n if Js.to_bool e##.selected then Some (name, `String e##.value) else None)\n (Array.to_list options)\n else [ name, `String elt##.value ]\n else []\n\nclass type file_input = object\n inherit inputElement\n\n method files : File.fileList t readonly_prop\n\n method multiple : bool optdef readonly_prop\nend\n\nlet get_input_val ?(get = false) (elt : inputElement t) =\n if have_content (elt :> submittableElement t)\n then\n let name = to_string elt##.name in\n let value = elt##.value in\n match to_bytestring elt##._type##toLowerCase with\n | \"checkbox\" | \"radio\" ->\n if to_bool elt##.checked then [ name, `String value ] else []\n | \"submit\" | \"reset\" -> []\n | \"text\" | \"password\" -> [ name, `String value ]\n | \"file\" -> (\n if get\n then [ name, `String value ]\n else\n let elt : file_input t = Unsafe.coerce elt in\n let list = elt##.files in\n if list##.length = 0\n then [ name, `String (Js.string \"\") ]\n else\n match Optdef.to_option elt##.multiple with\n | None | Some false -> (\n match Opt.to_option (list##item 0) with\n | None -> []\n | Some file -> [ name, `File file ])\n | Some true ->\n filter_map\n (fun f ->\n match Opt.to_option f with\n | None -> None\n | Some file -> Some (name, `File file))\n (Array.to_list (Array.init list##.length (fun i -> list##item i))))\n | _ -> [ name, `String value ]\n else []\n\nlet get_form_elements (form : formElement t) =\n let rec loop acc i =\n if i < 0\n then acc\n else\n match Opt.to_option (form##.elements##item i) with\n | None -> loop acc (i - 1)\n | Some x -> loop (x :: acc) (i - 1)\n in\n loop [] (form##.elements##.length - 1)\n\nlet get_element_content ?get v =\n match tagged v with\n | Select v -> get_select_val v\n | Input v -> get_input_val ?get v\n | Textarea v -> get_textarea_val v\n | _ -> []\n\nlet form_elements ?get (form : formElement t) =\n List.flatten (List.map (fun v -> get_element_content ?get v) (get_form_elements form))\n\nlet append (form_contents : form_contents) (form_elt : string * form_elt) =\n match form_contents with\n | `Fields list -> list := form_elt :: !list\n | `FormData f -> (\n match form_elt with\n | name, `String s -> f##append (string name) s\n | name, `File file -> f##append_blob (string name) (file :> File.blob t))\n\nlet empty_form_contents () =\n match Optdef.to_option (Js.def formData) with\n | None -> `Fields (ref [])\n | Some constr -> `FormData (new%js constr)\n\nlet post_form_contents form =\n let contents = empty_form_contents () in\n List.iter (append contents) (form_elements form);\n contents\n\nlet get_form_contents form =\n List.map\n (function\n | name, `String s -> name, to_string s\n | _ -> assert false)\n (form_elements ~get:true form)\n","(* generated code *)"],"names":[],"mappings":"KA0KI,iB,CAAA,yBACwC,IADxC,cAC6B,EAAW,OAC/B,eAAa,C,EACQ,GAA9B,YAA8B,qB,EARtB,mB,EAAA,GADK,IAAf,MAAe,SACL,GAAkB,aAAD,OAA3B,cAAgD,EACxC,C,GAPR,KAAuB,IAAvB,OAAuB,aAAiB,eAAlC,eAAkC,QAC9B,gB,EAAA,QACgC,YADhC,UACiB,OAAe,M,MAV1C,kCACkB,4CACD,wDAGwB,MAAa,8BADnB,MAAa,kB,EAC6B,C,EAR5C,cAA0B,C,QAVlD,gBAAwB,kBAP/B,UAGuB,SAAD,aAAyB,eAAvC,eAAuC,OACnC,UACE,IADF,UACE,kB,GAYqE,QAAxE,EAAwE,OAAxE,aAAyE,qB,KA1BpE,OAAM,EAAN,eAAM,eAAe,QACX,KACK,0BADL,UACK,aAAuB,C,EACW,oBAAY,C,KA9CzE,UACY,KADZ,OACY,YAEQ,OAAX,EAAuB,QAA0C,KAAP,0BAAT,SAAS,cAAY,C,EANpB,gBAAD,WAAuB,6B,WAiEzE,QAAR,EAAN,SAAM,eAAQ,a,GAAA,uCA9EX,GAA0C,KAGhB,QADN,SAAV,EACgB,YAAX,SAAW,kBACxB,M,EAAA,YAGF,GAA0C,KAEtB,SAAV,IACA,SAAR,EAAsB,OAWO,sBAAX,SAAW,kBAT9B,UAQyB,QAPZ,gBAAX,EAAiC,OAAjC,aAEF,OAKE,aAAuB,I,EAExB,M,EAUW,UAAQ,gB,EAVnB,YAWF,GAA0C,KAEtB,SAAV,IACC,WACQ,gBAAd,KAAsC,W,CAAA,iBAKhC,SAMU,IADL,WACR,OAAa,GACmB,2CAEV,SAAc,eAA/B,eAA+B,K,CAAA,iB,CAAA,EAMjC,UAKoE,QAAvC,SAAZ,EAAyB,OAAzB,aAAkD,OAAjE,aAAkE,KAThD,eAAc,eAA5B,eAA4B,OACxB,MACK,sBADL,UACK,kB,IAXlB,0C,IAAA,a,CAAA,iB,EAAA,a,CAAA,e,CAAA,iBAmBF,2CAvBiB,OACC,4CAFV,SAAR,EAAqB,OAAmC,MAA7B,0C,EAyB/B,M,EAkBE,IAAE,C,IArFT,gBAAmB,YAAwB,SAAZ,EAA2B,O,GAAA,C,QAhBzC,aACT,0BAEE,YAAG,OAEwB,IAFxB,UAEU,OAAc,MAAC,C,QAjB+C,IChCvF,eD8BmC,SAA4B,eAEJ,OAA4B,uC,EChCvF,c,QAAA","ignoreList":[1]}},{"offset":{"line":0,"column":91836},"map":{"version":3,"sources":["/builtin/blackbox.ml","/root/.opam/5.2.0/lib/js_of_ocaml/xmlHttpRequest.ml"],"sourcesContent":["(* generated code *)","(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Jérôme Vouillon\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen! Import\n\ntype readyState =\n | UNSENT\n | OPENED\n | HEADERS_RECEIVED\n | LOADING\n | DONE\n\ntype _ response =\n | ArrayBuffer : Typed_array.arrayBuffer t Opt.t response\n | Blob : #File.blob t Opt.t response\n | Document : Dom.element Dom.document t Opt.t response\n | JSON : 'a Opt.t response\n | Text : js_string t response\n | Default : string response\n\nclass type xmlHttpRequest = object ('self)\n method onreadystatechange : (unit -> unit) Js.callback Js.writeonly_prop\n\n method readyState : readyState readonly_prop\n\n method _open : js_string t -> js_string t -> bool t -> unit meth\n\n method _open_full :\n js_string t\n -> js_string t\n -> bool t\n -> js_string t opt\n -> js_string t opt\n -> unit meth\n\n method setRequestHeader : js_string t -> js_string t -> unit meth\n\n method overrideMimeType : js_string t -> unit meth\n\n method send : js_string t opt -> unit meth\n\n method send_blob : #File.blob t -> unit meth\n\n method send_document : Dom.element Dom.document t -> unit meth\n\n method send_formData : Form.formData t -> unit meth\n\n method abort : unit meth\n\n method status : int readonly_prop\n\n method statusText : js_string t readonly_prop\n\n method getResponseHeader : js_string t -> js_string t opt meth\n\n method getAllResponseHeaders : js_string t meth\n\n method response : File.file_any readonly_prop\n\n method responseText : js_string t opt readonly_prop\n\n method responseXML : Dom.element Dom.document t opt readonly_prop\n\n method responseType : js_string t prop\n\n method withCredentials : bool t writeonly_prop\n\n inherit File.progressEventTarget\n\n method ontimeout :\n ('self t, 'self File.progressEvent t) Dom.event_listener writeonly_prop\n\n method upload : xmlHttpRequestUpload t readonly_prop\nend\n\nand xmlHttpRequestUpload = object ('self)\n inherit File.progressEventTarget\nend\n\nmodule Event = struct\n type typ = xmlHttpRequest File.progressEvent t Dom.Event.typ\n\n let readystatechange = Dom.Event.make \"readystatechange\"\n\n let loadstart = Dom.Event.make \"loadstart\"\n\n let progress = Dom.Event.make \"progress\"\n\n let abort = Dom.Event.make \"abort\"\n\n let error = Dom.Event.make \"error\"\n\n let load = Dom.Event.make \"load\"\n\n let timeout = Dom.Event.make \"timeout\"\n\n let loadend = Dom.Event.make \"loadend\"\nend\n\nexternal create : unit -> xmlHttpRequest Js.t = \"caml_xmlhttprequest_create\"\n"],"names":[],"mappings":"cCkHwC,WAdf,GDpGzB,eCoGyB,aAEP,GAFwC,eAExC,aAED,GAF2B,eAE3B,aAEH,GAF4B,eAE5B,aAEA,GAFsB,eAEtB,aAED,GAFuB,eAEvB,aAEG,GAFkB,eAElB,aAEA,GAFwB,eAExB,aAAwB","ignoreList":[0]}},{"offset":{"line":0,"column":92125},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/worker.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2015 OCamlPro: Grégoire Henry, Çağdaş Bozman.\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen Dom_html\nopen! Import\n\nclass type ['a, 'b] worker = object ('self)\n inherit eventTarget\n\n method onerror : ('self t, errorEvent t) event_listener writeonly_prop\n\n method onmessage : ('self t, 'b messageEvent t) event_listener writeonly_prop\n\n method postMessage : 'a -> unit meth\n\n method terminate : unit meth\nend\n\nand errorEvent = object\n inherit event\n\n method message : js_string t readonly_prop\n\n method filename : js_string t readonly_prop\n\n method lineno : int readonly_prop\n\n method colno : int readonly_prop\n\n method error : Unsafe.any readonly_prop\nend\n\nand ['a] messageEvent = object\n inherit event\n\n method data : 'a readonly_prop\nend\n\nlet worker = Unsafe.global##._Worker\n\nlet create script = new%js worker (string script)\n\nlet import_scripts scripts : unit =\n if not (Js.Optdef.test Unsafe.global##.importScripts)\n then invalid_arg \"Worker.import_scripts is undefined\";\n Unsafe.fun_call\n Unsafe.global##.importScripts\n (Array.map (fun s -> Unsafe.inject (string s)) (Array.of_list scripts))\n\nlet set_onmessage handler =\n if not (Js.Optdef.test Unsafe.global##.onmessage)\n then invalid_arg \"Worker.onmessage is undefined\";\n let js_handler (ev : 'a messageEvent Js.t) = handler ev##.data in\n Unsafe.global##.onmessage := wrap_callback js_handler\n\nlet post_message msg =\n if not (Js.Optdef.test Unsafe.global##.postMessage)\n then invalid_arg \"Worker.onmessage is undefined\";\n Unsafe.global##postMessage msg\n","(* generated code *)"],"names":[],"mappings":"EAyEE,eAAuB,OAA2B,eAA3C,aAA4C,QAC9C,yBACL,0BAA8B,C,KANuB,gBAAS,oB,EAF9D,eAAuB,OAAyB,eAAzC,aAA0C,QAC5C,yBACL,QAC6B,IAAwB,2B,EANhB,IAAU,C,GAJ/C,eAAuB,OAA6B,eAA7C,aAA8C,QAChD,yBAGH,GAA+C,EAFjD,OAEiD,aAAuB,OAAtE,eAAuE,eADvE,OADF,KAEyE,C,KAPzC,aAAe,kB,EAFb,OCvDpC,eDuDa,OAAuB","ignoreList":[1]}},{"offset":{"line":0,"column":92661},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/webSockets.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2012 Jacques-Pascal Deplaix\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen! Import\n\ntype readyState =\n | CONNECTING\n | OPEN\n | CLOSING\n | CLOSED\n\nclass type ['a] closeEvent = object\n inherit ['a] Dom.event\n\n method code : int Js.readonly_prop\n\n method reason : Js.js_string Js.t Js.readonly_prop\n\n method wasClean : bool Js.t Js.readonly_prop\nend\n\nclass type ['a] messageEvent = object\n inherit ['a] Dom.event\n\n method data : Js.js_string Js.t Js.readonly_prop\n\n method data_buffer : Typed_array.arrayBuffer Js.t Js.readonly_prop\n\n method data_blob : File.blob Js.t Js.readonly_prop\nend\n\nclass type webSocket = object ('self)\n inherit Dom_html.eventTarget\n\n method url : Js.js_string Js.t Js.readonly_prop\n\n method readyState : readyState Js.readonly_prop\n\n method bufferedAmount : int Js.readonly_prop\n\n method onopen : ('self Js.t, 'self Dom.event Js.t) Dom.event_listener Js.writeonly_prop\n\n method onclose :\n ('self Js.t, 'self closeEvent Js.t) Dom.event_listener Js.writeonly_prop\n\n method onerror : ('self Js.t, 'self Dom.event Js.t) Dom.event_listener Js.writeonly_prop\n\n method extensions : Js.js_string Js.t Js.readonly_prop\n\n method protocol : Js.js_string Js.t Js.readonly_prop\n\n method close : unit Js.meth\n\n method close_withCode : int -> unit Js.meth\n\n method close_withCodeAndReason : int -> Js.js_string Js.t -> unit Js.meth\n\n method onmessage :\n ('self Js.t, 'self messageEvent Js.t) Dom.event_listener Js.writeonly_prop\n\n method binaryType : Js.js_string Js.t Js.prop\n\n method send : Js.js_string Js.t -> unit Js.meth\n\n method send_buffer : Typed_array.arrayBuffer Js.t -> unit Js.meth\n\n method send_blob : File.blob Js.t -> unit Js.meth\nend\n\nlet webSocket = Js.Unsafe.global##._WebSocket\n\nlet webSocket_withProtocol = webSocket\n\nlet webSocket_withProtocols = webSocket\n\nlet is_supported () = Js.Optdef.test webSocket\n","(* generated code *)"],"names":[],"mappings":"EA4FsB,qCAAwB,C,KAND,ICtF7C,eDsFgB,SAA6B","ignoreList":[1]}},{"offset":{"line":0,"column":92758},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/webGL.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2012 Jérôme Vouillon\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen! Import\n\n(** 5.1 Types *)\n\ntype sizei = int\n\ntype sizeiptr = int\n\ntype intptr = int\n\ntype uint = int\n\ntype clampf = number_t\n\ntype void\n\ntype clearBufferMask = int\n\ntype beginMode\n\ntype blendingFactor\n\ntype blendMode\n\ntype bufferTarget\n\ntype bufferUsage\n\ntype cullFaceMode\n\ntype depthFunction\n\ntype enableCap\n\ntype errorCode\n\ntype frontFaceDir\n\ntype hintTarget\n\ntype hintMode\n\ntype textureUnit = int\n\ntype 'a pixelStoreParam\n\ntype stencilOp\n\ntype fbTarget\n\ntype attachmentPoint\n\ntype rbTarget\n\ntype texTarget\n\ntype 'a parameter\n\ntype 'a bufferParameter\n\ntype 'a vertexAttribParam\n\ntype vertexAttribPointerParam\n\ntype 'a attachParam\n\ntype framebufferStatus\n\ntype 'a renderbufferParam\n\ntype format\n\ntype pixelFormat\n\ntype pixelType\n\ntype 'a texParam\n\ntype dataType\n\ntype shaderType\n\ntype 'a programParam\n\ntype 'a shaderParam\n\ntype textureFilter\n\ntype wrapMode\n\ntype texFilter\n\ntype uniformType\n\ntype colorspaceConversion\n\ntype shaderPrecisionType\n\ntype objectType\n\n(** 5.2 WebGLContextAttributes *)\nclass type contextAttributes = object\n method alpha : bool t prop\n\n method depth : bool t prop\n\n method stencil : bool t prop\n\n method antialias : bool t prop\n\n method premultipliedAlpha : bool t prop\n\n method preserveDrawingBuffer : bool t prop\n\n method preferLowPowerToHighPerformance : bool t prop\n\n method failIfMajorPerformanceCaveat : bool t prop\nend\n\nlet defaultContextAttributes =\n Js.Unsafe.(\n obj\n [| \"alpha\", inject _true\n ; \"depth\", inject _true\n ; \"stencil\", inject _false\n ; \"antialias\", inject _true\n ; \"premultipliedAlpha\", inject _false\n ; \"preserveDrawingBuffer\", inject _false\n ; \"preferLowPowerToHighPerformance\", inject _false\n ; \"failIfMajorPerformanceCaveat\", inject _false\n |])\n\ntype buffer\n\ntype framebuffer\n\ntype program\n\ntype renderbuffer\n\ntype shader\n\ntype texture\n\ntype 'a uniformLocation\n\nclass type activeInfo = object\n method size : int readonly_prop\n\n method _type : uniformType readonly_prop\n\n method name : js_string t readonly_prop\nend\n\nclass type shaderPrecisionFormat = object\n method rangeMin : int readonly_prop\n\n method rangeMax : int readonly_prop\n\n method precision : int readonly_prop\nend\n\nclass type renderingContext = object\n (** 5.13.1 Attributes *)\n\n method canvas : Dom_html.canvasElement t readonly_prop\n\n method drawingBufferWidth : sizei readonly_prop\n\n method drawingBufferHeight : sizei readonly_prop\n\n (** 5.13.2 Getting information about the context *)\n\n method getContextAttributes : contextAttributes t meth\n\n (** 5.13.3 Setting and getting state *)\n\n method activeTexture : textureUnit -> unit meth\n\n method blendColor : clampf -> clampf -> clampf -> clampf -> unit meth\n\n method blendEquation : blendMode -> unit meth\n\n method blendEquationSeparate : blendMode -> blendMode -> unit meth\n\n method blendFunc : blendingFactor -> blendingFactor -> unit meth\n\n method blendFuncSeparate :\n blendingFactor -> blendingFactor -> blendingFactor -> blendingFactor -> unit meth\n\n method clearColor : clampf -> clampf -> clampf -> clampf -> unit meth\n\n method clearDepth : clampf -> unit meth\n\n method clearStencil : int -> unit meth\n\n method colorMask : bool t -> bool t -> bool t -> bool t -> unit meth\n\n method cullFace : cullFaceMode -> unit meth\n\n method depthFunc : depthFunction -> unit meth\n\n method depthMask : bool t -> unit meth\n\n method depthRange : clampf -> clampf -> unit meth\n\n method disable : enableCap -> unit meth\n\n method enable : enableCap -> unit meth\n\n method frontFace : frontFaceDir -> unit meth\n\n method getParameter : 'a. 'a parameter -> 'a meth\n\n method getError : errorCode meth\n\n method hint : hintTarget -> hintMode -> unit meth\n\n method isEnabled : enableCap -> bool t meth\n\n method lineWidth : number_t -> unit meth\n\n method pixelStorei : 'a. 'a pixelStoreParam -> 'a -> unit meth\n\n method polygonOffset : number_t -> number_t -> unit meth\n\n method sampleCoverage : clampf -> bool t -> unit meth\n\n method stencilFunc : depthFunction -> int -> uint -> unit meth\n\n method stencilFuncSeparate : cullFaceMode -> depthFunction -> int -> uint -> unit meth\n\n method stencilMask : uint -> unit meth\n\n method stencilMaskSeparate : cullFaceMode -> uint -> unit meth\n\n method stencilOp : stencilOp -> stencilOp -> stencilOp -> unit meth\n\n method stencilOpSeparate :\n cullFaceMode -> stencilOp -> stencilOp -> stencilOp -> unit meth\n\n (** 5.13.4 Viewing and clipping *)\n\n method scissor : int -> int -> sizei -> sizei -> unit meth\n\n method viewport : int -> int -> sizei -> sizei -> unit meth\n\n (** 5.13.5 Buffer objects *)\n\n method bindBuffer : bufferTarget -> buffer t -> unit meth\n\n method bindBuffer_ : bufferTarget -> buffer t opt -> unit meth\n\n method bufferData_create : bufferTarget -> sizeiptr -> bufferUsage -> unit meth\n\n method bufferData :\n bufferTarget -> #Typed_array.arrayBufferView t -> bufferUsage -> unit meth\n\n method bufferData_raw :\n bufferTarget -> Typed_array.arrayBuffer t -> bufferUsage -> unit meth\n\n method bufferSubData :\n bufferTarget -> intptr -> #Typed_array.arrayBufferView t -> unit meth\n\n method bufferSubData_raw :\n bufferTarget -> intptr -> Typed_array.arrayBuffer t -> unit meth\n\n method createBuffer : buffer t meth\n\n method deleteBuffer : buffer t -> unit meth\n\n method getBufferParameter : 'a. bufferTarget -> 'a bufferParameter -> 'a meth\n\n method isBuffer : buffer t -> bool t meth\n\n (** 5.13.6 Framebuffer objects *)\n\n method bindFramebuffer : fbTarget -> framebuffer t -> unit meth\n\n method bindFramebuffer_ : fbTarget -> framebuffer t opt -> unit meth\n\n method checkFramebufferStatus : fbTarget -> framebufferStatus meth\n\n method createFramebuffer : framebuffer t meth\n\n method deleteFramebuffer : framebuffer t -> unit meth\n\n method framebufferRenderbuffer :\n fbTarget -> attachmentPoint -> rbTarget -> renderbuffer t -> unit meth\n\n method framebufferTexture2D :\n fbTarget -> attachmentPoint -> texTarget -> texture t -> int -> unit meth\n\n method getFramebufferAttachmentParameter :\n 'a. fbTarget -> attachmentPoint -> 'a attachParam -> 'a meth\n\n method isFramebuffer : framebuffer t -> bool t meth\n\n (** 5.13.7 Renderbuffer objects *)\n\n method bindRenderbuffer : rbTarget -> renderbuffer t -> unit meth\n\n method bindRenderbuffer_ : rbTarget -> renderbuffer t opt -> unit meth\n\n method createRenderbuffer : renderbuffer t meth\n\n method deleteRenderbuffer : renderbuffer t -> unit meth\n\n method getRenderbufferParameter : 'a. rbTarget -> 'a renderbufferParam -> 'a meth\n\n method isRenderbuffer : renderbuffer t -> bool t meth\n\n method renderbufferStorage : rbTarget -> format -> sizei -> sizei -> unit meth\n\n (** 5.13.8 Texture objects *)\n\n method bindTexture : texTarget -> texture t -> unit meth\n\n method bindTexture_ : texTarget -> texture t opt -> unit meth\n\n method compressedTexImage2D :\n texTarget\n -> int\n -> pixelFormat\n -> sizei\n -> sizei\n -> int\n -> #Typed_array.arrayBufferView t\n -> unit meth\n\n method compressedTexSubImage2D :\n texTarget\n -> int\n -> int\n -> int\n -> sizei\n -> sizei\n -> pixelFormat\n -> #Typed_array.arrayBufferView t\n -> unit meth\n\n method copyTexImage2D :\n texTarget -> int -> pixelFormat -> int -> int -> sizei -> sizei -> int -> unit meth\n\n method copyTexSubImage2D :\n texTarget -> int -> int -> int -> int -> int -> sizei -> sizei -> unit meth\n\n method createTexture : texture t meth\n\n method deleteTexture : texture t -> unit meth\n\n method generateMipmap : texTarget -> unit meth\n\n method getTexParameter : texTarget -> 'a texParam -> 'a meth\n\n method isTexture : texture t -> bool t meth\n\n method texImage2D_new :\n texTarget\n -> int\n -> pixelFormat\n -> sizei\n -> sizei\n -> int\n -> pixelFormat\n -> pixelType\n -> void opt\n -> unit meth\n\n method texImage2D_fromView :\n texTarget\n -> int\n -> pixelFormat\n -> sizei\n -> sizei\n -> int\n -> pixelFormat\n -> pixelType\n -> #Typed_array.arrayBufferView t\n -> unit meth\n\n method texImage2D_fromImageData :\n texTarget\n -> int\n -> pixelFormat\n -> pixelFormat\n -> pixelType\n -> Dom_html.imageData t\n -> unit meth\n\n method texImage2D_fromImage :\n texTarget\n -> int\n -> pixelFormat\n -> pixelFormat\n -> pixelType\n -> Dom_html.imageElement t\n -> unit meth\n\n method texImage2D_fromCanvas :\n texTarget\n -> int\n -> pixelFormat\n -> pixelFormat\n -> pixelType\n -> Dom_html.canvasElement t\n -> unit meth\n\n method texImage2D_fromVideo :\n texTarget\n -> int\n -> pixelFormat\n -> pixelFormat\n -> pixelType\n -> Dom_html.videoElement t\n -> unit meth\n\n (* {[\n method texParameterf : texTarget -> texParam -> number_t -> unit meth\n ]}\n *)\n method texParameteri : texTarget -> 'a texParam -> 'a -> unit meth\n\n method texSubImage2D_fromView :\n texTarget\n -> int\n -> int\n -> int\n -> sizei\n -> sizei\n -> pixelFormat\n -> pixelType\n -> #Typed_array.arrayBufferView t\n -> unit meth\n\n method texSubImage2D_fromImageData :\n texTarget\n -> int\n -> int\n -> int\n -> pixelFormat\n -> pixelType\n -> Dom_html.imageData t\n -> unit meth\n\n method texSubImage2D_fromImage :\n texTarget\n -> int\n -> int\n -> int\n -> pixelFormat\n -> pixelType\n -> Dom_html.imageElement t\n -> unit meth\n\n method texSubImage2D_fromCanvas :\n texTarget\n -> int\n -> int\n -> int\n -> pixelFormat\n -> pixelType\n -> Dom_html.canvasElement t\n -> unit meth\n\n method texSubImage2D_fromVideo :\n texTarget\n -> int\n -> int\n -> int\n -> pixelFormat\n -> pixelType\n -> Dom_html.videoElement t\n -> unit meth\n\n (** 5.13.9 Programs and Shaders *)\n\n method attachShader : program t -> shader t -> unit meth\n\n method bindAttribLocation : program t -> uint -> js_string t -> unit meth\n\n method compileShader : shader t -> unit meth\n\n method createProgram : program t meth\n\n method createShader : shaderType -> shader t meth\n\n method deleteProgram : program t -> unit meth\n\n method deleteShader : shader t -> unit meth\n\n method detachShader : program t -> shader t -> unit meth\n\n method getAttachedShaders : program t -> shader t js_array t meth\n\n method getProgramParameter : 'a. program t -> 'a programParam -> 'a meth\n\n method getProgramInfoLog : program t -> js_string t meth\n\n method getShaderParameter : 'a. shader t -> 'a shaderParam -> 'a meth\n\n method getShaderPrecisionFormat :\n shaderType -> shaderPrecisionType -> shaderPrecisionFormat t meth\n\n method getShaderInfoLog : shader t -> js_string t meth\n\n method getShaderSource : shader t -> js_string t meth\n\n method isProgram : program t -> bool t meth\n\n method isShader : shader t -> bool t meth\n\n method linkProgram : program t -> unit meth\n\n method shaderSource : shader t -> js_string t -> unit meth\n\n method useProgram : program t -> unit meth\n\n method validateProgram : program t -> unit meth\n\n (** 5.13.10 Uniforms and attributes *)\n\n method disableVertexAttribArray : uint -> unit meth\n\n method enableVertexAttribArray : uint -> unit meth\n\n method getActiveAttrib : program t -> uint -> activeInfo t meth\n\n method getActiveUniform : program t -> uint -> activeInfo t meth\n\n method getAttribLocation : program t -> js_string t -> int meth\n\n method getUniform : 'a 'b. program t -> 'a uniformLocation t -> 'b meth\n\n method getUniformLocation : 'a. program t -> js_string t -> 'a uniformLocation t meth\n\n method getVertexAttrib : 'a. uint -> 'a vertexAttribParam -> 'a meth\n\n method getVertexAttribOffset : uint -> vertexAttribPointerParam -> sizeiptr meth\n\n method uniform1f : number_t uniformLocation t -> number_t -> unit meth\n\n method uniform1fv_typed :\n number_t uniformLocation t -> Typed_array.float32Array t -> unit meth\n\n method uniform1fv : number_t uniformLocation t -> number_t js_array t -> unit meth\n\n method uniform1i : int uniformLocation t -> int -> unit meth\n\n method uniform1iv_typed : int uniformLocation t -> Typed_array.int32Array t -> unit meth\n\n method uniform1iv : int uniformLocation t -> int js_array t -> unit meth\n\n method uniform2f : [ `vec2 ] uniformLocation t -> number_t -> number_t -> unit meth\n\n method uniform2fv_typed :\n [ `vec2 ] uniformLocation t -> Typed_array.float32Array t -> unit meth\n\n method uniform2fv : [ `vec2 ] uniformLocation t -> number_t js_array t -> unit meth\n\n method uniform2i : [ `ivec2 ] uniformLocation t -> int -> int -> unit meth\n\n method uniform2iv : [ `ivec2 ] uniformLocation t -> int js_array t -> unit meth\n\n method uniform2iv_typed :\n [ `ivec2 ] uniformLocation t -> Typed_array.int32Array t -> unit meth\n\n method uniform3f :\n [ `vec3 ] uniformLocation t -> number_t -> number_t -> number_t -> unit meth\n\n method uniform3fv_typed :\n [ `vec3 ] uniformLocation t -> Typed_array.float32Array t -> unit meth\n\n method uniform3fv : [ `vec3 ] uniformLocation t -> number_t js_array t -> unit meth\n\n method uniform3i : [ `ivec3 ] uniformLocation t -> int -> int -> int -> unit meth\n\n method uniform3iv : [ `ivec3 ] uniformLocation t -> int js_array t -> unit meth\n\n method uniform3iv_typed :\n [ `ivec3 ] uniformLocation t -> Typed_array.int32Array t -> unit meth\n\n method uniform4f :\n [ `vec4 ] uniformLocation t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> unit meth\n\n method uniform4fv_typed :\n [ `vec4 ] uniformLocation t -> Typed_array.float32Array t -> unit meth\n\n method uniform4fv : [ `vec4 ] uniformLocation t -> number_t js_array t -> unit meth\n\n method uniform4i : [ `ivec4 ] uniformLocation t -> int -> int -> int -> int -> unit meth\n\n method uniform4iv : [ `ivec4 ] uniformLocation t -> int js_array t -> unit meth\n\n method uniform4iv_typed :\n [ `ivec4 ] uniformLocation t -> Typed_array.int32Array t -> unit meth\n\n method uniformMatrix2fv :\n [ `mat2 ] uniformLocation t -> bool t -> number_t js_array t -> unit meth\n\n method uniformMatrix2fv_typed :\n [ `mat2 ] uniformLocation t -> bool t -> Typed_array.float32Array t -> unit meth\n\n method uniformMatrix3fv :\n [ `mat3 ] uniformLocation t -> bool t -> number_t js_array t -> unit meth\n\n method uniformMatrix3fv_typed :\n [ `mat3 ] uniformLocation t -> bool t -> Typed_array.float32Array t -> unit meth\n\n method uniformMatrix4fv :\n [ `mat4 ] uniformLocation t -> bool t -> number_t js_array t -> unit meth\n\n method uniformMatrix4fv_typed :\n [ `mat4 ] uniformLocation t -> bool t -> Typed_array.float32Array t -> unit meth\n\n method vertexAttrib1f : uint -> number_t -> unit meth\n\n method vertexAttrib1fv : uint -> number_t js_array t -> unit meth\n\n method vertexAttrib1fv_typed : uint -> Typed_array.float32Array t -> unit meth\n\n method vertexAttrib2f : uint -> number_t -> number_t -> unit meth\n\n method vertexAttrib2fv : uint -> number_t js_array t -> unit meth\n\n method vertexAttrib2fv_typed : uint -> Typed_array.float32Array t -> unit meth\n\n method vertexAttrib3f : uint -> number_t -> number_t -> number_t -> unit meth\n\n method vertexAttrib3fv : uint -> number_t js_array t -> unit meth\n\n method vertexAttrib3fv_typed : uint -> Typed_array.float32Array t -> unit meth\n\n method vertexAttrib4f :\n uint -> number_t -> number_t -> number_t -> number_t -> unit meth\n\n method vertexAttrib4fv : uint -> number_t js_array t -> unit meth\n\n method vertexAttrib4fv_typed : uint -> Typed_array.float32Array t -> unit meth\n\n method vertexAttribPointer :\n uint -> int -> dataType -> bool t -> sizei -> intptr -> unit meth\n\n (** 5.13.11 Writing to the drawing buffer *)\n\n method clear : clearBufferMask -> unit meth\n\n method drawArrays : beginMode -> int -> sizei -> unit meth\n\n method drawElements : beginMode -> sizei -> dataType -> intptr -> unit meth\n\n method finish : unit meth\n\n method flush : unit meth\n\n (** 5.13.12 Reading back pixels *)\n\n method readPixels :\n int\n -> int\n -> sizei\n -> sizei\n -> pixelFormat\n -> pixelType\n -> #Typed_array.arrayBufferView t\n -> unit meth\n\n (** 5.13.13 Detecting context lost events *)\n\n method isContextLost : bool t meth\n\n (** 5.13.14 Detecting and enabling extensions *)\n\n method getSupportedExtensions : js_string t js_array t meth\n\n method getExtension : 'a. js_string t -> 'a t opt meth\n\n (* Untyped! *)\n (** Constants *)\n\n method _DEPTH_BUFFER_BIT_ : clearBufferMask readonly_prop\n\n method _STENCIL_BUFFER_BIT_ : clearBufferMask readonly_prop\n\n method _COLOR_BUFFER_BIT_ : clearBufferMask readonly_prop\n\n method _POINTS : beginMode readonly_prop\n\n method _LINES : beginMode readonly_prop\n\n method _LINE_LOOP_ : beginMode readonly_prop\n\n method _LINE_STRIP_ : beginMode readonly_prop\n\n method _TRIANGLES : beginMode readonly_prop\n\n method _TRIANGLE_STRIP_ : beginMode readonly_prop\n\n method _TRIANGLE_FAN_ : beginMode readonly_prop\n\n method _ZERO : blendingFactor readonly_prop\n\n method _ONE : blendingFactor readonly_prop\n\n method _SRC_COLOR_ : blendingFactor readonly_prop\n\n method _ONE_MINUS_SRC_COLOR_ : blendingFactor readonly_prop\n\n method _SRC_ALPHA_ : blendingFactor readonly_prop\n\n method _ONE_MINUS_SRC_ALPHA_ : blendingFactor readonly_prop\n\n method _DST_ALPHA_ : blendingFactor readonly_prop\n\n method _ONE_MINUS_DST_ALPHA_ : blendingFactor readonly_prop\n\n method _DST_COLOR_ : blendingFactor readonly_prop\n\n method _ONE_MINUS_DST_COLOR_ : blendingFactor readonly_prop\n\n method _SRC_ALPHA_SATURATE_ : blendingFactor readonly_prop\n\n method _FUNC_ADD_ : blendMode readonly_prop\n\n method _FUNC_SUBTRACT_ : blendMode readonly_prop\n\n method _FUNC_REVERSE_SUBTRACT_ : blendMode readonly_prop\n\n method _CONSTANT_COLOR_ : blendMode readonly_prop\n\n method _ONE_MINUS_CONSTANT_COLOR_ : blendMode readonly_prop\n\n method _CONSTANT_ALPHA_ : blendMode readonly_prop\n\n method _ONE_MINUS_CONSTANT_ALPHA_ : blendMode readonly_prop\n\n method _ARRAY_BUFFER_ : bufferTarget readonly_prop\n\n method _ELEMENT_ARRAY_BUFFER_ : bufferTarget readonly_prop\n\n method _STREAM_DRAW_ : bufferUsage readonly_prop\n\n method _STATIC_DRAW_ : bufferUsage readonly_prop\n\n method _DYNAMIC_DRAW_ : bufferUsage readonly_prop\n\n method _FRONT : cullFaceMode readonly_prop\n\n method _BACK : cullFaceMode readonly_prop\n\n method _FRONT_AND_BACK_ : cullFaceMode readonly_prop\n\n method _CULL_FACE_ : enableCap readonly_prop\n\n method _BLEND : enableCap readonly_prop\n\n method _DITHER : enableCap readonly_prop\n\n method _STENCIL_TEST_ : enableCap readonly_prop\n\n method _DEPTH_TEST_ : enableCap readonly_prop\n\n method _SCISSOR_TEST_ : enableCap readonly_prop\n\n method _POLYGON_OFFSET_FILL_ : enableCap readonly_prop\n\n method _SAMPLE_ALPHA_TO_COVERAGE_ : enableCap readonly_prop\n\n method _SAMPLE_COVERAGE_ : enableCap readonly_prop\n\n method _NO_ERROR_ : errorCode readonly_prop\n\n method _INVALID_ENUM_ : errorCode readonly_prop\n\n method _INVALID_VALUE_ : errorCode readonly_prop\n\n method _INVALID_OPERATION_ : errorCode readonly_prop\n\n method _OUT_OF_MEMORY_ : errorCode readonly_prop\n\n method _CONTEXT_LOST_WEBGL_ : errorCode readonly_prop\n\n method _INVALID_FRAMEBUFFER_OPERATION_ : errorCode readonly_prop\n\n method _CW : frontFaceDir readonly_prop\n\n method _CCW : frontFaceDir readonly_prop\n\n method _DONT_CARE_ : hintMode readonly_prop\n\n method _FASTEST : hintMode readonly_prop\n\n method _NICEST : hintMode readonly_prop\n\n method _GENERATE_MIPMAP_HINT_ : hintTarget readonly_prop\n\n method _BLEND_EQUATION_ : blendMode parameter readonly_prop\n\n method _BLEND_EQUATION_RGB_ : blendMode parameter readonly_prop\n\n method _BLEND_EQUATION_ALPHA_ : blendMode parameter readonly_prop\n\n method _BLEND_DST_RGB_ : blendingFactor parameter readonly_prop\n\n method _BLEND_SRC_RGB_ : blendingFactor parameter readonly_prop\n\n method _BLEND_DST_ALPHA_ : blendingFactor parameter readonly_prop\n\n method _BLEND_SRC_ALPHA_ : blendingFactor parameter readonly_prop\n\n method _BLEND_COLOR_ : Typed_array.float32Array t parameter readonly_prop\n\n method _ARRAY_BUFFER_BINDING_ : buffer t opt parameter readonly_prop\n\n method _ELEMENT_ARRAY_BUFFER_BINDING_ : buffer t opt parameter readonly_prop\n\n method _CULL_FACE_PARAM : bool t parameter readonly_prop\n\n method _BLEND_PARAM : bool t parameter readonly_prop\n\n method _DITHER_PARAM : bool t parameter readonly_prop\n\n method _STENCIL_TEST_PARAM : bool t parameter readonly_prop\n\n method _DEPTH_TEST_PARAM : bool t parameter readonly_prop\n\n method _SCISSOR_TEST_PARAM : bool t parameter readonly_prop\n\n method _POLYGON_OFFSET_FILL_PARAM : bool t parameter readonly_prop\n\n method _LINE_WIDTH_ : number_t parameter readonly_prop\n\n method _ALIASED_POINT_SIZE_RANGE_ : Typed_array.float32Array t parameter readonly_prop\n\n method _ALIASED_LINE_WIDTH_RANGE_ : Typed_array.float32Array t parameter readonly_prop\n\n method _CULL_FACE_MODE_ : cullFaceMode parameter readonly_prop\n\n method _FRONT_FACE_ : frontFaceDir parameter readonly_prop\n\n method _DEPTH_RANGE_ : Typed_array.float32Array t parameter readonly_prop\n\n method _DEPTH_WRITEMASK_ : bool t parameter readonly_prop\n\n method _DEPTH_CLEAR_VALUE_ : number_t parameter readonly_prop\n\n method _DEPTH_FUNC_ : depthFunction parameter readonly_prop\n\n method _STENCIL_CLEAR_VALUE_ : int parameter readonly_prop\n\n method _STENCIL_FUNC_ : int parameter readonly_prop\n\n method _STENCIL_FAIL_ : int parameter readonly_prop\n\n method _STENCIL_PASS_DEPTH_FAIL_ : int parameter readonly_prop\n\n method _STENCIL_PASS_DEPTH_PASS_ : int parameter readonly_prop\n\n method _STENCIL_REF_ : int parameter readonly_prop\n\n method _STENCIL_VALUE_MASK_ : int parameter readonly_prop\n\n method _STENCIL_WRITEMASK_ : int parameter readonly_prop\n\n method _STENCIL_BACK_FUNC_ : int parameter readonly_prop\n\n method _STENCIL_BACK_FAIL_ : int parameter readonly_prop\n\n method _STENCIL_BACK_PASS_DEPTH_FAIL_ : int parameter readonly_prop\n\n method _STENCIL_BACK_PASS_DEPTH_PASS_ : int parameter readonly_prop\n\n method _STENCIL_BACK_REF_ : int parameter readonly_prop\n\n method _STENCIL_BACK_VALUE_MASK_ : int parameter readonly_prop\n\n method _STENCIL_BACK_WRITEMASK_ : int parameter readonly_prop\n\n method _VIEWPORT : Typed_array.int32Array t parameter readonly_prop\n\n method _SCISSOR_BOX_ : Typed_array.int32Array t parameter readonly_prop\n\n method _COLOR_CLEAR_VALUE_ : Typed_array.float32Array t parameter readonly_prop\n\n method _COLOR_WRITEMASK_ : bool t js_array t parameter readonly_prop\n\n method _UNPACK_ALIGNMENT_PARAM : int parameter readonly_prop\n\n method _PACK_ALIGNMENT_ : int parameter readonly_prop\n\n method _MAX_TEXTURE_SIZE_ : int parameter readonly_prop\n\n method _MAX_VIEWPORT_DIMS_ : Typed_array.int32Array t parameter readonly_prop\n\n method _SUBPIXEL_BITS_ : int parameter readonly_prop\n\n method _RED_BITS_ : int parameter readonly_prop\n\n method _GREEN_BITS_ : int parameter readonly_prop\n\n method _BLUE_BITS_ : int parameter readonly_prop\n\n method _ALPHA_BITS_ : int parameter readonly_prop\n\n method _DEPTH_BITS_ : int parameter readonly_prop\n\n method _STENCIL_BITS_ : int parameter readonly_prop\n\n method _POLYGON_OFFSET_UNITS_ : number_t parameter readonly_prop\n\n method _POLYGON_OFFSET_FACTOR_ : number_t parameter readonly_prop\n\n method _TEXTURE_BINDING_2D_ : texture t opt parameter readonly_prop\n\n method _TEXTURE_BINDING_CUBE_MAP_ : texture t opt parameter readonly_prop\n\n method _SAMPLE_BUFFERS_ : int parameter readonly_prop\n\n method _SAMPLES_ : int parameter readonly_prop\n\n method _SAMPLE_COVERAGE_VALUE_ : number_t parameter readonly_prop\n\n method _SAMPLE_COVERAGE_INVERT_ : bool t parameter readonly_prop\n\n method _NUM_COMPRESSED_TEXTURE_FORMATS_ : int parameter readonly_prop\n\n method _COMPRESSED_TEXTURE_FORMATS_ : Typed_array.uint32Array t parameter readonly_prop\n\n method _GENERATE_MIPMAP_HINT_PARAM_ : hintMode parameter readonly_prop\n\n method _BUFFER_SIZE_ : int bufferParameter readonly_prop\n\n method _BUFFER_USAGE_ : bufferUsage bufferParameter readonly_prop\n\n method _BYTE : dataType readonly_prop\n\n method _UNSIGNED_BYTE_DT : dataType readonly_prop\n\n method _SHORT : dataType readonly_prop\n\n method _UNSIGNED_SHORT_ : dataType readonly_prop\n\n method _INT : dataType readonly_prop\n\n method _UNSIGNED_INT_ : dataType readonly_prop\n\n method _FLOAT : dataType readonly_prop\n\n method _UNSIGNED_BYTE_ : pixelType readonly_prop\n\n method _UNSIGNED_SHORT_4_4_4_4_ : pixelType readonly_prop\n\n method _UNSIGNED_SHORT_5_5_5_1_ : pixelType readonly_prop\n\n method _UNSIGNED_SHORT_5_6_5_ : pixelType readonly_prop\n\n method _ALPHA : pixelFormat readonly_prop\n\n method _RGB : pixelFormat readonly_prop\n\n method _RGBA : pixelFormat readonly_prop\n\n method _LUMINANCE : pixelFormat readonly_prop\n\n method _LUMINANCE_ALPHA_ : pixelFormat readonly_prop\n\n method _STENCIL_INDEX_ : pixelFormat readonly_prop\n\n method _DEPTH_STENCIL_ : pixelFormat readonly_prop\n\n method _DEPTH_COMPONENT_ : pixelFormat readonly_prop\n\n method _FRAGMENT_SHADER_ : shaderType readonly_prop\n\n method _VERTEX_SHADER_ : shaderType readonly_prop\n\n method _MAX_VERTEX_ATTRIBS_ : int parameter readonly_prop\n\n method _MAX_VERTEX_UNIFORM_VECTORS_ : int parameter readonly_prop\n\n method _MAX_VARYING_VECTORS_ : int parameter readonly_prop\n\n method _MAX_COMBINED_TEXTURE_IMAGE_UNITS_ : int parameter readonly_prop\n\n method _MAX_VERTEX_TEXTURE_IMAGE_UNITS_ : int parameter readonly_prop\n\n method _MAX_TEXTURE_IMAGE_UNITS_ : int parameter readonly_prop\n\n method _MAX_FRAGMENT_UNIFORM_VECTORS_ : int parameter readonly_prop\n\n method _SHADER_TYPE_ : shaderType shaderParam readonly_prop\n\n method _DELETE_STATUS_ : bool t shaderParam readonly_prop\n\n method _COMPILE_STATUS_ : bool t shaderParam readonly_prop\n\n method _DELETE_STATUS_PROG : bool t programParam readonly_prop\n\n method _LINK_STATUS_ : bool t programParam readonly_prop\n\n method _VALIDATE_STATUS_ : bool t programParam readonly_prop\n\n method _ATTACHED_SHADERS_ : int programParam readonly_prop\n\n method _ACTIVE_UNIFORMS_ : int programParam readonly_prop\n\n method _ACTIVE_ATTRIBUTES_ : int programParam readonly_prop\n\n method _SHADING_LANGUAGE_VERSION_ : js_string t parameter readonly_prop\n\n method _CURRENT_PROGRAM_ : program t opt parameter readonly_prop\n\n method _VENDOR : js_string t parameter readonly_prop\n\n method _RENDERER : js_string t parameter readonly_prop\n\n method _VERSION : js_string t parameter readonly_prop\n\n method _MAX_CUBE_MAP_TEXTURE_SIZE_ : int parameter readonly_prop\n\n method _ACTIVE_TEXTURE_ : textureUnit parameter readonly_prop\n\n method _FRAMEBUFFER_BINDING_ : framebuffer t opt parameter readonly_prop\n\n method _RENDERBUFFER_BINDING_ : renderbuffer t opt parameter readonly_prop\n\n method _MAX_RENDERBUFFER_SIZE : int parameter readonly_prop\n\n method _NEVER : depthFunction readonly_prop\n\n method _LESS : depthFunction readonly_prop\n\n method _EQUAL : depthFunction readonly_prop\n\n method _LEQUAL : depthFunction readonly_prop\n\n method _GREATER : depthFunction readonly_prop\n\n method _NOTEQUAL : depthFunction readonly_prop\n\n method _GEQUAL : depthFunction readonly_prop\n\n method _ALWAYS : depthFunction readonly_prop\n\n method _KEEP : stencilOp readonly_prop\n\n method _REPLACE : stencilOp readonly_prop\n\n method _INCR : stencilOp readonly_prop\n\n method _DECR : stencilOp readonly_prop\n\n method _INVERT : stencilOp readonly_prop\n\n method _INCR_WRAP_ : stencilOp readonly_prop\n\n method _DECR_WRAP_ : stencilOp readonly_prop\n\n method _ZERO_ : stencilOp readonly_prop\n\n method _NEAREST : texFilter readonly_prop\n\n method _LINEAR : texFilter readonly_prop\n\n method _NEAREST_MIPMAP_NEAREST_ : texFilter readonly_prop\n\n method _LINEAR_MIPMAP_NEAREST_ : texFilter readonly_prop\n\n method _NEAREST_MIPMAP_LINEAR_ : texFilter readonly_prop\n\n method _LINEAR_MIPMAP_LINEAR_ : texFilter readonly_prop\n\n method _TEXTURE_MAG_FILTER_ : texFilter texParam readonly_prop\n\n method _TEXTURE_MIN_FILTER_ : texFilter texParam readonly_prop\n\n method _TEXTURE_WRAP_S_ : wrapMode texParam readonly_prop\n\n method _TEXTURE_WRAP_T_ : wrapMode texParam readonly_prop\n\n method _NONE_OT : objectType readonly_prop\n\n method _TEXTURE_OT : objectType readonly_prop\n\n method _RENDERBUFFER_OT : objectType readonly_prop\n\n method _TEXTURE_2D_ : texTarget readonly_prop\n\n method _TEXTURE_CUBE_MAP_ : texTarget readonly_prop\n\n method _TEXTURE_CUBE_MAP_POSITIVE_X_ : texTarget readonly_prop\n\n method _TEXTURE_CUBE_MAP_NEGATIVE_X_ : texTarget readonly_prop\n\n method _TEXTURE_CUBE_MAP_POSITIVE_Y_ : texTarget readonly_prop\n\n method _TEXTURE_CUBE_MAP_NEGATIVE_Y_ : texTarget readonly_prop\n\n method _TEXTURE_CUBE_MAP_POSITIVE_Z_ : texTarget readonly_prop\n\n method _TEXTURE_CUBE_MAP_NEGATIVE_Z_ : texTarget readonly_prop\n\n method _TEXTURE0 : textureUnit readonly_prop\n\n method _TEXTURE1 : textureUnit readonly_prop\n\n method _TEXTURE2 : textureUnit readonly_prop\n\n method _TEXTURE3 : textureUnit readonly_prop\n\n method _TEXTURE4 : textureUnit readonly_prop\n\n method _TEXTURE5 : textureUnit readonly_prop\n\n method _TEXTURE6 : textureUnit readonly_prop\n\n method _TEXTURE7 : textureUnit readonly_prop\n\n method _TEXTURE8 : textureUnit readonly_prop\n\n method _TEXTURE9 : textureUnit readonly_prop\n\n method _TEXTURE10 : textureUnit readonly_prop\n\n method _TEXTURE11 : textureUnit readonly_prop\n\n method _TEXTURE12 : textureUnit readonly_prop\n\n method _TEXTURE13 : textureUnit readonly_prop\n\n method _TEXTURE14 : textureUnit readonly_prop\n\n method _TEXTURE15 : textureUnit readonly_prop\n\n method _TEXTURE16 : textureUnit readonly_prop\n\n method _TEXTURE17 : textureUnit readonly_prop\n\n method _TEXTURE18 : textureUnit readonly_prop\n\n method _TEXTURE19 : textureUnit readonly_prop\n\n method _TEXTURE20 : textureUnit readonly_prop\n\n method _TEXTURE21 : textureUnit readonly_prop\n\n method _TEXTURE22 : textureUnit readonly_prop\n\n method _TEXTURE23 : textureUnit readonly_prop\n\n method _TEXTURE24 : textureUnit readonly_prop\n\n method _TEXTURE25 : textureUnit readonly_prop\n\n method _TEXTURE26 : textureUnit readonly_prop\n\n method _TEXTURE27 : textureUnit readonly_prop\n\n method _TEXTURE28 : textureUnit readonly_prop\n\n method _TEXTURE29 : textureUnit readonly_prop\n\n method _TEXTURE30 : textureUnit readonly_prop\n\n method _TEXTURE31 : textureUnit readonly_prop\n\n method _REPEAT : wrapMode readonly_prop\n\n method _CLAMP_TO_EDGE_ : wrapMode readonly_prop\n\n method _MIRRORED_REPEAT_ : wrapMode readonly_prop\n\n method _FLOAT_ : uniformType readonly_prop\n\n method _FLOAT_VEC2_ : uniformType readonly_prop\n\n method _FLOAT_VEC3_ : uniformType readonly_prop\n\n method _FLOAT_VEC4_ : uniformType readonly_prop\n\n method _INT_ : uniformType readonly_prop\n\n method _INT_VEC2_ : uniformType readonly_prop\n\n method _INT_VEC3_ : uniformType readonly_prop\n\n method _INT_VEC4_ : uniformType readonly_prop\n\n method _BOOL_ : uniformType readonly_prop\n\n method _BOOL_VEC2_ : uniformType readonly_prop\n\n method _BOOL_VEC3_ : uniformType readonly_prop\n\n method _BOOL_VEC4_ : uniformType readonly_prop\n\n method _FLOAT_MAT2_ : uniformType readonly_prop\n\n method _FLOAT_MAT3_ : uniformType readonly_prop\n\n method _FLOAT_MAT4_ : uniformType readonly_prop\n\n method _SAMPLER_2D_ : uniformType readonly_prop\n\n method _SAMPLER_CUBE_ : uniformType readonly_prop\n\n method _VERTEX_ATTRIB_ARRAY_ENABLED_ : bool t vertexAttribParam readonly_prop\n\n method _VERTEX_ATTRIB_ARRAY_SIZE_ : int vertexAttribParam readonly_prop\n\n method _VERTEX_ATTRIB_ARRAY_STRIDE_ : int vertexAttribParam readonly_prop\n\n method _VERTEX_ATTRIB_ARRAY_TYPE_ : int vertexAttribParam readonly_prop\n\n method _VERTEX_ATTRIB_ARRAY_NORMALIZED_ : bool t vertexAttribParam readonly_prop\n\n method _VERTEX_ATTRIB_ARRAY_POINTER_ : vertexAttribPointerParam readonly_prop\n\n method _VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ :\n buffer t opt vertexAttribParam readonly_prop\n\n method _CURRENT_VERTEX_ATTRIB_ :\n Typed_array.float32Array t vertexAttribParam readonly_prop\n\n method _LOW_FLOAT_ : shaderPrecisionType readonly_prop\n\n method _MEDIUM_FLOAT_ : shaderPrecisionType readonly_prop\n\n method _HIGH_FLOAT_ : shaderPrecisionType readonly_prop\n\n method _LOW_INT_ : shaderPrecisionType readonly_prop\n\n method _MEDIUM_INT_ : shaderPrecisionType readonly_prop\n\n method _HIGH_INT_ : shaderPrecisionType readonly_prop\n\n method _FRAMEBUFFER : fbTarget readonly_prop\n\n method _RENDERBUFFER : rbTarget readonly_prop\n\n method _RGBA4 : format readonly_prop\n\n method _RGB5_A1_ : format readonly_prop\n\n method _RGB565 : format readonly_prop\n\n method _DEPTH_COMPONENT16_ : format readonly_prop\n\n method _STENCIL_INDEX8_ : format readonly_prop\n\n method _RENDERBUFFER_WIDTH_ : int renderbufferParam readonly_prop\n\n method _RENDERBUFFER_HEIGHT_ : int renderbufferParam readonly_prop\n\n method _RENDERBUFFER_INTERNAL_FORMAT_ : format renderbufferParam readonly_prop\n\n method _RENDERBUFFER_RED_SIZE_ : int renderbufferParam readonly_prop\n\n method _RENDERBUFFER_GREEN_SIZE_ : int renderbufferParam readonly_prop\n\n method _RENDERBUFFER_BLUE_SIZE_ : int renderbufferParam readonly_prop\n\n method _RENDERBUFFER_ALPHA_SIZE_ : int renderbufferParam readonly_prop\n\n method _RENDERBUFFER_DEPTH_SIZE_ : int renderbufferParam readonly_prop\n\n method _RENDERBUFFER_STENCIL_SIZE_ : int renderbufferParam readonly_prop\n\n method _FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_ : objectType attachParam readonly_prop\n\n method _FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_RENDERBUFFER :\n renderbuffer t attachParam readonly_prop\n\n method _FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_TEXTURE : texture t attachParam readonly_prop\n\n method _FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_ : int attachParam readonly_prop\n\n method _FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_ : int attachParam readonly_prop\n\n method _COLOR_ATTACHMENT0_ : attachmentPoint readonly_prop\n\n method _DEPTH_ATTACHMENT_ : attachmentPoint readonly_prop\n\n method _STENCIL_ATTACHMENT_ : attachmentPoint readonly_prop\n\n method _DEPTH_STENCIL_ATTACHMENT_ : attachmentPoint readonly_prop\n\n method _FRAMEBUFFER_COMPLETE_ : framebufferStatus readonly_prop\n\n method _FRAMEBUFFER_INCOMPLETE_ATTACHMENT_ : framebufferStatus readonly_prop\n\n method _FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_ : framebufferStatus readonly_prop\n\n method _FRAMEBUFFER_INCOMPLETE_DIMENSIONS_ : framebufferStatus readonly_prop\n\n method _FRAMEBUFFER_UNSUPPORTED_ : framebufferStatus readonly_prop\n\n method _UNPACK_FLIP_Y_WEBGL_PARAM : bool t parameter readonly_prop\n\n method _UNPACK_PREMULTIPLY_ALPHA_WEBGL_PARAM : bool t parameter readonly_prop\n\n method _UNPACK_COLORSPACE_CONVERSION_WEBGL_PARAM :\n colorspaceConversion parameter readonly_prop\n\n method _NONE : colorspaceConversion readonly_prop\n\n method _BROWSER_DEFAULT_WEBGL_ : colorspaceConversion readonly_prop\n\n method _UNPACK_ALIGNMENT_ : int pixelStoreParam readonly_prop\n\n method _UNPACK_FLIP_Y_WEBGL_ : bool t pixelStoreParam readonly_prop\n\n method _UNPACK_PREMULTIPLY_ALPHA_WEBGL_ : bool t pixelStoreParam readonly_prop\n\n method _UNPACK_COLORSPACE_CONVERSION_WEBGL_ : int pixelStoreParam readonly_prop\nend\n\n(** 5.14 WebGLContextEvent *)\n\nclass type contextEvent = object\n inherit Dom_html.event\n\n method statusMessage : js_string t readonly_prop\nend\n\nmodule Event = struct\n let webglcontextlost = Dom_html.Event.make \"webglcontextlost\"\n\n let webglcontextrestored = Dom_html.Event.make \"webglcontextrestored\"\n\n let webglcontextcreationerror = Dom_html.Event.make \"webglcontextcreationerror\"\nend\n\n(****)\n\nclass type canvasElement = object\n method getContext : js_string t -> renderingContext t opt meth\n\n method getContext_ : js_string t -> contextAttributes t -> renderingContext t opt meth\nend\n\nlet getContext (c : Dom_html.canvasElement t) =\n let c : canvasElement t = Js.Unsafe.coerce c in\n let ctx = c##getContext (Js.string \"webgl\") in\n if Opt.test ctx then ctx else c##(getContext (Js.string \"experimental-webgl\"))\n\nlet getContextWithAttributes (c : Dom_html.canvasElement t) attribs =\n let c : canvasElement t = Js.Unsafe.coerce c in\n let ctx = c##getContext_ (Js.string \"webgl\") attribs in\n if Opt.test ctx then ctx else c##getContext_ (Js.string \"experimental-webgl\") attribs\n","(* generated code *)"],"names":[],"mappings":"KA81CY,oBACV,eAAG,aAAY,QAA8D,mBAAxD,GAAgE,C,KAN3E,gBACV,eAAG,aAAY,QAA8D,eAAxD,GAAyD,C,MC11ChF,+DD40CiF,IC50CjF,OD8II,mCA8rC6E,IAJxD,GAjrCjB,iBAirCiB,aAEI,GAFkC,iBAElC,aAEK,GAFqC,iBAErC,aAA+C,sB,EC50CjF,c,QAAA","ignoreList":[1]}},{"offset":{"line":0,"column":93212},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/regexp.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Raphaël Proust, Jérôme Vouillon\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\n\ntype regexp = Js.regExp Js.t\n\ntype result = Js.match_result Js.t\n\nlet regexp s = new%js Js.regExp_withFlags (Js.bytestring s) (Js.string \"g\")\n\nlet regexp_case_fold s = new%js Js.regExp_withFlags (Js.bytestring s) (Js.string \"gi\")\n\nlet regexp_with_flag s f =\n new%js Js.regExp_withFlags (Js.bytestring s) (Js.string (\"g\" ^ f))\n\nlet blunt_str_array_get a i =\n Js.to_bytestring (Js.Optdef.get (Js.array_get a i) (fun () -> assert false))\n\nlet string_match r s i =\n r##.lastIndex := i;\n Js.Opt.to_option (Js.Opt.map (r##exec (Js.bytestring s)) Js.match_result)\n\nlet search r s i =\n r##.lastIndex := i;\n Js.Opt.to_option\n (Js.Opt.map\n (r##exec (Js.bytestring s))\n (fun res_pre ->\n let res = Js.match_result res_pre in\n res##.index, res))\n\nlet search_forward = search\n\nlet matched_string r = blunt_str_array_get r 0\n\nlet matched_group r i =\n Js.Optdef.to_option (Js.Optdef.map (Js.array_get r i) Js.to_bytestring)\n\nlet quote_repl_re = new%js Js.regExp_withFlags (Js.string \"[$]\") (Js.string \"g\")\n\nlet quote_repl s = (Js.bytestring s)##replace quote_repl_re (Js.string \"$$$$\")\n\nlet global_replace r s s_by =\n r##.lastIndex := 0;\n Js.to_bytestring (Js.bytestring s)##(replace r (quote_repl s_by))\n\nlet replace_first r s s_by =\n let flags =\n match Js.to_bool r##.ignoreCase, Js.to_bool r##.multiline with\n | false, false -> Js.string \"\"\n | false, true -> Js.string \"m\"\n | true, false -> Js.string \"i\"\n | true, true -> Js.string \"mi\"\n in\n let r' = new%js Js.regExp_withFlags r##.source flags in\n Js.to_bytestring (Js.bytestring s)##(replace r' (quote_repl s_by))\n\nlet list_of_js_array a =\n let rec aux accu idx =\n if idx < 0 then accu else aux (blunt_str_array_get a idx :: accu) (idx - 1)\n in\n aux [] (a##.length - 1)\n\nlet split r s =\n r##.lastIndex := 0;\n list_of_js_array (Js.str_array (Js.bytestring s)##(split_regExp r))\n\nlet bounded_split r s i =\n r##.lastIndex := 0;\n list_of_js_array (Js.str_array (Js.bytestring s)##(split_regExpLimited r i))\n\n(* More constructors *)\n\nlet quote_re = regexp \"[\\\\][()\\\\\\\\|+*.?{}^$]\"\n\nlet quote s = Js.to_bytestring (Js.bytestring s)##(replace quote_re (Js.string \"\\\\$&\"))\n\nlet regexp_string s = regexp (quote s)\n\nlet regexp_string_case_fold s = regexp_case_fold (quote s)\n","(* generated code *)"],"names":[],"mappings":"EAgGiD,eAAS,Q,EAF7B,eAAS,Q,KAF8B,OAArC,yBAAjB,GAAyE,C,EAPrF,gBAC+B,oBAA4C,OAA1D,aAA2D,I,EAL5E,gBAC+B,gBAAmC,OAAjD,aAAkD,I,OAJ3D,SAAU,mBAFhB,WAA0B,OAA8B,IAAzB,SAAyB,eAAxC,IAEK,C,SAbJ,gBAAX,IAAsC,SAAX,IAAwB,UAC3B,GACA,GAF2B,YAG3B,GACA,GAFA,YAEA,EAEI,WAAU,OAArC,iBACuC,aAA/B,oBAAjB,GAAkE,C,KAZlE,uBAC+C,aAA9B,oBAAjB,GAAiE,C,EAJhD,KAAiB,oBAA0C,C,ECzD9E,M,EDqDqC,IAAnC,OAAmC,aAAf,GAAiC,eAAjC,aAAmD,6B,EAHlD,SAAuB,C,EAJ1B,IADD,EAAV,OAAU,eACV,OAAW,MAAK,C,EANvB,cAGc,OAAT,aADH,GAC8B,eAD9B,aAIuB,6B,EAVzB,cAAkB,SACoB,OAAT,aAAZ,EAAuC,eAAvC,aAAwD,6B,EAJX,eAAY,C,EAA1C,IAAhC,OAAgC,aAAf,GAAiC,eAAjC,aAAjB,GAA4E,C,EAHpB,KAAxD,OAAwD,aAAX,IAAlB,OAAiB,sBAAsB,C,EAHhB,OAAiB,uBAAiB,C,EAF5C,OAAiB,uBAAgB,C,YA8BK,MAAhB,OAA5C,iBAA4D,uBAmCnC,gBAA9B,UAA8B,0D,EC1F7C,c,QAAA,8B,EAAA,c,EAAA,c,WAAA","ignoreList":[1]}},{"offset":{"line":0,"column":94608},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/url.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Raphaël Proust\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\n\n(* Url tampering. *)\n\nlet split c s = Js.str_array (s##split (Js.string (String.make 1 c)))\n\nlet split_2 c s =\n let index = s##indexOf (Js.string (String.make 1 c)) in\n if index < 0 then Js.undefined else Js.def (s##slice 0 index, s##slice_end (index + 1))\n\nexception Local_exn\n\nlet interrupt () = raise Local_exn\n\n(* url (AKA percent) encoding/decoding *)\n\nlet plus_re = Regexp.regexp_string \"+\"\n\nlet escape_plus s = Regexp.global_replace plus_re s \"%2B\"\n\nlet unescape_plus s = Regexp.global_replace plus_re s \" \"\n\nlet plus_re_js_string = new%js Js.regExp_withFlags (Js.string \"\\\\+\") (Js.string \"g\")\n\nlet unescape_plus_js_string s =\n plus_re_js_string##.lastIndex := 0;\n s##replace plus_re_js_string (Js.string \" \")\n\nlet urldecode_js_string_string s =\n Js.to_bytestring (Js.unescape (unescape_plus_js_string s))\n\nlet urldecode s = Js.to_bytestring (Js.unescape (Js.bytestring (unescape_plus s)))\n\n(*let urlencode_js_string_string s =\n Js.to_bytestring (Js.escape s)*)\n\nlet urlencode ?(with_plus = true) s =\n if with_plus\n then escape_plus (Js.to_bytestring (Js.escape (Js.bytestring s)))\n else Js.to_bytestring (Js.escape (Js.bytestring s))\n\ntype http_url =\n { hu_host : string (** The host part of the url. *)\n ; hu_port : int (** The port for the connection if any. *)\n ; hu_path : string list (** The path split on ['/'] characters. *)\n ; hu_path_string : string (** The original entire path. *)\n ; hu_arguments : (string * string) list\n (** Arguments as a field-value\n association list.*)\n ; hu_fragment : string (** The fragment part (after the ['#'] character). *)\n }\n(** The type for HTTP url. *)\n\ntype file_url =\n { fu_path : string list\n ; fu_path_string : string\n ; fu_arguments : (string * string) list\n ; fu_fragment : string\n }\n(** The type for local file urls. *)\n\ntype url =\n | Http of http_url\n | Https of http_url\n | File of file_url\n (** The type for urls. [File] is for local files and [Exotic s] is for\n unknown/unsupported protocols. *)\n\nexception Not_an_http_protocol\n\nlet is_secure prot_string =\n match Js.to_bytestring prot_string##toLowerCase with\n | \"https:\" | \"https\" -> true\n | \"http:\" | \"http\" -> false\n | \"file:\" | \"file\" | _ -> raise Not_an_http_protocol\n\n(* port number *)\nlet default_http_port = 80\n\nlet default_https_port = 443\n\n(* path *)\nlet path_of_path_string s =\n let l = String.length s in\n let rec aux i =\n let j = try String.index_from s i '/' with Not_found -> l in\n let word = String.sub s i (j - i) in\n if j >= l then [ word ] else word :: aux (j + 1)\n in\n match aux 0 with\n | [ \"\" ] -> []\n | [ \"\"; \"\" ] -> [ \"\" ]\n | a -> a\n\n(* Arguments *)\nlet encode_arguments l =\n String.concat \"&\" (List.map (fun (n, v) -> urlencode n ^ \"=\" ^ urlencode v) l)\n\nlet decode_arguments_js_string s =\n let arr = split '&' s in\n let len = arr##.length in\n let name_value_split s = split_2 '=' s in\n let rec aux acc idx =\n if idx < 0\n then acc\n else\n try\n aux\n (Js.Optdef.case (Js.array_get arr idx) interrupt (fun s ->\n Js.Optdef.case (name_value_split s) interrupt (fun (x, y) ->\n let get = urldecode_js_string_string in\n get x, get y))\n :: acc)\n (pred idx)\n with Local_exn -> aux acc (pred idx)\n in\n aux [] (len - 1)\n\nlet decode_arguments s = decode_arguments_js_string (Js.bytestring s)\n\nlet url_re =\n new%js Js.regExp\n (Js.bytestring\n \"^([Hh][Tt][Tt][Pp][Ss]?)://([0-9a-zA-Z.-]+|\\\\[[0-9a-zA-Z.-]+\\\\]|\\\\[[0-9A-Fa-f:.]+\\\\])?(:([0-9]+))?(/([^\\\\?#]*)(\\\\?([^#]*))?(#(.*))?)?$\")\n\nlet file_re =\n new%js Js.regExp\n (Js.bytestring \"^([Ff][Ii][Ll][Ee])://([^\\\\?#]*)(\\\\?([^#]*))?(#(.*))?$\")\n\nlet url_of_js_string s =\n Js.Opt.case\n (url_re##exec s)\n (fun () ->\n Js.Opt.case\n (file_re##exec s)\n (fun () -> None)\n (fun handle ->\n let res = Js.match_result handle in\n let path_str =\n urldecode_js_string_string (Js.Optdef.get (Js.array_get res 2) interrupt)\n in\n Some\n (File\n { fu_path = path_of_path_string path_str\n ; fu_path_string = path_str\n ; fu_arguments =\n decode_arguments_js_string\n (Js.Optdef.get (Js.array_get res 4) (fun () -> Js.bytestring \"\"))\n ; fu_fragment =\n Js.to_bytestring\n (Js.Optdef.get (Js.array_get res 6) (fun () -> Js.bytestring \"\"))\n })))\n (fun handle ->\n let res = Js.match_result handle in\n let ssl = is_secure (Js.Optdef.get (Js.array_get res 1) interrupt) in\n let port_of_string = function\n | \"\" -> if ssl then 443 else 80\n | s -> int_of_string s\n in\n let path_str =\n urldecode_js_string_string\n (Js.Optdef.get (Js.array_get res 6) (fun () -> Js.bytestring \"\"))\n in\n let url =\n { hu_host =\n urldecode_js_string_string (Js.Optdef.get (Js.array_get res 2) interrupt)\n ; hu_port =\n port_of_string\n (Js.to_bytestring\n (Js.Optdef.get (Js.array_get res 4) (fun () -> Js.bytestring \"\")))\n ; hu_path = path_of_path_string path_str\n ; hu_path_string = path_str\n ; hu_arguments =\n decode_arguments_js_string\n (Js.Optdef.get (Js.array_get res 8) (fun () -> Js.bytestring \"\"))\n ; hu_fragment =\n urldecode_js_string_string\n (Js.Optdef.get (Js.array_get res 10) (fun () -> Js.bytestring \"\"))\n }\n in\n Some (if ssl then Https url else Http url))\n\nlet url_of_string s = url_of_js_string (Js.bytestring s)\n\nlet string_of_url = function\n | File { fu_path = path; fu_arguments = args; fu_fragment = frag; _ } -> (\n \"file://\"\n ^ String.concat \"/\" (List.map (fun x -> urlencode x) path)\n ^ (match args with\n | [] -> \"\"\n | l -> \"?\" ^ encode_arguments l)\n ^\n match frag with\n | \"\" -> \"\"\n | s -> \"#\" ^ urlencode s)\n | Http\n { hu_host = host\n ; hu_port = port\n ; hu_path = path\n ; hu_arguments = args\n ; hu_fragment = frag\n ; _\n } -> (\n \"http://\"\n ^ urlencode host\n ^ (match port with\n | 80 -> \"\"\n | n -> \":\" ^ string_of_int n)\n ^ \"/\"\n ^ String.concat \"/\" (List.map (fun x -> urlencode x) path)\n ^ (match args with\n | [] -> \"\"\n | l -> \"?\" ^ encode_arguments l)\n ^\n match frag with\n | \"\" -> \"\"\n | s -> \"#\" ^ urlencode s)\n | Https\n { hu_host = host\n ; hu_port = port\n ; hu_path = path\n ; hu_arguments = args\n ; hu_fragment = frag\n ; _\n } -> (\n \"https://\"\n ^ urlencode host\n ^ (match port with\n | 443 -> \"\"\n | n -> \":\" ^ string_of_int n)\n ^ \"/\"\n ^ String.concat \"/\" (List.map (fun x -> urlencode x) path)\n ^ (match args with\n | [] -> \"\"\n | l -> \"?\" ^ encode_arguments l)\n ^\n match frag with\n | \"\" -> \"\"\n | s -> \"#\" ^ urlencode s)\n\nmodule Current = struct\n let l =\n if Js.Optdef.test (Js.Optdef.return Dom_html.window##.location)\n then Dom_html.window##.location\n else\n let empty = Js.string \"\" in\n object%js\n val mutable href = empty\n\n val mutable protocol = empty\n\n val mutable host = empty\n\n val mutable hostname = empty\n\n val mutable port = empty\n\n val mutable pathname = empty\n\n val mutable search = empty\n\n val mutable hash = empty\n\n val origin = empty\n\n method reload = ()\n\n method replace _ = ()\n\n method assign _ = ()\n end\n\n let host = urldecode_js_string_string l##.hostname\n\n let protocol = urldecode_js_string_string l##.protocol\n\n let port =\n (fun () ->\n try Some (int_of_string (Js.to_bytestring l##.port)) with Failure _ -> None)\n ()\n\n let path_string = urldecode_js_string_string l##.pathname\n\n let path = path_of_path_string path_string\n\n let arguments =\n decode_arguments_js_string\n (if Js.equals (l##.search##charAt 0) (Js.string \"?\")\n then l##.search##slice_end 1\n else l##.search)\n\n let get_fragment () =\n let s = Js.to_bytestring l##.hash in\n if String.length s > 0 && Char.equal s.[0] '#'\n then String.sub s 1 (String.length s - 1)\n else s\n\n let set_fragment s = l##.hash := Js.bytestring s\n\n let get () = url_of_js_string l##.href\n\n let set u = l##.href := Js.bytestring (string_of_url u)\n\n let as_string = urldecode_js_string_string l##.href\nend\n","(* generated code *)"],"names":[],"mappings":"EAoO8C,mBAAW,C,aAzBrC,2EACuD,oBAS9D,GAAM,eAAW,OAAjB,c,EAAiB,cAJf,GAAM,WAAkB,OAAxB,cAFP,EAE+B,OAF/B,eAMsB,GAPtB,GAOsB,YAPJ,EAOI,OAPJ,aAAsC,eAAxD,eAAwD,OAAxD,aAOsB,+EA8BnB,oBAcE,GAAM,eAAW,OAAjB,c,EAAiB,cAJf,GAAM,WAAkB,OAAxB,cAFP,EAE+B,OAF/B,eAFA,GACA,GAOsB,YAPJ,EAOI,OAPJ,aAAsC,eAAxD,eAAwD,OAAxD,aAOsB,OARtB,eAQsB,eATf,GAAM,EAAN,OAAM,aAAe,OAArB,cAFP,EAE4B,OAF5B,eAWsB,GAZtB,iBAAc,OAAd,aAYsB,+EApCnB,oBAcE,GAAM,eAAW,OAAjB,c,EAAiB,cAJf,GAAM,WAAkB,OAAxB,cAFP,EAE+B,OAF/B,eAFA,GACA,GAOsB,YAPJ,EAOI,OAPJ,aAAsC,eAAxD,eAAwD,OAAxD,aAOsB,OARtB,eAQsB,eATf,GAAM,EAAN,OAAM,aAAe,OAArB,cAFP,EAE4B,OAF5B,eAWsB,GAZtB,iBAAc,OAAd,aAYsB,oBAsBC,C,MAxDQ,aAAiB,U,EA/CrC,IAAI,C,EAY6D,I,EAGA,I,UAb1E,QAAU,EAAV,OAAU,eAEkC,IAD5C,OAC4C,aAAf,MAAmC,eAAnC,aAA3B,WAWwB,MAT1B,OAS0B,aAAf,GAAmC,eAAnC,aADF,KAFiB,MAGkD,OAHlD,aAAf,GAAmC,eAAnC,aADF,WAHoC,YAA5B,SAA4B,kBAQtC,C,UAlBX,gCACE,qBAAiB,iCAiBP,C,EAkB8D,I,EAKH,I,EAGC,I,EAhBL,I,eARnE,QAAU,EAAV,OAAU,eACyB,IAAnC,OAAmC,aAAf,MAAmC,eAAnC,aAnFD,OAAjB,KAAyC,W,CAAA,e,CAAA,E,EAAA,e,CAAA,e,CAAA,e,CAAA,e,CAAA,GACvB,MACF,GAFyB,EA0FxB,MAFnB,OAEmB,aAAf,GAAmC,eAAnC,aADF,WAiBqB,MAdvB,OAcuB,aAAf,GAAoC,eAApC,aADF,WAFiB,MAGmD,OAHnD,aAAf,GAAmC,eAAnC,aADF,WAHQ,WADY,MACgB,OADhB,aAAf,GAAmC,eAAnC,aADH,KAba,cACC,GAAS,GAArB,GAAqB,GACtB,M,EAQsE,IAA/B,MAI6B,OAJ7B,aAAf,MAAmC,eAAnC,aAA3B,SAAyE,gBAe9C,IAAjC,KAAkB,WAAe,mBA1GX,QA0GoB,C,UAlD9C,kEACE,iBAAgB,gCAiD6B,C,MA9DG,aAAiB,U,QATR,4BAEnC,SAAF,IAAL,WAAK,MAAQ,C,eAFjB,oBAtGqB,QAAlC,eAAkC,aAAX,IAAX,aACZ,aAAoC,SAA0B,iBAAF,IAAhB,mBAAgB,2BAA1C,QAqG8B,oCAElB,C,YAR5B,iDAQ6B,IAHP,QALtB,OAKsB,aAAf,QAAqC,eAArC,aAGsB,MAJzB,SAMY,G,AAAA,I,AAAA,G,EAAA,MCpIpB,SDqIwB,mB,EAVf,IAUiC,C,KA9GQ,QAAlC,eAAkC,aAAX,IAgHrC,IAhH2B,aAAwC,sBAgGzD,OAgBV,UAdA,uBAcA,GAAgB,C,SApBY,cAA6B,GAAM,IAAnC,eAAmC,OAAW,OAAjB,eAAd,eAAW,sBAAqB,C,EAAG,GAA9E,gBAAkB,EAAlB,OAAkB,aAA4D,6B,eAX5E,cAAY,I,EAAA,E,CAAA,IAAZ,e,EAAY,WAAyB,I,AAAA,I,AAAA,G,EAAA,ICxGzC,iEDwGI,EACW,E,CAAA,WAAX,cAAW,EAAX,e,EAAW,aACX,cAAe,M,CAAA,SAAiC,M,CAAnB,OAAQ,OAAW,M,SAE5C,IALN,OADA,IACA,GAKM,KAAK,K,CAAA,2CACC,6CACI,SACT,EAAC,C,EAxDI,UAAc,gBAC1B,QAEiC,KAAiB,OAA5B,aAAjB,IAHO,KAlBM,IAoB4B,KAAiB,OAA5B,aAAlB,GApBC,yBAqBiC,C,EAnB/B,mCAW0B,GAAiC,OAA9C,aAAjB,GAAgE,C,EANhF,oBAC4C,sBAGa,OAAxC,aAAjB,GAA0D,C,EAjBzC,YAAe,C,EA+PP,IAAE,C,MAkCW,iBAAd,KAA+B,kB,MAFzB,mBAAQ,U,KAFL,cAAe,kB,MALrB,kBAAjB,KACR,YAAqC,cAAX,MAAgB,eAAhB,aAAoB,K,CAAA,EACzC,6CACA,QAAC,C,gDC1TV,6BDmCc,GCnCd,QDmCc,eAMsD,OAA5C,iBAA4D,8EAyGR,WAJoE,OAF9I,YAM0E,OAD1E,YAC0E,8BAmHpC,OAA0B,eAA5C,aAA6C,eAA5D,aAA4D,QAI7D,uE,CAAA,I,CAAA,YAHG,gBA6B+B,SAA3B,OAE+B,SAA3B,OAIX,UAAoD,IAAV,SAAlB,GAAf,GAA2C,Q,AAAA,I,AAAA,G,EAAA,MCzS1D,qB,CAAA,O,CAAA,W,CAAA,E,CAAA,iBDyS6E,WAAvE,EAGyC,SAA3B,OAEP,SAIQ,SAAD,aAAV,KAAgD,OAE9C,QADA,uB,EAeyC,qC,CAAA,MAjBjD,E,CAAA,KAGmB,oCAcsB,SAA3B,KAAmC,gB,EClUrD,c,QAAA","ignoreList":[1]}},{"offset":{"line":0,"column":99808},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/sys_js.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2014 Hugo Heuzard\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\n\nexternal create_file : name:string -> content:string -> unit = \"caml_create_file\"\n\nexternal read_file : name:string -> string = \"caml_read_file_content\"\n\nlet update_file ~name ~content =\n let oc = open_out name in\n output_string oc content;\n close_out oc\n\nexternal set_channel_output' :\n out_channel -> (Js.js_string Js.t -> unit) Js.callback -> unit\n = \"caml_ml_set_channel_output\"\n\nexternal set_channel_input' : in_channel -> (unit -> string) Js.callback -> unit\n = \"caml_ml_set_channel_refill\"\n\nlet set_channel_flusher (out_channel : out_channel) (f : string -> unit) =\n let f' : (Js.js_string Js.t -> unit) Js.callback =\n Js.wrap_callback (fun s -> f (Js.to_bytestring s))\n in\n set_channel_output' out_channel f'\n\nlet set_channel_filler (in_channel : in_channel) (f : unit -> string) =\n let f' : (unit -> string) Js.callback = Js.wrap_callback f in\n set_channel_input' in_channel f'\n\nexternal mount_point : unit -> string list = \"caml_list_mount_point\"\n\nexternal mount_autoload :\n string -> (string -> string -> string option) Js.callback -> unit\n = \"caml_mount_autoload\"\n\nexternal unmount : string -> unit = \"caml_unmount\"\n\nlet mount ~path f =\n mount_autoload path (Js.wrap_callback (fun prefix path -> f ~prefix ~path))\n\nlet unmount ~path = unmount path\n\nlet js_of_ocaml_version =\n if String.equal Lib_version.git_version \"\"\n then Lib_version.s\n else Lib_version.s ^ \"+\" ^ Lib_version.git_version\n","(* generated code *)"],"names":[],"mappings":"EAyDoB,KAAY,C,EAF4B,gBAAe,C,EAAzE,aAAoB,EAApB,GAA2E,C,EAX3E,EADwC,IACxC,GAAgC,C,KAND,YAAoB,oB,EAEnD,EAHA,QACE,EAEF,GAAkC,C,EAfzB,EAAT,OAAS,eACT,wBAAwB,uBACZ,C,EC3Bd,M,EAAA,M,EAAA,Q,MD6DO,4BC7DP,QD4DK,GC5DL,gBD4DK,aAAuC,QAErB,GAAhB,eAAgB,eAA6B,QAA7C,EAA6C,OAA7C,cADA,qB,QC7DP,4D,EAAA,c,QAAA","ignoreList":[1]}},{"offset":{"line":0,"column":100312},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/resizeObserver.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2019 Alexander Yanin\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\n\nclass type resizeObserverSize = object\n method inlineSize : Js.number_t Js.readonly_prop\n\n method blockSize : Js.number_t Js.readonly_prop\nend\n\nclass type resizeObserverEntry = object\n method target : Dom.node Js.t Js.readonly_prop\n\n method contentRect : Dom_html.clientRect Js.t Js.readonly_prop\n\n method borderBoxSize : resizeObserverSize Js.t Js.js_array Js.t Js.readonly_prop\n\n method contentBoxSize : resizeObserverSize Js.t Js.js_array Js.t Js.readonly_prop\nend\n\nclass type resizeObserverOptions = object\n method box : Js.js_string Js.t Js.writeonly_prop\nend\n\nclass type resizeObserver = object\n method observe : #Dom.node Js.t -> unit Js.meth\n\n method observe_withOptions :\n #Dom.node Js.t -> resizeObserverOptions Js.t -> unit Js.meth\n\n method unobserve : #Dom.node Js.t -> unit Js.meth\n\n method disconnect : unit Js.meth\nend\n\nlet empty_resize_observer_options () : resizeObserverOptions Js.t = Js.Unsafe.obj [||]\n\nlet resizeObserver = Js.Unsafe.global##._ResizeObserver\n\nlet is_supported () = Js.Optdef.test resizeObserver\n\nlet resizeObserver :\n ( (resizeObserverEntry Js.t Js.js_array Js.t -> resizeObserver Js.t -> unit)\n Js.callback\n -> resizeObserver Js.t)\n Js.constr =\n resizeObserver\n\nlet observe\n ~(node : #Dom.node Js.t)\n ~(f : resizeObserverEntry Js.t Js.js_array Js.t -> resizeObserver Js.t -> unit)\n ?(box : Js.js_string Js.t option)\n () : resizeObserver Js.t =\n let obs = new%js resizeObserver (Js.wrap_callback f) in\n (match box with\n | None -> obs##observe node\n | Some box ->\n let opts = empty_resize_observer_options () in\n opts##.box := box;\n obs##observe_withOptions node opts);\n obs\n","(* generated code *)"],"names":[],"mappings":"MAqEkC,cAAtB,mBACV,SACU,eAKV,YAzBkE,OAuB9D,YACA,mBACJ,EAAG,C,EArBiB,qCAA6B,C,EAJiB,KAAkB,C,KAE/B,OCrDvD,eDqDqB,SAAkC,+B,ECrDvD,c,EAAA,c,EAAA,c,cAAA","ignoreList":[1]}},{"offset":{"line":0,"column":100659},"map":{"version":3,"sources":["/builtin/blackbox.ml","/root/.opam/5.2.0/lib/js_of_ocaml/performanceObserver.ml"],"sourcesContent":["(* generated code *)","(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2021 Philip White\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen! Import\n\nclass type performanceObserverInit = object\n method entryTypes : Js.js_string Js.t Js.js_array Js.t Js.writeonly_prop\nend\n\nclass type performanceEntry = object\n method name : Js.js_string Js.t Js.readonly_prop\n\n method entryType : Js.js_string Js.t Js.readonly_prop\n\n method startTime : Js.number_t Js.readonly_prop\n\n method duration : Js.number_t Js.readonly_prop\nend\n\nclass type performanceObserverEntryList = object\n method getEntries : performanceEntry Js.t Js.js_array Js.t Js.meth\nend\n\nclass type performanceObserver = object\n method observe : performanceObserverInit Js.t -> unit Js.meth\n\n method disconnect : unit Js.meth\n\n method takeRecords : performanceEntry Js.t Js.js_array Js.t Js.meth\nend\n\nlet performanceObserver = Js.Unsafe.global##._PerformanceObserver\n\nlet is_supported () = Js.Optdef.test performanceObserver\n\nlet performanceObserver :\n ( (performanceObserverEntryList Js.t -> performanceObserver Js.t -> unit) Js.callback\n -> performanceObserver Js.t)\n Js.constr =\n performanceObserver\n\nlet observe ~entry_types ~f =\n let entry_types = entry_types |> List.map Js.string |> Array.of_list |> Js.array in\n let performance_observer_init : performanceObserverInit Js.t = Js.Unsafe.obj [||] in\n let () = performance_observer_init##.entryTypes := entry_types in\n let obs = new%js performanceObserver (Js.wrap_callback f) in\n let () = obs##observe performance_observer_init in\n obs\n"],"names":[],"mappings":"YC0DE,OAAiC,KAAjC,OAAiC,aAAkB,OAAjC,iBAC6C,OACtD,YAC4B,MAA3B,mBACD,YACT,EAAG,C,EAdiB,qCAAkC,C,KAFS,ID/CjE,eC+C0B,SAAuC,+B","ignoreList":[0]}},{"offset":{"line":0,"column":100944},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/mutationObserver.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2015 Stéphane Legrand\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\n\nclass type mutationObserverInit = object\n method childList : bool Js.writeonly_prop\n\n method attributes : bool Js.writeonly_prop\n\n method characterData : bool Js.writeonly_prop\n\n method subtree : bool Js.writeonly_prop\n\n method attributeOldValue : bool Js.writeonly_prop\n\n method characterDataOldValue : bool Js.writeonly_prop\n\n method attributeFilter : Js.js_string Js.t Js.js_array Js.t Js.writeonly_prop\nend\n\nclass type mutationRecord = object\n method _type : Js.js_string Js.t Js.readonly_prop\n\n method target : Dom.node Js.t Js.readonly_prop\n\n method addedNodes : Dom.node Dom.nodeList Js.t Js.readonly_prop\n\n method removedNodes : Dom.node Dom.nodeList Js.t Js.readonly_prop\n\n method previousSibling : Dom.node Js.t Js.opt Js.readonly_prop\n\n method nextSibling : Dom.node Js.t Js.opt Js.readonly_prop\n\n method attributeName : Js.js_string Js.t Js.opt Js.readonly_prop\n\n method attributeNamespace : Js.js_string Js.t Js.opt Js.readonly_prop\n\n method oldValue : Js.js_string Js.t Js.opt Js.readonly_prop\nend\n\nclass type mutationObserver = object\n method observe : #Dom.node Js.t -> mutationObserverInit Js.t -> unit Js.meth\n\n method disconnect : unit Js.meth\n\n method takeRecords : mutationRecord Js.t Js.js_array Js.t Js.meth\nend\n\nlet empty_mutation_observer_init () : mutationObserverInit Js.t = Js.Unsafe.obj [||]\n\nlet mutationObserver = Js.Unsafe.global##._MutationObserver\n\nlet is_supported () = Js.Optdef.test mutationObserver\n\nlet mutationObserver :\n ( (mutationRecord Js.t Js.js_array Js.t -> mutationObserver Js.t -> unit) Js.callback\n -> mutationObserver Js.t)\n Js.constr =\n mutationObserver\n\nlet observe\n ~(node : #Dom.node Js.t)\n ~(f : mutationRecord Js.t Js.js_array Js.t -> mutationObserver Js.t -> unit)\n ?(child_list : bool option)\n ?(attributes : bool option)\n ?(character_data : bool option)\n ?(subtree : bool option)\n ?(attribute_old_value : bool option)\n ?(character_data_old_value : bool option)\n ?(attribute_filter : Js.js_string Js.t list option)\n () : mutationObserver Js.t =\n let opt_iter x f =\n match x with\n | None -> ()\n | Some x -> f x\n in\n let obs = new%js mutationObserver (Js.wrap_callback f) in\n let cfg = empty_mutation_observer_init () in\n let () = opt_iter child_list (fun v -> cfg##.childList := v) in\n let () = opt_iter attributes (fun v -> cfg##.attributes := v) in\n let () = opt_iter character_data (fun v -> cfg##.characterData := v) in\n let () = opt_iter subtree (fun v -> cfg##.subtree := v) in\n let () = opt_iter attribute_old_value (fun v -> cfg##.attributeOldValue := v) in\n let () =\n opt_iter character_data_old_value (fun v -> cfg##.characterDataOldValue := v)\n in\n let () =\n opt_iter attribute_filter (fun l ->\n cfg##.attributeFilter := Js.array (Array.of_list l))\n in\n let () = obs##observe node cfg in\n obs\n","(* generated code *)"],"names":[],"mappings":"OA4FoC,cAAxB,mBA5BsD,OAwB9D,O,CAAA,cAMqC,eANrC,O,CAAA,cAOqC,eAPrC,O,CAAA,cAQyC,eARzC,O,CAAA,cASkC,eATlC,O,CAAA,cAU8C,eAV9C,O,CAAA,cAY4C,eAZ5C,O,CAAA,YAgBI,OAAkC,aAAT,IAA0B,eAEhD,kBACT,G,EAvCoB,qCAA+B,C,EAJa,KAAkB,C,KAEzB,OClE3D,eDkEuB,SAAoC,+B,EClE3D,e,EAAA,e,EAAA,e,EAAA,e,EAAA,e,EAAA,e,EAAA,e,EAAA,e,EAAA,e,2CAAA","ignoreList":[1]}},{"offset":{"line":0,"column":101731},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/jstable.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2012 Pierre Chambart\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\n\ntype 'a t = < > Js.t\n\nlet obj = Js.Unsafe.global##._Object\n\nlet create () : 'a t = new%js obj\n\nlet add (t : 'a t) (k : Js.js_string Js.t) (v : 'a) =\n (* '_' is added to avoid conflicts with objects methods *)\n Js.Unsafe.set t (k##concat (Js.string \"_\")) v\n\nlet remove (t : 'a t) (k : Js.js_string Js.t) =\n Js.Unsafe.delete t (k##concat (Js.string \"_\"))\n\nlet find (t : 'a t) (k : Js.js_string Js.t) : 'a Js.Optdef.t =\n Js.Unsafe.get t (k##concat (Js.string \"_\"))\n\nlet keys (t : 'a t) : Js.js_string Js.t list =\n let key_array : Js.js_string Js.t Js.js_array Js.t =\n Js.Unsafe.global##._Object##keys t\n in\n let res = ref [] in\n for i = 0 to pred key_array##.length do\n let key =\n Js.Optdef.get (Js.array_get key_array i) (fun () -> failwith \"Jstable.keys\")\n in\n res := key##substring 0 (pred key##.length) :: !res\n done;\n List.rev !res\n","(* generated code *)"],"names":[],"mappings":"EA2C0D,uBAAuB,C,WAN/E,eACE,oBAGgB,OAAkB,iCAElB,MADhB,OACgB,aAAd,GAAwC,eAAxC,eAE4B,OAAY,UAAC,IAApC,qBAAoC,yCAE7C,oBAAa,C,EAbb,EAAgB,cAAhB,EAA2C,C,EAH3C,EAAmB,cAAnB,GAA8C,C,EAH9C,EAAgB,cAAhB,IAA6C,C,EAJxB,gBAAU,C,EAFG,OCtBpC,eDsBU,OAA0B,2B,ECtBpC,c,QAAA,8B,EAAA,c,EAAA,c,WAAA","ignoreList":[1]}},{"offset":{"line":0,"column":102288},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/json.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Grégoire Henry\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen! Import\n\n(****)\n\nclass type json = object\n method parse : 'a. js_string t -> 'a meth\n\n method parse_ :\n 'a 'b 'c 'd. js_string t -> ('b t, js_string t -> 'c -> 'd) meth_callback -> 'a meth\n\n method stringify : 'a. 'a -> js_string t meth\n\n method stringify_ :\n 'a 'b 'c 'd. 'a -> ('b, js_string t -> 'c -> 'd) meth_callback -> js_string t meth\nend\n\nlet json : json Js.t = Unsafe.global##._JSON\n\n(****)\n\n(* The writing logic for basic types is copied from [lib/deriving_json]. *)\n\nlet write_string buffer s =\n Buffer.add_char buffer '\"';\n for i = 0 to String.length s - 1 do\n match s.[i] with\n | '\"' -> Buffer.add_string buffer {|\\\"|}\n | '\\\\' -> Buffer.add_string buffer {|\\\\|}\n | '\\b' -> Buffer.add_string buffer {|\\b|}\n | '\\x0C' -> Buffer.add_string buffer {|\\f|}\n | '\\n' -> Buffer.add_string buffer {|\\n|}\n | '\\r' -> Buffer.add_string buffer {|\\r|}\n | '\\t' -> Buffer.add_string buffer {|\\t|}\n | c when Poly.(c <= '\\x1F') ->\n (* Other control characters are escaped. *)\n Printf.bprintf buffer {|\\u%04X|} (int_of_char c)\n | c when Poly.(c < '\\x80') -> Buffer.add_char buffer s.[i]\n | _c (* >= '\\x80' *) ->\n (* Bytes greater than 127 are embedded in a UTF-8 sequence. *)\n Buffer.add_char buffer (Char.chr (0xC2 lor (Char.code s.[i] lsr 6)));\n Buffer.add_char buffer (Char.chr (0x80 lor (Char.code s.[i] land 0x3F)))\n done;\n Buffer.add_char buffer '\"'\n\nlet write_float buffer f =\n (* \"%.15g\" can be (much) shorter; \"%.17g\" is round-trippable *)\n let s = Printf.sprintf \"%.15g\" f in\n if Poly.(float_of_string s = f)\n then Buffer.add_string buffer s\n else Printf.bprintf buffer \"%.17g\" f\n\nlet write_int64 buffer i =\n let mask16 = Int64.of_int 0xffff in\n let mask24 = Int64.of_int 0xffffff in\n Printf.bprintf\n buffer\n \"[255,%Ld,%Ld,%Ld]\"\n (Int64.logand i mask24)\n (Int64.logand (Int64.shift_right i 24) mask24)\n (Int64.logand (Int64.shift_right i 48) mask16)\n\nexternal custom_identifier : Obj.t -> string = \"caml_custom_identifier\"\n\nlet rec write b v =\n if Obj.is_int v\n then Printf.bprintf b \"%d\" (Obj.obj v : int)\n else\n let t = Obj.tag v in\n if t <= Obj.last_non_constant_constructor_tag\n then (\n Printf.bprintf b \"[%d\" t;\n for i = 0 to Obj.size v - 1 do\n Buffer.add_char b ',';\n write b (Obj.field v i)\n done;\n Buffer.add_char b ']')\n else if t = Obj.string_tag\n then write_string b (Obj.obj v : string)\n else if t = Obj.double_tag\n then write_float b (Obj.obj v : float)\n else if t = Obj.double_array_tag\n then (\n Printf.bprintf b \"[%d\" t;\n for i = 0 to Obj.size v - 1 do\n Buffer.add_char b ',';\n write_float b (Obj.double_field v i)\n done;\n Buffer.add_char b ']')\n else if t = Obj.custom_tag\n then\n match custom_identifier v with\n | \"_i\" -> Printf.bprintf b \"%ld\" (Obj.obj v : int32)\n | \"_n\" -> Printf.bprintf b \"%nd\" (Obj.obj v : nativeint)\n | \"_j\" ->\n let i : int64 = Obj.obj v in\n write_int64 b i\n | id -> failwith (Printf.sprintf \"Json.output: unsupported custom value %s \" id)\n else if t = Obj.abstract_tag\n then\n (* Presumably a JavaScript value *)\n Buffer.add_string b (Js.to_string (json##stringify v))\n else failwith (Printf.sprintf \"Json.output: unsupported tag %d \" t)\n\nlet to_json v =\n let buf = Buffer.create 50 in\n write buf v;\n Buffer.contents buf\n\n(****)\n\nlet input_reviver =\n let reviver _this _key (value : Unsafe.any) : Obj.t =\n if Js.equals (typeof value) (string \"string\")\n then Obj.repr (to_bytestring (Unsafe.coerce value))\n else if\n instanceof value Js.array_empty\n && (Unsafe.coerce value)##.length == 4\n && Unsafe.get value 0 == 255\n then\n Obj.repr\n (Jsoo_runtime.Int64.create_int64_lo_mi_hi\n (Unsafe.get value 1)\n (Unsafe.get value 2)\n (Unsafe.get value 3))\n else Obj.repr value\n in\n wrap_meth_callback reviver\n\nlet unsafe_input s =\n match Sys.backend_type with\n | Other \"wasm_of_ocaml\" ->\n (* https://github.com/ocsigen/js_of_ocaml/pull/1660#discussion_r1731099372\n The encoding of OCaml values is ambiguous since both integers and floats\n are mapped to numbers *)\n failwith \"Json.unsafe_input: not implemented in the Wasm backend\"\n | _ -> json##parse_ s input_reviver\n\nclass type obj = object\n method constructor : 'a. 'a constr Js.readonly_prop\nend\n\nlet mlInt64_constr =\n Js.Unsafe.pure_expr\n @@ fun () ->\n let dummy_int64 = 1L in\n let dummy_obj : obj t = Obj.magic dummy_int64 in\n dummy_obj##.constructor\n\nlet output_reviver _key (value : Unsafe.any) : Obj.t =\n if Obj.tag (Obj.repr value) = Obj.string_tag\n then Obj.repr (bytestring (Obj.magic value : string))\n else if instanceof value mlInt64_constr\n then\n let value = Unsafe.coerce value in\n Obj.repr (array [| 255; value##.lo; value##.mi; value##.hi |])\n else Obj.repr value\n\nlet use_native_stringify_ =\n ref\n (match Sys.backend_type with\n | Other \"js_of_ocaml\" -> true\n | Native | Bytecode | Other _ -> false)\n\nlet use_native_stringify () = !use_native_stringify_\n\nlet set_use_native_stringify b = use_native_stringify_ := b\n\nlet output_ x = to_json (Obj.repr x)\n\nlet output obj =\n match Sys.backend_type with\n | Other \"js_of_ocaml\" when use_native_stringify () ->\n json##stringify_ obj (Js.wrap_callback output_reviver)\n | _ -> Js.string (output_ obj)\n","(* generated code *)"],"names":[],"mappings":"MAyKE,gBAAG,KAAwB,uCACb,MACN,UAA+B,QAIlC,GAD6C,WAAZ,WAAF,SAAV,SAAU,QAAzB,IACQ,C,EATnB,UAAuB,C,QAjBvB,Y,CAAA,yBAKI,yBALJ,OAMO,uBAA4B,C,EAvBpB,IAAV,KAA0C,QAG3C,EADG,OACH,EAA+B,K,CAAA,EACE,IAA9B,SAA8B,GACZ,KAAlB,QAAkB,GAMhB,UADA,UADA,QADH,OAGwB,IACvB,GAXS,MAWK,C,sBA5DrB,OACK,yCAEK,KACR,OADiB,OACjB,QAEE,OADG,OACH,2BAAwB,8CAEtB,2BACA,EAAQ,mDAAR,MAAuB,yBAEzB,4BACG,Y,EArDP,2BAA0B,sBAElB,mCAAK,KACF,2BAA+B,QAC9B,2B,EAA+B,O,EAAA,6BAI/B,0BAA+B,GAF7B,0BAA+B,GACjC,0BAA+B,GAE/B,0BAA+B,GAJ/B,0BAA+B,IAKhC,OAGA,QAGiD,eAAtD,EAAsD,aAAK,cAApC,EAAoC,eAApC,aAA6C,OAApE,cACsD,eAAtD,EAAsD,aAAK,OAApC,EAAoC,eAApC,aAAiD,OAAxE,eAJiD,eAAvB,EAAuB,aAAvB,EAA4B,OAA5B,gBAD1B,+CAAgD,yBAOtD,4BAoCO,YACA,QACA,YAEH,OADG,OACH,2BAAwB,8CAEtB,2BACA,EAAc,MADO,OACP,aAAd,IAAoC,yBAEtC,4BACG,YAEG,OAAmB,aACf,wDAlCZ,uBACA,EAAc,SAAd,SACA,EAAc,SAAd,QAFuB,4CAmCX,yCAIO,KAAT,OAAS,0BAA+D,qB,MAC7E,YAGmD,EAApB,iBAAd,EAAkC,qBAC1C,KAAT,OAAS,0BAAqD,qB,UAAA,K,MAvD7D,KAAR,OAAQ,4BACC,GAAiB,mBACrB,yBACA,yC,CAA+B,C,OAyHpC,oB,CAAA,yBAP4B,WAQsB,K,CAAA,EACzB,UAAiC,wBApEhD,IAAV,OAAU,eACV,YAAW,sBAoEJ,EAAuB,C,EARC,qBAA0B,C,EAF7B,eAAsB,C,eCvLpD,eDoCuB,SAAqB,KA8GhB,KAA1B,MAA0B,KAmCS,WAfZ,MAJvB,MAIuB,GAeY,IAfZ,c,CAAA,EAcI,EAdJ,qBAcI,EAdJ,EAeY,4C,UCrLrC,G,EAAA,E,CAAA,8B,CAAA,e,EAAA,W,EAAA,Y,EAAA,c,QAAA,8B,EAAA,c,EAAA,c,WAAA","ignoreList":[1]}},{"offset":{"line":0,"column":105110},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/cSS.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Raphaël Proust\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen! Import\n\nmodule Color = struct\n (* The type of CSS colors. First by name and then by constructor. *)\n type name =\n | Aliceblue\n | Antiquewhite\n | Aqua\n | Aquamarine\n | Azure\n | Beige\n | Bisque\n | Black\n | Blanchedalmond\n | Blue\n | Blueviolet\n | Brown\n | Burlywood\n | Cadetblue\n | Chartreuse\n | Chocolate\n | Coral\n | Cornflowerblue\n | Cornsilk\n | Crimson\n | Cyan\n | Darkblue\n | Darkcyan\n | Darkgoldenrod\n | Darkgray\n | Darkgreen\n | Darkgrey\n | Darkkhaki\n | Darkmagenta\n | Darkolivegreen\n | Darkorange\n | Darkorchid\n | Darkred\n | Darksalmon\n | Darkseagreen\n | Darkslateblue\n | Darkslategray\n | Darkslategrey\n | Darkturquoise\n | Darkviolet\n | Deeppink\n | Deepskyblue\n | Dimgray\n | Dimgrey\n | Dodgerblue\n | Firebrick\n | Floralwhite\n | Forestgreen\n | Fuchsia\n | Gainsboro\n | Ghostwhite\n | Gold\n | Goldenrod\n | Gray\n | Grey\n | Green\n | Greenyellow\n | Honeydew\n | Hotpink\n | Indianred\n | Indigo\n | Ivory\n | Khaki\n | Lavender\n | Lavenderblush\n | Lawngreen\n | Lemonchiffon\n | Lightblue\n | Lightcoral\n | Lightcyan\n | Lightgoldenrodyellow\n | Lightgray\n | Lightgreen\n | Lightgrey\n | Lightpink\n | Lightsalmon\n | Lightseagreen\n | Lightskyblue\n | Lightslategray\n | Lightslategrey\n | Lightsteelblue\n | Lightyellow\n | Lime\n | Limegreen\n | Linen\n | Magenta\n | Maroon\n | Mediumaquamarine\n | Mediumblue\n | Mediumorchid\n | Mediumpurple\n | Mediumseagreen\n | Mediumslateblue\n | Mediumspringgreen\n | Mediumturquoise\n | Mediumvioletred\n | Midnightblue\n | Mintcream\n | Mistyrose\n | Moccasin\n | Navajowhite\n | Navy\n | Oldlace\n | Olive\n | Olivedrab\n | Orange\n | Orangered\n | Orchid\n | Palegoldenrod\n | Palegreen\n | Paleturquoise\n | Palevioletred\n | Papayawhip\n | Peachpuff\n | Peru\n | Pink\n | Plum\n | Powderblue\n | Purple\n | Red\n | Rosybrown\n | Royalblue\n | Saddlebrown\n | Salmon\n | Sandybrown\n | Seagreen\n | Seashell\n | Sienna\n | Silver\n | Skyblue\n | Slateblue\n | Slategray\n | Slategrey\n | Snow\n | Springgreen\n | Steelblue\n | Tan\n | Teal\n | Thistle\n | Tomato\n | Turquoise\n | Violet\n | Wheat\n | White\n | Whitesmoke\n | Yellow\n | Yellowgreen\n\n let string_of_name = function\n | Aliceblue -> \"aliceblue\"\n | Antiquewhite -> \"antiquewhite\"\n | Aqua -> \"aqua\"\n | Aquamarine -> \"aquamarine\"\n | Azure -> \"azure\"\n | Beige -> \"beige\"\n | Bisque -> \"bisque\"\n | Black -> \"black\"\n | Blanchedalmond -> \"blanchedalmond\"\n | Blue -> \"blue\"\n | Blueviolet -> \"blueviolet\"\n | Brown -> \"brown\"\n | Burlywood -> \"burlywood\"\n | Cadetblue -> \"cadetblue\"\n | Chartreuse -> \"chartreuse\"\n | Chocolate -> \"chocolate\"\n | Coral -> \"coral\"\n | Cornflowerblue -> \"cornflowerblue\"\n | Cornsilk -> \"cornsilk\"\n | Crimson -> \"crimson\"\n | Cyan -> \"cyan\"\n | Darkblue -> \"darkblue\"\n | Darkcyan -> \"darkcyan\"\n | Darkgoldenrod -> \"darkgoldenrod\"\n | Darkgray -> \"darkgray\"\n | Darkgreen -> \"darkgreen\"\n | Darkgrey -> \"darkgrey\"\n | Darkkhaki -> \"darkkhaki\"\n | Darkmagenta -> \"darkmagenta\"\n | Darkolivegreen -> \"darkolivegreen\"\n | Darkorange -> \"darkorange\"\n | Darkorchid -> \"darkorchid\"\n | Darkred -> \"darkred\"\n | Darksalmon -> \"darksalmon\"\n | Darkseagreen -> \"darkseagreen\"\n | Darkslateblue -> \"darkslateblue\"\n | Darkslategray -> \"darkslategray\"\n | Darkslategrey -> \"darkslategrey\"\n | Darkturquoise -> \"darkturquoise\"\n | Darkviolet -> \"darkviolet\"\n | Deeppink -> \"deeppink\"\n | Deepskyblue -> \"deepskyblue\"\n | Dimgray -> \"dimgray\"\n | Dimgrey -> \"dimgrey\"\n | Dodgerblue -> \"dodgerblue\"\n | Firebrick -> \"firebrick\"\n | Floralwhite -> \"floralwhite\"\n | Forestgreen -> \"forestgreen\"\n | Fuchsia -> \"fuchsia\"\n | Gainsboro -> \"gainsboro\"\n | Ghostwhite -> \"ghostwhite\"\n | Gold -> \"gold\"\n | Goldenrod -> \"goldenrod\"\n | Gray -> \"gray\"\n | Green -> \"green\"\n | Greenyellow -> \"greenyellow\"\n | Grey -> \"grey\"\n | Honeydew -> \"honeydew\"\n | Hotpink -> \"hotpink\"\n | Indianred -> \"indianred\"\n | Indigo -> \"indigo\"\n | Ivory -> \"ivory\"\n | Khaki -> \"khaki\"\n | Lavender -> \"lavender\"\n | Lavenderblush -> \"lavenderblush\"\n | Lawngreen -> \"lawngreen\"\n | Lemonchiffon -> \"lemonchiffon\"\n | Lightblue -> \"lightblue\"\n | Lightcoral -> \"lightcoral\"\n | Lightcyan -> \"lightcyan\"\n | Lightgoldenrodyellow -> \"lightgoldenrodyellow\"\n | Lightgray -> \"lightgray\"\n | Lightgreen -> \"lightgreen\"\n | Lightgrey -> \"lightgrey\"\n | Lightpink -> \"lightpink\"\n | Lightsalmon -> \"lightsalmon\"\n | Lightseagreen -> \"lightseagreen\"\n | Lightskyblue -> \"lightskyblue\"\n | Lightslategray -> \"lightslategray\"\n | Lightslategrey -> \"lightslategrey\"\n | Lightsteelblue -> \"lightsteelblue\"\n | Lightyellow -> \"lightyellow\"\n | Lime -> \"lime\"\n | Limegreen -> \"limegreen\"\n | Linen -> \"linen\"\n | Magenta -> \"magenta\"\n | Maroon -> \"maroon\"\n | Mediumaquamarine -> \"mediumaquamarine\"\n | Mediumblue -> \"mediumblue\"\n | Mediumorchid -> \"mediumorchid\"\n | Mediumpurple -> \"mediumpurple\"\n | Mediumseagreen -> \"mediumseagreen\"\n | Mediumslateblue -> \"mediumslateblue\"\n | Mediumspringgreen -> \"mediumspringgreen\"\n | Mediumturquoise -> \"mediumturquoise\"\n | Mediumvioletred -> \"mediumvioletred\"\n | Midnightblue -> \"midnightblue\"\n | Mintcream -> \"mintcream\"\n | Mistyrose -> \"mistyrose\"\n | Moccasin -> \"moccasin\"\n | Navajowhite -> \"navajowhite\"\n | Navy -> \"navy\"\n | Oldlace -> \"oldlace\"\n | Olive -> \"olive\"\n | Olivedrab -> \"olivedrab\"\n | Orange -> \"orange\"\n | Orangered -> \"orangered\"\n | Orchid -> \"orchid\"\n | Palegoldenrod -> \"palegoldenrod\"\n | Palegreen -> \"palegreen\"\n | Paleturquoise -> \"paleturquoise\"\n | Palevioletred -> \"palevioletred\"\n | Papayawhip -> \"papayawhip\"\n | Peachpuff -> \"peachpuff\"\n | Peru -> \"peru\"\n | Pink -> \"pink\"\n | Plum -> \"plum\"\n | Powderblue -> \"powderblue\"\n | Purple -> \"purple\"\n | Red -> \"red\"\n | Rosybrown -> \"rosybrown\"\n | Royalblue -> \"royalblue\"\n | Saddlebrown -> \"saddlebrown\"\n | Salmon -> \"salmon\"\n | Sandybrown -> \"sandybrown\"\n | Seagreen -> \"seagreen\"\n | Seashell -> \"seashell\"\n | Sienna -> \"sienna\"\n | Silver -> \"silver\"\n | Skyblue -> \"skyblue\"\n | Slateblue -> \"slateblue\"\n | Slategray -> \"slategray\"\n | Slategrey -> \"slategrey\"\n | Snow -> \"snow\"\n | Springgreen -> \"springgreen\"\n | Steelblue -> \"steelblue\"\n | Tan -> \"tan\"\n | Teal -> \"teal\"\n | Thistle -> \"thistle\"\n | Tomato -> \"tomato\"\n | Turquoise -> \"turquoise\"\n | Violet -> \"violet\"\n | Wheat -> \"wheat\"\n | White -> \"white\"\n | Whitesmoke -> \"whitesmoke\"\n | Yellow -> \"yellow\"\n | Yellowgreen -> \"yellowgreen\"\n\n let name_of_string = function\n | \"aliceblue\" -> Aliceblue\n | \"antiquewhite\" -> Antiquewhite\n | \"aqua\" -> Aqua\n | \"aquamarine\" -> Aquamarine\n | \"azure\" -> Azure\n | \"beige\" -> Beige\n | \"bisque\" -> Bisque\n | \"black\" -> Black\n | \"blanchedalmond\" -> Blanchedalmond\n | \"blue\" -> Blue\n | \"blueviolet\" -> Blueviolet\n | \"brown\" -> Brown\n | \"burlywood\" -> Burlywood\n | \"cadetblue\" -> Cadetblue\n | \"chartreuse\" -> Chartreuse\n | \"chocolate\" -> Chocolate\n | \"coral\" -> Coral\n | \"cornflowerblue\" -> Cornflowerblue\n | \"cornsilk\" -> Cornsilk\n | \"crimson\" -> Crimson\n | \"cyan\" -> Cyan\n | \"darkblue\" -> Darkblue\n | \"darkcyan\" -> Darkcyan\n | \"darkgoldenrod\" -> Darkgoldenrod\n | \"darkgray\" -> Darkgray\n | \"darkgreen\" -> Darkgreen\n | \"darkgrey\" -> Darkgrey\n | \"darkkhaki\" -> Darkkhaki\n | \"darkmagenta\" -> Darkmagenta\n | \"darkolivegreen\" -> Darkolivegreen\n | \"darkorange\" -> Darkorange\n | \"darkorchid\" -> Darkorchid\n | \"darkred\" -> Darkred\n | \"darksalmon\" -> Darksalmon\n | \"darkseagreen\" -> Darkseagreen\n | \"darkslateblue\" -> Darkslateblue\n | \"darkslategray\" -> Darkslategray\n | \"darkslategrey\" -> Darkslategrey\n | \"darkturquoise\" -> Darkturquoise\n | \"darkviolet\" -> Darkviolet\n | \"deeppink\" -> Deeppink\n | \"deepskyblue\" -> Deepskyblue\n | \"dimgray\" -> Dimgray\n | \"dimgrey\" -> Dimgrey\n | \"dodgerblue\" -> Dodgerblue\n | \"firebrick\" -> Firebrick\n | \"floralwhite\" -> Floralwhite\n | \"forestgreen\" -> Forestgreen\n | \"fuchsia\" -> Fuchsia\n | \"gainsboro\" -> Gainsboro\n | \"ghostwhite\" -> Ghostwhite\n | \"gold\" -> Gold\n | \"goldenrod\" -> Goldenrod\n | \"gray\" -> Gray\n | \"green\" -> Green\n | \"greenyellow\" -> Greenyellow\n | \"grey\" -> Grey\n | \"honeydew\" -> Honeydew\n | \"hotpink\" -> Hotpink\n | \"indianred\" -> Indianred\n | \"indigo\" -> Indigo\n | \"ivory\" -> Ivory\n | \"khaki\" -> Khaki\n | \"lavender\" -> Lavender\n | \"lavenderblush\" -> Lavenderblush\n | \"lawngreen\" -> Lawngreen\n | \"lemonchiffon\" -> Lemonchiffon\n | \"lightblue\" -> Lightblue\n | \"lightcoral\" -> Lightcoral\n | \"lightcyan\" -> Lightcyan\n | \"lightgoldenrodyellow\" -> Lightgoldenrodyellow\n | \"lightgray\" -> Lightgray\n | \"lightgreen\" -> Lightgreen\n | \"lightgrey\" -> Lightgrey\n | \"lightpink\" -> Lightpink\n | \"lightsalmon\" -> Lightsalmon\n | \"lightseagreen\" -> Lightseagreen\n | \"lightskyblue\" -> Lightskyblue\n | \"lightslategray\" -> Lightslategray\n | \"lightslategrey\" -> Lightslategrey\n | \"lightsteelblue\" -> Lightsteelblue\n | \"lightyellow\" -> Lightyellow\n | \"lime\" -> Lime\n | \"limegreen\" -> Limegreen\n | \"linen\" -> Linen\n | \"magenta\" -> Magenta\n | \"maroon\" -> Maroon\n | \"mediumaquamarine\" -> Mediumaquamarine\n | \"mediumblue\" -> Mediumblue\n | \"mediumorchid\" -> Mediumorchid\n | \"mediumpurple\" -> Mediumpurple\n | \"mediumseagreen\" -> Mediumseagreen\n | \"mediumslateblue\" -> Mediumslateblue\n | \"mediumspringgreen\" -> Mediumspringgreen\n | \"mediumturquoise\" -> Mediumturquoise\n | \"mediumvioletred\" -> Mediumvioletred\n | \"midnightblue\" -> Midnightblue\n | \"mintcream\" -> Mintcream\n | \"mistyrose\" -> Mistyrose\n | \"moccasin\" -> Moccasin\n | \"navajowhite\" -> Navajowhite\n | \"navy\" -> Navy\n | \"oldlace\" -> Oldlace\n | \"olive\" -> Olive\n | \"olivedrab\" -> Olivedrab\n | \"orange\" -> Orange\n | \"orangered\" -> Orangered\n | \"orchid\" -> Orchid\n | \"palegoldenrod\" -> Palegoldenrod\n | \"palegreen\" -> Palegreen\n | \"paleturquoise\" -> Paleturquoise\n | \"palevioletred\" -> Palevioletred\n | \"papayawhip\" -> Papayawhip\n | \"peachpuff\" -> Peachpuff\n | \"peru\" -> Peru\n | \"pink\" -> Pink\n | \"plum\" -> Plum\n | \"powderblue\" -> Powderblue\n | \"purple\" -> Purple\n | \"red\" -> Red\n | \"rosybrown\" -> Rosybrown\n | \"royalblue\" -> Royalblue\n | \"saddlebrown\" -> Saddlebrown\n | \"salmon\" -> Salmon\n | \"sandybrown\" -> Sandybrown\n | \"seagreen\" -> Seagreen\n | \"seashell\" -> Seashell\n | \"sienna\" -> Sienna\n | \"silver\" -> Silver\n | \"skyblue\" -> Skyblue\n | \"slateblue\" -> Slateblue\n | \"slategray\" -> Slategray\n | \"slategrey\" -> Slategrey\n | \"snow\" -> Snow\n | \"springgreen\" -> Springgreen\n | \"steelblue\" -> Steelblue\n | \"tan\" -> Tan\n | \"teal\" -> Teal\n | \"thistle\" -> Thistle\n | \"tomato\" -> Tomato\n | \"turquoise\" -> Turquoise\n | \"violet\" -> Violet\n | \"wheat\" -> Wheat\n | \"white\" -> White\n | \"whitesmoke\" -> Whitesmoke\n | \"yellow\" -> Yellow\n | \"yellowgreen\" -> Yellowgreen\n | s -> raise (Invalid_argument (s ^ \" is not a valid color name\"))\n\n let rgb_of_name = function\n | Aliceblue -> 240, 248, 255\n | Antiquewhite -> 250, 235, 215\n | Aqua -> 0, 255, 255\n | Aquamarine -> 127, 255, 212\n | Azure -> 240, 255, 255\n | Beige -> 245, 245, 220\n | Bisque -> 255, 228, 196\n | Black -> 0, 0, 0\n | Blanchedalmond -> 255, 235, 205\n | Blue -> 0, 0, 255\n | Blueviolet -> 138, 43, 226\n | Brown -> 165, 42, 42\n | Burlywood -> 222, 184, 135\n | Cadetblue -> 95, 158, 160\n | Chartreuse -> 127, 255, 0\n | Chocolate -> 210, 105, 30\n | Coral -> 255, 127, 80\n | Cornflowerblue -> 100, 149, 237\n | Cornsilk -> 255, 248, 220\n | Crimson -> 220, 20, 60\n | Cyan -> 0, 255, 255\n | Darkblue -> 0, 0, 139\n | Darkcyan -> 0, 139, 139\n | Darkgoldenrod -> 184, 134, 11\n | Darkgray -> 169, 169, 169\n | Darkgreen -> 0, 100, 0\n | Darkgrey -> 169, 169, 169\n | Darkkhaki -> 189, 183, 107\n | Darkmagenta -> 139, 0, 139\n | Darkolivegreen -> 85, 107, 47\n | Darkorange -> 255, 140, 0\n | Darkorchid -> 153, 50, 204\n | Darkred -> 139, 0, 0\n | Darksalmon -> 233, 150, 122\n | Darkseagreen -> 143, 188, 143\n | Darkslateblue -> 72, 61, 139\n | Darkslategray -> 47, 79, 79\n | Darkslategrey -> 47, 79, 79\n | Darkturquoise -> 0, 206, 209\n | Darkviolet -> 148, 0, 211\n | Deeppink -> 255, 20, 147\n | Deepskyblue -> 0, 191, 255\n | Dimgray -> 105, 105, 105\n | Dimgrey -> 105, 105, 105\n | Dodgerblue -> 30, 144, 255\n | Firebrick -> 178, 34, 34\n | Floralwhite -> 255, 250, 240\n | Forestgreen -> 34, 139, 34\n | Fuchsia -> 255, 0, 255\n | Gainsboro -> 220, 220, 220\n | Ghostwhite -> 248, 248, 255\n | Gold -> 255, 215, 0\n | Goldenrod -> 218, 165, 32\n | Gray -> 128, 128, 128\n | Green -> 0, 128, 0\n | Greenyellow -> 173, 255, 47\n | Grey -> 128, 128, 128\n | Honeydew -> 240, 255, 240\n | Hotpink -> 255, 105, 180\n | Indianred -> 205, 92, 92\n | Indigo -> 75, 0, 130\n | Ivory -> 255, 255, 240\n | Khaki -> 240, 230, 140\n | Lavender -> 230, 230, 250\n | Lavenderblush -> 255, 240, 245\n | Lawngreen -> 124, 252, 0\n | Lemonchiffon -> 255, 250, 205\n | Lightblue -> 173, 216, 230\n | Lightcoral -> 240, 128, 128\n | Lightcyan -> 224, 255, 255\n | Lightgoldenrodyellow -> 250, 250, 210\n | Lightgray -> 211, 211, 211\n | Lightgreen -> 144, 238, 144\n | Lightgrey -> 211, 211, 211\n | Lightpink -> 255, 182, 193\n | Lightsalmon -> 255, 160, 122\n | Lightseagreen -> 32, 178, 170\n | Lightskyblue -> 135, 206, 250\n | Lightslategray -> 119, 136, 153\n | Lightslategrey -> 119, 136, 153\n | Lightsteelblue -> 176, 196, 222\n | Lightyellow -> 255, 255, 224\n | Lime -> 0, 255, 0\n | Limegreen -> 50, 205, 50\n | Linen -> 250, 240, 230\n | Magenta -> 255, 0, 255\n | Maroon -> 128, 0, 0\n | Mediumaquamarine -> 102, 205, 170\n | Mediumblue -> 0, 0, 205\n | Mediumorchid -> 186, 85, 211\n | Mediumpurple -> 147, 112, 219\n | Mediumseagreen -> 60, 179, 113\n | Mediumslateblue -> 123, 104, 238\n | Mediumspringgreen -> 0, 250, 154\n | Mediumturquoise -> 72, 209, 204\n | Mediumvioletred -> 199, 21, 133\n | Midnightblue -> 25, 25, 112\n | Mintcream -> 245, 255, 250\n | Mistyrose -> 255, 228, 225\n | Moccasin -> 255, 228, 181\n | Navajowhite -> 255, 222, 173\n | Navy -> 0, 0, 128\n | Oldlace -> 253, 245, 230\n | Olive -> 128, 128, 0\n | Olivedrab -> 107, 142, 35\n | Orange -> 255, 165, 0\n | Orangered -> 255, 69, 0\n | Orchid -> 218, 112, 214\n | Palegoldenrod -> 238, 232, 170\n | Palegreen -> 152, 251, 152\n | Paleturquoise -> 175, 238, 238\n | Palevioletred -> 219, 112, 147\n | Papayawhip -> 255, 239, 213\n | Peachpuff -> 255, 218, 185\n | Peru -> 205, 133, 63\n | Pink -> 255, 192, 203\n | Plum -> 221, 160, 221\n | Powderblue -> 176, 224, 230\n | Purple -> 128, 0, 128\n | Red -> 255, 0, 0\n | Rosybrown -> 188, 143, 143\n | Royalblue -> 65, 105, 225\n | Saddlebrown -> 139, 69, 19\n | Salmon -> 250, 128, 114\n | Sandybrown -> 244, 164, 96\n | Seagreen -> 46, 139, 87\n | Seashell -> 255, 245, 238\n | Sienna -> 160, 82, 45\n | Silver -> 192, 192, 192\n | Skyblue -> 135, 206, 235\n | Slateblue -> 106, 90, 205\n | Slategray -> 112, 128, 144\n | Slategrey -> 112, 128, 144\n | Snow -> 255, 250, 250\n | Springgreen -> 0, 255, 127\n | Steelblue -> 70, 130, 180\n | Tan -> 210, 180, 140\n | Teal -> 0, 128, 128\n | Thistle -> 216, 191, 216\n | Tomato -> 255, 99, 71\n | Turquoise -> 64, 224, 208\n | Violet -> 238, 130, 238\n | Wheat -> 245, 222, 179\n | White -> 255, 255, 255\n | Whitesmoke -> 245, 245, 245\n | Yellow -> 255, 255, 0\n | Yellowgreen -> 154, 205, 50\n\n type t =\n | Name of name\n | RGB of (int * int * int)\n (** Red, Green and Blue values. Clipped to [[0..255]] by most (All?)\n browsers. *)\n | RGB_percent of (int * int * int)\n (** RGB channels are specified as a percentage of their maximal value. *)\n | RGBA of (int * int * int * float)\n (** Same as RGB with additional transparency argument. Opacity should be in\n [0.] (completely transparent) and [1.] (completely opaque). *)\n | RGBA_percent of (int * int * int * float)\n (** RGB channels specified as percentage of their maximal value. Alpha\n channel (opacity) is still a [0.] to [1.] float. *)\n | HSL of (int * int * int)\n (** Hue, Saturation and Lightness values. Hue is an angle in degree (in\n interval [[0..360[]). Saturation is a percentage ([[0..100]]) with [0]\n being colorless. Lightness is also a percentage ([[0..100]]) with [0]\n being black. *)\n | HSLA of (int * int * int * float)\n (** Same as HSL with an opacity argument between [0.] and [1.]. *)\n\n let rgb ?a r g b =\n match a with\n | None -> RGB (r, g, b)\n | Some a -> RGBA (r, g, b, a)\n\n let hsl ?a h s l =\n match a with\n | None -> HSL (h, s, l)\n | Some a -> HSLA (h, s, l, a)\n\n let string_of_t = function\n | Name n -> string_of_name n\n | RGB (r, g, b) -> Printf.sprintf \"rgb(%d,%d,%d)\" r g b\n | RGB_percent (r, g, b) -> Printf.sprintf \"rgb(%d%%,%d%%,%d%%)\" r g b\n | RGBA (r, g, b, a) -> Printf.sprintf \"rgba(%d,%d,%d,%f)\" r g b a\n | RGBA_percent (r, g, b, a) -> Printf.sprintf \"rgba(%d%%,%d%%,%d%%,%f)\" r g b a\n | HSL (h, s, l) -> Printf.sprintf \"hsl(%d,%d%%,%d%%)\" h s l\n | HSLA (h, s, l, a) -> Printf.sprintf \"hsla(%d,%d%%,%d%%,%f)\" h s l a\n\n let hex_of_rgb (red, green, blue) =\n let in_range i =\n if i < 0 || i > 255\n then raise (Invalid_argument (string_of_int i ^ \" is out of valid range\"))\n in\n in_range red;\n in_range green;\n in_range blue;\n Printf.sprintf \"#%02X%02X%02X\" red green blue\n\n (* Ocaml <-> JS representation *)\n type js_t = Js.js_string Js.t\n\n (* TODO? be more restrictive, clip values into standard range *)\n let js_t_of_js_string s =\n let rgb_re =\n new%js Js.regExp (Js.bytestring \"^rgb\\\\(\\\\s*\\\\d*,\\\\s*\\\\d*,\\\\s*\\\\d*\\\\)$\")\n in\n let rgb_pct_re =\n new%js Js.regExp (Js.bytestring \"^rgb\\\\(\\\\s*\\\\d*%,\\\\s*\\\\d*%,\\\\s*\\\\d*%\\\\)$\")\n in\n let rgba_re =\n new%js Js.regExp\n (Js.bytestring \"^rgba\\\\(\\\\s*\\\\d*,\\\\s*\\\\d*,\\\\s*\\\\d*,\\\\d*\\\\.?\\\\d*\\\\)$\")\n in\n let rgba_pct_re =\n new%js Js.regExp\n (Js.bytestring \"^rgba\\\\(\\\\s*\\\\d*%,\\\\s*\\\\d*%,\\\\s*\\\\d*%,\\\\d*\\\\.?\\\\d*\\\\)$\")\n in\n let hsl_re =\n new%js Js.regExp (Js.bytestring \"^hsl\\\\(\\\\s*\\\\d*,\\\\s*\\\\d*%,\\\\s*\\\\d*%\\\\)$\")\n in\n let hsla_re =\n new%js Js.regExp\n (Js.bytestring \"^hsla\\\\(\\\\s*\\\\d*,\\\\s*\\\\d*%,\\\\s*\\\\d*%,\\\\d*\\\\.?\\\\d*\\\\)$\")\n in\n if\n Js.to_bool (rgb_re##test s)\n || Js.to_bool (rgba_re##test s)\n || Js.to_bool (rgb_pct_re##test s)\n || Js.to_bool (rgba_pct_re##test s)\n || Js.to_bool (hsl_re##test s)\n || Js.to_bool (hsla_re##test s)\n then s\n else\n match name_of_string (Js.to_string s) with\n | _ -> s\n | exception _ -> raise (Invalid_argument (Js.to_string s ^ \" is not a valid color\"))\n\n let js c = Js.string (string_of_t c)\n\n let ml c =\n let s = Js.to_string c in\n try Name (name_of_string s)\n with Invalid_argument _ -> (\n let fail () = raise (Invalid_argument (s ^ \" is not a valid color\")) in\n let re_rgb =\n Regexp.regexp \"(rgba?)\\\\((?:(\\\\d*),(\\\\d*),(\\\\d*)(?:,(\\\\d*(?:\\\\.\\\\d*)?))?)\\\\)\"\n in\n let re_rgb_pct =\n Regexp.regexp \"(rgba?)\\\\((?:(\\\\d*)%,(\\\\d*)%,(\\\\d*)%(?:,(\\\\d*(?:\\\\.\\\\d*)?))?)\\\\)\"\n in\n let re_hsl =\n Regexp.regexp \"(hsla?)\\\\((?:(\\\\d*),(\\\\d*)%,(\\\\d*)%(?:,(\\\\d*(?:\\\\.\\\\d*)?))?)\\\\)\"\n in\n let i_of_s_o = function\n | None -> fail ()\n | Some i -> (\n try int_of_string i\n with Invalid_argument s | Failure s ->\n raise (Invalid_argument (\"color conversion error (\" ^ i ^ \"): \" ^ s)))\n in\n let f_of_s f =\n try float_of_string f\n with Invalid_argument s | Failure s ->\n raise (Invalid_argument (\"color conversion error (\" ^ f ^ \"): \" ^ s))\n in\n match Regexp.string_match re_rgb s 0 with\n | Some r -> (\n let red = Regexp.matched_group r 2 in\n let green = Regexp.matched_group r 3 in\n let blue = Regexp.matched_group r 4 in\n let alpha = Regexp.matched_group r 5 in\n match Regexp.matched_group r 1 with\n | Some \"rgb\" -> (\n match alpha with\n | Some _ -> fail ()\n | None -> RGB (i_of_s_o red, i_of_s_o green, i_of_s_o blue))\n | Some \"rgba\" -> (\n match alpha with\n | None -> fail ()\n | Some a -> RGBA (i_of_s_o red, i_of_s_o green, i_of_s_o blue, f_of_s a))\n | Some _ | None -> fail ())\n | None -> (\n match Regexp.string_match re_rgb_pct s 0 with\n | Some r -> (\n let red = Regexp.matched_group r 2 in\n let green = Regexp.matched_group r 3 in\n let blue = Regexp.matched_group r 4 in\n let alpha = Regexp.matched_group r 5 in\n match Regexp.matched_group r 1 with\n | Some \"rgb\" -> (\n match alpha with\n | Some _ -> fail ()\n | None -> RGB_percent (i_of_s_o red, i_of_s_o green, i_of_s_o blue))\n | Some \"rgba\" -> (\n match alpha with\n | None -> fail ()\n | Some a ->\n RGBA_percent (i_of_s_o red, i_of_s_o green, i_of_s_o blue, f_of_s a)\n )\n | Some _ | None -> fail ())\n | None -> (\n match Regexp.string_match re_hsl s 0 with\n | Some r -> (\n let red = Regexp.matched_group r 2 in\n let green = Regexp.matched_group r 3 in\n let blue = Regexp.matched_group r 4 in\n let alpha = Regexp.matched_group r 5 in\n match Regexp.matched_group r 1 with\n | Some \"hsl\" -> (\n match alpha with\n | Some _ -> fail ()\n | None -> HSL (i_of_s_o red, i_of_s_o green, i_of_s_o blue))\n | Some \"hsla\" -> (\n match alpha with\n | None -> fail ()\n | Some a ->\n HSLA (i_of_s_o red, i_of_s_o green, i_of_s_o blue, f_of_s a))\n | Some _ | None -> fail ())\n | None -> fail ())))\nend\n\nmodule Length = struct\n (* http://www.w3.org/TR/css3-values/#lengths *)\n\n (* TODO:\n {[\n type js_t = private Js.string Js.t\n val js_t_of_t\n val t_of_js_t\n val t_of_string\n ]}\n *)\n\n type t =\n | Zero\n (* relative *)\n | Em of float\n | Ex of float\n | Px of float\n | Gd of float\n | Rem of float\n | Vw of float\n | Vh of float\n | Vm of float\n | Ch of float\n (* absolute *)\n | Mm of float\n | Cm of float\n | In of float\n | Pt of float\n | Pc of float\n\n let string_of_t = function\n | Zero -> \"0\"\n | Em f -> Printf.sprintf \"%f%s\" f \"em\"\n | Ex f -> Printf.sprintf \"%f%s\" f \"ex\"\n | Px f -> Printf.sprintf \"%f%s\" f \"px\"\n | Gd f -> Printf.sprintf \"%f%s\" f \"gd\"\n | Rem f -> Printf.sprintf \"%f%s\" f \"rem\"\n | Vw f -> Printf.sprintf \"%f%s\" f \"vw\"\n | Vh f -> Printf.sprintf \"%f%s\" f \"vh\"\n | Vm f -> Printf.sprintf \"%f%s\" f \"vm\"\n | Ch f -> Printf.sprintf \"%f%s\" f \"ch\"\n | Mm f -> Printf.sprintf \"%f%s\" f \"mm\"\n | Cm f -> Printf.sprintf \"%f%s\" f \"cm\"\n | In f -> Printf.sprintf \"%f%s\" f \"in\"\n | Pt f -> Printf.sprintf \"%f%s\" f \"pt\"\n | Pc f -> Printf.sprintf \"%f%s\" f \"pc\"\n\n type js_t = Js.js_string Js.t\n\n let js t = Js.string (string_of_t t)\n\n let ml t =\n let s = Js.to_string t in\n if String.equal s \"0\"\n then Zero\n else\n let fail () = raise (Invalid_argument (s ^ \" is not a valid length\")) in\n let re = Regexp.regexp \"^(\\\\d*(?:\\\\.\\\\d*)?)\\\\s*(\\\\S*)$\" in\n match Regexp.string_match re s 0 with\n | None -> fail ()\n | Some r -> (\n let f =\n match Regexp.matched_group r 1 with\n | None -> fail ()\n | Some f -> (\n try float_of_string f\n with Invalid_argument s ->\n raise (Invalid_argument (\"length conversion error: \" ^ s)))\n in\n match Regexp.matched_group r 2 with\n | None -> fail ()\n | Some \"em\" -> Em f\n | Some \"ex\" -> Ex f\n | Some \"px\" -> Px f\n | Some \"gd\" -> Gd f\n | Some \"rem\" -> Rem f\n | Some \"vw\" -> Vw f\n | Some \"vh\" -> Vh f\n | Some \"vm\" -> Vm f\n | Some \"ch\" -> Ch f\n | Some \"mm\" -> Mm f\n | Some \"cm\" -> Cm f\n | Some \"in\" -> In f\n | Some \"pt\" -> Pt f\n | Some \"pc\" -> Pc f\n | Some _ -> fail ())\nend\n\nmodule Angle = struct\n type t =\n | Deg of float\n | Grad of float\n | Rad of float\n | Turns of float\n\n let string_of_t = function\n | Deg f -> Printf.sprintf \"%f%s\" f \"deg\"\n | Grad f -> Printf.sprintf \"%f%s\" f \"grad\"\n | Rad f -> Printf.sprintf \"%f%s\" f \"rad\"\n | Turns f -> Printf.sprintf \"%f%s\" f \"turns\"\n\n type js_t = Js.js_string Js.t\n\n let js t = Js.string (string_of_t t)\n\n let ml j =\n let s = Js.to_string j in\n let re = Regexp.regexp \"^(\\\\d*(?:\\\\.\\\\d*))(deg|grad|rad|turns)$\" in\n let fail () = raise (Invalid_argument (s ^ \" is not a valid length\")) in\n match Regexp.string_match re s 0 with\n | None -> fail ()\n | Some r -> (\n let f =\n match Regexp.matched_group r 1 with\n | None -> fail ()\n | Some f -> (\n try float_of_string f\n with Invalid_argument s ->\n raise (Invalid_argument (\"length conversion error: \" ^ s)))\n in\n match Regexp.matched_group r 2 with\n | Some \"deg\" -> Deg f\n | Some \"grad\" -> Grad f\n | Some \"rad\" -> Rad f\n | Some \"turns\" -> Turns f\n | Some _ | None -> fail ())\nend\n","(* generated code *)"],"names":[],"mappings":"KAu4BkB,EAAwB,OAAxB,OAAwB,eAA8B,mBAAC,C,SAF7D,MACC,GAAT,QAAS,eACT,OACM,QAAN,QAAM,eAA0B,OACtB,kBAGE,IAFA,QAEA,eAAwB,OACpB,KAAO,GACL,SADK,UAET,GAAiB,M,AAAA,I,AAAA,G,EAAA,MC/4BnC,yDDi5BwC,GCj5BxC,UDi5BgB,OAAwB,eAAiC,yB,GAE3D,MAAN,QAAM,eAAwB,K,CAAA,2BACd,2BACC,2BACD,2BACE,gBACC,M,CAAQ,C,EAtBZ,SAAV,EAAyB,C,GARlB,wCAIH,wCADF,wCADC,wCADD,6BAGiC,C,KA3C5B,EAAwB,OAAxB,OAAwB,eAA8B,mBAAC,C,YAJ/D,MACL,GAAH,gBAAG,aAAkB,QAGnB,OACS,GAAT,QAAS,aACH,MAAN,QAAM,eAA0B,OACtB,kBAGE,IAFA,QAEA,eAAwB,OACpB,KAAO,GACL,SADK,UAET,GAAiB,M,AAAA,I,AAAA,G,EAAA,MC51BrC,yDD81B0C,GC91B1C,UD81BkB,OAAwB,eAAiC,yB,GAE3D,MAAN,QAAM,eAAwB,OACpB,4DAaK,2BAVA,2BAEC,2BAED,2BACA,2BAFA,kBAQA,4BALA,2BAEA,2BAVA,2BACA,2BAEA,2BAQA,2BAFA,mBAKH,M,IA/Bb,KA+BqB,C,EApCP,SAAV,EAAyB,C,GAnBlB,QACN,0EAcA,wCADA,wCADA,wCADA,wCADA,wCADA,wCADA,wCADA,wCADA,wCADC,wCADD,wCADA,wCADA,wCADA,8BAa4B,C,MA1GlC,OAAI,KAAiB,G,AAAA,I,AAAA,G,EAAA,MC9tB7B,mBDguBkC,GAA8B,EAAI,GChuBpE,6HDguBU,OAA0D,aAAS,OAAb,aAAa,OAA3C,eAA4C,mBAAC,C,QAV1D,WACH,QACE,OADF,Y,CAEF,GAAe,G,AAAA,I,AAAA,G,EAAA,MCztB/B,gJ,ED2tBsC,GAA8B,E,CAAI,KAA1D,OAA0D,aAAS,OAAb,aAAa,OAA3C,eAA4C,oB,CAAE,C,KAfhE,EAAwB,OAAxB,OAAwB,eAA6B,mBAAC,C,aAH9D,MACR,OAA2B,IAAlB,KAAkB,S,AAAA,I,AAAA,G,EAAA,MC1sB/B,yDD2sB+B,OAGvB,GADF,QACE,eAGA,GADF,QACE,eAGA,GADF,QACE,eAEF,OAYM,QAAN,QAAM,eAA8B,OAiB1B,QADA,QACA,eAAkC,OAmB9B,QADA,QACA,eAA8B,OAiB1B,kBAfI,IADF,QACE,eACE,MAAZ,QAAY,eACD,MAAX,QAAW,eACC,MAAZ,QAAY,eACN,MAAN,QAAM,eAAwB,K,CAAA,2BACd,SAGiC,SAAhB,SAAF,QAAZ,OAAY,cADf,M,EAAA,eAEC,SAEH,gBAE6C,KAAf,SAAhB,SAAF,QAAZ,OAAY,gB,IACP,M,EAAA,YAjCb,IADF,QACE,eACE,MAAZ,QAAY,eACD,MAAX,QAAW,eACC,MAAZ,QAAY,eACN,MAAN,QAAM,eAAwB,K,CAAA,2BACd,SAGyC,SAAhB,SAAF,QAAZ,OAAY,cADvB,M,EAAA,eAEC,SAEH,gBAEqD,KAAf,SAAhB,SAAF,QAAZ,OAAY,gB,IAEf,M,EAAA,YAhCb,IADF,QACE,eACE,MAAZ,QAAY,eACD,MAAX,QAAW,eACC,MAAZ,QAAY,eACN,MAAN,QAAM,eAAwB,K,CAAA,2BACd,SAGiC,SAAhB,SAAF,QAAZ,OAAY,cADf,M,EAAA,eAEC,SAEH,gBACqD,KAAf,SAAhB,SAAF,QAAZ,OAAY,gB,IACf,M,EAAA,K,CAsCK,C,EAjFX,SAAV,EAAyB,C,MAjCwC,OAAxE,cAG2E,OAA3E,cAIuE,OADvE,cAK0E,OAD1E,cAI0E,OAA1E,cAIyE,OADzE,cAIW,aAAX,EAA2B,OACb,aAAX,EAA4B,OACjB,aAAX,EAA+B,OACpB,aAAX,EAAgC,OACrB,aAAX,EAA2B,OAChB,aAAX,EAA4B,cAGV,IAAf,IACC,K,AAAA,I,AAAA,G,EAAA,KACmC,IAAD,GAAe,OAAf,eAA0C,yBAJhF,EAIiF,C,OA7CpF,c,CAAA,a,EAAA,EAC8B,EAAzB,OAAyB,aAAD,GAAgB,OAAhB,eAA4C,oBAAC,C,QAH/D,gCAKb,GACA,KACA,KAAa,gCACgC,C,MAjB7B,kFAOO,iEADJ,wEADY,wEADR,iEADI,iEADR,uCADP,OAMyD,C,EAXrE,UACU,uBACE,cADF,UACE,SAAiB,C,EAP7B,UACU,uBACE,cADF,UACE,SAAiB,C,GA7Kb,udAmJC,KADL,KADI,KADL,KADA,KADC,KADG,KADH,KADC,KADH,KADD,KADM,KADE,KADP,KADK,KADA,KADA,KADF,KADD,KADA,KADE,KADA,KADE,KADJ,KADK,KADF,KADA,KADN,KADG,KADI,KADN,KADA,KADA,KADK,KADC,KADG,KADA,KADJ,KADI,KADP,KADG,KADH,KADG,KADJ,KADE,KADH,KADO,KADH,KADC,KADA,KADG,KADG,KADA,KADE,KADF,KADD,KADF,KADA,KADF,KADM,KADV,KADC,KADF,KADI,KADL,KADO,KADG,KADA,KADA,KADF,KADC,KADF,KADF,KADA,KADC,KADD,KADW,KADX,KADC,KADD,KADG,KADH,KADI,KADL,KADH,KADA,KADC,KADG,KADF,KADC,KAFG,KADN,KAED,KAHA,KADK,KADL,KADM,KADD,KADF,KADI,KADA,KADF,KADC,KADH,KADA,KADI,KADH,KADE,KADG,KADA,KADA,KADA,KADD,KADF,KADH,KADG,KADA,KADI,KADH,KADF,KADD,KADC,KADD,KADK,KADL,KADA,KADJ,KADG,KADC,KADM,KADT,KADI,KADC,KADD,KADA,KADJ,KADK,KADN,KADU,KADT,KADC,KADD,KADA,KADK,KADN,KADQ,KADH,GAkJc,C,MAzSV,mIA4IL,oBACG,oBACH,oBACD,oBACA,oBACK,oBACJ,oBACK,aARJ,qBARE,oBACA,oBACA,oBACL,oBACO,oBACF,oBACN,oBACC,cARG,kDARE,oBACE,oBACL,oBACI,oBACF,oBACA,oBACF,oBACA,aARG,qBATI,oBACH,oBACD,oBACL,oBACA,oBACA,oBACM,oBACJ,oBACH,gBATU,+EARN,oBACF,oBACI,oBACH,oBACG,oBACH,oBACO,oBACJ,aARL,qBARa,oBACF,oBACA,oBACH,oBACH,oBACA,oBACD,oBACG,cARI,kDARV,oBACE,oBACD,oBACU,oBACN,oBACE,oBACA,oBACE,aARL,qBATA,oBACE,oBACE,oBACD,oBACE,oBACA,oBACA,oBACH,oBACP,iBATK,4GARA,oBACG,oBACH,oBACC,oBACD,oBACW,oBACX,oBACC,aARG,qBART,mBACI,mBACD,mBACE,mBACH,mBACD,mBACA,mBACG,aARG,iDARA,mBACJ,mBACE,mBACC,mBACN,mBACK,mBACL,mBACC,YARM,oBATE,mBACA,mBACH,mBACF,mBACG,mBACJ,mBACA,mBACG,mBACD,eATI,8EARF,mBACG,mBACJ,mBACA,mBACH,mBACG,mBACE,mBACC,YARJ,oBARF,mBACH,mBACI,mBACA,mBACK,mBACL,mBACC,mBACD,aARA,iDARE,mBACL,mBACI,mBACA,mBACC,mBACD,mBACJ,mBACS,YARV,oBATK,mBACG,mBACR,mBACM,mBACL,mBACA,mBACC,mBACD,mBACS,gBA2IS,KAAxB,OAAwB,eAAkC,mBAAC,C,GAzS/C,udAmJF,KADL,KADI,KADL,KADA,KADC,KADG,KADH,KADC,KADH,KADD,KADM,KADE,KADP,KADK,KADA,KADA,KADF,KADD,KADA,KADE,KADA,KADE,KADJ,KADK,KADF,KADA,KADN,KADG,KADI,KADN,KADA,KADA,KADK,KADC,KADG,KADA,KADJ,KADI,KADP,KADG,KADH,KADG,KADJ,KADE,KADH,KADO,KADH,KADC,KADA,KADG,KADG,KADA,KADE,KADF,KADD,KADF,KADA,KADF,KADM,KADV,KADC,KADF,KADI,KADL,KADO,KADG,KADA,KADA,KADF,KADC,KADF,KADF,KADA,KADC,KADD,KADW,KADX,KADC,KADD,KADG,KADH,KADI,KADL,KADH,KADA,KADC,KADG,KADF,KADC,KAFG,KADN,KAED,KAHA,KADK,KADL,KADM,KADD,KADF,KADI,KADA,KADF,KADC,KADH,KADA,KADI,KADH,KADE,KADG,KADA,KADA,KADA,KADD,KADF,KADH,KADG,KADA,KADI,KADH,KADF,KADD,KADC,KADD,KADK,KADL,KADA,KADJ,KADG,KADC,KADM,KADT,KADI,KADC,KADD,KADA,KADJ,KADK,KADN,KADU,KADT,KADC,KADD,KADA,KADK,KADN,KADQ,KADH,GAkJe,C,EChUlC,qF,QAAA,4D,QAAA,6E,QAAA,8F,EAAA,c,EAAA,c,EAAA,c,cAAA","ignoreList":[1]}},{"offset":{"line":0,"column":116769},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/console.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Jérôme Vouillon\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen! Import\n\nclass type console = object\n method log : _ -> unit meth\n\n method log_2 : _ -> _ -> unit meth\n\n method log_3 : _ -> _ -> _ -> unit meth\n\n method log_4 : _ -> _ -> _ -> _ -> unit meth\n\n method log_5 : _ -> _ -> _ -> _ -> _ -> unit meth\n\n method log_6 : _ -> _ -> _ -> _ -> _ -> _ -> unit meth\n\n method log_7 : _ -> _ -> _ -> _ -> _ -> _ -> _ -> unit meth\n\n method log_8 : _ -> _ -> _ -> _ -> _ -> _ -> _ -> _ -> unit meth\n\n method debug : _ -> unit meth\n\n method debug_2 : _ -> _ -> unit meth\n\n method debug_3 : _ -> _ -> _ -> unit meth\n\n method debug_4 : _ -> _ -> _ -> _ -> unit meth\n\n method debug_5 : _ -> _ -> _ -> _ -> _ -> unit meth\n\n method info : _ -> unit meth\n\n method info_2 : _ -> _ -> unit meth\n\n method info_3 : _ -> _ -> _ -> unit meth\n\n method info_4 : _ -> _ -> _ -> _ -> unit meth\n\n method info_5 : _ -> _ -> _ -> _ -> _ -> unit meth\n\n method warn : _ -> unit meth\n\n method warn_2 : _ -> _ -> unit meth\n\n method warn_3 : _ -> _ -> _ -> unit meth\n\n method warn_4 : _ -> _ -> _ -> _ -> unit meth\n\n method warn_5 : _ -> _ -> _ -> _ -> _ -> unit meth\n\n method error : _ -> unit meth\n\n method error_2 : _ -> _ -> unit meth\n\n method error_3 : _ -> _ -> _ -> unit meth\n\n method error_4 : _ -> _ -> _ -> _ -> unit meth\n\n method error_5 : _ -> _ -> _ -> _ -> _ -> unit meth\n\n method assert_ : bool t -> unit meth\n\n method assert_1 : bool t -> _ -> unit meth\n\n method assert_2 : bool t -> _ -> _ -> unit meth\n\n method assert_3 : bool t -> _ -> _ -> _ -> unit meth\n\n method assert_4 : bool t -> _ -> _ -> _ -> _ -> unit meth\n\n method assert_5 : bool t -> _ -> _ -> _ -> _ -> _ -> unit meth\n\n method dir : _ -> unit meth\n\n method dirxml : Dom.node t -> unit meth\n\n method trace : unit meth\n\n method group : _ -> unit meth\n\n method group_2 : _ -> _ -> unit meth\n\n method group_3 : _ -> _ -> _ -> unit meth\n\n method group_4 : _ -> _ -> _ -> _ -> unit meth\n\n method group_5 : _ -> _ -> _ -> _ -> _ -> unit meth\n\n method groupCollapsed : _ -> unit meth\n\n method groupCollapsed_2 : _ -> _ -> unit meth\n\n method groupCollapsed_3 : _ -> _ -> _ -> unit meth\n\n method groupCollapsed_4 : _ -> _ -> _ -> _ -> unit meth\n\n method groupCollapsed_5 : _ -> _ -> _ -> _ -> _ -> unit meth\n\n method groupEnd : unit meth\n\n method time : js_string t -> unit meth\n\n method timeEnd : js_string t -> unit meth\nend\n\nexternal get_console : unit -> console t = \"caml_js_get_console\"\n\nlet console = get_console ()\n"],"names":[],"mappings":"EA+H4B,IAAd,OAAc"}},{"offset":{"line":0,"column":116794},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/dom_events.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2010 Jérôme Vouillon\n * Laboratoire PPS - CNRS Université Paris Diderot\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\n(** Javascript events. *)\n\nopen! Import\nmodule Typ = Dom_html.Event\n\ntype listener = Dom_html.event_listener_id\n\nlet listen ?(capture = false) target typ cb =\n Dom_html.addEventListener\n target\n typ\n (Dom_html.full_handler (fun n e -> Js.bool (cb n e)))\n (Js.bool capture)\n\nlet stop_listen = Dom_html.removeEventListener\n","(* generated code *)"],"names":[],"mappings":"EA+B+C,gBAAR,EAAgB,C,EAJ5C,UAAY,gBAKnB,IADqD,IACpC,mBADjB,aAAqD,uBACpC,C,EChCrB,mC,QAAA,4D,EAAA,c,QAAA,8B,EAAA,c,EAAA,c,EAAA,c,cAAA","ignoreList":[1]}},{"offset":{"line":0,"column":117182},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/dom_svg.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2014 Hugo Heuzard\n * Copyright (C) 2014 Jérôme Vouillon\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nopen Js\nopen! Import\n\nlet xmlns = Js.string \"http://www.w3.org/2000/svg\"\n\n(* translate spec from http://www.w3.org/TR/SVG/idl.html *)\n(* http://www.w3.org/TR/SVG/struct.html *)\n\ntype error_code =\n | WRONG_TYPE_ERR\n | INVALID_VALUE_ERR\n | MATRIX_NOT_INVERTABLE\n\nclass type svg_error = object\n inherit Js.error\n\n method code : error_code t readonly_prop\nend\n\nexception SVGError of svg_error\n\ntype lengthUnitType =\n | LENGTHTYPE_UNKNOWN\n | LENGTHTYPE_NUMBER\n | LENGTHTYPE_PERCENTAGE\n | LENGTHTYPE_EMS\n | LENGTHTYPE_EXS\n | LENGTHTYPE_PX\n | LENGTHTYPE_CM\n | LENGTHTYPE_MM\n | LENGTHTYPE_IN\n | LENGTHTYPE_PT\n | LENGTHTYPE_PC\n\ntype angleUnitType =\n | ANGLETYPE_UNKNOWN\n | ANGLETYPE_UNSPECIFIED\n | ANGLETYPE_DEG\n | ANGLETYPE_RAD\n | ANGLETYPE_GRAD\n\ntype colorType =\n | COLORTYPE_UNKNOWN\n | COLORTYPE_RGBCOLOR\n | COLORTYPE_RGBCOLOR_ICCCOLOR\n | COLORTYPE_CURRENTCOLOR\n\ntype alignmentType =\n | PRESERVEASPECTRATIO_UNKNOWN\n | PRESERVEASPECTRATIO_NONE\n | PRESERVEASPECTRATIO_XMINYMIN\n | PRESERVEASPECTRATIO_XMIDYMIN\n | PRESERVEASPECTRATIO_XMAXYMIN\n | PRESERVEASPECTRATIO_XMINYMID\n | PRESERVEASPECTRATIO_XMIDYMID\n | PRESERVEASPECTRATIO_XMAXYMID\n | PRESERVEASPECTRATIO_XMINYMAX\n | PRESERVEASPECTRATIO_XMIDYMAX\n | PRESERVEASPECTRATIO_XMAXYMAX\n\ntype meetOrSliceType =\n | MEETORSLICE_UNKNOWN\n | MEETORSLICE_MEET\n | MEETORSLICE_SLICE\n\ntype transformType =\n | TRANSFORM_UNKNOWN\n | TRANSFORM_MATRIX\n | TRANSFORM_TRANSLATE\n | TRANSFORM_SCALE\n | TRANSFORM_ROTATE\n | TRANSFORM_SKEWX\n | TRANSFORM_SKEWY\n\ntype zoomAndPanType =\n | ZOOMANDPAN_UNKNOWN\n | ZOOMANDPAN_DISABLE\n | ZOOMANDPAN_MAGNIFY\n\ntype lengthAdjust =\n | LENGTHADJUST_UNKNOWN\n | LENGTHADJUST_SPACING\n | LENGTHADJUST_SPACINGANDGLYPHS\n\ntype unitType =\n | UNIT_TYPE_UNKNOWN\n | UNIT_TYPE_USERSPACEONUSE\n | UNIT_TYPE_OBJECTBOUNDINGBOX\n\n(* interface SVGRenderingIntent *)\ntype intentType =\n | RENDERING_INTENT_UNKNOWN\n | RENDERING_INTENT_AUTO\n | RENDERING_INTENT_PERCEPTUAL\n | RENDERING_INTENT_RELATIVE_COLORIMETRIC\n | RENDERING_INTENT_SATURATION\n | RENDERING_INTENT_ABSOLUTE_COLORIMETRIC\n\n(* Path Segment Types *)\ntype pathSegmentType =\n | PATHSEG_UNKNOWN\n | PATHSEG_CLOSEPATH\n | PATHSEG_MOVETO_ABS\n | PATHSEG_MOVETO_REL\n | PATHSEG_LINETO_ABS\n | PATHSEG_LINETO_REL\n | PATHSEG_CURVETO_CUBIC_ABS\n | PATHSEG_CURVETO_CUBIC_REL\n | PATHSEG_CURVETO_QUADRATIC_ABS\n | PATHSEG_CURVETO_QUADRATIC_REL\n | PATHSEG_ARC_ABS\n | PATHSEG_ARC_REL\n | PATHSEG_LINETO_HORIZONTAL_ABS\n | PATHSEG_LINETO_HORIZONTAL_REL\n | PATHSEG_LINETO_VERTICAL_ABS\n | PATHSEG_LINETO_VERTICAL_REL\n | PATHSEG_CURVETO_CUBIC_SMOOTH_ABS\n | PATHSEG_CURVETO_CUBIC_SMOOTH_REL\n | PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS\n | PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL\n\n(* textPath Method Types *)\ntype textPathMethodType =\n | TEXTPATH_METHODTYPE_UNKNOWN\n | TEXTPATH_METHODTYPE_ALIGN\n | TEXTPATH_METHODTYPE_STRETCH\n\n(* textPath Spacing Types *)\ntype textPathSpacingType =\n | TEXTPATH_SPACINGTYPE_UNKNOWN\n | TEXTPATH_SPACINGTYPE_AUTO\n | TEXTPATH_SPACINGTYPE_EXACT\n\n(* Spread Method Types *)\ntype spreadMethodType =\n | SPREADMETHOD_UNKNOWN\n | SPREADMETHOD_PAD\n | SPREADMETHOD_REFLECT\n | SPREADMETHOD_REPEAT\n\ntype suspendHandleID\n\n(****)\n\nclass type ['a] animated = object\n method baseVal : 'a prop\n\n method animVal : 'a prop\nend\n\nclass type ['a] list = object\n method numberOfItems : int readonly_prop\n\n method clear : unit meth\n\n method initialize : 'a -> 'a meth\n\n method getItem : int -> 'a meth\n\n method insertItemBefore : 'a -> int -> 'a meth\n\n method replaceItem : 'a -> int -> 'a meth\n\n method removeItem : int -> 'a meth\n\n method appendItem : 'a -> 'a meth\nend\n\n(****)\n\n(* interface SVGElement *)\nclass type element = object\n inherit Dom.element\n\n method id : js_string t prop\n\n method xmlbase : js_string t prop\n\n method ownerSVGElement : svgElement t readonly_prop\n\n method viewportElement : element t readonly_prop\nend\n\n(* interface SVGAnimatedString *)\nand animatedString = [js_string t] animated\n\n(* interface SVGAnimatedBoolean *)\nand animatedBoolean = [bool t] animated\n\n(* interface SVGStringList *)\nand stringList = [js_string t] list\n\n(* interface SVGAnimatedEnumeration *)\nand animatedEnumeration = [int (*short*)] animated\n\n(* interface SVGAnimatedInteger *)\nand animatedInteger = [int] animated\n\n(* interface SVGAnimatedNumber *)\nand animatedNumber = [number_t] animated\n\n(* interface SVGNumberList *)\nand numberList = [number_t] list\n\n(* interface SVGAnimatedNumberList *)\nand animatedNumberList = [numberList t] animated\n\n(* interface SVGLength *)\nand length = object\n method unitType : lengthUnitType readonly_prop\n\n method value : number_t prop\n\n method valueInSpecifiedUnits : number_t prop\n\n method valueAsString : js_string t prop\n\n method newValueSpecifiedUnits : lengthUnitType -> number_t -> unit meth\n\n method convertToSpecifiedUnits : lengthUnitType -> unit meth\nend\n\n(* interface SVGAnimatedLength *)\nand animatedLength = [length t] animated\n\n(* interface SVGLengthList *)\nand lengthList = [length t] list\n\n(* interface SVGAnimatedLengthList *)\nand animatedLengthList = [lengthList t] animated\n\n(* interface SVGAngle *)\nand angle = object\n method unitType : angleUnitType readonly_prop\n\n method value : number_t prop\n\n method valueInSpecifiedUnits : number_t prop\n\n method valueAsString : js_string t prop\n\n method newValueSpecifiedUnits : angleUnitType -> number_t -> unit meth\n\n method convertToSpecifiedUnits : angleUnitType -> unit meth\nend\n\n(* interface SVGAnimatedAngle *)\nand animatedAngle = [angle t] animated\n\n(* XXXXX Move it *)\nand rgbColor = object end\n\n(* interface SVGColor *)\nand color = object\n (* XXX inherit cssValue *)\n method colorType : colorType readonly_prop\n\n method rgbColor : rgbColor t readonly_prop\n\n method iccColor : iccColor t readonly_prop\n\n method setRGBColor : js_string t -> unit meth\n\n method setRGBColorICCColor : js_string t -> js_string t -> unit meth\n\n method setColor : colorType -> js_string t -> js_string t -> unit meth\nend\n\n(* interface SVGICCColor *)\nand iccColor = object\n method colorProfile : js_string t prop\n\n method colors : numberList t readonly_prop\nend\n\n(* interface SVGRect *)\nand rect = object\n method x : number_t prop\n\n method y : number_t prop\n\n method width : number_t prop\n\n method height : number_t prop\nend\n\n(* interface SVGAnimatedRect *)\nand animatedRect = [rect t] animated\n\n(* interface SVGStylable *)\nand stylable = object\n method className : animatedString t readonly_prop\n\n method style : Dom_html.cssStyleDeclaration t readonly_prop\n (* CSSValue getPresentationAttribute(in DOMString name); *)\nend\n\n(* interface SVGLocatable *)\nand locatable = object\n method nearestViewportElement : element t readonly_prop\n\n method farthestViewportElement : element t readonly_prop\n\n method getBBox : rect t meth\n\n method getCTM : matrix t meth\n\n method getScreenCTM : matrix t meth\n\n method getTransformToElement : element t -> matrix t meth\nend\n\n(* interface SVGTransformable *)\nand transformable = object\n inherit locatable\n\n method transform : animatedTransformList t readonly_prop\nend\n\n(* interface SVGTests *)\nand tests = object\n method requiredFeatures : stringList t readonly_prop\n\n method requiredExtensions : stringList t readonly_prop\n\n method systemLanguage : stringList t readonly_prop\n\n method hasExtension : js_string t -> bool t meth\nend\n\n(* interface SVGLangSpace *)\nand langSpace = object\n method xmllang : js_string t prop\n\n method xmlspace : js_string t prop\nend\n\n(* interface SVGExternalResourcesRequired *)\nand externalResourcesRequired = object\n method externalResourcesRequired : animatedBoolean t readonly_prop\nend\n\n(* interface SVGFitToViewBox *)\nand fitToViewBox = object\n method viewBox : animatedRect t readonly_prop\n\n method preserveAspectRatio : animatedPreserveAspectRatio t readonly_prop\nend\n\n(* interface SVGZoomAndPan *)\nand zoomAndPan = object\n method zoomAndPan : zoomAndPanType prop\nend\n\n(* interface SVGViewSpec *)\nand viewSpec = object\n inherit zoomAndPan\n\n inherit fitToViewBox\n\n method transform : transformList t readonly_prop\n\n method viewTarget : element t readonly_prop\n\n method viewBoxString : js_string t readonly_prop\n\n method preserveAspectRatioString : js_string t readonly_prop\n\n method transformString : js_string t readonly_prop\n\n method viewTargetString : js_string t readonly_prop\nend\n\n(* interface SVGURIReference *)\nand uriReference = object\n method href : animatedString t readonly_prop\nend\n\n(* interface SVGCSSRule : CSSRule *)\n(* const unsigned short COLOR_PROFILE_RULE = 7; *)\n(* }; *)\n\n(* interface SVGDocument *)\nand document = object\n inherit [element] Dom.document\n\n (*XXX inherit documentEvent *)\n method title : js_string t prop\n\n method referrer : js_string t readonly_prop\n\n method domain : js_string t prop\n\n method _URL : js_string t readonly_prop\n\n method rootElement : svgElement t opt readonly_prop\n (* rootElement will be null or undefined in an html context *)\nend\n\n(* interface SVGSVGElement *)\nand svgElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit locatable\n\n inherit fitToViewBox\n\n inherit zoomAndPan\n\n (*XXX inherit documentevent, viewcss, documentcss *)\n method x : animatedLength t readonly_prop\n\n method y : animatedLength t readonly_prop\n\n method width : animatedLength t readonly_prop\n\n method height : animatedLength t readonly_prop\n\n method contentScriptType : js_string t prop\n\n method contentStyleType : js_string t prop\n\n method viewport : rect t readonly_prop\n\n method pixelUnitToMillimeterX : number_t readonly_prop\n\n method pixelUnitToMillimeterY : number_t readonly_prop\n\n method screenPixelUnitToMillimeterX : number_t readonly_prop\n\n method screenPixelUnitToMillimeterY : number_t readonly_prop\n\n method useCurrentView : bool t readonly_prop\n\n method currentView : viewSpec t readonly_prop\n\n method currentScale : number_t prop\n\n method currentTranslate : point t readonly_prop\n\n method suspendRedraw : int -> suspendHandleID meth\n\n method unsuspendRedraw : suspendHandleID -> unit meth\n\n method unsuspendRedrawAll : unit meth\n\n method forceRedraw : unit meth\n\n method pauseAnimations : unit meth\n\n method unpauseAnimations : unit meth\n\n method animationsPaused : bool t meth\n\n method getCurrentTime : number_t meth\n\n method setCurrentTime : int -> unit meth\n\n method getIntersectionList : rect t -> element t -> element Dom.nodeList t meth\n\n method getEnclosureList : rect t -> element t -> element Dom.nodeList t meth\n\n method checkIntersection : element t -> rect t -> bool t\n\n method checkEnclosure : element t -> rect t -> bool t\n\n method deselectAll : unit meth\n\n method createSVGNumber : number t meth\n\n method createSVGLength : length t meth\n\n method createSVGAngle : angle t meth\n\n method createSVGPoint : point t meth\n\n method createSVGMatrix : matrix t meth\n\n method createSVGRect : rect t meth\n\n method createSVGTransform : transform t meth\n\n method createSVGTransformFromMatrix : matrix t -> transform t meth\n\n method getElementById : js_string t -> Dom.element t meth\nend\n\n(* interface SVGGElement *)\nand gElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n inherit Dom_html.eventTarget\nend\n\n(* interface SVGDefsElement *)\nand defsElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n (* XXXXXXX ? inherit Dom_html.eventTarget *)\nend\n\n(* interface SVGDescElement *)\nand descElement = object\n inherit element\n\n inherit langSpace\n\n inherit stylable\n (* XXXXXXX ? inherit Dom_html.eventTarget *)\nend\n\n(* interface SVGTitleElement *)\nand titleElement = object\n inherit element\n\n inherit langSpace\n\n inherit stylable\nend\n\n(* interface SVGSymbolElement *)\nand symbolElement = object\n inherit element\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit fitToViewBox\n\n inherit Dom_html.eventTarget\nend\n\n(* interface SVGUseElement *)\nand useElement = object\n inherit element\n\n inherit uriReference\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n method x : animatedLength t readonly_prop\n\n method y : animatedLength t readonly_prop\n\n method width : animatedLength t readonly_prop\n\n method height : animatedLength t readonly_prop\n\n method instanceRoot : elementInstance t readonly_prop\n\n method animatedInstanceRoot : elementInstance t readonly_prop\nend\n\nand elementInstance = object\n inherit Dom_html.eventTarget\n\n method correspondingElement : element t readonly_prop\n\n method correspondingUseElement : useElement t readonly_prop\n\n method parentNode : elementInstance t readonly_prop\n\n method childNodes : elementInstanceList t readonly_prop\n\n method firstChild : elementInstance t readonly_prop\n\n method lastChild : elementInstance t readonly_prop\n\n method previousSibling : elementInstance t readonly_prop\n\n method nextSibling : elementInstance t readonly_prop\nend\n\n(* interface SVGElementInstanceList *)\nand elementInstanceList = object\n method length : int readonly_prop\n\n method item : int -> elementInstance t\nend\n\n(* interface SVGImageElement *)\nand imageElement = object\n inherit element\n\n inherit uriReference\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n method x : animatedLength t readonly_prop\n\n method y : animatedLength t readonly_prop\n\n method width : animatedLength t readonly_prop\n\n method height : animatedLength t readonly_prop\n (* readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio *)\nend\n\nand switchElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\nend\n\n(* XXX deprecated => interface GetSVGDocument => SVGDocument getSVGDocument() *)\n\n(* interface SVGStyleElement *)\nand styleElement = object\n inherit element\n\n inherit langSpace\n\n method type_ : js_string t prop\n\n method media : js_string t prop\n\n method title : js_string t prop\nend\n\n(* interface SVGPoint *)\nand point = object\n method x : number_t readonly_prop\n\n method y : number_t readonly_prop\n\n method matrixTransform : matrix t -> point t meth\nend\n\n(* interface SVGPointList *)\nand pointList = [point t] list\n\n(* interface SVGMatrix *)\nand matrix = object\n method a : number_t readonly_prop\n\n method b : number_t readonly_prop\n\n method c : number_t readonly_prop\n\n method d : number_t readonly_prop\n\n method e : number_t readonly_prop\n\n method f : number_t readonly_prop\n\n method multiply : matrix t -> matrix t meth\n\n method inverse : matrix t meth\n\n method translate : number_t -> number_t -> matrix t meth\n\n method scale : number_t -> matrix t meth\n\n method scaleNonUniform : number_t -> number_t -> matrix t meth\n\n method rotate : number_t -> matrix t meth\n\n method rotateFromVector : number_t -> number_t -> matrix t meth\n\n method flipX : matrix t meth\n\n method flipY : matrix t meth\n\n method skewX : number_t -> matrix t meth\n\n method skewY : number_t -> matrix t meth\nend\n\n(* interface SVGTransform *)\nand transform = object\n method _type : transformType readonly_prop\n\n method matrix : matrix t readonly_prop\n\n method angle : number_t readonly_prop\n\n method setMatrix : matrix t -> unit meth\n\n method setTranslate : number_t -> number_t -> unit meth\n\n method setScale : number_t -> number_t -> unit meth\n\n method setRotate : number_t -> number_t -> number_t -> unit meth\n\n method setSkewX : number_t -> unit meth\n\n method setSkewY : number_t -> unit meth\nend\n\n(* interface SVGTransformList *)\nand transformList = object\n inherit [transform t] list\n\n method createSVGTransformFromMatrix : matrix -> transform t meth\n\n method consolidate : transform t meth\nend\n\n(* interface SVGAnimatedTransformList *)\nand animatedTransformList = [transformList t] animated\n\n(* interface SVGPreserveAspectRatio *)\nand preserveAspectRatio = object\n method align : alignmentType readonly_prop\n\n method meetOrSlice : meetOrSliceType readonly_prop\nend\n\n(* interface SVGAnimatedPreserveAspectRatio *)\nand animatedPreserveAspectRatio = [preserveAspectRatio t] animated\n\n(* interface SVGPathSeg *)\nand pathSeg = object\n method pathSegType : pathSegmentType readonly_prop\n\n method pathSegTypeAsLetter : js_string t readonly_prop\nend\n\n(* interface SVGPathSegClosePath *)\nand pathSegClosePath = pathSeg\n\n(* interface SVGPathSegMovetoAbs *)\n(* interface SVGPathSegMovetoRel *)\nand pathSegMoveto = object\n inherit pathSeg\n\n method x : number_t prop\n\n method y : number_t prop\nend\n\n(* interface SVGPathSegLinetoAbs *)\n(* interface SVGPathSegLinetoRel *)\nand pathSegLineto = object\n inherit pathSeg\n\n method x : number_t prop\n\n method y : number_t prop\nend\n\n(* interface SVGPathSegCurvetoCubicAbs *)\n(* interface SVGPathSegCurvetoCubicRel *)\nand pathSegCurvetoCubic = object\n inherit pathSeg\n\n method x : number_t prop\n\n method y : number_t prop\n\n method x1 : number_t prop\n\n method y1 : number_t prop\n\n method x2 : number_t prop\n\n method y2 : number_t prop\nend\n\n(* interface SVGPathSegCurvetoQuadraticAbs *)\n(* interface SVGPathSegCurvetoQuadraticRel *)\nand pathSegCurvetoQuadratic = object\n inherit pathSeg\n\n method x : number_t prop\n\n method y : number_t prop\n\n method x1 : number_t prop\n\n method y1 : number_t prop\nend\n\n(* interface SVGPathSegArcAbs *)\n(* interface SVGPathSegArcRel*)\nand pathSegArc = object\n inherit pathSeg\n\n method y : number_t prop\n\n method r1 : number_t prop\n\n method r2 : number_t prop\n\n method angle : number_t prop\n\n method largeArcFlag : bool t prop\n\n method sweepFlag : bool t prop\nend\n\n(* interface SVGPathSegLinetoHorizontalAbs *)\n(* interface SVGPathSegLinetoHorizontalRel *)\nand pathSegLinetoHorizontal = object\n inherit pathSeg\n\n method x : number_t\nend\n\n(* interface SVGPathSegLinetoVerticalAbs *)\n(* interface SVGPathSegLinetoVerticalRel *)\nand pathSegLinetoVertical = object\n inherit pathSeg\n\n method y : number_t\nend\n\nand pathSegCurvetoCubicSmooth = object\n inherit pathSeg\n\n method x : number_t\n\n method y : number_t\n\n method x2 : number_t\n\n method y2 : number_t\nend\n\n(* interface SVGPathSegCurvetoQuadraticSmoothAbs *)\n(* interface SVGPathSegCurvetoQuadraticSmoothRel *)\nand pathSegCurvetoQuadraticSmooth = object\n inherit pathSeg\n\n method x : number_t\n\n method y : number_t\nend\n\nand pathSegList = [pathSeg t] list\n\n(* interface SVGAnimatedPathData *)\nand animatedPathData = object\n method pathSegList : pathSegList t prop\n\n method normalizedPathSegList : pathSegList t prop\n\n method animatedPathSegList : pathSegList t prop\n\n method animatedNormalizedPathSegList : pathSegList t prop\nend\n\n(* interface SVGPathElement *)\nand pathElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n inherit animatedPathData\n\n method pathLength : animatedNumber t readonly_prop\n\n method getTotalLength : number_t meth\n\n method getPointAtLength : number_t -> point t meth\n\n method getPathSegAtLength : number_t -> int\n\n method createSVGPathSegClosePath : pathSegClosePath meth\n\n method createSVGPathSegMovetoAbs : number_t -> number_t -> pathSegMoveto meth\n\n method createSVGPathSegMovetoRel : number_t -> number_t -> pathSegMoveto meth\n\n method createSVGPathSegLinetoAbs : number_t -> number_t -> pathSegLineto meth\n\n method createSVGPathSegLinetoRel : number_t -> number_t -> pathSegLineto meth\n\n method createSVGPathSegCurvetoCubicAbs :\n number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> pathSegCurvetoCubic meth\n\n method createSVGPathSegCurvetoCubicRel :\n number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> pathSegCurvetoCubic meth\n\n method createSVGPathSegCurvetoQuadraticAbs :\n number_t -> number_t -> number_t -> number_t -> pathSegCurvetoQuadratic meth\n\n method createSVGPathSegCurvetoQuadraticRel :\n number_t -> number_t -> number_t -> number_t -> pathSegCurvetoQuadratic meth\n\n method createSVGPathSegArcAbs :\n number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> bool t\n -> bool t\n -> pathSegArc meth\n\n method createSVGPathSegArcRel :\n number_t\n -> number_t\n -> number_t\n -> number_t\n -> number_t\n -> bool t\n -> bool t\n -> pathSegArc meth\n\n method createSVGPathSegLinetoHorizontalAbs : number_t -> pathSegLinetoHorizontal meth\n\n method createSVGPathSegLinetoHorizontalRel : number_t -> pathSegLinetoHorizontal meth\n\n method createSVGPathSegLinetoVerticalAbs : number_t -> pathSegLinetoVertical meth\n\n method createSVGPathSegLinetoVerticalRel : number_t -> pathSegLinetoVertical meth\n\n method createSVGPathSegCurvetoCubicSmoothAbs :\n number_t -> number_t -> number_t -> number_t -> pathSegCurvetoCubicSmooth meth\n\n method createSVGPathSegCurvetoCubicSmoothRel :\n number_t -> number_t -> number_t -> number_t -> pathSegCurvetoCubicSmooth meth\n\n method createSVGPathSegCurvetoQuadraticSmoothAbs :\n number_t -> number_t -> pathSegCurvetoQuadraticSmooth meth\n\n method createSVGPathSegCurvetoQuadraticSmoothRel :\n number_t -> number_t -> pathSegCurvetoQuadraticSmooth meth\nend\n\n(* interface SVGRectElement *)\nand rectElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n method x : animatedLength t readonly_prop\n\n method y : animatedLength t readonly_prop\n\n method width : animatedLength t readonly_prop\n\n method height : animatedLength t readonly_prop\n\n method rx : animatedLength t readonly_prop\n\n method ry : animatedLength t readonly_prop\nend\n\n(* interface SVGCircleElement *)\nand circleElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n method cx : animatedLength t readonly_prop\n\n method cy : animatedLength t readonly_prop\n\n method r : animatedLength t readonly_prop\nend\n\n(* interface SVGEllipseElement *)\nand ellipseElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n method cx : animatedLength t readonly_prop\n\n method cy : animatedLength t readonly_prop\n\n method rx : animatedLength t readonly_prop\n\n method ry : animatedLength t readonly_prop\nend\n\n(* interface SVGLineElement *)\nclass type lineElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n inherit Dom_html.eventTarget\n\n method x1 : animatedLength t readonly_prop\n\n method y1 : animatedLength t readonly_prop\n\n method x2 : animatedLength t readonly_prop\n\n method y2 : animatedLength t readonly_prop\nend\n\n(* interface SVGAnimatedPoints *)\nand animatedPoints = object\n method points : pointList t readonly_prop\n\n method animatedpoints : pointList t readonly_prop\nend\n\n(* interface SVGPolylineElement *)\nand polyLineElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n inherit animatedPoints\nend\n\n(* interface SVGPolygonElement *)\nand polygonElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n inherit animatedPoints\nend\n\n(* interface SVGTextContentElement *)\nand textContentElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit Dom_html.eventTarget\n\n method textLength : animatedLength t readonly_prop\n\n method lengthAdjust : lengthAdjust animated t readonly_prop\n\n method getNumberOfChars : int meth\n\n method getComputedTextLength : number_t meth\n\n method getSubStringLength : int -> int -> number_t meth\n\n method getStartPositionOfChar : int -> point t meth\n\n method getEndPositionOfChar : int -> point t meth\n\n method getExtentOfChar : int -> rect t meth\n\n method getRotationOfChar : int -> number_t meth\n\n method getCharNumAtPosition : point -> int meth\n\n method selectSubString : int -> int -> unit meth\nend\n\n(* interface SVGTextPositioningElement *)\nand textPositioningElement = object\n inherit textContentElement\n\n method x : animatedLengthList t readonly_prop\n\n method y : animatedLengthList t readonly_prop\n\n method dx : animatedLengthList t readonly_prop\n\n method dy : animatedLengthList t readonly_prop\n\n method rotate : animatedNumberList t readonly_prop\nend\n\n(* interface SVGTextElement *)\nand textElement = object\n inherit textPositioningElement\n\n inherit transformable\nend\n\nand tspanElement = textPositioningElement\n\nand trefElement = object\n inherit textPositioningElement\n\n inherit uriReference\nend\n\n(* interface SVGTextPathElement *)\nand textPathElementMethod = [textPathMethodType] animated\n\nand textPathElementSpacing = [textPathSpacingType] animated\n\nand textPathElement = object\n inherit textContentElement\n\n inherit uriReference\n\n method startOffset : animatedLength t readonly_prop\n\n method method_ : textPathElementMethod readonly_prop\n\n method spacing : textPathElementSpacing readonly_prop\nend\n\n(* interface SVGAltGlyphElement *)\nand altGlyphElement = object\n inherit textPositioningElement\n\n inherit uriReference\n\n method glyphRef : js_string t prop\n\n method format : js_string t prop\nend\n\n(* interface SVGAltGlyphDefElement *)\nand altGlyphDefElement = element\n\n(* interface SVGAltGlyphItemElement *)\nand altGlyphItemElement = element\n\n(* interface SVGGlyphRefElement *)\nand glyphRefElement = object\n inherit element\n\n inherit uriReference\n\n inherit stylable\n\n method glyphRef : js_string t prop\n\n method format : js_string t prop\n\n method x : number_t prop\n\n method y : number_t prop\n\n method dx : number_t prop\n\n method dy : number_t prop\nend\n\n(* interface SVGPaint : SVGColor { *)\n\n(* // Paint Types *)\n(* const unsigned short SVG_PAINTTYPE_UNKNOWN = 0; *)\n(* const unsigned short SVG_PAINTTYPE_RGBCOLOR = 1; *)\n(* const unsigned short SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR = 2; *)\n(* const unsigned short SVG_PAINTTYPE_NONE = 101; *)\n(* const unsigned short SVG_PAINTTYPE_CURRENTCOLOR = 102; *)\n(* const unsigned short SVG_PAINTTYPE_URI_NONE = 103; *)\n(* const unsigned short SVG_PAINTTYPE_URI_CURRENTCOLOR = 104; *)\n(* const unsigned short SVG_PAINTTYPE_URI_RGBCOLOR = 105; *)\n(* const unsigned short SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106; *)\n(* const unsigned short SVG_PAINTTYPE_URI = 107; *)\n\n(* readonly attribute unsigned short paintType; *)\n(* readonly attribute DOMString uri; *)\n\n(* void setUri(in DOMString uri); *)\n(* void setPaint(in unsigned short paintType, in DOMString uri, in DOMString rgbColor, in DOMString iccColor) raises(SVGException); *)\n(* }; *)\n\n(* interface SVGMarkerElement : SVGElement, *)\n(* SVGLangSpace, *)\n(* SVGExternalResourcesRequired, *)\n(* SVGStylable, *)\n(* SVGFitToViewBox { *)\n\n(* // Marker Unit Types *)\n(* const unsigned short SVG_MARKERUNITS_UNKNOWN = 0; *)\n(* const unsigned short SVG_MARKERUNITS_USERSPACEONUSE = 1; *)\n(* const unsigned short SVG_MARKERUNITS_STROKEWIDTH = 2; *)\n\n(* // Marker Orientation Types *)\n(* const unsigned short SVG_MARKER_ORIENT_UNKNOWN = 0; *)\n(* const unsigned short SVG_MARKER_ORIENT_AUTO = 1; *)\n(* const unsigned short SVG_MARKER_ORIENT_ANGLE = 2; *)\n\n(* readonly attribute SVGAnimatedLength refX; *)\n(* readonly attribute SVGAnimatedLength refY; *)\n(* readonly attribute SVGAnimatedEnumeration markerUnits; *)\n(* readonly attribute SVGAnimatedLength markerWidth; *)\n(* readonly attribute SVGAnimatedLength markerHeight; *)\n(* readonly attribute SVGAnimatedEnumeration orientType; *)\n(* readonly attribute SVGAnimatedAngle orientAngle; *)\n\n(* void setOrientToAuto() raises(DOMException); *)\n(* void setOrientToAngle(in SVGAngle angle) raises(DOMException); *)\n(* }; *)\n\n(* interface SVGColorProfileElement : SVGElement, *)\n(* SVGURIReference, *)\n(* SVGRenderingIntent { *)\n(* attribute DOMString local; *)\n(* attribute DOMString name; *)\n(* attribute unsigned short renderingIntent; *)\n(* }; *)\n\n(* interface SVGColorProfileRule : SVGCSSRule, *)\n(* SVGRenderingIntent { *)\n(* attribute DOMString src setraises(DOMException); *)\n(* attribute DOMString name setraises(DOMException); *)\n(* attribute unsigned short renderingIntent setraises(DOMException); *)\n(* }; *)\n\n(* interface SVGGradientElement *)\nand animatedSpreadMethod = [spreadMethodType] animated\n\nand gradientElement = object\n inherit element\n\n inherit uriReference\n\n inherit stylable\n\n (* readonly attribute SVGAnimatedEnumeration gradientUnits; *)\n method gradientTransform : animatedTransformList t readonly_prop\n\n method spreadMethod : animatedSpreadMethod t readonly_prop\nend\n\n(* interface SVGLinearGradientElement *)\nand linearGradientElement = object\n inherit gradientElement\n\n method x1 : animatedLength t readonly_prop\n\n method y1 : animatedLength t readonly_prop\n\n method x2 : animatedLength t readonly_prop\n\n method y2 : animatedLength t readonly_prop\nend\n\n(* interface SVGRadialGradientElement *)\nand radialGradientElement = object\n inherit gradientElement\n\n method cx : animatedLength t readonly_prop\n\n method cy : animatedLength t readonly_prop\n\n method r : animatedLength t readonly_prop\n\n method fx : animatedLength t readonly_prop\n\n method fy : animatedLength t readonly_prop\nend\n\n(* interface SVGStopElement *)\nand stopElement = object\n inherit element\n\n inherit stylable\n\n method offset : animatedNumber t readonly_prop\nend\n\n(* interface SVGPatternElement *)\nand patternElement = object\n inherit element\n\n inherit uriReference\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit fitToViewBox\n\n (* readonly attribute SVGAnimatedEnumeration patternUnits; *)\n (* readonly attribute SVGAnimatedEnumeration patternContentUnits; *)\n method patternTransform : animatedTransformList t readonly_prop\n\n method x : animatedLength t readonly_prop\n\n method y : animatedLength t readonly_prop\n\n method width : animatedLength t readonly_prop\n\n method height : animatedLength t readonly_prop\nend\n\n(* interface SVGClipPathElement *)\nand clipPathElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n (* readonly attribute SVGAnimatedEnumeration clipPathUnits; *)\nend\n\n(* interface SVGMaskElement *)\nand maskElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n (* readonly attribute SVGAnimatedEnumeration maskUnits; *)\n (* readonly attribute SVGAnimatedEnumeration maskContentUnits; *)\n method x : animatedLength t readonly_prop\n\n method y : animatedLength t readonly_prop\n\n method width : animatedLength t readonly_prop\n\n method height : animatedLength t readonly_prop\nend\n\n(* interface SVGFilterElement *)\nand filterElement = object\n inherit element\n\n inherit uriReference\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n (* readonly attribute SVGAnimatedEnumeration filterUnits; *)\n (* readonly attribute SVGAnimatedEnumeration primitiveUnits; *)\n method x : animatedLength t readonly_prop\n\n method y : animatedLength t readonly_prop\n\n method width : animatedLength t readonly_prop\n\n method height : animatedLength t readonly_prop\n\n method filterResX : animatedInteger t readonly_prop\n\n method filterResY : animatedInteger t readonly_prop\n\n method setFilterRes : int -> int -> unit meth\nend\n\n(* interface SVGFilterPrimitiveStandardAttributes : SVGStylable { *)\n(* readonly attribute SVGAnimatedLength x; *)\n(* readonly attribute SVGAnimatedLength y; *)\n(* readonly attribute SVGAnimatedLength width; *)\n(* readonly attribute SVGAnimatedLength height; *)\n(* readonly attribute SVGAnimatedString result; *)\n(* }; *)\n\n(* interface SVGFEBlendElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n\n(* // Blend Mode Types *)\n(* const unsigned short SVG_FEBLEND_MODE_UNKNOWN = 0; *)\n(* const unsigned short SVG_FEBLEND_MODE_NORMAL = 1; *)\n(* const unsigned short SVG_FEBLEND_MODE_MULTIPLY = 2; *)\n(* const unsigned short SVG_FEBLEND_MODE_SCREEN = 3; *)\n(* const unsigned short SVG_FEBLEND_MODE_DARKEN = 4; *)\n(* const unsigned short SVG_FEBLEND_MODE_LIGHTEN = 5; *)\n\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedString in2; *)\n(* readonly attribute SVGAnimatedEnumeration mode; *)\n(* }; *)\n\n(* interface SVGFEColorMatrixElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n\n(* // Color Matrix Types *)\n(* const unsigned short SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0; *)\n(* const unsigned short SVG_FECOLORMATRIX_TYPE_MATRIX = 1; *)\n(* const unsigned short SVG_FECOLORMATRIX_TYPE_SATURATE = 2; *)\n(* const unsigned short SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3; *)\n(* const unsigned short SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4; *)\n\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedEnumeration type; *)\n(* readonly attribute SVGAnimatedNumberList values; *)\n(* }; *)\n\n(* interface SVGFEComponentTransferElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n(* readonly attribute SVGAnimatedString in1; *)\n(* }; *)\n\n(* interface SVGComponentTransferFunctionElement : SVGElement { *)\n\n(* // Component Transfer Types *)\n(* const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0; *)\n(* const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1; *)\n(* const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2; *)\n(* const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3; *)\n(* const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4; *)\n(* const unsigned short SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5; *)\n\n(* readonly attribute SVGAnimatedEnumeration type; *)\n(* readonly attribute SVGAnimatedNumberList tableValues; *)\n(* readonly attribute SVGAnimatedNumber slope; *)\n(* readonly attribute SVGAnimatedNumber intercept; *)\n(* readonly attribute SVGAnimatedNumber amplitude; *)\n(* readonly attribute SVGAnimatedNumber exponent; *)\n(* readonly attribute SVGAnimatedNumber offset; *)\n(* }; *)\n\n(* interface SVGFEFuncRElement : SVGComponentTransferFunctionElement { *)\n(* }; *)\n\n(* interface SVGFEFuncGElement : SVGComponentTransferFunctionElement { *)\n(* }; *)\n\n(* interface SVGFEFuncBElement : SVGComponentTransferFunctionElement { *)\n(* }; *)\n\n(* interface SVGFEFuncAElement : SVGComponentTransferFunctionElement { *)\n(* }; *)\n\n(* interface SVGFECompositeElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n\n(* // Composite Operators *)\n(* const unsigned short SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0; *)\n(* const unsigned short SVG_FECOMPOSITE_OPERATOR_OVER = 1; *)\n(* const unsigned short SVG_FECOMPOSITE_OPERATOR_IN = 2; *)\n(* const unsigned short SVG_FECOMPOSITE_OPERATOR_OUT = 3; *)\n(* const unsigned short SVG_FECOMPOSITE_OPERATOR_ATOP = 4; *)\n(* const unsigned short SVG_FECOMPOSITE_OPERATOR_XOR = 5; *)\n(* const unsigned short SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6; *)\n\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedString in2; *)\n(* readonly attribute SVGAnimatedEnumeration operator; *)\n(* readonly attribute SVGAnimatedNumber k1; *)\n(* readonly attribute SVGAnimatedNumber k2; *)\n(* readonly attribute SVGAnimatedNumber k3; *)\n(* readonly attribute SVGAnimatedNumber k4; *)\n(* }; *)\n\n(* interface SVGFEConvolveMatrixElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n\n(* // Edge Mode Values *)\n(* const unsigned short SVG_EDGEMODE_UNKNOWN = 0; *)\n(* const unsigned short SVG_EDGEMODE_DUPLICATE = 1; *)\n(* const unsigned short SVG_EDGEMODE_WRAP = 2; *)\n(* const unsigned short SVG_EDGEMODE_NONE = 3; *)\n\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedInteger orderX; *)\n(* readonly attribute SVGAnimatedInteger orderY; *)\n(* readonly attribute SVGAnimatedNumberList kernelMatrix; *)\n(* readonly attribute SVGAnimatedNumber divisor; *)\n(* readonly attribute SVGAnimatedNumber bias; *)\n(* readonly attribute SVGAnimatedInteger targetX; *)\n(* readonly attribute SVGAnimatedInteger targetY; *)\n(* readonly attribute SVGAnimatedEnumeration edgeMode; *)\n(* readonly attribute SVGAnimatedNumber kernelUnitLengthX; *)\n(* readonly attribute SVGAnimatedNumber kernelUnitLengthY; *)\n(* readonly attribute SVGAnimatedBoolean preserveAlpha; *)\n(* }; *)\n\n(* interface SVGFEDiffuseLightingElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedNumber surfaceScale; *)\n(* readonly attribute SVGAnimatedNumber diffuseConstant; *)\n(* readonly attribute SVGAnimatedNumber kernelUnitLengthX; *)\n(* readonly attribute SVGAnimatedNumber kernelUnitLengthY; *)\n(* }; *)\n\n(* interface SVGFEDistantLightElement : SVGElement { *)\n(* readonly attribute SVGAnimatedNumber azimuth; *)\n(* readonly attribute SVGAnimatedNumber elevation; *)\n(* }; *)\n\n(* interface SVGFEPointLightElement : SVGElement { *)\n(* readonly attribute SVGAnimatedNumber x; *)\n(* readonly attribute SVGAnimatedNumber y; *)\n(* readonly attribute SVGAnimatedNumber z; *)\n(* }; *)\n\n(* interface SVGFESpotLightElement : SVGElement { *)\n(* readonly attribute SVGAnimatedNumber x; *)\n(* readonly attribute SVGAnimatedNumber y; *)\n(* readonly attribute SVGAnimatedNumber z; *)\n(* readonly attribute SVGAnimatedNumber pointsAtX; *)\n(* readonly attribute SVGAnimatedNumber pointsAtY; *)\n(* readonly attribute SVGAnimatedNumber pointsAtZ; *)\n(* readonly attribute SVGAnimatedNumber specularExponent; *)\n(* readonly attribute SVGAnimatedNumber limitingConeAngle; *)\n(* }; *)\n\n(* interface SVGFEDisplacementMapElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n\n(* // Channel Selectors *)\n(* const unsigned short SVG_CHANNEL_UNKNOWN = 0; *)\n(* const unsigned short SVG_CHANNEL_R = 1; *)\n(* const unsigned short SVG_CHANNEL_G = 2; *)\n(* const unsigned short SVG_CHANNEL_B = 3; *)\n(* const unsigned short SVG_CHANNEL_A = 4; *)\n\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedString in2; *)\n(* readonly attribute SVGAnimatedNumber scale; *)\n(* readonly attribute SVGAnimatedEnumeration xChannelSelector; *)\n(* readonly attribute SVGAnimatedEnumeration yChannelSelector; *)\n(* }; *)\n\n(* interface SVGFEFloodElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n(* }; *)\n\n(* interface SVGFEGaussianBlurElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedNumber stdDeviationX; *)\n(* readonly attribute SVGAnimatedNumber stdDeviationY; *)\n\n(* void setStdDeviation(in float stdDeviationX, in float stdDeviationY) raises(DOMException); *)\n(* }; *)\n\n(* interface SVGFEImageElement : SVGElement, *)\n(* SVGURIReference, *)\n(* SVGLangSpace, *)\n(* SVGExternalResourcesRequired, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n(* readonly attribute SVGAnimatedPreserveAspectRatio preserveAspectRatio; *)\n(* }; *)\n\n(* interface SVGFEMergeElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n(* }; *)\n\n(* interface SVGFEMergeNodeElement : SVGElement { *)\n(* readonly attribute SVGAnimatedString in1; *)\n(* }; *)\n\n(* interface SVGFEMorphologyElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n\n(* // Morphology Operators *)\n(* const unsigned short SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0; *)\n(* const unsigned short SVG_MORPHOLOGY_OPERATOR_ERODE = 1; *)\n(* const unsigned short SVG_MORPHOLOGY_OPERATOR_DILATE = 2; *)\n\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedEnumeration operator; *)\n(* readonly attribute SVGAnimatedNumber radiusX; *)\n(* readonly attribute SVGAnimatedNumber radiusY; *)\n(* }; *)\n\n(* interface SVGFEOffsetElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedNumber dx; *)\n(* readonly attribute SVGAnimatedNumber dy; *)\n(* }; *)\n\n(* interface SVGFESpecularLightingElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n(* readonly attribute SVGAnimatedString in1; *)\n(* readonly attribute SVGAnimatedNumber surfaceScale; *)\n(* readonly attribute SVGAnimatedNumber specularConstant; *)\n(* readonly attribute SVGAnimatedNumber specularExponent; *)\n(* readonly attribute SVGAnimatedNumber kernelUnitLengthX; *)\n(* readonly attribute SVGAnimatedNumber kernelUnitLengthY; *)\n(* }; *)\n\n(* interface SVGFETileElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n(* readonly attribute SVGAnimatedString in1; *)\n(* }; *)\n\n(* interface SVGFETurbulenceElement : SVGElement, *)\n(* SVGFilterPrimitiveStandardAttributes { *)\n\n(* // Turbulence Types *)\n(* const unsigned short SVG_TURBULENCE_TYPE_UNKNOWN = 0; *)\n(* const unsigned short SVG_TURBULENCE_TYPE_FRACTALNOISE = 1; *)\n(* const unsigned short SVG_TURBULENCE_TYPE_TURBULENCE = 2; *)\n\n(* // Stitch Options *)\n(* const unsigned short SVG_STITCHTYPE_UNKNOWN = 0; *)\n(* const unsigned short SVG_STITCHTYPE_STITCH = 1; *)\n(* const unsigned short SVG_STITCHTYPE_NOSTITCH = 2; *)\n\n(* readonly attribute SVGAnimatedNumber baseFrequencyX; *)\n(* readonly attribute SVGAnimatedNumber baseFrequencyY; *)\n(* readonly attribute SVGAnimatedInteger numOctaves; *)\n(* readonly attribute SVGAnimatedNumber seed; *)\n(* readonly attribute SVGAnimatedEnumeration stitchTiles; *)\n(* readonly attribute SVGAnimatedEnumeration type; *)\n(* }; *)\n\n(* interface SVGCursorElement *)\nand cursorElement = object\n inherit element\n\n inherit uriReference\n\n inherit tests\n\n inherit externalResourcesRequired\n\n method x : animatedLength t readonly_prop\n\n method y : animatedLength t readonly_prop\nend\n\n(* interface SVGAElement *)\nand aElement = object\n inherit element\n\n inherit uriReference\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n method target : animatedString t readonly_prop\nend\n\n(* interface SVGViewElement *)\nand viewElement = object\n inherit element\n\n inherit externalResourcesRequired\n\n inherit fitToViewBox\n\n inherit zoomAndPan\n\n method viewTarget : stringList t readonly_prop\nend\n\n(* interface SVGScriptElement *)\nand scriptElement = object\n inherit element\n\n inherit uriReference\n\n inherit externalResourcesRequired\n\n method type_ : js_string t prop\nend\n\n(* interface SVGZoomEvent : UIEvent *)\n(* readonly attribute SVGRect zoomRectScreen; *)\n(* readonly attribute float previousScale; *)\n(* readonly attribute SVGPoint previousTranslate; *)\n(* readonly attribute float newScale; *)\n(* readonly attribute SVGPoint newTranslate; *)\n(* }; *)\n\n(* interface SVGAnimationElement *)\nand animationElement = object\n inherit element\n\n inherit tests\n\n inherit externalResourcesRequired\n\n (* inherit elementTimeControl *)\n method targetElement : element t readonly_prop\n\n method getStartTime : number_t meth\n\n method getCurrentTime : number_t meth\n\n method getSimpleDuration : number_t meth\nend\n\n(* interface SVGAnimateElement *)\nand animateElement = object\n inherit animationElement\n\n inherit stylable\nend\n\n(* interface SVGSetElement *)\nand setElement = animationElement\n\n(* interface SVGAnimateMotionElement *)\nand animateMotionElement = animationElement\n\n(* interface SVGMPathElement *)\nand mPathElement = object\n inherit element\n\n inherit uriReference\n\n inherit externalResourcesRequired\nend\n\n(* interface SVGAnimateColorElement *)\nand animateColorElement = object\n inherit animationElement\n\n inherit stylable\nend\n\n(* interface SVGAnimateTransformElement *)\nand animateTransformElement = animationElement\n\n(* interface SVGFontElement *)\nand fontElement = object\n inherit element\n\n inherit stylable\nend\n\n(* interface SVGGlyphElement *)\n(* interface SVGMissingGlyphElement*)\nand glyphElement = object\n inherit element\n\n inherit stylable\nend\n\n(* interface SVGHKernElement : SVGElement *)\n(* interface SVGVKernElement : SVGElement *)\n\n(* interface SVGFontFaceElement *)\nclass type fontFaceElement = element\n\n(* interface SVGFontFaceSrcElement *)\nclass type fontFaceSrcElement = element\n\n(* interface SVGFontFaceUriElement *)\nclass type fontFaceUriElement = element\n\n(* interface SVGFontFaceFormatElement *)\nclass type fontFaceFormatElement = element\n\n(* interface SVGFontFaceNameElement *)\nclass type fontFaceNameElement = element\n\n(* interface SVGMetadataElement *)\nclass type metadataElement = element\n\n(* interface SVGForeignObjectElement *)\nclass type foreignObjectElement = object\n inherit element\n\n inherit tests\n\n inherit langSpace\n\n inherit externalResourcesRequired\n\n inherit stylable\n\n inherit transformable\n\n method x : animatedLength t readonly_prop\n\n method y : animatedLength t readonly_prop\n\n method width : animatedLength t readonly_prop\n\n method height : animatedLength t readonly_prop\nend\n\nlet createElement (doc : document t) name = doc##createElementNS xmlns (Js.string name)\n\nlet unsafeCreateElement doc name = Js.Unsafe.coerce (createElement doc name)\n\nlet createA doc : aElement t = unsafeCreateElement doc \"a\"\n\nlet createAltGlyph doc : altGlyphElement t = unsafeCreateElement doc \"altglyph\"\n\nlet createAltGlyphDef doc : altGlyphDefElement t = unsafeCreateElement doc \"altglyphdef\"\n\nlet createAltGlyphItem doc : altGlyphItemElement t =\n unsafeCreateElement doc \"altglyphitem\"\n\nlet createAnimate doc : animateElement t = unsafeCreateElement doc \"animate\"\n\nlet createAnimateColor doc : animateColorElement t =\n unsafeCreateElement doc \"animatecolor\"\n\nlet createAnimateMotion doc : animateMotionElement t =\n unsafeCreateElement doc \"animatemotion\"\n\nlet createAnimateTransform doc : animateTransformElement t =\n unsafeCreateElement doc \"animatetransform\"\n\nlet createCircle doc : circleElement t = unsafeCreateElement doc \"circle\"\n\nlet createClipPath doc : clipPathElement t = unsafeCreateElement doc \"clippath\"\n\n(* let createColorProfile doc : colorProfile t = unsafeCreateElement doc \"color-profile\" *)\nlet createCursor doc : cursorElement t = unsafeCreateElement doc \"cursor\"\n\nlet createDefs doc : defsElement t = unsafeCreateElement doc \"defs\"\n\nlet createDesc doc : descElement t = unsafeCreateElement doc \"desc\"\n\nlet createEllipse doc : ellipseElement t = unsafeCreateElement doc \"ellipse\"\n\n(* let createFe* *)\nlet createFilter doc : filterElement t = unsafeCreateElement doc \"filter\"\n\nlet createFont doc : fontElement t = unsafeCreateElement doc \"font\"\n\nlet createFontFace doc : fontElement t = unsafeCreateElement doc \"font-face\"\n\nlet createFontFaceFormat doc : fontElement t = unsafeCreateElement doc \"font-face-format\"\n\nlet createFontFaceName doc : fontElement t = unsafeCreateElement doc \"font-face-name\"\n\nlet createFontFaceSrc doc : fontElement t = unsafeCreateElement doc \"font-face-src\"\n\nlet createFontFaceUri doc : fontElement t = unsafeCreateElement doc \"font-face-uri\"\n\nlet createForeignObject doc : foreignObjectElement t =\n unsafeCreateElement doc \"foreignObject\"\n\nlet createG doc : gElement t = unsafeCreateElement doc \"g\"\n\nlet createGlyph doc : glyphElement t = unsafeCreateElement doc \"glyph\"\n\nlet createGlyphRef doc : glyphElement t = unsafeCreateElement doc \"glyphref\"\n\nlet createhkern doc : element t = unsafeCreateElement doc \"hkern\"\n\nlet createImage doc : imageElement t = unsafeCreateElement doc \"image\"\n\nlet createLineElement doc : lineElement t = unsafeCreateElement doc \"line\"\n\nlet createLinearElement doc : linearGradientElement t =\n unsafeCreateElement doc \"lineargradient\"\n\n(* let createMarker doc : markerElement *)\nlet createMask doc : maskElement t = unsafeCreateElement doc \"mask\"\n\nlet createMetaData doc : metadataElement t = unsafeCreateElement doc \"metadata\"\n\nlet createMissingGlyph doc : glyphElement t = unsafeCreateElement doc \"missing-glyph\"\n\nlet createMPath doc : mPathElement t = unsafeCreateElement doc \"mpath\"\n\nlet createPath doc : pathElement t = unsafeCreateElement doc \"path\"\n\nlet createPattern doc : patternElement t = unsafeCreateElement doc \"pattern\"\n\nlet createPolygon doc : polygonElement t = unsafeCreateElement doc \"polygon\"\n\nlet createPolyline doc : polyLineElement t = unsafeCreateElement doc \"polyline\"\n\nlet createRadialgradient doc : radialGradientElement t =\n unsafeCreateElement doc \"radialgradient\"\n\nlet createRect doc : rectElement t = unsafeCreateElement doc \"rect\"\n\nlet createScript doc : scriptElement t = unsafeCreateElement doc \"script\"\n\nlet createSet doc : setElement t = unsafeCreateElement doc \"set\"\n\nlet createStop doc : stopElement t = unsafeCreateElement doc \"stop\"\n\nlet createStyle doc : styleElement t = unsafeCreateElement doc \"style\"\n\nlet createSvg doc : svgElement t = unsafeCreateElement doc \"svg\"\n\nlet createSwitch doc : switchElement t = unsafeCreateElement doc \"switch\"\n\nlet createSymbol doc : symbolElement t = unsafeCreateElement doc \"symbol\"\n\nlet createTextElement doc : textElement t = unsafeCreateElement doc \"text\"\n\nlet createTextpath doc : textPathElement t = unsafeCreateElement doc \"textpath\"\n\nlet createTitle doc : titleElement t = unsafeCreateElement doc \"title\"\n\nlet createTref doc : trefElement t = unsafeCreateElement doc \"tref\"\n\nlet createTspan doc : tspanElement t = unsafeCreateElement doc \"tspan\"\n\nlet createUse doc : useElement t = unsafeCreateElement doc \"use\"\n\nlet createView doc : viewElement t = unsafeCreateElement doc \"view\"\n\nlet createvkern doc : element t = unsafeCreateElement doc \"vkern\"\n\n(****)\n\nlet svg_element : element t constr = Js.Unsafe.global##._SVGElement\n\nlet document = Js.Unsafe.global##.document\n\nlet getElementById id : element t =\n Js.Opt.case\n (Js.Unsafe.global##.document##getElementById (Js.string id))\n (fun () -> raise Not_found)\n (fun e -> if Js.instanceof e svg_element then e else raise Not_found)\n\nmodule CoerceTo = struct\n let element (e : #Dom.node Js.t) : element Js.t Js.opt =\n if Js.instanceof e svg_element then Js.some (Js.Unsafe.coerce e) else Js.null\n\n let unsafeCoerce (e : #element t) tag =\n if Js.equals e##.tagName##toLowerCase (Js.string tag)\n then Js.some (Js.Unsafe.coerce e)\n else Js.null\n\n let a e : aElement t opt = unsafeCoerce e \"a\"\n\n let altGlyph e : altGlyphElement t opt = unsafeCoerce e \"altglyph\"\n\n let altGlyphDef e : altGlyphDefElement t opt = unsafeCoerce e \"altglyphdef\"\n\n let altGlyphItem e : altGlyphItemElement t opt = unsafeCoerce e \"altglyphitem\"\n\n let animate e : animateElement t opt = unsafeCoerce e \"animate\"\n\n let animateColor e : animateColorElement t opt = unsafeCoerce e \"animatecolor\"\n\n let animateMotion e : animateMotionElement t opt = unsafeCoerce e \"animatemotion\"\n\n let animateTransform e : animateTransformElement t opt =\n unsafeCoerce e \"animatetransform\"\n\n let circle e : circleElement t opt = unsafeCoerce e \"circle\"\n\n let clipPath e : clipPathElement t opt = unsafeCoerce e \"clippath\"\n\n (* let ColorProfile e : colorProfile t opt = unsafeCoerce e \"color-profile\" *)\n let cursor e : cursorElement t opt = unsafeCoerce e \"cursor\"\n\n let defs e : defsElement t opt = unsafeCoerce e \"defs\"\n\n let desc e : descElement t opt = unsafeCoerce e \"desc\"\n\n let ellipse e : ellipseElement t opt = unsafeCoerce e \"ellipse\"\n\n (* let Fe* *)\n let filter e : filterElement t opt = unsafeCoerce e \"filter\"\n\n let font e : fontElement t opt = unsafeCoerce e \"font\"\n\n let fontFace e : fontElement t opt = unsafeCoerce e \"font-face\"\n\n let fontFaceFormat e : fontElement t opt = unsafeCoerce e \"font-face-format\"\n\n let fontFaceName e : fontElement t opt = unsafeCoerce e \"font-face-name\"\n\n let fontFaceSrc e : fontElement t opt = unsafeCoerce e \"font-face-src\"\n\n let fontFaceUri e : fontElement t opt = unsafeCoerce e \"font-face-uri\"\n\n let foreignObject e : foreignObjectElement t opt = unsafeCoerce e \"foreignobject\"\n\n let g e : gElement t opt = unsafeCoerce e \"g\"\n\n let glyph e : glyphElement t opt = unsafeCoerce e \"glyph\"\n\n let glyphRef e : glyphElement t opt = unsafeCoerce e \"glyphref\"\n\n let hkern e : element t opt = unsafeCoerce e \"hkern\"\n\n let image e : imageElement t opt = unsafeCoerce e \"image\"\n\n let lineElement e : lineElement t opt = unsafeCoerce e \"line\"\n\n let linearElement e : linearGradientElement t opt = unsafeCoerce e \"lineargradient\"\n\n (* let Marker e : markerElement *)\n let mask e : maskElement t opt = unsafeCoerce e \"mask\"\n\n let metaData e : metadataElement t opt = unsafeCoerce e \"metadata\"\n\n let missingGlyph e : glyphElement t opt = unsafeCoerce e \"missing-glyph\"\n\n let mPath e : mPathElement t opt = unsafeCoerce e \"mpath\"\n\n let path e : pathElement t opt = unsafeCoerce e \"path\"\n\n let pattern e : patternElement t opt = unsafeCoerce e \"pattern\"\n\n let polygon e : polygonElement t opt = unsafeCoerce e \"polygon\"\n\n let polyline e : polyLineElement t opt = unsafeCoerce e \"polyline\"\n\n let radialgradient e : radialGradientElement t opt = unsafeCoerce e \"radialgradient\"\n\n let rect e : rectElement t opt = unsafeCoerce e \"rect\"\n\n let script e : scriptElement t opt = unsafeCoerce e \"script\"\n\n let set e : setElement t opt = unsafeCoerce e \"set\"\n\n let stop e : stopElement t opt = unsafeCoerce e \"stop\"\n\n let style e : styleElement t opt = unsafeCoerce e \"style\"\n\n let svg e : svgElement t opt = unsafeCoerce e \"svg\"\n\n let switch e : switchElement t opt = unsafeCoerce e \"switch\"\n\n let symbol e : symbolElement t opt = unsafeCoerce e \"symbol\"\n\n let textElement e : textElement t opt = unsafeCoerce e \"text\"\n\n let textpath e : textPathElement t opt = unsafeCoerce e \"textpath\"\n\n let title e : titleElement t opt = unsafeCoerce e \"title\"\n\n let tref e : trefElement t opt = unsafeCoerce e \"tref\"\n\n let tspan e : tspanElement t opt = unsafeCoerce e \"tspan\"\n\n let use e : useElement t opt = unsafeCoerce e \"use\"\n\n let view e : viewElement t opt = unsafeCoerce e \"view\"\n\n let vkern e : element t opt = unsafeCoerce e \"vkern\"\nend\n","(* generated code *)"],"names":[],"mappings":"EA0nEgC,QAAsB,C,EAFnB,QAAqB,C,EAFvB,QAAoB,C,EAFhB,QAAsB,C,EAFxB,QAAqB,C,EAFnB,QAAsB,C,EAFhB,QAAyB,C,EAF1B,QAAqB,C,EAFxB,QAAuB,C,EAFvB,QAAuB,C,EAF7B,QAAoB,C,EAFhB,QAAsB,C,EAFxB,QAAqB,C,EAFvB,QAAoB,C,EAFd,QAAuB,C,EAF3B,QAAqB,C,EAFD,QAA+B,C,EAF3C,QAAyB,C,EAF3B,QAAwB,C,EAFxB,QAAwB,C,EAF9B,QAAqB,C,EAFnB,QAAsB,C,EAFf,QAA8B,C,EAF/B,QAAyB,C,EAFjC,QAAqB,C,EAHF,QAA+B,C,EAF3C,QAAqB,C,EAF1B,QAAsB,C,EAF3B,QAAsB,C,EAFd,QAAyB,C,EAF5B,QAAsB,C,EAF9B,QAAkB,C,EAFM,QAA8B,C,EAFzC,QAA8B,C,EAF9B,QAA8B,C,EAF7B,QAA+B,C,EAF7B,QAAiC,C,EAFvC,QAA0B,C,EAF9B,QAAqB,C,EAFjB,QAAuB,C,EAHrB,QAAwB,C,EAF9B,QAAqB,C,EAFrB,QAAqB,C,EAFjB,QAAuB,C,EAHnB,QAAyB,C,EAF7B,QAAuB,C,EAF1D,QAAiC,C,EAHgB,QAA8B,C,EAFhC,QAA6B,C,EAFvC,QAAwB,C,EAFd,QAA6B,C,EAF/B,QAA4B,C,EAFlC,QAAyB,C,EAFvC,QAAkB,C,OAJL,IAAzB,gBAAV,IAAkD,QAEhD,QADA,uBACO,C,EALT,aAA2B,QAAwC,QAAlC,uBAAyC,C,EALlE,SAAe,C,EACb,aAA2B,QAAa,UAAP,GAAsB,C,KAHtE,iBAC+C,MAAc,eAA1D,OAAD,WAA4D,iCAES,C,EAlItC,YAsH8B,C,EAtH9B,YAoHgC,C,EApHhC,YAkH6B,C,EAlH7B,YAgHmC,C,EAhHnC,YA8GgC,C,EA9GhC,YA4GmC,C,EA5GnC,YA0G4C,C,EA1G5C,YAwGuC,C,EAxGvC,YAsGsC,C,EAtGtC,YAoGsC,C,EApGtC,YAkG6B,C,EAlG7B,YAgGmC,C,EAhGnC,YA8FgC,C,EA9FhC,YA4F6B,C,EA5F7B,YA0FsC,C,EA1FtC,YAwFgC,C,EAxFhC,YAsFO,C,EAtFP,YAmF4C,C,EAnF5C,YAiFyC,C,EAjFzC,YA+EyC,C,EA/EzC,YA6EgC,C,EA7EhC,YA2EmC,C,EA3EnC,YAyEkD,C,EAzElD,YAuE4C,C,EAvE5C,YAqEgC,C,EArEhC,YAkEO,C,EAlEP,YA+DuC,C,EA/DvC,YA6DmC,C,EA7DnC,YA2D8B,C,EA3D9B,YAyDyC,C,EAzDzC,YAuDmC,C,EAvDnC,YAqDuB,C,EArDvB,YAmDM,C,EAnDN,YAgDgD,C,EAhDhD,YA8CgD,C,EA9ChD,YA4CkD,C,EA5ClD,YA0CsD,C,EA1CtD,YAwCyC,C,EAxCzC,YAsCgC,C,EAtChC,YAoCsC,C,EApCtC,YAiCyC,C,EAjCzC,YA+BgC,C,EA/BhC,YA6BgC,C,EA7BhC,YA2BsC,C,EA3BtC,YAwB4C,C,EAxB5C,YAsBsC,C,EAtBtC,YAoBS,C,EApBT,YAiBM,C,EAjBN,YAcK,C,EAdL,YAWyC,C,EAXzC,YASK,C,EATL,YAMqD,C,EANrD,YAI4C,C,EAJ5C,YAEuB,C,EAJa,MAAgB,mB,MA8H7C,OAp+DQ,mBAo+DR,qKAp+DQ,eAk+Db,SAA8B,eAEpD,OAA2B,sM,EC3/D1C,c,QAAA","ignoreList":[1]}},{"offset":{"line":0,"column":119396},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/eventSource.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2014 Hugo Heuzard\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\n(* https://developer.mozilla.org/en-US/docs/Web/API/EventSource *)\nopen Js\nopen Dom\nopen! Import\n\ntype state =\n | CONNECTING\n | OPEN\n | CLOSED\n\nclass type ['a] messageEvent = object\n inherit ['a] Dom.event\n\n method data : js_string t readonly_prop\n\n method origin : js_string t readonly_prop\n\n method lastEventId : js_string t readonly_prop\n (* method source : unit *)\nend\n\nclass type eventSource = object ('self)\n method url : js_string t readonly_prop\n\n method withCredentials : bool t readonly_prop\n\n method readyState : state readonly_prop\n\n method close : unit meth\n\n method onopen : ('self t, 'self messageEvent t) event_listener writeonly_prop\n\n method onmessage : ('self t, 'self messageEvent t) event_listener writeonly_prop\n\n method onerror : ('self t, 'self messageEvent t) event_listener writeonly_prop\nend\n\nclass type options = object\n method withCredentials : bool t writeonly_prop\nend\n\nlet withCredentials b : options t =\n let init = Js.Unsafe.obj [||] in\n init##.withCredentials := Js.bool b;\n init\n\nlet eventSource = Js.Unsafe.global##._EventSource\n\nlet eventSource_options = Js.Unsafe.global##._EventSource\n\nlet addEventListener = Dom.addEventListener\n","(* generated code *)"],"names":[],"mappings":"EA6Da,OACe,MAA1B,cAAmC,EAC/B,C,EAImD,OCnEzD,eDiEkB,OAA+B,eAEvB,OAA+B","ignoreList":[1]}},{"offset":{"line":0,"column":119500},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/geolocation.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2015 Stéphane Legrand\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\n\ntype positionErrorCode\n\ntype watchId\n\nclass type coordinates = object\n method latitude : Js.number_t Js.readonly_prop\n\n method longitude : Js.number_t Js.readonly_prop\n\n method altitude : Js.number_t Js.opt Js.readonly_prop\n\n method accuracy : Js.number_t Js.readonly_prop\n\n method altitudeAccuracy : Js.number_t Js.opt Js.readonly_prop\n\n method heading : Js.number_t Js.opt Js.readonly_prop\n\n method speed : Js.number_t Js.opt Js.readonly_prop\nend\n\nclass type position = object\n method coords : coordinates Js.t Js.readonly_prop\n\n method timestamp : Js.date Js.t Js.readonly_prop\nend\n\nclass type positionOptions = object\n method enableHighAccuracy : bool Js.writeonly_prop\n\n method timeout : int Js.writeonly_prop\n\n method maximumAge : int Js.writeonly_prop\nend\n\nclass type positionError = object\n method _PERMISSION_DENIED_ : positionErrorCode Js.readonly_prop\n\n method _POSITION_UNAVAILABLE_ : positionErrorCode Js.readonly_prop\n\n method _TIMEOUT : positionErrorCode Js.readonly_prop\n\n method code : positionErrorCode Js.readonly_prop\n\n method message : Js.js_string Js.t Js.readonly_prop\nend\n\nclass type geolocation = object\n method getCurrentPosition :\n (position Js.t -> unit) Js.callback\n -> (positionError Js.t -> unit) Js.callback\n -> positionOptions Js.t\n -> unit Js.meth\n\n method watchPosition :\n (position Js.t -> unit) Js.callback\n -> (positionError Js.t -> unit) Js.callback\n -> positionOptions Js.t\n -> watchId Js.meth\n\n method clearWatch : watchId -> unit Js.meth\nend\n\nlet empty_position_options () = Js.Unsafe.obj [||]\n\nlet geolocation =\n let x = Js.Unsafe.global##.navigator in\n if Js.Optdef.test x then x##.geolocation else x\n\n(* undefined *)\n\nlet is_supported () = Js.Optdef.test geolocation\n","(* generated code *)"],"names":[],"mappings":"EAkFgC,KAAkB,C,EAQ5B,qCAA0B,C,KC1FhD,eDqFU,SACR,eAAG,aAAgB,K,CAAA,EAAM,SAAe","ignoreList":[1]}},{"offset":{"line":0,"column":119654},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/intersectionObserver.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\n\nclass type intersectionObserverEntry = object\n method target : Dom.node Js.t Js.readonly_prop\n\n method boundingClientRect : Dom_html.clientRect Js.t Js.readonly_prop\n\n method rootBounds : Dom_html.clientRect Js.t Js.opt Js.readonly_prop\n\n method intersectionRect : Dom_html.clientRect Js.t Js.readonly_prop\n\n method intersectionRatio : Js.number_t Js.readonly_prop\n\n method isIntersecting : bool Js.t Js.readonly_prop\n\n method time : Js.number_t Js.readonly_prop\nend\n\nclass type intersectionObserverOptions = object\n method root : Dom.node Js.t Js.writeonly_prop\n\n method rootMargin : Js.js_string Js.t Js.writeonly_prop\n\n method threshold : Js.number_t Js.js_array Js.t Js.writeonly_prop\nend\n\nclass type intersectionObserver = object\n method root : Dom.node Js.t Js.opt Js.readonly_prop\n\n method rootMargin : Js.js_string Js.t Js.readonly_prop\n\n method thresholds : Js.number_t Js.js_array Js.t Js.readonly_prop\n\n method observe : #Dom.node Js.t -> unit Js.meth\n\n method unobserve : #Dom.node Js.t -> unit Js.meth\n\n method disconnect : unit Js.meth\n\n method takeRecords : intersectionObserverEntry Js.t Js.js_array Js.meth\nend\n\nlet empty_intersection_observer_options () : intersectionObserverOptions Js.t =\n Js.Unsafe.obj [||]\n\nlet intersectionObserver_unsafe = Js.Unsafe.global##._IntersectionObserver\n\nlet is_supported () = Js.Optdef.test intersectionObserver_unsafe\n\nlet intersectionObserver :\n ( ( intersectionObserverEntry Js.t Js.js_array Js.t\n -> intersectionObserver Js.t\n -> unit)\n Js.callback\n -> intersectionObserverOptions Js.t\n -> intersectionObserver Js.t)\n Js.constr =\n intersectionObserver_unsafe\n","(* generated code *)"],"names":[],"mappings":"EA+DsB,qCAA0C,C,EAJ9D,KAAkB,C,KAEsD,UC7D1E,eD6DkC,SAAwC","ignoreList":[1]}},{"offset":{"line":0,"column":119758},"map":{"version":3,"sources":["/root/.opam/5.2.0/lib/js_of_ocaml/intl.ml","/builtin/blackbox.ml"],"sourcesContent":["(* Js_of_ocaml library\n * http://www.ocsigen.org/js_of_ocaml/\n * Copyright (C) 2018 Stéphane Legrand\n *\n * This program is free software; you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, with linking exception;\n * either version 2.1 of the License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n *)\nopen! Import\n\nmodule type Shared = sig\n class type object_options = object\n method localeMatcher : Js.js_string Js.t Js.prop\n end\n\n val object_options : unit -> object_options Js.t\n\n class type _object = object\n method supportedLocalesOf :\n Js.js_string Js.t Js.js_array Js.t\n -> object_options Js.t Js.optdef\n -> Js.js_string Js.t Js.js_array Js.t Js.meth\n end\nend\n\nmodule Shared : Shared = struct\n class type object_options = object\n method localeMatcher : Js.js_string Js.t Js.prop\n end\n\n let object_options () =\n object%js\n val mutable localeMatcher = Js.string \"best fit\"\n end\n\n class type _object = object\n method supportedLocalesOf :\n Js.js_string Js.t Js.js_array Js.t\n -> object_options Js.t Js.optdef\n -> Js.js_string Js.t Js.js_array Js.t Js.meth\n end\nend\n\nmodule Collator = struct\n include Shared\n\n class type resolved_options = object\n method locale : Js.js_string Js.t Js.readonly_prop\n\n method usage : Js.js_string Js.t Js.readonly_prop\n\n method sensitivity : Js.js_string Js.t Js.readonly_prop\n\n method ignorePunctuation : bool Js.t Js.readonly_prop\n\n method collation : Js.js_string Js.t Js.readonly_prop\n\n method numeric : bool Js.t Js.readonly_prop\n\n method caseFirst : Js.js_string Js.t Js.readonly_prop\n end\n\n class type options = object\n method localeMatcher : Js.js_string Js.t Js.prop\n\n method usage : Js.js_string Js.t Js.prop\n\n method sensitivity : Js.js_string Js.t Js.prop\n\n method ignorePunctuation : bool Js.t Js.prop\n\n method numeric : bool Js.t Js.prop\n\n method caseFirst : Js.js_string Js.t Js.prop\n end\n\n let options () =\n object%js\n val mutable localeMatcher = Js.string \"best fit\"\n\n val mutable usage = Js.string \"sort\"\n\n val mutable sensitivity = Js.string \"variant\"\n\n val mutable ignorePunctuation = Js._false\n\n val mutable numeric = Js._false\n\n val mutable caseFirst = Js.string \"false\"\n end\n\n class type t = object\n method compare : (Js.js_string Js.t -> Js.js_string Js.t -> int) Js.readonly_prop\n\n method resolvedOptions : unit -> resolved_options Js.t Js.meth\n end\nend\n\nmodule DateTimeFormat = struct\n include Shared\n\n class type resolved_options = object\n method locale : Js.js_string Js.t Js.readonly_prop\n\n method calendar : Js.js_string Js.t Js.readonly_prop\n\n method numberingSystem : Js.js_string Js.t Js.readonly_prop\n\n method timeZone : Js.js_string Js.t Js.readonly_prop\n\n method hour12 : bool Js.t Js.readonly_prop\n\n method weekday : Js.js_string Js.t Js.optdef_prop\n\n method era : Js.js_string Js.t Js.optdef_prop\n\n method year : Js.js_string Js.t Js.optdef_prop\n\n method month : Js.js_string Js.t Js.optdef_prop\n\n method day : Js.js_string Js.t Js.optdef_prop\n\n method hour : Js.js_string Js.t Js.optdef_prop\n\n method minute : Js.js_string Js.t Js.optdef_prop\n\n method second : Js.js_string Js.t Js.optdef_prop\n\n method timeZoneName : Js.js_string Js.t Js.optdef_prop\n end\n\n class type options = object\n method dateStyle : Js.js_string Js.t Js.optdef Js.prop\n\n method timeStyle : Js.js_string Js.t Js.optdef Js.prop\n\n method calendar : Js.js_string Js.t Js.optdef Js.prop\n\n method dayPeriod : Js.js_string Js.t Js.optdef Js.prop\n\n method numberingSystem : Js.js_string Js.t Js.optdef Js.prop\n\n method localeMatcher : Js.js_string Js.t Js.prop\n\n method timeZone : Js.js_string Js.t Js.optdef Js.prop\n\n method hour12 : bool Js.t Js.optdef Js.prop\n\n method hourCycle : Js.js_string Js.t Js.optdef Js.prop\n\n method formatMatcher : Js.js_string Js.t Js.prop\n\n method weekday : Js.js_string Js.t Js.optdef Js.prop\n\n method era : Js.js_string Js.t Js.optdef Js.prop\n\n method year : Js.js_string Js.t Js.optdef Js.prop\n\n method month : Js.js_string Js.t Js.optdef Js.prop\n\n method day : Js.js_string Js.t Js.optdef Js.prop\n\n method hour : Js.js_string Js.t Js.optdef Js.prop\n\n method minute : Js.js_string Js.t Js.optdef Js.prop\n\n method second : Js.js_string Js.t Js.optdef Js.prop\n\n method fractionalSecondDigits : int Js.optdef Js.prop\n\n method timeZoneName : Js.js_string Js.t Js.optdef Js.prop\n end\n\n let options () : options Js.t =\n object%js\n val mutable dateStyle = Js.undefined\n\n val mutable timeStyle = Js.undefined\n\n val mutable calendar = Js.undefined\n\n val mutable dayPeriod = Js.undefined\n\n val mutable numberingSystem = Js.undefined\n\n val mutable localeMatcher = Js.string \"best fit\"\n\n val mutable timeZone = Js.undefined\n\n val mutable hour12 = Js.undefined\n\n val mutable hourCycle = Js.undefined\n\n val mutable formatMatcher = Js.string \"best fit\"\n\n val mutable weekday = Js.undefined\n\n val mutable era = Js.undefined\n\n val mutable year = Js.undefined\n\n val mutable month = Js.undefined\n\n val mutable day = Js.undefined\n\n val mutable hour = Js.undefined\n\n val mutable minute = Js.undefined\n\n val mutable second = Js.undefined\n\n val mutable fractionalSecondDigits = Js.undefined\n\n val mutable timeZoneName = Js.undefined\n end\n\n class type format_part = object\n method _type : Js.js_string Js.t Js.readonly_prop\n\n method _value : Js.js_string Js.t Js.readonly_prop\n end\n\n class type t = object\n method format : (Js.date Js.t -> Js.js_string Js.t) Js.readonly_prop\n\n method formatToParts :\n Js.date Js.t Js.optdef -> format_part Js.t Js.js_array Js.t Js.meth\n\n method resolvedOptions : unit -> resolved_options Js.t Js.meth\n end\nend\n\nmodule NumberFormat = struct\n include Shared\n\n class type resolved_options = object\n method locale : Js.js_string Js.t Js.readonly_prop\n\n method numberingSystem : Js.js_string Js.t Js.readonly_prop\n\n method style : Js.js_string Js.t Js.readonly_prop\n\n method currency : Js.js_string Js.t Js.optdef_prop\n\n method currencyDisplay : Js.js_string Js.t Js.optdef_prop\n\n method useGrouping : bool Js.t Js.readonly_prop\n\n method minimumIntegerDigits : int Js.optdef_prop\n\n method minimumFractionDigits : int Js.optdef_prop\n\n method maximumFractionDigits : int Js.optdef_prop\n\n method minimumSignificantDigits : int Js.optdef_prop\n\n method maximumSignificantDigits : int Js.optdef_prop\n end\n\n class type options = object\n method compactDisplay : Js.js_string Js.t Js.optdef Js.prop\n\n method currency : Js.js_string Js.t Js.optdef Js.prop\n\n method currencyDisplay : Js.js_string Js.t Js.optdef Js.prop\n\n method currencySign : Js.js_string Js.t Js.optdef Js.prop\n\n method localeMatcher : Js.js_string Js.t Js.prop\n\n method notation : Js.js_string Js.t Js.optdef Js.prop\n\n method numberingSystem : Js.js_string Js.t Js.optdef Js.prop\n\n method signDisplay : Js.js_string Js.t Js.optdef Js.prop\n\n method style : Js.js_string Js.t Js.prop\n\n method unit : Js.js_string Js.t Js.optdef Js.prop\n\n method unitDisplay : Js.js_string Js.t Js.optdef Js.prop\n\n method useGrouping : bool Js.t Js.prop\n\n method roundingMode : Js.js_string Js.t Js.optdef Js.prop\n\n method roundingPriority : Js.js_string Js.t Js.optdef Js.prop\n\n method roundingIncrement : Js.js_string Js.t Js.optdef Js.prop\n\n method trailingZeroDisplay : Js.js_string Js.t Js.optdef Js.prop\n\n method minimumIntegerDigits : int Js.optdef Js.prop\n\n method minimumFractionDigits : int Js.optdef Js.prop\n\n method maximumFractionDigits : int Js.optdef Js.prop\n\n method minimumSignificantDigits : int Js.optdef Js.prop\n\n method maximumSignificantDigits : int Js.optdef Js.prop\n end\n\n let options () : options Js.t =\n object%js\n val mutable compactDisplay = Js.undefined\n\n val mutable currency = Js.undefined\n\n val mutable currencyDisplay = Js.undefined\n\n val mutable currencySign = Js.undefined\n\n val mutable localeMatcher = Js.string \"best fit\"\n\n val mutable notation = Js.undefined\n\n val mutable numberingSystem = Js.undefined\n\n val mutable signDisplay = Js.undefined\n\n val mutable style = Js.string \"decimal\"\n\n val mutable unit = Js.undefined\n\n val mutable unitDisplay = Js.undefined\n\n val mutable useGrouping = Js._true\n\n val mutable roundingMode = Js.undefined\n\n val mutable roundingPriority = Js.undefined\n\n val mutable roundingIncrement = Js.undefined\n\n val mutable trailingZeroDisplay = Js.undefined\n\n val mutable minimumIntegerDigits = Js.undefined\n\n val mutable minimumFractionDigits = Js.undefined\n\n val mutable maximumFractionDigits = Js.undefined\n\n val mutable minimumSignificantDigits = Js.undefined\n\n val mutable maximumSignificantDigits = Js.undefined\n end\n\n class type format_part = object\n method _type : Js.js_string Js.t Js.readonly_prop\n\n method _value : Js.js_string Js.t Js.readonly_prop\n end\n\n class type t = object\n method format : (Js.number Js.t -> Js.js_string Js.t) Js.readonly_prop\n\n method formatToParts :\n Js.number Js.t Js.optdef -> format_part Js.t Js.js_array Js.t Js.meth\n\n method resolvedOptions : unit -> resolved_options Js.t Js.meth\n end\nend\n\nmodule PluralRules = struct\n include Shared\n\n class type resolved_options = object\n method locale : Js.js_string Js.t Js.readonly_prop\n\n method pluralCategories : Js.js_string Js.t Js.js_array Js.t Js.readonly_prop\n\n method _type : Js.js_string Js.t Js.readonly_prop\n\n method minimumIntegerDigits : int Js.optdef_prop\n\n method minimumFractionDigits : int Js.optdef_prop\n\n method maximumFractionDigits : int Js.optdef_prop\n\n method minimumSignificantDigits : int Js.optdef_prop\n\n method maximumSignificantDigits : int Js.optdef_prop\n end\n\n class type options = object\n method localeMatcher : Js.js_string Js.t Js.prop\n\n method _type : Js.js_string Js.t Js.prop\n end\n\n let options () : options Js.t =\n object%js\n val mutable localeMatcher = Js.string \"best fit\"\n\n val mutable _type = Js.string \"cardinal\"\n end\n\n class type t = object\n method select : Js.number Js.t -> Js.js_string Js.t Js.meth\n\n method resolvedOptions : unit -> resolved_options Js.t Js.meth\n end\nend\n\nclass type intl = object\n method _Collator : Collator._object Js.t Js.readonly_prop\n\n method _DateTimeFormat : DateTimeFormat._object Js.t Js.readonly_prop\n\n method _NumberFormat : NumberFormat._object Js.t Js.readonly_prop\n\n method _PluralRules : PluralRules._object Js.t Js.readonly_prop\n\n method getCanonicalLocales :\n Js.js_string Js.t Js.js_array Js.t -> Js.js_string Js.t Js.js_array Js.t Js.meth\nend\n\nlet intl = Js.Unsafe.global##._Intl\n\nlet collator_constr = Js.Unsafe.global##._Intl##._Collator\n\nlet dateTimeFormat_constr = Js.Unsafe.global##._Intl##._DateTimeFormat\n\nlet numberFormat_constr = Js.Unsafe.global##._Intl##._NumberFormat\n\nlet pluralRules_constr = Js.Unsafe.global##._Intl##._PluralRules\n\nlet is_supported () = Js.Optdef.test intl\n","(* generated code *)"],"names":[],"mappings":"EAsbsB,qCAAmB,C,EAnCa,eAG/C,C,MA5FH,4GAiByC,2BARS,2HAiC/C,C,MA5KH,0FAmBkD,2BARA,gIA6B/C,C,EA9HwC,kBAVO,iCAW/C,C,EAzD+C,UAC/C,C,MAyYyD,ICpbhE,uED4aW,SAAwB,eAEb,cAAoC,eAE9B,cAA0C,eAE5C,cAAwC,eAEzC,cAAuC","ignoreList":[1]}}]}