xote 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +106 -0
- package/dist/xote.cjs +1 -0
- package/dist/xote.cjs.map +1 -0
- package/dist/xote.mjs +897 -0
- package/dist/xote.mjs.map +1 -0
- package/dist/xote.umd.js +1 -0
- package/dist/xote.umd.js.map +1 -0
- package/package.json +75 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Bernardo Gurgel
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# xote (pronounced [ˈʃɔtʃi])
|
|
2
|
+
[](https://www.npmjs.com/package/xote)
|
|
3
|
+
|
|
4
|
+
A lightweight, zero-dependency UI library for ReScript with fine-grained reactivity based on the [TC39 Signals proposal](https://github.com/tc39/proposal-signals). Build reactive web applications with automatic dependency tracking and efficient updates.
|
|
5
|
+
|
|
6
|
+
## Features
|
|
7
|
+
|
|
8
|
+
- Zero dependencies: pure ReScript implementation
|
|
9
|
+
- Lightweight and efficient runtime
|
|
10
|
+
- Declarative components for building reactive UIs (JSX support comming up soon)
|
|
11
|
+
- Reactive primitives: signals, computed values, and effects
|
|
12
|
+
- Automatic dependency tracking: no manual subscription management
|
|
13
|
+
- Fine-grained updates: direct DOM updates without a virtual DOM
|
|
14
|
+
- Signal-based router: SPA navigation with pattern matching and dynamic parameters
|
|
15
|
+
|
|
16
|
+
## Getting Started
|
|
17
|
+
|
|
18
|
+
### Installation
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install xote
|
|
22
|
+
# or
|
|
23
|
+
yarn add xote
|
|
24
|
+
# or
|
|
25
|
+
pnpm add xote
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Then, add it to your ReScript project’s dependencies in `rescript.json`:
|
|
29
|
+
|
|
30
|
+
```json
|
|
31
|
+
{
|
|
32
|
+
"bs-dependencies": ["xote"]
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
### Quick Example
|
|
37
|
+
|
|
38
|
+
```rescript
|
|
39
|
+
open Xote
|
|
40
|
+
|
|
41
|
+
// Create reactive state
|
|
42
|
+
let count = Signal.make(0)
|
|
43
|
+
|
|
44
|
+
// Event handler
|
|
45
|
+
let increment = (_evt: Dom.event) => Signal.update(count, n => n + 1)
|
|
46
|
+
|
|
47
|
+
// Build the UI
|
|
48
|
+
let app = Component.div(
|
|
49
|
+
~children=[
|
|
50
|
+
Component.h1(~children=[Component.text("Counter")], ()),
|
|
51
|
+
Component.p(~children=[
|
|
52
|
+
Component.textSignal(() => "Count: " ++ Int.toString(Signal.get(count)))
|
|
53
|
+
], ()),
|
|
54
|
+
Component.button(
|
|
55
|
+
~events=[("click", increment)],
|
|
56
|
+
~children=[Component.text("Increment")],
|
|
57
|
+
()
|
|
58
|
+
)
|
|
59
|
+
],
|
|
60
|
+
()
|
|
61
|
+
)
|
|
62
|
+
|
|
63
|
+
// Mount to the DOM
|
|
64
|
+
Component.mountById(app, "app")
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Classic counter: when you click the button, the counter updates reactively.
|
|
68
|
+
|
|
69
|
+
## Philosophy
|
|
70
|
+
|
|
71
|
+
Xote focuses on clarity, control, and performance. It brings reactive programming to ReScript with minimal abstractions and no runtime dependencies. The goal is to offer precise, fine-grained updates and predictable behavior without a virtual DOM.
|
|
72
|
+
|
|
73
|
+
## Core Concepts
|
|
74
|
+
|
|
75
|
+
- **Signal**: Reactive state container
|
|
76
|
+
- **Computed**: Derived reactive value that updates automatically
|
|
77
|
+
- **Effect**: Function that re-runs when dependencies change
|
|
78
|
+
- **Component**: Declarative UI builder using ReScript functions
|
|
79
|
+
- **Router**: Signal-based navigation for single-page applications
|
|
80
|
+
|
|
81
|
+
### Component Features
|
|
82
|
+
|
|
83
|
+
- **Reactive text**: Use `textSignal(() => ...)` to create text nodes that update when signals change
|
|
84
|
+
- **Unified attributes**: Use `attr()`, `signalAttr()`, or `computedAttr()` helper functions to create static or reactive attributes
|
|
85
|
+
- **Reactive lists**: Use `list(signal, renderItem)` to render dynamic arrays
|
|
86
|
+
- **Event handlers**: Pass event listeners via the `~events` parameter
|
|
87
|
+
|
|
88
|
+
### Router Features
|
|
89
|
+
|
|
90
|
+
- **Initialization**: Call `Router.init()` once at app start
|
|
91
|
+
- **Imperative navigation**: Use `Router.push()` and `Router.replace()` to navigate programmatically
|
|
92
|
+
- **Declarative routing**: Define routes with `Router.routes()` and render components based on URL patterns
|
|
93
|
+
- **Dynamic parameters**: Extract URL parameters using `:param` syntax (e.g., `/users/:id`)
|
|
94
|
+
- **Navigation links**: Use `Router.link()` for SPA navigation without page reload
|
|
95
|
+
- **Reactive location**: Access current route via `Router.location` signal
|
|
96
|
+
|
|
97
|
+
### Examples
|
|
98
|
+
|
|
99
|
+
- [Todo list app](https://github.com/brnrdog/xote/blob/main/src/demo/TodoApp.res) - complete reactive todo application
|
|
100
|
+
- [Router app](https://github.com/brnrdog/xote/blob/main/src/demo/RouterApp.res) - multi-page routing with dynamic parameters
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
## License
|
|
105
|
+
|
|
106
|
+
MIT © 2025
|
package/dist/xote.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var Q=(function(n,e){for(var r in n)e(r)});function X(n,e){if(n===e)return!0;var r=typeof n;if(r==="string"||r==="number"||r==="bigint"||r==="boolean"||r==="undefined"||n===null)return!1;var t=typeof e;if(r==="function"||t==="function")throw{RE_EXN_ID:"Invalid_argument",_1:"equal: functional value",Error:new Error};if(t==="number"||t==="bigint"||t==="undefined"||e===null)return!1;var u=n.TAG,a=e.TAG;if(u===248)return n[1]===e[1];if(u===251)throw{RE_EXN_ID:"Invalid_argument",_1:"equal: abstract value",Error:new Error};if(u!==a)return!1;var o=n.length|0,i=e.length|0;if(o===i)if(Array.isArray(n))for(var f=0;;){var c=f;if(c===o)return!0;if(!X(n[c],e[c]))return!1;f=c+1|0}else{if(n instanceof Date&&e instanceof Date)return!(n>e||n<e);var _={contents:!0},B=function(m){if(!Object.prototype.hasOwnProperty.call(e,m)){_.contents=!1;return}},P=function(m){if(!Object.prototype.hasOwnProperty.call(n,m)||!X(e[m],n[m])){_.contents=!1;return}};return Q(n,B),_.contents&&Q(e,P),_.contents}else return!1}function Y(n,e,r){for(var t=new Array(r),u=0,a=e;u<r;)t[u]=n[a],u=u+1|0,a=a+1|0;return t}function x(n,e){for(;;){var r=e,t=n,u=t.length,a=u===0?1:u,o=r.length,i=a-o|0;if(i===0)return t.apply(null,r);if(i>=0)return(function(f,c){return function(_){return x(f,c.concat([_]))}})(t,r);e=Y(r,a,-i|0),n=t.apply(null,Y(r,0,a))}}function sn(n,e){var r=n.length;if(r===1)return n(e);switch(r){case 1:return n(e);case 2:return function(t){return n(e,t)};case 3:return function(t,u){return n(e,t,u)};case 4:return function(t,u,a){return n(e,t,u,a)};case 5:return function(t,u,a,o){return n(e,t,u,a,o)};case 6:return function(t,u,a,o,i){return n(e,t,u,a,o,i)};case 7:return function(t,u,a,o,i,f){return n(e,t,u,a,o,i,f)};default:return x(n,[e])}}function ln(n){var e=n.length;return e===1?n:function(r){return sn(n,r)}}function hn(n){return n===void 0?{BS_PRIVATE_NESTED_SOME_NONE:0}:n!==null&&n.BS_PRIVATE_NESTED_SOME_NONE!==void 0?{BS_PRIVATE_NESTED_SOME_NONE:n.BS_PRIVATE_NESTED_SOME_NONE+1|0}:n}function R(n){if(!(n!==null&&n.BS_PRIVATE_NESTED_SOME_NONE!==void 0))return n;var e=n.BS_PRIVATE_NESTED_SOME_NONE;if(e!==0)return{BS_PRIVATE_NESTED_SOME_NONE:e-1|0}}function y(n){return n!==void 0?n.h:0}function l(n,e,r,t){var u=y(n),a=y(t);return{k:e,v:r,h:u>=a?u+1|0:a+1|0,l:n,r:t}}function pn(n,e){return{k:n,v:e,h:1,l:void 0,r:void 0}}function _n(n,e){return n.v===e?n:{k:n.k,v:e,h:n.h,l:n.l,r:n.r}}function $(n,e,r,t){var u=n!==void 0?n.h:0,a=t!==void 0?t.h:0;if(u>(a+2|0)){var o=n.l,i=n.r;return y(o)>=y(i)?l(o,n.k,n.v,l(i,e,r,t)):l(l(o,n.k,n.v,i.l),i.k,i.v,l(i.r,e,r,t))}if(a<=(u+2|0))return{k:e,v:r,h:u>=a?u+1|0:a+1|0,l:n,r:t};var f=t.l,c=t.r;return y(c)>=y(f)?l(l(n,e,r,f),t.k,t.v,c):l(l(n,e,r,f.l),f.k,f.v,l(f.r,t.k,t.v,c))}function nn(n,e,r){var t=n.l;return t!==void 0?$(nn(t,e,r),n.k,n.v,n.r):(e.contents=n.k,r.contents=n.v,n.r)}function mn(n,e){for(;;){var r=n;if(r===void 0)return;var t=r.k;if(e===t)return hn(r.v);n=e<t?r.l:r.r}}function b(n,e,r){if(n===void 0)return pn(e,r);var t=n.k;if(e===t)return _n(n,r);var u=n.v;return e<t?$(b(n.l,e,r),t,u,n.r):$(n.l,t,u,b(n.r,e,r))}function z(n,e){var r=n.k,t=n.l,u=n.r;if(e===r){if(t===void 0)return u;if(u===void 0)return t;var a={contents:u.k},o={contents:u.v},i=nn(u,a,o);return $(t,a.contents,o.contents,i)}if(e<r){if(t===void 0)return n;var f=z(t,e);return f===t?n:$(f,r,n.v,u)}if(u===void 0)return n;var c=z(u,e);return $(t,r,n.v,c)}function Sn(n,e){if(n!==void 0)return z(n,e)}var T=mn;function Z(n){if(n!==void 0)return R(n);throw{RE_EXN_ID:"Not_found",Error:new Error}}function h(n,e,r){var t=n!==void 0?n.h:0,u=r!==void 0?r.h:0;return{v:e,h:(t>=u?t:u)+1|0,l:n,r}}function En(n){return{v:n,h:1,l:void 0,r:void 0}}function K(n,e){return e!==void 0?n!==void 0?n.h>=e.h:!1:!0}function C(n,e,r){var t=n!==void 0?n.h:0,u=r!==void 0?r.h:0;if(t>(u+2|0)){var a=n.l,o=n.r;return K(a,o)?h(a,n.v,h(o,e,r)):h(h(a,n.v,o.l),o.v,h(o.r,e,r))}if(u<=(t+2|0))return{v:e,h:(t>=u?t:u)+1|0,l:n,r};var i=r.l,f=r.r;return K(f,i)?h(h(n,e,i),r.v,f):h(h(n,e,i.l),i.v,h(i.r,r.v,f))}function en(n,e){var r=n.l;return r!==void 0?C(en(r,e),n.v,n.r):(e.contents=n.v,n.r)}function rn(n,e){for(;;){var r=n;if(r===void 0)return;rn(r.l,e),e(r.v),n=r.r}}function gn(n,e){rn(n,ln(e))}function bn(n,e){for(;;){var r=n;if(r===void 0)return!1;var t=r.v;if(e===t)return!0;n=e<t?r.l:r.r}}function k(n,e){if(n===void 0)return En(e);var r=n.v;if(e===r)return n;var t=n.l,u=n.r;if(e<r){var a=k(t,e);return a===t?n:C(a,r,u)}var o=k(u,e);return o===u?n:C(t,r,o)}function F(n,e){if(n===void 0)return n;var r=n.v,t=n.l,u=n.r;if(e===r){if(t===void 0)return u;if(u===void 0)return t;var a={contents:u.v},o=en(u,a);return C(t,a.contents,o)}if(e<r){var i=F(t,e);return i===t?n:C(i,r,u)}var f=F(u,e);return f===u?n:C(t,r,f)}var Tn=bn,G=gn,p={contents:void 0},s={contents:void 0},An={contents:void 0},v={contents:void 0},S={contents:void 0},M={contents:!1};function D(n){var e=T(s.contents,n);if(e===void 0){s.contents=b(s.contents,n,void 0);return}}function tn(n,e){D(e);var r=Z(T(p.contents,n));if(X(v.contents,n)&&Tn(r.deps,e)===!1){r.deps=k(r.deps,e);var t=Z(T(s.contents,e));s.contents=b(s.contents,e,k(t,n))}}function w(n){G(n.deps,(function(e){var r=T(s.contents,e);if(r!==void 0){s.contents=b(s.contents,e,F(R(r),n.id));return}})),n.deps=void 0}function q(n){if(S.contents=k(S.contents,n),M.contents===!1){var e=S.contents;S.contents=void 0,G(e,(function(r){var t=T(p.contents,r);if(t!==void 0){w(t),v.contents=r,t.run(),v.contents=void 0;return}}))}}function un(n){D(n);var e=T(s.contents,n);if(e!==void 0)return G(R(e),q)}function yn(n){var e=v.contents;v.contents=void 0;var r=n();return v.contents=e,r}function $n(n){var e=M.contents;M.contents=!0;var r=n();if(M.contents=e,S.contents!==void 0){var t=S.contents;S.contents=void 0,G(t,(function(u){q(u)}))}return r}var Cn,In,On,Mn;const Nn=Object.freeze(Object.defineProperty({__proto__:null,Id:Mn,IntMap:In,IntSet:Cn,Observer:On,addDep:tn,batch:$n,batching:M,clearDeps:w,currentObserverId:v,ensureSignalBucket:D,notify:un,observers:p,pending:S,schedule:q,signalObservers:s,signalPeeks:An,untrack:yn},Symbol.toStringTag,{value:"Module"}));function kn(n,e){for(var r=n.length,t=new Array(r),u=0,a=0;a<r;++a){var o=n[a],i=e(o);i!==void 0&&(t[u]=R(i),u=u+1|0)}return t.length=u,t}function wn(n,e){for(var r=0;;){var t=r;if(t===n.length)return;var u=e(n[t]);if(u!==void 0)return u;r=t+1|0}}function an(n){return kn(n.split("/"),(function(e){if(e!=="")return e.startsWith(":")?{TAG:"Param",_0:e.slice(1)}:{TAG:"Static",_0:e}}))}function on(n,e){var r=e.split("/").filter(function(a){return a!==""});if(n.length!==r.length)return"NoMatch";var t={},u=n.every(function(a,o){var i=r[o];return a.TAG==="Static"?i===a._0:(t[a._0]=i,!0)});return u?{TAG:"Match",_0:t}:"NoMatch"}function W(n,e){return on(an(n),e)}const Pn=Object.freeze(Object.defineProperty({__proto__:null,match:W,matchPath:on,parsePattern:an},Symbol.toStringTag,{value:"Module"}));var V={contents:0};function H(){return V.contents=V.contents+1|0,V.contents}function O(n){var e=H(),r={id:e,kind:"Effect",run:(function(){n()}),deps:void 0};p.contents=b(p.contents,e,r),w(r),v.contents=e,r.run(),v.contents=void 0;var t=function(){var u=T(p.contents,e);if(u!==void 0){w(u),p.contents=Sn(p.contents,e);return}};return{dispose:t}}var jn,Rn,Gn,Dn,Bn,Vn;const Xn=Object.freeze(Object.defineProperty({__proto__:null,Core:Vn,Id:Gn,IntMap:Rn,IntSet:jn,Observer:Dn,Signal:Bn,run:O},Symbol.toStringTag,{value:"Module"}));function U(n){var e=H();return D(e),{id:e,value:{contents:n},version:{contents:0}}}function E(n){var e=v.contents;return e!==void 0&&tn(e,n.id),n.value.contents}function j(n){return n.value.contents}function g(n,e){n.value.contents=e,n.version.contents=n.version.contents+1|0,un(n.id)}function zn(n,e){g(n,e(n.value.contents))}var Fn,Ln,qn,Wn,Hn;const Un=Object.freeze(Object.defineProperty({__proto__:null,Core:Hn,Id:Wn,IntMap:Ln,IntSet:Fn,Observer:qn,get:E,make:U,peek:j,set:g,update:zn},Symbol.toStringTag,{value:"Module"}));function I(n){var e=U(),r={contents:!1},t=H(),u=function(){var o=n();return r.contents===!1&&(r.contents=!0),g(e,o)},a={id:t,kind:{NAME:"Computed",VAL:e.id},run:u,deps:void 0};return p.contents=b(p.contents,t,a),w(a),v.contents=t,a.run(),v.contents=void 0,e}var Jn,Qn,Yn,Zn,Kn,xn;const ne=Object.freeze(Object.defineProperty({__proto__:null,Core:Zn,Id:xn,IntMap:Qn,IntSet:Jn,Observer:Kn,Signal:Yn,make:I},Symbol.toStringTag,{value:"Module"}));function fn(n,e){return[n,{TAG:"Static",_0:e}]}function ee(n,e){return[n,{TAG:"SignalValue",_0:e}]}function re(n,e){return[n,{TAG:"Compute",_0:e}]}function te(n){return{TAG:"Text",_0:n}}function ue(n){var e=I(n);return{TAG:"SignalText",_0:e}}function ae(n){return{TAG:"Fragment",_0:n}}function J(n){return{TAG:"SignalFragment",_0:n}}function ie(n,e){var r=I(function(){return E(n).map(e)});return{TAG:"SignalFragment",_0:r}}function d(n,e,r,t,u){var a=e!==void 0?e:[].map(function(f){return f}),o=r!==void 0?r:[].map(function(f){return f}),i=t!==void 0?t:[].map(function(f){return f});return{TAG:"Element",tag:n,attrs:a,events:o,children:i}}function oe(n,e,r,t){return d("div",n,e,r)}function fe(n,e,r,t){return d("span",n,e,r)}function ce(n,e,r,t){return d("button",n,e,r)}function ve(n,e,r){return d("input",n,e,void 0)}function de(n,e,r,t){return d("h1",n,e,r)}function se(n,e,r,t){return d("h2",n,e,r)}function le(n,e,r,t){return d("h3",n,e,r)}function he(n,e,r,t){return d("p",n,e,r)}function pe(n,e,r,t){return d("ul",n,e,r)}function _e(n,e,r,t){return d("li",n,e,r)}function cn(n,e,r,t){return d("a",n,e,r)}function N(n){switch(n.TAG){case"Element":var e=document.createElement(n.tag);return n.attrs.forEach(function(i){var f=i[1],c=i[0];switch(f.TAG){case"Static":e.setAttribute(c,f._0);return;case"SignalValue":var _=f._0;e.setAttribute(c,j(_)),O(function(){var m=E(_);e.setAttribute(c,m)});return;case"Compute":var B=f._0,P=I(function(){return B()});e.setAttribute(c,j(P)),O(function(){var m=E(P);e.setAttribute(c,m)});return}}),n.events.forEach(function(i){e.addEventListener(i[0],i[1])}),n.children.forEach(function(i){var f=N(i);e.appendChild(f)}),e;case"Text":return document.createTextNode(n._0);case"SignalText":var r=n._0,t=document.createTextNode(j(r));return O(function(){var i=E(r);t.textContent=i}),t;case"Fragment":var u=document.createDocumentFragment();return n._0.forEach(function(i){var f=N(i);u.appendChild(f)}),u;case"SignalFragment":var a=n._0,o=document.createElement("div");return o.setAttribute("data-signal-fragment","true"),o.setAttribute("style","display: contents"),O(function(){var i=E(a);o.innerHTML="",i.forEach(function(f){var c=N(f);o.appendChild(c)})}),o}}function vn(n,e){var r=N(n);e.appendChild(r)}function me(n,e){var r=document.getElementById(e);if(r==null){console.error("Container element not found: "+e);return}else return vn(n,r)}var Se,Ee,ge,be;const Te=Object.freeze(Object.defineProperty({__proto__:null,Computed:be,Core:ge,Effect:Ee,Signal:Se,a:cn,attr:fn,button:ce,computedAttr:re,div:oe,element:d,fragment:ae,h1:de,h2:se,h3:le,input:ve,li:_e,list:ie,mount:vn,mountById:me,p:he,render:N,signalAttr:ee,signalFragment:J,span:fe,text:te,textSignal:ue,ul:pe},Symbol.toStringTag,{value:"Module"}));var A=U({pathname:"/",search:"",hash:""});function L(){return{pathname:window.location.pathname,search:window.location.search,hash:window.location.hash}}function Ae(){g(A,L());var n=function(e){g(A,L())};window.addEventListener("popstate",n)}function dn(n,e,r,t){var u=e!==void 0?e:"",a=r!==void 0?r:"",o={pathname:n,search:u,hash:a},i=n+u+a,f={};window.history.pushState(f,"",i),g(A,o)}function ye(n,e,r,t){var u=e!==void 0?e:"",a=r!==void 0?r:"",o={pathname:n,search:u,hash:a},i=n+u+a,f={};window.history.replaceState(f,"",i),g(A,o)}function $e(n,e){return J(I(function(){var r=E(A),t=W(n,r.pathname);return typeof t!="object"?[]:[e(t._0)]}))}function Ce(n){return J(I(function(){var e=E(A),r=wn(n,(function(t){var u=W(t.pattern,e.pathname);if(typeof u=="object")return t.render(u._0)}));return r!==void 0?[r]:[]}))}function Ie(n,e,r,t){var u=e!==void 0?e:[],a=r!==void 0?r:[],o=function(i){i.preventDefault(),dn(n,void 0,void 0)};return cn(u.concat([fn("href",n)]),[["click",o]],a)}var Oe,Me,Ne,ke,we;const Pe=Object.freeze(Object.defineProperty({__proto__:null,$$location:A,Component:Ne,Computed:Me,Core:we,Route:ke,Signal:Oe,getCurrentLocation:L,init:Ae,link:Ie,push:dn,replace:ye,route:$e,routes:Ce},Symbol.toStringTag,{value:"Module"}));var je=Te,Re=ne,Ge=Nn,De=Xn,Be=Pn,Ve=Pe,Xe=Un;exports.Component=je;exports.Computed=Re;exports.Core=Ge;exports.Effect=De;exports.Route=Be;exports.Router=Ve;exports.Signal=Xe;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xote.cjs","sources":["../node_modules/rescript/lib/es6/caml_obj.js","../node_modules/rescript/lib/es6/caml_array.js","../node_modules/rescript/lib/es6/curry.js","../node_modules/rescript/lib/es6/caml_option.js","../node_modules/rescript/lib/es6/belt_internalAVLtree.js","../node_modules/rescript/lib/es6/belt_internalMapInt.js","../node_modules/rescript/lib/es6/belt_MapInt.js","../node_modules/rescript/lib/es6/belt_Option.js","../node_modules/rescript/lib/es6/belt_internalAVLset.js","../node_modules/rescript/lib/es6/belt_internalSetInt.js","../node_modules/rescript/lib/es6/belt_SetInt.js","../src/Xote__Core.res.mjs","../node_modules/@rescript/core/src/Core__Array.res.mjs","../src/Xote__Route.res.mjs","../src/Xote__Id.res.mjs","../src/Xote__Effect.res.mjs","../src/Xote__Signal.res.mjs","../src/Xote__Computed.res.mjs","../src/Xote__Component.res.mjs","../src/Xote__Router.res.mjs","../src/Xote.res.mjs"],"sourcesContent":["\n\nimport * as Caml from \"./caml.js\";\n\nvar for_in = (function(o,foo){\n for (var x in o) { foo(x) }});\n\nvar obj_dup = (function(x){\n if(Array.isArray(x)){\n var len = x.length \n var v = new Array(len)\n for(var i = 0 ; i < len ; ++i){\n v[i] = x[i]\n }\n if(x.TAG !== undefined){\n v.TAG = x.TAG // TODO this can be removed eventually\n } \n return v \n } \n return Object.assign({},x) \n});\n\nvar update_dummy = (function(x,y){\n var k \n if(Array.isArray(y)){\n for(k = 0; k < y.length ; ++k){\n x[k] = y[k]\n }\n if(y.TAG !== undefined){\n x.TAG = y.TAG\n }\n } else {\n for (var k in y){\n x[k] = y[k]\n }\n }\n});\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n var a_type = typeof a;\n var b_type = typeof b;\n switch (a_type) {\n case \"bigint\" :\n if (b_type === \"bigint\") {\n return Caml.float_compare(a, b);\n }\n break;\n case \"boolean\" :\n if (b_type === \"boolean\") {\n return Caml.bool_compare(a, b);\n }\n break;\n case \"function\" :\n if (b_type === \"function\") {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"compare: functional value\",\n Error: new Error()\n };\n }\n break;\n case \"number\" :\n if (b_type === \"number\") {\n return Caml.float_compare(a, b);\n }\n break;\n case \"string\" :\n if (b_type === \"string\") {\n return Caml.string_compare(a, b);\n } else {\n return 1;\n }\n case \"undefined\" :\n return -1;\n default:\n \n }\n switch (b_type) {\n case \"string\" :\n return -1;\n case \"undefined\" :\n return 1;\n default:\n if (a_type === \"boolean\") {\n return 1;\n }\n if (b_type === \"boolean\") {\n return -1;\n }\n if (a_type === \"function\") {\n return 1;\n }\n if (b_type === \"function\") {\n return -1;\n }\n if (a_type === \"number\") {\n if (b === null || b.BS_PRIVATE_NESTED_SOME_NONE !== undefined) {\n return 1;\n } else {\n return -1;\n }\n }\n if (b_type === \"number\") {\n if (a === null || a.BS_PRIVATE_NESTED_SOME_NONE !== undefined) {\n return -1;\n } else {\n return 1;\n }\n }\n if (a === null) {\n if (b.BS_PRIVATE_NESTED_SOME_NONE !== undefined) {\n return 1;\n } else {\n return -1;\n }\n }\n if (b === null) {\n if (a.BS_PRIVATE_NESTED_SOME_NONE !== undefined) {\n return -1;\n } else {\n return 1;\n }\n }\n if (a.BS_PRIVATE_NESTED_SOME_NONE !== undefined) {\n if (b.BS_PRIVATE_NESTED_SOME_NONE !== undefined) {\n return aux_obj_compare(a, b);\n } else {\n return -1;\n }\n }\n var tag_a = a.TAG;\n var tag_b = b.TAG;\n if (tag_a === 248) {\n return Caml.int_compare(a[1], b[1]);\n }\n if (tag_a === 251) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: abstract value\",\n Error: new Error()\n };\n }\n if (tag_a !== tag_b) {\n if (tag_a < tag_b) {\n return -1;\n } else {\n return 1;\n }\n }\n var len_a = a.length | 0;\n var len_b = b.length | 0;\n if (len_a === len_b) {\n if (Array.isArray(a)) {\n var _i = 0;\n while(true) {\n var i = _i;\n if (i === len_a) {\n return 0;\n }\n var res = compare(a[i], b[i]);\n if (res !== 0) {\n return res;\n }\n _i = i + 1 | 0;\n continue ;\n };\n } else if ((a instanceof Date && b instanceof Date)) {\n return (a - b);\n } else {\n return aux_obj_compare(a, b);\n }\n } else if (len_a < len_b) {\n var _i$1 = 0;\n while(true) {\n var i$1 = _i$1;\n if (i$1 === len_a) {\n return -1;\n }\n var res$1 = compare(a[i$1], b[i$1]);\n if (res$1 !== 0) {\n return res$1;\n }\n _i$1 = i$1 + 1 | 0;\n continue ;\n };\n } else {\n var _i$2 = 0;\n while(true) {\n var i$2 = _i$2;\n if (i$2 === len_b) {\n return 1;\n }\n var res$2 = compare(a[i$2], b[i$2]);\n if (res$2 !== 0) {\n return res$2;\n }\n _i$2 = i$2 + 1 | 0;\n continue ;\n };\n }\n }\n}\n\nfunction aux_obj_compare(a, b) {\n var min_key_lhs = {\n contents: undefined\n };\n var min_key_rhs = {\n contents: undefined\n };\n var do_key = function (param, key) {\n var min_key = param[2];\n var b = param[1];\n if (!(!Object.prototype.hasOwnProperty.call(b, key) || compare(param[0][key], b[key]) > 0)) {\n return ;\n }\n var mk = min_key.contents;\n if (mk !== undefined && key >= mk) {\n return ;\n } else {\n min_key.contents = key;\n return ;\n }\n };\n var partial_arg = [\n a,\n b,\n min_key_rhs\n ];\n var do_key_a = function (param) {\n return do_key(partial_arg, param);\n };\n var partial_arg$1 = [\n b,\n a,\n min_key_lhs\n ];\n var do_key_b = function (param) {\n return do_key(partial_arg$1, param);\n };\n for_in(a, do_key_a);\n for_in(b, do_key_b);\n var match = min_key_lhs.contents;\n var match$1 = min_key_rhs.contents;\n if (match !== undefined) {\n if (match$1 !== undefined) {\n return Caml.string_compare(match, match$1);\n } else {\n return -1;\n }\n } else if (match$1 !== undefined) {\n return 1;\n } else {\n return 0;\n }\n}\n\nfunction equal(a, b) {\n if (a === b) {\n return true;\n }\n var a_type = typeof a;\n if (a_type === \"string\" || a_type === \"number\" || a_type === \"bigint\" || a_type === \"boolean\" || a_type === \"undefined\" || a === null) {\n return false;\n }\n var b_type = typeof b;\n if (a_type === \"function\" || b_type === \"function\") {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: functional value\",\n Error: new Error()\n };\n }\n if (b_type === \"number\" || b_type === \"bigint\" || b_type === \"undefined\" || b === null) {\n return false;\n }\n var tag_a = a.TAG;\n var tag_b = b.TAG;\n if (tag_a === 248) {\n return a[1] === b[1];\n }\n if (tag_a === 251) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"equal: abstract value\",\n Error: new Error()\n };\n }\n if (tag_a !== tag_b) {\n return false;\n }\n var len_a = a.length | 0;\n var len_b = b.length | 0;\n if (len_a === len_b) {\n if (Array.isArray(a)) {\n var _i = 0;\n while(true) {\n var i = _i;\n if (i === len_a) {\n return true;\n }\n if (!equal(a[i], b[i])) {\n return false;\n }\n _i = i + 1 | 0;\n continue ;\n };\n } else if ((a instanceof Date && b instanceof Date)) {\n return !(a > b || a < b);\n } else {\n var result = {\n contents: true\n };\n var do_key_a = function (key) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) {\n result.contents = false;\n return ;\n }\n \n };\n var do_key_b = function (key) {\n if (!Object.prototype.hasOwnProperty.call(a, key) || !equal(b[key], a[key])) {\n result.contents = false;\n return ;\n }\n \n };\n for_in(a, do_key_a);\n if (result.contents) {\n for_in(b, do_key_b);\n }\n return result.contents;\n }\n } else {\n return false;\n }\n}\n\nfunction equal_null(x, y) {\n if (y !== null) {\n return equal(x, y);\n } else {\n return x === y;\n }\n}\n\nfunction equal_undefined(x, y) {\n if (y !== undefined) {\n return equal(x, y);\n } else {\n return x === y;\n }\n}\n\nfunction equal_nullable(x, y) {\n if (y == null) {\n return x === y;\n } else {\n return equal(x, y);\n }\n}\n\nfunction notequal(a, b) {\n if ((typeof a === \"number\" || typeof a === \"bigint\") && (typeof b === \"number\" || typeof b === \"bigint\")) {\n return a !== b;\n } else {\n return !equal(a, b);\n }\n}\n\nfunction greaterequal(a, b) {\n if ((typeof a === \"number\" || typeof a === \"bigint\") && (typeof b === \"number\" || typeof b === \"bigint\")) {\n return a >= b;\n } else {\n return compare(a, b) >= 0;\n }\n}\n\nfunction greaterthan(a, b) {\n if ((typeof a === \"number\" || typeof a === \"bigint\") && (typeof b === \"number\" || typeof b === \"bigint\")) {\n return a > b;\n } else {\n return compare(a, b) > 0;\n }\n}\n\nfunction lessequal(a, b) {\n if ((typeof a === \"number\" || typeof a === \"bigint\") && (typeof b === \"number\" || typeof b === \"bigint\")) {\n return a <= b;\n } else {\n return compare(a, b) <= 0;\n }\n}\n\nfunction lessthan(a, b) {\n if ((typeof a === \"number\" || typeof a === \"bigint\") && (typeof b === \"number\" || typeof b === \"bigint\")) {\n return a < b;\n } else {\n return compare(a, b) < 0;\n }\n}\n\nfunction min(x, y) {\n if (compare(x, y) <= 0) {\n return x;\n } else {\n return y;\n }\n}\n\nfunction max(x, y) {\n if (compare(x, y) >= 0) {\n return x;\n } else {\n return y;\n }\n}\n\nexport {\n obj_dup ,\n update_dummy ,\n compare ,\n equal ,\n equal_null ,\n equal_undefined ,\n equal_nullable ,\n notequal ,\n greaterequal ,\n greaterthan ,\n lessthan ,\n lessequal ,\n min ,\n max ,\n}\n/* No side effect */\n","\n\n\nfunction sub(x, offset, len) {\n var result = new Array(len);\n var j = 0;\n var i = offset;\n while(j < len) {\n result[j] = x[i];\n j = j + 1 | 0;\n i = i + 1 | 0;\n };\n return result;\n}\n\nfunction len(_acc, _l) {\n while(true) {\n var l = _l;\n var acc = _acc;\n if (!l) {\n return acc;\n }\n _l = l.tl;\n _acc = l.hd.length + acc | 0;\n continue ;\n };\n}\n\nfunction fill(arr, _i, _l) {\n while(true) {\n var l = _l;\n var i = _i;\n if (!l) {\n return ;\n }\n var x = l.hd;\n var l$1 = x.length;\n var k = i;\n var j = 0;\n while(j < l$1) {\n arr[k] = x[j];\n k = k + 1 | 0;\n j = j + 1 | 0;\n };\n _l = l.tl;\n _i = k;\n continue ;\n };\n}\n\nfunction concat(l) {\n var v = len(0, l);\n var result = new Array(v);\n fill(result, 0, l);\n return result;\n}\n\nfunction set(xs, index, newval) {\n if (index < 0 || index >= xs.length) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"index out of bounds\",\n Error: new Error()\n };\n }\n xs[index] = newval;\n}\n\nfunction get(xs, index) {\n if (index < 0 || index >= xs.length) {\n throw {\n RE_EXN_ID: \"Invalid_argument\",\n _1: \"index out of bounds\",\n Error: new Error()\n };\n }\n return xs[index];\n}\n\nfunction make(len, init) {\n var b = new Array(len);\n for(var i = 0; i < len; ++i){\n b[i] = init;\n }\n return b;\n}\n\nfunction make_float(len) {\n var b = new Array(len);\n for(var i = 0; i < len; ++i){\n b[i] = 0;\n }\n return b;\n}\n\nfunction blit(a1, i1, a2, i2, len) {\n if (i2 <= i1) {\n for(var j = 0; j < len; ++j){\n a2[j + i2 | 0] = a1[j + i1 | 0];\n }\n return ;\n }\n for(var j$1 = len - 1 | 0; j$1 >= 0; --j$1){\n a2[j$1 + i2 | 0] = a1[j$1 + i1 | 0];\n }\n}\n\nfunction dup(prim) {\n return prim.slice(0);\n}\n\nexport {\n dup ,\n sub ,\n concat ,\n make ,\n make_float ,\n blit ,\n get ,\n set ,\n}\n/* No side effect */\n","\n\nimport * as Caml_array from \"./caml_array.js\";\n\nfunction app(_f, _args) {\n while(true) {\n var args = _args;\n var f = _f;\n var init_arity = f.length;\n var arity = init_arity === 0 ? 1 : init_arity;\n var len = args.length;\n var d = arity - len | 0;\n if (d === 0) {\n return f.apply(null, args);\n }\n if (d >= 0) {\n return (function(f,args){\n return function (x) {\n return app(f, args.concat([x]));\n }\n }(f,args));\n }\n _args = Caml_array.sub(args, arity, -d | 0);\n _f = f.apply(null, Caml_array.sub(args, 0, arity));\n continue ;\n };\n}\n\nfunction _1(o, a0) {\n var arity = o.length;\n if (arity === 1) {\n return o(a0);\n } else {\n switch (arity) {\n case 1 :\n return o(a0);\n case 2 :\n return function (param) {\n return o(a0, param);\n };\n case 3 :\n return function (param, param$1) {\n return o(a0, param, param$1);\n };\n case 4 :\n return function (param, param$1, param$2) {\n return o(a0, param, param$1, param$2);\n };\n case 5 :\n return function (param, param$1, param$2, param$3) {\n return o(a0, param, param$1, param$2, param$3);\n };\n case 6 :\n return function (param, param$1, param$2, param$3, param$4) {\n return o(a0, param, param$1, param$2, param$3, param$4);\n };\n case 7 :\n return function (param, param$1, param$2, param$3, param$4, param$5) {\n return o(a0, param, param$1, param$2, param$3, param$4, param$5);\n };\n default:\n return app(o, [a0]);\n }\n }\n}\n\nfunction __1(o) {\n var arity = o.length;\n if (arity === 1) {\n return o;\n } else {\n return function (a0) {\n return _1(o, a0);\n };\n }\n}\n\nfunction _2(o, a0, a1) {\n var arity = o.length;\n if (arity === 2) {\n return o(a0, a1);\n } else {\n switch (arity) {\n case 1 :\n return app(o(a0), [a1]);\n case 2 :\n return o(a0, a1);\n case 3 :\n return function (param) {\n return o(a0, a1, param);\n };\n case 4 :\n return function (param, param$1) {\n return o(a0, a1, param, param$1);\n };\n case 5 :\n return function (param, param$1, param$2) {\n return o(a0, a1, param, param$1, param$2);\n };\n case 6 :\n return function (param, param$1, param$2, param$3) {\n return o(a0, a1, param, param$1, param$2, param$3);\n };\n case 7 :\n return function (param, param$1, param$2, param$3, param$4) {\n return o(a0, a1, param, param$1, param$2, param$3, param$4);\n };\n default:\n return app(o, [\n a0,\n a1\n ]);\n }\n }\n}\n\nfunction __2(o) {\n var arity = o.length;\n if (arity === 2) {\n return o;\n } else {\n return function (a0, a1) {\n return _2(o, a0, a1);\n };\n }\n}\n\nfunction _3(o, a0, a1, a2) {\n var arity = o.length;\n if (arity === 3) {\n return o(a0, a1, a2);\n } else {\n switch (arity) {\n case 1 :\n return app(o(a0), [\n a1,\n a2\n ]);\n case 2 :\n return app(o(a0, a1), [a2]);\n case 3 :\n return o(a0, a1, a2);\n case 4 :\n return function (param) {\n return o(a0, a1, a2, param);\n };\n case 5 :\n return function (param, param$1) {\n return o(a0, a1, a2, param, param$1);\n };\n case 6 :\n return function (param, param$1, param$2) {\n return o(a0, a1, a2, param, param$1, param$2);\n };\n case 7 :\n return function (param, param$1, param$2, param$3) {\n return o(a0, a1, a2, param, param$1, param$2, param$3);\n };\n default:\n return app(o, [\n a0,\n a1,\n a2\n ]);\n }\n }\n}\n\nfunction __3(o) {\n var arity = o.length;\n if (arity === 3) {\n return o;\n } else {\n return function (a0, a1, a2) {\n return _3(o, a0, a1, a2);\n };\n }\n}\n\nfunction _4(o, a0, a1, a2, a3) {\n var arity = o.length;\n if (arity === 4) {\n return o(a0, a1, a2, a3);\n } else {\n switch (arity) {\n case 1 :\n return app(o(a0), [\n a1,\n a2,\n a3\n ]);\n case 2 :\n return app(o(a0, a1), [\n a2,\n a3\n ]);\n case 3 :\n return app(o(a0, a1, a2), [a3]);\n case 4 :\n return o(a0, a1, a2, a3);\n case 5 :\n return function (param) {\n return o(a0, a1, a2, a3, param);\n };\n case 6 :\n return function (param, param$1) {\n return o(a0, a1, a2, a3, param, param$1);\n };\n case 7 :\n return function (param, param$1, param$2) {\n return o(a0, a1, a2, a3, param, param$1, param$2);\n };\n default:\n return app(o, [\n a0,\n a1,\n a2,\n a3\n ]);\n }\n }\n}\n\nfunction __4(o) {\n var arity = o.length;\n if (arity === 4) {\n return o;\n } else {\n return function (a0, a1, a2, a3) {\n return _4(o, a0, a1, a2, a3);\n };\n }\n}\n\nfunction _5(o, a0, a1, a2, a3, a4) {\n var arity = o.length;\n if (arity === 5) {\n return o(a0, a1, a2, a3, a4);\n } else {\n switch (arity) {\n case 1 :\n return app(o(a0), [\n a1,\n a2,\n a3,\n a4\n ]);\n case 2 :\n return app(o(a0, a1), [\n a2,\n a3,\n a4\n ]);\n case 3 :\n return app(o(a0, a1, a2), [\n a3,\n a4\n ]);\n case 4 :\n return app(o(a0, a1, a2, a3), [a4]);\n case 5 :\n return o(a0, a1, a2, a3, a4);\n case 6 :\n return function (param) {\n return o(a0, a1, a2, a3, a4, param);\n };\n case 7 :\n return function (param, param$1) {\n return o(a0, a1, a2, a3, a4, param, param$1);\n };\n default:\n return app(o, [\n a0,\n a1,\n a2,\n a3,\n a4\n ]);\n }\n }\n}\n\nfunction __5(o) {\n var arity = o.length;\n if (arity === 5) {\n return o;\n } else {\n return function (a0, a1, a2, a3, a4) {\n return _5(o, a0, a1, a2, a3, a4);\n };\n }\n}\n\nfunction _6(o, a0, a1, a2, a3, a4, a5) {\n var arity = o.length;\n if (arity === 6) {\n return o(a0, a1, a2, a3, a4, a5);\n } else {\n switch (arity) {\n case 1 :\n return app(o(a0), [\n a1,\n a2,\n a3,\n a4,\n a5\n ]);\n case 2 :\n return app(o(a0, a1), [\n a2,\n a3,\n a4,\n a5\n ]);\n case 3 :\n return app(o(a0, a1, a2), [\n a3,\n a4,\n a5\n ]);\n case 4 :\n return app(o(a0, a1, a2, a3), [\n a4,\n a5\n ]);\n case 5 :\n return app(o(a0, a1, a2, a3, a4), [a5]);\n case 6 :\n return o(a0, a1, a2, a3, a4, a5);\n case 7 :\n return function (param) {\n return o(a0, a1, a2, a3, a4, a5, param);\n };\n default:\n return app(o, [\n a0,\n a1,\n a2,\n a3,\n a4,\n a5\n ]);\n }\n }\n}\n\nfunction __6(o) {\n var arity = o.length;\n if (arity === 6) {\n return o;\n } else {\n return function (a0, a1, a2, a3, a4, a5) {\n return _6(o, a0, a1, a2, a3, a4, a5);\n };\n }\n}\n\nfunction _7(o, a0, a1, a2, a3, a4, a5, a6) {\n var arity = o.length;\n if (arity === 7) {\n return o(a0, a1, a2, a3, a4, a5, a6);\n } else {\n switch (arity) {\n case 1 :\n return app(o(a0), [\n a1,\n a2,\n a3,\n a4,\n a5,\n a6\n ]);\n case 2 :\n return app(o(a0, a1), [\n a2,\n a3,\n a4,\n a5,\n a6\n ]);\n case 3 :\n return app(o(a0, a1, a2), [\n a3,\n a4,\n a5,\n a6\n ]);\n case 4 :\n return app(o(a0, a1, a2, a3), [\n a4,\n a5,\n a6\n ]);\n case 5 :\n return app(o(a0, a1, a2, a3, a4), [\n a5,\n a6\n ]);\n case 6 :\n return app(o(a0, a1, a2, a3, a4, a5), [a6]);\n case 7 :\n return o(a0, a1, a2, a3, a4, a5, a6);\n default:\n return app(o, [\n a0,\n a1,\n a2,\n a3,\n a4,\n a5,\n a6\n ]);\n }\n }\n}\n\nfunction __7(o) {\n var arity = o.length;\n if (arity === 7) {\n return o;\n } else {\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return _7(o, a0, a1, a2, a3, a4, a5, a6);\n };\n }\n}\n\nfunction _8(o, a0, a1, a2, a3, a4, a5, a6, a7) {\n var arity = o.length;\n if (arity === 8) {\n return o(a0, a1, a2, a3, a4, a5, a6, a7);\n } else {\n switch (arity) {\n case 1 :\n return app(o(a0), [\n a1,\n a2,\n a3,\n a4,\n a5,\n a6,\n a7\n ]);\n case 2 :\n return app(o(a0, a1), [\n a2,\n a3,\n a4,\n a5,\n a6,\n a7\n ]);\n case 3 :\n return app(o(a0, a1, a2), [\n a3,\n a4,\n a5,\n a6,\n a7\n ]);\n case 4 :\n return app(o(a0, a1, a2, a3), [\n a4,\n a5,\n a6,\n a7\n ]);\n case 5 :\n return app(o(a0, a1, a2, a3, a4), [\n a5,\n a6,\n a7\n ]);\n case 6 :\n return app(o(a0, a1, a2, a3, a4, a5), [\n a6,\n a7\n ]);\n case 7 :\n return app(o(a0, a1, a2, a3, a4, a5, a6), [a7]);\n default:\n return app(o, [\n a0,\n a1,\n a2,\n a3,\n a4,\n a5,\n a6,\n a7\n ]);\n }\n }\n}\n\nfunction __8(o) {\n var arity = o.length;\n if (arity === 8) {\n return o;\n } else {\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return _8(o, a0, a1, a2, a3, a4, a5, a6, a7);\n };\n }\n}\n\nexport {\n app ,\n _1 ,\n __1 ,\n _2 ,\n __2 ,\n _3 ,\n __3 ,\n _4 ,\n __4 ,\n _5 ,\n __5 ,\n _6 ,\n __6 ,\n _7 ,\n __7 ,\n _8 ,\n __8 ,\n}\n/* No side effect */\n","\n\n\nfunction isNested(x) {\n return x.BS_PRIVATE_NESTED_SOME_NONE !== undefined;\n}\n\nfunction some(x) {\n if (x === undefined) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: 0\n };\n } else if (x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== undefined) {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: x.BS_PRIVATE_NESTED_SOME_NONE + 1 | 0\n };\n } else {\n return x;\n }\n}\n\nfunction nullable_to_opt(x) {\n if (x == null) {\n return ;\n } else {\n return some(x);\n }\n}\n\nfunction undefined_to_opt(x) {\n if (x === undefined) {\n return ;\n } else {\n return some(x);\n }\n}\n\nfunction null_to_opt(x) {\n if (x === null) {\n return ;\n } else {\n return some(x);\n }\n}\n\nfunction valFromOption(x) {\n if (!(x !== null && x.BS_PRIVATE_NESTED_SOME_NONE !== undefined)) {\n return x;\n }\n var depth = x.BS_PRIVATE_NESTED_SOME_NONE;\n if (depth === 0) {\n return ;\n } else {\n return {\n BS_PRIVATE_NESTED_SOME_NONE: depth - 1 | 0\n };\n }\n}\n\nfunction option_get(x) {\n if (x === undefined) {\n return ;\n } else {\n return valFromOption(x);\n }\n}\n\nfunction option_unwrap(x) {\n if (x !== undefined) {\n return x.VAL;\n } else {\n return x;\n }\n}\n\nexport {\n nullable_to_opt ,\n undefined_to_opt ,\n null_to_opt ,\n valFromOption ,\n some ,\n isNested ,\n option_get ,\n option_unwrap ,\n}\n/* No side effect */\n","\n\nimport * as Curry from \"./curry.js\";\nimport * as Caml_option from \"./caml_option.js\";\nimport * as Belt_SortArray from \"./belt_SortArray.js\";\n\nfunction treeHeight(n) {\n if (n !== undefined) {\n return n.h;\n } else {\n return 0;\n }\n}\n\nfunction copy(n) {\n if (n !== undefined) {\n return {\n k: n.k,\n v: n.v,\n h: n.h,\n l: copy(n.l),\n r: copy(n.r)\n };\n } else {\n return n;\n }\n}\n\nfunction create(l, x, d, r) {\n var hl = treeHeight(l);\n var hr = treeHeight(r);\n return {\n k: x,\n v: d,\n h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0,\n l: l,\n r: r\n };\n}\n\nfunction singleton(x, d) {\n return {\n k: x,\n v: d,\n h: 1,\n l: undefined,\n r: undefined\n };\n}\n\nfunction heightGe(l, r) {\n if (r !== undefined) {\n if (l !== undefined) {\n return l.h >= r.h;\n } else {\n return false;\n }\n } else {\n return true;\n }\n}\n\nfunction updateValue(n, newValue) {\n if (n.v === newValue) {\n return n;\n } else {\n return {\n k: n.k,\n v: newValue,\n h: n.h,\n l: n.l,\n r: n.r\n };\n }\n}\n\nfunction bal(l, x, d, r) {\n var hl = l !== undefined ? l.h : 0;\n var hr = r !== undefined ? r.h : 0;\n if (hl > (hr + 2 | 0)) {\n var ll = l.l;\n var lr = l.r;\n if (treeHeight(ll) >= treeHeight(lr)) {\n return create(ll, l.k, l.v, create(lr, x, d, r));\n } else {\n return create(create(ll, l.k, l.v, lr.l), lr.k, lr.v, create(lr.r, x, d, r));\n }\n }\n if (hr <= (hl + 2 | 0)) {\n return {\n k: x,\n v: d,\n h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0,\n l: l,\n r: r\n };\n }\n var rl = r.l;\n var rr = r.r;\n if (treeHeight(rr) >= treeHeight(rl)) {\n return create(create(l, x, d, rl), r.k, r.v, rr);\n } else {\n return create(create(l, x, d, rl.l), rl.k, rl.v, create(rl.r, r.k, r.v, rr));\n }\n}\n\nfunction minKey0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.l;\n if (n$1 === undefined) {\n return n.k;\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction minKey(n) {\n if (n !== undefined) {\n return Caml_option.some(minKey0Aux(n));\n }\n \n}\n\nfunction minKeyUndefined(n) {\n if (n !== undefined) {\n return minKey0Aux(n);\n }\n \n}\n\nfunction maxKey0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.r;\n if (n$1 === undefined) {\n return n.k;\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction maxKey(n) {\n if (n !== undefined) {\n return Caml_option.some(maxKey0Aux(n));\n }\n \n}\n\nfunction maxKeyUndefined(n) {\n if (n !== undefined) {\n return maxKey0Aux(n);\n }\n \n}\n\nfunction minKV0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.l;\n if (n$1 === undefined) {\n return [\n n.k,\n n.v\n ];\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction minimum(n) {\n if (n !== undefined) {\n return minKV0Aux(n);\n }\n \n}\n\nfunction minUndefined(n) {\n if (n !== undefined) {\n return minKV0Aux(n);\n }\n \n}\n\nfunction maxKV0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.r;\n if (n$1 === undefined) {\n return [\n n.k,\n n.v\n ];\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction maximum(n) {\n if (n !== undefined) {\n return maxKV0Aux(n);\n }\n \n}\n\nfunction maxUndefined(n) {\n if (n !== undefined) {\n return maxKV0Aux(n);\n }\n \n}\n\nfunction removeMinAuxWithRef(n, kr, vr) {\n var ln = n.l;\n if (ln !== undefined) {\n return bal(removeMinAuxWithRef(ln, kr, vr), n.k, n.v, n.r);\n } else {\n kr.contents = n.k;\n vr.contents = n.v;\n return n.r;\n }\n}\n\nfunction isEmpty(x) {\n return x === undefined;\n}\n\nfunction stackAllLeft(_v, _s) {\n while(true) {\n var s = _s;\n var v = _v;\n if (v === undefined) {\n return s;\n }\n _s = {\n hd: v,\n tl: s\n };\n _v = v.l;\n continue ;\n };\n}\n\nfunction findFirstByU(n, p) {\n if (n === undefined) {\n return ;\n }\n var left = findFirstByU(n.l, p);\n if (left !== undefined) {\n return left;\n }\n var v = n.k;\n var d = n.v;\n var pvd = p(v, d);\n if (pvd) {\n return [\n v,\n d\n ];\n }\n var right = findFirstByU(n.r, p);\n if (right !== undefined) {\n return right;\n }\n \n}\n\nfunction findFirstBy(n, p) {\n return findFirstByU(n, Curry.__2(p));\n}\n\nfunction forEachU(_n, f) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n forEachU(n.l, f);\n f(n.k, n.v);\n _n = n.r;\n continue ;\n };\n}\n\nfunction forEach(n, f) {\n forEachU(n, Curry.__2(f));\n}\n\nfunction mapU(n, f) {\n if (n === undefined) {\n return ;\n }\n var newLeft = mapU(n.l, f);\n var newD = f(n.v);\n var newRight = mapU(n.r, f);\n return {\n k: n.k,\n v: newD,\n h: n.h,\n l: newLeft,\n r: newRight\n };\n}\n\nfunction map(n, f) {\n return mapU(n, Curry.__1(f));\n}\n\nfunction mapWithKeyU(n, f) {\n if (n === undefined) {\n return ;\n }\n var key = n.k;\n var newLeft = mapWithKeyU(n.l, f);\n var newD = f(key, n.v);\n var newRight = mapWithKeyU(n.r, f);\n return {\n k: key,\n v: newD,\n h: n.h,\n l: newLeft,\n r: newRight\n };\n}\n\nfunction mapWithKey(n, f) {\n return mapWithKeyU(n, Curry.__2(f));\n}\n\nfunction reduceU(_m, _accu, f) {\n while(true) {\n var accu = _accu;\n var m = _m;\n if (m === undefined) {\n return accu;\n }\n var v = m.k;\n var d = m.v;\n var l = m.l;\n var r = m.r;\n _accu = f(reduceU(l, accu, f), v, d);\n _m = r;\n continue ;\n };\n}\n\nfunction reduce(m, accu, f) {\n return reduceU(m, accu, Curry.__3(f));\n}\n\nfunction everyU(_n, p) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return true;\n }\n if (!p(n.k, n.v)) {\n return false;\n }\n if (!everyU(n.l, p)) {\n return false;\n }\n _n = n.r;\n continue ;\n };\n}\n\nfunction every(n, p) {\n return everyU(n, Curry.__2(p));\n}\n\nfunction someU(_n, p) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return false;\n }\n if (p(n.k, n.v)) {\n return true;\n }\n if (someU(n.l, p)) {\n return true;\n }\n _n = n.r;\n continue ;\n };\n}\n\nfunction some(n, p) {\n return someU(n, Curry.__2(p));\n}\n\nfunction addMinElement(n, k, v) {\n if (n !== undefined) {\n return bal(addMinElement(n.l, k, v), n.k, n.v, n.r);\n } else {\n return singleton(k, v);\n }\n}\n\nfunction addMaxElement(n, k, v) {\n if (n !== undefined) {\n return bal(n.l, n.k, n.v, addMaxElement(n.r, k, v));\n } else {\n return singleton(k, v);\n }\n}\n\nfunction join(ln, v, d, rn) {\n if (ln === undefined) {\n return addMinElement(rn, v, d);\n }\n if (rn === undefined) {\n return addMaxElement(ln, v, d);\n }\n var lv = ln.k;\n var ld = ln.v;\n var lh = ln.h;\n var ll = ln.l;\n var lr = ln.r;\n var rv = rn.k;\n var rd = rn.v;\n var rh = rn.h;\n var rl = rn.l;\n var rr = rn.r;\n if (lh > (rh + 2 | 0)) {\n return bal(ll, lv, ld, join(lr, v, d, rn));\n } else if (rh > (lh + 2 | 0)) {\n return bal(join(ln, v, d, rl), rv, rd, rr);\n } else {\n return create(ln, v, d, rn);\n }\n}\n\nfunction concat(t1, t2) {\n if (t1 === undefined) {\n return t2;\n }\n if (t2 === undefined) {\n return t1;\n }\n var kr = {\n contents: t2.k\n };\n var vr = {\n contents: t2.v\n };\n var t2r = removeMinAuxWithRef(t2, kr, vr);\n return join(t1, kr.contents, vr.contents, t2r);\n}\n\nfunction concatOrJoin(t1, v, d, t2) {\n if (d !== undefined) {\n return join(t1, v, Caml_option.valFromOption(d), t2);\n } else {\n return concat(t1, t2);\n }\n}\n\nfunction keepSharedU(n, p) {\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n var d = n.v;\n var newLeft = keepSharedU(n.l, p);\n var pvd = p(v, d);\n var newRight = keepSharedU(n.r, p);\n if (pvd) {\n return join(newLeft, v, d, newRight);\n } else {\n return concat(newLeft, newRight);\n }\n}\n\nfunction keepShared(n, p) {\n return keepSharedU(n, Curry.__2(p));\n}\n\nfunction keepMapU(n, p) {\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n var d = n.v;\n var newLeft = keepMapU(n.l, p);\n var pvd = p(v, d);\n var newRight = keepMapU(n.r, p);\n if (pvd !== undefined) {\n return join(newLeft, v, Caml_option.valFromOption(pvd), newRight);\n } else {\n return concat(newLeft, newRight);\n }\n}\n\nfunction keepMap(n, p) {\n return keepMapU(n, Curry.__2(p));\n}\n\nfunction partitionSharedU(n, p) {\n if (n === undefined) {\n return [\n undefined,\n undefined\n ];\n }\n var key = n.k;\n var value = n.v;\n var match = partitionSharedU(n.l, p);\n var lf = match[1];\n var lt = match[0];\n var pvd = p(key, value);\n var match$1 = partitionSharedU(n.r, p);\n var rf = match$1[1];\n var rt = match$1[0];\n if (pvd) {\n return [\n join(lt, key, value, rt),\n concat(lf, rf)\n ];\n } else {\n return [\n concat(lt, rt),\n join(lf, key, value, rf)\n ];\n }\n}\n\nfunction partitionShared(n, p) {\n return partitionSharedU(n, Curry.__2(p));\n}\n\nfunction lengthNode(n) {\n var l = n.l;\n var r = n.r;\n var sizeL = l !== undefined ? lengthNode(l) : 0;\n var sizeR = r !== undefined ? lengthNode(r) : 0;\n return (1 + sizeL | 0) + sizeR | 0;\n}\n\nfunction size(n) {\n if (n !== undefined) {\n return lengthNode(n);\n } else {\n return 0;\n }\n}\n\nfunction toListAux(_n, _accu) {\n while(true) {\n var accu = _accu;\n var n = _n;\n if (n === undefined) {\n return accu;\n }\n var k = n.k;\n var v = n.v;\n var l = n.l;\n var r = n.r;\n _accu = {\n hd: [\n k,\n v\n ],\n tl: toListAux(r, accu)\n };\n _n = l;\n continue ;\n };\n}\n\nfunction toList(s) {\n return toListAux(s, /* [] */0);\n}\n\nfunction checkInvariantInternal(_v) {\n while(true) {\n var v = _v;\n if (v === undefined) {\n return ;\n }\n var l = v.l;\n var r = v.r;\n var diff = treeHeight(l) - treeHeight(r) | 0;\n if (!(diff <= 2 && diff >= -2)) {\n throw {\n RE_EXN_ID: \"Assert_failure\",\n _1: [\n \"belt_internalAVLtree.res\",\n 457,\n 4\n ],\n Error: new Error()\n };\n }\n checkInvariantInternal(l);\n _v = r;\n continue ;\n };\n}\n\nfunction fillArrayKey(_n, _i, arr) {\n while(true) {\n var i = _i;\n var n = _n;\n var v = n.k;\n var l = n.l;\n var r = n.r;\n var next = l !== undefined ? fillArrayKey(l, i, arr) : i;\n arr[next] = v;\n var rnext = next + 1 | 0;\n if (r === undefined) {\n return rnext;\n }\n _i = rnext;\n _n = r;\n continue ;\n };\n}\n\nfunction fillArrayValue(_n, _i, arr) {\n while(true) {\n var i = _i;\n var n = _n;\n var l = n.l;\n var r = n.r;\n var next = l !== undefined ? fillArrayValue(l, i, arr) : i;\n arr[next] = n.v;\n var rnext = next + 1 | 0;\n if (r === undefined) {\n return rnext;\n }\n _i = rnext;\n _n = r;\n continue ;\n };\n}\n\nfunction fillArray(_n, _i, arr) {\n while(true) {\n var i = _i;\n var n = _n;\n var l = n.l;\n var v = n.k;\n var r = n.r;\n var next = l !== undefined ? fillArray(l, i, arr) : i;\n arr[next] = [\n v,\n n.v\n ];\n var rnext = next + 1 | 0;\n if (r === undefined) {\n return rnext;\n }\n _i = rnext;\n _n = r;\n continue ;\n };\n}\n\nfunction toArray(n) {\n if (n === undefined) {\n return [];\n }\n var size = lengthNode(n);\n var v = new Array(size);\n fillArray(n, 0, v);\n return v;\n}\n\nfunction keysToArray(n) {\n if (n === undefined) {\n return [];\n }\n var size = lengthNode(n);\n var v = new Array(size);\n fillArrayKey(n, 0, v);\n return v;\n}\n\nfunction valuesToArray(n) {\n if (n === undefined) {\n return [];\n }\n var size = lengthNode(n);\n var v = new Array(size);\n fillArrayValue(n, 0, v);\n return v;\n}\n\nfunction fromSortedArrayRevAux(arr, off, len) {\n switch (len) {\n case 0 :\n return ;\n case 1 :\n var match = arr[off];\n return singleton(match[0], match[1]);\n case 2 :\n var match_0 = arr[off];\n var match_1 = arr[off - 1 | 0];\n var match$1 = match_1;\n var match$2 = match_0;\n return {\n k: match$1[0],\n v: match$1[1],\n h: 2,\n l: singleton(match$2[0], match$2[1]),\n r: undefined\n };\n case 3 :\n var match_0$1 = arr[off];\n var match_1$1 = arr[off - 1 | 0];\n var match_2 = arr[off - 2 | 0];\n var match$3 = match_2;\n var match$4 = match_1$1;\n var match$5 = match_0$1;\n return {\n k: match$4[0],\n v: match$4[1],\n h: 2,\n l: singleton(match$5[0], match$5[1]),\n r: singleton(match$3[0], match$3[1])\n };\n default:\n var nl = len / 2 | 0;\n var left = fromSortedArrayRevAux(arr, off, nl);\n var match$6 = arr[off - nl | 0];\n var right = fromSortedArrayRevAux(arr, (off - nl | 0) - 1 | 0, (len - nl | 0) - 1 | 0);\n return create(left, match$6[0], match$6[1], right);\n }\n}\n\nfunction fromSortedArrayAux(arr, off, len) {\n switch (len) {\n case 0 :\n return ;\n case 1 :\n var match = arr[off];\n return singleton(match[0], match[1]);\n case 2 :\n var match_0 = arr[off];\n var match_1 = arr[off + 1 | 0];\n var match$1 = match_1;\n var match$2 = match_0;\n return {\n k: match$1[0],\n v: match$1[1],\n h: 2,\n l: singleton(match$2[0], match$2[1]),\n r: undefined\n };\n case 3 :\n var match_0$1 = arr[off];\n var match_1$1 = arr[off + 1 | 0];\n var match_2 = arr[off + 2 | 0];\n var match$3 = match_2;\n var match$4 = match_1$1;\n var match$5 = match_0$1;\n return {\n k: match$4[0],\n v: match$4[1],\n h: 2,\n l: singleton(match$5[0], match$5[1]),\n r: singleton(match$3[0], match$3[1])\n };\n default:\n var nl = len / 2 | 0;\n var left = fromSortedArrayAux(arr, off, nl);\n var match$6 = arr[off + nl | 0];\n var right = fromSortedArrayAux(arr, (off + nl | 0) + 1 | 0, (len - nl | 0) - 1 | 0);\n return create(left, match$6[0], match$6[1], right);\n }\n}\n\nfunction fromSortedArrayUnsafe(arr) {\n return fromSortedArrayAux(arr, 0, arr.length);\n}\n\nfunction cmpU(s1, s2, kcmp, vcmp) {\n var len1 = size(s1);\n var len2 = size(s2);\n if (len1 === len2) {\n var _e1 = stackAllLeft(s1, /* [] */0);\n var _e2 = stackAllLeft(s2, /* [] */0);\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return 0;\n }\n if (!e2) {\n return 0;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n var c = kcmp(h1.k, h2.k);\n if (c !== 0) {\n return c;\n }\n var cx = vcmp(h1.v, h2.v);\n if (cx !== 0) {\n return cx;\n }\n _e2 = stackAllLeft(h2.r, e2.tl);\n _e1 = stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n } else if (len1 < len2) {\n return -1;\n } else {\n return 1;\n }\n}\n\nfunction cmp(s1, s2, kcmp, vcmp) {\n return cmpU(s1, s2, kcmp, Curry.__2(vcmp));\n}\n\nfunction eqU(s1, s2, kcmp, veq) {\n var len1 = size(s1);\n var len2 = size(s2);\n if (len1 === len2) {\n var _e1 = stackAllLeft(s1, /* [] */0);\n var _e2 = stackAllLeft(s2, /* [] */0);\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return true;\n }\n if (!e2) {\n return true;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n if (!(kcmp(h1.k, h2.k) === 0 && veq(h1.v, h2.v))) {\n return false;\n }\n _e2 = stackAllLeft(h2.r, e2.tl);\n _e1 = stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n } else {\n return false;\n }\n}\n\nfunction eq(s1, s2, kcmp, veq) {\n return eqU(s1, s2, kcmp, Curry.__2(veq));\n}\n\nfunction get(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return Caml_option.some(n.v);\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getUndefined(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return n.v;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getExn(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n !== undefined) {\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return n.v;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n }\n throw {\n RE_EXN_ID: \"Not_found\",\n Error: new Error()\n };\n };\n}\n\nfunction getWithDefault(_n, x, def, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return def;\n }\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return n.v;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction has(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return false;\n }\n var v = n.k;\n var c = cmp(x, v);\n if (c === 0) {\n return true;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction rotateWithLeftChild(k2) {\n var k1 = k2.l;\n k2.l = k1.r;\n k1.r = k2;\n var hlk2 = treeHeight(k2.l);\n var hrk2 = treeHeight(k2.r);\n k2.h = (\n hlk2 > hrk2 ? hlk2 : hrk2\n ) + 1 | 0;\n var hlk1 = treeHeight(k1.l);\n var hk2 = k2.h;\n k1.h = (\n hlk1 > hk2 ? hlk1 : hk2\n ) + 1 | 0;\n return k1;\n}\n\nfunction rotateWithRightChild(k1) {\n var k2 = k1.r;\n k1.r = k2.l;\n k2.l = k1;\n var hlk1 = treeHeight(k1.l);\n var hrk1 = treeHeight(k1.r);\n k1.h = (\n hlk1 > hrk1 ? hlk1 : hrk1\n ) + 1 | 0;\n var hrk2 = treeHeight(k2.r);\n var hk1 = k1.h;\n k2.h = (\n hrk2 > hk1 ? hrk2 : hk1\n ) + 1 | 0;\n return k2;\n}\n\nfunction doubleWithLeftChild(k3) {\n var x = k3.l;\n var v = rotateWithRightChild(x);\n k3.l = v;\n return rotateWithLeftChild(k3);\n}\n\nfunction doubleWithRightChild(k2) {\n var x = k2.r;\n var v = rotateWithLeftChild(x);\n k2.r = v;\n return rotateWithRightChild(k2);\n}\n\nfunction heightUpdateMutate(t) {\n var hlt = treeHeight(t.l);\n var hrt = treeHeight(t.r);\n t.h = (\n hlt > hrt ? hlt : hrt\n ) + 1 | 0;\n return t;\n}\n\nfunction balMutate(nt) {\n var l = nt.l;\n var r = nt.r;\n var hl = treeHeight(l);\n var hr = treeHeight(r);\n if (hl > (2 + hr | 0)) {\n var ll = l.l;\n var lr = l.r;\n if (heightGe(ll, lr)) {\n return heightUpdateMutate(rotateWithLeftChild(nt));\n } else {\n return heightUpdateMutate(doubleWithLeftChild(nt));\n }\n }\n if (hr > (2 + hl | 0)) {\n var rl = r.l;\n var rr = r.r;\n if (heightGe(rr, rl)) {\n return heightUpdateMutate(rotateWithRightChild(nt));\n } else {\n return heightUpdateMutate(doubleWithRightChild(nt));\n }\n }\n nt.h = (\n hl > hr ? hl : hr\n ) + 1 | 0;\n return nt;\n}\n\nfunction updateMutate(t, x, data, cmp) {\n if (t === undefined) {\n return singleton(x, data);\n }\n var k = t.k;\n var c = cmp(x, k);\n if (c === 0) {\n t.v = data;\n return t;\n }\n var l = t.l;\n var r = t.r;\n if (c < 0) {\n var ll = updateMutate(l, x, data, cmp);\n t.l = ll;\n } else {\n t.r = updateMutate(r, x, data, cmp);\n }\n return balMutate(t);\n}\n\nfunction fromArray(xs, cmp) {\n var len = xs.length;\n if (len === 0) {\n return ;\n }\n var next = Belt_SortArray.strictlySortedLengthU(xs, (function (param, param$1) {\n return cmp(param[0], param$1[0]) < 0;\n }));\n var result;\n if (next >= 0) {\n result = fromSortedArrayAux(xs, 0, next);\n } else {\n next = -next | 0;\n result = fromSortedArrayRevAux(xs, next - 1 | 0, next);\n }\n for(var i = next; i < len; ++i){\n var match = xs[i];\n result = updateMutate(result, match[0], match[1], cmp);\n }\n return result;\n}\n\nfunction removeMinAuxWithRootMutate(nt, n) {\n var rn = n.r;\n var ln = n.l;\n if (ln !== undefined) {\n n.l = removeMinAuxWithRootMutate(nt, ln);\n return balMutate(n);\n } else {\n nt.k = n.k;\n nt.v = n.v;\n return rn;\n }\n}\n\nexport {\n copy ,\n create ,\n bal ,\n singleton ,\n updateValue ,\n minKey ,\n minKeyUndefined ,\n maxKey ,\n maxKeyUndefined ,\n minimum ,\n minUndefined ,\n maximum ,\n maxUndefined ,\n removeMinAuxWithRef ,\n isEmpty ,\n stackAllLeft ,\n findFirstByU ,\n findFirstBy ,\n forEachU ,\n forEach ,\n mapU ,\n map ,\n mapWithKeyU ,\n mapWithKey ,\n reduceU ,\n reduce ,\n everyU ,\n every ,\n someU ,\n some ,\n join ,\n concat ,\n concatOrJoin ,\n keepSharedU ,\n keepShared ,\n keepMapU ,\n keepMap ,\n partitionSharedU ,\n partitionShared ,\n lengthNode ,\n size ,\n toList ,\n checkInvariantInternal ,\n fillArray ,\n toArray ,\n keysToArray ,\n valuesToArray ,\n fromSortedArrayAux ,\n fromSortedArrayRevAux ,\n fromSortedArrayUnsafe ,\n cmpU ,\n cmp ,\n eqU ,\n eq ,\n get ,\n getUndefined ,\n getWithDefault ,\n getExn ,\n has ,\n fromArray ,\n updateMutate ,\n balMutate ,\n removeMinAuxWithRootMutate ,\n}\n/* No side effect */\n","\n\nimport * as Caml from \"./caml.js\";\nimport * as Curry from \"./curry.js\";\nimport * as Caml_option from \"./caml_option.js\";\nimport * as Belt_SortArray from \"./belt_SortArray.js\";\nimport * as Belt_internalAVLtree from \"./belt_internalAVLtree.js\";\n\nfunction add(t, x, data) {\n if (t === undefined) {\n return Belt_internalAVLtree.singleton(x, data);\n }\n var k = t.k;\n if (x === k) {\n return Belt_internalAVLtree.updateValue(t, data);\n }\n var v = t.v;\n if (x < k) {\n return Belt_internalAVLtree.bal(add(t.l, x, data), k, v, t.r);\n } else {\n return Belt_internalAVLtree.bal(t.l, k, v, add(t.r, x, data));\n }\n}\n\nfunction get(_n, x) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n if (x === v) {\n return Caml_option.some(n.v);\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getUndefined(_n, x) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.k;\n if (x === v) {\n return n.v;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getExn(_n, x) {\n while(true) {\n var n = _n;\n if (n !== undefined) {\n var v = n.k;\n if (x === v) {\n return n.v;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n }\n throw {\n RE_EXN_ID: \"Not_found\",\n Error: new Error()\n };\n };\n}\n\nfunction getWithDefault(_n, x, def) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return def;\n }\n var v = n.k;\n if (x === v) {\n return n.v;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction has(_n, x) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return false;\n }\n var v = n.k;\n if (x === v) {\n return true;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction remove(n, x) {\n if (n === undefined) {\n return n;\n }\n var v = n.k;\n var l = n.l;\n var r = n.r;\n if (x !== v) {\n if (x < v) {\n return Belt_internalAVLtree.bal(remove(l, x), v, n.v, r);\n } else {\n return Belt_internalAVLtree.bal(l, v, n.v, remove(r, x));\n }\n }\n if (l === undefined) {\n return r;\n }\n if (r === undefined) {\n return l;\n }\n var kr = {\n contents: r.k\n };\n var vr = {\n contents: r.v\n };\n var r$1 = Belt_internalAVLtree.removeMinAuxWithRef(r, kr, vr);\n return Belt_internalAVLtree.bal(l, kr.contents, vr.contents, r$1);\n}\n\nfunction splitAux(x, n) {\n var v = n.k;\n var d = n.v;\n var l = n.l;\n var r = n.r;\n if (x === v) {\n return [\n l,\n Caml_option.some(d),\n r\n ];\n }\n if (x < v) {\n if (l === undefined) {\n return [\n undefined,\n undefined,\n n\n ];\n }\n var match = splitAux(x, l);\n return [\n match[0],\n match[1],\n Belt_internalAVLtree.join(match[2], v, d, r)\n ];\n }\n if (r === undefined) {\n return [\n n,\n undefined,\n undefined\n ];\n }\n var match$1 = splitAux(x, r);\n return [\n Belt_internalAVLtree.join(l, v, d, match$1[0]),\n match$1[1],\n match$1[2]\n ];\n}\n\nfunction split(x, n) {\n if (n !== undefined) {\n return splitAux(x, n);\n } else {\n return [\n undefined,\n undefined,\n undefined\n ];\n }\n}\n\nfunction mergeU(s1, s2, f) {\n if (s1 !== undefined) {\n if (s1.h >= (\n s2 !== undefined ? s2.h : 0\n )) {\n var v1 = s1.k;\n var d1 = s1.v;\n var l1 = s1.l;\n var r1 = s1.r;\n var match = split(v1, s2);\n return Belt_internalAVLtree.concatOrJoin(mergeU(l1, match[0], f), v1, f(v1, Caml_option.some(d1), match[1]), mergeU(r1, match[2], f));\n }\n \n } else if (s2 === undefined) {\n return ;\n }\n var v2 = s2.k;\n var d2 = s2.v;\n var l2 = s2.l;\n var r2 = s2.r;\n var match$1 = split(v2, s1);\n return Belt_internalAVLtree.concatOrJoin(mergeU(match$1[0], l2, f), v2, f(v2, match$1[1], Caml_option.some(d2)), mergeU(match$1[2], r2, f));\n}\n\nfunction merge(s1, s2, f) {\n return mergeU(s1, s2, Curry.__3(f));\n}\n\nfunction compareAux(_e1, _e2, vcmp) {\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return 0;\n }\n if (!e2) {\n return 0;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n var c = Caml.int_compare(h1.k, h2.k);\n if (c !== 0) {\n return c;\n }\n var cx = vcmp(h1.v, h2.v);\n if (cx !== 0) {\n return cx;\n }\n _e2 = Belt_internalAVLtree.stackAllLeft(h2.r, e2.tl);\n _e1 = Belt_internalAVLtree.stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n}\n\nfunction cmpU(s1, s2, cmp) {\n var len1 = Belt_internalAVLtree.size(s1);\n var len2 = Belt_internalAVLtree.size(s2);\n if (len1 === len2) {\n return compareAux(Belt_internalAVLtree.stackAllLeft(s1, /* [] */0), Belt_internalAVLtree.stackAllLeft(s2, /* [] */0), cmp);\n } else if (len1 < len2) {\n return -1;\n } else {\n return 1;\n }\n}\n\nfunction cmp(s1, s2, f) {\n return cmpU(s1, s2, Curry.__2(f));\n}\n\nfunction eqAux(_e1, _e2, eq) {\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return true;\n }\n if (!e2) {\n return true;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n if (!(h1.k === h2.k && eq(h1.v, h2.v))) {\n return false;\n }\n _e2 = Belt_internalAVLtree.stackAllLeft(h2.r, e2.tl);\n _e1 = Belt_internalAVLtree.stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n}\n\nfunction eqU(s1, s2, eq) {\n var len1 = Belt_internalAVLtree.size(s1);\n var len2 = Belt_internalAVLtree.size(s2);\n if (len1 === len2) {\n return eqAux(Belt_internalAVLtree.stackAllLeft(s1, /* [] */0), Belt_internalAVLtree.stackAllLeft(s2, /* [] */0), eq);\n } else {\n return false;\n }\n}\n\nfunction eq(s1, s2, f) {\n return eqU(s1, s2, Curry.__2(f));\n}\n\nfunction addMutate(t, x, data) {\n if (t === undefined) {\n return Belt_internalAVLtree.singleton(x, data);\n }\n var k = t.k;\n if (x === k) {\n t.k = x;\n t.v = data;\n return t;\n }\n var l = t.l;\n var r = t.r;\n if (x < k) {\n var ll = addMutate(l, x, data);\n t.l = ll;\n } else {\n t.r = addMutate(r, x, data);\n }\n return Belt_internalAVLtree.balMutate(t);\n}\n\nfunction fromArray(xs) {\n var len = xs.length;\n if (len === 0) {\n return ;\n }\n var next = Belt_SortArray.strictlySortedLengthU(xs, (function (param, param$1) {\n return param[0] < param$1[0];\n }));\n var result;\n if (next >= 0) {\n result = Belt_internalAVLtree.fromSortedArrayAux(xs, 0, next);\n } else {\n next = -next | 0;\n result = Belt_internalAVLtree.fromSortedArrayRevAux(xs, next - 1 | 0, next);\n }\n for(var i = next; i < len; ++i){\n var match = xs[i];\n result = addMutate(result, match[0], match[1]);\n }\n return result;\n}\n\nvar N;\n\nvar A;\n\nvar S;\n\nexport {\n N ,\n A ,\n S ,\n add ,\n get ,\n getUndefined ,\n getExn ,\n getWithDefault ,\n has ,\n remove ,\n splitAux ,\n split ,\n mergeU ,\n merge ,\n compareAux ,\n cmpU ,\n cmp ,\n eqAux ,\n eqU ,\n eq ,\n addMutate ,\n fromArray ,\n}\n/* No side effect */\n","\n\nimport * as Curry from \"./curry.js\";\nimport * as Caml_option from \"./caml_option.js\";\nimport * as Belt_internalMapInt from \"./belt_internalMapInt.js\";\nimport * as Belt_internalAVLtree from \"./belt_internalAVLtree.js\";\n\nfunction set(t, newK, newD) {\n if (t === undefined) {\n return Belt_internalAVLtree.singleton(newK, newD);\n }\n var k = t.k;\n if (newK === k) {\n return Belt_internalAVLtree.updateValue(t, newD);\n }\n var v = t.v;\n if (newK < k) {\n return Belt_internalAVLtree.bal(set(t.l, newK, newD), k, v, t.r);\n } else {\n return Belt_internalAVLtree.bal(t.l, k, v, set(t.r, newK, newD));\n }\n}\n\nfunction updateU(t, x, f) {\n if (t !== undefined) {\n var k = t.k;\n if (x === k) {\n var data = f(Caml_option.some(t.v));\n if (data !== undefined) {\n return Belt_internalAVLtree.updateValue(t, Caml_option.valFromOption(data));\n }\n var l = t.l;\n var r = t.r;\n if (l === undefined) {\n return r;\n }\n if (r === undefined) {\n return l;\n }\n var kr = {\n contents: r.k\n };\n var vr = {\n contents: r.v\n };\n var r$1 = Belt_internalAVLtree.removeMinAuxWithRef(r, kr, vr);\n return Belt_internalAVLtree.bal(l, kr.contents, vr.contents, r$1);\n }\n var v = t.v;\n var l$1 = t.l;\n var r$2 = t.r;\n if (x < k) {\n var ll = updateU(l$1, x, f);\n if (l$1 === ll) {\n return t;\n } else {\n return Belt_internalAVLtree.bal(ll, k, v, r$2);\n }\n }\n var rr = updateU(r$2, x, f);\n if (r$2 === rr) {\n return t;\n } else {\n return Belt_internalAVLtree.bal(l$1, k, v, rr);\n }\n }\n var data$1 = f(undefined);\n if (data$1 !== undefined) {\n return Belt_internalAVLtree.singleton(x, Caml_option.valFromOption(data$1));\n } else {\n return t;\n }\n}\n\nfunction update(t, x, f) {\n return updateU(t, x, Curry.__1(f));\n}\n\nfunction removeAux(n, x) {\n var v = n.k;\n var l = n.l;\n var r = n.r;\n if (x === v) {\n if (l === undefined) {\n return r;\n }\n if (r === undefined) {\n return l;\n }\n var kr = {\n contents: r.k\n };\n var vr = {\n contents: r.v\n };\n var r$1 = Belt_internalAVLtree.removeMinAuxWithRef(r, kr, vr);\n return Belt_internalAVLtree.bal(l, kr.contents, vr.contents, r$1);\n }\n if (x < v) {\n if (l === undefined) {\n return n;\n }\n var ll = removeAux(l, x);\n if (ll === l) {\n return n;\n } else {\n return Belt_internalAVLtree.bal(ll, v, n.v, r);\n }\n }\n if (r === undefined) {\n return n;\n }\n var rr = removeAux(r, x);\n return Belt_internalAVLtree.bal(l, v, n.v, rr);\n}\n\nfunction remove(n, x) {\n if (n !== undefined) {\n return removeAux(n, x);\n }\n \n}\n\nfunction removeMany(t, keys) {\n var len = keys.length;\n if (t !== undefined) {\n var _t = t;\n var _i = 0;\n while(true) {\n var i = _i;\n var t$1 = _t;\n if (i >= len) {\n return t$1;\n }\n var ele = keys[i];\n var u = removeAux(t$1, ele);\n if (u === undefined) {\n return u;\n }\n _i = i + 1 | 0;\n _t = u;\n continue ;\n };\n }\n \n}\n\nfunction mergeMany(h, arr) {\n var len = arr.length;\n var v = h;\n for(var i = 0; i < len; ++i){\n var match = arr[i];\n v = set(v, match[0], match[1]);\n }\n return v;\n}\n\nvar empty;\n\nvar isEmpty = Belt_internalAVLtree.isEmpty;\n\nvar has = Belt_internalMapInt.has;\n\nvar cmpU = Belt_internalMapInt.cmpU;\n\nvar cmp = Belt_internalMapInt.cmp;\n\nvar eqU = Belt_internalMapInt.eqU;\n\nvar eq = Belt_internalMapInt.eq;\n\nvar findFirstByU = Belt_internalAVLtree.findFirstByU;\n\nvar findFirstBy = Belt_internalAVLtree.findFirstBy;\n\nvar forEachU = Belt_internalAVLtree.forEachU;\n\nvar forEach = Belt_internalAVLtree.forEach;\n\nvar reduceU = Belt_internalAVLtree.reduceU;\n\nvar reduce = Belt_internalAVLtree.reduce;\n\nvar everyU = Belt_internalAVLtree.everyU;\n\nvar every = Belt_internalAVLtree.every;\n\nvar someU = Belt_internalAVLtree.someU;\n\nvar some = Belt_internalAVLtree.some;\n\nvar size = Belt_internalAVLtree.size;\n\nvar toList = Belt_internalAVLtree.toList;\n\nvar toArray = Belt_internalAVLtree.toArray;\n\nvar fromArray = Belt_internalMapInt.fromArray;\n\nvar keysToArray = Belt_internalAVLtree.keysToArray;\n\nvar valuesToArray = Belt_internalAVLtree.valuesToArray;\n\nvar minKey = Belt_internalAVLtree.minKey;\n\nvar minKeyUndefined = Belt_internalAVLtree.minKeyUndefined;\n\nvar maxKey = Belt_internalAVLtree.maxKey;\n\nvar maxKeyUndefined = Belt_internalAVLtree.maxKeyUndefined;\n\nvar minimum = Belt_internalAVLtree.minimum;\n\nvar minUndefined = Belt_internalAVLtree.minUndefined;\n\nvar maximum = Belt_internalAVLtree.maximum;\n\nvar maxUndefined = Belt_internalAVLtree.maxUndefined;\n\nvar get = Belt_internalMapInt.get;\n\nvar getUndefined = Belt_internalMapInt.getUndefined;\n\nvar getWithDefault = Belt_internalMapInt.getWithDefault;\n\nvar getExn = Belt_internalMapInt.getExn;\n\nvar checkInvariantInternal = Belt_internalAVLtree.checkInvariantInternal;\n\nvar mergeU = Belt_internalMapInt.mergeU;\n\nvar merge = Belt_internalMapInt.merge;\n\nvar keepU = Belt_internalAVLtree.keepSharedU;\n\nvar keep = Belt_internalAVLtree.keepShared;\n\nvar partitionU = Belt_internalAVLtree.partitionSharedU;\n\nvar partition = Belt_internalAVLtree.partitionShared;\n\nvar split = Belt_internalMapInt.split;\n\nvar mapU = Belt_internalAVLtree.mapU;\n\nvar map = Belt_internalAVLtree.map;\n\nvar mapWithKeyU = Belt_internalAVLtree.mapWithKeyU;\n\nvar mapWithKey = Belt_internalAVLtree.mapWithKey;\n\nexport {\n empty ,\n isEmpty ,\n has ,\n cmpU ,\n cmp ,\n eqU ,\n eq ,\n findFirstByU ,\n findFirstBy ,\n forEachU ,\n forEach ,\n reduceU ,\n reduce ,\n everyU ,\n every ,\n someU ,\n some ,\n size ,\n toList ,\n toArray ,\n fromArray ,\n keysToArray ,\n valuesToArray ,\n minKey ,\n minKeyUndefined ,\n maxKey ,\n maxKeyUndefined ,\n minimum ,\n minUndefined ,\n maximum ,\n maxUndefined ,\n get ,\n getUndefined ,\n getWithDefault ,\n getExn ,\n checkInvariantInternal ,\n remove ,\n removeMany ,\n set ,\n updateU ,\n update ,\n mergeU ,\n merge ,\n mergeMany ,\n keepU ,\n keep ,\n partitionU ,\n partition ,\n split ,\n mapU ,\n map ,\n mapWithKeyU ,\n mapWithKey ,\n}\n/* No side effect */\n","\n\nimport * as Curry from \"./curry.js\";\nimport * as Caml_option from \"./caml_option.js\";\n\nfunction keepU(opt, p) {\n if (opt !== undefined && p(Caml_option.valFromOption(opt))) {\n return opt;\n }\n \n}\n\nfunction keep(opt, p) {\n return keepU(opt, Curry.__1(p));\n}\n\nfunction forEachU(opt, f) {\n if (opt !== undefined) {\n return f(Caml_option.valFromOption(opt));\n }\n \n}\n\nfunction forEach(opt, f) {\n forEachU(opt, Curry.__1(f));\n}\n\nfunction getExn(x) {\n if (x !== undefined) {\n return Caml_option.valFromOption(x);\n }\n throw {\n RE_EXN_ID: \"Not_found\",\n Error: new Error()\n };\n}\n\nfunction mapWithDefaultU(opt, $$default, f) {\n if (opt !== undefined) {\n return f(Caml_option.valFromOption(opt));\n } else {\n return $$default;\n }\n}\n\nfunction mapWithDefault(opt, $$default, f) {\n return mapWithDefaultU(opt, $$default, Curry.__1(f));\n}\n\nfunction mapU(opt, f) {\n if (opt !== undefined) {\n return Caml_option.some(f(Caml_option.valFromOption(opt)));\n }\n \n}\n\nfunction map(opt, f) {\n return mapU(opt, Curry.__1(f));\n}\n\nfunction flatMapU(opt, f) {\n if (opt !== undefined) {\n return f(Caml_option.valFromOption(opt));\n }\n \n}\n\nfunction flatMap(opt, f) {\n return flatMapU(opt, Curry.__1(f));\n}\n\nfunction getWithDefault(opt, $$default) {\n if (opt !== undefined) {\n return Caml_option.valFromOption(opt);\n } else {\n return $$default;\n }\n}\n\nfunction orElse(opt, other) {\n if (opt !== undefined) {\n return opt;\n } else {\n return other;\n }\n}\n\nfunction isSome(x) {\n return x !== undefined;\n}\n\nfunction isNone(x) {\n return x === undefined;\n}\n\nfunction eqU(a, b, f) {\n if (a !== undefined) {\n if (b !== undefined) {\n return f(Caml_option.valFromOption(a), Caml_option.valFromOption(b));\n } else {\n return false;\n }\n } else {\n return b === undefined;\n }\n}\n\nfunction eq(a, b, f) {\n return eqU(a, b, Curry.__2(f));\n}\n\nfunction cmpU(a, b, f) {\n if (a !== undefined) {\n if (b !== undefined) {\n return f(Caml_option.valFromOption(a), Caml_option.valFromOption(b));\n } else {\n return 1;\n }\n } else if (b !== undefined) {\n return -1;\n } else {\n return 0;\n }\n}\n\nfunction cmp(a, b, f) {\n return cmpU(a, b, Curry.__2(f));\n}\n\nexport {\n keepU ,\n keep ,\n forEachU ,\n forEach ,\n getExn ,\n mapWithDefaultU ,\n mapWithDefault ,\n mapU ,\n map ,\n flatMapU ,\n flatMap ,\n getWithDefault ,\n orElse ,\n isSome ,\n isNone ,\n eqU ,\n eq ,\n cmpU ,\n cmp ,\n}\n/* No side effect */\n","\n\nimport * as Curry from \"./curry.js\";\nimport * as Caml_option from \"./caml_option.js\";\nimport * as Belt_SortArray from \"./belt_SortArray.js\";\n\nfunction copy(n) {\n if (n !== undefined) {\n return {\n v: n.v,\n h: n.h,\n l: copy(n.l),\n r: copy(n.r)\n };\n } else {\n return n;\n }\n}\n\nfunction create(l, v, r) {\n var hl = l !== undefined ? l.h : 0;\n var hr = r !== undefined ? r.h : 0;\n return {\n v: v,\n h: (\n hl >= hr ? hl : hr\n ) + 1 | 0,\n l: l,\n r: r\n };\n}\n\nfunction singleton(x) {\n return {\n v: x,\n h: 1,\n l: undefined,\n r: undefined\n };\n}\n\nfunction heightGe(l, r) {\n if (r !== undefined) {\n if (l !== undefined) {\n return l.h >= r.h;\n } else {\n return false;\n }\n } else {\n return true;\n }\n}\n\nfunction bal(l, v, r) {\n var hl = l !== undefined ? l.h : 0;\n var hr = r !== undefined ? r.h : 0;\n if (hl > (hr + 2 | 0)) {\n var ll = l.l;\n var lr = l.r;\n if (heightGe(ll, lr)) {\n return create(ll, l.v, create(lr, v, r));\n } else {\n return create(create(ll, l.v, lr.l), lr.v, create(lr.r, v, r));\n }\n }\n if (hr <= (hl + 2 | 0)) {\n return {\n v: v,\n h: (\n hl >= hr ? hl : hr\n ) + 1 | 0,\n l: l,\n r: r\n };\n }\n var rl = r.l;\n var rr = r.r;\n if (heightGe(rr, rl)) {\n return create(create(l, v, rl), r.v, rr);\n } else {\n return create(create(l, v, rl.l), rl.v, create(rl.r, r.v, rr));\n }\n}\n\nfunction min0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.l;\n if (n$1 === undefined) {\n return n.v;\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction minimum(n) {\n if (n !== undefined) {\n return Caml_option.some(min0Aux(n));\n }\n \n}\n\nfunction minUndefined(n) {\n if (n !== undefined) {\n return min0Aux(n);\n }\n \n}\n\nfunction max0Aux(_n) {\n while(true) {\n var n = _n;\n var n$1 = n.r;\n if (n$1 === undefined) {\n return n.v;\n }\n _n = n$1;\n continue ;\n };\n}\n\nfunction maximum(n) {\n if (n !== undefined) {\n return Caml_option.some(max0Aux(n));\n }\n \n}\n\nfunction maxUndefined(n) {\n if (n !== undefined) {\n return max0Aux(n);\n }\n \n}\n\nfunction removeMinAuxWithRef(n, v) {\n var ln = n.l;\n if (ln !== undefined) {\n return bal(removeMinAuxWithRef(ln, v), n.v, n.r);\n } else {\n v.contents = n.v;\n return n.r;\n }\n}\n\nfunction isEmpty(n) {\n return n === undefined;\n}\n\nfunction stackAllLeft(_v, _s) {\n while(true) {\n var s = _s;\n var v = _v;\n if (v === undefined) {\n return s;\n }\n _s = {\n hd: v,\n tl: s\n };\n _v = v.l;\n continue ;\n };\n}\n\nfunction forEachU(_n, f) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n forEachU(n.l, f);\n f(n.v);\n _n = n.r;\n continue ;\n };\n}\n\nfunction forEach(n, f) {\n forEachU(n, Curry.__1(f));\n}\n\nfunction reduceU(_s, _accu, f) {\n while(true) {\n var accu = _accu;\n var s = _s;\n if (s === undefined) {\n return accu;\n }\n _accu = f(reduceU(s.l, accu, f), s.v);\n _s = s.r;\n continue ;\n };\n}\n\nfunction reduce(s, accu, f) {\n return reduceU(s, accu, Curry.__2(f));\n}\n\nfunction everyU(_n, p) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return true;\n }\n if (!p(n.v)) {\n return false;\n }\n if (!everyU(n.l, p)) {\n return false;\n }\n _n = n.r;\n continue ;\n };\n}\n\nfunction every(n, p) {\n return everyU(n, Curry.__1(p));\n}\n\nfunction someU(_n, p) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return false;\n }\n if (p(n.v)) {\n return true;\n }\n if (someU(n.l, p)) {\n return true;\n }\n _n = n.r;\n continue ;\n };\n}\n\nfunction some(n, p) {\n return someU(n, Curry.__1(p));\n}\n\nfunction addMinElement(n, v) {\n if (n !== undefined) {\n return bal(addMinElement(n.l, v), n.v, n.r);\n } else {\n return singleton(v);\n }\n}\n\nfunction addMaxElement(n, v) {\n if (n !== undefined) {\n return bal(n.l, n.v, addMaxElement(n.r, v));\n } else {\n return singleton(v);\n }\n}\n\nfunction joinShared(ln, v, rn) {\n if (ln === undefined) {\n return addMinElement(rn, v);\n }\n if (rn === undefined) {\n return addMaxElement(ln, v);\n }\n var lh = ln.h;\n var rh = rn.h;\n if (lh > (rh + 2 | 0)) {\n return bal(ln.l, ln.v, joinShared(ln.r, v, rn));\n } else if (rh > (lh + 2 | 0)) {\n return bal(joinShared(ln, v, rn.l), rn.v, rn.r);\n } else {\n return create(ln, v, rn);\n }\n}\n\nfunction concatShared(t1, t2) {\n if (t1 === undefined) {\n return t2;\n }\n if (t2 === undefined) {\n return t1;\n }\n var v = {\n contents: t2.v\n };\n var t2r = removeMinAuxWithRef(t2, v);\n return joinShared(t1, v.contents, t2r);\n}\n\nfunction partitionSharedU(n, p) {\n if (n === undefined) {\n return [\n undefined,\n undefined\n ];\n }\n var value = n.v;\n var match = partitionSharedU(n.l, p);\n var lf = match[1];\n var lt = match[0];\n var pv = p(value);\n var match$1 = partitionSharedU(n.r, p);\n var rf = match$1[1];\n var rt = match$1[0];\n if (pv) {\n return [\n joinShared(lt, value, rt),\n concatShared(lf, rf)\n ];\n } else {\n return [\n concatShared(lt, rt),\n joinShared(lf, value, rf)\n ];\n }\n}\n\nfunction partitionShared(n, p) {\n return partitionSharedU(n, Curry.__1(p));\n}\n\nfunction lengthNode(n) {\n var l = n.l;\n var r = n.r;\n var sizeL = l !== undefined ? lengthNode(l) : 0;\n var sizeR = r !== undefined ? lengthNode(r) : 0;\n return (1 + sizeL | 0) + sizeR | 0;\n}\n\nfunction size(n) {\n if (n !== undefined) {\n return lengthNode(n);\n } else {\n return 0;\n }\n}\n\nfunction toListAux(_n, _accu) {\n while(true) {\n var accu = _accu;\n var n = _n;\n if (n === undefined) {\n return accu;\n }\n _accu = {\n hd: n.v,\n tl: toListAux(n.r, accu)\n };\n _n = n.l;\n continue ;\n };\n}\n\nfunction toList(s) {\n return toListAux(s, /* [] */0);\n}\n\nfunction checkInvariantInternal(_v) {\n while(true) {\n var v = _v;\n if (v === undefined) {\n return ;\n }\n var l = v.l;\n var r = v.r;\n var diff = (\n l !== undefined ? l.h : 0\n ) - (\n r !== undefined ? r.h : 0\n ) | 0;\n if (!(diff <= 2 && diff >= -2)) {\n throw {\n RE_EXN_ID: \"Assert_failure\",\n _1: [\n \"belt_internalAVLset.res\",\n 319,\n 4\n ],\n Error: new Error()\n };\n }\n checkInvariantInternal(l);\n _v = r;\n continue ;\n };\n}\n\nfunction fillArray(_n, _i, arr) {\n while(true) {\n var i = _i;\n var n = _n;\n var v = n.v;\n var l = n.l;\n var r = n.r;\n var next = l !== undefined ? fillArray(l, i, arr) : i;\n arr[next] = v;\n var rnext = next + 1 | 0;\n if (r === undefined) {\n return rnext;\n }\n _i = rnext;\n _n = r;\n continue ;\n };\n}\n\nfunction fillArrayWithPartition(_n, cursor, arr, p) {\n while(true) {\n var n = _n;\n var v = n.v;\n var l = n.l;\n var r = n.r;\n if (l !== undefined) {\n fillArrayWithPartition(l, cursor, arr, p);\n }\n if (p(v)) {\n var c = cursor.forward;\n arr[c] = v;\n cursor.forward = c + 1 | 0;\n } else {\n var c$1 = cursor.backward;\n arr[c$1] = v;\n cursor.backward = c$1 - 1 | 0;\n }\n if (r === undefined) {\n return ;\n }\n _n = r;\n continue ;\n };\n}\n\nfunction fillArrayWithFilter(_n, _i, arr, p) {\n while(true) {\n var i = _i;\n var n = _n;\n var v = n.v;\n var l = n.l;\n var r = n.r;\n var next = l !== undefined ? fillArrayWithFilter(l, i, arr, p) : i;\n var rnext = p(v) ? (arr[next] = v, next + 1 | 0) : next;\n if (r === undefined) {\n return rnext;\n }\n _i = rnext;\n _n = r;\n continue ;\n };\n}\n\nfunction toArray(n) {\n if (n === undefined) {\n return [];\n }\n var size = lengthNode(n);\n var v = new Array(size);\n fillArray(n, 0, v);\n return v;\n}\n\nfunction fromSortedArrayRevAux(arr, off, len) {\n switch (len) {\n case 0 :\n return ;\n case 1 :\n return singleton(arr[off]);\n case 2 :\n var x0 = arr[off];\n var x1 = arr[off - 1 | 0];\n return {\n v: x1,\n h: 2,\n l: singleton(x0),\n r: undefined\n };\n case 3 :\n var x0$1 = arr[off];\n var x1$1 = arr[off - 1 | 0];\n var x2 = arr[off - 2 | 0];\n return {\n v: x1$1,\n h: 2,\n l: singleton(x0$1),\n r: singleton(x2)\n };\n default:\n var nl = len / 2 | 0;\n var left = fromSortedArrayRevAux(arr, off, nl);\n var mid = arr[off - nl | 0];\n var right = fromSortedArrayRevAux(arr, (off - nl | 0) - 1 | 0, (len - nl | 0) - 1 | 0);\n return create(left, mid, right);\n }\n}\n\nfunction fromSortedArrayAux(arr, off, len) {\n switch (len) {\n case 0 :\n return ;\n case 1 :\n return singleton(arr[off]);\n case 2 :\n var x0 = arr[off];\n var x1 = arr[off + 1 | 0];\n return {\n v: x1,\n h: 2,\n l: singleton(x0),\n r: undefined\n };\n case 3 :\n var x0$1 = arr[off];\n var x1$1 = arr[off + 1 | 0];\n var x2 = arr[off + 2 | 0];\n return {\n v: x1$1,\n h: 2,\n l: singleton(x0$1),\n r: singleton(x2)\n };\n default:\n var nl = len / 2 | 0;\n var left = fromSortedArrayAux(arr, off, nl);\n var mid = arr[off + nl | 0];\n var right = fromSortedArrayAux(arr, (off + nl | 0) + 1 | 0, (len - nl | 0) - 1 | 0);\n return create(left, mid, right);\n }\n}\n\nfunction fromSortedArrayUnsafe(arr) {\n return fromSortedArrayAux(arr, 0, arr.length);\n}\n\nfunction keepSharedU(n, p) {\n if (n === undefined) {\n return ;\n }\n var v = n.v;\n var l = n.l;\n var r = n.r;\n var newL = keepSharedU(l, p);\n var pv = p(v);\n var newR = keepSharedU(r, p);\n if (pv) {\n if (l === newL && r === newR) {\n return n;\n } else {\n return joinShared(newL, v, newR);\n }\n } else {\n return concatShared(newL, newR);\n }\n}\n\nfunction keepShared(n, p) {\n return keepSharedU(n, Curry.__1(p));\n}\n\nfunction keepCopyU(n, p) {\n if (n === undefined) {\n return ;\n }\n var size = lengthNode(n);\n var v = new Array(size);\n var last = fillArrayWithFilter(n, 0, v, p);\n return fromSortedArrayAux(v, 0, last);\n}\n\nfunction keepCopy(n, p) {\n return keepCopyU(n, Curry.__1(p));\n}\n\nfunction partitionCopyU(n, p) {\n if (n === undefined) {\n return [\n undefined,\n undefined\n ];\n }\n var size = lengthNode(n);\n var v = new Array(size);\n var backward = size - 1 | 0;\n var cursor = {\n forward: 0,\n backward: backward\n };\n fillArrayWithPartition(n, cursor, v, p);\n var forwardLen = cursor.forward;\n return [\n fromSortedArrayAux(v, 0, forwardLen),\n fromSortedArrayRevAux(v, backward, size - forwardLen | 0)\n ];\n}\n\nfunction partitionCopy(n, p) {\n return partitionCopyU(n, Curry.__1(p));\n}\n\nfunction has(_t, x, cmp) {\n while(true) {\n var t = _t;\n if (t === undefined) {\n return false;\n }\n var v = t.v;\n var c = cmp(x, v);\n if (c === 0) {\n return true;\n }\n _t = c < 0 ? t.l : t.r;\n continue ;\n };\n}\n\nfunction cmp(s1, s2, cmp$1) {\n var len1 = size(s1);\n var len2 = size(s2);\n if (len1 === len2) {\n var _e1 = stackAllLeft(s1, /* [] */0);\n var _e2 = stackAllLeft(s2, /* [] */0);\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return 0;\n }\n if (!e2) {\n return 0;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n var c = cmp$1(h1.v, h2.v);\n if (c !== 0) {\n return c;\n }\n _e2 = stackAllLeft(h2.r, e2.tl);\n _e1 = stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n } else if (len1 < len2) {\n return -1;\n } else {\n return 1;\n }\n}\n\nfunction eq(s1, s2, c) {\n return cmp(s1, s2, c) === 0;\n}\n\nfunction subset(_s1, _s2, cmp) {\n while(true) {\n var s2 = _s2;\n var s1 = _s1;\n if (s1 === undefined) {\n return true;\n }\n if (s2 === undefined) {\n return false;\n }\n var v1 = s1.v;\n var l1 = s1.l;\n var r1 = s1.r;\n var v2 = s2.v;\n var l2 = s2.l;\n var r2 = s2.r;\n var c = cmp(v1, v2);\n if (c === 0) {\n if (!subset(l1, l2, cmp)) {\n return false;\n }\n _s2 = r2;\n _s1 = r1;\n continue ;\n }\n if (c < 0) {\n if (!subset(create(l1, v1, undefined), l2, cmp)) {\n return false;\n }\n _s1 = r1;\n continue ;\n }\n if (!subset(create(undefined, v1, r1), r2, cmp)) {\n return false;\n }\n _s1 = l1;\n continue ;\n };\n}\n\nfunction get(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.v;\n var c = cmp(x, v);\n if (c === 0) {\n return Caml_option.some(v);\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getUndefined(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.v;\n var c = cmp(x, v);\n if (c === 0) {\n return v;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getExn(_n, x, cmp) {\n while(true) {\n var n = _n;\n if (n !== undefined) {\n var v = n.v;\n var c = cmp(x, v);\n if (c === 0) {\n return v;\n }\n _n = c < 0 ? n.l : n.r;\n continue ;\n }\n throw {\n RE_EXN_ID: \"Not_found\",\n Error: new Error()\n };\n };\n}\n\nfunction rotateWithLeftChild(k2) {\n var k1 = k2.l;\n k2.l = k1.r;\n k1.r = k2;\n var n = k2.l;\n var hlk2 = n !== undefined ? n.h : 0;\n var n$1 = k2.r;\n var hrk2 = n$1 !== undefined ? n$1.h : 0;\n k2.h = (\n hlk2 > hrk2 ? hlk2 : hrk2\n ) + 1 | 0;\n var n$2 = k1.l;\n var hlk1 = n$2 !== undefined ? n$2.h : 0;\n var hk2 = k2.h;\n k1.h = (\n hlk1 > hk2 ? hlk1 : hk2\n ) + 1 | 0;\n return k1;\n}\n\nfunction rotateWithRightChild(k1) {\n var k2 = k1.r;\n k1.r = k2.l;\n k2.l = k1;\n var n = k1.l;\n var hlk1 = n !== undefined ? n.h : 0;\n var n$1 = k1.r;\n var hrk1 = n$1 !== undefined ? n$1.h : 0;\n k1.h = (\n hlk1 > hrk1 ? hlk1 : hrk1\n ) + 1 | 0;\n var n$2 = k2.r;\n var hrk2 = n$2 !== undefined ? n$2.h : 0;\n var hk1 = k1.h;\n k2.h = (\n hrk2 > hk1 ? hrk2 : hk1\n ) + 1 | 0;\n return k2;\n}\n\nfunction doubleWithLeftChild(k3) {\n var k3l = k3.l;\n var v = rotateWithRightChild(k3l);\n k3.l = v;\n return rotateWithLeftChild(k3);\n}\n\nfunction doubleWithRightChild(k2) {\n var k2r = k2.r;\n var v = rotateWithLeftChild(k2r);\n k2.r = v;\n return rotateWithRightChild(k2);\n}\n\nfunction heightUpdateMutate(t) {\n var n = t.l;\n var hlt = n !== undefined ? n.h : 0;\n var n$1 = t.r;\n var hrt = n$1 !== undefined ? n$1.h : 0;\n t.h = (\n hlt > hrt ? hlt : hrt\n ) + 1 | 0;\n return t;\n}\n\nfunction balMutate(nt) {\n var l = nt.l;\n var r = nt.r;\n var hl = l !== undefined ? l.h : 0;\n var hr = r !== undefined ? r.h : 0;\n if (hl > (2 + hr | 0)) {\n var ll = l.l;\n var lr = l.r;\n if (heightGe(ll, lr)) {\n return heightUpdateMutate(rotateWithLeftChild(nt));\n } else {\n return heightUpdateMutate(doubleWithLeftChild(nt));\n }\n }\n if (hr > (2 + hl | 0)) {\n var rl = r.l;\n var rr = r.r;\n if (heightGe(rr, rl)) {\n return heightUpdateMutate(rotateWithRightChild(nt));\n } else {\n return heightUpdateMutate(doubleWithRightChild(nt));\n }\n }\n nt.h = (\n hl > hr ? hl : hr\n ) + 1 | 0;\n return nt;\n}\n\nfunction addMutate(cmp, t, x) {\n if (t === undefined) {\n return singleton(x);\n }\n var k = t.v;\n var c = cmp(x, k);\n if (c === 0) {\n return t;\n }\n var l = t.l;\n var r = t.r;\n if (c < 0) {\n var ll = addMutate(cmp, l, x);\n t.l = ll;\n } else {\n t.r = addMutate(cmp, r, x);\n }\n return balMutate(t);\n}\n\nfunction fromArray(xs, cmp) {\n var len = xs.length;\n if (len === 0) {\n return ;\n }\n var next = Belt_SortArray.strictlySortedLengthU(xs, (function (x, y) {\n return cmp(x, y) < 0;\n }));\n var result;\n if (next >= 0) {\n result = fromSortedArrayAux(xs, 0, next);\n } else {\n next = -next | 0;\n result = fromSortedArrayRevAux(xs, next - 1 | 0, next);\n }\n for(var i = next; i < len; ++i){\n result = addMutate(cmp, result, xs[i]);\n }\n return result;\n}\n\nfunction removeMinAuxWithRootMutate(nt, n) {\n var ln = n.l;\n var rn = n.r;\n if (ln !== undefined) {\n n.l = removeMinAuxWithRootMutate(nt, ln);\n return balMutate(n);\n } else {\n nt.v = n.v;\n return rn;\n }\n}\n\nexport {\n copy ,\n create ,\n bal ,\n singleton ,\n minimum ,\n minUndefined ,\n maximum ,\n maxUndefined ,\n removeMinAuxWithRef ,\n isEmpty ,\n stackAllLeft ,\n forEachU ,\n forEach ,\n reduceU ,\n reduce ,\n everyU ,\n every ,\n someU ,\n some ,\n joinShared ,\n concatShared ,\n keepSharedU ,\n keepShared ,\n keepCopyU ,\n keepCopy ,\n partitionSharedU ,\n partitionShared ,\n partitionCopyU ,\n partitionCopy ,\n lengthNode ,\n size ,\n toList ,\n checkInvariantInternal ,\n fillArray ,\n toArray ,\n fromSortedArrayAux ,\n fromSortedArrayRevAux ,\n fromSortedArrayUnsafe ,\n has ,\n cmp ,\n eq ,\n subset ,\n get ,\n getUndefined ,\n getExn ,\n fromArray ,\n addMutate ,\n balMutate ,\n removeMinAuxWithRootMutate ,\n}\n/* No side effect */\n","\n\nimport * as Belt_SortArrayInt from \"./belt_SortArrayInt.js\";\nimport * as Belt_internalAVLset from \"./belt_internalAVLset.js\";\n\nfunction has(_t, x) {\n while(true) {\n var t = _t;\n if (t === undefined) {\n return false;\n }\n var v = t.v;\n if (x === v) {\n return true;\n }\n _t = x < v ? t.l : t.r;\n continue ;\n };\n}\n\nfunction compareAux(_e1, _e2) {\n while(true) {\n var e2 = _e2;\n var e1 = _e1;\n if (!e1) {\n return 0;\n }\n if (!e2) {\n return 0;\n }\n var h2 = e2.hd;\n var h1 = e1.hd;\n var k1 = h1.v;\n var k2 = h2.v;\n if (k1 !== k2) {\n if (k1 < k2) {\n return -1;\n } else {\n return 1;\n }\n }\n _e2 = Belt_internalAVLset.stackAllLeft(h2.r, e2.tl);\n _e1 = Belt_internalAVLset.stackAllLeft(h1.r, e1.tl);\n continue ;\n };\n}\n\nfunction cmp(s1, s2) {\n var len1 = Belt_internalAVLset.size(s1);\n var len2 = Belt_internalAVLset.size(s2);\n if (len1 === len2) {\n return compareAux(Belt_internalAVLset.stackAllLeft(s1, /* [] */0), Belt_internalAVLset.stackAllLeft(s2, /* [] */0));\n } else if (len1 < len2) {\n return -1;\n } else {\n return 1;\n }\n}\n\nfunction eq(s1, s2) {\n return cmp(s1, s2) === 0;\n}\n\nfunction subset(_s1, _s2) {\n while(true) {\n var s2 = _s2;\n var s1 = _s1;\n if (s1 === undefined) {\n return true;\n }\n if (s2 === undefined) {\n return false;\n }\n var v1 = s1.v;\n var l1 = s1.l;\n var r1 = s1.r;\n var v2 = s2.v;\n var l2 = s2.l;\n var r2 = s2.r;\n if (v1 === v2) {\n if (!subset(l1, l2)) {\n return false;\n }\n _s2 = r2;\n _s1 = r1;\n continue ;\n }\n if (v1 < v2) {\n if (!subset(Belt_internalAVLset.create(l1, v1, undefined), l2)) {\n return false;\n }\n _s1 = r1;\n continue ;\n }\n if (!subset(Belt_internalAVLset.create(undefined, v1, r1), r2)) {\n return false;\n }\n _s1 = l1;\n continue ;\n };\n}\n\nfunction get(_n, x) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.v;\n if (x === v) {\n return v;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getUndefined(_n, x) {\n while(true) {\n var n = _n;\n if (n === undefined) {\n return ;\n }\n var v = n.v;\n if (x === v) {\n return v;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n };\n}\n\nfunction getExn(_n, x) {\n while(true) {\n var n = _n;\n if (n !== undefined) {\n var v = n.v;\n if (x === v) {\n return v;\n }\n _n = x < v ? n.l : n.r;\n continue ;\n }\n throw {\n RE_EXN_ID: \"Not_found\",\n Error: new Error()\n };\n };\n}\n\nfunction addMutate(t, x) {\n if (t === undefined) {\n return Belt_internalAVLset.singleton(x);\n }\n var k = t.v;\n if (x === k) {\n return t;\n }\n var l = t.l;\n var r = t.r;\n if (x < k) {\n t.l = addMutate(l, x);\n } else {\n t.r = addMutate(r, x);\n }\n return Belt_internalAVLset.balMutate(t);\n}\n\nfunction fromArray(xs) {\n var len = xs.length;\n if (len === 0) {\n return ;\n }\n var next = Belt_SortArrayInt.strictlySortedLength(xs);\n var result;\n if (next >= 0) {\n result = Belt_internalAVLset.fromSortedArrayAux(xs, 0, next);\n } else {\n next = -next | 0;\n result = Belt_internalAVLset.fromSortedArrayRevAux(xs, next - 1 | 0, next);\n }\n for(var i = next; i < len; ++i){\n result = addMutate(result, xs[i]);\n }\n return result;\n}\n\nvar S;\n\nvar N;\n\nvar A;\n\nexport {\n S ,\n N ,\n A ,\n has ,\n compareAux ,\n cmp ,\n eq ,\n subset ,\n get ,\n getUndefined ,\n getExn ,\n addMutate ,\n fromArray ,\n}\n/* No side effect */\n","\n\nimport * as Belt_internalAVLset from \"./belt_internalAVLset.js\";\nimport * as Belt_internalSetInt from \"./belt_internalSetInt.js\";\n\nfunction add(t, x) {\n if (t === undefined) {\n return Belt_internalAVLset.singleton(x);\n }\n var v = t.v;\n if (x === v) {\n return t;\n }\n var l = t.l;\n var r = t.r;\n if (x < v) {\n var ll = add(l, x);\n if (ll === l) {\n return t;\n } else {\n return Belt_internalAVLset.bal(ll, v, r);\n }\n }\n var rr = add(r, x);\n if (rr === r) {\n return t;\n } else {\n return Belt_internalAVLset.bal(l, v, rr);\n }\n}\n\nfunction mergeMany(h, arr) {\n var len = arr.length;\n var v = h;\n for(var i = 0; i < len; ++i){\n var key = arr[i];\n v = add(v, key);\n }\n return v;\n}\n\nfunction remove(t, x) {\n if (t === undefined) {\n return t;\n }\n var v = t.v;\n var l = t.l;\n var r = t.r;\n if (x === v) {\n if (l === undefined) {\n return r;\n }\n if (r === undefined) {\n return l;\n }\n var v$1 = {\n contents: r.v\n };\n var r$1 = Belt_internalAVLset.removeMinAuxWithRef(r, v$1);\n return Belt_internalAVLset.bal(l, v$1.contents, r$1);\n }\n if (x < v) {\n var ll = remove(l, x);\n if (ll === l) {\n return t;\n } else {\n return Belt_internalAVLset.bal(ll, v, r);\n }\n }\n var rr = remove(r, x);\n if (rr === r) {\n return t;\n } else {\n return Belt_internalAVLset.bal(l, v, rr);\n }\n}\n\nfunction removeMany(h, arr) {\n var len = arr.length;\n var v = h;\n for(var i = 0; i < len; ++i){\n var key = arr[i];\n v = remove(v, key);\n }\n return v;\n}\n\nfunction splitAuxNoPivot(n, x) {\n var v = n.v;\n var l = n.l;\n var r = n.r;\n if (x === v) {\n return [\n l,\n r\n ];\n }\n if (x < v) {\n if (l === undefined) {\n return [\n undefined,\n n\n ];\n }\n var match = splitAuxNoPivot(l, x);\n return [\n match[0],\n Belt_internalAVLset.joinShared(match[1], v, r)\n ];\n }\n if (r === undefined) {\n return [\n n,\n undefined\n ];\n }\n var match$1 = splitAuxNoPivot(r, x);\n return [\n Belt_internalAVLset.joinShared(l, v, match$1[0]),\n match$1[1]\n ];\n}\n\nfunction splitAuxPivot(n, x, pres) {\n var v = n.v;\n var l = n.l;\n var r = n.r;\n if (x === v) {\n pres.contents = true;\n return [\n l,\n r\n ];\n }\n if (x < v) {\n if (l === undefined) {\n return [\n undefined,\n n\n ];\n }\n var match = splitAuxPivot(l, x, pres);\n return [\n match[0],\n Belt_internalAVLset.joinShared(match[1], v, r)\n ];\n }\n if (r === undefined) {\n return [\n n,\n undefined\n ];\n }\n var match$1 = splitAuxPivot(r, x, pres);\n return [\n Belt_internalAVLset.joinShared(l, v, match$1[0]),\n match$1[1]\n ];\n}\n\nfunction split(t, x) {\n if (t === undefined) {\n return [\n [\n undefined,\n undefined\n ],\n false\n ];\n }\n var pres = {\n contents: false\n };\n var v = splitAuxPivot(t, x, pres);\n return [\n v,\n pres.contents\n ];\n}\n\nfunction union(s1, s2) {\n if (s1 === undefined) {\n return s2;\n }\n if (s2 === undefined) {\n return s1;\n }\n var h1 = s1.h;\n var h2 = s2.h;\n if (h1 >= h2) {\n if (h2 === 1) {\n return add(s1, s2.v);\n }\n var v1 = s1.v;\n var l1 = s1.l;\n var r1 = s1.r;\n var match = splitAuxNoPivot(s2, v1);\n return Belt_internalAVLset.joinShared(union(l1, match[0]), v1, union(r1, match[1]));\n }\n if (h1 === 1) {\n return add(s2, s1.v);\n }\n var v2 = s2.v;\n var l2 = s2.l;\n var r2 = s2.r;\n var match$1 = splitAuxNoPivot(s1, v2);\n return Belt_internalAVLset.joinShared(union(match$1[0], l2), v2, union(match$1[1], r2));\n}\n\nfunction intersect(s1, s2) {\n if (s1 === undefined) {\n return ;\n }\n if (s2 === undefined) {\n return ;\n }\n var v1 = s1.v;\n var l1 = s1.l;\n var r1 = s1.r;\n var pres = {\n contents: false\n };\n var match = splitAuxPivot(s2, v1, pres);\n var ll = intersect(l1, match[0]);\n var rr = intersect(r1, match[1]);\n if (pres.contents) {\n return Belt_internalAVLset.joinShared(ll, v1, rr);\n } else {\n return Belt_internalAVLset.concatShared(ll, rr);\n }\n}\n\nfunction diff(s1, s2) {\n if (s1 === undefined) {\n return s1;\n }\n if (s2 === undefined) {\n return s1;\n }\n var v1 = s1.v;\n var l1 = s1.l;\n var r1 = s1.r;\n var pres = {\n contents: false\n };\n var match = splitAuxPivot(s2, v1, pres);\n var ll = diff(l1, match[0]);\n var rr = diff(r1, match[1]);\n if (pres.contents) {\n return Belt_internalAVLset.concatShared(ll, rr);\n } else {\n return Belt_internalAVLset.joinShared(ll, v1, rr);\n }\n}\n\nvar empty;\n\nvar fromArray = Belt_internalSetInt.fromArray;\n\nvar fromSortedArrayUnsafe = Belt_internalAVLset.fromSortedArrayUnsafe;\n\nvar isEmpty = Belt_internalAVLset.isEmpty;\n\nvar has = Belt_internalSetInt.has;\n\nvar subset = Belt_internalSetInt.subset;\n\nvar cmp = Belt_internalSetInt.cmp;\n\nvar eq = Belt_internalSetInt.eq;\n\nvar forEachU = Belt_internalAVLset.forEachU;\n\nvar forEach = Belt_internalAVLset.forEach;\n\nvar reduceU = Belt_internalAVLset.reduceU;\n\nvar reduce = Belt_internalAVLset.reduce;\n\nvar everyU = Belt_internalAVLset.everyU;\n\nvar every = Belt_internalAVLset.every;\n\nvar someU = Belt_internalAVLset.someU;\n\nvar some = Belt_internalAVLset.some;\n\nvar keepU = Belt_internalAVLset.keepSharedU;\n\nvar keep = Belt_internalAVLset.keepShared;\n\nvar partitionU = Belt_internalAVLset.partitionSharedU;\n\nvar partition = Belt_internalAVLset.partitionShared;\n\nvar size = Belt_internalAVLset.size;\n\nvar toList = Belt_internalAVLset.toList;\n\nvar toArray = Belt_internalAVLset.toArray;\n\nvar minimum = Belt_internalAVLset.minimum;\n\nvar minUndefined = Belt_internalAVLset.minUndefined;\n\nvar maximum = Belt_internalAVLset.maximum;\n\nvar maxUndefined = Belt_internalAVLset.maxUndefined;\n\nvar get = Belt_internalSetInt.get;\n\nvar getUndefined = Belt_internalSetInt.getUndefined;\n\nvar getExn = Belt_internalSetInt.getExn;\n\nvar checkInvariantInternal = Belt_internalAVLset.checkInvariantInternal;\n\nexport {\n empty ,\n fromArray ,\n fromSortedArrayUnsafe ,\n isEmpty ,\n has ,\n add ,\n mergeMany ,\n remove ,\n removeMany ,\n union ,\n intersect ,\n diff ,\n subset ,\n cmp ,\n eq ,\n forEachU ,\n forEach ,\n reduceU ,\n reduce ,\n everyU ,\n every ,\n someU ,\n some ,\n keepU ,\n keep ,\n partitionU ,\n partition ,\n size ,\n toList ,\n toArray ,\n minimum ,\n minUndefined ,\n maximum ,\n maxUndefined ,\n get ,\n getUndefined ,\n getExn ,\n split ,\n checkInvariantInternal ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Caml_obj from \"rescript/lib/es6/caml_obj.js\";\nimport * as Belt_MapInt from \"rescript/lib/es6/belt_MapInt.js\";\nimport * as Belt_Option from \"rescript/lib/es6/belt_Option.js\";\nimport * as Belt_SetInt from \"rescript/lib/es6/belt_SetInt.js\";\nimport * as Caml_option from \"rescript/lib/es6/caml_option.js\";\n\nvar observers = {\n contents: undefined\n};\n\nvar signalObservers = {\n contents: undefined\n};\n\nvar signalPeeks = {\n contents: undefined\n};\n\nvar currentObserverId = {\n contents: undefined\n};\n\nvar pending = {\n contents: undefined\n};\n\nvar batching = {\n contents: false\n};\n\nfunction ensureSignalBucket(sid) {\n var match = Belt_MapInt.get(signalObservers.contents, sid);\n if (match !== undefined) {\n return ;\n } else {\n signalObservers.contents = Belt_MapInt.set(signalObservers.contents, sid, undefined);\n return ;\n }\n}\n\nfunction addDep(obsId, sid) {\n ensureSignalBucket(sid);\n var obs = Belt_Option.getExn(Belt_MapInt.get(observers.contents, obsId));\n if (!Caml_obj.equal(currentObserverId.contents, obsId)) {\n return ;\n }\n if (Belt_SetInt.has(obs.deps, sid) !== false) {\n return ;\n }\n obs.deps = Belt_SetInt.add(obs.deps, sid);\n var sset = Belt_Option.getExn(Belt_MapInt.get(signalObservers.contents, sid));\n signalObservers.contents = Belt_MapInt.set(signalObservers.contents, sid, Belt_SetInt.add(sset, obsId));\n}\n\nfunction clearDeps(obs) {\n Belt_SetInt.forEach(obs.deps, (function (sid) {\n var sset = Belt_MapInt.get(signalObservers.contents, sid);\n if (sset !== undefined) {\n signalObservers.contents = Belt_MapInt.set(signalObservers.contents, sid, Belt_SetInt.remove(Caml_option.valFromOption(sset), obs.id));\n return ;\n }\n \n }));\n obs.deps = undefined;\n}\n\nfunction schedule(obsId) {\n pending.contents = Belt_SetInt.add(pending.contents, obsId);\n if (batching.contents !== false) {\n return ;\n }\n var toRun = pending.contents;\n pending.contents = undefined;\n Belt_SetInt.forEach(toRun, (function (id) {\n var o = Belt_MapInt.get(observers.contents, id);\n if (o !== undefined) {\n clearDeps(o);\n currentObserverId.contents = id;\n o.run();\n currentObserverId.contents = undefined;\n return ;\n }\n \n }));\n}\n\nfunction notify(sid) {\n ensureSignalBucket(sid);\n var sset = Belt_MapInt.get(signalObservers.contents, sid);\n if (sset !== undefined) {\n return Belt_SetInt.forEach(Caml_option.valFromOption(sset), schedule);\n }\n \n}\n\nfunction untrack(f) {\n var prev = currentObserverId.contents;\n currentObserverId.contents = undefined;\n var r = f();\n currentObserverId.contents = prev;\n return r;\n}\n\nfunction batch(f) {\n var prev = batching.contents;\n batching.contents = true;\n var r = f();\n batching.contents = prev;\n if (pending.contents !== undefined) {\n var toRun = pending.contents;\n pending.contents = undefined;\n Belt_SetInt.forEach(toRun, (function (id) {\n schedule(id);\n }));\n }\n return r;\n}\n\nvar IntSet;\n\nvar IntMap;\n\nvar Observer;\n\nvar Id;\n\nexport {\n IntSet ,\n IntMap ,\n Observer ,\n Id ,\n observers ,\n signalObservers ,\n signalPeeks ,\n currentObserverId ,\n pending ,\n batching ,\n ensureSignalBucket ,\n addDep ,\n clearDeps ,\n schedule ,\n notify ,\n untrack ,\n batch ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Caml_option from \"rescript/lib/es6/caml_option.js\";\n\nfunction make(length, x) {\n if (length <= 0) {\n return [];\n }\n var arr = new Array(length);\n arr.fill(x);\n return arr;\n}\n\nfunction fromInitializer(length, f) {\n if (length <= 0) {\n return [];\n }\n var arr = new Array(length);\n for(var i = 0; i < length; ++i){\n arr[i] = f(i);\n }\n return arr;\n}\n\nfunction equal(a, b, eq) {\n var len = a.length;\n if (len === b.length) {\n var _i = 0;\n while(true) {\n var i = _i;\n if (i === len) {\n return true;\n }\n if (!eq(a[i], b[i])) {\n return false;\n }\n _i = i + 1 | 0;\n continue ;\n };\n } else {\n return false;\n }\n}\n\nfunction compare(a, b, cmp) {\n var lenA = a.length;\n var lenB = b.length;\n if (lenA < lenB) {\n return -1;\n } else if (lenA > lenB) {\n return 1;\n } else {\n var _i = 0;\n while(true) {\n var i = _i;\n if (i === lenA) {\n return 0;\n }\n var c = cmp(a[i], b[i]);\n if (c !== 0) {\n return c;\n }\n _i = i + 1 | 0;\n continue ;\n };\n }\n}\n\nfunction indexOfOpt(arr, item) {\n var index = arr.indexOf(item);\n if (index !== -1) {\n return index;\n }\n \n}\n\nfunction lastIndexOfOpt(arr, item) {\n var index = arr.lastIndexOf(item);\n if (index !== -1) {\n return index;\n }\n \n}\n\nfunction reduce(arr, init, f) {\n return arr.reduce(f, init);\n}\n\nfunction reduceWithIndex(arr, init, f) {\n return arr.reduce(f, init);\n}\n\nfunction reduceRight(arr, init, f) {\n return arr.reduceRight(f, init);\n}\n\nfunction reduceRightWithIndex(arr, init, f) {\n return arr.reduceRight(f, init);\n}\n\nfunction findIndexOpt(array, finder) {\n var index = array.findIndex(finder);\n if (index !== -1) {\n return index;\n }\n \n}\n\nfunction swapUnsafe(xs, i, j) {\n var tmp = xs[i];\n xs[i] = xs[j];\n xs[j] = tmp;\n}\n\nfunction random_int(min, max) {\n return (Math.floor(Math.random() * (max - min | 0)) | 0) + min | 0;\n}\n\nfunction shuffle(xs) {\n var len = xs.length;\n for(var i = 0; i < len; ++i){\n swapUnsafe(xs, i, random_int(i, len));\n }\n}\n\nfunction toShuffled(xs) {\n var result = xs.slice();\n shuffle(result);\n return result;\n}\n\nfunction filterMap(a, f) {\n var l = a.length;\n var r = new Array(l);\n var j = 0;\n for(var i = 0; i < l; ++i){\n var v = a[i];\n var v$1 = f(v);\n if (v$1 !== undefined) {\n r[j] = Caml_option.valFromOption(v$1);\n j = j + 1 | 0;\n }\n \n }\n r.length = j;\n return r;\n}\n\nfunction keepSome(__x) {\n return filterMap(__x, (function (x) {\n return x;\n }));\n}\n\nfunction findMap(arr, f) {\n var _i = 0;\n while(true) {\n var i = _i;\n if (i === arr.length) {\n return ;\n }\n var r = f(arr[i]);\n if (r !== undefined) {\n return r;\n }\n _i = i + 1 | 0;\n continue ;\n };\n}\n\nfunction last(a) {\n return a[a.length - 1 | 0];\n}\n\nexport {\n make ,\n fromInitializer ,\n equal ,\n compare ,\n indexOfOpt ,\n lastIndexOfOpt ,\n reduce ,\n reduceWithIndex ,\n reduceRight ,\n reduceRightWithIndex ,\n findIndexOpt ,\n filterMap ,\n keepSome ,\n toShuffled ,\n shuffle ,\n findMap ,\n last ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Core__Array from \"@rescript/core/src/Core__Array.res.mjs\";\n\nfunction parsePattern(pattern) {\n return Core__Array.filterMap(pattern.split(\"/\"), (function (seg) {\n if (seg === \"\") {\n return ;\n } else if (seg.startsWith(\":\")) {\n return {\n TAG: \"Param\",\n _0: seg.slice(1)\n };\n } else {\n return {\n TAG: \"Static\",\n _0: seg\n };\n }\n }));\n}\n\nfunction matchPath(pattern, pathname) {\n var pathSegments = pathname.split(\"/\").filter(function (s) {\n return s !== \"\";\n });\n if (pattern.length !== pathSegments.length) {\n return \"NoMatch\";\n }\n var params = {};\n var matches = pattern.every(function (seg, idx) {\n var pathSeg = pathSegments[idx];\n if (seg.TAG === \"Static\") {\n return pathSeg === seg._0;\n }\n params[seg._0] = pathSeg;\n return true;\n });\n if (matches) {\n return {\n TAG: \"Match\",\n _0: params\n };\n } else {\n return \"NoMatch\";\n }\n}\n\nfunction match(pattern, pathname) {\n return matchPath(parsePattern(pattern), pathname);\n}\n\nexport {\n parsePattern ,\n matchPath ,\n match ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\n\nvar next = {\n contents: 0\n};\n\nfunction make() {\n next.contents = next.contents + 1 | 0;\n return next.contents;\n}\n\nexport {\n next ,\n make ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Xote__Id from \"./Xote__Id.res.mjs\";\nimport * as Xote__Core from \"./Xote__Core.res.mjs\";\nimport * as Belt_MapInt from \"rescript/lib/es6/belt_MapInt.js\";\n\nfunction run(fn) {\n var id = Xote__Id.make();\n var observer = {\n id: id,\n kind: \"Effect\",\n run: (function () {\n fn();\n }),\n deps: undefined\n };\n Xote__Core.observers.contents = Belt_MapInt.set(Xote__Core.observers.contents, id, observer);\n Xote__Core.clearDeps(observer);\n Xote__Core.currentObserverId.contents = id;\n observer.run();\n Xote__Core.currentObserverId.contents = undefined;\n var dispose = function () {\n var o = Belt_MapInt.get(Xote__Core.observers.contents, id);\n if (o !== undefined) {\n Xote__Core.clearDeps(o);\n Xote__Core.observers.contents = Belt_MapInt.remove(Xote__Core.observers.contents, id);\n return ;\n }\n \n };\n return {\n dispose: dispose\n };\n}\n\nvar IntSet;\n\nvar IntMap;\n\nvar Id;\n\nvar Observer;\n\nvar Signal;\n\nvar Core;\n\nexport {\n IntSet ,\n IntMap ,\n Id ,\n Observer ,\n Signal ,\n Core ,\n run ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Xote__Id from \"./Xote__Id.res.mjs\";\nimport * as Xote__Core from \"./Xote__Core.res.mjs\";\n\nfunction make(v) {\n var id = Xote__Id.make();\n Xote__Core.ensureSignalBucket(id);\n return {\n id: id,\n value: {\n contents: v\n },\n version: {\n contents: 0\n }\n };\n}\n\nfunction get(s) {\n var obsId = Xote__Core.currentObserverId.contents;\n if (obsId !== undefined) {\n Xote__Core.addDep(obsId, s.id);\n }\n return s.value.contents;\n}\n\nfunction peek(s) {\n return s.value.contents;\n}\n\nfunction set(s, v) {\n s.value.contents = v;\n s.version.contents = s.version.contents + 1 | 0;\n Xote__Core.notify(s.id);\n}\n\nfunction update(s, f) {\n set(s, f(s.value.contents));\n}\n\nvar IntSet;\n\nvar IntMap;\n\nvar Observer;\n\nvar Id;\n\nvar Core;\n\nexport {\n IntSet ,\n IntMap ,\n Observer ,\n Id ,\n Core ,\n make ,\n get ,\n peek ,\n set ,\n update ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Xote__Id from \"./Xote__Id.res.mjs\";\nimport * as Xote__Core from \"./Xote__Core.res.mjs\";\nimport * as Belt_MapInt from \"rescript/lib/es6/belt_MapInt.js\";\nimport * as Xote__Signal from \"./Xote__Signal.res.mjs\";\n\nfunction make(calc) {\n var s = Xote__Signal.make();\n var initialized = {\n contents: false\n };\n var id = Xote__Id.make();\n var recompute = function () {\n var next = calc();\n if (initialized.contents === false) {\n initialized.contents = true;\n return Xote__Signal.set(s, next);\n } else {\n return Xote__Signal.set(s, next);\n }\n };\n var o = {\n id: id,\n kind: {\n NAME: \"Computed\",\n VAL: s.id\n },\n run: recompute,\n deps: undefined\n };\n Xote__Core.observers.contents = Belt_MapInt.set(Xote__Core.observers.contents, id, o);\n Xote__Core.clearDeps(o);\n Xote__Core.currentObserverId.contents = id;\n o.run();\n Xote__Core.currentObserverId.contents = undefined;\n return s;\n}\n\nvar IntSet;\n\nvar IntMap;\n\nvar Signal;\n\nvar Core;\n\nvar Observer;\n\nvar Id;\n\nexport {\n IntSet ,\n IntMap ,\n Signal ,\n Core ,\n Observer ,\n Id ,\n make ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Xote__Effect from \"./Xote__Effect.res.mjs\";\nimport * as Xote__Signal from \"./Xote__Signal.res.mjs\";\nimport * as Xote__Computed from \"./Xote__Computed.res.mjs\";\n\nfunction attr(key, value) {\n return [\n key,\n {\n TAG: \"Static\",\n _0: value\n }\n ];\n}\n\nfunction signalAttr(key, signal) {\n return [\n key,\n {\n TAG: \"SignalValue\",\n _0: signal\n }\n ];\n}\n\nfunction computedAttr(key, compute) {\n return [\n key,\n {\n TAG: \"Compute\",\n _0: compute\n }\n ];\n}\n\nfunction text(content) {\n return {\n TAG: \"Text\",\n _0: content\n };\n}\n\nfunction textSignal(compute) {\n var signal = Xote__Computed.make(compute);\n return {\n TAG: \"SignalText\",\n _0: signal\n };\n}\n\nfunction fragment(children) {\n return {\n TAG: \"Fragment\",\n _0: children\n };\n}\n\nfunction signalFragment(signal) {\n return {\n TAG: \"SignalFragment\",\n _0: signal\n };\n}\n\nfunction list(signal, renderItem) {\n var nodesSignal = Xote__Computed.make(function () {\n return Xote__Signal.get(signal).map(renderItem);\n });\n return {\n TAG: \"SignalFragment\",\n _0: nodesSignal\n };\n}\n\nfunction element(tag, attrsOpt, eventsOpt, childrenOpt, param) {\n var attrs = attrsOpt !== undefined ? attrsOpt : [].map(function (x) {\n return x;\n });\n var events = eventsOpt !== undefined ? eventsOpt : [].map(function (x) {\n return x;\n });\n var children = childrenOpt !== undefined ? childrenOpt : [].map(function (x) {\n return x;\n });\n return {\n TAG: \"Element\",\n tag: tag,\n attrs: attrs,\n events: events,\n children: children\n };\n}\n\nfunction div(attrs, events, children, param) {\n return element(\"div\", attrs, events, children, undefined);\n}\n\nfunction span(attrs, events, children, param) {\n return element(\"span\", attrs, events, children, undefined);\n}\n\nfunction button(attrs, events, children, param) {\n return element(\"button\", attrs, events, children, undefined);\n}\n\nfunction input(attrs, events, param) {\n return element(\"input\", attrs, events, undefined, undefined);\n}\n\nfunction h1(attrs, events, children, param) {\n return element(\"h1\", attrs, events, children, undefined);\n}\n\nfunction h2(attrs, events, children, param) {\n return element(\"h2\", attrs, events, children, undefined);\n}\n\nfunction h3(attrs, events, children, param) {\n return element(\"h3\", attrs, events, children, undefined);\n}\n\nfunction p(attrs, events, children, param) {\n return element(\"p\", attrs, events, children, undefined);\n}\n\nfunction ul(attrs, events, children, param) {\n return element(\"ul\", attrs, events, children, undefined);\n}\n\nfunction li(attrs, events, children, param) {\n return element(\"li\", attrs, events, children, undefined);\n}\n\nfunction a(attrs, events, children, param) {\n return element(\"a\", attrs, events, children, undefined);\n}\n\nfunction render(node) {\n switch (node.TAG) {\n case \"Element\" :\n var el = document.createElement(node.tag);\n node.attrs.forEach(function (param) {\n var source = param[1];\n var key = param[0];\n switch (source.TAG) {\n case \"Static\" :\n el.setAttribute(key, source._0);\n return ;\n case \"SignalValue\" :\n var s = source._0;\n el.setAttribute(key, Xote__Signal.peek(s));\n Xote__Effect.run(function () {\n var v = Xote__Signal.get(s);\n el.setAttribute(key, v);\n });\n return ;\n case \"Compute\" :\n var f = source._0;\n var sig = Xote__Computed.make(function () {\n return f();\n });\n el.setAttribute(key, Xote__Signal.peek(sig));\n Xote__Effect.run(function () {\n var v = Xote__Signal.get(sig);\n el.setAttribute(key, v);\n });\n return ;\n \n }\n });\n node.events.forEach(function (param) {\n el.addEventListener(param[0], param[1]);\n });\n node.children.forEach(function (child) {\n var childEl = render(child);\n el.appendChild(childEl);\n });\n return el;\n case \"Text\" :\n return document.createTextNode(node._0);\n case \"SignalText\" :\n var signal = node._0;\n var el$1 = document.createTextNode(Xote__Signal.peek(signal));\n Xote__Effect.run(function () {\n var content = Xote__Signal.get(signal);\n el$1.textContent = content;\n });\n return el$1;\n case \"Fragment\" :\n var fragment = document.createDocumentFragment();\n node._0.forEach(function (child) {\n var childEl = render(child);\n fragment.appendChild(childEl);\n });\n return fragment;\n case \"SignalFragment\" :\n var signal$1 = node._0;\n var container = document.createElement(\"div\");\n container.setAttribute(\"data-signal-fragment\", \"true\");\n container.setAttribute(\"style\", \"display: contents\");\n Xote__Effect.run(function () {\n var children = Xote__Signal.get(signal$1);\n ((container.innerHTML = ''));\n children.forEach(function (child) {\n var childEl = render(child);\n container.appendChild(childEl);\n });\n });\n return container;\n \n }\n}\n\nfunction mount(node, container) {\n var el = render(node);\n container.appendChild(el);\n}\n\nfunction mountById(node, containerId) {\n var container = document.getElementById(containerId);\n if (container == null) {\n console.error(\"Container element not found: \" + containerId);\n return ;\n } else {\n return mount(node, container);\n }\n}\n\nvar Signal;\n\nvar Effect;\n\nvar Core;\n\nvar Computed;\n\nexport {\n Signal ,\n Effect ,\n Core ,\n Computed ,\n attr ,\n signalAttr ,\n computedAttr ,\n text ,\n textSignal ,\n fragment ,\n signalFragment ,\n list ,\n element ,\n div ,\n span ,\n button ,\n input ,\n h1 ,\n h2 ,\n h3 ,\n p ,\n ul ,\n li ,\n a ,\n render ,\n mount ,\n mountById ,\n}\n/* No side effect */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Core__Array from \"@rescript/core/src/Core__Array.res.mjs\";\nimport * as Xote__Route from \"./Xote__Route.res.mjs\";\nimport * as Xote__Signal from \"./Xote__Signal.res.mjs\";\nimport * as Xote__Computed from \"./Xote__Computed.res.mjs\";\nimport * as Xote__Component from \"./Xote__Component.res.mjs\";\n\nvar $$location = Xote__Signal.make({\n pathname: \"/\",\n search: \"\",\n hash: \"\"\n });\n\nfunction getCurrentLocation() {\n return {\n pathname: window.location.pathname,\n search: window.location.search,\n hash: window.location.hash\n };\n}\n\nfunction init() {\n Xote__Signal.set($$location, getCurrentLocation());\n var handlePopState = function (_evt) {\n Xote__Signal.set($$location, getCurrentLocation());\n };\n window.addEventListener(\"popstate\", handlePopState);\n}\n\nfunction push(pathname, searchOpt, hashOpt, param) {\n var search = searchOpt !== undefined ? searchOpt : \"\";\n var hash = hashOpt !== undefined ? hashOpt : \"\";\n var newLocation = {\n pathname: pathname,\n search: search,\n hash: hash\n };\n var url = pathname + search + hash;\n var state = {};\n window.history.pushState(state, \"\", url);\n Xote__Signal.set($$location, newLocation);\n}\n\nfunction replace(pathname, searchOpt, hashOpt, param) {\n var search = searchOpt !== undefined ? searchOpt : \"\";\n var hash = hashOpt !== undefined ? hashOpt : \"\";\n var newLocation = {\n pathname: pathname,\n search: search,\n hash: hash\n };\n var url = pathname + search + hash;\n var state = {};\n window.history.replaceState(state, \"\", url);\n Xote__Signal.set($$location, newLocation);\n}\n\nfunction route(pattern, render) {\n return Xote__Component.signalFragment(Xote__Computed.make(function () {\n var loc = Xote__Signal.get($$location);\n var params = Xote__Route.match(pattern, loc.pathname);\n if (typeof params !== \"object\") {\n return [];\n } else {\n return [render(params._0)];\n }\n }));\n}\n\nfunction routes(configs) {\n return Xote__Component.signalFragment(Xote__Computed.make(function () {\n var loc = Xote__Signal.get($$location);\n var matched = Core__Array.findMap(configs, (function (config) {\n var params = Xote__Route.match(config.pattern, loc.pathname);\n if (typeof params !== \"object\") {\n return ;\n } else {\n return config.render(params._0);\n }\n }));\n if (matched !== undefined) {\n return [matched];\n } else {\n return [];\n }\n }));\n}\n\nfunction link(to, attrsOpt, childrenOpt, param) {\n var attrs = attrsOpt !== undefined ? attrsOpt : [];\n var children = childrenOpt !== undefined ? childrenOpt : [];\n var handleClick = function (_evt) {\n ((_evt.preventDefault()));\n push(to, undefined, undefined, undefined);\n };\n return Xote__Component.a(attrs.concat([Xote__Component.attr(\"href\", to)]), [[\n \"click\",\n handleClick\n ]], children, undefined);\n}\n\nvar Signal;\n\nvar Computed;\n\nvar Component;\n\nvar Route;\n\nvar Core;\n\nexport {\n Signal ,\n Computed ,\n Component ,\n Route ,\n Core ,\n $$location ,\n getCurrentLocation ,\n init ,\n push ,\n replace ,\n route ,\n routes ,\n link ,\n}\n/* location Not a pure module */\n","// Generated by ReScript, PLEASE EDIT WITH CARE\n\nimport * as Xote__Core from \"./Xote__Core.res.mjs\";\nimport * as Xote__Route from \"./Xote__Route.res.mjs\";\nimport * as Xote__Effect from \"./Xote__Effect.res.mjs\";\nimport * as Xote__Router from \"./Xote__Router.res.mjs\";\nimport * as Xote__Signal from \"./Xote__Signal.res.mjs\";\nimport * as Xote__Computed from \"./Xote__Computed.res.mjs\";\nimport * as Xote__Component from \"./Xote__Component.res.mjs\";\n\nvar Component = Xote__Component;\n\nvar Computed = Xote__Computed;\n\nvar Core = Xote__Core;\n\nvar Effect = Xote__Effect;\n\nvar Route = Xote__Route;\n\nvar Router = Xote__Router;\n\nvar Signal = Xote__Signal;\n\nexport {\n Component ,\n Computed ,\n Core ,\n Effect ,\n Route ,\n Router ,\n Signal ,\n}\n/* Xote__Router Not a pure module */\n"],"names":["for_in","o","foo","x","equal","a","b","a_type","b_type","tag_a","tag_b","len_a","len_b","_i","i","result","do_key_a","key","do_key_b","sub","offset","len","j","app","_f","_args","args","f","init_arity","arity","d","Caml_array.sub","_1","a0","param","param$1","param$2","param$3","param$4","param$5","__1","some","valFromOption","depth","treeHeight","create","l","r","hl","hr","singleton","updateValue","newValue","bal","ll","lr","rl","rr","removeMinAuxWithRef","kr","vr","ln","get","_n","n","v","Caml_option.some","set","t","newK","newD","Belt_internalAVLtree.singleton","k","Belt_internalAVLtree.updateValue","Belt_internalAVLtree.bal","removeAux","r$1","Belt_internalAVLtree.removeMinAuxWithRef","remove","Belt_internalMapInt.get","getExn","Caml_option.valFromOption","heightGe","forEachU","forEach","Curry.__1","has","_t","add","Belt_internalAVLset.singleton","Belt_internalAVLset.bal","v$1","Belt_internalAVLset.removeMinAuxWithRef","Belt_internalSetInt.has","Belt_internalAVLset.forEach","observers","signalObservers","signalPeeks","currentObserverId","pending","batching","ensureSignalBucket","sid","match","Belt_MapInt.get","Belt_MapInt.set","addDep","obsId","obs","Belt_Option.getExn","Caml_obj.equal","Belt_SetInt.has","Belt_SetInt.add","sset","clearDeps","Belt_SetInt.forEach","Belt_SetInt.remove","schedule","toRun","id","notify","untrack","prev","batch","IntSet","IntMap","Observer","Id","filterMap","findMap","arr","parsePattern","pattern","Core__Array.filterMap","seg","matchPath","pathname","pathSegments","s","params","matches","idx","pathSeg","next","make","run","fn","Xote__Id.make","observer","Xote__Core.observers","Xote__Core.clearDeps","Xote__Core.currentObserverId","dispose","Belt_MapInt.remove","Signal","Core","Xote__Core.ensureSignalBucket","Xote__Core.addDep","peek","Xote__Core.notify","update","calc","Xote__Signal.make","initialized","recompute","Xote__Signal.set","attr","value","signalAttr","signal","computedAttr","compute","text","content","textSignal","Xote__Computed.make","fragment","children","signalFragment","list","renderItem","nodesSignal","Xote__Signal.get","element","tag","attrsOpt","eventsOpt","childrenOpt","attrs","events","div","span","button","input","h1","h2","h3","p","ul","li","render","node","el","source","Xote__Signal.peek","Xote__Effect.run","sig","child","childEl","el$1","signal$1","container","mount","mountById","containerId","Effect","Computed","$$location","getCurrentLocation","init","handlePopState","_evt","push","searchOpt","hashOpt","search","hash","newLocation","url","state","replace","route","Xote__Component.signalFragment","loc","Xote__Route.match","routes","configs","matched","Core__Array.findMap","config","link","to","handleClick","Xote__Component.a","Xote__Component.attr","Component","Route","Xote__Component","Xote__Computed","Xote__Core","Xote__Effect","Xote__Route","Router","Xote__Router","Xote__Signal"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,12]}
|