/* For foreign import ccall "wrapper" */
function createAdjustor(args, f, a, b) {
return function(){
var x = f.apply(null, arguments);
while(x instanceof F) {x = x.f();}
return x;
};
}
var __apply = function(f,as) {
var arr = [];
for(; as._ === 1; as = as.b) {
arr.push(as.a);
}
arr.reverse();
return f.apply(null, arr);
}
var __app0 = function(f) {return f();}
var __app1 = function(f,a) {return f(a);}
var __app2 = function(f,a,b) {return f(a,b);}
var __app3 = function(f,a,b,c) {return f(a,b,c);}
var __app4 = function(f,a,b,c,d) {return f(a,b,c,d);}
var __app5 = function(f,a,b,c,d,e) {return f(a,b,c,d,e);}
var __jsNull = function() {return null;}
var __isUndef = function(x) {return typeof x == 'undefined';}
var __eq = function(a,b) {return a===b;}
var __createJSFunc = function(arity, f){
if(f instanceof Function && arity === f.length) {
return (function() {
var x = f.apply(null,arguments);
if(x instanceof T) {
if(x.f !== __blackhole) {
var ff = x.f;
x.f = __blackhole;
return x.x = ff();
}
return x.x;
} else {
while(x instanceof F) {
x = x.f();
}
return E(x);
}
});
} else {
return (function(){
var as = Array.prototype.slice.call(arguments);
as.push(0);
return E(B(A(f,as)));
});
}
}
function __arr2lst(elem,arr) {
if(elem >= arr.length) {
return __Z;
}
return {_:1,
a:arr[elem],
b:new T(function(){return __arr2lst(elem+1,arr);})};
}
function __lst2arr(xs) {
var arr = [];
xs = E(xs);
for(;xs._ === 1; xs = E(xs.b)) {
arr.push(E(xs.a));
}
return arr;
}
var __new = function() {return ({});}
var __set = function(o,k,v) {o[k]=v;}
var __get = function(o,k) {return o[k];}
var __has = function(o,k) {return o[k]!==undefined;}