From 0ba84a4dd024c7bda920f90873093ad9888077be Mon Sep 17 00:00:00 2001 From: Jon Schoning Date: Fri, 26 Jan 2024 15:27:49 -0600 Subject: [PATCH] use spago-next --- changelog.md | 3 + espial.cabal | 10 +- package.yaml | 6 +- purs/package-lock.json | 2194 ++++++++++++++++++++++++++++++++++- purs/package.json | 3 +- purs/packages.dhall | 42 - purs/spago.dhall | 41 - purs/spago.lock | 1490 ++++++++++++++++++++++++ purs/spago.yaml | 45 + static/js/app.min.js.gz | Bin 79079 -> 79079 bytes static/js/app.min.js.map | 8 +- static/js/app.min.js.map.gz | Bin 380171 -> 381265 bytes 12 files changed, 3708 insertions(+), 134 deletions(-) delete mode 100644 purs/packages.dhall delete mode 100644 purs/spago.dhall create mode 100644 purs/spago.lock create mode 100644 purs/spago.yaml diff --git a/changelog.md b/changelog.md index b4e3918..b627505 100644 --- a/changelog.md +++ b/changelog.md @@ -1,3 +1,6 @@ +__v0.0.22__ +use spago-next + __v0.0.21__ switch to esm javascript module imports diff --git a/espial.cabal b/espial.cabal index 5d326c7..dd0d9c4 100644 --- a/espial.cabal +++ b/espial.cabal @@ -1,11 +1,11 @@ -cabal-version: 1.12 +cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.36.0. +-- This file has been generated from package.yaml by hpack version 0.35.1. -- -- see: https://github.com/sol/hpack name: espial -version: 0.0.21 +version: 0.0.22 synopsis: Espial is an open-source, web-based bookmarking server. description: . Espial is an open-source, web-based bookmarking server. @@ -55,8 +55,8 @@ extra-source-files: static/js/js.cookie-2.2.0.min.js static/js/js.cookie-2.2.0.min.js.gz purs/Makefile - purs/packages.dhall - purs/spago.dhall + purs/spago.lock + purs/spago.yaml purs/src/App.purs purs/src/Globals.js purs/src/Globals.purs diff --git a/package.yaml b/package.yaml index 01b648c..c82ac31 100644 --- a/package.yaml +++ b/package.yaml @@ -1,6 +1,6 @@ name: espial synopsis: Espial is an open-source, web-based bookmarking server. -version: "0.0.21" +version: "0.0.22" description: ! ' Espial is an open-source, web-based bookmarking server. @@ -34,8 +34,8 @@ extra-source-files: - static/images/** - static/js/** - purs/Makefile -- purs/packages.dhall -- purs/spago.dhall +- purs/spago.lock +- purs/spago.yaml - purs/src/** - purs/src/**/Component/** - purs/test/** diff --git a/purs/package-lock.json b/purs/package-lock.json index 8a4f965..05827f0 100644 --- a/purs/package-lock.json +++ b/purs/package-lock.json @@ -13,7 +13,8 @@ "devDependencies": { "esbuild": "^0.19.11", "purescript": "^0.15.14", - "spago": "^0.21.0" + "spago": "^0.93.24", + "spago-legacy": "^0.21.0" } }, "node_modules/@esbuild/aix-ppc64": { @@ -486,6 +487,41 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@npmcli/fs": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", @@ -607,6 +643,21 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -622,12 +673,107 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/better-sqlite3": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.7.0.tgz", + "integrity": "sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + } + }, + "node_modules/big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, + "node_modules/bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "dependencies": { + "big-integer": "^1.6.44" + }, + "engines": { + "node": ">= 5.10.0" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -638,12 +784,73 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "node_modules/buildcheck": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", + "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "dependencies": { + "run-applescript": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", @@ -772,6 +979,21 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "node_modules/cpu-features": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz", + "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "~0.0.6", + "nan": "^2.17.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -824,6 +1046,198 @@ } } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "dependencies": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "dependencies": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-browser/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/dompurify": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.8.tgz", @@ -872,6 +1286,15 @@ "once": "^1.4.0" } }, + "node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -954,12 +1377,52 @@ "node": "^8.12.0 || >=9.7.0" } }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, "node_modules/filesize": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-4.2.1.tgz", @@ -969,6 +1432,18 @@ "node": ">= 0.4.0" } }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -1017,6 +1492,26 @@ "readable-stream": "^2.0.0" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -1047,6 +1542,15 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "node_modules/fuse.js": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", + "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -1062,6 +1566,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -1082,6 +1592,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -1130,6 +1652,15 @@ "node": ">= 6" } }, + "node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, "node_modules/humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -1152,6 +1683,26 @@ "node": ">=0.10.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", @@ -1198,19 +1749,79 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "node_modules/ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-lambda": { @@ -1219,6 +1830,15 @@ "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -1240,6 +1860,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-wsl/node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -1270,6 +1917,27 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "dependencies": { + "uc.micro": "^1.0.1" + } + }, "node_modules/log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -1497,6 +2165,22 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "bin": { + "markdown-it": "bin/markdown-it.js" + } + }, "node_modules/marked": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/marked/-/marked-11.1.1.tgz", @@ -1508,12 +2192,40 @@ "node": ">= 18" } }, + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", @@ -1523,6 +2235,18 @@ "node": ">=6" } }, + "node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -1688,6 +2412,12 @@ "mkdirp": "bin/cmd.js" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "node_modules/moment": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", @@ -1716,6 +2446,19 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "dev": true, + "optional": true + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", @@ -1725,6 +2468,18 @@ "node": ">= 0.6" } }, + "node_modules/node-abi": { + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", + "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/npm-run-path": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", @@ -1761,6 +2516,24 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "dependencies": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-finally": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", @@ -1831,9 +2604,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "engines": { "node": "14 || >=16.14" @@ -1848,6 +2621,44 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -1904,6 +2715,15 @@ "once": "^1.3.1" } }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/purescript": { "version": "0.15.14", "resolved": "https://registry.npmjs.org/purescript/-/purescript-0.15.14.tgz", @@ -2269,6 +3089,41 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, "node_modules/readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -2306,6 +3161,16 @@ "node": ">= 4" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -2318,6 +3183,100 @@ "rimraf": "bin.js" } }, + "node_modules/run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-applescript/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-applescript/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-applescript/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -2337,8 +3296,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true + "dev": true }, "node_modules/semver": { "version": "7.3.8", @@ -2400,6 +3358,51 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -2470,36 +3473,128 @@ "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/spago": { + "version": "0.93.24", + "resolved": "https://registry.npmjs.org/spago/-/spago-0.93.24.tgz", + "integrity": "sha512-wedo3N9Lc+4r1lMasmJwp0pJ5XsdYg3bvZiGYBujCplMMU2Fae4VQJcEm6apJU/FlJ96ZnxBYFDzduBqc0x9rQ==", + "dev": true, + "dependencies": { + "better-sqlite3": "^8.6.0", + "env-paths": "^3.0.0", + "fast-glob": "^3.2.11", + "fs-extra": "^10.0.0", + "fuse.js": "^6.5.3", + "glob": "^7.1.6", + "markdown-it": "^12.0.4", + "open": "^9.1.0", + "punycode": "^2.3.0", + "semver": "^7.3.5", + "spdx-expression-parse": "^3.0.1", + "ssh2": "^1.14.0", + "supports-color": "^9.2.3", + "tar": "^6.1.11", + "tmp": "^0.2.1", + "xhr2": "^0.2.1", + "yaml": "^2.1.1" + }, + "bin": { + "spago": "bin/bundle.js" + } + }, + "node_modules/spago-legacy": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/spago-legacy/-/spago-legacy-0.21.0.tgz", + "integrity": "sha512-tGxrzcqlcsJ69nS8Bxtmmvf8L23Obzouf5OX2oE3O/A5mSN8mKjoknjFtUgX9zyI+8wgaYOUF9Jag3kTYaTRiA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "make-fetch-happen": "^11.0.1", + "tar": "^6.1.11" + }, + "bin": { + "spago-legacy": "spago-legacy" + } + }, + "node_modules/spago/node_modules/env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/spago/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "node_modules/spdx-exceptions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, - "engines": { - "node": ">= 10" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/spago": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/spago/-/spago-0.21.0.tgz", - "integrity": "sha512-1qTPaIhrsLCvneSJt1fyq3CpNMu01Xhcn+b09IMbyrpLcptMoGH5uOtyNL9eohTRMzPWBKUs6ksFLGdjJp7yxQ==", + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/ssh2": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", "dev": true, "hasInstallScript": true, "dependencies": { - "make-fetch-happen": "^11.0.1", - "tar": "^6.1.11" + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2" }, - "bin": { - "spago": "spago" + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.9", + "nan": "^2.18.0" } }, "node_modules/ssri": { @@ -2599,6 +3694,15 @@ "node": ">=6" } }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -2628,6 +3732,48 @@ "node": ">= 10" } }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/tar/node_modules/chownr": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", @@ -2665,6 +3811,75 @@ "xtend": "~4.0.1" } }, + "node_modules/titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/tmp/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -2683,6 +3898,12 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, + "node_modules/uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -2701,6 +3922,24 @@ "imurmurhash": "^0.1.4" } }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -2823,6 +4062,15 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "node_modules/xhr2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -2844,6 +4092,15 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "node_modules/yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, "node_modules/zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", @@ -3084,6 +4341,32 @@ } } }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, "@npmcli/fs": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", @@ -3174,6 +4457,21 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, "astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -3186,12 +4484,85 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-sqlite3": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-8.7.0.tgz", + "integrity": "sha512-99jZU4le+f3G6aIl6PmmV0cxUIWqKieHxsiF7G34CVFiE+/UabpYqkU0NJIkY/96mQKikHeBjtR27vFfs5JpEw==", + "dev": true, + "requires": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + } + }, + "big-integer": { + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, + "bplist-parser": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", + "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "dev": true, + "requires": { + "big-integer": "^1.6.44" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3202,12 +4573,47 @@ "concat-map": "0.0.1" } }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "buildcheck": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", + "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", + "dev": true, + "optional": true + }, + "bundle-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", + "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", + "dev": true, + "requires": { + "run-applescript": "^5.0.0" + } + }, "byline": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", @@ -3321,6 +4727,17 @@ "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "dev": true }, + "cpu-features": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz", + "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==", + "dev": true, + "optional": true, + "requires": { + "buildcheck": "~0.0.6", + "nan": "^2.17.0" + } + }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3358,6 +4775,122 @@ "ms": "2.1.2" } }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, + "default-browser": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", + "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", + "dev": true, + "requires": { + "bundle-name": "^3.0.0", + "default-browser-id": "^3.0.0", + "execa": "^7.1.1", + "titleize": "^3.0.0" + }, + "dependencies": { + "execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true + }, + "mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true + }, + "npm-run-path": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", + "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "dev": true, + "requires": { + "path-key": "^4.0.0" + } + }, + "onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "requires": { + "mimic-fn": "^4.0.0" + } + }, + "path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true + }, + "strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true + } + } + }, + "default-browser-id": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", + "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", + "dev": true, + "requires": { + "bplist-parser": "^0.2.0", + "untildify": "^4.0.0" + } + }, + "define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true + }, + "detect-libc": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", + "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "dev": true + }, "dompurify": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.8.tgz", @@ -3406,6 +4939,12 @@ "once": "^1.4.0" } }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + }, "env-paths": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", @@ -3472,18 +5011,61 @@ "strip-final-newline": "^2.0.0" } }, + "expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true + }, + "fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fastq": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", + "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, "figgy-pudding": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true + }, "filesize": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-4.2.1.tgz", "integrity": "sha512-bP82Hi8VRZX/TUBKfE24iiUGsB/sfm2WUrwTQyAzQrhO3V9IhcBBNBXMyzLY5orACxRyYJ3d2HeRVX+eFv4lmA==", "dev": true }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -3522,6 +5104,23 @@ "readable-stream": "^2.0.0" } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "fs-minipass": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", @@ -3549,6 +5148,12 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fuse.js": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", + "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==", + "dev": true + }, "get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -3558,6 +5163,12 @@ "pump": "^3.0.0" } }, + "github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, "glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", @@ -3572,6 +5183,15 @@ "path-is-absolute": "^1.0.0" } }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, "graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -3611,6 +5231,12 @@ "debug": "4" } }, + "human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true + }, "humanize-ms": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", @@ -3630,6 +5256,12 @@ "safer-buffer": ">= 2.1.2 < 3.0.0" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, "iferr": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", @@ -3670,24 +5302,66 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", "dev": true }, + "is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "requires": { + "is-docker": "^3.0.0" + } + }, "is-lambda": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", "dev": true }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, "is-plain-obj": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", @@ -3700,6 +5374,23 @@ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + }, + "dependencies": { + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + } + } + }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3722,6 +5413,25 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, "log-symbols": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", @@ -3900,23 +5610,64 @@ } } }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + } + }, "marked": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/marked/-/marked-11.1.1.tgz", "integrity": "sha512-EgxRjgK9axsQuUa/oKMx5DEY8oXpKJfk61rT5iY3aRlgU6QJtUcxU5OAymdhCvWvhYcd9FKmO5eQoX8m9VGJXg==" }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, + "mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4050,6 +5801,12 @@ "minimist": "^1.2.6" } }, + "mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "moment": { "version": "2.30.1", "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", @@ -4075,12 +5832,34 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "nan": { + "version": "2.18.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "dev": true, + "optional": true + }, + "napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, "negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true }, + "node-abi": { + "version": "3.54.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.54.0.tgz", + "integrity": "sha512-p7eGEiQil0YUV3ItH4/tBb781L5impVmmx2E9FRKF7d18XXzp4PGT2tdYMFY6wQqgxD0IwNZOiSJ0/K0fSi/OA==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, "npm-run-path": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-3.1.0.tgz", @@ -4108,6 +5887,18 @@ "mimic-fn": "^2.1.0" } }, + "open": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", + "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "dev": true, + "requires": { + "default-browser": "^4.0.0", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^2.2.0" + } + }, "p-finally": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-2.0.1.tgz", @@ -4157,9 +5948,9 @@ }, "dependencies": { "lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true }, "minipass": { @@ -4170,6 +5961,32 @@ } } }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -4225,6 +6042,12 @@ } } }, + "punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true + }, "purescript": { "version": "0.15.14", "resolved": "https://registry.npmjs.org/purescript/-/purescript-0.15.14.tgz", @@ -4510,6 +6333,24 @@ } } }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, "readable-stream": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", @@ -4541,6 +6382,12 @@ "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", "dev": true }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, "rimraf": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", @@ -4550,6 +6397,64 @@ "glob": "^7.1.3" } }, + "run-applescript": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", + "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + }, + "dependencies": { + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, "run-queue": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", @@ -4569,8 +6474,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "optional": true + "dev": true }, "semver": { "version": "7.3.8", @@ -4619,6 +6523,23 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -4684,15 +6605,88 @@ } }, "spago": { + "version": "0.93.24", + "resolved": "https://registry.npmjs.org/spago/-/spago-0.93.24.tgz", + "integrity": "sha512-wedo3N9Lc+4r1lMasmJwp0pJ5XsdYg3bvZiGYBujCplMMU2Fae4VQJcEm6apJU/FlJ96ZnxBYFDzduBqc0x9rQ==", + "dev": true, + "requires": { + "better-sqlite3": "^8.6.0", + "env-paths": "^3.0.0", + "fast-glob": "^3.2.11", + "fs-extra": "^10.0.0", + "fuse.js": "^6.5.3", + "glob": "^7.1.6", + "markdown-it": "^12.0.4", + "open": "^9.1.0", + "punycode": "^2.3.0", + "semver": "^7.3.5", + "spdx-expression-parse": "^3.0.1", + "ssh2": "^1.14.0", + "supports-color": "^9.2.3", + "tar": "^6.1.11", + "tmp": "^0.2.1", + "xhr2": "^0.2.1", + "yaml": "^2.1.1" + }, + "dependencies": { + "env-paths": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", + "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", + "dev": true + }, + "supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true + } + } + }, + "spago-legacy": { "version": "0.21.0", - "resolved": "https://registry.npmjs.org/spago/-/spago-0.21.0.tgz", - "integrity": "sha512-1qTPaIhrsLCvneSJt1fyq3CpNMu01Xhcn+b09IMbyrpLcptMoGH5uOtyNL9eohTRMzPWBKUs6ksFLGdjJp7yxQ==", + "resolved": "https://registry.npmjs.org/spago-legacy/-/spago-legacy-0.21.0.tgz", + "integrity": "sha512-tGxrzcqlcsJ69nS8Bxtmmvf8L23Obzouf5OX2oE3O/A5mSN8mKjoknjFtUgX9zyI+8wgaYOUF9Jag3kTYaTRiA==", "dev": true, "requires": { "make-fetch-happen": "^11.0.1", "tar": "^6.1.11" } }, + "spdx-exceptions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.4.0.tgz", + "integrity": "sha512-hcjppoJ68fhxA/cjbN4T8N6uCUejN8yFw69ttpqtBeCbF3u13n7mb31NB9jKwGTTWWnt9IbRA/mf1FprYS8wfw==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "ssh2": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz", + "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==", + "dev": true, + "requires": { + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2", + "cpu-features": "~0.0.9", + "nan": "^2.18.0" + } + }, "ssri": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", @@ -4773,6 +6767,12 @@ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", @@ -4816,6 +6816,44 @@ } } }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, "through2": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", @@ -4826,6 +6864,56 @@ "xtend": "~4.0.1" } }, + "titleize": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", + "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + }, + "dependencies": { + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, "type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -4838,6 +6926,12 @@ "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, "unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -4856,6 +6950,18 @@ "imurmurhash": "^0.1.4" } }, + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + }, + "untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true + }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -4951,6 +7057,12 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xhr2": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/xhr2/-/xhr2-0.2.1.tgz", + "integrity": "sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw==", + "dev": true + }, "xtend": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", @@ -4969,6 +7081,12 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, + "yaml": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true + }, "zen-observable": { "version": "0.8.15", "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz", diff --git a/purs/package.json b/purs/package.json index f46e632..509997e 100644 --- a/purs/package.json +++ b/purs/package.json @@ -12,7 +12,8 @@ "devDependencies": { "esbuild": "^0.19.11", "purescript": "^0.15.14", - "spago": "^0.21.0" + "spago": "^0.93.24", + "spago-legacy": "^0.21.0" }, "dependencies": { "dompurify": "^3.0.8", diff --git a/purs/packages.dhall b/purs/packages.dhall deleted file mode 100644 index 1d66628..0000000 --- a/purs/packages.dhall +++ /dev/null @@ -1,42 +0,0 @@ -{- -### Overriding/Patching a package -let upstream = -- -in upstream - with halogen.version = "master" - with halogen.repo = "https://example.com/path/to/git/repo.git" - with halogen-vdom.version = "v4.0.0" - -### Additions -let upstream = -- -in upstream - with new-package-name = - { dependencies = - [ "dependency1" - , "dependency2" - ] - , repo = - "https://example.com/path/to/git/repo.git" - , version = - "" - } --} -let upstream = - https://raw.githubusercontent.com/purescript/package-sets/psc-0.15.14-20240117/src/packages.dhall - sha256:2ca7a513183cb6273394fc328b0b891044c159af7d9bc11ee7c7e20c3e48e6dc - -in upstream - with simple-json = - { dependencies = - [ "arrays" - , "exceptions" - , "foreign" - , "foreign-object" - , "nullable" - , "prelude" - , "record" - , "typelevel-prelude" - , "variant" - ] - , repo = "https://github.com/justinwoo/purescript-simple-json.git" - , version = "v9.0.0" - } diff --git a/purs/spago.dhall b/purs/spago.dhall deleted file mode 100644 index f881b9f..0000000 --- a/purs/spago.dhall +++ /dev/null @@ -1,41 +0,0 @@ -{ sources = [ "src/**/*.purs", "test/**/*.purs" ] -, name = "espial" -, dependencies = - [ "aff" - , "affjax" - , "affjax-web" - , "arrays" - , "console" - , "const" - , "dom-indexed" - , "effect" - , "either" - , "foldable-traversable" - , "foreign" - , "foreign-object" - , "form-urlencoded" - , "functions" - , "halogen" - , "http-methods" - , "integers" - , "js-uri" - , "maybe" - , "media-types" - , "newtype" - , "nullable" - , "numbers" - , "partial" - , "prelude" - , "profunctor-lenses" - , "simple-json" - , "strings" - , "transformers" - , "tuples" - , "unsafe-coerce" - , "web-dom" - , "web-events" - , "web-html" - , "web-xhr" - ] -, packages = ./packages.dhall -} diff --git a/purs/spago.lock b/purs/spago.lock new file mode 100644 index 0000000..b8eac08 --- /dev/null +++ b/purs/spago.lock @@ -0,0 +1,1490 @@ +workspace: + packages: + espial: + path: ./ + dependencies: + - aff + - affjax + - affjax-web + - arrays + - console + - const + - dom-indexed + - effect + - either + - foldable-traversable + - foreign + - foreign-object + - form-urlencoded + - functions + - halogen + - http-methods + - integers + - js-uri + - maybe + - media-types + - newtype + - nullable + - numbers + - partial + - prelude + - profunctor-lenses + - simple-json + - strings + - transformers + - tuples + - unsafe-coerce + - web-dom + - web-events + - web-html + - web-xhr + test_dependencies: [] + build_plan: + - aff + - affjax + - affjax-web + - argonaut-core + - arraybuffer-types + - arrays + - avar + - bifunctors + - catenable-lists + - console + - const + - contravariant + - control + - datetime + - distributive + - dom-indexed + - effect + - either + - enums + - exceptions + - exists + - foldable-traversable + - foreign + - foreign-object + - fork + - form-urlencoded + - free + - freeap + - functions + - functors + - gen + - halogen + - halogen-subscriptions + - halogen-vdom + - http-methods + - identity + - integers + - invariant + - js-date + - js-promise + - js-uri + - lazy + - lists + - maybe + - media-types + - newtype + - nonempty + - now + - nullable + - numbers + - ordered-collections + - orders + - parallel + - partial + - prelude + - profunctor + - profunctor-lenses + - record + - refs + - safe-coerce + - simple-json + - st + - strings + - tailrec + - transformers + - tuples + - type-equality + - typelevel-prelude + - unfoldable + - unsafe-coerce + - unsafe-reference + - variant + - web-clipboard + - web-dom + - web-events + - web-file + - web-html + - web-pointerevents + - web-storage + - web-touchevents + - web-uievents + - web-xhr + package_set: + address: + registry: 48.7.0 + compiler: ">=0.15.14 <0.16.0" + content: + abc-parser: 2.0.1 + ace: 9.1.0 + aff: 7.1.0 + aff-bus: 6.0.0 + aff-coroutines: 9.0.0 + aff-promise: 4.0.0 + aff-retry: 2.0.0 + affjax: 13.0.0 + affjax-node: 1.0.0 + affjax-web: 1.0.0 + ansi: 7.0.0 + applicative-phases: 1.0.0 + argonaut: 9.0.0 + argonaut-aeson-generic: 0.4.1 + argonaut-codecs: 9.1.0 + argonaut-core: 7.0.0 + argonaut-generic: 8.0.0 + argonaut-traversals: 10.0.0 + argparse-basic: 2.0.0 + array-builder: 0.1.2 + array-search: 0.5.6 + arraybuffer: 13.2.0 + arraybuffer-builder: 3.1.0 + arraybuffer-types: 3.0.2 + arrays: 7.3.0 + arrays-extra: 0.6.0 + arrays-zipper: 2.0.1 + ask: 1.0.0 + assert: 6.0.0 + assert-multiple: 0.3.4 + avar: 5.0.0 + b64: 0.0.8 + barbies: 1.0.1 + barlow-lens: 0.9.0 + bifunctors: 6.0.0 + bigints: 7.0.1 + bolson: 0.3.9 + bookhound: 0.1.7 + bower-json: 3.0.0 + call-by-name: 4.0.1 + canvas: 6.0.0 + canvas-action: 9.0.0 + cartesian: 1.0.6 + catenable-lists: 7.0.0 + chameleon: 1.0.0 + chameleon-halogen: 1.0.3 + chameleon-react-basic: 1.1.0 + chameleon-styled: 2.5.0 + chameleon-transformers: 1.0.0 + channel: 1.0.0 + checked-exceptions: 3.1.1 + choku: 0.2.2 + classless: 0.1.1 + classless-arbitrary: 0.1.1 + classless-decode-json: 0.1.1 + classless-encode-json: 0.1.3 + classnames: 2.0.0 + codec: 6.1.0 + codec-argonaut: 10.0.0 + codec-json: 1.1.0 + colors: 7.0.1 + concur-core: 0.5.0 + concur-react: 0.5.0 + concurrent-queues: 3.0.0 + console: 6.1.0 + const: 6.0.0 + contravariant: 6.0.0 + control: 6.0.0 + convertable-options: 1.0.0 + coroutines: 7.0.0 + css: 6.0.0 + css-frameworks: 1.0.1 + data-mvc: 0.0.2 + datetime: 6.1.0 + datetime-parsing: 0.2.0 + debug: 6.0.2 + decimals: 7.1.0 + default-values: 1.0.1 + deku: 0.9.23 + deno: 0.0.5 + dissect: 1.0.0 + distributive: 6.0.0 + dom-filereader: 7.0.0 + dom-indexed: 12.0.0 + dotenv: 4.0.3 + droplet: 0.6.0 + dts: 1.0.0 + dual-numbers: 1.0.2 + dynamic-buffer: 3.0.1 + echarts-simple: 0.0.1 + effect: 4.0.0 + either: 6.1.0 + elmish: 0.11.3 + elmish-enzyme: 0.1.1 + elmish-hooks: 0.10.0 + elmish-html: 0.8.2 + elmish-testing-library: 0.3.2 + email-validate: 7.0.0 + encoding: 0.0.8 + enums: 6.0.1 + env-names: 0.3.4 + error: 2.0.0 + eta-conversion: 0.3.2 + exceptions: 6.0.0 + exists: 6.0.0 + exitcodes: 4.0.0 + expect-inferred: 3.0.0 + fahrtwind: 2.0.0 + fallback: 0.1.0 + fast-vect: 1.2.0 + fetch: 4.1.0 + fetch-argonaut: 1.0.1 + fetch-core: 5.1.0 + fetch-yoga-json: 1.1.0 + fft-js: 0.1.0 + filterable: 5.0.0 + fix-functor: 0.1.0 + fixed-points: 7.0.0 + fixed-precision: 5.0.0 + flame: 1.3.0 + float32: 2.0.0 + fmt: 0.2.1 + foldable-traversable: 6.0.0 + foldable-traversable-extra: 0.0.6 + foreign: 7.0.0 + foreign-object: 4.1.0 + foreign-readwrite: 3.4.0 + forgetmenot: 0.1.0 + fork: 6.0.0 + form-urlencoded: 7.0.0 + formatters: 7.0.0 + framer-motion: 1.0.1 + free: 7.1.0 + freeap: 7.0.0 + freer-free: 0.0.1 + freet: 7.0.0 + functions: 6.0.0 + functor1: 3.0.0 + functors: 5.0.0 + fuzzy: 0.4.0 + gen: 4.0.0 + generate-values: 1.0.1 + generic-router: 0.0.1 + geojson: 0.0.5 + geometry-plane: 1.0.3 + gojs: 0.1.1 + grain: 3.0.0 + grain-router: 3.0.0 + grain-virtualized: 3.0.0 + graphs: 8.1.0 + group: 4.1.1 + halogen: 7.0.0 + halogen-bootstrap5: 5.3.2 + halogen-css: 10.0.0 + halogen-echarts-simple: 0.0.4 + halogen-formless: 4.0.3 + halogen-helix: 1.0.0 + halogen-hooks: 0.6.3 + halogen-hooks-extra: 0.9.0 + halogen-infinite-scroll: 1.1.0 + halogen-store: 0.5.4 + halogen-storybook: 2.0.0 + halogen-subscriptions: 2.0.0 + halogen-svg-elems: 8.0.0 + halogen-typewriter: 1.0.4 + halogen-vdom: 8.0.0 + halogen-vdom-string-renderer: 0.5.0 + halogen-xterm: 1.0.0 + heckin: 2.0.1 + heterogeneous: 0.6.0 + homogeneous: 0.4.0 + http-methods: 6.0.0 + httpurple: 4.0.0 + humdrum: 0.0.1 + hyrule: 2.3.8 + identity: 6.0.0 + identy: 4.0.1 + indexed-db: 1.0.0 + indexed-monad: 3.0.0 + int64: 3.0.0 + integers: 6.0.0 + interpolate: 5.0.2 + intersection-observer: 1.0.1 + invariant: 6.0.0 + jarilo: 1.0.1 + jelly: 0.10.0 + jelly-router: 0.3.0 + jelly-signal: 0.4.0 + jest: 1.0.0 + js-abort-controller: 1.0.0 + js-bigints: 2.2.1 + js-date: 8.0.0 + js-fetch: 0.2.1 + js-fileio: 3.0.0 + js-intl: 1.0.4 + js-iterators: 0.1.1 + js-maps: 0.1.2 + js-promise: 1.0.0 + js-promise-aff: 1.0.0 + js-timers: 6.1.0 + js-uri: 3.1.0 + json: 1.0.0 + json-codecs: 5.0.0 + justifill: 0.5.0 + jwt: 0.0.9 + labeled-data: 0.2.0 + lazy: 6.0.0 + lazy-joe: 1.0.0 + lcg: 4.0.0 + leibniz: 5.0.0 + leveldb: 1.0.1 + liminal: 1.0.1 + linalg: 6.0.0 + lists: 7.0.0 + literals: 1.0.2 + logging: 3.0.0 + logging-journald: 0.4.0 + lumi-components: 18.0.0 + machines: 7.0.0 + maps-eager: 0.4.1 + marionette: 1.0.0 + marionette-react-basic-hooks: 0.1.1 + marked: 0.1.0 + matrices: 5.0.1 + matryoshka: 1.0.0 + maybe: 6.0.0 + media-types: 6.0.0 + meowclient: 1.0.0 + midi: 4.0.0 + milkis: 9.0.0 + minibench: 4.0.1 + mmorph: 7.0.0 + monad-control: 5.0.0 + monad-logger: 1.3.1 + monad-loops: 0.5.0 + monad-unlift: 1.0.1 + monoid-extras: 0.0.1 + monoidal: 0.16.0 + morello: 0.4.0 + mote: 3.0.0 + motsunabe: 2.0.0 + mvc: 0.0.1 + mysql: 6.0.1 + n3: 0.1.0 + nano-id: 1.1.0 + nanoid: 0.1.0 + naturals: 3.0.0 + nested-functor: 0.2.1 + newtype: 5.0.0 + nextjs: 0.1.1 + nextui: 0.2.0 + node-buffer: 9.0.0 + node-child-process: 11.1.0 + node-event-emitter: 3.0.0 + node-execa: 5.0.0 + node-fs: 9.1.0 + node-glob-basic: 1.3.0 + node-http: 9.1.0 + node-http2: 1.1.1 + node-human-signals: 1.0.0 + node-net: 5.1.0 + node-os: 5.1.0 + node-path: 5.0.0 + node-process: 11.2.0 + node-readline: 8.1.0 + node-sqlite3: 8.0.0 + node-streams: 9.0.0 + node-tls: 0.3.1 + node-url: 7.0.1 + node-zlib: 0.4.0 + nonempty: 7.0.0 + now: 6.0.0 + npm-package-json: 2.0.0 + nullable: 6.0.0 + numberfield: 0.1.0 + numbers: 9.0.1 + oak: 3.1.1 + oak-debug: 1.2.2 + object-maps: 0.3.0 + ocarina: 1.5.4 + open-folds: 6.3.0 + open-memoize: 6.1.0 + open-pairing: 6.1.0 + options: 7.0.0 + optparse: 5.0.1 + ordered-collections: 3.1.1 + ordered-set: 0.4.0 + orders: 6.0.0 + owoify: 1.2.0 + pairs: 9.0.1 + parallel: 7.0.0 + parsing: 10.2.0 + parsing-dataview: 3.2.4 + partial: 4.0.0 + pathy: 9.0.0 + pha: 0.13.0 + phaser: 0.7.0 + phylio: 1.1.2 + pipes: 8.0.0 + pirates-charm: 0.0.1 + pmock: 0.9.0 + point-free: 1.0.0 + pointed-list: 0.5.1 + polymorphic-vectors: 4.0.0 + posix-types: 6.0.0 + precise: 6.0.0 + precise-datetime: 7.0.0 + prelude: 6.0.1 + prettier-printer: 3.0.0 + profunctor: 6.0.0 + profunctor-lenses: 8.0.0 + protobuf: 4.3.0 + psa-utils: 8.0.0 + psci-support: 6.0.0 + punycode: 1.0.0 + qualified-do: 2.2.0 + quantities: 12.2.0 + quickcheck: 8.0.1 + quickcheck-combinators: 0.1.3 + quickcheck-laws: 7.0.0 + quickcheck-utf8: 0.0.0 + random: 6.0.0 + rationals: 6.0.0 + rdf: 0.1.0 + react: 11.0.0 + react-aria: 0.2.0 + react-basic: 17.0.0 + react-basic-classic: 3.0.0 + react-basic-dnd: 10.1.0 + react-basic-dom: 6.1.0 + react-basic-emotion: 7.1.0 + react-basic-hooks: 8.2.0 + react-basic-storybook: 2.0.0 + react-dom: 8.0.0 + react-halo: 3.0.0 + react-icons: 1.1.4 + react-markdown: 0.1.0 + react-testing-library: 4.0.1 + react-virtuoso: 1.0.0 + read: 1.0.1 + recharts: 1.1.0 + record: 4.0.0 + record-extra: 5.0.1 + record-ptional-fields: 0.1.2 + record-studio: 1.0.4 + refs: 6.0.0 + remotedata: 5.0.0 + resize-observer: 1.0.0 + resource: 2.0.1 + resourcet: 1.0.0 + result: 1.0.3 + return: 0.2.0 + ring-modules: 5.0.1 + rito: 0.3.4 + routing: 11.0.0 + routing-duplex: 0.7.0 + run: 5.0.0 + safe-coerce: 2.0.0 + safely: 4.0.1 + school-of-music: 1.3.0 + selection-foldable: 0.2.0 + selective-functors: 1.0.1 + semirings: 7.0.0 + signal: 13.0.0 + simple-emitter: 3.0.1 + simple-i18n: 2.0.1 + simple-json: 9.0.0 + simple-ulid: 3.0.0 + sized-matrices: 1.0.0 + sized-vectors: 5.0.2 + slug: 3.0.8 + small-ffi: 4.0.1 + soundfonts: 4.1.0 + sparse-matrices: 1.3.0 + sparse-polynomials: 2.0.5 + spec: 7.5.5 + spec-mocha: 5.1.0 + spec-quickcheck: 5.0.0 + splitmix: 2.1.0 + ssrs: 1.0.0 + st: 6.2.0 + statistics: 0.3.2 + strictlypositiveint: 1.0.1 + string-parsers: 8.0.0 + strings: 6.0.1 + strings-extra: 4.0.0 + stringutils: 0.0.12 + substitute: 0.2.3 + supply: 0.2.0 + svg-parser: 3.0.0 + systemd-journald: 0.3.0 + tagged: 4.0.2 + tailrec: 6.1.0 + tecton: 0.2.1 + tecton-halogen: 0.2.0 + test-unit: 17.0.0 + thermite: 6.3.1 + thermite-dom: 0.3.1 + these: 6.0.0 + transformation-matrix: 1.0.1 + transformers: 6.0.0 + tree-rose: 4.0.2 + ts-bridge: 4.0.0 + tuples: 7.0.0 + two-or-more: 1.0.0 + type-equality: 4.0.1 + typedenv: 2.0.1 + typelevel: 6.0.0 + typelevel-lists: 2.1.0 + typelevel-peano: 1.0.1 + typelevel-prelude: 7.0.0 + typelevel-regex: 0.0.3 + typelevel-rows: 0.1.0 + uint: 7.0.0 + ulid: 3.0.1 + uncurried-transformers: 1.1.0 + undefined: 2.0.0 + undefined-is-not-a-problem: 1.1.0 + unfoldable: 6.0.0 + unicode: 6.0.0 + unique: 0.6.1 + unlift: 1.0.1 + unordered-collections: 3.0.1 + unsafe-coerce: 6.0.0 + unsafe-reference: 5.0.0 + untagged-to-tagged: 0.1.4 + untagged-union: 1.0.0 + uri: 9.0.0 + uuid: 9.0.0 + uuidv4: 1.0.0 + validation: 6.0.0 + variant: 8.0.0 + variant-encodings: 2.0.0 + vectorfield: 1.0.1 + vectors: 2.1.0 + versions: 7.0.0 + visx: 0.0.2 + web-clipboard: 5.0.0 + web-cssom: 2.0.0 + web-cssom-view: 0.1.0 + web-dom: 6.0.0 + web-dom-parser: 8.0.0 + web-dom-xpath: 3.0.0 + web-encoding: 3.0.0 + web-events: 4.0.0 + web-fetch: 4.0.1 + web-file: 4.0.0 + web-geometry: 0.1.0 + web-html: 4.1.0 + web-pointerevents: 2.0.0 + web-proletarian: 1.0.0 + web-promise: 3.2.0 + web-resize-observer: 2.1.0 + web-router: 1.0.0 + web-socket: 4.0.0 + web-storage: 5.0.0 + web-streams: 4.0.0 + web-touchevents: 4.0.0 + web-uievents: 5.0.0 + web-url: 2.0.0 + web-workers: 1.1.0 + web-xhr: 5.0.1 + webextension-polyfill: 0.1.0 + webgpu: 0.0.1 + which: 2.0.0 + xterm: 1.0.0 + yoga-fetch: 1.0.1 + yoga-json: 5.1.0 + yoga-om: 0.1.0 + yoga-postgres: 6.0.0 + yoga-tree: 1.0.0 + z3: 0.0.2 + zipperarray: 2.0.0 + extra_packages: {} +packages: + aff: + type: registry + version: 7.1.0 + integrity: sha256-7hOC6uQO9XBAI5FD8F33ChLjFAiZVfd4BJMqlMh7TNU= + dependencies: + - arrays + - bifunctors + - control + - datetime + - effect + - either + - exceptions + - foldable-traversable + - functions + - maybe + - newtype + - parallel + - prelude + - refs + - tailrec + - transformers + - unsafe-coerce + affjax: + type: registry + version: 13.0.0 + integrity: sha256-blYfaoW4FYIrIdvmT4sB7nN7BathFaEfZuiVLPmHJOo= + dependencies: + - aff + - argonaut-core + - arraybuffer-types + - foreign + - form-urlencoded + - http-methods + - integers + - media-types + - nullable + - refs + - unsafe-coerce + - web-xhr + affjax-web: + type: registry + version: 1.0.0 + integrity: sha256-n/yJUk1wMxMN7fJ2TJ+fELgieomy29N617yOshAnrc0= + dependencies: + - aff + - affjax + - either + - maybe + - prelude + argonaut-core: + type: registry + version: 7.0.0 + integrity: sha256-RC82GfAjItydxrO24cdX373KHVZiLqybu19b5X8u7B4= + dependencies: + - arrays + - control + - either + - foreign-object + - functions + - gen + - maybe + - nonempty + - prelude + - strings + - tailrec + arraybuffer-types: + type: registry + version: 3.0.2 + integrity: sha256-mQKokysYVkooS4uXbO+yovmV/s8b138Ws3zQvOwIHRA= + dependencies: [] + arrays: + type: registry + version: 7.3.0 + integrity: sha256-tmcklBlc/muUtUfr9RapdCPwnlQeB3aSrC4dK85gQlc= + dependencies: + - bifunctors + - control + - foldable-traversable + - functions + - maybe + - nonempty + - partial + - prelude + - safe-coerce + - st + - tailrec + - tuples + - unfoldable + - unsafe-coerce + avar: + type: registry + version: 5.0.0 + integrity: sha256-e7hf0x4hEpcygXP0LtvfvAQ49Bbj2aWtZT3gqM///0A= + dependencies: + - aff + - effect + - either + - exceptions + - functions + - maybe + bifunctors: + type: registry + version: 6.0.0 + integrity: sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw= + dependencies: + - const + - either + - newtype + - prelude + - tuples + catenable-lists: + type: registry + version: 7.0.0 + integrity: sha256-76vYENhwF4BWTBsjeLuErCH2jqVT4M3R1HX+4RwSftA= + dependencies: + - control + - foldable-traversable + - lists + - maybe + - prelude + - tuples + - unfoldable + console: + type: registry + version: 6.1.0 + integrity: sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM= + dependencies: + - effect + - prelude + const: + type: registry + version: 6.0.0 + integrity: sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc= + dependencies: + - invariant + - newtype + - prelude + contravariant: + type: registry + version: 6.0.0 + integrity: sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c= + dependencies: + - const + - either + - newtype + - prelude + - tuples + control: + type: registry + version: 6.0.0 + integrity: sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk= + dependencies: + - newtype + - prelude + datetime: + type: registry + version: 6.1.0 + integrity: sha256-g/5X5BBegQWLpI9IWD+sY6mcaYpzzlW5lz5NBzaMtyI= + dependencies: + - bifunctors + - control + - either + - enums + - foldable-traversable + - functions + - gen + - integers + - lists + - maybe + - newtype + - numbers + - ordered-collections + - partial + - prelude + - tuples + distributive: + type: registry + version: 6.0.0 + integrity: sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ= + dependencies: + - identity + - newtype + - prelude + - tuples + - type-equality + dom-indexed: + type: registry + version: 12.0.0 + integrity: sha256-bltgxNRfJrJc73YirgM+8u4AqdJAsuaKr7epwzIayF0= + dependencies: + - media-types + - prelude + - web-clipboard + - web-pointerevents + - web-touchevents + effect: + type: registry + version: 4.0.0 + integrity: sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M= + dependencies: + - prelude + either: + type: registry + version: 6.1.0 + integrity: sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY= + dependencies: + - control + - invariant + - maybe + - prelude + enums: + type: registry + version: 6.0.1 + integrity: sha256-HWaD73JFLorc4A6trKIRUeDMdzE+GpkJaEOM1nTNkC8= + dependencies: + - control + - either + - gen + - maybe + - newtype + - nonempty + - partial + - prelude + - tuples + - unfoldable + exceptions: + type: registry + version: 6.0.0 + integrity: sha256-y/xTAEIZIARCE+50/u1di0ncebJ+CIwNOLswyOWzMTw= + dependencies: + - effect + - either + - maybe + - prelude + exists: + type: registry + version: 6.0.0 + integrity: sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8= + dependencies: + - unsafe-coerce + foldable-traversable: + type: registry + version: 6.0.0 + integrity: sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM= + dependencies: + - bifunctors + - const + - control + - either + - functors + - identity + - maybe + - newtype + - orders + - prelude + - tuples + foreign: + type: registry + version: 7.0.0 + integrity: sha256-1ORiqoS3HW+qfwSZAppHPWy4/6AQysxZ2t29jcdUMNA= + dependencies: + - either + - functions + - identity + - integers + - lists + - maybe + - prelude + - strings + - transformers + foreign-object: + type: registry + version: 4.1.0 + integrity: sha256-q24okj6mT+yGHYQ+ei/pYPj5ih6sTbu7eDv/WU56JVo= + dependencies: + - arrays + - foldable-traversable + - functions + - gen + - lists + - maybe + - prelude + - st + - tailrec + - tuples + - typelevel-prelude + - unfoldable + fork: + type: registry + version: 6.0.0 + integrity: sha256-X7u0SuCvFbLbzuNEKLBNuWjmcroqMqit4xEzpQwAP7E= + dependencies: + - aff + form-urlencoded: + type: registry + version: 7.0.0 + integrity: sha256-WUzk8DTjrbPVHKZ5w7XpPBO6ci6xFhvYguHp6RvX+18= + dependencies: + - foldable-traversable + - js-uri + - maybe + - newtype + - prelude + - strings + - tuples + free: + type: registry + version: 7.1.0 + integrity: sha256-JAumgEsGSzJCNLD8AaFvuX7CpqS5yruCngi6yI7+V5k= + dependencies: + - catenable-lists + - control + - distributive + - either + - exists + - foldable-traversable + - invariant + - lazy + - maybe + - prelude + - tailrec + - transformers + - tuples + - unsafe-coerce + freeap: + type: registry + version: 7.0.0 + integrity: sha256-T1VbmNxdNSKEgV4p8uFFv0F16cz+Xx1BkfF64etSdNI= + dependencies: + - const + - exists + - gen + - lists + functions: + type: registry + version: 6.0.0 + integrity: sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI= + dependencies: + - prelude + functors: + type: registry + version: 5.0.0 + integrity: sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU= + dependencies: + - bifunctors + - const + - contravariant + - control + - distributive + - either + - invariant + - maybe + - newtype + - prelude + - profunctor + - tuples + - unsafe-coerce + gen: + type: registry + version: 4.0.0 + integrity: sha256-f7yzAXWwr+xnaqEOcvyO3ezKdoes8+WXWdXIHDBCAPI= + dependencies: + - either + - foldable-traversable + - identity + - maybe + - newtype + - nonempty + - prelude + - tailrec + - tuples + - unfoldable + halogen: + type: registry + version: 7.0.0 + integrity: sha256-aAE8oW32YiDdA3oQZxPbFkK4n31paT4JL6pvzOe47YE= + dependencies: + - aff + - avar + - console + - const + - dom-indexed + - effect + - foreign + - fork + - free + - freeap + - halogen-subscriptions + - halogen-vdom + - media-types + - nullable + - ordered-collections + - parallel + - profunctor + - transformers + - unsafe-coerce + - unsafe-reference + - web-file + - web-uievents + halogen-subscriptions: + type: registry + version: 2.0.0 + integrity: sha256-8/BPME/sC/kWMDxp0+n4k09gA1IIedXn2yUJ4pCH5xw= + dependencies: + - arrays + - effect + - foldable-traversable + - functors + - refs + - safe-coerce + - unsafe-reference + halogen-vdom: + type: registry + version: 8.0.0 + integrity: sha256-5UMDekaYNSM3jtpfWoWTbmZ38rIcnguzGRW3z+IQgV4= + dependencies: + - bifunctors + - effect + - foreign + - foreign-object + - maybe + - prelude + - refs + - tuples + - unsafe-coerce + - web-html + http-methods: + type: registry + version: 6.0.0 + integrity: sha256-Orr7rbDGcp7qoqmUMXPRMjBx+C4jqOQcFe9+gE3nMgU= + dependencies: + - either + - prelude + - strings + identity: + type: registry + version: 6.0.0 + integrity: sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY= + dependencies: + - control + - invariant + - newtype + - prelude + integers: + type: registry + version: 6.0.0 + integrity: sha256-sf+sK26R1hzwl3NhXR7WAu9zCDjQnfoXwcyGoseX158= + dependencies: + - maybe + - numbers + - prelude + invariant: + type: registry + version: 6.0.0 + integrity: sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo= + dependencies: + - control + - prelude + js-date: + type: registry + version: 8.0.0 + integrity: sha256-6TVF4DWg5JL+jRAsoMssYw8rgOVALMUHT1CuNZt8NRo= + dependencies: + - datetime + - effect + - exceptions + - foreign + - integers + - now + js-promise: + type: registry + version: 1.0.0 + integrity: sha256-kXNo5g9RJgPdrTuKRe5oG2kBIwPp+j5VDPDplqZBJzQ= + dependencies: + - effect + - exceptions + - foldable-traversable + - functions + - maybe + - prelude + js-uri: + type: registry + version: 3.1.0 + integrity: sha256-3p0ynHveCJmC2CXze+eMBdW/2l5e953Q8XMAKz+jxUo= + dependencies: + - functions + - maybe + lazy: + type: registry + version: 6.0.0 + integrity: sha256-lMsfFOnlqfe4KzRRiW8ot5ge6HtcU3Eyh2XkXcP5IgU= + dependencies: + - control + - foldable-traversable + - invariant + - prelude + lists: + type: registry + version: 7.0.0 + integrity: sha256-EKF15qYqucuXP2lT/xPxhqy58f0FFT6KHdIB/yBOayI= + dependencies: + - bifunctors + - control + - foldable-traversable + - lazy + - maybe + - newtype + - nonempty + - partial + - prelude + - tailrec + - tuples + - unfoldable + maybe: + type: registry + version: 6.0.0 + integrity: sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q= + dependencies: + - control + - invariant + - newtype + - prelude + media-types: + type: registry + version: 6.0.0 + integrity: sha256-n/4FoGBasbVSYscGVRSyBunQ6CZbL3jsYL+Lp01mc9k= + dependencies: + - newtype + - prelude + newtype: + type: registry + version: 5.0.0 + integrity: sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw= + dependencies: + - prelude + - safe-coerce + nonempty: + type: registry + version: 7.0.0 + integrity: sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs= + dependencies: + - control + - foldable-traversable + - maybe + - prelude + - tuples + - unfoldable + now: + type: registry + version: 6.0.0 + integrity: sha256-xZ7x37ZMREfs6GCDw/h+FaKHV/3sPWmtqBZRGTxybQY= + dependencies: + - datetime + - effect + nullable: + type: registry + version: 6.0.0 + integrity: sha256-yiGBVl3AD+Guy4kNWWeN+zl1gCiJK+oeIFtZtPCw4+o= + dependencies: + - effect + - functions + - maybe + numbers: + type: registry + version: 9.0.1 + integrity: sha256-/9M6aeMDBdB4cwYDeJvLFprAHZ49EbtKQLIJsneXLIk= + dependencies: + - functions + - maybe + ordered-collections: + type: registry + version: 3.1.1 + integrity: sha256-boSYHmlz4aSbwsNN4VxiwCStc0t+y1F7BXmBS+1JNtI= + dependencies: + - arrays + - foldable-traversable + - gen + - lists + - maybe + - partial + - prelude + - st + - tailrec + - tuples + - unfoldable + orders: + type: registry + version: 6.0.0 + integrity: sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink= + dependencies: + - newtype + - prelude + parallel: + type: registry + version: 7.0.0 + integrity: sha256-gUC9i4Txnx9K9RcMLsjujbwZz6BB1bnE2MLvw4GIw5o= + dependencies: + - control + - effect + - either + - foldable-traversable + - functors + - maybe + - newtype + - prelude + - profunctor + - refs + - transformers + partial: + type: registry + version: 4.0.0 + integrity: sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4= + dependencies: [] + prelude: + type: registry + version: 6.0.1 + integrity: sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0= + dependencies: [] + profunctor: + type: registry + version: 6.0.0 + integrity: sha256-99NzxFgTr4CGlCSRYG1kShL+JhYbihhHtbOk1/0R5zI= + dependencies: + - control + - distributive + - either + - exists + - invariant + - newtype + - prelude + - tuples + profunctor-lenses: + type: registry + version: 8.0.0 + integrity: sha256-K7f29rHRHgVSb2Y/PaSKtfYPriP6n87BJNO7EhsZHas= + dependencies: + - arrays + - bifunctors + - const + - control + - distributive + - either + - foldable-traversable + - foreign-object + - functors + - identity + - lists + - maybe + - newtype + - ordered-collections + - partial + - prelude + - profunctor + - record + - transformers + - tuples + record: + type: registry + version: 4.0.0 + integrity: sha256-Za5U85bTRJEfGK5Sk4hM41oXy84YQI0I8TL3WUn1Qzg= + dependencies: + - functions + - prelude + - unsafe-coerce + refs: + type: registry + version: 6.0.0 + integrity: sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s= + dependencies: + - effect + - prelude + safe-coerce: + type: registry + version: 2.0.0 + integrity: sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU= + dependencies: + - unsafe-coerce + simple-json: + type: registry + version: 9.0.0 + integrity: sha256-K3RJaThqsszTd+TEklzZmAdDqvIHWgXIfKqlsoykU1c= + dependencies: + - arrays + - exceptions + - foreign + - foreign-object + - nullable + - prelude + - record + - typelevel-prelude + - variant + st: + type: registry + version: 6.2.0 + integrity: sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY= + dependencies: + - partial + - prelude + - tailrec + - unsafe-coerce + strings: + type: registry + version: 6.0.1 + integrity: sha256-WssD3DbX4OPzxSdjvRMX0yvc9+pS7n5gyPv5I2Trb7k= + dependencies: + - arrays + - control + - either + - enums + - foldable-traversable + - gen + - integers + - maybe + - newtype + - nonempty + - partial + - prelude + - tailrec + - tuples + - unfoldable + - unsafe-coerce + tailrec: + type: registry + version: 6.1.0 + integrity: sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk= + dependencies: + - bifunctors + - effect + - either + - identity + - maybe + - partial + - prelude + - refs + transformers: + type: registry + version: 6.0.0 + integrity: sha256-Pzw40HjthX77tdPAYzjx43LK3X5Bb7ZspYAp27wksFA= + dependencies: + - control + - distributive + - effect + - either + - exceptions + - foldable-traversable + - identity + - lazy + - maybe + - newtype + - prelude + - tailrec + - tuples + - unfoldable + tuples: + type: registry + version: 7.0.0 + integrity: sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M= + dependencies: + - control + - invariant + - prelude + type-equality: + type: registry + version: 4.0.1 + integrity: sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw= + dependencies: [] + typelevel-prelude: + type: registry + version: 7.0.0 + integrity: sha256-uFF2ph+vHcQpfPuPf2a3ukJDFmLhApmkpTMviHIWgJM= + dependencies: + - prelude + - type-equality + unfoldable: + type: registry + version: 6.0.0 + integrity: sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg= + dependencies: + - foldable-traversable + - maybe + - partial + - prelude + - tuples + unsafe-coerce: + type: registry + version: 6.0.0 + integrity: sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0= + dependencies: [] + unsafe-reference: + type: registry + version: 5.0.0 + integrity: sha256-zU7BhfJU14nXQRZG9iADsp0mSiKhz07OcKyjRB2YT+Y= + dependencies: + - prelude + variant: + type: registry + version: 8.0.0 + integrity: sha256-SR//zQDg2dnbB8ZHslcxieUkCeNlbMToapvmh9onTtw= + dependencies: + - enums + - lists + - maybe + - partial + - prelude + - record + - tuples + - unsafe-coerce + web-clipboard: + type: registry + version: 5.0.0 + integrity: sha256-TbZEMovHhks9Qa7JXodJabvKDpeFkl6swfPKqhXd/lE= + dependencies: + - js-promise + - web-html + web-dom: + type: registry + version: 6.0.0 + integrity: sha256-1kSKWFDI4LupdmpjK01b1MMxDFW7jvatEgPgVmCmSBQ= + dependencies: + - web-events + web-events: + type: registry + version: 4.0.0 + integrity: sha256-YDt8b6u1tzGtnWyNRodne57iO8FNSGPaTCVzBUyUn4k= + dependencies: + - datetime + - enums + - foreign + - nullable + web-file: + type: registry + version: 4.0.0 + integrity: sha256-1h5jPBkvjY71jLEdwVadXCx86/2inNoMBO//Rd3eCSU= + dependencies: + - foreign + - media-types + - web-dom + web-html: + type: registry + version: 4.1.0 + integrity: sha256-ByqS/h1/yG+hjCOnOQp7L1QpIWzQENNKB1kaHtpEhlE= + dependencies: + - js-date + - web-dom + - web-file + - web-storage + web-pointerevents: + type: registry + version: 2.0.0 + integrity: sha256-uy1cI/Tck8Cf/MP0psvm2MLNxdijqfLZGLRq5FmuRh0= + dependencies: + - effect + - maybe + - prelude + - web-dom + - web-uievents + web-storage: + type: registry + version: 5.0.0 + integrity: sha256-q+6lxcnfWxus0/nDeFVtF1V+tLehZvvXQ0cduYPLksY= + dependencies: + - nullable + - web-events + web-touchevents: + type: registry + version: 4.0.0 + integrity: sha256-nDHMyXbkDfCEp299RLHCqj5HCDgWXFFy80lGoGjSzms= + dependencies: + - web-uievents + web-uievents: + type: registry + version: 5.0.0 + integrity: sha256-5I+ut9JYno3wowti3vJGs1afKCm1ucppKuy+zhuSyss= + dependencies: + - web-html + web-xhr: + type: registry + version: 5.0.1 + integrity: sha256-3dbIPVG66S+hPrgEVnpD78hrGjE7qlBbsReWOz89Ios= + dependencies: + - arraybuffer-types + - datetime + - http-methods + - web-dom + - web-file + - web-html diff --git a/purs/spago.yaml b/purs/spago.yaml new file mode 100644 index 0000000..bce8901 --- /dev/null +++ b/purs/spago.yaml @@ -0,0 +1,45 @@ +package: + name: espial + dependencies: + - aff + - affjax + - affjax-web + - arrays + - console + - const + - dom-indexed + - effect + - either + - foldable-traversable + - foreign + - foreign-object + - form-urlencoded + - functions + - halogen + - http-methods + - integers + - js-uri + - maybe + - media-types + - newtype + - nullable + - numbers + - partial + - prelude + - profunctor-lenses + - simple-json + - strings + - transformers + - tuples + - unsafe-coerce + - web-dom + - web-events + - web-html + - web-xhr + test: + main: Test.Main + dependencies: [] +workspace: + package_set: + registry: 48.7.0 + extra_packages: {} diff --git a/static/js/app.min.js.gz b/static/js/app.min.js.gz index bfabadffeed5cc5906fe5381872c9dc1a710f60b..4c0ad708745909491ff44c2afef48674536b2c69 100644 GIT binary patch delta 21 dcmaFH7vNJv~0RU(g2z3Ae delta 21 dcmaF>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n", "const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function (x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x) {\n return x;\n };\n}\n\nif (!apply) {\n apply = function (fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!construct) {\n construct = function (Func, args) {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param {Function} func - The function to be wrapped and called.\n * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param {Function} func - The constructor function to be wrapped and called.\n * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n return (...args) => construct(func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param {Object} set - The set to which elements will be added.\n * @param {Array} array - The array containing elements to be added to the set.\n * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns {Object} The modified set with added elements.\n */\nfunction addToSet(set, array, transformCaseFunc = stringToLowerCase) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param {Array} array - The array to be cleaned.\n * @returns {Array} The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n if (getOwnPropertyDescriptor(array, index) === undefined) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param {Object} object - The object to be cloned.\n * @returns {Object} A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n if (getOwnPropertyDescriptor(object, property) !== undefined) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param {Object} object - The object to look up the getter function in its prototype chain.\n * @param {String} prop - The property name for which to find the getter function.\n * @returns {Function} The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'section',\n 'select',\n 'shadow',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n]);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n]);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n]);\n\nexport const text = freeze(['#text']);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'xmlns',\n 'slot',\n]);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n]);\n", "import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\n", "import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayPop,\n arrayPush,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n create,\n} from './utils.js';\n\nconst getGlobal = function () {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, purifyHostElement) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n const DOMPurify = (root) => createDOMPurify(root);\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = VERSION;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg = {}) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS =\n 'ALLOWED_TAGS' in cfg\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR =\n 'ALLOWED_ATTR' in cfg\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES =\n 'ALLOWED_NAMESPACES' in cfg\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES =\n 'ADD_URI_SAFE_ATTR' in cfg\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS =\n 'ADD_DATA_URI_TAGS' in cfg\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS =\n 'FORBID_CONTENTS' in cfg\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS =\n 'FORBID_TAGS' in cfg\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : {};\n FORBID_ATTR =\n 'FORBID_ATTR' in cfg\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n const HTML_INTEGRATION_POINTS = addToSet({}, [\n 'foreignobject',\n 'desc',\n 'title',\n 'annotation-xml',\n ]);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element) {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n const _forceRemove = function (node) {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n const _removeAttribute = function (name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node,\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '' +\n dirty +\n '';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param {Node} root The root element or node to start traversing on.\n * @return {NodeIterator} The created NodeIterator\n */\n const _createNodeIterator = function (root) {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT,\n null\n );\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n const _isClobbered = function (elm) {\n return (\n elm instanceof HTMLFormElement &&\n (typeof elm.nodeName !== 'string' ||\n typeof elm.textContent !== 'string' ||\n typeof elm.removeChild !== 'function' ||\n !(elm.attributes instanceof NamedNodeMap) ||\n typeof elm.removeAttribute !== 'function' ||\n typeof elm.setAttribute !== 'function' ||\n typeof elm.namespaceURI !== 'string' ||\n typeof elm.insertBefore !== 'function' ||\n typeof elm.hasChildNodes !== 'function')\n );\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param {Node} object object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n const _isNode = function (object) {\n return typeof Node === 'function' && object instanceof Node;\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n const _executeHook = function (entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], (hook) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode) {\n let content = null;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(\n cloneNode(childNodes[i], true),\n getNextSibling(currentNode)\n );\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param {string} tagName name of the tag of the node to sanitize\n * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName) {\n return tagName.indexOf('-') > 0;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode) {\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} cfg object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {String} tag Tag name of containing element.\n * @param {String} attr Attribute name.\n * @param {String} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n", "export function _ajax(platformSpecificDriver, timeoutErrorMessageIdent, requestFailedMessageIdent, mkHeader, options) {\n return function (errback, callback) {\n var xhr = platformSpecificDriver.newXHR();\n var fixedUrl = platformSpecificDriver.fixupUrl(options.url, xhr);\n xhr.open(options.method || \"GET\", fixedUrl, true, options.username, options.password);\n if (options.headers) {\n try {\n // eslint-disable-next-line no-eq-null,eqeqeq\n for (var i = 0, header; (header = options.headers[i]) != null; i++) {\n xhr.setRequestHeader(header.field, header.value);\n }\n } catch (e) {\n errback(e);\n }\n }\n var onerror = function (msgIdent) {\n return function () {\n errback(new Error(msgIdent));\n };\n };\n xhr.onerror = onerror(requestFailedMessageIdent);\n xhr.ontimeout = onerror(timeoutErrorMessageIdent);\n xhr.onload = function () {\n callback({\n status: xhr.status,\n statusText: xhr.statusText,\n headers: xhr.getAllResponseHeaders().split(\"\\r\\n\")\n .filter(function (header) {\n return header.length > 0;\n })\n .map(function (header) {\n var i = header.indexOf(\":\");\n return mkHeader(header.substring(0, i))(header.substring(i + 2));\n }),\n body: xhr.response\n });\n };\n xhr.responseType = options.responseType;\n xhr.withCredentials = options.withCredentials;\n xhr.timeout = options.timeout;\n xhr.send(options.content);\n\n return function (error, cancelErrback, cancelCallback) {\n try {\n xhr.abort();\n } catch (e) {\n return cancelErrback(e);\n }\n return cancelCallback();\n };\n };\n}\n", "export const arrayMap = function (f) {\n return function (arr) {\n var l = arr.length;\n var result = new Array(l);\n for (var i = 0; i < l; i++) {\n result[i] = f(arr[i]);\n }\n return result;\n };\n};\n", "// Generated by purs version 0.15.14\nvar semigroupoidFn = {\n compose: function (f) {\n return function (g) {\n return function (x) {\n return f(g(x));\n };\n };\n }\n};\nvar compose = function (dict) {\n return dict.compose;\n};\nvar composeFlipped = function (dictSemigroupoid) {\n var compose1 = compose(dictSemigroupoid);\n return function (f) {\n return function (g) {\n return compose1(g)(f);\n };\n };\n};\nexport {\n compose,\n composeFlipped,\n semigroupoidFn\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Semigroupoid from \"../Control.Semigroupoid/index.js\";\nvar identity = function (dict) {\n return dict.identity;\n};\nvar categoryFn = {\n identity: function (x) {\n return x;\n },\n Semigroupoid0: function () {\n return Control_Semigroupoid.semigroupoidFn;\n }\n};\nexport {\n identity,\n categoryFn\n};\nexport {\n compose\n} from \"../Control.Semigroupoid/index.js\";\n", "// Generated by purs version 0.15.14\nvar otherwise = true;\nexport {\n otherwise\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nvar on = function (f) {\n return function (g) {\n return function (x) {\n return function (y) {\n return f(g(x))(g(y));\n };\n };\n };\n};\nvar flip = function (f) {\n return function (b) {\n return function (a) {\n return f(a)(b);\n };\n };\n};\nvar $$const = function (a) {\n return function (v) {\n return a;\n };\n};\nvar applyN = function (f) {\n var go = function ($copy_n) {\n return function ($copy_acc) {\n var $tco_var_n = $copy_n;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(n, acc) {\n if (n <= 0) {\n $tco_done = true;\n return acc;\n };\n if (Data_Boolean.otherwise) {\n $tco_var_n = n - 1 | 0;\n $copy_acc = f(acc);\n return;\n };\n throw new Error(\"Failed pattern match at Data.Function (line 107, column 3 - line 109, column 37): \" + [ n.constructor.name, acc.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_n, $copy_acc);\n };\n return $tco_result;\n };\n };\n return go;\n};\nvar applyFlipped = function (x) {\n return function (f) {\n return f(x);\n };\n};\nvar apply = function (f) {\n return function (x) {\n return f(x);\n };\n};\nexport {\n flip,\n $$const as const,\n apply,\n applyFlipped,\n applyN,\n on\n};\nexport {\n compose,\n identity\n} from \"../Control.Category/index.js\";\n", "// Generated by purs version 0.15.14\nvar $$Proxy = /* #__PURE__ */ (function () {\n function $$Proxy() {\n\n };\n $$Proxy.value = new $$Proxy();\n return $$Proxy;\n})();\nexport {\n $$Proxy as Proxy\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Semigroupoid from \"../Control.Semigroupoid/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar map = function (dict) {\n return dict.map;\n};\nvar mapFlipped = function (dictFunctor) {\n var map1 = map(dictFunctor);\n return function (fa) {\n return function (f) {\n return map1(f)(fa);\n };\n };\n};\nvar $$void = function (dictFunctor) {\n return map(dictFunctor)(Data_Function[\"const\"](Data_Unit.unit));\n};\nvar voidLeft = function (dictFunctor) {\n var map1 = map(dictFunctor);\n return function (f) {\n return function (x) {\n return map1(Data_Function[\"const\"](x))(f);\n };\n };\n};\nvar voidRight = function (dictFunctor) {\n var map1 = map(dictFunctor);\n return function (x) {\n return map1(Data_Function[\"const\"](x));\n };\n};\nvar functorProxy = {\n map: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n }\n};\nvar functorFn = {\n map: /* #__PURE__ */ Control_Semigroupoid.compose(Control_Semigroupoid.semigroupoidFn)\n};\nvar functorArray = {\n map: $foreign.arrayMap\n};\nvar flap = function (dictFunctor) {\n var map1 = map(dictFunctor);\n return function (ff) {\n return function (x) {\n return map1(function (f) {\n return f(x);\n })(ff);\n };\n };\n};\nexport {\n map,\n mapFlipped,\n $$void as void,\n voidRight,\n voidLeft,\n flap,\n functorFn,\n functorArray,\n functorProxy\n};\n", "export const concatString = function (s1) {\n return function (s2) {\n return s1 + s2;\n };\n};\n\nexport const concatArray = function (xs) {\n return function (ys) {\n if (xs.length === 0) return ys;\n if (ys.length === 0) return xs;\n return xs.concat(ys);\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar reifySymbol = function (s) {\n return function (f) {\n return $foreign.unsafeCoerce(function (dictIsSymbol) {\n return f(dictIsSymbol);\n })({\n reflectSymbol: function (v) {\n return s;\n }\n })(Type_Proxy[\"Proxy\"].value);\n };\n};\nvar reflectSymbol = function (dict) {\n return dict.reflectSymbol;\n};\nexport {\n reflectSymbol,\n reifySymbol\n};\n", "// Generated by purs version 0.15.14\nvar Void = function (x) {\n return x;\n};\nvar absurd = function (a) {\n var spin = function ($copy_v) {\n var $tco_result;\n function $tco_loop(v) {\n $copy_v = v;\n return;\n };\n while (!false) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n };\n return spin(a);\n};\nexport {\n absurd\n};\n", "export const unsafeHas = function (label) {\n return function (rec) {\n return {}.hasOwnProperty.call(rec, label);\n };\n};\n\nexport const unsafeGet = function (label) {\n return function (rec) {\n return rec[label];\n };\n};\n\nexport const unsafeSet = function (label) {\n return function (value) {\n return function (rec) {\n var copy = {};\n for (var key in rec) {\n if ({}.hasOwnProperty.call(rec, key)) {\n copy[key] = rec[key];\n }\n }\n copy[label] = value;\n return copy;\n };\n };\n};\n\nexport const unsafeDelete = function (label) {\n return function (rec) {\n var copy = {};\n for (var key in rec) {\n if (key !== label && {}.hasOwnProperty.call(rec, key)) {\n copy[key] = rec[key];\n }\n }\n return copy;\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Data_Void from \"../Data.Void/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar semigroupVoid = {\n append: function (v) {\n return Data_Void.absurd;\n }\n};\nvar semigroupUnit = {\n append: function (v) {\n return function (v1) {\n return Data_Unit.unit;\n };\n }\n};\nvar semigroupString = {\n append: $foreign.concatString\n};\nvar semigroupRecordNil = {\n appendRecord: function (v) {\n return function (v1) {\n return function (v2) {\n return {};\n };\n };\n }\n};\nvar semigroupProxy = {\n append: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n }\n};\nvar semigroupArray = {\n append: $foreign.concatArray\n};\nvar appendRecord = function (dict) {\n return dict.appendRecord;\n};\nvar semigroupRecord = function () {\n return function (dictSemigroupRecord) {\n return {\n append: appendRecord(dictSemigroupRecord)(Type_Proxy[\"Proxy\"].value)\n };\n };\n};\nvar append = function (dict) {\n return dict.append;\n};\nvar semigroupFn = function (dictSemigroup) {\n var append1 = append(dictSemigroup);\n return {\n append: function (f) {\n return function (g) {\n return function (x) {\n return append1(f(x))(g(x));\n };\n };\n }\n };\n};\nvar semigroupRecordCons = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function () {\n return function (dictSemigroupRecord) {\n var appendRecord1 = appendRecord(dictSemigroupRecord);\n return function (dictSemigroup) {\n var append1 = append(dictSemigroup);\n return {\n appendRecord: function (v) {\n return function (ra) {\n return function (rb) {\n var tail = appendRecord1(Type_Proxy[\"Proxy\"].value)(ra)(rb);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n var get = Record_Unsafe.unsafeGet(key);\n return insert(append1(get(ra))(get(rb)))(tail);\n };\n };\n }\n };\n };\n };\n };\n};\nexport {\n append,\n appendRecord,\n semigroupString,\n semigroupUnit,\n semigroupVoid,\n semigroupFn,\n semigroupArray,\n semigroupProxy,\n semigroupRecord,\n semigroupRecordNil,\n semigroupRecordCons\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nvar altArray = {\n alt: /* #__PURE__ */ Data_Semigroup.append(Data_Semigroup.semigroupArray),\n Functor0: function () {\n return Data_Functor.functorArray;\n }\n};\nvar alt = function (dict) {\n return dict.alt;\n};\nexport {\n alt,\n altArray\n};\nexport {\n map,\n void\n} from \"../Data.Functor/index.js\";\n", "export const arrayApply = function (fs) {\n return function (xs) {\n var l = fs.length;\n var k = xs.length;\n var result = new Array(l*k);\n var n = 0;\n for (var i = 0; i < l; i++) {\n var f = fs[i];\n for (var j = 0; j < k; j++) {\n result[n++] = f(xs[j]);\n }\n }\n return result;\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar applyProxy = {\n apply: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n },\n Functor0: function () {\n return Data_Functor.functorProxy;\n }\n};\nvar applyFn = {\n apply: function (f) {\n return function (g) {\n return function (x) {\n return f(x)(g(x));\n };\n };\n },\n Functor0: function () {\n return Data_Functor.functorFn;\n }\n};\nvar applyArray = {\n apply: $foreign.arrayApply,\n Functor0: function () {\n return Data_Functor.functorArray;\n }\n};\nvar apply = function (dict) {\n return dict.apply;\n};\nvar applyFirst = function (dictApply) {\n var apply1 = apply(dictApply);\n var map = Data_Functor.map(dictApply.Functor0());\n return function (a) {\n return function (b) {\n return apply1(map(Data_Function[\"const\"])(a))(b);\n };\n };\n};\nvar applySecond = function (dictApply) {\n var apply1 = apply(dictApply);\n var map = Data_Functor.map(dictApply.Functor0());\n return function (a) {\n return function (b) {\n return apply1(map(Data_Function[\"const\"](identity))(a))(b);\n };\n };\n};\nvar lift2 = function (dictApply) {\n var apply1 = apply(dictApply);\n var map = Data_Functor.map(dictApply.Functor0());\n return function (f) {\n return function (a) {\n return function (b) {\n return apply1(map(f)(a))(b);\n };\n };\n };\n};\nvar lift3 = function (dictApply) {\n var apply1 = apply(dictApply);\n var map = Data_Functor.map(dictApply.Functor0());\n return function (f) {\n return function (a) {\n return function (b) {\n return function (c) {\n return apply1(apply1(map(f)(a))(b))(c);\n };\n };\n };\n };\n};\nvar lift4 = function (dictApply) {\n var apply1 = apply(dictApply);\n var map = Data_Functor.map(dictApply.Functor0());\n return function (f) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return apply1(apply1(apply1(map(f)(a))(b))(c))(d);\n };\n };\n };\n };\n };\n};\nvar lift5 = function (dictApply) {\n var apply1 = apply(dictApply);\n var map = Data_Functor.map(dictApply.Functor0());\n return function (f) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return apply1(apply1(apply1(apply1(map(f)(a))(b))(c))(d))(e);\n };\n };\n };\n };\n };\n };\n};\nexport {\n apply,\n applyFirst,\n applySecond,\n lift2,\n lift3,\n lift4,\n lift5,\n applyFn,\n applyArray,\n applyProxy\n};\nexport {\n map,\n void\n} from \"../Data.Functor/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar pure = function (dict) {\n return dict.pure;\n};\nvar unless = function (dictApplicative) {\n var pure1 = pure(dictApplicative);\n return function (v) {\n return function (v1) {\n if (!v) {\n return v1;\n };\n if (v) {\n return pure1(Data_Unit.unit);\n };\n throw new Error(\"Failed pattern match at Control.Applicative (line 68, column 1 - line 68, column 65): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n};\nvar when = function (dictApplicative) {\n var pure1 = pure(dictApplicative);\n return function (v) {\n return function (v1) {\n if (v) {\n return v1;\n };\n if (!v) {\n return pure1(Data_Unit.unit);\n };\n throw new Error(\"Failed pattern match at Control.Applicative (line 63, column 1 - line 63, column 63): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n};\nvar liftA1 = function (dictApplicative) {\n var apply = Control_Apply.apply(dictApplicative.Apply0());\n var pure1 = pure(dictApplicative);\n return function (f) {\n return function (a) {\n return apply(pure1(f))(a);\n };\n };\n};\nvar applicativeProxy = {\n pure: function (v) {\n return Type_Proxy[\"Proxy\"].value;\n },\n Apply0: function () {\n return Control_Apply.applyProxy;\n }\n};\nvar applicativeFn = {\n pure: function (x) {\n return function (v) {\n return x;\n };\n },\n Apply0: function () {\n return Control_Apply.applyFn;\n }\n};\nvar applicativeArray = {\n pure: function (x) {\n return [ x ];\n },\n Apply0: function () {\n return Control_Apply.applyArray;\n }\n};\nexport {\n pure,\n liftA1,\n unless,\n when,\n applicativeFn,\n applicativeArray,\n applicativeProxy\n};\nexport {\n apply\n} from \"../Control.Apply/index.js\";\nexport {\n map,\n void\n} from \"../Data.Functor/index.js\";\n", "export const topInt = 2147483647;\nexport const bottomInt = -2147483648;\n\nexport const topChar = String.fromCharCode(65535);\nexport const bottomChar = String.fromCharCode(0);\n\nexport const topNumber = Number.POSITIVE_INFINITY;\nexport const bottomNumber = Number.NEGATIVE_INFINITY;\n", "var unsafeCompareImpl = function (lt) {\n return function (eq) {\n return function (gt) {\n return function (x) {\n return function (y) {\n return x < y ? lt : x === y ? eq : gt;\n };\n };\n };\n };\n};\n\nexport const ordBooleanImpl = unsafeCompareImpl;\nexport const ordIntImpl = unsafeCompareImpl;\nexport const ordNumberImpl = unsafeCompareImpl;\nexport const ordStringImpl = unsafeCompareImpl;\nexport const ordCharImpl = unsafeCompareImpl;\n\nexport const ordArrayImpl = function (f) {\n return function (xs) {\n return function (ys) {\n var i = 0;\n var xlen = xs.length;\n var ylen = ys.length;\n while (i < xlen && i < ylen) {\n var x = xs[i];\n var y = ys[i];\n var o = f(x)(y);\n if (o !== 0) {\n return o;\n }\n i++;\n }\n if (xlen === ylen) {\n return 0;\n } else if (xlen > ylen) {\n return -1;\n } else {\n return 1;\n }\n };\n };\n};\n", "var refEq = function (r1) {\n return function (r2) {\n return r1 === r2;\n };\n};\n\nexport const eqBooleanImpl = refEq;\nexport const eqIntImpl = refEq;\nexport const eqNumberImpl = refEq;\nexport const eqCharImpl = refEq;\nexport const eqStringImpl = refEq;\n\nexport const eqArrayImpl = function (f) {\n return function (xs) {\n return function (ys) {\n if (xs.length !== ys.length) return false;\n for (var i = 0; i < xs.length; i++) {\n if (!f(xs[i])(ys[i])) return false;\n }\n return true;\n };\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar eqVoid = {\n eq: function (v) {\n return function (v1) {\n return true;\n };\n }\n};\nvar eqUnit = {\n eq: function (v) {\n return function (v1) {\n return true;\n };\n }\n};\nvar eqString = {\n eq: $foreign.eqStringImpl\n};\nvar eqRowNil = {\n eqRecord: function (v) {\n return function (v1) {\n return function (v2) {\n return true;\n };\n };\n }\n};\nvar eqRecord = function (dict) {\n return dict.eqRecord;\n};\nvar eqRec = function () {\n return function (dictEqRecord) {\n return {\n eq: eqRecord(dictEqRecord)(Type_Proxy[\"Proxy\"].value)\n };\n };\n};\nvar eqProxy = {\n eq: function (v) {\n return function (v1) {\n return true;\n };\n }\n};\nvar eqNumber = {\n eq: $foreign.eqNumberImpl\n};\nvar eqInt = {\n eq: $foreign.eqIntImpl\n};\nvar eqChar = {\n eq: $foreign.eqCharImpl\n};\nvar eqBoolean = {\n eq: $foreign.eqBooleanImpl\n};\nvar eq1 = function (dict) {\n return dict.eq1;\n};\nvar eq = function (dict) {\n return dict.eq;\n};\nvar eq2 = /* #__PURE__ */ eq(eqBoolean);\nvar eqArray = function (dictEq) {\n return {\n eq: $foreign.eqArrayImpl(eq(dictEq))\n };\n};\nvar eq1Array = {\n eq1: function (dictEq) {\n return eq(eqArray(dictEq));\n }\n};\nvar eqRowCons = function (dictEqRecord) {\n var eqRecord1 = eqRecord(dictEqRecord);\n return function () {\n return function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (dictEq) {\n var eq3 = eq(dictEq);\n return {\n eqRecord: function (v) {\n return function (ra) {\n return function (rb) {\n var tail = eqRecord1(Type_Proxy[\"Proxy\"].value)(ra)(rb);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var get = Record_Unsafe.unsafeGet(key);\n return eq3(get(ra))(get(rb)) && tail;\n };\n };\n }\n };\n };\n };\n };\n};\nvar notEq = function (dictEq) {\n var eq3 = eq(dictEq);\n return function (x) {\n return function (y) {\n return eq2(eq3(x)(y))(false);\n };\n };\n};\nvar notEq1 = function (dictEq1) {\n var eq11 = eq1(dictEq1);\n return function (dictEq) {\n var eq12 = eq11(dictEq);\n return function (x) {\n return function (y) {\n return eq2(eq12(x)(y))(false);\n };\n };\n };\n};\nexport {\n eq,\n notEq,\n eq1,\n notEq1,\n eqRecord,\n eqBoolean,\n eqInt,\n eqNumber,\n eqChar,\n eqString,\n eqUnit,\n eqVoid,\n eqArray,\n eqRec,\n eqProxy,\n eq1Array,\n eqRowNil,\n eqRowCons\n};\n", "// Generated by purs version 0.15.14\nvar LT = /* #__PURE__ */ (function () {\n function LT() {\n\n };\n LT.value = new LT();\n return LT;\n})();\nvar GT = /* #__PURE__ */ (function () {\n function GT() {\n\n };\n GT.value = new GT();\n return GT;\n})();\nvar EQ = /* #__PURE__ */ (function () {\n function EQ() {\n\n };\n EQ.value = new EQ();\n return EQ;\n})();\nvar showOrdering = {\n show: function (v) {\n if (v instanceof LT) {\n return \"LT\";\n };\n if (v instanceof GT) {\n return \"GT\";\n };\n if (v instanceof EQ) {\n return \"EQ\";\n };\n throw new Error(\"Failed pattern match at Data.Ordering (line 26, column 1 - line 29, column 17): \" + [ v.constructor.name ]);\n }\n};\nvar semigroupOrdering = {\n append: function (v) {\n return function (v1) {\n if (v instanceof LT) {\n return LT.value;\n };\n if (v instanceof GT) {\n return GT.value;\n };\n if (v instanceof EQ) {\n return v1;\n };\n throw new Error(\"Failed pattern match at Data.Ordering (line 21, column 1 - line 24, column 18): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n }\n};\nvar invert = function (v) {\n if (v instanceof GT) {\n return LT.value;\n };\n if (v instanceof EQ) {\n return EQ.value;\n };\n if (v instanceof LT) {\n return GT.value;\n };\n throw new Error(\"Failed pattern match at Data.Ordering (line 33, column 1 - line 33, column 31): \" + [ v.constructor.name ]);\n};\nvar eqOrdering = {\n eq: function (v) {\n return function (v1) {\n if (v instanceof LT && v1 instanceof LT) {\n return true;\n };\n if (v instanceof GT && v1 instanceof GT) {\n return true;\n };\n if (v instanceof EQ && v1 instanceof EQ) {\n return true;\n };\n return false;\n };\n }\n};\nexport {\n LT,\n GT,\n EQ,\n invert,\n eqOrdering,\n semigroupOrdering,\n showOrdering\n};\n", "export const intSub = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return x - y | 0;\n };\n};\n\nexport const numSub = function (n1) {\n return function (n2) {\n return n1 - n2;\n };\n};\n", "export const intAdd = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return x + y | 0;\n };\n};\n\nexport const intMul = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return x * y | 0;\n };\n};\n\nexport const numAdd = function (n1) {\n return function (n2) {\n return n1 + n2;\n };\n};\n\nexport const numMul = function (n1) {\n return function (n2) {\n return n1 * n2;\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar zeroRecord = function (dict) {\n return dict.zeroRecord;\n};\nvar zero = function (dict) {\n return dict.zero;\n};\nvar semiringUnit = {\n add: function (v) {\n return function (v1) {\n return Data_Unit.unit;\n };\n },\n zero: Data_Unit.unit,\n mul: function (v) {\n return function (v1) {\n return Data_Unit.unit;\n };\n },\n one: Data_Unit.unit\n};\nvar semiringRecordNil = {\n addRecord: function (v) {\n return function (v1) {\n return function (v2) {\n return {};\n };\n };\n },\n mulRecord: function (v) {\n return function (v1) {\n return function (v2) {\n return {};\n };\n };\n },\n oneRecord: function (v) {\n return function (v1) {\n return {};\n };\n },\n zeroRecord: function (v) {\n return function (v1) {\n return {};\n };\n }\n};\nvar semiringProxy = /* #__PURE__ */ (function () {\n return {\n add: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n },\n mul: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n },\n one: Type_Proxy[\"Proxy\"].value,\n zero: Type_Proxy[\"Proxy\"].value\n };\n})();\nvar semiringNumber = {\n add: $foreign.numAdd,\n zero: 0.0,\n mul: $foreign.numMul,\n one: 1.0\n};\nvar semiringInt = {\n add: $foreign.intAdd,\n zero: 0,\n mul: $foreign.intMul,\n one: 1\n};\nvar oneRecord = function (dict) {\n return dict.oneRecord;\n};\nvar one = function (dict) {\n return dict.one;\n};\nvar mulRecord = function (dict) {\n return dict.mulRecord;\n};\nvar mul = function (dict) {\n return dict.mul;\n};\nvar addRecord = function (dict) {\n return dict.addRecord;\n};\nvar semiringRecord = function () {\n return function (dictSemiringRecord) {\n return {\n add: addRecord(dictSemiringRecord)(Type_Proxy[\"Proxy\"].value),\n mul: mulRecord(dictSemiringRecord)(Type_Proxy[\"Proxy\"].value),\n one: oneRecord(dictSemiringRecord)(Type_Proxy[\"Proxy\"].value)(Type_Proxy[\"Proxy\"].value),\n zero: zeroRecord(dictSemiringRecord)(Type_Proxy[\"Proxy\"].value)(Type_Proxy[\"Proxy\"].value)\n };\n };\n};\nvar add = function (dict) {\n return dict.add;\n};\nvar semiringFn = function (dictSemiring) {\n var add1 = add(dictSemiring);\n var zero1 = zero(dictSemiring);\n var mul1 = mul(dictSemiring);\n var one1 = one(dictSemiring);\n return {\n add: function (f) {\n return function (g) {\n return function (x) {\n return add1(f(x))(g(x));\n };\n };\n },\n zero: function (v) {\n return zero1;\n },\n mul: function (f) {\n return function (g) {\n return function (x) {\n return mul1(f(x))(g(x));\n };\n };\n },\n one: function (v) {\n return one1;\n }\n };\n};\nvar semiringRecordCons = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function () {\n return function (dictSemiringRecord) {\n var addRecord1 = addRecord(dictSemiringRecord);\n var mulRecord1 = mulRecord(dictSemiringRecord);\n var oneRecord1 = oneRecord(dictSemiringRecord);\n var zeroRecord1 = zeroRecord(dictSemiringRecord);\n return function (dictSemiring) {\n var add1 = add(dictSemiring);\n var mul1 = mul(dictSemiring);\n var one1 = one(dictSemiring);\n var zero1 = zero(dictSemiring);\n return {\n addRecord: function (v) {\n return function (ra) {\n return function (rb) {\n var tail = addRecord1(Type_Proxy[\"Proxy\"].value)(ra)(rb);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n var get = Record_Unsafe.unsafeGet(key);\n return insert(add1(get(ra))(get(rb)))(tail);\n };\n };\n },\n mulRecord: function (v) {\n return function (ra) {\n return function (rb) {\n var tail = mulRecord1(Type_Proxy[\"Proxy\"].value)(ra)(rb);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n var get = Record_Unsafe.unsafeGet(key);\n return insert(mul1(get(ra))(get(rb)))(tail);\n };\n };\n },\n oneRecord: function (v) {\n return function (v1) {\n var tail = oneRecord1(Type_Proxy[\"Proxy\"].value)(Type_Proxy[\"Proxy\"].value);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n return insert(one1)(tail);\n };\n },\n zeroRecord: function (v) {\n return function (v1) {\n var tail = zeroRecord1(Type_Proxy[\"Proxy\"].value)(Type_Proxy[\"Proxy\"].value);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n return insert(zero1)(tail);\n };\n }\n };\n };\n };\n };\n};\nexport {\n add,\n zero,\n mul,\n one,\n addRecord,\n mulRecord,\n oneRecord,\n zeroRecord,\n semiringInt,\n semiringNumber,\n semiringFn,\n semiringUnit,\n semiringProxy,\n semiringRecord,\n semiringRecordNil,\n semiringRecordCons\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar semiringRecord = /* #__PURE__ */ Data_Semiring.semiringRecord();\nvar subRecord = function (dict) {\n return dict.subRecord;\n};\nvar sub = function (dict) {\n return dict.sub;\n};\nvar ringUnit = {\n sub: function (v) {\n return function (v1) {\n return Data_Unit.unit;\n };\n },\n Semiring0: function () {\n return Data_Semiring.semiringUnit;\n }\n};\nvar ringRecordNil = {\n subRecord: function (v) {\n return function (v1) {\n return function (v2) {\n return {};\n };\n };\n },\n SemiringRecord0: function () {\n return Data_Semiring.semiringRecordNil;\n }\n};\nvar ringRecordCons = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n var semiringRecordCons = Data_Semiring.semiringRecordCons(dictIsSymbol)();\n return function () {\n return function (dictRingRecord) {\n var subRecord1 = subRecord(dictRingRecord);\n var semiringRecordCons1 = semiringRecordCons(dictRingRecord.SemiringRecord0());\n return function (dictRing) {\n var sub1 = sub(dictRing);\n var semiringRecordCons2 = semiringRecordCons1(dictRing.Semiring0());\n return {\n subRecord: function (v) {\n return function (ra) {\n return function (rb) {\n var tail = subRecord1(Type_Proxy[\"Proxy\"].value)(ra)(rb);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n var get = Record_Unsafe.unsafeGet(key);\n return insert(sub1(get(ra))(get(rb)))(tail);\n };\n };\n },\n SemiringRecord0: function () {\n return semiringRecordCons2;\n }\n };\n };\n };\n };\n};\nvar ringRecord = function () {\n return function (dictRingRecord) {\n var semiringRecord1 = semiringRecord(dictRingRecord.SemiringRecord0());\n return {\n sub: subRecord(dictRingRecord)(Type_Proxy[\"Proxy\"].value),\n Semiring0: function () {\n return semiringRecord1;\n }\n };\n };\n};\nvar ringProxy = {\n sub: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n },\n Semiring0: function () {\n return Data_Semiring.semiringProxy;\n }\n};\nvar ringNumber = {\n sub: $foreign.numSub,\n Semiring0: function () {\n return Data_Semiring.semiringNumber;\n }\n};\nvar ringInt = {\n sub: $foreign.intSub,\n Semiring0: function () {\n return Data_Semiring.semiringInt;\n }\n};\nvar ringFn = function (dictRing) {\n var sub1 = sub(dictRing);\n var semiringFn = Data_Semiring.semiringFn(dictRing.Semiring0());\n return {\n sub: function (f) {\n return function (g) {\n return function (x) {\n return sub1(f(x))(g(x));\n };\n };\n },\n Semiring0: function () {\n return semiringFn;\n }\n };\n};\nvar negate = function (dictRing) {\n var sub1 = sub(dictRing);\n var zero = Data_Semiring.zero(dictRing.Semiring0());\n return function (a) {\n return sub1(zero)(a);\n };\n};\nexport {\n sub,\n negate,\n subRecord,\n ringInt,\n ringNumber,\n ringUnit,\n ringFn,\n ringProxy,\n ringRecord,\n ringRecordNil,\n ringRecordCons\n};\nexport {\n add,\n mul,\n one,\n zero\n} from \"../Data.Semiring/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Ring from \"../Data.Ring/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar eqRec = /* #__PURE__ */ Data_Eq.eqRec();\nvar notEq = /* #__PURE__ */ Data_Eq.notEq(Data_Ordering.eqOrdering);\nvar ordVoid = {\n compare: function (v) {\n return function (v1) {\n return Data_Ordering.EQ.value;\n };\n },\n Eq0: function () {\n return Data_Eq.eqVoid;\n }\n};\nvar ordUnit = {\n compare: function (v) {\n return function (v1) {\n return Data_Ordering.EQ.value;\n };\n },\n Eq0: function () {\n return Data_Eq.eqUnit;\n }\n};\nvar ordString = /* #__PURE__ */ (function () {\n return {\n compare: $foreign.ordStringImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value),\n Eq0: function () {\n return Data_Eq.eqString;\n }\n };\n})();\nvar ordRecordNil = {\n compareRecord: function (v) {\n return function (v1) {\n return function (v2) {\n return Data_Ordering.EQ.value;\n };\n };\n },\n EqRecord0: function () {\n return Data_Eq.eqRowNil;\n }\n};\nvar ordProxy = {\n compare: function (v) {\n return function (v1) {\n return Data_Ordering.EQ.value;\n };\n },\n Eq0: function () {\n return Data_Eq.eqProxy;\n }\n};\nvar ordOrdering = {\n compare: function (v) {\n return function (v1) {\n if (v instanceof Data_Ordering.LT && v1 instanceof Data_Ordering.LT) {\n return Data_Ordering.EQ.value;\n };\n if (v instanceof Data_Ordering.EQ && v1 instanceof Data_Ordering.EQ) {\n return Data_Ordering.EQ.value;\n };\n if (v instanceof Data_Ordering.GT && v1 instanceof Data_Ordering.GT) {\n return Data_Ordering.EQ.value;\n };\n if (v instanceof Data_Ordering.LT) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Ordering.EQ && v1 instanceof Data_Ordering.LT) {\n return Data_Ordering.GT.value;\n };\n if (v instanceof Data_Ordering.EQ && v1 instanceof Data_Ordering.GT) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Ordering.GT) {\n return Data_Ordering.GT.value;\n };\n throw new Error(\"Failed pattern match at Data.Ord (line 126, column 1 - line 133, column 20): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n Eq0: function () {\n return Data_Ordering.eqOrdering;\n }\n};\nvar ordNumber = /* #__PURE__ */ (function () {\n return {\n compare: $foreign.ordNumberImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value),\n Eq0: function () {\n return Data_Eq.eqNumber;\n }\n };\n})();\nvar ordInt = /* #__PURE__ */ (function () {\n return {\n compare: $foreign.ordIntImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value),\n Eq0: function () {\n return Data_Eq.eqInt;\n }\n };\n})();\nvar ordChar = /* #__PURE__ */ (function () {\n return {\n compare: $foreign.ordCharImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value),\n Eq0: function () {\n return Data_Eq.eqChar;\n }\n };\n})();\nvar ordBoolean = /* #__PURE__ */ (function () {\n return {\n compare: $foreign.ordBooleanImpl(Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value),\n Eq0: function () {\n return Data_Eq.eqBoolean;\n }\n };\n})();\nvar compareRecord = function (dict) {\n return dict.compareRecord;\n};\nvar ordRecord = function () {\n return function (dictOrdRecord) {\n var eqRec1 = eqRec(dictOrdRecord.EqRecord0());\n return {\n compare: compareRecord(dictOrdRecord)(Type_Proxy[\"Proxy\"].value),\n Eq0: function () {\n return eqRec1;\n }\n };\n };\n};\nvar compare1 = function (dict) {\n return dict.compare1;\n};\nvar compare = function (dict) {\n return dict.compare;\n};\nvar compare2 = /* #__PURE__ */ compare(ordInt);\nvar comparing = function (dictOrd) {\n var compare3 = compare(dictOrd);\n return function (f) {\n return function (x) {\n return function (y) {\n return compare3(f(x))(f(y));\n };\n };\n };\n};\nvar greaterThan = function (dictOrd) {\n var compare3 = compare(dictOrd);\n return function (a1) {\n return function (a2) {\n var v = compare3(a1)(a2);\n if (v instanceof Data_Ordering.GT) {\n return true;\n };\n return false;\n };\n };\n};\nvar greaterThanOrEq = function (dictOrd) {\n var compare3 = compare(dictOrd);\n return function (a1) {\n return function (a2) {\n var v = compare3(a1)(a2);\n if (v instanceof Data_Ordering.LT) {\n return false;\n };\n return true;\n };\n };\n};\nvar lessThan = function (dictOrd) {\n var compare3 = compare(dictOrd);\n return function (a1) {\n return function (a2) {\n var v = compare3(a1)(a2);\n if (v instanceof Data_Ordering.LT) {\n return true;\n };\n return false;\n };\n };\n};\nvar signum = function (dictOrd) {\n var lessThan1 = lessThan(dictOrd);\n var greaterThan1 = greaterThan(dictOrd);\n return function (dictRing) {\n var Semiring0 = dictRing.Semiring0();\n var zero = Data_Semiring.zero(Semiring0);\n var negate1 = Data_Ring.negate(dictRing);\n var one = Data_Semiring.one(Semiring0);\n return function (x) {\n var $89 = lessThan1(x)(zero);\n if ($89) {\n return negate1(one);\n };\n var $90 = greaterThan1(x)(zero);\n if ($90) {\n return one;\n };\n return x;\n };\n };\n};\nvar lessThanOrEq = function (dictOrd) {\n var compare3 = compare(dictOrd);\n return function (a1) {\n return function (a2) {\n var v = compare3(a1)(a2);\n if (v instanceof Data_Ordering.GT) {\n return false;\n };\n return true;\n };\n };\n};\nvar max = function (dictOrd) {\n var compare3 = compare(dictOrd);\n return function (x) {\n return function (y) {\n var v = compare3(x)(y);\n if (v instanceof Data_Ordering.LT) {\n return y;\n };\n if (v instanceof Data_Ordering.EQ) {\n return x;\n };\n if (v instanceof Data_Ordering.GT) {\n return x;\n };\n throw new Error(\"Failed pattern match at Data.Ord (line 181, column 3 - line 184, column 12): \" + [ v.constructor.name ]);\n };\n };\n};\nvar min = function (dictOrd) {\n var compare3 = compare(dictOrd);\n return function (x) {\n return function (y) {\n var v = compare3(x)(y);\n if (v instanceof Data_Ordering.LT) {\n return x;\n };\n if (v instanceof Data_Ordering.EQ) {\n return x;\n };\n if (v instanceof Data_Ordering.GT) {\n return y;\n };\n throw new Error(\"Failed pattern match at Data.Ord (line 172, column 3 - line 175, column 12): \" + [ v.constructor.name ]);\n };\n };\n};\nvar ordArray = function (dictOrd) {\n var compare3 = compare(dictOrd);\n var eqArray = Data_Eq.eqArray(dictOrd.Eq0());\n return {\n compare: (function () {\n var toDelta = function (x) {\n return function (y) {\n var v = compare3(x)(y);\n if (v instanceof Data_Ordering.EQ) {\n return 0;\n };\n if (v instanceof Data_Ordering.LT) {\n return 1;\n };\n if (v instanceof Data_Ordering.GT) {\n return -1 | 0;\n };\n throw new Error(\"Failed pattern match at Data.Ord (line 79, column 7 - line 82, column 17): \" + [ v.constructor.name ]);\n };\n };\n return function (xs) {\n return function (ys) {\n return compare2(0)($foreign.ordArrayImpl(toDelta)(xs)(ys));\n };\n };\n })(),\n Eq0: function () {\n return eqArray;\n }\n };\n};\nvar ord1Array = {\n compare1: function (dictOrd) {\n return compare(ordArray(dictOrd));\n },\n Eq10: function () {\n return Data_Eq.eq1Array;\n }\n};\nvar ordRecordCons = function (dictOrdRecord) {\n var compareRecord1 = compareRecord(dictOrdRecord);\n var eqRowCons = Data_Eq.eqRowCons(dictOrdRecord.EqRecord0())();\n return function () {\n return function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n var eqRowCons1 = eqRowCons(dictIsSymbol);\n return function (dictOrd) {\n var compare3 = compare(dictOrd);\n var eqRowCons2 = eqRowCons1(dictOrd.Eq0());\n return {\n compareRecord: function (v) {\n return function (ra) {\n return function (rb) {\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var left = compare3(Record_Unsafe.unsafeGet(key)(ra))(Record_Unsafe.unsafeGet(key)(rb));\n var $95 = notEq(left)(Data_Ordering.EQ.value);\n if ($95) {\n return left;\n };\n return compareRecord1(Type_Proxy[\"Proxy\"].value)(ra)(rb);\n };\n };\n },\n EqRecord0: function () {\n return eqRowCons2;\n }\n };\n };\n };\n };\n};\nvar clamp = function (dictOrd) {\n var min1 = min(dictOrd);\n var max1 = max(dictOrd);\n return function (low) {\n return function (hi) {\n return function (x) {\n return min1(hi)(max1(low)(x));\n };\n };\n };\n};\nvar between = function (dictOrd) {\n var lessThan1 = lessThan(dictOrd);\n var greaterThan1 = greaterThan(dictOrd);\n return function (low) {\n return function (hi) {\n return function (x) {\n if (lessThan1(x)(low)) {\n return false;\n };\n if (greaterThan1(x)(hi)) {\n return false;\n };\n return true;\n };\n };\n };\n};\nvar abs = function (dictOrd) {\n var greaterThanOrEq1 = greaterThanOrEq(dictOrd);\n return function (dictRing) {\n var zero = Data_Semiring.zero(dictRing.Semiring0());\n var negate1 = Data_Ring.negate(dictRing);\n return function (x) {\n var $99 = greaterThanOrEq1(x)(zero);\n if ($99) {\n return x;\n };\n return negate1(x);\n };\n };\n};\nexport {\n compare,\n compare1,\n lessThan,\n lessThanOrEq,\n greaterThan,\n greaterThanOrEq,\n comparing,\n min,\n max,\n clamp,\n between,\n abs,\n signum,\n compareRecord,\n ordBoolean,\n ordInt,\n ordNumber,\n ordString,\n ordChar,\n ordUnit,\n ordVoid,\n ordProxy,\n ordArray,\n ordOrdering,\n ord1Array,\n ordRecordNil,\n ordRecordCons,\n ordRecord\n};\nexport {\n EQ,\n GT,\n LT\n} from \"../Data.Ordering/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar ordRecord = /* #__PURE__ */ Data_Ord.ordRecord();\nvar topRecord = function (dict) {\n return dict.topRecord;\n};\nvar top = function (dict) {\n return dict.top;\n};\nvar boundedUnit = {\n top: Data_Unit.unit,\n bottom: Data_Unit.unit,\n Ord0: function () {\n return Data_Ord.ordUnit;\n }\n};\nvar boundedRecordNil = {\n topRecord: function (v) {\n return function (v1) {\n return {};\n };\n },\n bottomRecord: function (v) {\n return function (v1) {\n return {};\n };\n },\n OrdRecord0: function () {\n return Data_Ord.ordRecordNil;\n }\n};\nvar boundedProxy = /* #__PURE__ */ (function () {\n return {\n bottom: Type_Proxy[\"Proxy\"].value,\n top: Type_Proxy[\"Proxy\"].value,\n Ord0: function () {\n return Data_Ord.ordProxy;\n }\n };\n})();\nvar boundedOrdering = /* #__PURE__ */ (function () {\n return {\n top: Data_Ordering.GT.value,\n bottom: Data_Ordering.LT.value,\n Ord0: function () {\n return Data_Ord.ordOrdering;\n }\n };\n})();\nvar boundedNumber = {\n top: $foreign.topNumber,\n bottom: $foreign.bottomNumber,\n Ord0: function () {\n return Data_Ord.ordNumber;\n }\n};\nvar boundedInt = {\n top: $foreign.topInt,\n bottom: $foreign.bottomInt,\n Ord0: function () {\n return Data_Ord.ordInt;\n }\n};\nvar boundedChar = {\n top: $foreign.topChar,\n bottom: $foreign.bottomChar,\n Ord0: function () {\n return Data_Ord.ordChar;\n }\n};\nvar boundedBoolean = {\n top: true,\n bottom: false,\n Ord0: function () {\n return Data_Ord.ordBoolean;\n }\n};\nvar bottomRecord = function (dict) {\n return dict.bottomRecord;\n};\nvar boundedRecord = function () {\n return function (dictBoundedRecord) {\n var ordRecord1 = ordRecord(dictBoundedRecord.OrdRecord0());\n return {\n top: topRecord(dictBoundedRecord)(Type_Proxy[\"Proxy\"].value)(Type_Proxy[\"Proxy\"].value),\n bottom: bottomRecord(dictBoundedRecord)(Type_Proxy[\"Proxy\"].value)(Type_Proxy[\"Proxy\"].value),\n Ord0: function () {\n return ordRecord1;\n }\n };\n };\n};\nvar bottom = function (dict) {\n return dict.bottom;\n};\nvar boundedRecordCons = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (dictBounded) {\n var top1 = top(dictBounded);\n var bottom1 = bottom(dictBounded);\n var Ord0 = dictBounded.Ord0();\n return function () {\n return function () {\n return function (dictBoundedRecord) {\n var topRecord1 = topRecord(dictBoundedRecord);\n var bottomRecord1 = bottomRecord(dictBoundedRecord);\n var ordRecordCons = Data_Ord.ordRecordCons(dictBoundedRecord.OrdRecord0())()(dictIsSymbol)(Ord0);\n return {\n topRecord: function (v) {\n return function (rowProxy) {\n var tail = topRecord1(Type_Proxy[\"Proxy\"].value)(rowProxy);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n return insert(top1)(tail);\n };\n },\n bottomRecord: function (v) {\n return function (rowProxy) {\n var tail = bottomRecord1(Type_Proxy[\"Proxy\"].value)(rowProxy);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n return insert(bottom1)(tail);\n };\n },\n OrdRecord0: function () {\n return ordRecordCons;\n }\n };\n };\n };\n };\n };\n};\nexport {\n bottom,\n top,\n bottomRecord,\n topRecord,\n boundedBoolean,\n boundedInt,\n boundedChar,\n boundedOrdering,\n boundedUnit,\n boundedNumber,\n boundedProxy,\n boundedRecordNil,\n boundedRecordCons,\n boundedRecord\n};\nexport {\n EQ,\n GT,\n LT,\n compare\n} from \"../Data.Ord/index.js\";\n", "export const showIntImpl = function (n) {\n return n.toString();\n};\n\nexport const showNumberImpl = function (n) {\n var str = n.toString();\n return isNaN(str + \".0\") ? str : str + \".0\";\n};\n\nexport const showCharImpl = function (c) {\n var code = c.charCodeAt(0);\n if (code < 0x20 || code === 0x7F) {\n switch (c) {\n case \"\\x07\": return \"'\\\\a'\";\n case \"\\b\": return \"'\\\\b'\";\n case \"\\f\": return \"'\\\\f'\";\n case \"\\n\": return \"'\\\\n'\";\n case \"\\r\": return \"'\\\\r'\";\n case \"\\t\": return \"'\\\\t'\";\n case \"\\v\": return \"'\\\\v'\";\n }\n return \"'\\\\\" + code.toString(10) + \"'\";\n }\n return c === \"'\" || c === \"\\\\\" ? \"'\\\\\" + c + \"'\" : \"'\" + c + \"'\";\n};\n\nexport const showStringImpl = function (s) {\n var l = s.length;\n return \"\\\"\" + s.replace(\n /[\\0-\\x1F\\x7F\"\\\\]/g, // eslint-disable-line no-control-regex\n function (c, i) {\n switch (c) {\n case \"\\\"\":\n case \"\\\\\":\n return \"\\\\\" + c;\n case \"\\x07\": return \"\\\\a\";\n case \"\\b\": return \"\\\\b\";\n case \"\\f\": return \"\\\\f\";\n case \"\\n\": return \"\\\\n\";\n case \"\\r\": return \"\\\\r\";\n case \"\\t\": return \"\\\\t\";\n case \"\\v\": return \"\\\\v\";\n }\n var k = i + 1;\n var empty = k < l && s[k] >= \"0\" && s[k] <= \"9\" ? \"\\\\&\" : \"\";\n return \"\\\\\" + c.charCodeAt(0).toString(10) + empty;\n }\n ) + \"\\\"\";\n};\n\nexport const showArrayImpl = function (f) {\n return function (xs) {\n var ss = [];\n for (var i = 0, l = xs.length; i < l; i++) {\n ss[i] = f(xs[i]);\n }\n return \"[\" + ss.join(\",\") + \"]\";\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Data_Void from \"../Data.Void/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar showVoid = {\n show: Data_Void.absurd\n};\nvar showUnit = {\n show: function (v) {\n return \"unit\";\n }\n};\nvar showString = {\n show: $foreign.showStringImpl\n};\nvar showRecordFieldsNil = {\n showRecordFields: function (v) {\n return function (v1) {\n return \"\";\n };\n }\n};\nvar showRecordFields = function (dict) {\n return dict.showRecordFields;\n};\nvar showRecord = function () {\n return function () {\n return function (dictShowRecordFields) {\n var showRecordFields1 = showRecordFields(dictShowRecordFields);\n return {\n show: function (record) {\n return \"{\" + (showRecordFields1(Type_Proxy[\"Proxy\"].value)(record) + \"}\");\n }\n };\n };\n };\n};\nvar showProxy = {\n show: function (v) {\n return \"Proxy\";\n }\n};\nvar showNumber = {\n show: $foreign.showNumberImpl\n};\nvar showInt = {\n show: $foreign.showIntImpl\n};\nvar showChar = {\n show: $foreign.showCharImpl\n};\nvar showBoolean = {\n show: function (v) {\n if (v) {\n return \"true\";\n };\n if (!v) {\n return \"false\";\n };\n throw new Error(\"Failed pattern match at Data.Show (line 29, column 1 - line 31, column 23): \" + [ v.constructor.name ]);\n }\n};\nvar show = function (dict) {\n return dict.show;\n};\nvar showArray = function (dictShow) {\n return {\n show: $foreign.showArrayImpl(show(dictShow))\n };\n};\nvar showRecordFieldsCons = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (dictShowRecordFields) {\n var showRecordFields1 = showRecordFields(dictShowRecordFields);\n return function (dictShow) {\n var show1 = show(dictShow);\n return {\n showRecordFields: function (v) {\n return function (record) {\n var tail = showRecordFields1(Type_Proxy[\"Proxy\"].value)(record);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var focus = Record_Unsafe.unsafeGet(key)(record);\n return \" \" + (key + (\": \" + (show1(focus) + (\",\" + tail))));\n };\n }\n };\n };\n };\n};\nvar showRecordFieldsConsNil = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (dictShow) {\n var show1 = show(dictShow);\n return {\n showRecordFields: function (v) {\n return function (record) {\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var focus = Record_Unsafe.unsafeGet(key)(record);\n return \" \" + (key + (\": \" + (show1(focus) + \" \")));\n };\n }\n };\n };\n};\nexport {\n show,\n showRecordFields,\n showUnit,\n showBoolean,\n showInt,\n showNumber,\n showChar,\n showString,\n showArray,\n showProxy,\n showVoid,\n showRecord,\n showRecordFieldsNil,\n showRecordFieldsConsNil,\n showRecordFieldsCons\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Bounded from \"../Data.Bounded/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Functor_Invariant from \"../Data.Functor.Invariant/index.js\";\nimport * as Data_Generic_Rep from \"../Data.Generic.Rep/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar Nothing = /* #__PURE__ */ (function () {\n function Nothing() {\n\n };\n Nothing.value = new Nothing();\n return Nothing;\n})();\nvar Just = /* #__PURE__ */ (function () {\n function Just(value0) {\n this.value0 = value0;\n };\n Just.create = function (value0) {\n return new Just(value0);\n };\n return Just;\n})();\nvar showMaybe = function (dictShow) {\n var show = Data_Show.show(dictShow);\n return {\n show: function (v) {\n if (v instanceof Just) {\n return \"(Just \" + (show(v.value0) + \")\");\n };\n if (v instanceof Nothing) {\n return \"Nothing\";\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 223, column 1 - line 225, column 28): \" + [ v.constructor.name ]);\n }\n };\n};\nvar semigroupMaybe = function (dictSemigroup) {\n var append1 = Data_Semigroup.append(dictSemigroup);\n return {\n append: function (v) {\n return function (v1) {\n if (v instanceof Nothing) {\n return v1;\n };\n if (v1 instanceof Nothing) {\n return v;\n };\n if (v instanceof Just && v1 instanceof Just) {\n return new Just(append1(v.value0)(v1.value0));\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 182, column 1 - line 185, column 43): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n }\n };\n};\nvar optional = function (dictAlt) {\n var alt = Control_Alt.alt(dictAlt);\n var map1 = Data_Functor.map(dictAlt.Functor0());\n return function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n return function (a) {\n return alt(map1(Just.create)(a))(pure(Nothing.value));\n };\n };\n};\nvar monoidMaybe = function (dictSemigroup) {\n var semigroupMaybe1 = semigroupMaybe(dictSemigroup);\n return {\n mempty: Nothing.value,\n Semigroup0: function () {\n return semigroupMaybe1;\n }\n };\n};\nvar maybe$prime = function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Nothing) {\n return v(Data_Unit.unit);\n };\n if (v2 instanceof Just) {\n return v1(v2.value0);\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 250, column 1 - line 250, column 62): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n};\nvar maybe = function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Nothing) {\n return v;\n };\n if (v2 instanceof Just) {\n return v1(v2.value0);\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 237, column 1 - line 237, column 51): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n};\nvar isNothing = /* #__PURE__ */ maybe(true)(/* #__PURE__ */ Data_Function[\"const\"](false));\nvar isJust = /* #__PURE__ */ maybe(false)(/* #__PURE__ */ Data_Function[\"const\"](true));\nvar genericMaybe = {\n to: function (x) {\n if (x instanceof Data_Generic_Rep.Inl) {\n return Nothing.value;\n };\n if (x instanceof Data_Generic_Rep.Inr) {\n return new Just(x.value0);\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 227, column 1 - line 227, column 52): \" + [ x.constructor.name ]);\n },\n from: function (x) {\n if (x instanceof Nothing) {\n return new Data_Generic_Rep.Inl(Data_Generic_Rep.NoArguments.value);\n };\n if (x instanceof Just) {\n return new Data_Generic_Rep.Inr(x.value0);\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 227, column 1 - line 227, column 52): \" + [ x.constructor.name ]);\n }\n};\nvar functorMaybe = {\n map: function (v) {\n return function (v1) {\n if (v1 instanceof Just) {\n return new Just(v(v1.value0));\n };\n return Nothing.value;\n };\n }\n};\nvar map = /* #__PURE__ */ Data_Functor.map(functorMaybe);\nvar invariantMaybe = {\n imap: /* #__PURE__ */ Data_Functor_Invariant.imapF(functorMaybe)\n};\nvar fromMaybe$prime = function (a) {\n return maybe$prime(a)(identity);\n};\nvar fromMaybe = function (a) {\n return maybe(a)(identity);\n};\nvar fromJust = function () {\n return function (v) {\n if (v instanceof Just) {\n return v.value0;\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 288, column 1 - line 288, column 46): \" + [ v.constructor.name ]);\n };\n};\nvar extendMaybe = {\n extend: function (v) {\n return function (v1) {\n if (v1 instanceof Nothing) {\n return Nothing.value;\n };\n return new Just(v(v1));\n };\n },\n Functor0: function () {\n return functorMaybe;\n }\n};\nvar eqMaybe = function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n return {\n eq: function (x) {\n return function (y) {\n if (x instanceof Nothing && y instanceof Nothing) {\n return true;\n };\n if (x instanceof Just && y instanceof Just) {\n return eq(x.value0)(y.value0);\n };\n return false;\n };\n }\n };\n};\nvar ordMaybe = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n var eqMaybe1 = eqMaybe(dictOrd.Eq0());\n return {\n compare: function (x) {\n return function (y) {\n if (x instanceof Nothing && y instanceof Nothing) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof Nothing) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof Nothing) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof Just && y instanceof Just) {\n return compare(x.value0)(y.value0);\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 0, column 0 - line 0, column 0): \" + [ x.constructor.name, y.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqMaybe1;\n }\n };\n};\nvar eq1Maybe = {\n eq1: function (dictEq) {\n return Data_Eq.eq(eqMaybe(dictEq));\n }\n};\nvar ord1Maybe = {\n compare1: function (dictOrd) {\n return Data_Ord.compare(ordMaybe(dictOrd));\n },\n Eq10: function () {\n return eq1Maybe;\n }\n};\nvar boundedMaybe = function (dictBounded) {\n var ordMaybe1 = ordMaybe(dictBounded.Ord0());\n return {\n top: new Just(Data_Bounded.top(dictBounded)),\n bottom: Nothing.value,\n Ord0: function () {\n return ordMaybe1;\n }\n };\n};\nvar applyMaybe = {\n apply: function (v) {\n return function (v1) {\n if (v instanceof Just) {\n return map(v.value0)(v1);\n };\n if (v instanceof Nothing) {\n return Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 67, column 1 - line 69, column 30): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n Functor0: function () {\n return functorMaybe;\n }\n};\nvar apply = /* #__PURE__ */ Control_Apply.apply(applyMaybe);\nvar bindMaybe = {\n bind: function (v) {\n return function (v1) {\n if (v instanceof Just) {\n return v1(v.value0);\n };\n if (v instanceof Nothing) {\n return Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 125, column 1 - line 127, column 28): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n Apply0: function () {\n return applyMaybe;\n }\n};\nvar semiringMaybe = function (dictSemiring) {\n var add = Data_Semiring.add(dictSemiring);\n var mul = Data_Semiring.mul(dictSemiring);\n return {\n zero: Nothing.value,\n one: new Just(Data_Semiring.one(dictSemiring)),\n add: function (v) {\n return function (v1) {\n if (v instanceof Nothing) {\n return v1;\n };\n if (v1 instanceof Nothing) {\n return v;\n };\n if (v instanceof Just && v1 instanceof Just) {\n return new Just(add(v.value0)(v1.value0));\n };\n throw new Error(\"Failed pattern match at Data.Maybe (line 190, column 1 - line 198, column 28): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n mul: function (x) {\n return function (y) {\n return apply(map(mul)(x))(y);\n };\n }\n };\n};\nvar applicativeMaybe = /* #__PURE__ */ (function () {\n return {\n pure: Just.create,\n Apply0: function () {\n return applyMaybe;\n }\n };\n})();\nvar monadMaybe = {\n Applicative0: function () {\n return applicativeMaybe;\n },\n Bind1: function () {\n return bindMaybe;\n }\n};\nvar altMaybe = {\n alt: function (v) {\n return function (v1) {\n if (v instanceof Nothing) {\n return v1;\n };\n return v;\n };\n },\n Functor0: function () {\n return functorMaybe;\n }\n};\nvar plusMaybe = /* #__PURE__ */ (function () {\n return {\n empty: Nothing.value,\n Alt0: function () {\n return altMaybe;\n }\n };\n})();\nvar alternativeMaybe = {\n Applicative0: function () {\n return applicativeMaybe;\n },\n Plus1: function () {\n return plusMaybe;\n }\n};\nexport {\n Nothing,\n Just,\n maybe,\n maybe$prime,\n fromMaybe,\n fromMaybe$prime,\n isJust,\n isNothing,\n fromJust,\n optional,\n functorMaybe,\n applyMaybe,\n applicativeMaybe,\n altMaybe,\n plusMaybe,\n alternativeMaybe,\n bindMaybe,\n monadMaybe,\n extendMaybe,\n invariantMaybe,\n semigroupMaybe,\n monoidMaybe,\n semiringMaybe,\n eqMaybe,\n eq1Maybe,\n ordMaybe,\n ord1Maybe,\n boundedMaybe,\n showMaybe,\n genericMaybe\n};\n", "// Generated by purs version 0.15.14\nvar textXML = \"text/xml\";\nvar textPlain = \"text/plain\";\nvar textHTML = \"text/html\";\nvar textCSV = \"text/csv\";\nvar textCSS = \"text/css\";\nvar multipartFormData = \"multipart/form-data\";\nvar imagePNG = \"image/png\";\nvar imageJPEG = \"image/jpeg\";\nvar imageGIF = \"image/gif\";\nvar applicationXML = \"application/xml\";\nvar applicationOctetStream = \"application/octet-stream\";\nvar applicationJavascript = \"application/javascript\";\nvar applicationJSON = \"application/json\";\nvar applicationFormURLEncoded = \"application/x-www-form-urlencoded\";\nexport {\n applicationFormURLEncoded,\n applicationJSON,\n applicationJavascript,\n applicationOctetStream,\n applicationXML,\n imageGIF,\n imageJPEG,\n imagePNG,\n multipartFormData,\n textCSV,\n textHTML,\n textPlain,\n textXML,\n textCSS\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_MediaType_Common from \"../Data.MediaType.Common/index.js\";\nvar ArrayView = /* #__PURE__ */ (function () {\n function ArrayView(value0) {\n this.value0 = value0;\n };\n ArrayView.create = function (value0) {\n return new ArrayView(value0);\n };\n return ArrayView;\n})();\nvar Blob = /* #__PURE__ */ (function () {\n function Blob(value0) {\n this.value0 = value0;\n };\n Blob.create = function (value0) {\n return new Blob(value0);\n };\n return Blob;\n})();\nvar Document = /* #__PURE__ */ (function () {\n function Document(value0) {\n this.value0 = value0;\n };\n Document.create = function (value0) {\n return new Document(value0);\n };\n return Document;\n})();\nvar $$String = /* #__PURE__ */ (function () {\n function $$String(value0) {\n this.value0 = value0;\n };\n $$String.create = function (value0) {\n return new $$String(value0);\n };\n return $$String;\n})();\nvar FormData = /* #__PURE__ */ (function () {\n function FormData(value0) {\n this.value0 = value0;\n };\n FormData.create = function (value0) {\n return new FormData(value0);\n };\n return FormData;\n})();\nvar FormURLEncoded = /* #__PURE__ */ (function () {\n function FormURLEncoded(value0) {\n this.value0 = value0;\n };\n FormURLEncoded.create = function (value0) {\n return new FormURLEncoded(value0);\n };\n return FormURLEncoded;\n})();\nvar Json = /* #__PURE__ */ (function () {\n function Json(value0) {\n this.value0 = value0;\n };\n Json.create = function (value0) {\n return new Json(value0);\n };\n return Json;\n})();\nvar toMediaType = function (v) {\n if (v instanceof FormURLEncoded) {\n return new Data_Maybe.Just(Data_MediaType_Common.applicationFormURLEncoded);\n };\n if (v instanceof Json) {\n return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);\n };\n return Data_Maybe.Nothing.value;\n};\nvar string = /* #__PURE__ */ (function () {\n return $$String.create;\n})();\nvar json = /* #__PURE__ */ (function () {\n return Json.create;\n})();\nvar formURLEncoded = /* #__PURE__ */ (function () {\n return FormURLEncoded.create;\n})();\nvar formData = /* #__PURE__ */ (function () {\n return FormData.create;\n})();\nvar document = /* #__PURE__ */ (function () {\n return Document.create;\n})();\nvar blob = /* #__PURE__ */ (function () {\n return Blob.create;\n})();\nvar arrayView = function (av) {\n return new ArrayView(function (f) {\n return f(av);\n });\n};\nexport {\n ArrayView,\n Blob,\n Document,\n $$String as String,\n FormData,\n FormURLEncoded,\n Json,\n arrayView,\n blob,\n document,\n string,\n formData,\n formURLEncoded,\n json,\n toMediaType\n};\n", "// module Unsafe.Coerce\n\nexport const unsafeCoerce = function (x) {\n return x;\n};\n", "// Generated by purs version 0.15.14\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar coerce = function () {\n return Unsafe_Coerce.unsafeCoerce;\n};\nexport {\n coerce\n};\n", "// Generated by purs version 0.15.14\nimport * as Safe_Coerce from \"../Safe.Coerce/index.js\";\nvar coerce = /* #__PURE__ */ Safe_Coerce.coerce();\nvar wrap = function () {\n return coerce;\n};\nvar wrap1 = /* #__PURE__ */ wrap();\nvar unwrap = function () {\n return coerce;\n};\nvar unwrap1 = /* #__PURE__ */ unwrap();\nvar underF2 = function () {\n return function () {\n return function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n };\n };\n};\nvar underF = function () {\n return function () {\n return function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n };\n };\n};\nvar under2 = function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n};\nvar under = function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n};\nvar un = function () {\n return function (v) {\n return unwrap1;\n };\n};\nvar traverse = function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n};\nvar overF2 = function () {\n return function () {\n return function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n };\n };\n};\nvar overF = function () {\n return function () {\n return function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n };\n };\n};\nvar over2 = function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n};\nvar over = function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n};\nvar newtypeMultiplicative = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeLast = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeFirst = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeEndo = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeDual = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeDisj = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeConj = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeAdditive = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar modify = function () {\n return function (fn) {\n return function (t) {\n return wrap1(fn(unwrap1(t)));\n };\n };\n};\nvar collect = function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n};\nvar alaF = function () {\n return function () {\n return function () {\n return function () {\n return function (v) {\n return coerce;\n };\n };\n };\n };\n};\nvar ala = function () {\n return function () {\n return function () {\n return function (v) {\n return function (f) {\n return coerce(f(wrap1));\n };\n };\n };\n };\n};\nexport {\n wrap,\n unwrap,\n un,\n modify,\n ala,\n alaF,\n over,\n overF,\n under,\n underF,\n over2,\n overF2,\n under2,\n underF2,\n traverse,\n collect,\n newtypeAdditive,\n newtypeMultiplicative,\n newtypeConj,\n newtypeDisj,\n newtypeDual,\n newtypeEndo,\n newtypeFirst,\n newtypeLast\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_MediaType from \"../Data.MediaType/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nvar unwrap = /* #__PURE__ */ Data_Newtype.unwrap();\nvar show = /* #__PURE__ */ Data_Show.show(Data_MediaType.showMediaType);\nvar show1 = /* #__PURE__ */ Data_Show.show(Data_Show.showString);\nvar eq = /* #__PURE__ */ Data_Eq.eq(Data_MediaType.eqMediaType);\nvar compare = /* #__PURE__ */ Data_Ord.compare(Data_MediaType.ordMediaType);\nvar compare1 = /* #__PURE__ */ Data_Ord.compare(Data_Ord.ordString);\nvar Accept = /* #__PURE__ */ (function () {\n function Accept(value0) {\n this.value0 = value0;\n };\n Accept.create = function (value0) {\n return new Accept(value0);\n };\n return Accept;\n})();\nvar ContentType = /* #__PURE__ */ (function () {\n function ContentType(value0) {\n this.value0 = value0;\n };\n ContentType.create = function (value0) {\n return new ContentType(value0);\n };\n return ContentType;\n})();\nvar RequestHeader = /* #__PURE__ */ (function () {\n function RequestHeader(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n RequestHeader.create = function (value0) {\n return function (value1) {\n return new RequestHeader(value0, value1);\n };\n };\n return RequestHeader;\n})();\nvar value = function (v) {\n if (v instanceof Accept) {\n return unwrap(v.value0);\n };\n if (v instanceof ContentType) {\n return unwrap(v.value0);\n };\n if (v instanceof RequestHeader) {\n return v.value1;\n };\n throw new Error(\"Failed pattern match at Affjax.RequestHeader (line 26, column 1 - line 26, column 33): \" + [ v.constructor.name ]);\n};\nvar showRequestHeader = {\n show: function (v) {\n if (v instanceof Accept) {\n return \"(Accept \" + (show(v.value0) + \")\");\n };\n if (v instanceof ContentType) {\n return \"(ContentType \" + (show(v.value0) + \")\");\n };\n if (v instanceof RequestHeader) {\n return \"(RequestHeader \" + (show1(v.value0) + (\" \" + (show1(v.value1) + \")\")));\n };\n throw new Error(\"Failed pattern match at Affjax.RequestHeader (line 16, column 1 - line 19, column 81): \" + [ v.constructor.name ]);\n }\n};\nvar name = function (v) {\n if (v instanceof Accept) {\n return \"Accept\";\n };\n if (v instanceof ContentType) {\n return \"Content-Type\";\n };\n if (v instanceof RequestHeader) {\n return v.value0;\n };\n throw new Error(\"Failed pattern match at Affjax.RequestHeader (line 21, column 1 - line 21, column 32): \" + [ v.constructor.name ]);\n};\nvar eqRequestHeader = {\n eq: function (x) {\n return function (y) {\n if (x instanceof Accept && y instanceof Accept) {\n return eq(x.value0)(y.value0);\n };\n if (x instanceof ContentType && y instanceof ContentType) {\n return eq(x.value0)(y.value0);\n };\n if (x instanceof RequestHeader && y instanceof RequestHeader) {\n return x.value0 === y.value0 && x.value1 === y.value1;\n };\n return false;\n };\n }\n};\nvar ordRequestHeader = {\n compare: function (x) {\n return function (y) {\n if (x instanceof Accept && y instanceof Accept) {\n return compare(x.value0)(y.value0);\n };\n if (x instanceof Accept) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof Accept) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof ContentType && y instanceof ContentType) {\n return compare(x.value0)(y.value0);\n };\n if (x instanceof ContentType) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof ContentType) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof RequestHeader && y instanceof RequestHeader) {\n var v = compare1(x.value0)(y.value0);\n if (v instanceof Data_Ordering.LT) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Ordering.GT) {\n return Data_Ordering.GT.value;\n };\n return compare1(x.value1)(y.value1);\n };\n throw new Error(\"Failed pattern match at Affjax.RequestHeader (line 0, column 0 - line 0, column 0): \" + [ x.constructor.name, y.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqRequestHeader;\n }\n};\nexport {\n Accept,\n ContentType,\n RequestHeader,\n name,\n value,\n eqRequestHeader,\n ordRequestHeader,\n showRequestHeader\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_MediaType_Common from \"../Data.MediaType.Common/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar $$ArrayBuffer = /* #__PURE__ */ (function () {\n function $$ArrayBuffer(value0) {\n this.value0 = value0;\n };\n $$ArrayBuffer.create = function (value0) {\n return new $$ArrayBuffer(value0);\n };\n return $$ArrayBuffer;\n})();\nvar Blob = /* #__PURE__ */ (function () {\n function Blob(value0) {\n this.value0 = value0;\n };\n Blob.create = function (value0) {\n return new Blob(value0);\n };\n return Blob;\n})();\nvar Document = /* #__PURE__ */ (function () {\n function Document(value0) {\n this.value0 = value0;\n };\n Document.create = function (value0) {\n return new Document(value0);\n };\n return Document;\n})();\nvar Json = /* #__PURE__ */ (function () {\n function Json(value0) {\n this.value0 = value0;\n };\n Json.create = function (value0) {\n return new Json(value0);\n };\n return Json;\n})();\nvar $$String = /* #__PURE__ */ (function () {\n function $$String(value0) {\n this.value0 = value0;\n };\n $$String.create = function (value0) {\n return new $$String(value0);\n };\n return $$String;\n})();\nvar Ignore = /* #__PURE__ */ (function () {\n function Ignore(value0) {\n this.value0 = value0;\n };\n Ignore.create = function (value0) {\n return new Ignore(value0);\n };\n return Ignore;\n})();\nvar toResponseType = function (v) {\n if (v instanceof $$ArrayBuffer) {\n return \"arraybuffer\";\n };\n if (v instanceof Blob) {\n return \"blob\";\n };\n if (v instanceof Document) {\n return \"document\";\n };\n if (v instanceof Json) {\n return \"text\";\n };\n if (v instanceof $$String) {\n return \"text\";\n };\n if (v instanceof Ignore) {\n return \"\";\n };\n throw new Error(\"Failed pattern match at Affjax.ResponseFormat (line 44, column 3 - line 50, column 19): \" + [ v.constructor.name ]);\n};\nvar toMediaType = function (v) {\n if (v instanceof Json) {\n return new Data_Maybe.Just(Data_MediaType_Common.applicationJSON);\n };\n return Data_Maybe.Nothing.value;\n};\nvar string = /* #__PURE__ */ (function () {\n return new $$String(identity);\n})();\nvar json = /* #__PURE__ */ (function () {\n return new Json(identity);\n})();\nvar ignore = /* #__PURE__ */ (function () {\n return new Ignore(identity);\n})();\nvar document = /* #__PURE__ */ (function () {\n return new Document(identity);\n})();\nvar blob = /* #__PURE__ */ (function () {\n return new Blob(identity);\n})();\nvar arrayBuffer = /* #__PURE__ */ (function () {\n return new $$ArrayBuffer(identity);\n})();\nexport {\n $$ArrayBuffer as ArrayBuffer,\n Blob,\n Document,\n Json,\n $$String as String,\n Ignore,\n arrayBuffer,\n blob,\n document,\n json,\n string,\n ignore,\n toResponseType,\n toMediaType\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showString);\nvar compare = /* #__PURE__ */ Data_Ord.compare(Data_Ord.ordString);\nvar ResponseHeader = /* #__PURE__ */ (function () {\n function ResponseHeader(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n ResponseHeader.create = function (value0) {\n return function (value1) {\n return new ResponseHeader(value0, value1);\n };\n };\n return ResponseHeader;\n})();\nvar value = function (v) {\n return v.value1;\n};\nvar showResponseHeader = {\n show: function (v) {\n return \"(ResponseHeader \" + (show(v.value0) + (\" \" + (show(v.value1) + \")\")));\n }\n};\nvar name = function (v) {\n return v.value0;\n};\nvar eqResponseHeader = {\n eq: function (x) {\n return function (y) {\n return x.value0 === y.value0 && x.value1 === y.value1;\n };\n }\n};\nvar ordResponseHeader = {\n compare: function (x) {\n return function (y) {\n var v = compare(x.value0)(y.value0);\n if (v instanceof Data_Ordering.LT) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Ordering.GT) {\n return Data_Ordering.GT.value;\n };\n return compare(x.value1)(y.value1);\n };\n },\n Eq0: function () {\n return eqResponseHeader;\n }\n};\nexport {\n ResponseHeader,\n name,\n value,\n eqResponseHeader,\n ordResponseHeader,\n showResponseHeader\n};\n", "export const arrayBind = function (arr) {\n return function (f) {\n var result = [];\n for (var i = 0, l = arr.length; i < l; i++) {\n Array.prototype.push.apply(result, f(arr[i]));\n }\n return result;\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar discard = function (dict) {\n return dict.discard;\n};\nvar bindProxy = {\n bind: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n },\n Apply0: function () {\n return Control_Apply.applyProxy;\n }\n};\nvar bindFn = {\n bind: function (m) {\n return function (f) {\n return function (x) {\n return f(m(x))(x);\n };\n };\n },\n Apply0: function () {\n return Control_Apply.applyFn;\n }\n};\nvar bindArray = {\n bind: $foreign.arrayBind,\n Apply0: function () {\n return Control_Apply.applyArray;\n }\n};\nvar bind = function (dict) {\n return dict.bind;\n};\nvar bindFlipped = function (dictBind) {\n return Data_Function.flip(bind(dictBind));\n};\nvar composeKleisliFlipped = function (dictBind) {\n var bindFlipped1 = bindFlipped(dictBind);\n return function (f) {\n return function (g) {\n return function (a) {\n return bindFlipped1(f)(g(a));\n };\n };\n };\n};\nvar composeKleisli = function (dictBind) {\n var bind1 = bind(dictBind);\n return function (f) {\n return function (g) {\n return function (a) {\n return bind1(f(a))(g);\n };\n };\n };\n};\nvar discardProxy = {\n discard: function (dictBind) {\n return bind(dictBind);\n }\n};\nvar discardUnit = {\n discard: function (dictBind) {\n return bind(dictBind);\n }\n};\nvar ifM = function (dictBind) {\n var bind1 = bind(dictBind);\n return function (cond) {\n return function (t) {\n return function (f) {\n return bind1(cond)(function (cond$prime) {\n if (cond$prime) {\n return t;\n };\n return f;\n });\n };\n };\n };\n};\nvar join = function (dictBind) {\n var bind1 = bind(dictBind);\n return function (m) {\n return bind1(m)(identity);\n };\n};\nexport {\n bind,\n bindFlipped,\n discard,\n join,\n composeKleisli,\n composeKleisliFlipped,\n ifM,\n bindFn,\n bindArray,\n bindProxy,\n discardUnit,\n discardProxy\n};\nexport {\n liftA1,\n pure,\n unless,\n when\n} from \"../Control.Applicative/index.js\";\nexport {\n apply\n} from \"../Control.Apply/index.js\";\nexport {\n map,\n void\n} from \"../Data.Functor/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Data_Bounded from \"../Data.Bounded/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Functor_Invariant from \"../Data.Functor.Invariant/index.js\";\nimport * as Data_Generic_Rep from \"../Data.Generic.Rep/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nvar Left = /* #__PURE__ */ (function () {\n function Left(value0) {\n this.value0 = value0;\n };\n Left.create = function (value0) {\n return new Left(value0);\n };\n return Left;\n})();\nvar Right = /* #__PURE__ */ (function () {\n function Right(value0) {\n this.value0 = value0;\n };\n Right.create = function (value0) {\n return new Right(value0);\n };\n return Right;\n})();\nvar showEither = function (dictShow) {\n var show = Data_Show.show(dictShow);\n return function (dictShow1) {\n var show1 = Data_Show.show(dictShow1);\n return {\n show: function (v) {\n if (v instanceof Left) {\n return \"(Left \" + (show(v.value0) + \")\");\n };\n if (v instanceof Right) {\n return \"(Right \" + (show1(v.value0) + \")\");\n };\n throw new Error(\"Failed pattern match at Data.Either (line 173, column 1 - line 175, column 46): \" + [ v.constructor.name ]);\n }\n };\n };\n};\nvar note$prime = function (f) {\n return Data_Maybe[\"maybe$prime\"](function ($138) {\n return Left.create(f($138));\n })(Right.create);\n};\nvar note = function (a) {\n return Data_Maybe.maybe(new Left(a))(Right.create);\n};\nvar genericEither = {\n to: function (x) {\n if (x instanceof Data_Generic_Rep.Inl) {\n return new Left(x.value0);\n };\n if (x instanceof Data_Generic_Rep.Inr) {\n return new Right(x.value0);\n };\n throw new Error(\"Failed pattern match at Data.Either (line 33, column 1 - line 33, column 56): \" + [ x.constructor.name ]);\n },\n from: function (x) {\n if (x instanceof Left) {\n return new Data_Generic_Rep.Inl(x.value0);\n };\n if (x instanceof Right) {\n return new Data_Generic_Rep.Inr(x.value0);\n };\n throw new Error(\"Failed pattern match at Data.Either (line 33, column 1 - line 33, column 56): \" + [ x.constructor.name ]);\n }\n};\nvar functorEither = {\n map: function (f) {\n return function (m) {\n if (m instanceof Left) {\n return new Left(m.value0);\n };\n if (m instanceof Right) {\n return new Right(f(m.value0));\n };\n throw new Error(\"Failed pattern match at Data.Either (line 0, column 0 - line 0, column 0): \" + [ m.constructor.name ]);\n };\n }\n};\nvar map = /* #__PURE__ */ Data_Functor.map(functorEither);\nvar invariantEither = {\n imap: /* #__PURE__ */ Data_Functor_Invariant.imapF(functorEither)\n};\nvar fromRight$prime = function (v) {\n return function (v1) {\n if (v1 instanceof Right) {\n return v1.value0;\n };\n return v(Data_Unit.unit);\n };\n};\nvar fromRight = function (v) {\n return function (v1) {\n if (v1 instanceof Right) {\n return v1.value0;\n };\n return v;\n };\n};\nvar fromLeft$prime = function (v) {\n return function (v1) {\n if (v1 instanceof Left) {\n return v1.value0;\n };\n return v(Data_Unit.unit);\n };\n};\nvar fromLeft = function (v) {\n return function (v1) {\n if (v1 instanceof Left) {\n return v1.value0;\n };\n return v;\n };\n};\nvar extendEither = {\n extend: function (v) {\n return function (v1) {\n if (v1 instanceof Left) {\n return new Left(v1.value0);\n };\n return new Right(v(v1));\n };\n },\n Functor0: function () {\n return functorEither;\n }\n};\nvar eqEither = function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n return function (dictEq1) {\n var eq1 = Data_Eq.eq(dictEq1);\n return {\n eq: function (x) {\n return function (y) {\n if (x instanceof Left && y instanceof Left) {\n return eq(x.value0)(y.value0);\n };\n if (x instanceof Right && y instanceof Right) {\n return eq1(x.value0)(y.value0);\n };\n return false;\n };\n }\n };\n };\n};\nvar ordEither = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n var eqEither1 = eqEither(dictOrd.Eq0());\n return function (dictOrd1) {\n var compare1 = Data_Ord.compare(dictOrd1);\n var eqEither2 = eqEither1(dictOrd1.Eq0());\n return {\n compare: function (x) {\n return function (y) {\n if (x instanceof Left && y instanceof Left) {\n return compare(x.value0)(y.value0);\n };\n if (x instanceof Left) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof Left) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof Right && y instanceof Right) {\n return compare1(x.value0)(y.value0);\n };\n throw new Error(\"Failed pattern match at Data.Either (line 0, column 0 - line 0, column 0): \" + [ x.constructor.name, y.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqEither2;\n }\n };\n };\n};\nvar eq1Either = function (dictEq) {\n var eqEither1 = eqEither(dictEq);\n return {\n eq1: function (dictEq1) {\n return Data_Eq.eq(eqEither1(dictEq1));\n }\n };\n};\nvar ord1Either = function (dictOrd) {\n var ordEither1 = ordEither(dictOrd);\n var eq1Either1 = eq1Either(dictOrd.Eq0());\n return {\n compare1: function (dictOrd1) {\n return Data_Ord.compare(ordEither1(dictOrd1));\n },\n Eq10: function () {\n return eq1Either1;\n }\n };\n};\nvar either = function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Left) {\n return v(v2.value0);\n };\n if (v2 instanceof Right) {\n return v1(v2.value0);\n };\n throw new Error(\"Failed pattern match at Data.Either (line 208, column 1 - line 208, column 64): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n};\nvar hush = /* #__PURE__ */ (function () {\n return either(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n})();\nvar isLeft = /* #__PURE__ */ either(/* #__PURE__ */ Data_Function[\"const\"](true))(/* #__PURE__ */ Data_Function[\"const\"](false));\nvar isRight = /* #__PURE__ */ either(/* #__PURE__ */ Data_Function[\"const\"](false))(/* #__PURE__ */ Data_Function[\"const\"](true));\nvar choose = function (dictAlt) {\n var alt = Control_Alt.alt(dictAlt);\n var map1 = Data_Functor.map(dictAlt.Functor0());\n return function (a) {\n return function (b) {\n return alt(map1(Left.create)(a))(map1(Right.create)(b));\n };\n };\n};\nvar boundedEither = function (dictBounded) {\n var bottom = Data_Bounded.bottom(dictBounded);\n var ordEither1 = ordEither(dictBounded.Ord0());\n return function (dictBounded1) {\n var ordEither2 = ordEither1(dictBounded1.Ord0());\n return {\n top: new Right(Data_Bounded.top(dictBounded1)),\n bottom: new Left(bottom),\n Ord0: function () {\n return ordEither2;\n }\n };\n };\n};\nvar blush = /* #__PURE__ */ (function () {\n return either(Data_Maybe.Just.create)(Data_Function[\"const\"](Data_Maybe.Nothing.value));\n})();\nvar applyEither = {\n apply: function (v) {\n return function (v1) {\n if (v instanceof Left) {\n return new Left(v.value0);\n };\n if (v instanceof Right) {\n return map(v.value0)(v1);\n };\n throw new Error(\"Failed pattern match at Data.Either (line 70, column 1 - line 72, column 30): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n Functor0: function () {\n return functorEither;\n }\n};\nvar apply = /* #__PURE__ */ Control_Apply.apply(applyEither);\nvar bindEither = {\n bind: /* #__PURE__ */ either(function (e) {\n return function (v) {\n return new Left(e);\n };\n })(function (a) {\n return function (f) {\n return f(a);\n };\n }),\n Apply0: function () {\n return applyEither;\n }\n};\nvar semigroupEither = function (dictSemigroup) {\n var append1 = Data_Semigroup.append(dictSemigroup);\n return {\n append: function (x) {\n return function (y) {\n return apply(map(append1)(x))(y);\n };\n }\n };\n};\nvar applicativeEither = /* #__PURE__ */ (function () {\n return {\n pure: Right.create,\n Apply0: function () {\n return applyEither;\n }\n };\n})();\nvar monadEither = {\n Applicative0: function () {\n return applicativeEither;\n },\n Bind1: function () {\n return bindEither;\n }\n};\nvar altEither = {\n alt: function (v) {\n return function (v1) {\n if (v instanceof Left) {\n return v1;\n };\n return v;\n };\n },\n Functor0: function () {\n return functorEither;\n }\n};\nexport {\n Left,\n Right,\n either,\n choose,\n isLeft,\n isRight,\n fromLeft,\n fromLeft$prime,\n fromRight,\n fromRight$prime,\n note,\n note$prime,\n hush,\n blush,\n functorEither,\n genericEither,\n invariantEither,\n applyEither,\n applicativeEither,\n altEither,\n bindEither,\n monadEither,\n extendEither,\n showEither,\n eqEither,\n eq1Either,\n ordEither,\n ord1Either,\n boundedEither,\n semigroupEither\n};\n", "export const pureE = function (a) {\n return function () {\n return a;\n };\n};\n\nexport const bindE = function (a) {\n return function (f) {\n return function () {\n return f(a())();\n };\n };\n};\n\nexport const untilE = function (f) {\n return function () {\n while (!f());\n };\n};\n\nexport const whileE = function (f) {\n return function (a) {\n return function () {\n while (f()) {\n a();\n }\n };\n };\n};\n\nexport const forE = function (lo) {\n return function (hi) {\n return function (f) {\n return function () {\n for (var i = lo; i < hi; i++) {\n f(i)();\n }\n };\n };\n };\n};\n\nexport const foreachE = function (as) {\n return function (f) {\n return function () {\n for (var i = 0, l = as.length; i < l; i++) {\n f(as[i])();\n }\n };\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nvar whenM = function (dictMonad) {\n var bind = Control_Bind.bind(dictMonad.Bind1());\n var when = Control_Applicative.when(dictMonad.Applicative0());\n return function (mb) {\n return function (m) {\n return bind(mb)(function (b) {\n return when(b)(m);\n });\n };\n };\n};\nvar unlessM = function (dictMonad) {\n var bind = Control_Bind.bind(dictMonad.Bind1());\n var unless = Control_Applicative.unless(dictMonad.Applicative0());\n return function (mb) {\n return function (m) {\n return bind(mb)(function (b) {\n return unless(b)(m);\n });\n };\n };\n};\nvar monadProxy = {\n Applicative0: function () {\n return Control_Applicative.applicativeProxy;\n },\n Bind1: function () {\n return Control_Bind.bindProxy;\n }\n};\nvar monadFn = {\n Applicative0: function () {\n return Control_Applicative.applicativeFn;\n },\n Bind1: function () {\n return Control_Bind.bindFn;\n }\n};\nvar monadArray = {\n Applicative0: function () {\n return Control_Applicative.applicativeArray;\n },\n Bind1: function () {\n return Control_Bind.bindArray;\n }\n};\nvar liftM1 = function (dictMonad) {\n var bind = Control_Bind.bind(dictMonad.Bind1());\n var pure = Control_Applicative.pure(dictMonad.Applicative0());\n return function (f) {\n return function (a) {\n return bind(a)(function (a$prime) {\n return pure(f(a$prime));\n });\n };\n };\n};\nvar ap = function (dictMonad) {\n var bind = Control_Bind.bind(dictMonad.Bind1());\n var pure = Control_Applicative.pure(dictMonad.Applicative0());\n return function (f) {\n return function (a) {\n return bind(f)(function (f$prime) {\n return bind(a)(function (a$prime) {\n return pure(f$prime(a$prime));\n });\n });\n };\n };\n};\nexport {\n liftM1,\n whenM,\n unlessM,\n ap,\n monadFn,\n monadArray,\n monadProxy\n};\nexport {\n liftA1,\n pure,\n unless,\n when\n} from \"../Control.Applicative/index.js\";\nexport {\n apply\n} from \"../Control.Apply/index.js\";\nexport {\n bind,\n ifM,\n join\n} from \"../Control.Bind/index.js\";\nexport {\n map,\n void\n} from \"../Data.Functor/index.js\";\n", "export const intDegree = function (x) {\n return Math.min(Math.abs(x), 2147483647);\n};\n\n// See the Euclidean definition in\n// https://en.m.wikipedia.org/wiki/Modulo_operation.\nexport const intDiv = function (x) {\n return function (y) {\n if (y === 0) return 0;\n return y > 0 ? Math.floor(x / y) : -Math.floor(x / -y);\n };\n};\n\nexport const intMod = function (x) {\n return function (y) {\n if (y === 0) return 0;\n var yy = Math.abs(y);\n return ((x % yy) + yy) % yy;\n };\n};\n\nexport const numDiv = function (n1) {\n return function (n2) {\n return n1 / n2;\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Ring from \"../Data.Ring/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nvar ringRecord = /* #__PURE__ */ Data_Ring.ringRecord();\nvar commutativeRingUnit = {\n Ring0: function () {\n return Data_Ring.ringUnit;\n }\n};\nvar commutativeRingRecordNil = {\n RingRecord0: function () {\n return Data_Ring.ringRecordNil;\n }\n};\nvar commutativeRingRecordCons = function (dictIsSymbol) {\n var ringRecordCons = Data_Ring.ringRecordCons(dictIsSymbol)();\n return function () {\n return function (dictCommutativeRingRecord) {\n var ringRecordCons1 = ringRecordCons(dictCommutativeRingRecord.RingRecord0());\n return function (dictCommutativeRing) {\n var ringRecordCons2 = ringRecordCons1(dictCommutativeRing.Ring0());\n return {\n RingRecord0: function () {\n return ringRecordCons2;\n }\n };\n };\n };\n };\n};\nvar commutativeRingRecord = function () {\n return function (dictCommutativeRingRecord) {\n var ringRecord1 = ringRecord(dictCommutativeRingRecord.RingRecord0());\n return {\n Ring0: function () {\n return ringRecord1;\n }\n };\n };\n};\nvar commutativeRingProxy = {\n Ring0: function () {\n return Data_Ring.ringProxy;\n }\n};\nvar commutativeRingNumber = {\n Ring0: function () {\n return Data_Ring.ringNumber;\n }\n};\nvar commutativeRingInt = {\n Ring0: function () {\n return Data_Ring.ringInt;\n }\n};\nvar commutativeRingFn = function (dictCommutativeRing) {\n var ringFn = Data_Ring.ringFn(dictCommutativeRing.Ring0());\n return {\n Ring0: function () {\n return ringFn;\n }\n };\n};\nexport {\n commutativeRingInt,\n commutativeRingNumber,\n commutativeRingUnit,\n commutativeRingFn,\n commutativeRingRecord,\n commutativeRingProxy,\n commutativeRingRecordNil,\n commutativeRingRecordCons\n};\nexport {\n add,\n mul,\n one,\n zero\n} from \"../Data.Semiring/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_CommutativeRing from \"../Data.CommutativeRing/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Ring from \"../Data.Ring/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nvar mod = function (dict) {\n return dict.mod;\n};\nvar gcd = function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n return function (dictEuclideanRing) {\n var zero = Data_Semiring.zero(((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0());\n var mod1 = mod(dictEuclideanRing);\n return function (a) {\n return function (b) {\n var $24 = eq(b)(zero);\n if ($24) {\n return a;\n };\n return gcd(dictEq)(dictEuclideanRing)(b)(mod1(a)(b));\n };\n };\n };\n};\nvar euclideanRingNumber = {\n degree: function (v) {\n return 1;\n },\n div: $foreign.numDiv,\n mod: function (v) {\n return function (v1) {\n return 0.0;\n };\n },\n CommutativeRing0: function () {\n return Data_CommutativeRing.commutativeRingNumber;\n }\n};\nvar euclideanRingInt = {\n degree: $foreign.intDegree,\n div: $foreign.intDiv,\n mod: $foreign.intMod,\n CommutativeRing0: function () {\n return Data_CommutativeRing.commutativeRingInt;\n }\n};\nvar div = function (dict) {\n return dict.div;\n};\nvar lcm = function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n var gcd1 = gcd(dictEq);\n return function (dictEuclideanRing) {\n var Semiring0 = ((dictEuclideanRing.CommutativeRing0()).Ring0()).Semiring0();\n var zero = Data_Semiring.zero(Semiring0);\n var div1 = div(dictEuclideanRing);\n var mul = Data_Semiring.mul(Semiring0);\n var gcd2 = gcd1(dictEuclideanRing);\n return function (a) {\n return function (b) {\n var $26 = eq(a)(zero) || eq(b)(zero);\n if ($26) {\n return zero;\n };\n return div1(mul(a)(b))(gcd2(a)(b));\n };\n };\n };\n};\nvar degree = function (dict) {\n return dict.degree;\n};\nexport {\n degree,\n div,\n mod,\n gcd,\n lcm,\n euclideanRingInt,\n euclideanRingNumber\n};\nexport {\n sub\n} from \"../Data.Ring/index.js\";\nexport {\n add,\n mul,\n one,\n zero\n} from \"../Data.Semiring/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_EuclideanRing from \"../Data.EuclideanRing/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar semigroupRecord = /* #__PURE__ */ Data_Semigroup.semigroupRecord();\nvar mod = /* #__PURE__ */ Data_EuclideanRing.mod(Data_EuclideanRing.euclideanRingInt);\nvar div = /* #__PURE__ */ Data_EuclideanRing.div(Data_EuclideanRing.euclideanRingInt);\nvar monoidUnit = {\n mempty: Data_Unit.unit,\n Semigroup0: function () {\n return Data_Semigroup.semigroupUnit;\n }\n};\nvar monoidString = {\n mempty: \"\",\n Semigroup0: function () {\n return Data_Semigroup.semigroupString;\n }\n};\nvar monoidRecordNil = {\n memptyRecord: function (v) {\n return {};\n },\n SemigroupRecord0: function () {\n return Data_Semigroup.semigroupRecordNil;\n }\n};\nvar monoidOrdering = /* #__PURE__ */ (function () {\n return {\n mempty: Data_Ordering.EQ.value,\n Semigroup0: function () {\n return Data_Ordering.semigroupOrdering;\n }\n };\n})();\nvar monoidArray = {\n mempty: [ ],\n Semigroup0: function () {\n return Data_Semigroup.semigroupArray;\n }\n};\nvar memptyRecord = function (dict) {\n return dict.memptyRecord;\n};\nvar monoidRecord = function () {\n return function (dictMonoidRecord) {\n var semigroupRecord1 = semigroupRecord(dictMonoidRecord.SemigroupRecord0());\n return {\n mempty: memptyRecord(dictMonoidRecord)(Type_Proxy[\"Proxy\"].value),\n Semigroup0: function () {\n return semigroupRecord1;\n }\n };\n };\n};\nvar mempty = function (dict) {\n return dict.mempty;\n};\nvar monoidFn = function (dictMonoid) {\n var mempty1 = mempty(dictMonoid);\n var semigroupFn = Data_Semigroup.semigroupFn(dictMonoid.Semigroup0());\n return {\n mempty: function (v) {\n return mempty1;\n },\n Semigroup0: function () {\n return semigroupFn;\n }\n };\n};\nvar monoidRecordCons = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n var semigroupRecordCons = Data_Semigroup.semigroupRecordCons(dictIsSymbol)();\n return function (dictMonoid) {\n var mempty1 = mempty(dictMonoid);\n var Semigroup0 = dictMonoid.Semigroup0();\n return function () {\n return function (dictMonoidRecord) {\n var memptyRecord1 = memptyRecord(dictMonoidRecord);\n var semigroupRecordCons1 = semigroupRecordCons(dictMonoidRecord.SemigroupRecord0())(Semigroup0);\n return {\n memptyRecord: function (v) {\n var tail = memptyRecord1(Type_Proxy[\"Proxy\"].value);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n return insert(mempty1)(tail);\n },\n SemigroupRecord0: function () {\n return semigroupRecordCons1;\n }\n };\n };\n };\n };\n};\nvar power = function (dictMonoid) {\n var mempty1 = mempty(dictMonoid);\n var append = Data_Semigroup.append(dictMonoid.Semigroup0());\n return function (x) {\n var go = function (p) {\n if (p <= 0) {\n return mempty1;\n };\n if (p === 1) {\n return x;\n };\n if (mod(p)(2) === 0) {\n var x$prime = go(div(p)(2));\n return append(x$prime)(x$prime);\n };\n if (Data_Boolean.otherwise) {\n var x$prime = go(div(p)(2));\n return append(x$prime)(append(x$prime)(x));\n };\n throw new Error(\"Failed pattern match at Data.Monoid (line 88, column 3 - line 88, column 17): \" + [ p.constructor.name ]);\n };\n return go;\n };\n};\nvar guard = function (dictMonoid) {\n var mempty1 = mempty(dictMonoid);\n return function (v) {\n return function (v1) {\n if (v) {\n return v1;\n };\n if (!v) {\n return mempty1;\n };\n throw new Error(\"Failed pattern match at Data.Monoid (line 96, column 1 - line 96, column 49): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n};\nexport {\n mempty,\n power,\n guard,\n memptyRecord,\n monoidUnit,\n monoidOrdering,\n monoidFn,\n monoidString,\n monoidArray,\n monoidRecord,\n monoidRecordNil,\n monoidRecordCons\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Monad from \"../Control.Monad/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar monadEffect = {\n Applicative0: function () {\n return applicativeEffect;\n },\n Bind1: function () {\n return bindEffect;\n }\n};\nvar bindEffect = {\n bind: $foreign.bindE,\n Apply0: function () {\n return $lazy_applyEffect(0);\n }\n};\nvar applicativeEffect = {\n pure: $foreign.pureE,\n Apply0: function () {\n return $lazy_applyEffect(0);\n }\n};\nvar $lazy_functorEffect = /* #__PURE__ */ $runtime_lazy(\"functorEffect\", \"Effect\", function () {\n return {\n map: Control_Applicative.liftA1(applicativeEffect)\n };\n});\nvar $lazy_applyEffect = /* #__PURE__ */ $runtime_lazy(\"applyEffect\", \"Effect\", function () {\n return {\n apply: Control_Monad.ap(monadEffect),\n Functor0: function () {\n return $lazy_functorEffect(0);\n }\n };\n});\nvar functorEffect = /* #__PURE__ */ $lazy_functorEffect(20);\nvar applyEffect = /* #__PURE__ */ $lazy_applyEffect(23);\nvar lift2 = /* #__PURE__ */ Control_Apply.lift2(applyEffect);\nvar semigroupEffect = function (dictSemigroup) {\n return {\n append: lift2(Data_Semigroup.append(dictSemigroup))\n };\n};\nvar monoidEffect = function (dictMonoid) {\n var semigroupEffect1 = semigroupEffect(dictMonoid.Semigroup0());\n return {\n mempty: $foreign.pureE(Data_Monoid.mempty(dictMonoid)),\n Semigroup0: function () {\n return semigroupEffect1;\n }\n };\n};\nexport {\n untilE,\n whileE,\n forE,\n foreachE\n} from \"./foreign.js\";\nexport {\n functorEffect,\n applyEffect,\n applicativeEffect,\n bindEffect,\n monadEffect,\n semigroupEffect,\n monoidEffect\n};\n", "export function showErrorImpl(err) {\n return err.stack || err.toString();\n}\n\nexport function error(msg) {\n return new Error(msg);\n}\n\nexport function message(e) {\n return e.message;\n}\n\nexport function name(e) {\n return e.name || \"Error\";\n}\n\nexport function stackImpl(just) {\n return function (nothing) {\n return function (e) {\n return e.stack ? just(e.stack) : nothing;\n };\n };\n}\n\nexport function throwException(e) {\n return function () {\n throw e;\n };\n}\n\nexport function catchException(c) {\n return function (t) {\n return function () {\n try {\n return t();\n } catch (e) {\n if (e instanceof Error || Object.prototype.toString.call(e) === \"[object Error]\") {\n return c(e)();\n } else {\n return c(new Error(e.toString()))();\n }\n }\n };\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Effect.applicativeEffect);\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar $$try = function (action) {\n return $foreign.catchException(function ($3) {\n return pure(Data_Either.Left.create($3));\n })(map(Data_Either.Right.create)(action));\n};\nvar $$throw = function ($4) {\n return $foreign.throwException($foreign.error($4));\n};\nvar stack = /* #__PURE__ */ (function () {\n return $foreign.stackImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar showError = {\n show: $foreign.showErrorImpl\n};\nexport {\n error,\n message,\n name,\n throwException,\n catchException\n} from \"./foreign.js\";\nexport {\n stack,\n $$throw as throw,\n $$try as try,\n showError\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Exception from \"../Effect.Exception/index.js\";\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit);\nvar throwError = function (dict) {\n return dict.throwError;\n};\nvar monadThrowMaybe = /* #__PURE__ */ (function () {\n return {\n throwError: Data_Function[\"const\"](Data_Maybe.Nothing.value),\n Monad0: function () {\n return Data_Maybe.monadMaybe;\n }\n };\n})();\nvar monadThrowEither = /* #__PURE__ */ (function () {\n return {\n throwError: Data_Either.Left.create,\n Monad0: function () {\n return Data_Either.monadEither;\n }\n };\n})();\nvar monadThrowEffect = {\n throwError: Effect_Exception.throwException,\n Monad0: function () {\n return Effect.monadEffect;\n }\n};\nvar monadErrorMaybe = {\n catchError: function (v) {\n return function (v1) {\n if (v instanceof Data_Maybe.Nothing) {\n return v1(Data_Unit.unit);\n };\n if (v instanceof Data_Maybe.Just) {\n return new Data_Maybe.Just(v.value0);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Error.Class (line 79, column 1 - line 81, column 33): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n MonadThrow0: function () {\n return monadThrowMaybe;\n }\n};\nvar monadErrorEither = {\n catchError: function (v) {\n return function (v1) {\n if (v instanceof Data_Either.Left) {\n return v1(v.value0);\n };\n if (v instanceof Data_Either.Right) {\n return new Data_Either.Right(v.value0);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Error.Class (line 72, column 1 - line 74, column 35): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n MonadThrow0: function () {\n return monadThrowEither;\n }\n};\nvar monadErrorEffect = {\n catchError: /* #__PURE__ */ Data_Function.flip(Effect_Exception.catchException),\n MonadThrow0: function () {\n return monadThrowEffect;\n }\n};\nvar liftMaybe = function (dictMonadThrow) {\n var throwError1 = throwError(dictMonadThrow);\n var pure = Control_Applicative.pure((dictMonadThrow.Monad0()).Applicative0());\n return function (error) {\n return Data_Maybe.maybe(throwError1(error))(pure);\n };\n};\nvar liftEither = function (dictMonadThrow) {\n return Data_Either.either(throwError(dictMonadThrow))(Control_Applicative.pure((dictMonadThrow.Monad0()).Applicative0()));\n};\nvar catchError = function (dict) {\n return dict.catchError;\n};\nvar catchJust = function (dictMonadError) {\n var throwError1 = throwError(dictMonadError.MonadThrow0());\n var catchError1 = catchError(dictMonadError);\n return function (p) {\n return function (act) {\n return function (handler) {\n var handle = function (e) {\n var v = p(e);\n if (v instanceof Data_Maybe.Nothing) {\n return throwError1(e);\n };\n if (v instanceof Data_Maybe.Just) {\n return handler(v.value0);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Error.Class (line 57, column 5 - line 59, column 26): \" + [ v.constructor.name ]);\n };\n return catchError1(act)(handle);\n };\n };\n };\n};\nvar $$try = function (dictMonadError) {\n var catchError1 = catchError(dictMonadError);\n var Monad0 = (dictMonadError.MonadThrow0()).Monad0();\n var map = Data_Functor.map(((Monad0.Bind1()).Apply0()).Functor0());\n var pure = Control_Applicative.pure(Monad0.Applicative0());\n return function (a) {\n return catchError1(map(Data_Either.Right.create)(a))(function ($52) {\n return pure(Data_Either.Left.create($52));\n });\n };\n};\nvar withResource = function (dictMonadError) {\n var MonadThrow0 = dictMonadError.MonadThrow0();\n var Monad0 = MonadThrow0.Monad0();\n var Bind1 = Monad0.Bind1();\n var bind = Control_Bind.bind(Bind1);\n var try1 = $$try(dictMonadError);\n var discard1 = discard(Bind1);\n var throwError1 = throwError(MonadThrow0);\n var pure = Control_Applicative.pure(Monad0.Applicative0());\n return function (acquire) {\n return function (release) {\n return function (kleisli) {\n return bind(acquire)(function (resource) {\n return bind(try1(kleisli(resource)))(function (result) {\n return discard1(release(resource))(function () {\n return Data_Either.either(throwError1)(pure)(result);\n });\n });\n });\n };\n };\n };\n};\nexport {\n catchError,\n throwError,\n catchJust,\n $$try as try,\n withResource,\n liftMaybe,\n liftEither,\n monadThrowEither,\n monadErrorEither,\n monadThrowMaybe,\n monadErrorMaybe,\n monadThrowEffect,\n monadErrorEffect\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Functor_Invariant from \"../Data.Functor.Invariant/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nvar Identity = function (x) {\n return x;\n};\nvar showIdentity = function (dictShow) {\n var show = Data_Show.show(dictShow);\n return {\n show: function (v) {\n return \"(Identity \" + (show(v) + \")\");\n }\n };\n};\nvar semiringIdentity = function (dictSemiring) {\n return dictSemiring;\n};\nvar semigroupIdentity = function (dictSemigroup) {\n return dictSemigroup;\n};\nvar ringIdentity = function (dictRing) {\n return dictRing;\n};\nvar ordIdentity = function (dictOrd) {\n return dictOrd;\n};\nvar newtypeIdentity = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar monoidIdentity = function (dictMonoid) {\n return dictMonoid;\n};\nvar lazyIdentity = function (dictLazy) {\n return dictLazy;\n};\nvar heytingAlgebraIdentity = function (dictHeytingAlgebra) {\n return dictHeytingAlgebra;\n};\nvar functorIdentity = {\n map: function (f) {\n return function (m) {\n return f(m);\n };\n }\n};\nvar invariantIdentity = {\n imap: /* #__PURE__ */ Data_Functor_Invariant.imapF(functorIdentity)\n};\nvar extendIdentity = {\n extend: function (f) {\n return function (m) {\n return f(m);\n };\n },\n Functor0: function () {\n return functorIdentity;\n }\n};\nvar euclideanRingIdentity = function (dictEuclideanRing) {\n return dictEuclideanRing;\n};\nvar eqIdentity = function (dictEq) {\n return dictEq;\n};\nvar eq1Identity = {\n eq1: function (dictEq) {\n return Data_Eq.eq(eqIdentity(dictEq));\n }\n};\nvar ord1Identity = {\n compare1: function (dictOrd) {\n return Data_Ord.compare(ordIdentity(dictOrd));\n },\n Eq10: function () {\n return eq1Identity;\n }\n};\nvar comonadIdentity = {\n extract: function (v) {\n return v;\n },\n Extend0: function () {\n return extendIdentity;\n }\n};\nvar commutativeRingIdentity = function (dictCommutativeRing) {\n return dictCommutativeRing;\n};\nvar boundedIdentity = function (dictBounded) {\n return dictBounded;\n};\nvar booleanAlgebraIdentity = function (dictBooleanAlgebra) {\n return dictBooleanAlgebra;\n};\nvar applyIdentity = {\n apply: function (v) {\n return function (v1) {\n return v(v1);\n };\n },\n Functor0: function () {\n return functorIdentity;\n }\n};\nvar bindIdentity = {\n bind: function (v) {\n return function (f) {\n return f(v);\n };\n },\n Apply0: function () {\n return applyIdentity;\n }\n};\nvar applicativeIdentity = {\n pure: Identity,\n Apply0: function () {\n return applyIdentity;\n }\n};\nvar monadIdentity = {\n Applicative0: function () {\n return applicativeIdentity;\n },\n Bind1: function () {\n return bindIdentity;\n }\n};\nvar altIdentity = {\n alt: function (x) {\n return function (v) {\n return x;\n };\n },\n Functor0: function () {\n return functorIdentity;\n }\n};\nexport {\n Identity,\n newtypeIdentity,\n eqIdentity,\n ordIdentity,\n boundedIdentity,\n heytingAlgebraIdentity,\n booleanAlgebraIdentity,\n semigroupIdentity,\n monoidIdentity,\n semiringIdentity,\n euclideanRingIdentity,\n ringIdentity,\n commutativeRingIdentity,\n lazyIdentity,\n showIdentity,\n eq1Identity,\n ord1Identity,\n functorIdentity,\n invariantIdentity,\n altIdentity,\n applyIdentity,\n applicativeIdentity,\n bindIdentity,\n monadIdentity,\n extendIdentity,\n comonadIdentity\n};\n", "export const _new = function (val) {\n return function () {\n return { value: val };\n };\n};\n\nexport const newWithSelf = function (f) {\n return function () {\n var ref = { value: null };\n ref.value = f(ref);\n return ref;\n };\n};\n\nexport const read = function (ref) {\n return function () {\n return ref.value;\n };\n};\n\nexport const modifyImpl = function (f) {\n return function (ref) {\n return function () {\n var t = f(ref.value);\n ref.value = t.state;\n return t.value;\n };\n };\n};\n\nexport const write = function (val) {\n return function (ref) {\n return function () {\n ref.value = val;\n };\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Effect.functorEffect);\nvar $$new = $foreign[\"_new\"];\nvar modify$prime = $foreign.modifyImpl;\nvar modify = function (f) {\n return modify$prime(function (s) {\n var s$prime = f(s);\n return {\n state: s$prime,\n value: s$prime\n };\n });\n};\nvar modify_ = function (f) {\n return function (s) {\n return $$void(modify(f)(s));\n };\n};\nexport {\n newWithSelf,\n read,\n write\n} from \"./foreign.js\";\nexport {\n $$new as new,\n modify$prime,\n modify,\n modify_\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad from \"../Control.Monad/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Identity from \"../Data.Identity/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Ref from \"../Effect.Ref/index.js\";\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Effect.bindEffect);\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar Loop = /* #__PURE__ */ (function () {\n function Loop(value0) {\n this.value0 = value0;\n };\n Loop.create = function (value0) {\n return new Loop(value0);\n };\n return Loop;\n})();\nvar Done = /* #__PURE__ */ (function () {\n function Done(value0) {\n this.value0 = value0;\n };\n Done.create = function (value0) {\n return new Done(value0);\n };\n return Done;\n})();\nvar tailRecM = function (dict) {\n return dict.tailRecM;\n};\nvar tailRecM2 = function (dictMonadRec) {\n var tailRecM1 = tailRecM(dictMonadRec);\n return function (f) {\n return function (a) {\n return function (b) {\n return tailRecM1(function (o) {\n return f(o.a)(o.b);\n })({\n a: a,\n b: b\n });\n };\n };\n };\n};\nvar tailRecM3 = function (dictMonadRec) {\n var tailRecM1 = tailRecM(dictMonadRec);\n return function (f) {\n return function (a) {\n return function (b) {\n return function (c) {\n return tailRecM1(function (o) {\n return f(o.a)(o.b)(o.c);\n })({\n a: a,\n b: b,\n c: c\n });\n };\n };\n };\n };\n};\nvar untilJust = function (dictMonadRec) {\n var tailRecM1 = tailRecM(dictMonadRec);\n var mapFlipped = Data_Functor.mapFlipped((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0());\n return function (m) {\n return tailRecM1(function (v) {\n return mapFlipped(m)(function (v1) {\n if (v1 instanceof Data_Maybe.Nothing) {\n return new Loop(Data_Unit.unit);\n };\n if (v1 instanceof Data_Maybe.Just) {\n return new Done(v1.value0);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 179, column 43 - line 181, column 19): \" + [ v1.constructor.name ]);\n });\n })(Data_Unit.unit);\n };\n};\nvar whileJust = function (dictMonoid) {\n var append = Data_Semigroup.append(dictMonoid.Semigroup0());\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (dictMonadRec) {\n var tailRecM1 = tailRecM(dictMonadRec);\n var mapFlipped = Data_Functor.mapFlipped((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0());\n return function (m) {\n return tailRecM1(function (v) {\n return mapFlipped(m)(function (v1) {\n if (v1 instanceof Data_Maybe.Nothing) {\n return new Done(v);\n };\n if (v1 instanceof Data_Maybe.Just) {\n return new Loop(append(v)(v1.value0));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 172, column 45 - line 174, column 26): \" + [ v1.constructor.name ]);\n });\n })(mempty);\n };\n };\n};\nvar tailRec = function (f) {\n var go = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v instanceof Loop) {\n $copy_v = f(v.value0);\n return;\n };\n if (v instanceof Done) {\n $tco_done = true;\n return v.value0;\n };\n throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 103, column 3 - line 103, column 25): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n };\n return function ($85) {\n return go(f($85));\n };\n};\nvar tailRec2 = function (f) {\n return function (a) {\n return function (b) {\n return tailRec(function (o) {\n return f(o.a)(o.b);\n })({\n a: a,\n b: b\n });\n };\n };\n};\nvar tailRec3 = function (f) {\n return function (a) {\n return function (b) {\n return function (c) {\n return tailRec(function (o) {\n return f(o.a)(o.b)(o.c);\n })({\n a: a,\n b: b,\n c: c\n });\n };\n };\n };\n};\nvar monadRecMaybe = {\n tailRecM: function (f) {\n return function (a0) {\n var g = function (v) {\n if (v instanceof Data_Maybe.Nothing) {\n return new Done(Data_Maybe.Nothing.value);\n };\n if (v instanceof Data_Maybe.Just && v.value0 instanceof Loop) {\n return new Loop(f(v.value0.value0));\n };\n if (v instanceof Data_Maybe.Just && v.value0 instanceof Done) {\n return new Done(new Data_Maybe.Just(v.value0.value0));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 153, column 7 - line 153, column 31): \" + [ v.constructor.name ]);\n };\n return tailRec(g)(f(a0));\n };\n },\n Monad0: function () {\n return Data_Maybe.monadMaybe;\n }\n};\nvar monadRecIdentity = {\n tailRecM: function (f) {\n var runIdentity = function (v) {\n return v;\n };\n var $86 = tailRec(function ($88) {\n return runIdentity(f($88));\n });\n return function ($87) {\n return Data_Identity.Identity($86($87));\n };\n },\n Monad0: function () {\n return Data_Identity.monadIdentity;\n }\n};\nvar monadRecFunction = {\n tailRecM: function (f) {\n return function (a0) {\n return function (e) {\n return tailRec(function (a) {\n return f(a)(e);\n })(a0);\n };\n };\n },\n Monad0: function () {\n return Control_Monad.monadFn;\n }\n};\nvar monadRecEither = {\n tailRecM: function (f) {\n return function (a0) {\n var g = function (v) {\n if (v instanceof Data_Either.Left) {\n return new Done(new Data_Either.Left(v.value0));\n };\n if (v instanceof Data_Either.Right && v.value0 instanceof Loop) {\n return new Loop(f(v.value0.value0));\n };\n if (v instanceof Data_Either.Right && v.value0 instanceof Done) {\n return new Done(new Data_Either.Right(v.value0.value0));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 145, column 7 - line 145, column 33): \" + [ v.constructor.name ]);\n };\n return tailRec(g)(f(a0));\n };\n },\n Monad0: function () {\n return Data_Either.monadEither;\n }\n};\nvar monadRecEffect = {\n tailRecM: function (f) {\n return function (a) {\n var fromDone = function (v) {\n if (v instanceof Done) {\n return v.value0;\n };\n throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 137, column 30 - line 137, column 44): \" + [ v.constructor.name ]);\n };\n return function __do() {\n var r = bindFlipped(Effect_Ref[\"new\"])(f(a))();\n (function () {\n while (!(function __do() {\n var v = Effect_Ref.read(r)();\n if (v instanceof Loop) {\n var e = f(v.value0)();\n Effect_Ref.write(e)(r)();\n return false;\n };\n if (v instanceof Done) {\n return true;\n };\n throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 128, column 22 - line 133, column 28): \" + [ v.constructor.name ]);\n })()) {\n\n };\n return {};\n })();\n return map(fromDone)(Effect_Ref.read(r))();\n };\n };\n },\n Monad0: function () {\n return Effect.monadEffect;\n }\n};\nvar loop3 = function (a) {\n return function (b) {\n return function (c) {\n return new Loop({\n a: a,\n b: b,\n c: c\n });\n };\n };\n};\nvar loop2 = function (a) {\n return function (b) {\n return new Loop({\n a: a,\n b: b\n });\n };\n};\nvar functorStep = {\n map: function (f) {\n return function (m) {\n if (m instanceof Loop) {\n return new Loop(m.value0);\n };\n if (m instanceof Done) {\n return new Done(f(m.value0));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 0, column 0 - line 0, column 0): \" + [ m.constructor.name ]);\n };\n }\n};\nvar forever = function (dictMonadRec) {\n var tailRecM1 = tailRecM(dictMonadRec);\n var voidRight = Data_Functor.voidRight((((dictMonadRec.Monad0()).Bind1()).Apply0()).Functor0());\n return function (ma) {\n return tailRecM1(function (u) {\n return voidRight(new Loop(u))(ma);\n })(Data_Unit.unit);\n };\n};\nvar bifunctorStep = {\n bimap: function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Loop) {\n return new Loop(v(v2.value0));\n };\n if (v2 instanceof Done) {\n return new Done(v1(v2.value0));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Rec.Class (line 33, column 1 - line 35, column 34): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n }\n};\nexport {\n Loop,\n Done,\n tailRec,\n tailRec2,\n tailRec3,\n tailRecM,\n tailRecM2,\n tailRecM3,\n forever,\n whileJust,\n untilJust,\n loop2,\n loop3,\n functorStep,\n bifunctorStep,\n monadRecIdentity,\n monadRecEffect,\n monadRecFunction,\n monadRecEither,\n monadRecMaybe\n};\n", "export const boolConj = function (b1) {\n return function (b2) {\n return b1 && b2;\n };\n};\n\nexport const boolDisj = function (b1) {\n return function (b2) {\n return b1 || b2;\n };\n};\n\nexport const boolNot = function (b) {\n return !b;\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar ttRecord = function (dict) {\n return dict.ttRecord;\n};\nvar tt = function (dict) {\n return dict.tt;\n};\nvar notRecord = function (dict) {\n return dict.notRecord;\n};\nvar not = function (dict) {\n return dict.not;\n};\nvar impliesRecord = function (dict) {\n return dict.impliesRecord;\n};\nvar implies = function (dict) {\n return dict.implies;\n};\nvar heytingAlgebraUnit = {\n ff: Data_Unit.unit,\n tt: Data_Unit.unit,\n implies: function (v) {\n return function (v1) {\n return Data_Unit.unit;\n };\n },\n conj: function (v) {\n return function (v1) {\n return Data_Unit.unit;\n };\n },\n disj: function (v) {\n return function (v1) {\n return Data_Unit.unit;\n };\n },\n not: function (v) {\n return Data_Unit.unit;\n }\n};\nvar heytingAlgebraRecordNil = {\n conjRecord: function (v) {\n return function (v1) {\n return function (v2) {\n return {};\n };\n };\n },\n disjRecord: function (v) {\n return function (v1) {\n return function (v2) {\n return {};\n };\n };\n },\n ffRecord: function (v) {\n return function (v1) {\n return {};\n };\n },\n impliesRecord: function (v) {\n return function (v1) {\n return function (v2) {\n return {};\n };\n };\n },\n notRecord: function (v) {\n return function (v1) {\n return {};\n };\n },\n ttRecord: function (v) {\n return function (v1) {\n return {};\n };\n }\n};\nvar heytingAlgebraProxy = /* #__PURE__ */ (function () {\n return {\n conj: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n },\n disj: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n },\n implies: function (v) {\n return function (v1) {\n return Type_Proxy[\"Proxy\"].value;\n };\n },\n ff: Type_Proxy[\"Proxy\"].value,\n not: function (v) {\n return Type_Proxy[\"Proxy\"].value;\n },\n tt: Type_Proxy[\"Proxy\"].value\n };\n})();\nvar ffRecord = function (dict) {\n return dict.ffRecord;\n};\nvar ff = function (dict) {\n return dict.ff;\n};\nvar disjRecord = function (dict) {\n return dict.disjRecord;\n};\nvar disj = function (dict) {\n return dict.disj;\n};\nvar heytingAlgebraBoolean = {\n ff: false,\n tt: true,\n implies: function (a) {\n return function (b) {\n return disj(heytingAlgebraBoolean)(not(heytingAlgebraBoolean)(a))(b);\n };\n },\n conj: $foreign.boolConj,\n disj: $foreign.boolDisj,\n not: $foreign.boolNot\n};\nvar conjRecord = function (dict) {\n return dict.conjRecord;\n};\nvar heytingAlgebraRecord = function () {\n return function (dictHeytingAlgebraRecord) {\n return {\n ff: ffRecord(dictHeytingAlgebraRecord)(Type_Proxy[\"Proxy\"].value)(Type_Proxy[\"Proxy\"].value),\n tt: ttRecord(dictHeytingAlgebraRecord)(Type_Proxy[\"Proxy\"].value)(Type_Proxy[\"Proxy\"].value),\n conj: conjRecord(dictHeytingAlgebraRecord)(Type_Proxy[\"Proxy\"].value),\n disj: disjRecord(dictHeytingAlgebraRecord)(Type_Proxy[\"Proxy\"].value),\n implies: impliesRecord(dictHeytingAlgebraRecord)(Type_Proxy[\"Proxy\"].value),\n not: notRecord(dictHeytingAlgebraRecord)(Type_Proxy[\"Proxy\"].value)\n };\n };\n};\nvar conj = function (dict) {\n return dict.conj;\n};\nvar heytingAlgebraFunction = function (dictHeytingAlgebra) {\n var ff1 = ff(dictHeytingAlgebra);\n var tt1 = tt(dictHeytingAlgebra);\n var implies1 = implies(dictHeytingAlgebra);\n var conj1 = conj(dictHeytingAlgebra);\n var disj1 = disj(dictHeytingAlgebra);\n var not1 = not(dictHeytingAlgebra);\n return {\n ff: function (v) {\n return ff1;\n },\n tt: function (v) {\n return tt1;\n },\n implies: function (f) {\n return function (g) {\n return function (a) {\n return implies1(f(a))(g(a));\n };\n };\n },\n conj: function (f) {\n return function (g) {\n return function (a) {\n return conj1(f(a))(g(a));\n };\n };\n },\n disj: function (f) {\n return function (g) {\n return function (a) {\n return disj1(f(a))(g(a));\n };\n };\n },\n not: function (f) {\n return function (a) {\n return not1(f(a));\n };\n }\n };\n};\nvar heytingAlgebraRecordCons = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function () {\n return function (dictHeytingAlgebraRecord) {\n var conjRecord1 = conjRecord(dictHeytingAlgebraRecord);\n var disjRecord1 = disjRecord(dictHeytingAlgebraRecord);\n var impliesRecord1 = impliesRecord(dictHeytingAlgebraRecord);\n var ffRecord1 = ffRecord(dictHeytingAlgebraRecord);\n var notRecord1 = notRecord(dictHeytingAlgebraRecord);\n var ttRecord1 = ttRecord(dictHeytingAlgebraRecord);\n return function (dictHeytingAlgebra) {\n var conj1 = conj(dictHeytingAlgebra);\n var disj1 = disj(dictHeytingAlgebra);\n var implies1 = implies(dictHeytingAlgebra);\n var ff1 = ff(dictHeytingAlgebra);\n var not1 = not(dictHeytingAlgebra);\n var tt1 = tt(dictHeytingAlgebra);\n return {\n conjRecord: function (v) {\n return function (ra) {\n return function (rb) {\n var tail = conjRecord1(Type_Proxy[\"Proxy\"].value)(ra)(rb);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n var get = Record_Unsafe.unsafeGet(key);\n return insert(conj1(get(ra))(get(rb)))(tail);\n };\n };\n },\n disjRecord: function (v) {\n return function (ra) {\n return function (rb) {\n var tail = disjRecord1(Type_Proxy[\"Proxy\"].value)(ra)(rb);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n var get = Record_Unsafe.unsafeGet(key);\n return insert(disj1(get(ra))(get(rb)))(tail);\n };\n };\n },\n impliesRecord: function (v) {\n return function (ra) {\n return function (rb) {\n var tail = impliesRecord1(Type_Proxy[\"Proxy\"].value)(ra)(rb);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n var get = Record_Unsafe.unsafeGet(key);\n return insert(implies1(get(ra))(get(rb)))(tail);\n };\n };\n },\n ffRecord: function (v) {\n return function (row) {\n var tail = ffRecord1(Type_Proxy[\"Proxy\"].value)(row);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n return insert(ff1)(tail);\n };\n },\n notRecord: function (v) {\n return function (row) {\n var tail = notRecord1(Type_Proxy[\"Proxy\"].value)(row);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n var get = Record_Unsafe.unsafeGet(key);\n return insert(not1(get(row)))(tail);\n };\n },\n ttRecord: function (v) {\n return function (row) {\n var tail = ttRecord1(Type_Proxy[\"Proxy\"].value)(row);\n var key = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var insert = Record_Unsafe.unsafeSet(key);\n return insert(tt1)(tail);\n };\n }\n };\n };\n };\n };\n};\nexport {\n tt,\n ff,\n implies,\n conj,\n disj,\n not,\n ffRecord,\n ttRecord,\n impliesRecord,\n conjRecord,\n disjRecord,\n notRecord,\n heytingAlgebraBoolean,\n heytingAlgebraUnit,\n heytingAlgebraFunction,\n heytingAlgebraProxy,\n heytingAlgebraRecord,\n heytingAlgebraRecordNil,\n heytingAlgebraRecordCons\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Lazy from \"../Control.Lazy/index.js\";\nimport * as Data_Bounded from \"../Data.Bounded/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Functor_Invariant from \"../Data.Functor.Invariant/index.js\";\nimport * as Data_Generic_Rep from \"../Data.Generic.Rep/index.js\";\nimport * as Data_HeytingAlgebra from \"../Data.HeytingAlgebra/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Ring from \"../Data.Ring/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nvar Tuple = /* #__PURE__ */ (function () {\n function Tuple(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Tuple.create = function (value0) {\n return function (value1) {\n return new Tuple(value0, value1);\n };\n };\n return Tuple;\n})();\nvar uncurry = function (f) {\n return function (v) {\n return f(v.value0)(v.value1);\n };\n};\nvar swap = function (v) {\n return new Tuple(v.value1, v.value0);\n};\nvar snd = function (v) {\n return v.value1;\n};\nvar showTuple = function (dictShow) {\n var show = Data_Show.show(dictShow);\n return function (dictShow1) {\n var show1 = Data_Show.show(dictShow1);\n return {\n show: function (v) {\n return \"(Tuple \" + (show(v.value0) + (\" \" + (show1(v.value1) + \")\")));\n }\n };\n };\n};\nvar semiringTuple = function (dictSemiring) {\n var add = Data_Semiring.add(dictSemiring);\n var one = Data_Semiring.one(dictSemiring);\n var mul = Data_Semiring.mul(dictSemiring);\n var zero = Data_Semiring.zero(dictSemiring);\n return function (dictSemiring1) {\n var add1 = Data_Semiring.add(dictSemiring1);\n var mul1 = Data_Semiring.mul(dictSemiring1);\n return {\n add: function (v) {\n return function (v1) {\n return new Tuple(add(v.value0)(v1.value0), add1(v.value1)(v1.value1));\n };\n },\n one: new Tuple(one, Data_Semiring.one(dictSemiring1)),\n mul: function (v) {\n return function (v1) {\n return new Tuple(mul(v.value0)(v1.value0), mul1(v.value1)(v1.value1));\n };\n },\n zero: new Tuple(zero, Data_Semiring.zero(dictSemiring1))\n };\n };\n};\nvar semigroupoidTuple = {\n compose: function (v) {\n return function (v1) {\n return new Tuple(v1.value0, v.value1);\n };\n }\n};\nvar semigroupTuple = function (dictSemigroup) {\n var append1 = Data_Semigroup.append(dictSemigroup);\n return function (dictSemigroup1) {\n var append2 = Data_Semigroup.append(dictSemigroup1);\n return {\n append: function (v) {\n return function (v1) {\n return new Tuple(append1(v.value0)(v1.value0), append2(v.value1)(v1.value1));\n };\n }\n };\n };\n};\nvar ringTuple = function (dictRing) {\n var sub = Data_Ring.sub(dictRing);\n var semiringTuple1 = semiringTuple(dictRing.Semiring0());\n return function (dictRing1) {\n var sub1 = Data_Ring.sub(dictRing1);\n var semiringTuple2 = semiringTuple1(dictRing1.Semiring0());\n return {\n sub: function (v) {\n return function (v1) {\n return new Tuple(sub(v.value0)(v1.value0), sub1(v.value1)(v1.value1));\n };\n },\n Semiring0: function () {\n return semiringTuple2;\n }\n };\n };\n};\nvar monoidTuple = function (dictMonoid) {\n var mempty = Data_Monoid.mempty(dictMonoid);\n var semigroupTuple1 = semigroupTuple(dictMonoid.Semigroup0());\n return function (dictMonoid1) {\n var semigroupTuple2 = semigroupTuple1(dictMonoid1.Semigroup0());\n return {\n mempty: new Tuple(mempty, Data_Monoid.mempty(dictMonoid1)),\n Semigroup0: function () {\n return semigroupTuple2;\n }\n };\n };\n};\nvar heytingAlgebraTuple = function (dictHeytingAlgebra) {\n var tt = Data_HeytingAlgebra.tt(dictHeytingAlgebra);\n var ff = Data_HeytingAlgebra.ff(dictHeytingAlgebra);\n var implies = Data_HeytingAlgebra.implies(dictHeytingAlgebra);\n var conj1 = Data_HeytingAlgebra.conj(dictHeytingAlgebra);\n var disj = Data_HeytingAlgebra.disj(dictHeytingAlgebra);\n var not = Data_HeytingAlgebra.not(dictHeytingAlgebra);\n return function (dictHeytingAlgebra1) {\n var implies1 = Data_HeytingAlgebra.implies(dictHeytingAlgebra1);\n var conj2 = Data_HeytingAlgebra.conj(dictHeytingAlgebra1);\n var disj1 = Data_HeytingAlgebra.disj(dictHeytingAlgebra1);\n var not1 = Data_HeytingAlgebra.not(dictHeytingAlgebra1);\n return {\n tt: new Tuple(tt, Data_HeytingAlgebra.tt(dictHeytingAlgebra1)),\n ff: new Tuple(ff, Data_HeytingAlgebra.ff(dictHeytingAlgebra1)),\n implies: function (v) {\n return function (v1) {\n return new Tuple(implies(v.value0)(v1.value0), implies1(v.value1)(v1.value1));\n };\n },\n conj: function (v) {\n return function (v1) {\n return new Tuple(conj1(v.value0)(v1.value0), conj2(v.value1)(v1.value1));\n };\n },\n disj: function (v) {\n return function (v1) {\n return new Tuple(disj(v.value0)(v1.value0), disj1(v.value1)(v1.value1));\n };\n },\n not: function (v) {\n return new Tuple(not(v.value0), not1(v.value1));\n }\n };\n };\n};\nvar genericTuple = {\n to: function (x) {\n return new Tuple(x.value0, x.value1);\n },\n from: function (x) {\n return new Data_Generic_Rep.Product(x.value0, x.value1);\n }\n};\nvar functorTuple = {\n map: function (f) {\n return function (m) {\n return new Tuple(m.value0, f(m.value1));\n };\n }\n};\nvar invariantTuple = {\n imap: /* #__PURE__ */ Data_Functor_Invariant.imapF(functorTuple)\n};\nvar fst = function (v) {\n return v.value0;\n};\nvar lazyTuple = function (dictLazy) {\n var defer = Control_Lazy.defer(dictLazy);\n return function (dictLazy1) {\n var defer1 = Control_Lazy.defer(dictLazy1);\n return {\n defer: function (f) {\n return new Tuple(defer(function (v) {\n return fst(f(Data_Unit.unit));\n }), defer1(function (v) {\n return snd(f(Data_Unit.unit));\n }));\n }\n };\n };\n};\nvar extendTuple = {\n extend: function (f) {\n return function (v) {\n return new Tuple(v.value0, f(v));\n };\n },\n Functor0: function () {\n return functorTuple;\n }\n};\nvar eqTuple = function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n return function (dictEq1) {\n var eq1 = Data_Eq.eq(dictEq1);\n return {\n eq: function (x) {\n return function (y) {\n return eq(x.value0)(y.value0) && eq1(x.value1)(y.value1);\n };\n }\n };\n };\n};\nvar ordTuple = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n var eqTuple1 = eqTuple(dictOrd.Eq0());\n return function (dictOrd1) {\n var compare1 = Data_Ord.compare(dictOrd1);\n var eqTuple2 = eqTuple1(dictOrd1.Eq0());\n return {\n compare: function (x) {\n return function (y) {\n var v = compare(x.value0)(y.value0);\n if (v instanceof Data_Ordering.LT) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Ordering.GT) {\n return Data_Ordering.GT.value;\n };\n return compare1(x.value1)(y.value1);\n };\n },\n Eq0: function () {\n return eqTuple2;\n }\n };\n };\n};\nvar eq1Tuple = function (dictEq) {\n var eqTuple1 = eqTuple(dictEq);\n return {\n eq1: function (dictEq1) {\n return Data_Eq.eq(eqTuple1(dictEq1));\n }\n };\n};\nvar ord1Tuple = function (dictOrd) {\n var ordTuple1 = ordTuple(dictOrd);\n var eq1Tuple1 = eq1Tuple(dictOrd.Eq0());\n return {\n compare1: function (dictOrd1) {\n return Data_Ord.compare(ordTuple1(dictOrd1));\n },\n Eq10: function () {\n return eq1Tuple1;\n }\n };\n};\nvar curry = function (f) {\n return function (a) {\n return function (b) {\n return f(new Tuple(a, b));\n };\n };\n};\nvar comonadTuple = {\n extract: snd,\n Extend0: function () {\n return extendTuple;\n }\n};\nvar commutativeRingTuple = function (dictCommutativeRing) {\n var ringTuple1 = ringTuple(dictCommutativeRing.Ring0());\n return function (dictCommutativeRing1) {\n var ringTuple2 = ringTuple1(dictCommutativeRing1.Ring0());\n return {\n Ring0: function () {\n return ringTuple2;\n }\n };\n };\n};\nvar boundedTuple = function (dictBounded) {\n var top = Data_Bounded.top(dictBounded);\n var bottom = Data_Bounded.bottom(dictBounded);\n var ordTuple1 = ordTuple(dictBounded.Ord0());\n return function (dictBounded1) {\n var ordTuple2 = ordTuple1(dictBounded1.Ord0());\n return {\n top: new Tuple(top, Data_Bounded.top(dictBounded1)),\n bottom: new Tuple(bottom, Data_Bounded.bottom(dictBounded1)),\n Ord0: function () {\n return ordTuple2;\n }\n };\n };\n};\nvar booleanAlgebraTuple = function (dictBooleanAlgebra) {\n var heytingAlgebraTuple1 = heytingAlgebraTuple(dictBooleanAlgebra.HeytingAlgebra0());\n return function (dictBooleanAlgebra1) {\n var heytingAlgebraTuple2 = heytingAlgebraTuple1(dictBooleanAlgebra1.HeytingAlgebra0());\n return {\n HeytingAlgebra0: function () {\n return heytingAlgebraTuple2;\n }\n };\n };\n};\nvar applyTuple = function (dictSemigroup) {\n var append1 = Data_Semigroup.append(dictSemigroup);\n return {\n apply: function (v) {\n return function (v1) {\n return new Tuple(append1(v.value0)(v1.value0), v.value1(v1.value1));\n };\n },\n Functor0: function () {\n return functorTuple;\n }\n };\n};\nvar bindTuple = function (dictSemigroup) {\n var append1 = Data_Semigroup.append(dictSemigroup);\n var applyTuple1 = applyTuple(dictSemigroup);\n return {\n bind: function (v) {\n return function (f) {\n var v1 = f(v.value1);\n return new Tuple(append1(v.value0)(v1.value0), v1.value1);\n };\n },\n Apply0: function () {\n return applyTuple1;\n }\n };\n};\nvar applicativeTuple = function (dictMonoid) {\n var applyTuple1 = applyTuple(dictMonoid.Semigroup0());\n return {\n pure: Tuple.create(Data_Monoid.mempty(dictMonoid)),\n Apply0: function () {\n return applyTuple1;\n }\n };\n};\nvar monadTuple = function (dictMonoid) {\n var applicativeTuple1 = applicativeTuple(dictMonoid);\n var bindTuple1 = bindTuple(dictMonoid.Semigroup0());\n return {\n Applicative0: function () {\n return applicativeTuple1;\n },\n Bind1: function () {\n return bindTuple1;\n }\n };\n};\nexport {\n Tuple,\n fst,\n snd,\n curry,\n uncurry,\n swap,\n showTuple,\n eqTuple,\n eq1Tuple,\n ordTuple,\n ord1Tuple,\n boundedTuple,\n semigroupoidTuple,\n semigroupTuple,\n monoidTuple,\n semiringTuple,\n ringTuple,\n commutativeRingTuple,\n heytingAlgebraTuple,\n booleanAlgebraTuple,\n functorTuple,\n genericTuple,\n invariantTuple,\n applyTuple,\n applicativeTuple,\n bindTuple,\n monadTuple,\n extendTuple,\n comonadTuple,\n lazyTuple\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nvar state = function (dict) {\n return dict.state;\n};\nvar put = function (dictMonadState) {\n var state1 = state(dictMonadState);\n return function (s) {\n return state1(function (v) {\n return new Data_Tuple.Tuple(Data_Unit.unit, s);\n });\n };\n};\nvar modify_ = function (dictMonadState) {\n var state1 = state(dictMonadState);\n return function (f) {\n return state1(function (s) {\n return new Data_Tuple.Tuple(Data_Unit.unit, f(s));\n });\n };\n};\nvar modify = function (dictMonadState) {\n var state1 = state(dictMonadState);\n return function (f) {\n return state1(function (s) {\n var s$prime = f(s);\n return new Data_Tuple.Tuple(s$prime, s$prime);\n });\n };\n};\nvar gets = function (dictMonadState) {\n var state1 = state(dictMonadState);\n return function (f) {\n return state1(function (s) {\n return new Data_Tuple.Tuple(f(s), s);\n });\n };\n};\nvar get = function (dictMonadState) {\n return state(dictMonadState)(function (s) {\n return new Data_Tuple.Tuple(s, s);\n });\n};\nexport {\n state,\n get,\n gets,\n put,\n modify,\n modify_\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nvar monadEffectEffect = {\n liftEffect: /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn),\n Monad0: function () {\n return Effect.monadEffect;\n }\n};\nvar liftEffect = function (dict) {\n return dict.liftEffect;\n};\nexport {\n liftEffect,\n monadEffectEffect\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Monad from \"../Control.Monad/index.js\";\nimport * as Control_Monad_Cont_Class from \"../Control.Monad.Cont.Class/index.js\";\nimport * as Control_Monad_Error_Class from \"../Control.Monad.Error.Class/index.js\";\nimport * as Control_Monad_Reader_Class from \"../Control.Monad.Reader.Class/index.js\";\nimport * as Control_Monad_Rec_Class from \"../Control.Monad.Rec.Class/index.js\";\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as Control_Monad_Trans_Class from \"../Control.Monad.Trans.Class/index.js\";\nimport * as Control_Monad_Writer_Class from \"../Control.Monad.Writer.Class/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Either.functorEither);\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar ExceptT = function (x) {\n return x;\n};\nvar withExceptT = function (dictFunctor) {\n var map1 = Data_Functor.map(dictFunctor);\n return function (f) {\n return function (v) {\n var mapLeft = function (v1) {\n return function (v2) {\n if (v2 instanceof Data_Either.Right) {\n return new Data_Either.Right(v2.value0);\n };\n if (v2 instanceof Data_Either.Left) {\n return new Data_Either.Left(v1(v2.value0));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Except.Trans (line 42, column 3 - line 42, column 32): \" + [ v1.constructor.name, v2.constructor.name ]);\n };\n };\n return map1(mapLeft(f))(v);\n };\n };\n};\nvar runExceptT = function (v) {\n return v;\n};\nvar newtypeExceptT = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar monadTransExceptT = {\n lift: function (dictMonad) {\n var bind = Control_Bind.bind(dictMonad.Bind1());\n var pure = Control_Applicative.pure(dictMonad.Applicative0());\n return function (m) {\n return bind(m)(function (a) {\n return pure(new Data_Either.Right(a));\n });\n };\n }\n};\nvar lift = /* #__PURE__ */ Control_Monad_Trans_Class.lift(monadTransExceptT);\nvar mapExceptT = function (f) {\n return function (v) {\n return f(v);\n };\n};\nvar functorExceptT = function (dictFunctor) {\n var map1 = Data_Functor.map(dictFunctor);\n return {\n map: function (f) {\n return mapExceptT(map1(map(f)));\n }\n };\n};\nvar except = function (dictApplicative) {\n var $185 = Control_Applicative.pure(dictApplicative);\n return function ($186) {\n return ExceptT($185($186));\n };\n};\nvar monadExceptT = function (dictMonad) {\n return {\n Applicative0: function () {\n return applicativeExceptT(dictMonad);\n },\n Bind1: function () {\n return bindExceptT(dictMonad);\n }\n };\n};\nvar bindExceptT = function (dictMonad) {\n var bind = Control_Bind.bind(dictMonad.Bind1());\n var pure = Control_Applicative.pure(dictMonad.Applicative0());\n return {\n bind: function (v) {\n return function (k) {\n return bind(v)(Data_Either.either(function ($187) {\n return pure(Data_Either.Left.create($187));\n })(function (a) {\n var v1 = k(a);\n return v1;\n }));\n };\n },\n Apply0: function () {\n return applyExceptT(dictMonad);\n }\n };\n};\nvar applyExceptT = function (dictMonad) {\n var functorExceptT1 = functorExceptT(((dictMonad.Bind1()).Apply0()).Functor0());\n return {\n apply: Control_Monad.ap(monadExceptT(dictMonad)),\n Functor0: function () {\n return functorExceptT1;\n }\n };\n};\nvar applicativeExceptT = function (dictMonad) {\n return {\n pure: (function () {\n var $188 = Control_Applicative.pure(dictMonad.Applicative0());\n return function ($189) {\n return ExceptT($188(Data_Either.Right.create($189)));\n };\n })(),\n Apply0: function () {\n return applyExceptT(dictMonad);\n }\n };\n};\nvar semigroupExceptT = function (dictMonad) {\n var lift2 = Control_Apply.lift2(applyExceptT(dictMonad));\n return function (dictSemigroup) {\n return {\n append: lift2(Data_Semigroup.append(dictSemigroup))\n };\n };\n};\nvar monadAskExceptT = function (dictMonadAsk) {\n var Monad0 = dictMonadAsk.Monad0();\n var monadExceptT1 = monadExceptT(Monad0);\n return {\n ask: lift(Monad0)(Control_Monad_Reader_Class.ask(dictMonadAsk)),\n Monad0: function () {\n return monadExceptT1;\n }\n };\n};\nvar monadReaderExceptT = function (dictMonadReader) {\n var local = Control_Monad_Reader_Class.local(dictMonadReader);\n var monadAskExceptT1 = monadAskExceptT(dictMonadReader.MonadAsk0());\n return {\n local: function (f) {\n return mapExceptT(local(f));\n },\n MonadAsk0: function () {\n return monadAskExceptT1;\n }\n };\n};\nvar monadContExceptT = function (dictMonadCont) {\n var callCC = Control_Monad_Cont_Class.callCC(dictMonadCont);\n var monadExceptT1 = monadExceptT(dictMonadCont.Monad0());\n return {\n callCC: function (f) {\n return callCC(function (c) {\n var v = f(function (a) {\n return c(new Data_Either.Right(a));\n });\n return v;\n });\n },\n Monad0: function () {\n return monadExceptT1;\n }\n };\n};\nvar monadEffectExceptT = function (dictMonadEffect) {\n var Monad0 = dictMonadEffect.Monad0();\n var monadExceptT1 = monadExceptT(Monad0);\n return {\n liftEffect: (function () {\n var $190 = lift(Monad0);\n var $191 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($192) {\n return $190($191($192));\n };\n })(),\n Monad0: function () {\n return monadExceptT1;\n }\n };\n};\nvar monadRecExceptT = function (dictMonadRec) {\n var tailRecM = Control_Monad_Rec_Class.tailRecM(dictMonadRec);\n var Monad0 = dictMonadRec.Monad0();\n var bind = Control_Bind.bind(Monad0.Bind1());\n var pure = Control_Applicative.pure(Monad0.Applicative0());\n var monadExceptT1 = monadExceptT(Monad0);\n return {\n tailRecM: function (f) {\n var $193 = tailRecM(function (a) {\n var v = f(a);\n return bind(v)(function (m$prime) {\n return pure((function () {\n if (m$prime instanceof Data_Either.Left) {\n return new Control_Monad_Rec_Class.Done(new Data_Either.Left(m$prime.value0));\n };\n if (m$prime instanceof Data_Either.Right && m$prime.value0 instanceof Control_Monad_Rec_Class.Loop) {\n return new Control_Monad_Rec_Class.Loop(m$prime.value0.value0);\n };\n if (m$prime instanceof Data_Either.Right && m$prime.value0 instanceof Control_Monad_Rec_Class.Done) {\n return new Control_Monad_Rec_Class.Done(new Data_Either.Right(m$prime.value0.value0));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Except.Trans (line 74, column 14 - line 77, column 43): \" + [ m$prime.constructor.name ]);\n })());\n });\n });\n return function ($194) {\n return ExceptT($193($194));\n };\n },\n Monad0: function () {\n return monadExceptT1;\n }\n };\n};\nvar monadStateExceptT = function (dictMonadState) {\n var Monad0 = dictMonadState.Monad0();\n var lift1 = lift(Monad0);\n var state = Control_Monad_State_Class.state(dictMonadState);\n var monadExceptT1 = monadExceptT(Monad0);\n return {\n state: function (f) {\n return lift1(state(f));\n },\n Monad0: function () {\n return monadExceptT1;\n }\n };\n};\nvar monadTellExceptT = function (dictMonadTell) {\n var Monad1 = dictMonadTell.Monad1();\n var Semigroup0 = dictMonadTell.Semigroup0();\n var monadExceptT1 = monadExceptT(Monad1);\n return {\n tell: (function () {\n var $195 = lift(Monad1);\n var $196 = Control_Monad_Writer_Class.tell(dictMonadTell);\n return function ($197) {\n return $195($196($197));\n };\n })(),\n Semigroup0: function () {\n return Semigroup0;\n },\n Monad1: function () {\n return monadExceptT1;\n }\n };\n};\nvar monadWriterExceptT = function (dictMonadWriter) {\n var MonadTell1 = dictMonadWriter.MonadTell1();\n var Monad1 = MonadTell1.Monad1();\n var bind = Control_Bind.bind(Monad1.Bind1());\n var listen = Control_Monad_Writer_Class.listen(dictMonadWriter);\n var pure = Control_Applicative.pure(Monad1.Applicative0());\n var pass = Control_Monad_Writer_Class.pass(dictMonadWriter);\n var Monoid0 = dictMonadWriter.Monoid0();\n var monadTellExceptT1 = monadTellExceptT(MonadTell1);\n return {\n listen: mapExceptT(function (m) {\n return bind(listen(m))(function (v) {\n return pure(map(function (r) {\n return new Data_Tuple.Tuple(r, v.value1);\n })(v.value0));\n });\n }),\n pass: mapExceptT(function (m) {\n return pass(bind(m)(function (a) {\n return pure((function () {\n if (a instanceof Data_Either.Left) {\n return new Data_Tuple.Tuple(new Data_Either.Left(a.value0), identity);\n };\n if (a instanceof Data_Either.Right) {\n return new Data_Tuple.Tuple(new Data_Either.Right(a.value0.value0), a.value0.value1);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Except.Trans (line 134, column 10 - line 136, column 45): \" + [ a.constructor.name ]);\n })());\n }));\n }),\n Monoid0: function () {\n return Monoid0;\n },\n MonadTell1: function () {\n return monadTellExceptT1;\n }\n };\n};\nvar monadThrowExceptT = function (dictMonad) {\n var monadExceptT1 = monadExceptT(dictMonad);\n return {\n throwError: (function () {\n var $198 = Control_Applicative.pure(dictMonad.Applicative0());\n return function ($199) {\n return ExceptT($198(Data_Either.Left.create($199)));\n };\n })(),\n Monad0: function () {\n return monadExceptT1;\n }\n };\n};\nvar monadErrorExceptT = function (dictMonad) {\n var bind = Control_Bind.bind(dictMonad.Bind1());\n var pure = Control_Applicative.pure(dictMonad.Applicative0());\n var monadThrowExceptT1 = monadThrowExceptT(dictMonad);\n return {\n catchError: function (v) {\n return function (k) {\n return bind(v)(Data_Either.either(function (a) {\n var v1 = k(a);\n return v1;\n })(function ($200) {\n return pure(Data_Either.Right.create($200));\n }));\n };\n },\n MonadThrow0: function () {\n return monadThrowExceptT1;\n }\n };\n};\nvar monoidExceptT = function (dictMonad) {\n var pure = Control_Applicative.pure(applicativeExceptT(dictMonad));\n var semigroupExceptT1 = semigroupExceptT(dictMonad);\n return function (dictMonoid) {\n var semigroupExceptT2 = semigroupExceptT1(dictMonoid.Semigroup0());\n return {\n mempty: pure(Data_Monoid.mempty(dictMonoid)),\n Semigroup0: function () {\n return semigroupExceptT2;\n }\n };\n };\n};\nvar altExceptT = function (dictSemigroup) {\n var append = Data_Semigroup.append(dictSemigroup);\n return function (dictMonad) {\n var Bind1 = dictMonad.Bind1();\n var bind = Control_Bind.bind(Bind1);\n var pure = Control_Applicative.pure(dictMonad.Applicative0());\n var functorExceptT1 = functorExceptT((Bind1.Apply0()).Functor0());\n return {\n alt: function (v) {\n return function (v1) {\n return bind(v)(function (rm) {\n if (rm instanceof Data_Either.Right) {\n return pure(new Data_Either.Right(rm.value0));\n };\n if (rm instanceof Data_Either.Left) {\n return bind(v1)(function (rn) {\n if (rn instanceof Data_Either.Right) {\n return pure(new Data_Either.Right(rn.value0));\n };\n if (rn instanceof Data_Either.Left) {\n return pure(new Data_Either.Left(append(rm.value0)(rn.value0)));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Except.Trans (line 86, column 9 - line 88, column 49): \" + [ rn.constructor.name ]);\n });\n };\n throw new Error(\"Failed pattern match at Control.Monad.Except.Trans (line 82, column 5 - line 88, column 49): \" + [ rm.constructor.name ]);\n });\n };\n },\n Functor0: function () {\n return functorExceptT1;\n }\n };\n };\n};\nvar plusExceptT = function (dictMonoid) {\n var mempty = Data_Monoid.mempty(dictMonoid);\n var altExceptT1 = altExceptT(dictMonoid.Semigroup0());\n return function (dictMonad) {\n var altExceptT2 = altExceptT1(dictMonad);\n return {\n empty: Control_Monad_Error_Class.throwError(monadThrowExceptT(dictMonad))(mempty),\n Alt0: function () {\n return altExceptT2;\n }\n };\n };\n};\nvar alternativeExceptT = function (dictMonoid) {\n var plusExceptT1 = plusExceptT(dictMonoid);\n return function (dictMonad) {\n var applicativeExceptT1 = applicativeExceptT(dictMonad);\n var plusExceptT2 = plusExceptT1(dictMonad);\n return {\n Applicative0: function () {\n return applicativeExceptT1;\n },\n Plus1: function () {\n return plusExceptT2;\n }\n };\n };\n};\nvar monadPlusExceptT = function (dictMonoid) {\n var alternativeExceptT1 = alternativeExceptT(dictMonoid);\n return function (dictMonad) {\n var monadExceptT1 = monadExceptT(dictMonad);\n var alternativeExceptT2 = alternativeExceptT1(dictMonad);\n return {\n Monad0: function () {\n return monadExceptT1;\n },\n Alternative1: function () {\n return alternativeExceptT2;\n }\n };\n };\n};\nexport {\n ExceptT,\n runExceptT,\n withExceptT,\n mapExceptT,\n except,\n newtypeExceptT,\n functorExceptT,\n applyExceptT,\n applicativeExceptT,\n bindExceptT,\n monadExceptT,\n monadRecExceptT,\n altExceptT,\n plusExceptT,\n alternativeExceptT,\n monadPlusExceptT,\n monadTransExceptT,\n monadEffectExceptT,\n monadContExceptT,\n monadThrowExceptT,\n monadErrorExceptT,\n monadAskExceptT,\n monadReaderExceptT,\n monadStateExceptT,\n monadTellExceptT,\n monadWriterExceptT,\n semigroupExceptT,\n monoidExceptT\n};\nexport {\n catchError,\n throwError\n} from \"../Control.Monad.Error.Class/index.js\";\nexport {\n lift\n} from \"../Control.Monad.Trans.Class/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Control_Monad_Error_Class from \"../Control.Monad.Error.Class/index.js\";\nimport * as Control_Monad_Except_Trans from \"../Control.Monad.Except.Trans/index.js\";\nimport * as Data_Identity from \"../Data.Identity/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nvar unwrap = /* #__PURE__ */ Data_Newtype.unwrap();\nvar withExcept = /* #__PURE__ */ Control_Monad_Except_Trans.withExceptT(Data_Identity.functorIdentity);\nvar runExcept = function ($3) {\n return unwrap(Control_Monad_Except_Trans.runExceptT($3));\n};\nvar mapExcept = function (f) {\n return Control_Monad_Except_Trans.mapExceptT(function ($4) {\n return Data_Identity.Identity(f(unwrap($4)));\n });\n};\nexport {\n runExcept,\n mapExcept,\n withExcept\n};\nexport {\n catchError,\n catchJust,\n throwError\n} from \"../Control.Monad.Error.Class/index.js\";\nexport {\n ExceptT,\n except,\n lift,\n mapExceptT,\n runExceptT,\n withExceptT\n} from \"../Control.Monad.Except.Trans/index.js\";\n", "/* eslint-disable no-eq-null, eqeqeq */\nfunction id(x) {\n return x;\n}\n\nexport {id as fromBoolean};\nexport {id as fromNumber};\nexport {id as fromString};\nexport {id as fromArray};\nexport {id as fromObject};\nexport const jsonNull = null;\n\nexport function stringify(j) {\n return JSON.stringify(j);\n}\n\nexport function stringifyWithIndent(i) {\n return function (j) {\n return JSON.stringify(j, null, i);\n };\n}\n\nfunction isArray(a) {\n return Object.prototype.toString.call(a) === \"[object Array]\";\n}\n\nexport function _caseJson(isNull, isBool, isNum, isStr, isArr, isObj, j) {\n if (j == null) return isNull();\n else if (typeof j === \"boolean\") return isBool(j);\n else if (typeof j === \"number\") return isNum(j);\n else if (typeof j === \"string\") return isStr(j);\n else if (Object.prototype.toString.call(j) === \"[object Array]\")\n return isArr(j);\n else return isObj(j);\n}\n\nexport function _compare(EQ, GT, LT, a, b) {\n if (a == null) {\n if (b == null) return EQ;\n else return LT;\n } else if (typeof a === \"boolean\") {\n if (typeof b === \"boolean\") {\n // boolean / boolean\n if (a === b) return EQ;\n else if (a === false) return LT;\n else return GT;\n } else if (b == null) return GT;\n else return LT;\n } else if (typeof a === \"number\") {\n if (typeof b === \"number\") {\n if (a === b) return EQ;\n else if (a < b) return LT;\n else return GT;\n } else if (b == null) return GT;\n else if (typeof b === \"boolean\") return GT;\n else return LT;\n } else if (typeof a === \"string\") {\n if (typeof b === \"string\") {\n if (a === b) return EQ;\n else if (a < b) return LT;\n else return GT;\n } else if (b == null) return GT;\n else if (typeof b === \"boolean\") return GT;\n else if (typeof b === \"number\") return GT;\n else return LT;\n } else if (isArray(a)) {\n if (isArray(b)) {\n for (var i = 0; i < Math.min(a.length, b.length); i++) {\n var ca = _compare(EQ, GT, LT, a[i], b[i]);\n if (ca !== EQ) return ca;\n }\n if (a.length === b.length) return EQ;\n else if (a.length < b.length) return LT;\n else return GT;\n } else if (b == null) return GT;\n else if (typeof b === \"boolean\") return GT;\n else if (typeof b === \"number\") return GT;\n else if (typeof b === \"string\") return GT;\n else return LT;\n } else {\n if (b == null) return GT;\n else if (typeof b === \"boolean\") return GT;\n else if (typeof b === \"number\") return GT;\n else if (typeof b === \"string\") return GT;\n else if (isArray(b)) return GT;\n else {\n var akeys = Object.keys(a);\n var bkeys = Object.keys(b);\n if (akeys.length < bkeys.length) return LT;\n else if (akeys.length > bkeys.length) return GT;\n var keys = akeys.concat(bkeys).sort();\n for (var j = 0; j < keys.length; j++) {\n var k = keys[j];\n if (a[k] === undefined) return LT;\n else if (b[k] === undefined) return GT;\n var ck = _compare(EQ, GT, LT, a[k], b[k]);\n if (ck !== EQ) return ck;\n }\n return EQ;\n }\n }\n}\n", "export function _copyST(m) {\n return function () {\n var r = {};\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n r[k] = m[k];\n }\n }\n return r;\n };\n}\n\nexport const empty = {};\n\nexport function runST(f) {\n return f();\n}\n\nexport function _fmapObject(m0, f) {\n var m = {};\n for (var k in m0) {\n if (hasOwnProperty.call(m0, k)) {\n m[k] = f(m0[k]);\n }\n }\n return m;\n}\n\nexport function _mapWithKey(m0, f) {\n var m = {};\n for (var k in m0) {\n if (hasOwnProperty.call(m0, k)) {\n m[k] = f(k)(m0[k]);\n }\n }\n return m;\n}\n\nexport function _foldM(bind) {\n return function (f) {\n return function (mz) {\n return function (m) {\n var acc = mz;\n function g(k) {\n return function (z) {\n return f(z)(k)(m[k]);\n };\n }\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n acc = bind(acc)(g(k));\n }\n }\n return acc;\n };\n };\n };\n}\n\nexport function _foldSCObject(m, z, f, fromMaybe) {\n var acc = z;\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n var maybeR = f(acc)(k)(m[k]);\n var r = fromMaybe(null)(maybeR);\n if (r === null) return acc;\n else acc = r;\n }\n }\n return acc;\n}\n\nexport function all(f) {\n return function (m) {\n for (var k in m) {\n if (hasOwnProperty.call(m, k) && !f(k)(m[k])) return false;\n }\n return true;\n };\n}\n\nexport function size(m) {\n var s = 0;\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n ++s;\n }\n }\n return s;\n}\n\nexport function _lookup(no, yes, k, m) {\n return k in m ? yes(m[k]) : no;\n}\n\nexport function _lookupST(no, yes, k, m) {\n return function () {\n return k in m ? yes(m[k]) : no;\n };\n}\n\nexport function toArrayWithKey(f) {\n return function (m) {\n var r = [];\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n r.push(f(k)(m[k]));\n }\n }\n return r;\n };\n}\n\nexport const keys = Object.keys || toArrayWithKey(function (k) {\n return function () { return k; };\n});\n", "//------------------------------------------------------------------------------\n// Array creation --------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const rangeImpl = function (start, end) {\n var step = start > end ? -1 : 1;\n var result = new Array(step * (end - start) + 1);\n var i = start, n = 0;\n while (i !== end) {\n result[n++] = i;\n i += step;\n }\n result[n] = i;\n return result;\n};\n\nvar replicateFill = function (count, value) {\n if (count < 1) {\n return [];\n }\n var result = new Array(count);\n return result.fill(value);\n};\n\nvar replicatePolyfill = function (count, value) {\n var result = [];\n var n = 0;\n for (var i = 0; i < count; i++) {\n result[n++] = value;\n }\n return result;\n};\n\n// In browsers that have Array.prototype.fill we use it, as it's faster.\nexport const replicateImpl = typeof Array.prototype.fill === \"function\" ? replicateFill : replicatePolyfill;\n\nexport const fromFoldableImpl = (function () {\n function Cons(head, tail) {\n this.head = head;\n this.tail = tail;\n }\n var emptyList = {};\n\n function curryCons(head) {\n return function (tail) {\n return new Cons(head, tail);\n };\n }\n\n function listToArray(list) {\n var result = [];\n var count = 0;\n var xs = list;\n while (xs !== emptyList) {\n result[count++] = xs.head;\n xs = xs.tail;\n }\n return result;\n }\n\n return function (foldr, xs) {\n return listToArray(foldr(curryCons)(emptyList)(xs));\n };\n})();\n\n//------------------------------------------------------------------------------\n// Array size ------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const length = function (xs) {\n return xs.length;\n};\n\n//------------------------------------------------------------------------------\n// Non-indexed reads -----------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const unconsImpl = function (empty, next, xs) {\n return xs.length === 0 ? empty({}) : next(xs[0])(xs.slice(1));\n};\n\n//------------------------------------------------------------------------------\n// Indexed operations ----------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const indexImpl = function (just, nothing, xs, i) {\n return i < 0 || i >= xs.length ? nothing : just(xs[i]);\n};\n\nexport const findMapImpl = function (nothing, isJust, f, xs) {\n for (var i = 0; i < xs.length; i++) {\n var result = f(xs[i]);\n if (isJust(result)) return result;\n }\n return nothing;\n};\n\nexport const findIndexImpl = function (just, nothing, f, xs) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (f(xs[i])) return just(i);\n }\n return nothing;\n};\n\nexport const findLastIndexImpl = function (just, nothing, f, xs) {\n for (var i = xs.length - 1; i >= 0; i--) {\n if (f(xs[i])) return just(i);\n }\n return nothing;\n};\n\nexport const _insertAt = function (just, nothing, i, a, l) {\n if (i < 0 || i > l.length) return nothing;\n var l1 = l.slice();\n l1.splice(i, 0, a);\n return just(l1);\n};\n\nexport const _deleteAt = function (just, nothing, i, l) {\n if (i < 0 || i >= l.length) return nothing;\n var l1 = l.slice();\n l1.splice(i, 1);\n return just(l1);\n};\n\nexport const _updateAt = function (just, nothing, i, a, l) {\n if (i < 0 || i >= l.length) return nothing;\n var l1 = l.slice();\n l1[i] = a;\n return just(l1);\n};\n\n//------------------------------------------------------------------------------\n// Transformations -------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const reverse = function (l) {\n return l.slice().reverse();\n};\n\nexport const concat = function (xss) {\n if (xss.length <= 10000) {\n // This method is faster, but it crashes on big arrays.\n // So we use it when can and fallback to simple variant otherwise.\n return Array.prototype.concat.apply([], xss);\n }\n\n var result = [];\n for (var i = 0, l = xss.length; i < l; i++) {\n var xs = xss[i];\n for (var j = 0, m = xs.length; j < m; j++) {\n result.push(xs[j]);\n }\n }\n return result;\n};\n\nexport const filterImpl = function (f, xs) {\n return xs.filter(f);\n};\n\nexport const partitionImpl = function (f, xs) {\n var yes = [];\n var no = [];\n for (var i = 0; i < xs.length; i++) {\n var x = xs[i];\n if (f(x))\n yes.push(x);\n else\n no.push(x);\n }\n return { yes: yes, no: no };\n};\n\nexport const scanlImpl = function (f, b, xs) {\n var len = xs.length;\n var acc = b;\n var out = new Array(len);\n for (var i = 0; i < len; i++) {\n acc = f(acc)(xs[i]);\n out[i] = acc;\n }\n return out;\n};\n\nexport const scanrImpl = function (f, b, xs) {\n var len = xs.length;\n var acc = b;\n var out = new Array(len);\n for (var i = len - 1; i >= 0; i--) {\n acc = f(xs[i])(acc);\n out[i] = acc;\n }\n return out;\n};\n\n//------------------------------------------------------------------------------\n// Sorting ---------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const sortByImpl = (function () {\n function mergeFromTo(compare, fromOrdering, xs1, xs2, from, to) {\n var mid;\n var i;\n var j;\n var k;\n var x;\n var y;\n var c;\n\n mid = from + ((to - from) >> 1);\n if (mid - from > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, from, mid);\n if (to - mid > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, mid, to);\n\n i = from;\n j = mid;\n k = from;\n while (i < mid && j < to) {\n x = xs2[i];\n y = xs2[j];\n c = fromOrdering(compare(x)(y));\n if (c > 0) {\n xs1[k++] = y;\n ++j;\n }\n else {\n xs1[k++] = x;\n ++i;\n }\n }\n while (i < mid) {\n xs1[k++] = xs2[i++];\n }\n while (j < to) {\n xs1[k++] = xs2[j++];\n }\n }\n\n return function (compare, fromOrdering, xs) {\n var out;\n\n if (xs.length < 2) return xs;\n\n out = xs.slice(0);\n mergeFromTo(compare, fromOrdering, out, xs.slice(0), 0, xs.length);\n\n return out;\n };\n})();\n\n//------------------------------------------------------------------------------\n// Subarrays -------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const sliceImpl = function (s, e, l) {\n return l.slice(s, e);\n};\n\n//------------------------------------------------------------------------------\n// Zipping ---------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const zipWithImpl = function (f, xs, ys) {\n var l = xs.length < ys.length ? xs.length : ys.length;\n var result = new Array(l);\n for (var i = 0; i < l; i++) {\n result[i] = f(xs[i])(ys[i]);\n }\n return result;\n};\n\n//------------------------------------------------------------------------------\n// Folding ---------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const anyImpl = function (p, xs) {\n var len = xs.length;\n for (var i = 0; i < len; i++) {\n if (p(xs[i])) return true;\n }\n return false;\n};\n\nexport const allImpl = function (p, xs) {\n var len = xs.length;\n for (var i = 0; i < len; i++) {\n if (!p(xs[i])) return false;\n }\n return true;\n};\n\n//------------------------------------------------------------------------------\n// Partial ---------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const unsafeIndexImpl = function (xs, n) {\n return xs[n];\n};\n", "function newSTArray() {\n return [];\n}\nexport { newSTArray as new };\n\nexport const peekImpl = function (just, nothing, i, xs) {\n return i >= 0 && i < xs.length ? just(xs[i]) : nothing;\n};\n\nexport const pokeImpl = function (i, a, xs) {\n var ret = i >= 0 && i < xs.length;\n if (ret) xs[i] = a;\n return ret;\n};\n\nexport const lengthImpl = function (xs) {\n return xs.length;\n};\n\nexport const popImpl = function (just, nothing, xs) {\n return xs.length > 0 ? just(xs.pop()) : nothing;\n};\n\nexport const pushAllImpl = function (as, xs) {\n return xs.push.apply(xs, as);\n};\n\nexport const shiftImpl = function (just, nothing, xs) {\n return xs.length > 0 ? just(xs.shift()) : nothing;\n};\n\nexport const unshiftAllImpl = function (as, xs) {\n return xs.unshift.apply(xs, as);\n};\n\nexport const spliceImpl = function (i, howMany, bs, xs) {\n return xs.splice.apply(xs, [i, howMany].concat(bs));\n};\n\nfunction unsafeFreezeThawImpl(xs) {\n return xs;\n}\n\nexport const unsafeFreezeImpl = unsafeFreezeThawImpl;\n\nexport const unsafeThawImpl = unsafeFreezeThawImpl;\n\nfunction copyImpl(xs) {\n return xs.slice();\n}\n\nexport const freezeImpl = copyImpl;\n\nexport const thawImpl = copyImpl;\n\nexport const cloneImpl = copyImpl;\n\nexport const sortByImpl = (function () {\n function mergeFromTo(compare, fromOrdering, xs1, xs2, from, to) {\n var mid;\n var i;\n var j;\n var k;\n var x;\n var y;\n var c;\n\n mid = from + ((to - from) >> 1);\n if (mid - from > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, from, mid);\n if (to - mid > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, mid, to);\n\n i = from;\n j = mid;\n k = from;\n while (i < mid && j < to) {\n x = xs2[i];\n y = xs2[j];\n c = fromOrdering(compare(x)(y));\n if (c > 0) {\n xs1[k++] = y;\n ++j;\n } else {\n xs1[k++] = x;\n ++i;\n }\n }\n while (i < mid) {\n xs1[k++] = xs2[i++];\n }\n while (j < to) {\n xs1[k++] = xs2[j++];\n }\n }\n\n return function (compare, fromOrdering, xs) {\n if (xs.length < 2) return xs;\n\n mergeFromTo(compare, fromOrdering, xs, xs.slice(0), 0, xs.length);\n\n return xs;\n };\n})();\n\nexport const toAssocArrayImpl = function (xs) {\n var n = xs.length;\n var as = new Array(n);\n for (var i = 0; i < n; i++) as[i] = { value: xs[i], index: i };\n return as;\n};\n\nexport const pushImpl = function (a, xs) {\n return xs.push(a);\n};\n", "export const mkSTFn1 = function mkSTFn1(fn) {\n return function(x) {\n return fn(x)();\n };\n};\n \nexport const mkSTFn2 = function mkSTFn2(fn) {\n return function(a, b) {\n return fn(a)(b)();\n };\n};\n \nexport const mkSTFn3 = function mkSTFn3(fn) {\n return function(a, b, c) {\n return fn(a)(b)(c)();\n };\n};\n \nexport const mkSTFn4 = function mkSTFn4(fn) {\n return function(a, b, c, d) {\n return fn(a)(b)(c)(d)();\n };\n};\n \nexport const mkSTFn5 = function mkSTFn5(fn) {\n return function(a, b, c, d, e) {\n return fn(a)(b)(c)(d)(e)();\n };\n};\n \nexport const mkSTFn6 = function mkSTFn6(fn) {\n return function(a, b, c, d, e, f) {\n return fn(a)(b)(c)(d)(e)(f)();\n };\n};\n \nexport const mkSTFn7 = function mkSTFn7(fn) {\n return function(a, b, c, d, e, f, g) {\n return fn(a)(b)(c)(d)(e)(f)(g)();\n };\n};\n \nexport const mkSTFn8 = function mkSTFn8(fn) {\n return function(a, b, c, d, e, f, g, h) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)();\n };\n};\n \nexport const mkSTFn9 = function mkSTFn9(fn) {\n return function(a, b, c, d, e, f, g, h, i) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)();\n };\n};\n \nexport const mkSTFn10 = function mkSTFn10(fn) {\n return function(a, b, c, d, e, f, g, h, i, j) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)();\n };\n};\n \nexport const runSTFn1 = function runSTFn1(fn) {\n return function(a) {\n return function() {\n return fn(a);\n };\n };\n};\n \nexport const runSTFn2 = function runSTFn2(fn) {\n return function(a) {\n return function(b) {\n return function() {\n return fn(a, b);\n };\n };\n };\n};\n \nexport const runSTFn3 = function runSTFn3(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function() {\n return fn(a, b, c);\n };\n };\n };\n };\n};\n \nexport const runSTFn4 = function runSTFn4(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function() {\n return fn(a, b, c, d);\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn5 = function runSTFn5(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function() {\n return fn(a, b, c, d, e);\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn6 = function runSTFn6(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function() {\n return fn(a, b, c, d, e, f);\n };\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn7 = function runSTFn7(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function(g) {\n return function() {\n return fn(a, b, c, d, e, f, g);\n };\n };\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn8 = function runSTFn8(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function(g) {\n return function(h) {\n return function() {\n return fn(a, b, c, d, e, f, g, h);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn9 = function runSTFn9(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function(g) {\n return function(h) {\n return function(i) {\n return function() {\n return fn(a, b, c, d, e, f, g, h, i);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn10 = function runSTFn10(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function(g) {\n return function(h) {\n return function(i) {\n return function(j) {\n return function() {\n return fn(a, b, c, d, e, f, g, h, i, j);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_ST_Internal from \"../Control.Monad.ST.Internal/index.js\";\nimport * as Control_Monad_ST_Uncurried from \"../Control.Monad.ST.Uncurried/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nvar bind = /* #__PURE__ */ Control_Bind.bind(Control_Monad_ST_Internal.bindST);\nvar unshiftAll = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn2($foreign.unshiftAllImpl);\nvar unshift = function (a) {\n return Control_Monad_ST_Uncurried.runSTFn2($foreign.unshiftAllImpl)([ a ]);\n};\nvar unsafeThaw = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn1($foreign.unsafeThawImpl);\nvar unsafeFreeze = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn1($foreign.unsafeFreezeImpl);\nvar toAssocArray = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn1($foreign.toAssocArrayImpl);\nvar thaw = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn1($foreign.thawImpl);\nvar withArray = function (f) {\n return function (xs) {\n return function __do() {\n var result = thaw(xs)();\n f(result)();\n return unsafeFreeze(result)();\n };\n };\n};\nvar splice = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn4($foreign.spliceImpl);\nvar sortBy = function (comp) {\n return Control_Monad_ST_Uncurried.runSTFn3($foreign.sortByImpl)(comp)(function (v) {\n if (v instanceof Data_Ordering.GT) {\n return 1;\n };\n if (v instanceof Data_Ordering.EQ) {\n return 0;\n };\n if (v instanceof Data_Ordering.LT) {\n return -1 | 0;\n };\n throw new Error(\"Failed pattern match at Data.Array.ST (line 129, column 40 - line 132, column 11): \" + [ v.constructor.name ]);\n });\n};\nvar sortWith = function (dictOrd) {\n var comparing = Data_Ord.comparing(dictOrd);\n return function (f) {\n return sortBy(comparing(f));\n };\n};\nvar sort = function (dictOrd) {\n return sortBy(Data_Ord.compare(dictOrd));\n};\nvar shift = /* #__PURE__ */ (function () {\n return Control_Monad_ST_Uncurried.runSTFn3($foreign.shiftImpl)(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar run = function (st) {\n return bind(st)(unsafeFreeze)();\n};\nvar pushAll = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn2($foreign.pushAllImpl);\nvar push = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn2($foreign.pushImpl);\nvar pop = /* #__PURE__ */ (function () {\n return Control_Monad_ST_Uncurried.runSTFn3($foreign.popImpl)(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar poke = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn3($foreign.pokeImpl);\nvar peek = /* #__PURE__ */ (function () {\n return Control_Monad_ST_Uncurried.runSTFn4($foreign.peekImpl)(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar modify = function (i) {\n return function (f) {\n return function (xs) {\n return function __do() {\n var entry = peek(i)(xs)();\n if (entry instanceof Data_Maybe.Just) {\n return poke(i)(f(entry.value0))(xs)();\n };\n if (entry instanceof Data_Maybe.Nothing) {\n return false;\n };\n throw new Error(\"Failed pattern match at Data.Array.ST (line 234, column 3 - line 236, column 26): \" + [ entry.constructor.name ]);\n };\n };\n };\n};\nvar length = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn1($foreign.lengthImpl);\nvar freeze = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn1($foreign.freezeImpl);\nvar clone = /* #__PURE__ */ Control_Monad_ST_Uncurried.runSTFn1($foreign.cloneImpl);\nexport {\n new\n} from \"./foreign.js\";\nexport {\n run,\n withArray,\n peek,\n poke,\n modify,\n length,\n pop,\n push,\n pushAll,\n shift,\n unshift,\n unshiftAll,\n splice,\n sort,\n sortBy,\n sortWith,\n freeze,\n thaw,\n clone,\n unsafeFreeze,\n unsafeThaw,\n toAssocArray\n};\n", "export const foldrArray = function (f) {\n return function (init) {\n return function (xs) {\n var acc = init;\n var len = xs.length;\n for (var i = len - 1; i >= 0; i--) {\n acc = f(xs[i])(acc);\n }\n return acc;\n };\n };\n};\n\nexport const foldlArray = function (f) {\n return function (init) {\n return function (xs) {\n var acc = init;\n var len = xs.length;\n for (var i = 0; i < len; i++) {\n acc = f(acc)(xs[i]);\n }\n return acc;\n };\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nvar plusArray = {\n empty: [ ],\n Alt0: function () {\n return Control_Alt.altArray;\n }\n};\nvar empty = function (dict) {\n return dict.empty;\n};\nexport {\n empty,\n plusArray\n};\nexport {\n alt\n} from \"../Control.Alt/index.js\";\nexport {\n map,\n void\n} from \"../Data.Functor/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar bimap = function (dict) {\n return dict.bimap;\n};\nvar lmap = function (dictBifunctor) {\n var bimap1 = bimap(dictBifunctor);\n return function (f) {\n return bimap1(f)(identity);\n };\n};\nvar rmap = function (dictBifunctor) {\n return bimap(dictBifunctor)(identity);\n};\nvar bifunctorTuple = {\n bimap: function (f) {\n return function (g) {\n return function (v) {\n return new Data_Tuple.Tuple(f(v.value0), g(v.value1));\n };\n };\n }\n};\nvar bifunctorEither = {\n bimap: function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Data_Either.Left) {\n return new Data_Either.Left(v(v2.value0));\n };\n if (v2 instanceof Data_Either.Right) {\n return new Data_Either.Right(v1(v2.value0));\n };\n throw new Error(\"Failed pattern match at Data.Bifunctor (line 32, column 1 - line 34, column 36): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n }\n};\nvar bifunctorConst = {\n bimap: function (f) {\n return function (v) {\n return function (v1) {\n return f(v1);\n };\n };\n }\n};\nexport {\n bimap,\n lmap,\n rmap,\n bifunctorEither,\n bifunctorTuple,\n bifunctorConst\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_HeytingAlgebra from \"../Data.HeytingAlgebra/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nvar Disj = function (x) {\n return x;\n};\nvar showDisj = function (dictShow) {\n var show = Data_Show.show(dictShow);\n return {\n show: function (v) {\n return \"(Disj \" + (show(v) + \")\");\n }\n };\n};\nvar semiringDisj = function (dictHeytingAlgebra) {\n var disj = Data_HeytingAlgebra.disj(dictHeytingAlgebra);\n var conj = Data_HeytingAlgebra.conj(dictHeytingAlgebra);\n return {\n zero: Data_HeytingAlgebra.ff(dictHeytingAlgebra),\n one: Data_HeytingAlgebra.tt(dictHeytingAlgebra),\n add: function (v) {\n return function (v1) {\n return disj(v)(v1);\n };\n },\n mul: function (v) {\n return function (v1) {\n return conj(v)(v1);\n };\n }\n };\n};\nvar semigroupDisj = function (dictHeytingAlgebra) {\n var disj = Data_HeytingAlgebra.disj(dictHeytingAlgebra);\n return {\n append: function (v) {\n return function (v1) {\n return disj(v)(v1);\n };\n }\n };\n};\nvar ordDisj = function (dictOrd) {\n return dictOrd;\n};\nvar monoidDisj = function (dictHeytingAlgebra) {\n var semigroupDisj1 = semigroupDisj(dictHeytingAlgebra);\n return {\n mempty: Data_HeytingAlgebra.ff(dictHeytingAlgebra),\n Semigroup0: function () {\n return semigroupDisj1;\n }\n };\n};\nvar functorDisj = {\n map: function (f) {\n return function (m) {\n return f(m);\n };\n }\n};\nvar eqDisj = function (dictEq) {\n return dictEq;\n};\nvar eq1Disj = {\n eq1: function (dictEq) {\n return Data_Eq.eq(eqDisj(dictEq));\n }\n};\nvar ord1Disj = {\n compare1: function (dictOrd) {\n return Data_Ord.compare(ordDisj(dictOrd));\n },\n Eq10: function () {\n return eq1Disj;\n }\n};\nvar boundedDisj = function (dictBounded) {\n return dictBounded;\n};\nvar applyDisj = {\n apply: function (v) {\n return function (v1) {\n return v(v1);\n };\n },\n Functor0: function () {\n return functorDisj;\n }\n};\nvar bindDisj = {\n bind: function (v) {\n return function (f) {\n return f(v);\n };\n },\n Apply0: function () {\n return applyDisj;\n }\n};\nvar applicativeDisj = {\n pure: Disj,\n Apply0: function () {\n return applyDisj;\n }\n};\nvar monadDisj = {\n Applicative0: function () {\n return applicativeDisj;\n },\n Bind1: function () {\n return bindDisj;\n }\n};\nexport {\n Disj,\n eqDisj,\n eq1Disj,\n ordDisj,\n ord1Disj,\n boundedDisj,\n showDisj,\n functorDisj,\n applyDisj,\n applicativeDisj,\n bindDisj,\n monadDisj,\n semigroupDisj,\n monoidDisj,\n semiringDisj\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Plus from \"../Control.Plus/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor_Coproduct from \"../Data.Functor.Coproduct/index.js\";\nimport * as Data_HeytingAlgebra from \"../Data.HeytingAlgebra/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Maybe_First from \"../Data.Maybe.First/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Monoid_Conj from \"../Data.Monoid.Conj/index.js\";\nimport * as Data_Monoid_Disj from \"../Data.Monoid.Disj/index.js\";\nimport * as Data_Monoid_Dual from \"../Data.Monoid.Dual/index.js\";\nimport * as Data_Monoid_Endo from \"../Data.Monoid.Endo/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar eq1 = /* #__PURE__ */ Data_Eq.eq(Data_Ordering.eqOrdering);\nvar unwrap = /* #__PURE__ */ Data_Newtype.unwrap();\nvar monoidEndo = /* #__PURE__ */ Data_Monoid_Endo.monoidEndo(Control_Category.categoryFn);\nvar monoidDual = /* #__PURE__ */ Data_Monoid_Dual.monoidDual(monoidEndo);\nvar alaF = /* #__PURE__ */ Data_Newtype.alaF()()()();\nvar foldr = function (dict) {\n return dict.foldr;\n};\nvar indexr = function (dictFoldable) {\n var foldr2 = foldr(dictFoldable);\n return function (idx) {\n var go = function (a) {\n return function (cursor) {\n if (cursor.elem instanceof Data_Maybe.Just) {\n return cursor;\n };\n var $292 = cursor.pos === idx;\n if ($292) {\n return {\n elem: new Data_Maybe.Just(a),\n pos: cursor.pos\n };\n };\n return {\n pos: cursor.pos + 1 | 0,\n elem: cursor.elem\n };\n };\n };\n var $451 = foldr2(go)({\n elem: Data_Maybe.Nothing.value,\n pos: 0\n });\n return function ($452) {\n return (function (v) {\n return v.elem;\n })($451($452));\n };\n };\n};\nvar $$null = function (dictFoldable) {\n return foldr(dictFoldable)(function (v) {\n return function (v1) {\n return false;\n };\n })(true);\n};\nvar oneOf = function (dictFoldable) {\n var foldr2 = foldr(dictFoldable);\n return function (dictPlus) {\n return foldr2(Control_Alt.alt(dictPlus.Alt0()))(Control_Plus.empty(dictPlus));\n };\n};\nvar oneOfMap = function (dictFoldable) {\n var foldr2 = foldr(dictFoldable);\n return function (dictPlus) {\n var alt = Control_Alt.alt(dictPlus.Alt0());\n var empty = Control_Plus.empty(dictPlus);\n return function (f) {\n return foldr2(function ($453) {\n return alt(f($453));\n })(empty);\n };\n };\n};\nvar traverse_ = function (dictApplicative) {\n var applySecond = Control_Apply.applySecond(dictApplicative.Apply0());\n var pure = Control_Applicative.pure(dictApplicative);\n return function (dictFoldable) {\n var foldr2 = foldr(dictFoldable);\n return function (f) {\n return foldr2(function ($454) {\n return applySecond(f($454));\n })(pure(Data_Unit.unit));\n };\n };\n};\nvar for_ = function (dictApplicative) {\n var traverse_1 = traverse_(dictApplicative);\n return function (dictFoldable) {\n return Data_Function.flip(traverse_1(dictFoldable));\n };\n};\nvar sequence_ = function (dictApplicative) {\n var traverse_1 = traverse_(dictApplicative);\n return function (dictFoldable) {\n return traverse_1(dictFoldable)(identity);\n };\n};\nvar foldl = function (dict) {\n return dict.foldl;\n};\nvar indexl = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (idx) {\n var go = function (cursor) {\n return function (a) {\n if (cursor.elem instanceof Data_Maybe.Just) {\n return cursor;\n };\n var $296 = cursor.pos === idx;\n if ($296) {\n return {\n elem: new Data_Maybe.Just(a),\n pos: cursor.pos\n };\n };\n return {\n pos: cursor.pos + 1 | 0,\n elem: cursor.elem\n };\n };\n };\n var $455 = foldl2(go)({\n elem: Data_Maybe.Nothing.value,\n pos: 0\n });\n return function ($456) {\n return (function (v) {\n return v.elem;\n })($455($456));\n };\n };\n};\nvar intercalate = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (dictMonoid) {\n var append = Data_Semigroup.append(dictMonoid.Semigroup0());\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (sep) {\n return function (xs) {\n var go = function (v) {\n return function (v1) {\n if (v.init) {\n return {\n init: false,\n acc: v1\n };\n };\n return {\n init: false,\n acc: append(v.acc)(append(sep)(v1))\n };\n };\n };\n return (foldl2(go)({\n init: true,\n acc: mempty\n })(xs)).acc;\n };\n };\n };\n};\nvar length = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (dictSemiring) {\n var add1 = Data_Semiring.add(dictSemiring);\n var one = Data_Semiring.one(dictSemiring);\n return foldl2(function (c) {\n return function (v) {\n return add1(one)(c);\n };\n })(Data_Semiring.zero(dictSemiring));\n };\n};\nvar maximumBy = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (cmp) {\n var max$prime = function (v) {\n return function (v1) {\n if (v instanceof Data_Maybe.Nothing) {\n return new Data_Maybe.Just(v1);\n };\n if (v instanceof Data_Maybe.Just) {\n return new Data_Maybe.Just((function () {\n var $303 = eq1(cmp(v.value0)(v1))(Data_Ordering.GT.value);\n if ($303) {\n return v.value0;\n };\n return v1;\n })());\n };\n throw new Error(\"Failed pattern match at Data.Foldable (line 441, column 3 - line 441, column 27): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n return foldl2(max$prime)(Data_Maybe.Nothing.value);\n };\n};\nvar maximum = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (dictFoldable) {\n return maximumBy(dictFoldable)(compare);\n };\n};\nvar minimumBy = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (cmp) {\n var min$prime = function (v) {\n return function (v1) {\n if (v instanceof Data_Maybe.Nothing) {\n return new Data_Maybe.Just(v1);\n };\n if (v instanceof Data_Maybe.Just) {\n return new Data_Maybe.Just((function () {\n var $307 = eq1(cmp(v.value0)(v1))(Data_Ordering.LT.value);\n if ($307) {\n return v.value0;\n };\n return v1;\n })());\n };\n throw new Error(\"Failed pattern match at Data.Foldable (line 454, column 3 - line 454, column 27): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n return foldl2(min$prime)(Data_Maybe.Nothing.value);\n };\n};\nvar minimum = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (dictFoldable) {\n return minimumBy(dictFoldable)(compare);\n };\n};\nvar product = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (dictSemiring) {\n return foldl2(Data_Semiring.mul(dictSemiring))(Data_Semiring.one(dictSemiring));\n };\n};\nvar sum = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (dictSemiring) {\n return foldl2(Data_Semiring.add(dictSemiring))(Data_Semiring.zero(dictSemiring));\n };\n};\nvar foldableTuple = {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return f(v.value1)(z);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return f(z)(v.value1);\n };\n };\n },\n foldMap: function (dictMonoid) {\n return function (f) {\n return function (v) {\n return f(v.value1);\n };\n };\n }\n};\nvar foldableMultiplicative = {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return f(v)(z);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return f(z)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n return function (f) {\n return function (v) {\n return f(v);\n };\n };\n }\n};\nvar foldableMaybe = {\n foldr: function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Data_Maybe.Nothing) {\n return v1;\n };\n if (v2 instanceof Data_Maybe.Just) {\n return v(v2.value0)(v1);\n };\n throw new Error(\"Failed pattern match at Data.Foldable (line 138, column 1 - line 144, column 27): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n },\n foldl: function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Data_Maybe.Nothing) {\n return v1;\n };\n if (v2 instanceof Data_Maybe.Just) {\n return v(v1)(v2.value0);\n };\n throw new Error(\"Failed pattern match at Data.Foldable (line 138, column 1 - line 144, column 27): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n },\n foldMap: function (dictMonoid) {\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (v) {\n return function (v1) {\n if (v1 instanceof Data_Maybe.Nothing) {\n return mempty;\n };\n if (v1 instanceof Data_Maybe.Just) {\n return v(v1.value0);\n };\n throw new Error(\"Failed pattern match at Data.Foldable (line 138, column 1 - line 144, column 27): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n }\n};\nvar foldr1 = /* #__PURE__ */ foldr(foldableMaybe);\nvar foldl1 = /* #__PURE__ */ foldl(foldableMaybe);\nvar foldableIdentity = {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return f(v)(z);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return f(z)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n return function (f) {\n return function (v) {\n return f(v);\n };\n };\n }\n};\nvar foldableEither = {\n foldr: function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Data_Either.Left) {\n return v1;\n };\n if (v2 instanceof Data_Either.Right) {\n return v(v2.value0)(v1);\n };\n throw new Error(\"Failed pattern match at Data.Foldable (line 181, column 1 - line 187, column 28): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n },\n foldl: function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Data_Either.Left) {\n return v1;\n };\n if (v2 instanceof Data_Either.Right) {\n return v(v1)(v2.value0);\n };\n throw new Error(\"Failed pattern match at Data.Foldable (line 181, column 1 - line 187, column 28): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n },\n foldMap: function (dictMonoid) {\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (v) {\n return function (v1) {\n if (v1 instanceof Data_Either.Left) {\n return mempty;\n };\n if (v1 instanceof Data_Either.Right) {\n return v(v1.value0);\n };\n throw new Error(\"Failed pattern match at Data.Foldable (line 181, column 1 - line 187, column 28): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n }\n};\nvar foldableDual = {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return f(v)(z);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return f(z)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n return function (f) {\n return function (v) {\n return f(v);\n };\n };\n }\n};\nvar foldableDisj = {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return f(v)(z);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return f(z)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n return function (f) {\n return function (v) {\n return f(v);\n };\n };\n }\n};\nvar foldableConst = {\n foldr: function (v) {\n return function (z) {\n return function (v1) {\n return z;\n };\n };\n },\n foldl: function (v) {\n return function (z) {\n return function (v1) {\n return z;\n };\n };\n },\n foldMap: function (dictMonoid) {\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (v) {\n return function (v1) {\n return mempty;\n };\n };\n }\n};\nvar foldableConj = {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return f(v)(z);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return f(z)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n return function (f) {\n return function (v) {\n return f(v);\n };\n };\n }\n};\nvar foldableAdditive = {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return f(v)(z);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return f(z)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n return function (f) {\n return function (v) {\n return f(v);\n };\n };\n }\n};\nvar foldMapDefaultR = function (dictFoldable) {\n var foldr2 = foldr(dictFoldable);\n return function (dictMonoid) {\n var append = Data_Semigroup.append(dictMonoid.Semigroup0());\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (f) {\n return foldr2(function (x) {\n return function (acc) {\n return append(f(x))(acc);\n };\n })(mempty);\n };\n };\n};\nvar foldableArray = {\n foldr: $foreign.foldrArray,\n foldl: $foreign.foldlArray,\n foldMap: function (dictMonoid) {\n return foldMapDefaultR(foldableArray)(dictMonoid);\n }\n};\nvar foldMapDefaultL = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (dictMonoid) {\n var append = Data_Semigroup.append(dictMonoid.Semigroup0());\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (f) {\n return foldl2(function (acc) {\n return function (x) {\n return append(acc)(f(x));\n };\n })(mempty);\n };\n };\n};\nvar foldMap = function (dict) {\n return dict.foldMap;\n};\nvar foldMap1 = /* #__PURE__ */ foldMap(foldableMaybe);\nvar foldableApp = function (dictFoldable) {\n var foldr2 = foldr(dictFoldable);\n var foldl2 = foldl(dictFoldable);\n var foldMap2 = foldMap(dictFoldable);\n return {\n foldr: function (f) {\n return function (i) {\n return function (v) {\n return foldr2(f)(i)(v);\n };\n };\n },\n foldl: function (f) {\n return function (i) {\n return function (v) {\n return foldl2(f)(i)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n var foldMap3 = foldMap2(dictMonoid);\n return function (f) {\n return function (v) {\n return foldMap3(f)(v);\n };\n };\n }\n };\n};\nvar foldableCompose = function (dictFoldable) {\n var foldr2 = foldr(dictFoldable);\n var foldl2 = foldl(dictFoldable);\n var foldMap2 = foldMap(dictFoldable);\n return function (dictFoldable1) {\n var foldr3 = foldr(dictFoldable1);\n var foldl3 = foldl(dictFoldable1);\n var foldMap3 = foldMap(dictFoldable1);\n return {\n foldr: function (f) {\n return function (i) {\n return function (v) {\n return foldr2(Data_Function.flip(foldr3(f)))(i)(v);\n };\n };\n },\n foldl: function (f) {\n return function (i) {\n return function (v) {\n return foldl2(foldl3(f))(i)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n var foldMap4 = foldMap2(dictMonoid);\n var foldMap5 = foldMap3(dictMonoid);\n return function (f) {\n return function (v) {\n return foldMap4(foldMap5(f))(v);\n };\n };\n }\n };\n };\n};\nvar foldableCoproduct = function (dictFoldable) {\n var foldr2 = foldr(dictFoldable);\n var foldl2 = foldl(dictFoldable);\n var foldMap2 = foldMap(dictFoldable);\n return function (dictFoldable1) {\n var foldr3 = foldr(dictFoldable1);\n var foldl3 = foldl(dictFoldable1);\n var foldMap3 = foldMap(dictFoldable1);\n return {\n foldr: function (f) {\n return function (z) {\n return Data_Functor_Coproduct.coproduct(foldr2(f)(z))(foldr3(f)(z));\n };\n },\n foldl: function (f) {\n return function (z) {\n return Data_Functor_Coproduct.coproduct(foldl2(f)(z))(foldl3(f)(z));\n };\n },\n foldMap: function (dictMonoid) {\n var foldMap4 = foldMap2(dictMonoid);\n var foldMap5 = foldMap3(dictMonoid);\n return function (f) {\n return Data_Functor_Coproduct.coproduct(foldMap4(f))(foldMap5(f));\n };\n }\n };\n };\n};\nvar foldableFirst = {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return foldr1(f)(z)(v);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return foldl1(f)(z)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n var foldMap2 = foldMap1(dictMonoid);\n return function (f) {\n return function (v) {\n return foldMap2(f)(v);\n };\n };\n }\n};\nvar foldableLast = {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return foldr1(f)(z)(v);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return foldl1(f)(z)(v);\n };\n };\n },\n foldMap: function (dictMonoid) {\n var foldMap2 = foldMap1(dictMonoid);\n return function (f) {\n return function (v) {\n return foldMap2(f)(v);\n };\n };\n }\n};\nvar foldableProduct = function (dictFoldable) {\n var foldr2 = foldr(dictFoldable);\n var foldl2 = foldl(dictFoldable);\n var foldMap2 = foldMap(dictFoldable);\n return function (dictFoldable1) {\n var foldr3 = foldr(dictFoldable1);\n var foldl3 = foldl(dictFoldable1);\n var foldMap3 = foldMap(dictFoldable1);\n return {\n foldr: function (f) {\n return function (z) {\n return function (v) {\n return foldr2(f)(foldr3(f)(z)(v.value1))(v.value0);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n return function (v) {\n return foldl3(f)(foldl2(f)(z)(v.value0))(v.value1);\n };\n };\n },\n foldMap: function (dictMonoid) {\n var append = Data_Semigroup.append(dictMonoid.Semigroup0());\n var foldMap4 = foldMap2(dictMonoid);\n var foldMap5 = foldMap3(dictMonoid);\n return function (f) {\n return function (v) {\n return append(foldMap4(f)(v.value0))(foldMap5(f)(v.value1));\n };\n };\n }\n };\n };\n};\nvar foldlDefault = function (dictFoldable) {\n var foldMap2 = foldMap(dictFoldable)(monoidDual);\n return function (c) {\n return function (u) {\n return function (xs) {\n return unwrap(unwrap(foldMap2((function () {\n var $457 = Data_Function.flip(c);\n return function ($458) {\n return Data_Monoid_Dual.Dual(Data_Monoid_Endo.Endo($457($458)));\n };\n })())(xs)))(u);\n };\n };\n };\n};\nvar foldrDefault = function (dictFoldable) {\n var foldMap2 = foldMap(dictFoldable)(monoidEndo);\n return function (c) {\n return function (u) {\n return function (xs) {\n return unwrap(foldMap2(function ($459) {\n return Data_Monoid_Endo.Endo(c($459));\n })(xs))(u);\n };\n };\n };\n};\nvar lookup = function (dictFoldable) {\n var foldMap2 = foldMap(dictFoldable)(Data_Maybe_First.monoidFirst);\n return function (dictEq) {\n var eq2 = Data_Eq.eq(dictEq);\n return function (a) {\n var $460 = foldMap2(function (v) {\n var $444 = eq2(a)(v.value0);\n if ($444) {\n return new Data_Maybe.Just(v.value1);\n };\n return Data_Maybe.Nothing.value;\n });\n return function ($461) {\n return unwrap($460($461));\n };\n };\n };\n};\nvar surroundMap = function (dictFoldable) {\n var foldMap2 = foldMap(dictFoldable)(monoidEndo);\n return function (dictSemigroup) {\n var append = Data_Semigroup.append(dictSemigroup);\n return function (d) {\n return function (t) {\n return function (f) {\n var joined = function (a) {\n return function (m) {\n return append(d)(append(t(a))(m));\n };\n };\n return unwrap(foldMap2(joined)(f))(d);\n };\n };\n };\n };\n};\nvar surround = function (dictFoldable) {\n var surroundMap1 = surroundMap(dictFoldable);\n return function (dictSemigroup) {\n var surroundMap2 = surroundMap1(dictSemigroup);\n return function (d) {\n return surroundMap2(d)(identity);\n };\n };\n};\nvar foldM = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (dictMonad) {\n var bind = Control_Bind.bind(dictMonad.Bind1());\n var pure = Control_Applicative.pure(dictMonad.Applicative0());\n return function (f) {\n return function (b0) {\n return foldl2(function (b) {\n return function (a) {\n return bind(b)(Data_Function.flip(f)(a));\n };\n })(pure(b0));\n };\n };\n };\n};\nvar fold = function (dictFoldable) {\n var foldMap2 = foldMap(dictFoldable);\n return function (dictMonoid) {\n return foldMap2(dictMonoid)(identity);\n };\n};\nvar findMap = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (p) {\n var go = function (v) {\n return function (v1) {\n if (v instanceof Data_Maybe.Nothing) {\n return p(v1);\n };\n return v;\n };\n };\n return foldl2(go)(Data_Maybe.Nothing.value);\n };\n};\nvar find = function (dictFoldable) {\n var foldl2 = foldl(dictFoldable);\n return function (p) {\n var go = function (v) {\n return function (v1) {\n if (v instanceof Data_Maybe.Nothing && p(v1)) {\n return new Data_Maybe.Just(v1);\n };\n return v;\n };\n };\n return foldl2(go)(Data_Maybe.Nothing.value);\n };\n};\nvar any = function (dictFoldable) {\n var foldMap2 = foldMap(dictFoldable);\n return function (dictHeytingAlgebra) {\n return alaF(Data_Monoid_Disj.Disj)(foldMap2(Data_Monoid_Disj.monoidDisj(dictHeytingAlgebra)));\n };\n};\nvar elem = function (dictFoldable) {\n var any1 = any(dictFoldable)(Data_HeytingAlgebra.heytingAlgebraBoolean);\n return function (dictEq) {\n var $462 = Data_Eq.eq(dictEq);\n return function ($463) {\n return any1($462($463));\n };\n };\n};\nvar notElem = function (dictFoldable) {\n var elem1 = elem(dictFoldable);\n return function (dictEq) {\n var elem2 = elem1(dictEq);\n return function (x) {\n var $464 = elem2(x);\n return function ($465) {\n return !$464($465);\n };\n };\n };\n};\nvar or = function (dictFoldable) {\n var any1 = any(dictFoldable);\n return function (dictHeytingAlgebra) {\n return any1(dictHeytingAlgebra)(identity);\n };\n};\nvar all = function (dictFoldable) {\n var foldMap2 = foldMap(dictFoldable);\n return function (dictHeytingAlgebra) {\n return alaF(Data_Monoid_Conj.Conj)(foldMap2(Data_Monoid_Conj.monoidConj(dictHeytingAlgebra)));\n };\n};\nvar and = function (dictFoldable) {\n var all1 = all(dictFoldable);\n return function (dictHeytingAlgebra) {\n return all1(dictHeytingAlgebra)(identity);\n };\n};\nexport {\n foldr,\n foldl,\n foldMap,\n foldrDefault,\n foldlDefault,\n foldMapDefaultL,\n foldMapDefaultR,\n fold,\n foldM,\n traverse_,\n for_,\n sequence_,\n oneOf,\n oneOfMap,\n intercalate,\n surroundMap,\n surround,\n and,\n or,\n all,\n any,\n sum,\n product,\n elem,\n notElem,\n indexl,\n indexr,\n find,\n findMap,\n maximum,\n maximumBy,\n minimum,\n minimumBy,\n $$null as null,\n length,\n lookup,\n foldableArray,\n foldableMaybe,\n foldableFirst,\n foldableLast,\n foldableAdditive,\n foldableDual,\n foldableDisj,\n foldableConj,\n foldableMultiplicative,\n foldableEither,\n foldableTuple,\n foldableIdentity,\n foldableConst,\n foldableProduct,\n foldableCoproduct,\n foldableCompose,\n foldableApp\n};\n", "// module Data.Function.Uncurried\n\nexport const mkFn0 = function (fn) {\n return function () {\n return fn();\n };\n};\n\nexport const mkFn2 = function (fn) {\n /* jshint maxparams: 2 */\n return function (a, b) {\n return fn(a)(b);\n };\n};\n\nexport const mkFn3 = function (fn) {\n /* jshint maxparams: 3 */\n return function (a, b, c) {\n return fn(a)(b)(c);\n };\n};\n\nexport const mkFn4 = function (fn) {\n /* jshint maxparams: 4 */\n return function (a, b, c, d) {\n return fn(a)(b)(c)(d);\n };\n};\n\nexport const mkFn5 = function (fn) {\n /* jshint maxparams: 5 */\n return function (a, b, c, d, e) {\n return fn(a)(b)(c)(d)(e);\n };\n};\n\nexport const mkFn6 = function (fn) {\n /* jshint maxparams: 6 */\n return function (a, b, c, d, e, f) {\n return fn(a)(b)(c)(d)(e)(f);\n };\n};\n\nexport const mkFn7 = function (fn) {\n /* jshint maxparams: 7 */\n return function (a, b, c, d, e, f, g) {\n return fn(a)(b)(c)(d)(e)(f)(g);\n };\n};\n\nexport const mkFn8 = function (fn) {\n /* jshint maxparams: 8 */\n return function (a, b, c, d, e, f, g, h) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h);\n };\n};\n\nexport const mkFn9 = function (fn) {\n /* jshint maxparams: 9 */\n return function (a, b, c, d, e, f, g, h, i) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)(i);\n };\n};\n\nexport const mkFn10 = function (fn) {\n /* jshint maxparams: 10 */\n return function (a, b, c, d, e, f, g, h, i, j) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j);\n };\n};\n\nexport const runFn0 = function (fn) {\n return fn();\n};\n\nexport const runFn2 = function (fn) {\n return function (a) {\n return function (b) {\n return fn(a, b);\n };\n };\n};\n\nexport const runFn3 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return fn(a, b, c);\n };\n };\n };\n};\n\nexport const runFn4 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return fn(a, b, c, d);\n };\n };\n };\n };\n};\n\nexport const runFn5 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return fn(a, b, c, d, e);\n };\n };\n };\n };\n };\n};\n\nexport const runFn6 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return fn(a, b, c, d, e, f);\n };\n };\n };\n };\n };\n };\n};\n\nexport const runFn7 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return function (g) {\n return fn(a, b, c, d, e, f, g);\n };\n };\n };\n };\n };\n };\n };\n};\n\nexport const runFn8 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return function (g) {\n return function (h) {\n return fn(a, b, c, d, e, f, g, h);\n };\n };\n };\n };\n };\n };\n };\n };\n};\n\nexport const runFn9 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return function (g) {\n return function (h) {\n return function (i) {\n return fn(a, b, c, d, e, f, g, h, i);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};\n\nexport const runFn10 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return function (g) {\n return function (h) {\n return function (i) {\n return function (j) {\n return fn(a, b, c, d, e, f, g, h, i, j);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};\n", "// jshint maxparams: 3\n\nexport const traverseArrayImpl = (function () {\n function array1(a) {\n return [a];\n }\n\n function array2(a) {\n return function (b) {\n return [a, b];\n };\n }\n\n function array3(a) {\n return function (b) {\n return function (c) {\n return [a, b, c];\n };\n };\n }\n\n function concat2(xs) {\n return function (ys) {\n return xs.concat(ys);\n };\n }\n\n return function (apply) {\n return function (map) {\n return function (pure) {\n return function (f) {\n return function (array) {\n function go(bot, top) {\n switch (top - bot) {\n case 0: return pure([]);\n case 1: return map(array1)(f(array[bot]));\n case 2: return apply(map(array2)(f(array[bot])))(f(array[bot + 1]));\n case 3: return apply(apply(map(array3)(f(array[bot])))(f(array[bot + 1])))(f(array[bot + 2]));\n default:\n // This slightly tricky pivot selection aims to produce two\n // even-length partitions where possible.\n var pivot = bot + Math.floor((top - bot) / 4) * 2;\n return apply(map(concat2)(go(bot, pivot)))(go(pivot, top));\n }\n }\n return go(0, array.length);\n };\n };\n };\n };\n };\n})();\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Const from \"../Data.Const/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Functor_App from \"../Data.Functor.App/index.js\";\nimport * as Data_Functor_Compose from \"../Data.Functor.Compose/index.js\";\nimport * as Data_Functor_Coproduct from \"../Data.Functor.Coproduct/index.js\";\nimport * as Data_Functor_Product from \"../Data.Functor.Product/index.js\";\nimport * as Data_Identity from \"../Data.Identity/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Maybe_First from \"../Data.Maybe.First/index.js\";\nimport * as Data_Maybe_Last from \"../Data.Maybe.Last/index.js\";\nimport * as Data_Monoid_Additive from \"../Data.Monoid.Additive/index.js\";\nimport * as Data_Monoid_Conj from \"../Data.Monoid.Conj/index.js\";\nimport * as Data_Monoid_Disj from \"../Data.Monoid.Disj/index.js\";\nimport * as Data_Monoid_Dual from \"../Data.Monoid.Dual/index.js\";\nimport * as Data_Monoid_Multiplicative from \"../Data.Monoid.Multiplicative/index.js\";\nimport * as Data_Traversable_Accum from \"../Data.Traversable.Accum/index.js\";\nimport * as Data_Traversable_Accum_Internal from \"../Data.Traversable.Accum.Internal/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar traverse = function (dict) {\n return dict.traverse;\n};\nvar traversableTuple = {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (f) {\n return function (v) {\n return map(Data_Tuple.Tuple.create(v.value0))(f(v.value1));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n return map(Data_Tuple.Tuple.create(v.value0))(v.value1);\n };\n },\n Functor0: function () {\n return Data_Tuple.functorTuple;\n },\n Foldable1: function () {\n return Data_Foldable.foldableTuple;\n }\n};\nvar traversableMultiplicative = {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (f) {\n return function (v) {\n return map(Data_Monoid_Multiplicative.Multiplicative)(f(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n return map(Data_Monoid_Multiplicative.Multiplicative)(v);\n };\n },\n Functor0: function () {\n return Data_Monoid_Multiplicative.functorMultiplicative;\n },\n Foldable1: function () {\n return Data_Foldable.foldableMultiplicative;\n }\n};\nvar traversableMaybe = {\n traverse: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n return function (v1) {\n if (v1 instanceof Data_Maybe.Nothing) {\n return pure(Data_Maybe.Nothing.value);\n };\n if (v1 instanceof Data_Maybe.Just) {\n return map(Data_Maybe.Just.create)(v(v1.value0));\n };\n throw new Error(\"Failed pattern match at Data.Traversable (line 115, column 1 - line 119, column 33): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n },\n sequence: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n if (v instanceof Data_Maybe.Nothing) {\n return pure(Data_Maybe.Nothing.value);\n };\n if (v instanceof Data_Maybe.Just) {\n return map(Data_Maybe.Just.create)(v.value0);\n };\n throw new Error(\"Failed pattern match at Data.Traversable (line 115, column 1 - line 119, column 33): \" + [ v.constructor.name ]);\n };\n },\n Functor0: function () {\n return Data_Maybe.functorMaybe;\n },\n Foldable1: function () {\n return Data_Foldable.foldableMaybe;\n }\n};\nvar traverse1 = /* #__PURE__ */ traverse(traversableMaybe);\nvar traversableIdentity = {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (f) {\n return function (v) {\n return map(Data_Identity.Identity)(f(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n return map(Data_Identity.Identity)(v);\n };\n },\n Functor0: function () {\n return Data_Identity.functorIdentity;\n },\n Foldable1: function () {\n return Data_Foldable.foldableIdentity;\n }\n};\nvar traversableEither = {\n traverse: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n return function (v1) {\n if (v1 instanceof Data_Either.Left) {\n return pure(new Data_Either.Left(v1.value0));\n };\n if (v1 instanceof Data_Either.Right) {\n return map(Data_Either.Right.create)(v(v1.value0));\n };\n throw new Error(\"Failed pattern match at Data.Traversable (line 149, column 1 - line 153, column 36): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n },\n sequence: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n if (v instanceof Data_Either.Left) {\n return pure(new Data_Either.Left(v.value0));\n };\n if (v instanceof Data_Either.Right) {\n return map(Data_Either.Right.create)(v.value0);\n };\n throw new Error(\"Failed pattern match at Data.Traversable (line 149, column 1 - line 153, column 36): \" + [ v.constructor.name ]);\n };\n },\n Functor0: function () {\n return Data_Either.functorEither;\n },\n Foldable1: function () {\n return Data_Foldable.foldableEither;\n }\n};\nvar traversableDual = {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (f) {\n return function (v) {\n return map(Data_Monoid_Dual.Dual)(f(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n return map(Data_Monoid_Dual.Dual)(v);\n };\n },\n Functor0: function () {\n return Data_Monoid_Dual.functorDual;\n },\n Foldable1: function () {\n return Data_Foldable.foldableDual;\n }\n};\nvar traversableDisj = {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (f) {\n return function (v) {\n return map(Data_Monoid_Disj.Disj)(f(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n return map(Data_Monoid_Disj.Disj)(v);\n };\n },\n Functor0: function () {\n return Data_Monoid_Disj.functorDisj;\n },\n Foldable1: function () {\n return Data_Foldable.foldableDisj;\n }\n};\nvar traversableConst = {\n traverse: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n return function (v) {\n return function (v1) {\n return pure(v1);\n };\n };\n },\n sequence: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n return function (v) {\n return pure(v);\n };\n },\n Functor0: function () {\n return Data_Const.functorConst;\n },\n Foldable1: function () {\n return Data_Foldable.foldableConst;\n }\n};\nvar traversableConj = {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (f) {\n return function (v) {\n return map(Data_Monoid_Conj.Conj)(f(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n return map(Data_Monoid_Conj.Conj)(v);\n };\n },\n Functor0: function () {\n return Data_Monoid_Conj.functorConj;\n },\n Foldable1: function () {\n return Data_Foldable.foldableConj;\n }\n};\nvar traversableCompose = function (dictTraversable) {\n var traverse2 = traverse(dictTraversable);\n var functorCompose = Data_Functor_Compose.functorCompose(dictTraversable.Functor0());\n var foldableCompose = Data_Foldable.foldableCompose(dictTraversable.Foldable1());\n return function (dictTraversable1) {\n var traverse3 = traverse(dictTraversable1);\n var functorCompose1 = functorCompose(dictTraversable1.Functor0());\n var foldableCompose1 = foldableCompose(dictTraversable1.Foldable1());\n return {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverse4 = traverse2(dictApplicative);\n var traverse5 = traverse3(dictApplicative);\n return function (f) {\n return function (v) {\n return map(Data_Functor_Compose.Compose)(traverse4(traverse5(f))(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n return traverse(traversableCompose(dictTraversable)(dictTraversable1))(dictApplicative)(identity);\n },\n Functor0: function () {\n return functorCompose1;\n },\n Foldable1: function () {\n return foldableCompose1;\n }\n };\n };\n};\nvar traversableAdditive = {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (f) {\n return function (v) {\n return map(Data_Monoid_Additive.Additive)(f(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (v) {\n return map(Data_Monoid_Additive.Additive)(v);\n };\n },\n Functor0: function () {\n return Data_Monoid_Additive.functorAdditive;\n },\n Foldable1: function () {\n return Data_Foldable.foldableAdditive;\n }\n};\nvar sequenceDefault = function (dictTraversable) {\n var traverse2 = traverse(dictTraversable);\n return function (dictApplicative) {\n return traverse2(dictApplicative)(identity);\n };\n};\nvar traversableArray = {\n traverse: function (dictApplicative) {\n var Apply0 = dictApplicative.Apply0();\n return $foreign.traverseArrayImpl(Control_Apply.apply(Apply0))(Data_Functor.map(Apply0.Functor0()))(Control_Applicative.pure(dictApplicative));\n },\n sequence: function (dictApplicative) {\n return sequenceDefault(traversableArray)(dictApplicative);\n },\n Functor0: function () {\n return Data_Functor.functorArray;\n },\n Foldable1: function () {\n return Data_Foldable.foldableArray;\n }\n};\nvar sequence = function (dict) {\n return dict.sequence;\n};\nvar sequence1 = /* #__PURE__ */ sequence(traversableMaybe);\nvar traversableApp = function (dictTraversable) {\n var traverse2 = traverse(dictTraversable);\n var sequence2 = sequence(dictTraversable);\n var functorApp = Data_Functor_App.functorApp(dictTraversable.Functor0());\n var foldableApp = Data_Foldable.foldableApp(dictTraversable.Foldable1());\n return {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverse3 = traverse2(dictApplicative);\n return function (f) {\n return function (v) {\n return map(Data_Functor_App.App)(traverse3(f)(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var sequence3 = sequence2(dictApplicative);\n return function (v) {\n return map(Data_Functor_App.App)(sequence3(v));\n };\n },\n Functor0: function () {\n return functorApp;\n },\n Foldable1: function () {\n return foldableApp;\n }\n };\n};\nvar traversableCoproduct = function (dictTraversable) {\n var traverse2 = traverse(dictTraversable);\n var sequence2 = sequence(dictTraversable);\n var functorCoproduct = Data_Functor_Coproduct.functorCoproduct(dictTraversable.Functor0());\n var foldableCoproduct = Data_Foldable.foldableCoproduct(dictTraversable.Foldable1());\n return function (dictTraversable1) {\n var traverse3 = traverse(dictTraversable1);\n var sequence3 = sequence(dictTraversable1);\n var functorCoproduct1 = functorCoproduct(dictTraversable1.Functor0());\n var foldableCoproduct1 = foldableCoproduct(dictTraversable1.Foldable1());\n return {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverse4 = traverse2(dictApplicative);\n var traverse5 = traverse3(dictApplicative);\n return function (f) {\n return Data_Functor_Coproduct.coproduct((function () {\n var $313 = map(function ($316) {\n return Data_Functor_Coproduct.Coproduct(Data_Either.Left.create($316));\n });\n var $314 = traverse4(f);\n return function ($315) {\n return $313($314($315));\n };\n })())((function () {\n var $317 = map(function ($320) {\n return Data_Functor_Coproduct.Coproduct(Data_Either.Right.create($320));\n });\n var $318 = traverse5(f);\n return function ($319) {\n return $317($318($319));\n };\n })());\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return Data_Functor_Coproduct.coproduct((function () {\n var $321 = map(function ($324) {\n return Data_Functor_Coproduct.Coproduct(Data_Either.Left.create($324));\n });\n var $322 = sequence2(dictApplicative);\n return function ($323) {\n return $321($322($323));\n };\n })())((function () {\n var $325 = map(function ($328) {\n return Data_Functor_Coproduct.Coproduct(Data_Either.Right.create($328));\n });\n var $326 = sequence3(dictApplicative);\n return function ($327) {\n return $325($326($327));\n };\n })());\n },\n Functor0: function () {\n return functorCoproduct1;\n },\n Foldable1: function () {\n return foldableCoproduct1;\n }\n };\n };\n};\nvar traversableFirst = {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverse2 = traverse1(dictApplicative);\n return function (f) {\n return function (v) {\n return map(Data_Maybe_First.First)(traverse2(f)(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var sequence2 = sequence1(dictApplicative);\n return function (v) {\n return map(Data_Maybe_First.First)(sequence2(v));\n };\n },\n Functor0: function () {\n return Data_Maybe_First.functorFirst;\n },\n Foldable1: function () {\n return Data_Foldable.foldableFirst;\n }\n};\nvar traversableLast = {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverse2 = traverse1(dictApplicative);\n return function (f) {\n return function (v) {\n return map(Data_Maybe_Last.Last)(traverse2(f)(v));\n };\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var sequence2 = sequence1(dictApplicative);\n return function (v) {\n return map(Data_Maybe_Last.Last)(sequence2(v));\n };\n },\n Functor0: function () {\n return Data_Maybe_Last.functorLast;\n },\n Foldable1: function () {\n return Data_Foldable.foldableLast;\n }\n};\nvar traversableProduct = function (dictTraversable) {\n var traverse2 = traverse(dictTraversable);\n var sequence2 = sequence(dictTraversable);\n var functorProduct = Data_Functor_Product.functorProduct(dictTraversable.Functor0());\n var foldableProduct = Data_Foldable.foldableProduct(dictTraversable.Foldable1());\n return function (dictTraversable1) {\n var traverse3 = traverse(dictTraversable1);\n var sequence3 = sequence(dictTraversable1);\n var functorProduct1 = functorProduct(dictTraversable1.Functor0());\n var foldableProduct1 = foldableProduct(dictTraversable1.Foldable1());\n return {\n traverse: function (dictApplicative) {\n var lift2 = Control_Apply.lift2(dictApplicative.Apply0());\n var traverse4 = traverse2(dictApplicative);\n var traverse5 = traverse3(dictApplicative);\n return function (f) {\n return function (v) {\n return lift2(Data_Functor_Product.product)(traverse4(f)(v.value0))(traverse5(f)(v.value1));\n };\n };\n },\n sequence: function (dictApplicative) {\n var lift2 = Control_Apply.lift2(dictApplicative.Apply0());\n var sequence4 = sequence2(dictApplicative);\n var sequence5 = sequence3(dictApplicative);\n return function (v) {\n return lift2(Data_Functor_Product.product)(sequence4(v.value0))(sequence5(v.value1));\n };\n },\n Functor0: function () {\n return functorProduct1;\n },\n Foldable1: function () {\n return foldableProduct1;\n }\n };\n };\n};\nvar traverseDefault = function (dictTraversable) {\n var sequence2 = sequence(dictTraversable);\n var map = Data_Functor.map(dictTraversable.Functor0());\n return function (dictApplicative) {\n var sequence3 = sequence2(dictApplicative);\n return function (f) {\n return function (ta) {\n return sequence3(map(f)(ta));\n };\n };\n };\n};\nvar mapAccumR = function (dictTraversable) {\n var traverse2 = traverse(dictTraversable)(Data_Traversable_Accum_Internal.applicativeStateR);\n return function (f) {\n return function (s0) {\n return function (xs) {\n return Data_Traversable_Accum_Internal.stateR(traverse2(function (a) {\n return function (s) {\n return f(s)(a);\n };\n })(xs))(s0);\n };\n };\n };\n};\nvar scanr = function (dictTraversable) {\n var mapAccumR1 = mapAccumR(dictTraversable);\n return function (f) {\n return function (b0) {\n return function (xs) {\n return (mapAccumR1(function (b) {\n return function (a) {\n var b$prime = f(a)(b);\n return {\n accum: b$prime,\n value: b$prime\n };\n };\n })(b0)(xs)).value;\n };\n };\n };\n};\nvar mapAccumL = function (dictTraversable) {\n var traverse2 = traverse(dictTraversable)(Data_Traversable_Accum_Internal.applicativeStateL);\n return function (f) {\n return function (s0) {\n return function (xs) {\n return Data_Traversable_Accum_Internal.stateL(traverse2(function (a) {\n return function (s) {\n return f(s)(a);\n };\n })(xs))(s0);\n };\n };\n };\n};\nvar scanl = function (dictTraversable) {\n var mapAccumL1 = mapAccumL(dictTraversable);\n return function (f) {\n return function (b0) {\n return function (xs) {\n return (mapAccumL1(function (b) {\n return function (a) {\n var b$prime = f(b)(a);\n return {\n accum: b$prime,\n value: b$prime\n };\n };\n })(b0)(xs)).value;\n };\n };\n };\n};\nvar $$for = function (dictApplicative) {\n return function (dictTraversable) {\n var traverse2 = traverse(dictTraversable)(dictApplicative);\n return function (x) {\n return function (f) {\n return traverse2(f)(x);\n };\n };\n };\n};\nexport {\n traverse,\n sequence,\n traverseDefault,\n sequenceDefault,\n $$for as for,\n scanl,\n scanr,\n mapAccumL,\n mapAccumR,\n traversableArray,\n traversableMaybe,\n traversableFirst,\n traversableLast,\n traversableAdditive,\n traversableDual,\n traversableConj,\n traversableDisj,\n traversableMultiplicative,\n traversableEither,\n traversableTuple,\n traversableIdentity,\n traversableConst,\n traversableProduct,\n traversableCoproduct,\n traversableCompose,\n traversableApp\n};\nexport {\n all,\n and,\n any,\n elem,\n find,\n fold,\n foldMap,\n foldMapDefaultL,\n foldMapDefaultR,\n foldl,\n foldlDefault,\n foldr,\n foldrDefault,\n for_,\n intercalate,\n maximum,\n maximumBy,\n minimum,\n minimumBy,\n notElem,\n oneOf,\n or,\n sequence_,\n sum,\n traverse_\n} from \"../Data.Foldable/index.js\";\n", "export const unfoldrArrayImpl = function (isNothing) {\n return function (fromJust) {\n return function (fst) {\n return function (snd) {\n return function (f) {\n return function (b) {\n var result = [];\n var value = b;\n while (true) { // eslint-disable-line no-constant-condition\n var maybe = f(value);\n if (isNothing(maybe)) return result;\n var tuple = fromJust(maybe);\n result.push(fst(tuple));\n value = snd(tuple);\n }\n };\n };\n };\n };\n };\n};\n", "export const unfoldr1ArrayImpl = function (isNothing) {\n return function (fromJust) {\n return function (fst) {\n return function (snd) {\n return function (f) {\n return function (b) {\n var result = [];\n var value = b;\n while (true) { // eslint-disable-line no-constant-condition\n var tuple = f(value);\n result.push(fst(tuple));\n var maybe = snd(tuple);\n if (isNothing(maybe)) return result;\n value = fromJust(maybe);\n }\n };\n };\n };\n };\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Semigroup_Traversable from \"../Data.Semigroup.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar fromJust = /* #__PURE__ */ Data_Maybe.fromJust();\nvar unfoldr1 = function (dict) {\n return dict.unfoldr1;\n};\nvar unfoldable1Maybe = {\n unfoldr1: function (f) {\n return function (b) {\n return new Data_Maybe.Just(Data_Tuple.fst(f(b)));\n };\n }\n};\nvar unfoldable1Array = {\n unfoldr1: /* #__PURE__ */ $foreign.unfoldr1ArrayImpl(Data_Maybe.isNothing)(fromJust)(Data_Tuple.fst)(Data_Tuple.snd)\n};\nvar replicate1 = function (dictUnfoldable1) {\n var unfoldr11 = unfoldr1(dictUnfoldable1);\n return function (n) {\n return function (v) {\n var step = function (i) {\n if (i <= 0) {\n return new Data_Tuple.Tuple(v, Data_Maybe.Nothing.value);\n };\n if (Data_Boolean.otherwise) {\n return new Data_Tuple.Tuple(v, new Data_Maybe.Just(i - 1 | 0));\n };\n throw new Error(\"Failed pattern match at Data.Unfoldable1 (line 68, column 5 - line 68, column 39): \" + [ i.constructor.name ]);\n };\n return unfoldr11(step)(n - 1 | 0);\n };\n };\n};\nvar replicate1A = function (dictApply) {\n return function (dictUnfoldable1) {\n var replicate11 = replicate1(dictUnfoldable1);\n return function (dictTraversable1) {\n var sequence1 = Data_Semigroup_Traversable.sequence1(dictTraversable1)(dictApply);\n return function (n) {\n return function (m) {\n return sequence1(replicate11(n)(m));\n };\n };\n };\n };\n};\nvar singleton = function (dictUnfoldable1) {\n return replicate1(dictUnfoldable1)(1);\n};\nvar range = function (dictUnfoldable1) {\n var unfoldr11 = unfoldr1(dictUnfoldable1);\n return function (start) {\n return function (end) {\n var go = function (delta) {\n return function (i) {\n var i$prime = i + delta | 0;\n return new Data_Tuple.Tuple(i, (function () {\n var $25 = i === end;\n if ($25) {\n return Data_Maybe.Nothing.value;\n };\n return new Data_Maybe.Just(i$prime);\n })());\n };\n };\n var delta = (function () {\n var $26 = end >= start;\n if ($26) {\n return 1;\n };\n return -1 | 0;\n })();\n return unfoldr11(go(delta))(start);\n };\n };\n};\nvar iterateN = function (dictUnfoldable1) {\n var unfoldr11 = unfoldr1(dictUnfoldable1);\n return function (n) {\n return function (f) {\n return function (s) {\n var go = function (v) {\n return new Data_Tuple.Tuple(v.value0, (function () {\n var $28 = v.value1 > 0;\n if ($28) {\n return new Data_Maybe.Just(new Data_Tuple.Tuple(f(v.value0), v.value1 - 1 | 0));\n };\n return Data_Maybe.Nothing.value;\n })());\n };\n return unfoldr11(go)(new Data_Tuple.Tuple(s, n - 1 | 0));\n };\n };\n };\n};\nexport {\n unfoldr1,\n replicate1,\n replicate1A,\n singleton,\n range,\n iterateN,\n unfoldable1Array,\n unfoldable1Maybe\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable1 from \"../Data.Unfoldable1/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar fromJust = /* #__PURE__ */ Data_Maybe.fromJust();\nvar unfoldr = function (dict) {\n return dict.unfoldr;\n};\nvar unfoldableMaybe = {\n unfoldr: function (f) {\n return function (b) {\n return map(Data_Tuple.fst)(f(b));\n };\n },\n Unfoldable10: function () {\n return Data_Unfoldable1.unfoldable1Maybe;\n }\n};\nvar unfoldableArray = {\n unfoldr: /* #__PURE__ */ $foreign.unfoldrArrayImpl(Data_Maybe.isNothing)(fromJust)(Data_Tuple.fst)(Data_Tuple.snd),\n Unfoldable10: function () {\n return Data_Unfoldable1.unfoldable1Array;\n }\n};\nvar replicate = function (dictUnfoldable) {\n var unfoldr1 = unfoldr(dictUnfoldable);\n return function (n) {\n return function (v) {\n var step = function (i) {\n var $17 = i <= 0;\n if ($17) {\n return Data_Maybe.Nothing.value;\n };\n return new Data_Maybe.Just(new Data_Tuple.Tuple(v, i - 1 | 0));\n };\n return unfoldr1(step)(n);\n };\n };\n};\nvar replicateA = function (dictApplicative) {\n return function (dictUnfoldable) {\n var replicate1 = replicate(dictUnfoldable);\n return function (dictTraversable) {\n var sequence = Data_Traversable.sequence(dictTraversable)(dictApplicative);\n return function (n) {\n return function (m) {\n return sequence(replicate1(n)(m));\n };\n };\n };\n };\n};\nvar none = function (dictUnfoldable) {\n return unfoldr(dictUnfoldable)(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Unit.unit);\n};\nvar fromMaybe = function (dictUnfoldable) {\n return unfoldr(dictUnfoldable)(function (b) {\n return map(Data_Function.flip(Data_Tuple.Tuple.create)(Data_Maybe.Nothing.value))(b);\n });\n};\nexport {\n unfoldr,\n replicate,\n replicateA,\n none,\n fromMaybe,\n unfoldableArray,\n unfoldableMaybe\n};\nexport {\n iterateN,\n range,\n replicate1,\n replicate1A,\n singleton,\n unfoldr1\n} from \"../Data.Unfoldable1/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Lazy from \"../Control.Lazy/index.js\";\nimport * as Control_Monad_Rec_Class from \"../Control.Monad.Rec.Class/index.js\";\nimport * as Control_Monad_ST_Internal from \"../Control.Monad.ST.Internal/index.js\";\nimport * as Data_Array_ST from \"../Data.Array.ST/index.js\";\nimport * as Data_Array_ST_Iterator from \"../Data.Array.ST.Iterator/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Function_Uncurried from \"../Data.Function.Uncurried/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_FunctorWithIndex from \"../Data.FunctorWithIndex/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nvar sequence = /* #__PURE__ */ Data_Traversable.sequence(Data_Traversable.traversableArray);\nvar traverse_ = /* #__PURE__ */ Data_Foldable.traverse_(Control_Monad_ST_Internal.applicativeST);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Control_Monad_ST_Internal.functorST);\nvar intercalate1 = /* #__PURE__ */ Data_Foldable.intercalate(Data_Foldable.foldableArray);\nvar apply = /* #__PURE__ */ Control_Apply.apply(Data_Maybe.applyMaybe);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorArray);\nvar map2 = /* #__PURE__ */ Data_Functor.map(Control_Monad_ST_Internal.functorST);\nvar fromJust = /* #__PURE__ */ Data_Maybe.fromJust();\nvar when = /* #__PURE__ */ Control_Applicative.when(Control_Monad_ST_Internal.applicativeST);\nvar notEq = /* #__PURE__ */ Data_Eq.notEq(Data_Ordering.eqOrdering);\nvar eq1 = /* #__PURE__ */ Data_Eq.eq(Data_Ordering.eqOrdering);\nvar foldMap1 = /* #__PURE__ */ Data_Foldable.foldMap(Data_Foldable.foldableArray);\nvar fold1 = /* #__PURE__ */ Data_Foldable.fold(Data_Foldable.foldableArray);\nvar append = /* #__PURE__ */ Data_Semigroup.append(Data_Semigroup.semigroupArray);\nvar traverse = /* #__PURE__ */ Data_Traversable.traverse(Data_Traversable.traversableArray);\nvar zipWith = /* #__PURE__ */ Data_Function_Uncurried.runFn3($foreign.zipWithImpl);\nvar zipWithA = function (dictApplicative) {\n var sequence1 = sequence(dictApplicative);\n return function (f) {\n return function (xs) {\n return function (ys) {\n return sequence1(zipWith(f)(xs)(ys));\n };\n };\n };\n};\nvar zip = /* #__PURE__ */ (function () {\n return zipWith(Data_Tuple.Tuple.create);\n})();\nvar updateAtIndices = function (dictFoldable) {\n var traverse_1 = traverse_(dictFoldable);\n return function (us) {\n return function (xs) {\n return Data_Array_ST.withArray(function (res) {\n return traverse_1(function (v) {\n return Data_Array_ST.poke(v.value0)(v.value1)(res);\n })(us);\n })(xs)();\n };\n };\n};\nvar updateAt = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn5($foreign[\"_updateAt\"])(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar unsafeIndex = function () {\n return Data_Function_Uncurried.runFn2($foreign.unsafeIndexImpl);\n};\nvar unsafeIndex1 = /* #__PURE__ */ unsafeIndex();\nvar uncons = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn3($foreign.unconsImpl)(Data_Function[\"const\"](Data_Maybe.Nothing.value))(function (x) {\n return function (xs) {\n return new Data_Maybe.Just({\n head: x,\n tail: xs\n });\n };\n });\n})();\nvar toUnfoldable = function (dictUnfoldable) {\n var unfoldr = Data_Unfoldable.unfoldr(dictUnfoldable);\n return function (xs) {\n var len = $foreign.length(xs);\n var f = function (i) {\n if (i < len) {\n return new Data_Maybe.Just(new Data_Tuple.Tuple(unsafeIndex1(xs)(i), i + 1 | 0));\n };\n if (Data_Boolean.otherwise) {\n return Data_Maybe.Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.Array (line 163, column 3 - line 165, column 26): \" + [ i.constructor.name ]);\n };\n return unfoldr(f)(0);\n };\n};\nvar tail = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn3($foreign.unconsImpl)(Data_Function[\"const\"](Data_Maybe.Nothing.value))(function (v) {\n return function (xs) {\n return new Data_Maybe.Just(xs);\n };\n });\n})();\nvar sortBy = function (comp) {\n return Data_Function_Uncurried.runFn3($foreign.sortByImpl)(comp)(function (v) {\n if (v instanceof Data_Ordering.GT) {\n return 1;\n };\n if (v instanceof Data_Ordering.EQ) {\n return 0;\n };\n if (v instanceof Data_Ordering.LT) {\n return -1 | 0;\n };\n throw new Error(\"Failed pattern match at Data.Array (line 897, column 38 - line 900, column 11): \" + [ v.constructor.name ]);\n });\n};\nvar sortWith = function (dictOrd) {\n var comparing = Data_Ord.comparing(dictOrd);\n return function (f) {\n return sortBy(comparing(f));\n };\n};\nvar sortWith1 = /* #__PURE__ */ sortWith(Data_Ord.ordInt);\nvar sort = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (xs) {\n return sortBy(compare)(xs);\n };\n};\nvar snoc = function (xs) {\n return function (x) {\n return Data_Array_ST.withArray(Data_Array_ST.push(x))(xs)();\n };\n};\nvar slice = /* #__PURE__ */ Data_Function_Uncurried.runFn3($foreign.sliceImpl);\nvar splitAt = function (v) {\n return function (v1) {\n if (v <= 0) {\n return {\n before: [ ],\n after: v1\n };\n };\n return {\n before: slice(0)(v)(v1),\n after: slice(v)($foreign.length(v1))(v1)\n };\n };\n};\nvar take = function (n) {\n return function (xs) {\n var $152 = n < 1;\n if ($152) {\n return [ ];\n };\n return slice(0)(n)(xs);\n };\n};\nvar singleton = function (a) {\n return [ a ];\n};\nvar scanr = /* #__PURE__ */ Data_Function_Uncurried.runFn3($foreign.scanrImpl);\nvar scanl = /* #__PURE__ */ Data_Function_Uncurried.runFn3($foreign.scanlImpl);\nvar replicate = /* #__PURE__ */ Data_Function_Uncurried.runFn2($foreign.replicateImpl);\nvar range = /* #__PURE__ */ Data_Function_Uncurried.runFn2($foreign.rangeImpl);\nvar partition = /* #__PURE__ */ Data_Function_Uncurried.runFn2($foreign.partitionImpl);\nvar $$null = function (xs) {\n return $foreign.length(xs) === 0;\n};\nvar modifyAtIndices = function (dictFoldable) {\n var traverse_1 = traverse_(dictFoldable);\n return function (is) {\n return function (f) {\n return function (xs) {\n return Data_Array_ST.withArray(function (res) {\n return traverse_1(function (i) {\n return Data_Array_ST.modify(i)(f)(res);\n })(is);\n })(xs)();\n };\n };\n };\n};\nvar mapWithIndex = /* #__PURE__ */ Data_FunctorWithIndex.mapWithIndex(Data_FunctorWithIndex.functorWithIndexArray);\nvar intersperse = function (a) {\n return function (arr) {\n var v = $foreign.length(arr);\n if (v < 2) {\n return arr;\n };\n if (Data_Boolean.otherwise) {\n return Data_Array_ST.run((function () {\n var unsafeGetElem = function (idx) {\n return unsafeIndex1(arr)(idx);\n };\n return function __do() {\n var out = Data_Array_ST[\"new\"]();\n Data_Array_ST.push(unsafeGetElem(0))(out)();\n Control_Monad_ST_Internal[\"for\"](1)(v)(function (idx) {\n return function __do() {\n Data_Array_ST.push(a)(out)();\n return $$void(Data_Array_ST.push(unsafeGetElem(idx))(out))();\n };\n })();\n return out;\n };\n })());\n };\n throw new Error(\"Failed pattern match at Data.Array (line 623, column 21 - line 633, column 17): \" + [ v.constructor.name ]);\n };\n};\nvar intercalate = function (dictMonoid) {\n return intercalate1(dictMonoid);\n};\nvar insertAt = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn5($foreign[\"_insertAt\"])(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar init = function (xs) {\n if ($$null(xs)) {\n return Data_Maybe.Nothing.value;\n };\n if (Data_Boolean.otherwise) {\n return new Data_Maybe.Just(slice(0)($foreign.length(xs) - 1 | 0)(xs));\n };\n throw new Error(\"Failed pattern match at Data.Array (line 351, column 1 - line 351, column 45): \" + [ xs.constructor.name ]);\n};\nvar index = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn4($foreign.indexImpl)(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar last = function (xs) {\n return index(xs)($foreign.length(xs) - 1 | 0);\n};\nvar unsnoc = function (xs) {\n return apply(map(function (v) {\n return function (v1) {\n return {\n init: v,\n last: v1\n };\n };\n })(init(xs)))(last(xs));\n};\nvar modifyAt = function (i) {\n return function (f) {\n return function (xs) {\n var go = function (x) {\n return updateAt(i)(f(x))(xs);\n };\n return Data_Maybe.maybe(Data_Maybe.Nothing.value)(go)(index(xs)(i));\n };\n };\n};\nvar span = function (p) {\n return function (arr) {\n var go = function ($copy_i) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(i) {\n var v = index(arr)(i);\n if (v instanceof Data_Maybe.Just) {\n var $156 = p(v.value0);\n if ($156) {\n $copy_i = i + 1 | 0;\n return;\n };\n $tco_done = true;\n return new Data_Maybe.Just(i);\n };\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.Array (line 1035, column 5 - line 1037, column 25): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_i);\n };\n return $tco_result;\n };\n var breakIndex = go(0);\n if (breakIndex instanceof Data_Maybe.Just && breakIndex.value0 === 0) {\n return {\n init: [ ],\n rest: arr\n };\n };\n if (breakIndex instanceof Data_Maybe.Just) {\n return {\n init: slice(0)(breakIndex.value0)(arr),\n rest: slice(breakIndex.value0)($foreign.length(arr))(arr)\n };\n };\n if (breakIndex instanceof Data_Maybe.Nothing) {\n return {\n init: arr,\n rest: [ ]\n };\n };\n throw new Error(\"Failed pattern match at Data.Array (line 1022, column 3 - line 1028, column 30): \" + [ breakIndex.constructor.name ]);\n };\n};\nvar takeWhile = function (p) {\n return function (xs) {\n return (span(p)(xs)).init;\n };\n};\nvar unzip = function (xs) {\n return (function __do() {\n var fsts = Data_Array_ST[\"new\"]();\n var snds = Data_Array_ST[\"new\"]();\n var iter = Data_Array_ST_Iterator.iterator(function (v) {\n return index(xs)(v);\n })();\n Data_Array_ST_Iterator.iterate(iter)(function (v) {\n return function __do() {\n $$void(Data_Array_ST.push(v.value0)(fsts))();\n return $$void(Data_Array_ST.push(v.value1)(snds))();\n };\n })();\n var fsts$prime = Data_Array_ST.unsafeFreeze(fsts)();\n var snds$prime = Data_Array_ST.unsafeFreeze(snds)();\n return new Data_Tuple.Tuple(fsts$prime, snds$prime);\n })();\n};\nvar head = function (xs) {\n return index(xs)(0);\n};\nvar nubBy = function (comp) {\n return function (xs) {\n var indexedAndSorted = sortBy(function (x) {\n return function (y) {\n return comp(Data_Tuple.snd(x))(Data_Tuple.snd(y));\n };\n })(mapWithIndex(Data_Tuple.Tuple.create)(xs));\n var v = head(indexedAndSorted);\n if (v instanceof Data_Maybe.Nothing) {\n return [ ];\n };\n if (v instanceof Data_Maybe.Just) {\n return map1(Data_Tuple.snd)(sortWith1(Data_Tuple.fst)((function __do() {\n var result = Data_Array_ST.unsafeThaw(singleton(v.value0))();\n Control_Monad_ST_Internal.foreach(indexedAndSorted)(function (v1) {\n return function __do() {\n var lst = map2((function () {\n var $183 = function ($185) {\n return fromJust(last($185));\n };\n return function ($184) {\n return Data_Tuple.snd($183($184));\n };\n })())(Data_Array_ST.unsafeFreeze(result))();\n return when(notEq(comp(lst)(v1.value1))(Data_Ordering.EQ.value))($$void(Data_Array_ST.push(v1)(result)))();\n };\n })();\n return Data_Array_ST.unsafeFreeze(result)();\n })()));\n };\n throw new Error(\"Failed pattern match at Data.Array (line 1115, column 17 - line 1123, column 28): \" + [ v.constructor.name ]);\n };\n};\nvar nub = function (dictOrd) {\n return nubBy(Data_Ord.compare(dictOrd));\n};\nvar groupBy = function (op) {\n return function (xs) {\n return (function __do() {\n var result = Data_Array_ST[\"new\"]();\n var iter = Data_Array_ST_Iterator.iterator(function (v) {\n return index(xs)(v);\n })();\n Data_Array_ST_Iterator.iterate(iter)(function (x) {\n return $$void(function __do() {\n var sub1 = Data_Array_ST[\"new\"]();\n Data_Array_ST.push(x)(sub1)();\n Data_Array_ST_Iterator.pushWhile(op(x))(iter)(sub1)();\n var grp = Data_Array_ST.unsafeFreeze(sub1)();\n return Data_Array_ST.push(grp)(result)();\n });\n })();\n return Data_Array_ST.unsafeFreeze(result)();\n })();\n };\n};\nvar groupAllBy = function (cmp) {\n var $186 = groupBy(function (x) {\n return function (y) {\n return eq1(cmp(x)(y))(Data_Ordering.EQ.value);\n };\n });\n var $187 = sortBy(cmp);\n return function ($188) {\n return $186($187($188));\n };\n};\nvar groupAll = function (dictOrd) {\n return groupAllBy(Data_Ord.compare(dictOrd));\n};\nvar group = function (dictEq) {\n var eq2 = Data_Eq.eq(dictEq);\n return function (xs) {\n return groupBy(eq2)(xs);\n };\n};\nvar fromFoldable = function (dictFoldable) {\n return Data_Function_Uncurried.runFn2($foreign.fromFoldableImpl)(Data_Foldable.foldr(dictFoldable));\n};\nvar foldr = /* #__PURE__ */ Data_Foldable.foldr(Data_Foldable.foldableArray);\nvar foldl = /* #__PURE__ */ Data_Foldable.foldl(Data_Foldable.foldableArray);\nvar transpose = function (xs) {\n var buildNext = function (idx) {\n return Data_Function.flip(foldl)(Data_Maybe.Nothing.value)(function (acc) {\n return function (nextArr) {\n return Data_Maybe.maybe(acc)(function (el) {\n return new Data_Maybe.Just(Data_Maybe.maybe([ el ])(Data_Function.flip(snoc)(el))(acc));\n })(index(nextArr)(idx));\n };\n })(xs);\n };\n var go = function ($copy_idx) {\n return function ($copy_allArrays) {\n var $tco_var_idx = $copy_idx;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(idx, allArrays) {\n var v = buildNext(idx);\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return allArrays;\n };\n if (v instanceof Data_Maybe.Just) {\n $tco_var_idx = idx + 1 | 0;\n $copy_allArrays = snoc(allArrays)(v.value0);\n return;\n };\n throw new Error(\"Failed pattern match at Data.Array (line 837, column 22 - line 839, column 52): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_idx, $copy_allArrays);\n };\n return $tco_result;\n };\n };\n return go(0)([ ]);\n};\nvar foldRecM = function (dictMonadRec) {\n var Monad0 = dictMonadRec.Monad0();\n var pure1 = Control_Applicative.pure(Monad0.Applicative0());\n var bind1 = Control_Bind.bind(Monad0.Bind1());\n var tailRecM2 = Control_Monad_Rec_Class.tailRecM2(dictMonadRec);\n return function (f) {\n return function (b) {\n return function (array) {\n var go = function (res) {\n return function (i) {\n if (i >= $foreign.length(array)) {\n return pure1(new Control_Monad_Rec_Class.Done(res));\n };\n if (Data_Boolean.otherwise) {\n return bind1(f(res)(unsafeIndex1(array)(i)))(function (res$prime) {\n return pure1(new Control_Monad_Rec_Class.Loop({\n a: res$prime,\n b: i + 1 | 0\n }));\n });\n };\n throw new Error(\"Failed pattern match at Data.Array (line 1349, column 3 - line 1353, column 42): \" + [ res.constructor.name, i.constructor.name ]);\n };\n };\n return tailRecM2(go)(b)(0);\n };\n };\n };\n};\nvar foldMap = function (dictMonoid) {\n return foldMap1(dictMonoid);\n};\nvar foldM = function (dictMonad) {\n var pure1 = Control_Applicative.pure(dictMonad.Applicative0());\n var bind1 = Control_Bind.bind(dictMonad.Bind1());\n return function (f) {\n return function (b) {\n return Data_Function_Uncurried.runFn3($foreign.unconsImpl)(function (v) {\n return pure1(b);\n })(function (a) {\n return function (as) {\n return bind1(f(b)(a))(function (b$prime) {\n return foldM(dictMonad)(f)(b$prime)(as);\n });\n };\n });\n };\n };\n};\nvar fold = function (dictMonoid) {\n return fold1(dictMonoid);\n};\nvar findMap = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn4($foreign.findMapImpl)(Data_Maybe.Nothing.value)(Data_Maybe.isJust);\n})();\nvar findLastIndex = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn4($foreign.findLastIndexImpl)(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar insertBy = function (cmp) {\n return function (x) {\n return function (ys) {\n var i = Data_Maybe.maybe(0)(function (v) {\n return v + 1 | 0;\n })(findLastIndex(function (y) {\n return eq1(cmp(x)(y))(Data_Ordering.GT.value);\n })(ys));\n return fromJust(insertAt(i)(x)(ys));\n };\n };\n};\nvar insert = function (dictOrd) {\n return insertBy(Data_Ord.compare(dictOrd));\n};\nvar findIndex = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn4($foreign.findIndexImpl)(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar find = function (f) {\n return function (xs) {\n return map(unsafeIndex1(xs))(findIndex(f)(xs));\n };\n};\nvar filter = /* #__PURE__ */ Data_Function_Uncurried.runFn2($foreign.filterImpl);\nvar intersectBy = function (eq2) {\n return function (xs) {\n return function (ys) {\n return filter(function (x) {\n return Data_Maybe.isJust(findIndex(eq2(x))(ys));\n })(xs);\n };\n };\n};\nvar intersect = function (dictEq) {\n return intersectBy(Data_Eq.eq(dictEq));\n};\nvar elemLastIndex = function (dictEq) {\n var eq2 = Data_Eq.eq(dictEq);\n return function (x) {\n return findLastIndex(function (v) {\n return eq2(v)(x);\n });\n };\n};\nvar elemIndex = function (dictEq) {\n var eq2 = Data_Eq.eq(dictEq);\n return function (x) {\n return findIndex(function (v) {\n return eq2(v)(x);\n });\n };\n};\nvar notElem = function (dictEq) {\n var elemIndex1 = elemIndex(dictEq);\n return function (a) {\n return function (arr) {\n return Data_Maybe.isNothing(elemIndex1(a)(arr));\n };\n };\n};\nvar elem = function (dictEq) {\n var elemIndex1 = elemIndex(dictEq);\n return function (a) {\n return function (arr) {\n return Data_Maybe.isJust(elemIndex1(a)(arr));\n };\n };\n};\nvar dropWhile = function (p) {\n return function (xs) {\n return (span(p)(xs)).rest;\n };\n};\nvar dropEnd = function (n) {\n return function (xs) {\n return take($foreign.length(xs) - n | 0)(xs);\n };\n};\nvar drop = function (n) {\n return function (xs) {\n var $173 = n < 1;\n if ($173) {\n return xs;\n };\n return slice(n)($foreign.length(xs))(xs);\n };\n};\nvar takeEnd = function (n) {\n return function (xs) {\n return drop($foreign.length(xs) - n | 0)(xs);\n };\n};\nvar deleteAt = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn4($foreign[\"_deleteAt\"])(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar deleteBy = function (v) {\n return function (v1) {\n return function (v2) {\n if (v2.length === 0) {\n return [ ];\n };\n return Data_Maybe.maybe(v2)(function (i) {\n return fromJust(deleteAt(i)(v2));\n })(findIndex(v(v1))(v2));\n };\n };\n};\nvar $$delete = function (dictEq) {\n return deleteBy(Data_Eq.eq(dictEq));\n};\nvar difference = function (dictEq) {\n return foldr($$delete(dictEq));\n};\nvar cons = function (x) {\n return function (xs) {\n return append([ x ])(xs);\n };\n};\nvar some = function (dictAlternative) {\n var apply1 = Control_Apply.apply((dictAlternative.Applicative0()).Apply0());\n var map3 = Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0());\n return function (dictLazy) {\n var defer = Control_Lazy.defer(dictLazy);\n return function (v) {\n return apply1(map3(cons)(v))(defer(function (v1) {\n return many(dictAlternative)(dictLazy)(v);\n }));\n };\n };\n};\nvar many = function (dictAlternative) {\n var alt = Control_Alt.alt((dictAlternative.Plus1()).Alt0());\n var pure1 = Control_Applicative.pure(dictAlternative.Applicative0());\n return function (dictLazy) {\n return function (v) {\n return alt(some(dictAlternative)(dictLazy)(v))(pure1([ ]));\n };\n };\n};\nvar concatMap = /* #__PURE__ */ Data_Function.flip(/* #__PURE__ */ Control_Bind.bind(Control_Bind.bindArray));\nvar mapMaybe = function (f) {\n return concatMap((function () {\n var $189 = Data_Maybe.maybe([ ])(singleton);\n return function ($190) {\n return $189(f($190));\n };\n })());\n};\nvar filterA = function (dictApplicative) {\n var traverse1 = traverse(dictApplicative);\n var map3 = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n return function (p) {\n var $191 = map3(mapMaybe(function (v) {\n if (v.value1) {\n return new Data_Maybe.Just(v.value0);\n };\n return Data_Maybe.Nothing.value;\n }));\n var $192 = traverse1(function (x) {\n return map3(Data_Tuple.Tuple.create(x))(p(x));\n });\n return function ($193) {\n return $191($192($193));\n };\n };\n};\nvar catMaybes = /* #__PURE__ */ mapMaybe(/* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn));\nvar any = /* #__PURE__ */ Data_Function_Uncurried.runFn2($foreign.anyImpl);\nvar nubByEq = function (eq2) {\n return function (xs) {\n return (function __do() {\n var arr = Data_Array_ST[\"new\"]();\n Control_Monad_ST_Internal.foreach(xs)(function (x) {\n return function __do() {\n var e = map2((function () {\n var $194 = any(function (v) {\n return eq2(v)(x);\n });\n return function ($195) {\n return !$194($195);\n };\n })())(Data_Array_ST.unsafeFreeze(arr))();\n return when(e)($$void(Data_Array_ST.push(x)(arr)))();\n };\n })();\n return Data_Array_ST.unsafeFreeze(arr)();\n })();\n };\n};\nvar nubEq = function (dictEq) {\n return nubByEq(Data_Eq.eq(dictEq));\n};\nvar unionBy = function (eq2) {\n return function (xs) {\n return function (ys) {\n return append(xs)(foldl(Data_Function.flip(deleteBy(eq2)))(nubByEq(eq2)(ys))(xs));\n };\n };\n};\nvar union = function (dictEq) {\n return unionBy(Data_Eq.eq(dictEq));\n};\nvar alterAt = function (i) {\n return function (f) {\n return function (xs) {\n var go = function (x) {\n var v = f(x);\n if (v instanceof Data_Maybe.Nothing) {\n return deleteAt(i)(xs);\n };\n if (v instanceof Data_Maybe.Just) {\n return updateAt(i)(v.value0)(xs);\n };\n throw new Error(\"Failed pattern match at Data.Array (line 601, column 10 - line 603, column 32): \" + [ v.constructor.name ]);\n };\n return Data_Maybe.maybe(Data_Maybe.Nothing.value)(go)(index(xs)(i));\n };\n };\n};\nvar all = /* #__PURE__ */ Data_Function_Uncurried.runFn2($foreign.allImpl);\nexport {\n length,\n reverse,\n concat\n} from \"./foreign.js\";\nexport {\n fromFoldable,\n toUnfoldable,\n singleton,\n range,\n replicate,\n some,\n many,\n $$null as null,\n cons,\n snoc,\n insert,\n insertBy,\n head,\n last,\n tail,\n init,\n uncons,\n unsnoc,\n index,\n elem,\n notElem,\n elemIndex,\n elemLastIndex,\n find,\n findMap,\n findIndex,\n findLastIndex,\n insertAt,\n deleteAt,\n updateAt,\n updateAtIndices,\n modifyAt,\n modifyAtIndices,\n alterAt,\n intersperse,\n concatMap,\n filter,\n partition,\n splitAt,\n filterA,\n mapMaybe,\n catMaybes,\n mapWithIndex,\n foldl,\n foldr,\n foldMap,\n fold,\n intercalate,\n transpose,\n scanl,\n scanr,\n sort,\n sortBy,\n sortWith,\n slice,\n take,\n takeEnd,\n takeWhile,\n drop,\n dropEnd,\n dropWhile,\n span,\n group,\n groupAll,\n groupBy,\n groupAllBy,\n nub,\n nubEq,\n nubBy,\n nubByEq,\n union,\n unionBy,\n $$delete as delete,\n deleteBy,\n difference,\n intersect,\n intersectBy,\n zipWith,\n zipWithA,\n zip,\n unzip,\n any,\n all,\n foldM,\n foldRecM,\n unsafeIndex\n};\n", "const newImpl = function () {\n return {};\n};\nexport { newImpl as new };\n\nexport function peekImpl(just) {\n return function (nothing) {\n return function (k) {\n return function (m) {\n return function () {\n return {}.hasOwnProperty.call(m, k) ? just(m[k]) : nothing;\n };\n };\n };\n };\n}\n\nexport function poke(k) {\n return function (v) {\n return function (m) {\n return function () {\n m[k] = v;\n return m;\n };\n };\n };\n}\n\nconst deleteImpl = function (k) {\n return function (m) {\n return function () {\n delete m[k];\n return m;\n };\n };\n};\nexport { deleteImpl as delete };\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Monad_ST_Internal from \"../Control.Monad.ST.Internal/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_FoldableWithIndex from \"../Data.FoldableWithIndex/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Function_Uncurried from \"../Data.Function.Uncurried/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_TraversableWithIndex from \"../Data.TraversableWithIndex/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nimport * as Foreign_Object_ST from \"../Foreign.Object.ST/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar sortWith = /* #__PURE__ */ Data_Array.sortWith(Data_Ord.ordString);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Control_Monad_ST_Internal.bindST);\nvar showTuple = /* #__PURE__ */ Data_Tuple.showTuple(Data_Show.showString);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Control_Monad_ST_Internal.applicativeST);\nvar forWithIndex_ = /* #__PURE__ */ Data_FoldableWithIndex.forWithIndex_(Control_Monad_ST_Internal.applicativeST);\nvar for_ = /* #__PURE__ */ Data_Foldable.for_(Control_Monad_ST_Internal.applicativeST);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Control_Monad_ST_Internal.functorST);\nvar foldr = /* #__PURE__ */ Data_Foldable.foldr(Data_Foldable.foldableArray);\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar ordTuple = /* #__PURE__ */ Data_Tuple.ordTuple(Data_Ord.ordString);\nvar mapFlipped = /* #__PURE__ */ Data_Functor.mapFlipped(Data_Maybe.functorMaybe);\nvar values = /* #__PURE__ */ $foreign.toArrayWithKey(function (v) {\n return function (v1) {\n return v1;\n };\n});\nvar toUnfoldable = function (dictUnfoldable) {\n var $89 = Data_Array.toUnfoldable(dictUnfoldable);\n var $90 = $foreign.toArrayWithKey(Data_Tuple.Tuple.create);\n return function ($91) {\n return $89($90($91));\n };\n};\nvar toAscUnfoldable = function (dictUnfoldable) {\n var $92 = Data_Array.toUnfoldable(dictUnfoldable);\n var $93 = sortWith(Data_Tuple.fst);\n var $94 = $foreign.toArrayWithKey(Data_Tuple.Tuple.create);\n return function ($95) {\n return $92($93($94($95)));\n };\n};\nvar toAscArray = /* #__PURE__ */ toAscUnfoldable(Data_Unfoldable.unfoldableArray);\nvar toArray = /* #__PURE__ */ (function () {\n return $foreign.toArrayWithKey(Data_Tuple.Tuple.create);\n})();\nvar thawST = $foreign[\"_copyST\"];\nvar singleton = function (k) {\n return function (v) {\n return $foreign.runST(bindFlipped(Foreign_Object_ST.poke(k)(v))(Foreign_Object_ST[\"new\"]));\n };\n};\nvar showObject = function (dictShow) {\n var show = Data_Show.show(Data_Show.showArray(showTuple(dictShow)));\n return {\n show: function (m) {\n return \"(fromFoldable \" + (show(toArray(m)) + \")\");\n }\n };\n};\nvar mutate = function (f) {\n return function (m) {\n return $foreign.runST(function __do() {\n var s = thawST(m)();\n f(s)();\n return s;\n });\n };\n};\nvar member = /* #__PURE__ */ Data_Function_Uncurried.runFn4($foreign[\"_lookup\"])(false)(/* #__PURE__ */ Data_Function[\"const\"](true));\nvar mapWithKey = function (f) {\n return function (m) {\n return $foreign[\"_mapWithKey\"](m, f);\n };\n};\nvar lookup = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn4($foreign[\"_lookup\"])(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);\n})();\nvar isSubmap = function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n return function (m1) {\n return function (m2) {\n var f = function (k) {\n return function (v) {\n return $foreign[\"_lookup\"](false, eq(v), k, m2);\n };\n };\n return $foreign.all(f)(m1);\n };\n };\n};\nvar isEmpty = /* #__PURE__ */ $foreign.all(function (v) {\n return function (v1) {\n return false;\n };\n});\nvar insert = function (k) {\n return function (v) {\n return mutate(Foreign_Object_ST.poke(k)(v));\n };\n};\nvar functorObject = {\n map: function (f) {\n return function (m) {\n return $foreign[\"_fmapObject\"](m, f);\n };\n }\n};\nvar functorWithIndexObject = {\n mapWithIndex: mapWithKey,\n Functor0: function () {\n return functorObject;\n }\n};\nvar fromHomogeneous = function () {\n return Unsafe_Coerce.unsafeCoerce;\n};\nvar fromFoldableWithIndex = function (dictFoldableWithIndex) {\n var forWithIndex_1 = forWithIndex_(dictFoldableWithIndex);\n return function (l) {\n return $foreign.runST(function __do() {\n var s = Foreign_Object_ST[\"new\"]();\n forWithIndex_1(l)(function (k) {\n return function (v) {\n return Foreign_Object_ST.poke(k)(v)(s);\n };\n })();\n return s;\n });\n };\n};\nvar fromFoldableWith = function (dictFoldable) {\n var for_1 = for_(dictFoldable);\n return function (f) {\n return function (l) {\n return $foreign.runST(function __do() {\n var s = Foreign_Object_ST[\"new\"]();\n for_1(l)(function (v) {\n return function __do() {\n var v$prime = $foreign[\"_lookupST\"](v.value1, f(v.value1), v.value0, s)();\n return Foreign_Object_ST.poke(v.value0)(v$prime)(s)();\n };\n })();\n return s;\n });\n };\n };\n};\nvar fromFoldable = function (dictFoldable) {\n var fromFoldable1 = Data_Array.fromFoldable(dictFoldable);\n return function (l) {\n return $foreign.runST(function __do() {\n var s = Foreign_Object_ST[\"new\"]();\n Control_Monad_ST_Internal.foreach(fromFoldable1(l))(function (v) {\n return $$void(Foreign_Object_ST.poke(v.value0)(v.value1)(s));\n })();\n return s;\n });\n };\n};\nvar freezeST = $foreign[\"_copyST\"];\nvar foldMaybe = function (f) {\n return function (z) {\n return function (m) {\n return $foreign[\"_foldSCObject\"](m, z, f, Data_Maybe.fromMaybe);\n };\n };\n};\nvar foldM = function (dictMonad) {\n var bind1 = Control_Bind.bind(dictMonad.Bind1());\n var pure1 = Control_Applicative.pure(dictMonad.Applicative0());\n return function (f) {\n return function (z) {\n return $foreign[\"_foldM\"](bind1)(f)(pure1(z));\n };\n };\n};\nvar foldM1 = /* #__PURE__ */ foldM(Control_Monad_ST_Internal.monadST);\nvar union = function (m) {\n return mutate(function (s) {\n return foldM1(function (s$prime) {\n return function (k) {\n return function (v) {\n return Foreign_Object_ST.poke(k)(v)(s$prime);\n };\n };\n })(s)(m);\n });\n};\nvar unions = function (dictFoldable) {\n return Data_Foldable.foldl(dictFoldable)(union)($foreign.empty);\n};\nvar unionWith = function (f) {\n return function (m1) {\n return function (m2) {\n return mutate(function (s1) {\n return foldM1(function (s2) {\n return function (k) {\n return function (v1) {\n return Foreign_Object_ST.poke(k)($foreign[\"_lookup\"](v1, function (v2) {\n return f(v1)(v2);\n }, k, m2))(s2);\n };\n };\n })(s1)(m1);\n })(m2);\n };\n };\n};\nvar semigroupObject = function (dictSemigroup) {\n return {\n append: unionWith(Data_Semigroup.append(dictSemigroup))\n };\n};\nvar monoidObject = function (dictSemigroup) {\n var semigroupObject1 = semigroupObject(dictSemigroup);\n return {\n mempty: $foreign.empty,\n Semigroup0: function () {\n return semigroupObject1;\n }\n };\n};\nvar fold = /* #__PURE__ */ $foreign[\"_foldM\"](Data_Function.applyFlipped);\nvar foldMap = function (dictMonoid) {\n var append1 = Data_Semigroup.append(dictMonoid.Semigroup0());\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (f) {\n return fold(function (acc) {\n return function (k) {\n return function (v) {\n return append1(acc)(f(k)(v));\n };\n };\n })(mempty);\n };\n};\nvar foldableObject = {\n foldl: function (f) {\n return fold(function (z) {\n return function (v) {\n return f(z);\n };\n });\n },\n foldr: function (f) {\n return function (z) {\n return function (m) {\n return foldr(f)(z)(values(m));\n };\n };\n },\n foldMap: function (dictMonoid) {\n var foldMap1 = foldMap(dictMonoid);\n return function (f) {\n return foldMap1(Data_Function[\"const\"](f));\n };\n }\n};\nvar foldableWithIndexObject = {\n foldlWithIndex: function (f) {\n return fold(Data_Function.flip(f));\n },\n foldrWithIndex: function (f) {\n return function (z) {\n return function (m) {\n return foldr(Data_Tuple.uncurry(f))(z)($foreign.toArrayWithKey(Data_Tuple.Tuple.create)(m));\n };\n };\n },\n foldMapWithIndex: function (dictMonoid) {\n return foldMap(dictMonoid);\n },\n Foldable0: function () {\n return foldableObject;\n }\n};\nvar traversableWithIndexObject = {\n traverseWithIndex: function (dictApplicative) {\n var Apply0 = dictApplicative.Apply0();\n var apply = Control_Apply.apply(Apply0);\n var map = Data_Functor.map(Apply0.Functor0());\n var pure1 = Control_Applicative.pure(dictApplicative);\n return function (f) {\n return function (ms) {\n return fold(function (acc) {\n return function (k) {\n return function (v) {\n return apply(map(Data_Function.flip(insert(k)))(acc))(f(k)(v));\n };\n };\n })(pure1($foreign.empty))(ms);\n };\n };\n },\n FunctorWithIndex0: function () {\n return functorWithIndexObject;\n },\n FoldableWithIndex1: function () {\n return foldableWithIndexObject;\n },\n Traversable2: function () {\n return traversableObject;\n }\n};\nvar traversableObject = {\n traverse: function (dictApplicative) {\n var $96 = Data_TraversableWithIndex.traverseWithIndex(traversableWithIndexObject)(dictApplicative);\n return function ($97) {\n return $96(Data_Function[\"const\"]($97));\n };\n },\n sequence: function (dictApplicative) {\n return Data_Traversable.traverse(traversableObject)(dictApplicative)(identity);\n },\n Functor0: function () {\n return functorObject;\n },\n Foldable1: function () {\n return foldableObject;\n }\n};\nvar filterWithKey = function (predicate) {\n return function (m) {\n var go = (function () {\n var step = function (acc) {\n return function (k) {\n return function (v) {\n var $86 = predicate(k)(v);\n if ($86) {\n return Foreign_Object_ST.poke(k)(v)(acc);\n };\n return pure(acc);\n };\n };\n };\n return function __do() {\n var m$prime = Foreign_Object_ST[\"new\"]();\n return foldM1(step)(m$prime)(m)();\n };\n })();\n return $foreign.runST(go);\n };\n};\nvar filterKeys = function (predicate) {\n return filterWithKey(function ($98) {\n return Data_Function[\"const\"](predicate($98));\n });\n};\nvar filter = function (predicate) {\n return filterWithKey(Data_Function[\"const\"](predicate));\n};\nvar eqObject = function (dictEq) {\n var isSubmap1 = isSubmap(dictEq);\n return {\n eq: function (m1) {\n return function (m2) {\n return isSubmap1(m1)(m2) && isSubmap1(m2)(m1);\n };\n }\n };\n};\nvar ordObject = function (dictOrd) {\n var compare = Data_Ord.compare(Data_Ord.ordArray(ordTuple(dictOrd)));\n var eqObject1 = eqObject(dictOrd.Eq0());\n return {\n compare: function (m1) {\n return function (m2) {\n return compare(toAscArray(m1))(toAscArray(m2));\n };\n },\n Eq0: function () {\n return eqObject1;\n }\n };\n};\nvar eq1Object = {\n eq1: function (dictEq) {\n return Data_Eq.eq(eqObject(dictEq));\n }\n};\nvar $$delete = function (k) {\n return mutate(Foreign_Object_ST[\"delete\"](k));\n};\nvar pop = function (k) {\n return function (m) {\n return mapFlipped(lookup(k)(m))(function (a) {\n return new Data_Tuple.Tuple(a, $$delete(k)(m));\n });\n };\n};\nvar alter = function (f) {\n return function (k) {\n return function (m) {\n var v = f(lookup(k)(m));\n if (v instanceof Data_Maybe.Nothing) {\n return $$delete(k)(m);\n };\n if (v instanceof Data_Maybe.Just) {\n return insert(k)(v.value0)(m);\n };\n throw new Error(\"Failed pattern match at Foreign.Object (line 210, column 15 - line 212, column 25): \" + [ v.constructor.name ]);\n };\n };\n};\nvar update = function (f) {\n return function (k) {\n return function (m) {\n return alter(Data_Maybe.maybe(Data_Maybe.Nothing.value)(f))(k)(m);\n };\n };\n};\nexport {\n empty,\n size,\n keys,\n all,\n runST,\n toArrayWithKey\n} from \"./foreign.js\";\nexport {\n isEmpty,\n singleton,\n insert,\n lookup,\n toUnfoldable,\n toAscUnfoldable,\n fromFoldable,\n fromFoldableWith,\n fromFoldableWithIndex,\n fromHomogeneous,\n $$delete as delete,\n pop,\n member,\n alter,\n update,\n mapWithKey,\n filterWithKey,\n filterKeys,\n filter,\n values,\n union,\n unionWith,\n unions,\n isSubmap,\n fold,\n foldMap,\n foldM,\n foldMaybe,\n thawST,\n freezeST,\n functorObject,\n functorWithIndexObject,\n foldableObject,\n foldableWithIndexObject,\n traversableObject,\n traversableWithIndexObject,\n eqObject,\n eq1Object,\n ordObject,\n showObject,\n semigroupObject,\n monoidObject\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Foreign_Object from \"../Foreign.Object/index.js\";\nvar eq = /* #__PURE__ */ Data_Eq.eq(Data_Ordering.eqOrdering);\nvar verbJsonType = function (def) {\n return function (f) {\n return function (g) {\n return g(def)(f);\n };\n };\n};\nvar toJsonType = /* #__PURE__ */ (function () {\n return verbJsonType(Data_Maybe.Nothing.value)(Data_Maybe.Just.create);\n})();\nvar jsonZero = /* #__PURE__ */ $foreign.fromNumber(0.0);\nvar jsonTrue = /* #__PURE__ */ $foreign.fromBoolean(true);\nvar jsonSingletonObject = function (key) {\n return function (val) {\n return $foreign.fromObject(Foreign_Object.singleton(key)(val));\n };\n};\nvar jsonSingletonArray = function (j) {\n return $foreign.fromArray([ j ]);\n};\nvar jsonFalse = /* #__PURE__ */ $foreign.fromBoolean(false);\nvar jsonEmptyString = /* #__PURE__ */ $foreign.fromString(\"\");\nvar jsonEmptyObject = /* #__PURE__ */ $foreign.fromObject(Foreign_Object.empty);\nvar jsonEmptyArray = /* #__PURE__ */ $foreign.fromArray([ ]);\nvar isJsonType = /* #__PURE__ */ verbJsonType(false)(/* #__PURE__ */ Data_Function[\"const\"](true));\nvar ordJson = {\n compare: function (a) {\n return function (b) {\n return $foreign[\"_compare\"](Data_Ordering.EQ.value, Data_Ordering.GT.value, Data_Ordering.LT.value, a, b);\n };\n },\n Eq0: function () {\n return eqJson;\n }\n};\nvar eqJson = {\n eq: function (j1) {\n return function (j2) {\n return eq(Data_Ord.compare(ordJson)(j1)(j2))(Data_Ordering.EQ.value);\n };\n }\n};\nvar eqJNull = {\n eq: function (v) {\n return function (v1) {\n return true;\n };\n }\n};\nvar ordJNull = {\n compare: function (v) {\n return function (v1) {\n return Data_Ordering.EQ.value;\n };\n },\n Eq0: function () {\n return eqJNull;\n }\n};\nvar caseJsonString = function (d) {\n return function (f) {\n return function (j) {\n return $foreign[\"_caseJson\"](Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), f, Data_Function[\"const\"](d), Data_Function[\"const\"](d), j);\n };\n };\n};\nvar isString = /* #__PURE__ */ isJsonType(caseJsonString);\nvar toString = /* #__PURE__ */ toJsonType(caseJsonString);\nvar caseJsonObject = function (d) {\n return function (f) {\n return function (j) {\n return $foreign[\"_caseJson\"](Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), f, j);\n };\n };\n};\nvar isObject = /* #__PURE__ */ isJsonType(caseJsonObject);\nvar toObject = /* #__PURE__ */ toJsonType(caseJsonObject);\nvar caseJsonNumber = function (d) {\n return function (f) {\n return function (j) {\n return $foreign[\"_caseJson\"](Data_Function[\"const\"](d), Data_Function[\"const\"](d), f, Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), j);\n };\n };\n};\nvar isNumber = /* #__PURE__ */ isJsonType(caseJsonNumber);\nvar toNumber = /* #__PURE__ */ toJsonType(caseJsonNumber);\nvar caseJsonNull = function (d) {\n return function (f) {\n return function (j) {\n return $foreign[\"_caseJson\"](f, Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), j);\n };\n };\n};\nvar isNull = /* #__PURE__ */ isJsonType(caseJsonNull);\nvar toNull = /* #__PURE__ */ toJsonType(caseJsonNull);\nvar caseJsonBoolean = function (d) {\n return function (f) {\n return function (j) {\n return $foreign[\"_caseJson\"](Data_Function[\"const\"](d), f, Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), j);\n };\n };\n};\nvar isBoolean = /* #__PURE__ */ isJsonType(caseJsonBoolean);\nvar toBoolean = /* #__PURE__ */ toJsonType(caseJsonBoolean);\nvar caseJsonArray = function (d) {\n return function (f) {\n return function (j) {\n return $foreign[\"_caseJson\"](Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), Data_Function[\"const\"](d), f, Data_Function[\"const\"](d), j);\n };\n };\n};\nvar isArray = /* #__PURE__ */ isJsonType(caseJsonArray);\nvar toArray = /* #__PURE__ */ toJsonType(caseJsonArray);\nvar caseJson = function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return function (json) {\n return $foreign[\"_caseJson\"](a, b, c, d, e, f, json);\n };\n };\n };\n };\n };\n };\n};\nexport {\n fromBoolean,\n fromNumber,\n fromString,\n fromArray,\n fromObject,\n jsonNull,\n stringify,\n stringifyWithIndent\n} from \"./foreign.js\";\nexport {\n caseJson,\n caseJsonNull,\n caseJsonBoolean,\n caseJsonNumber,\n caseJsonString,\n caseJsonArray,\n caseJsonObject,\n isNull,\n isBoolean,\n isNumber,\n isString,\n isArray,\n isObject,\n toNull,\n toBoolean,\n toNumber,\n toString,\n toArray,\n toObject,\n jsonTrue,\n jsonFalse,\n jsonZero,\n jsonEmptyString,\n jsonEmptyArray,\n jsonSingletonArray,\n jsonEmptyObject,\n jsonSingletonObject,\n eqJson,\n ordJson\n};\n", "export function _jsonParser(fail, succ, s) {\n try {\n return succ(JSON.parse(s));\n }\n catch (e) {\n return fail(e.message);\n }\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nvar jsonParser = function (j) {\n return $foreign[\"_jsonParser\"](Data_Either.Left.create, Data_Either.Right.create, j);\n};\nexport {\n jsonParser\n};\n", "export const _localeCompare = function (lt) {\n return function (eq) {\n return function (gt) {\n return function (s1) {\n return function (s2) {\n var result = s1.localeCompare(s2);\n return result < 0 ? lt : result > 0 ? gt : eq;\n };\n };\n };\n };\n};\n\nexport const replace = function (s1) {\n return function (s2) {\n return function (s3) {\n return s3.replace(s1, s2);\n };\n };\n};\n\nexport const replaceAll = function (s1) {\n return function (s2) {\n return function (s3) {\n return s3.replace(new RegExp(s1.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\"), \"g\"), s2); // eslint-disable-line no-useless-escape\n };\n };\n};\n\nexport const split = function (sep) {\n return function (s) {\n return s.split(sep);\n };\n};\n\nexport const toLower = function (s) {\n return s.toLowerCase();\n};\n\nexport const toUpper = function (s) {\n return s.toUpperCase();\n};\n\nexport const trim = function (s) {\n return s.trim();\n};\n\nexport const joinWith = function (s) {\n return function (xs) {\n return xs.join(s);\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nvar $$null = function (s) {\n return s === \"\";\n};\nvar localeCompare = /* #__PURE__ */ (function () {\n return $foreign[\"_localeCompare\"](Data_Ordering.LT.value)(Data_Ordering.EQ.value)(Data_Ordering.GT.value);\n})();\nexport {\n replace,\n replaceAll,\n split,\n toLower,\n toUpper,\n trim,\n joinWith\n} from \"./foreign.js\";\nexport {\n $$null as null,\n localeCompare\n};\n", "// A helper which transforms the result of encodeURIComponent to be compliant\n// with RFC3986, as described in the MDN documentation here:\n//\n// https://web.archive.org/web/20201206001047/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\nfunction encodeURIComponent_to_RFC3986(input) {\n return input.replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16);\n });\n}\n\n// A helper which transforms the result of encodeURI to be compliant\n// with RFC3986, as described in the MDN documentation here:\n//\n// https://web.archive.org/web/20210117175449/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI#encoding_for_ipv6\nfunction encodeURI_to_RFC3986(input) {\n return input.replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n}\n\nexport function _encodeURIComponent(fail, succeed, input) {\n try {\n return succeed(encodeURIComponent_to_RFC3986(encodeURIComponent(input)));\n } catch (err) {\n return fail(err);\n }\n}\n\nexport function _encodeFormURLComponent(fail, succeed, input) {\n try {\n return succeed(encodeURIComponent_to_RFC3986(encodeURIComponent(input)).replace(/%20/g, \"+\"));\n } catch (err) {\n return fail(err);\n }\n}\n\nexport function _decodeURIComponent(fail, succeed, input) {\n try {\n return succeed(decodeURIComponent(input));\n } catch (err) {\n return fail(err);\n }\n}\n\nexport function _decodeFormURLComponent(fail, succeed, input) {\n return _decodeURIComponent(fail, succeed, input.replace(/\\+/g, \" \"));\n}\n\nexport function _encodeURI(fail, succeed, input) {\n try {\n return succeed(encodeURI_to_RFC3986(encodeURI(input)));\n } catch (err) {\n return fail(err);\n }\n}\n\nexport function _decodeURI(fail, succeed, input) {\n try {\n return succeed(decodeURI(input));\n } catch (err) {\n return fail(err);\n }\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Function_Uncurried from \"../Data.Function.Uncurried/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nvar $$encodeURIComponent = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn3($foreign[\"_encodeURIComponent\"])(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n})();\nvar $$encodeURI = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn3($foreign[\"_encodeURI\"])(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n})();\nvar encodeFormURLComponent = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn3($foreign[\"_encodeFormURLComponent\"])(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n})();\nvar $$decodeURIComponent = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn3($foreign[\"_decodeURIComponent\"])(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n})();\nvar $$decodeURI = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn3($foreign[\"_decodeURI\"])(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n})();\nvar decodeFormURLComponent = /* #__PURE__ */ (function () {\n return Data_Function_Uncurried.runFn3($foreign[\"_decodeFormURLComponent\"])(Data_Function[\"const\"](Data_Maybe.Nothing.value))(Data_Maybe.Just.create);\n})();\nexport {\n $$encodeURIComponent as encodeURIComponent,\n encodeFormURLComponent,\n $$encodeURI as encodeURI,\n $$decodeURIComponent as decodeURIComponent,\n decodeFormURLComponent,\n $$decodeURI as decodeURI\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as JSURI from \"../JSURI/index.js\";\nvar show = /* #__PURE__ */ Data_Show.show(/* #__PURE__ */ Data_Show.showArray(/* #__PURE__ */ Data_Tuple.showTuple(Data_Show.showString)(/* #__PURE__ */ Data_Maybe.showMaybe(Data_Show.showString))));\nvar apply = /* #__PURE__ */ Control_Apply.apply(Data_Maybe.applyMaybe);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar traverse = /* #__PURE__ */ Data_Traversable.traverse(Data_Traversable.traversableArray)(Data_Maybe.applicativeMaybe);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Data_Maybe.applicativeMaybe);\nvar FormURLEncoded = function (x) {\n return x;\n};\nvar toArray = function (v) {\n return v;\n};\nvar showFormUrlEncoded = {\n show: function (v) {\n return \"(FormURLEncoded \" + (show(v) + \")\");\n }\n};\nvar semigroupFormUrlEncoded = Data_Semigroup.semigroupArray;\nvar ordFormUrlEncoded = /* #__PURE__ */ Data_Ord.ordArray(/* #__PURE__ */ Data_Tuple.ordTuple(Data_Ord.ordString)(/* #__PURE__ */ Data_Maybe.ordMaybe(Data_Ord.ordString)));\nvar newtypeFormUrlEncoded = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar monoidFormUrlEncoded = Data_Monoid.monoidArray;\nvar fromArray = FormURLEncoded;\nvar eqFormUrlEncoded = /* #__PURE__ */ Data_Eq.eqArray(/* #__PURE__ */ Data_Tuple.eqTuple(Data_Eq.eqString)(/* #__PURE__ */ Data_Maybe.eqMaybe(Data_Eq.eqString)));\nvar encode = /* #__PURE__ */ (function () {\n var encodePart = function (v) {\n if (v.value1 instanceof Data_Maybe.Nothing) {\n return JSURI.encodeFormURLComponent(v.value0);\n };\n if (v.value1 instanceof Data_Maybe.Just) {\n return apply(map(function (key) {\n return function (val) {\n return key + (\"=\" + val);\n };\n })(JSURI.encodeFormURLComponent(v.value0)))(JSURI.encodeFormURLComponent(v.value1.value0));\n };\n throw new Error(\"Failed pattern match at Data.FormURLEncoded (line 37, column 16 - line 39, column 114): \" + [ v.constructor.name ]);\n };\n var $37 = map(Data_String_Common.joinWith(\"&\"));\n var $38 = traverse(encodePart);\n return function ($39) {\n return $37($38(toArray($39)));\n };\n})();\nvar decode = /* #__PURE__ */ (function () {\n var decodePart = (function () {\n var $40 = Data_String_Common.split(\"=\");\n return function ($41) {\n return (function (v) {\n if (v.length === 2) {\n return apply(map(function (key) {\n return function (val) {\n return new Data_Tuple.Tuple(key, new Data_Maybe.Just(val));\n };\n })(JSURI.decodeFormURLComponent(v[0])))(JSURI.decodeFormURLComponent(v[1]));\n };\n if (v.length === 1) {\n return apply(map(Data_Tuple.Tuple.create)(JSURI.decodeFormURLComponent(v[0])))(pure(Data_Maybe.Nothing.value));\n };\n return Data_Maybe.Nothing.value;\n })($40($41));\n };\n })();\n var $42 = map(FormURLEncoded);\n var $43 = traverse(decodePart);\n var $44 = Data_String_Common.split(\"&\");\n return function ($45) {\n return $42($43($44($45)));\n };\n})();\nexport {\n FormURLEncoded,\n fromArray,\n toArray,\n encode,\n decode,\n newtypeFormUrlEncoded,\n eqFormUrlEncoded,\n ordFormUrlEncoded,\n semigroupFormUrlEncoded,\n monoidFormUrlEncoded,\n showFormUrlEncoded\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showString);\nvar compare = /* #__PURE__ */ Data_Ord.compare(Data_Ord.ordString);\nvar OPTIONS = /* #__PURE__ */ (function () {\n function OPTIONS() {\n\n };\n OPTIONS.value = new OPTIONS();\n return OPTIONS;\n})();\nvar GET = /* #__PURE__ */ (function () {\n function GET() {\n\n };\n GET.value = new GET();\n return GET;\n})();\nvar HEAD = /* #__PURE__ */ (function () {\n function HEAD() {\n\n };\n HEAD.value = new HEAD();\n return HEAD;\n})();\nvar POST = /* #__PURE__ */ (function () {\n function POST() {\n\n };\n POST.value = new POST();\n return POST;\n})();\nvar PUT = /* #__PURE__ */ (function () {\n function PUT() {\n\n };\n PUT.value = new PUT();\n return PUT;\n})();\nvar DELETE = /* #__PURE__ */ (function () {\n function DELETE() {\n\n };\n DELETE.value = new DELETE();\n return DELETE;\n})();\nvar TRACE = /* #__PURE__ */ (function () {\n function TRACE() {\n\n };\n TRACE.value = new TRACE();\n return TRACE;\n})();\nvar CONNECT = /* #__PURE__ */ (function () {\n function CONNECT() {\n\n };\n CONNECT.value = new CONNECT();\n return CONNECT;\n})();\nvar PROPFIND = /* #__PURE__ */ (function () {\n function PROPFIND() {\n\n };\n PROPFIND.value = new PROPFIND();\n return PROPFIND;\n})();\nvar PROPPATCH = /* #__PURE__ */ (function () {\n function PROPPATCH() {\n\n };\n PROPPATCH.value = new PROPPATCH();\n return PROPPATCH;\n})();\nvar MKCOL = /* #__PURE__ */ (function () {\n function MKCOL() {\n\n };\n MKCOL.value = new MKCOL();\n return MKCOL;\n})();\nvar COPY = /* #__PURE__ */ (function () {\n function COPY() {\n\n };\n COPY.value = new COPY();\n return COPY;\n})();\nvar MOVE = /* #__PURE__ */ (function () {\n function MOVE() {\n\n };\n MOVE.value = new MOVE();\n return MOVE;\n})();\nvar LOCK = /* #__PURE__ */ (function () {\n function LOCK() {\n\n };\n LOCK.value = new LOCK();\n return LOCK;\n})();\nvar UNLOCK = /* #__PURE__ */ (function () {\n function UNLOCK() {\n\n };\n UNLOCK.value = new UNLOCK();\n return UNLOCK;\n})();\nvar PATCH = /* #__PURE__ */ (function () {\n function PATCH() {\n\n };\n PATCH.value = new PATCH();\n return PATCH;\n})();\nvar CustomMethod = function (x) {\n return x;\n};\nvar unCustomMethod = function (v) {\n return v;\n};\nvar showMethod = {\n show: function (v) {\n if (v instanceof OPTIONS) {\n return \"OPTIONS\";\n };\n if (v instanceof GET) {\n return \"GET\";\n };\n if (v instanceof HEAD) {\n return \"HEAD\";\n };\n if (v instanceof POST) {\n return \"POST\";\n };\n if (v instanceof PUT) {\n return \"PUT\";\n };\n if (v instanceof DELETE) {\n return \"DELETE\";\n };\n if (v instanceof TRACE) {\n return \"TRACE\";\n };\n if (v instanceof CONNECT) {\n return \"CONNECT\";\n };\n if (v instanceof PROPFIND) {\n return \"PROPFIND\";\n };\n if (v instanceof PROPPATCH) {\n return \"PROPPATCH\";\n };\n if (v instanceof MKCOL) {\n return \"MKCOL\";\n };\n if (v instanceof COPY) {\n return \"COPY\";\n };\n if (v instanceof MOVE) {\n return \"MOVE\";\n };\n if (v instanceof LOCK) {\n return \"LOCK\";\n };\n if (v instanceof UNLOCK) {\n return \"UNLOCK\";\n };\n if (v instanceof PATCH) {\n return \"PATCH\";\n };\n throw new Error(\"Failed pattern match at Data.HTTP.Method (line 43, column 1 - line 59, column 23): \" + [ v.constructor.name ]);\n }\n};\nvar showCustomMethod = {\n show: function (v) {\n return \"(CustomMethod \" + (show(v) + \")\");\n }\n};\nvar print = /* #__PURE__ */ Data_Either.either(/* #__PURE__ */ Data_Show.show(showMethod))(unCustomMethod);\nvar parse = function (handleMethod) {\n return function (handleUnknown) {\n return function (s) {\n var v = Data_String_Common.toUpper(s);\n if (v === \"OPTIONS\") {\n return handleMethod(OPTIONS.value);\n };\n if (v === \"GET\") {\n return handleMethod(GET.value);\n };\n if (v === \"HEAD\") {\n return handleMethod(HEAD.value);\n };\n if (v === \"POST\") {\n return handleMethod(POST.value);\n };\n if (v === \"PUT\") {\n return handleMethod(PUT.value);\n };\n if (v === \"DELETE\") {\n return handleMethod(DELETE.value);\n };\n if (v === \"TRACE\") {\n return handleMethod(TRACE.value);\n };\n if (v === \"CONNECT\") {\n return handleMethod(CONNECT.value);\n };\n if (v === \"PROPFIND\") {\n return handleMethod(PROPFIND.value);\n };\n if (v === \"PROPPATCH\") {\n return handleMethod(PROPPATCH.value);\n };\n if (v === \"MKCOL\") {\n return handleMethod(MKCOL.value);\n };\n if (v === \"COPY\") {\n return handleMethod(COPY.value);\n };\n if (v === \"MOVE\") {\n return handleMethod(MOVE.value);\n };\n if (v === \"LOCK\") {\n return handleMethod(LOCK.value);\n };\n if (v === \"UNLOCK\") {\n return handleMethod(UNLOCK.value);\n };\n if (v === \"PATCH\") {\n return handleMethod(PATCH.value);\n };\n return handleUnknown(v);\n };\n };\n};\nvar fromString = /* #__PURE__ */ (function () {\n return parse(Data_Either.Left.create)(function ($34) {\n return Data_Either.Right.create(CustomMethod($34));\n });\n})();\nvar eqMethod = {\n eq: function (x) {\n return function (y) {\n if (x instanceof OPTIONS && y instanceof OPTIONS) {\n return true;\n };\n if (x instanceof GET && y instanceof GET) {\n return true;\n };\n if (x instanceof HEAD && y instanceof HEAD) {\n return true;\n };\n if (x instanceof POST && y instanceof POST) {\n return true;\n };\n if (x instanceof PUT && y instanceof PUT) {\n return true;\n };\n if (x instanceof DELETE && y instanceof DELETE) {\n return true;\n };\n if (x instanceof TRACE && y instanceof TRACE) {\n return true;\n };\n if (x instanceof CONNECT && y instanceof CONNECT) {\n return true;\n };\n if (x instanceof PROPFIND && y instanceof PROPFIND) {\n return true;\n };\n if (x instanceof PROPPATCH && y instanceof PROPPATCH) {\n return true;\n };\n if (x instanceof MKCOL && y instanceof MKCOL) {\n return true;\n };\n if (x instanceof COPY && y instanceof COPY) {\n return true;\n };\n if (x instanceof MOVE && y instanceof MOVE) {\n return true;\n };\n if (x instanceof LOCK && y instanceof LOCK) {\n return true;\n };\n if (x instanceof UNLOCK && y instanceof UNLOCK) {\n return true;\n };\n if (x instanceof PATCH && y instanceof PATCH) {\n return true;\n };\n return false;\n };\n }\n};\nvar ordMethod = {\n compare: function (x) {\n return function (y) {\n if (x instanceof OPTIONS && y instanceof OPTIONS) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof OPTIONS) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof OPTIONS) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof GET && y instanceof GET) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof GET) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof GET) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof HEAD && y instanceof HEAD) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof HEAD) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof HEAD) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof POST && y instanceof POST) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof POST) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof POST) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof PUT && y instanceof PUT) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof PUT) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof PUT) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof DELETE && y instanceof DELETE) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof DELETE) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof DELETE) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof TRACE && y instanceof TRACE) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof TRACE) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof TRACE) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof CONNECT && y instanceof CONNECT) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof CONNECT) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof CONNECT) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof PROPFIND && y instanceof PROPFIND) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof PROPFIND) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof PROPFIND) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof PROPPATCH && y instanceof PROPPATCH) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof PROPPATCH) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof PROPPATCH) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof MKCOL && y instanceof MKCOL) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof MKCOL) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof MKCOL) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof COPY && y instanceof COPY) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof COPY) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof COPY) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof MOVE && y instanceof MOVE) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof MOVE) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof MOVE) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof LOCK && y instanceof LOCK) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof LOCK) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof LOCK) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof UNLOCK && y instanceof UNLOCK) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof UNLOCK) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof UNLOCK) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof PATCH && y instanceof PATCH) {\n return Data_Ordering.EQ.value;\n };\n throw new Error(\"Failed pattern match at Data.HTTP.Method (line 0, column 0 - line 0, column 0): \" + [ x.constructor.name, y.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqMethod;\n }\n};\nvar eqCustomMethod = {\n eq: function (x) {\n return function (y) {\n return x === y;\n };\n }\n};\nvar ordCustomMethod = {\n compare: function (x) {\n return function (y) {\n return compare(x)(y);\n };\n },\n Eq0: function () {\n return eqCustomMethod;\n }\n};\nexport {\n OPTIONS,\n GET,\n HEAD,\n POST,\n PUT,\n DELETE,\n TRACE,\n CONNECT,\n PROPFIND,\n PROPPATCH,\n MKCOL,\n COPY,\n MOVE,\n LOCK,\n UNLOCK,\n PATCH,\n unCustomMethod,\n fromString,\n print,\n eqMethod,\n ordMethod,\n showMethod,\n eqCustomMethod,\n ordCustomMethod,\n showCustomMethod\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Plus from \"../Control.Plus/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_FoldableWithIndex from \"../Data.FoldableWithIndex/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_FunctorWithIndex from \"../Data.FunctorWithIndex/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Semigroup_Foldable from \"../Data.Semigroup.Foldable/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_TraversableWithIndex from \"../Data.TraversableWithIndex/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Tuple.functorTuple);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar NonEmpty = /* #__PURE__ */ (function () {\n function NonEmpty(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n NonEmpty.create = function (value0) {\n return function (value1) {\n return new NonEmpty(value0, value1);\n };\n };\n return NonEmpty;\n})();\nvar unfoldable1NonEmpty = function (dictUnfoldable) {\n var unfoldr = Data_Unfoldable.unfoldr(dictUnfoldable);\n return {\n unfoldr1: function (f) {\n return function (b) {\n return Data_Tuple.uncurry(NonEmpty.create)(map(unfoldr(map1(f)))(f(b)));\n };\n }\n };\n};\nvar tail = function (v) {\n return v.value1;\n};\nvar singleton = function (dictPlus) {\n var empty = Control_Plus.empty(dictPlus);\n return function (a) {\n return new NonEmpty(a, empty);\n };\n};\nvar showNonEmpty = function (dictShow) {\n var show = Data_Show.show(dictShow);\n return function (dictShow1) {\n var show1 = Data_Show.show(dictShow1);\n return {\n show: function (v) {\n return \"(NonEmpty \" + (show(v.value0) + (\" \" + (show1(v.value1) + \")\")));\n }\n };\n };\n};\nvar semigroupNonEmpty = function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n return function (dictSemigroup) {\n var append1 = Data_Semigroup.append(dictSemigroup);\n return {\n append: function (v) {\n return function (v1) {\n return new NonEmpty(v.value0, append1(v.value1)(append1(pure(v1.value0))(v1.value1)));\n };\n }\n };\n };\n};\nvar oneOf = function (dictAlternative) {\n var alt = Control_Alt.alt((dictAlternative.Plus1()).Alt0());\n var pure = Control_Applicative.pure(dictAlternative.Applicative0());\n return function (v) {\n return alt(pure(v.value0))(v.value1);\n };\n};\nvar head = function (v) {\n return v.value0;\n};\nvar functorNonEmpty = function (dictFunctor) {\n var map2 = Data_Functor.map(dictFunctor);\n return {\n map: function (f) {\n return function (m) {\n return new NonEmpty(f(m.value0), map2(f)(m.value1));\n };\n }\n };\n};\nvar functorWithIndex = function (dictFunctorWithIndex) {\n var mapWithIndex = Data_FunctorWithIndex.mapWithIndex(dictFunctorWithIndex);\n var functorNonEmpty1 = functorNonEmpty(dictFunctorWithIndex.Functor0());\n return {\n mapWithIndex: function (f) {\n return function (v) {\n return new NonEmpty(f(Data_Maybe.Nothing.value)(v.value0), mapWithIndex(function ($245) {\n return f(Data_Maybe.Just.create($245));\n })(v.value1));\n };\n },\n Functor0: function () {\n return functorNonEmpty1;\n }\n };\n};\nvar fromNonEmpty = function (f) {\n return function (v) {\n return f(v.value0)(v.value1);\n };\n};\nvar foldableNonEmpty = function (dictFoldable) {\n var foldMap = Data_Foldable.foldMap(dictFoldable);\n var foldl = Data_Foldable.foldl(dictFoldable);\n var foldr = Data_Foldable.foldr(dictFoldable);\n return {\n foldMap: function (dictMonoid) {\n var append1 = Data_Semigroup.append(dictMonoid.Semigroup0());\n var foldMap1 = foldMap(dictMonoid);\n return function (f) {\n return function (v) {\n return append1(f(v.value0))(foldMap1(f)(v.value1));\n };\n };\n },\n foldl: function (f) {\n return function (b) {\n return function (v) {\n return foldl(f)(f(b)(v.value0))(v.value1);\n };\n };\n },\n foldr: function (f) {\n return function (b) {\n return function (v) {\n return f(v.value0)(foldr(f)(b)(v.value1));\n };\n };\n }\n };\n};\nvar foldableWithIndexNonEmpty = function (dictFoldableWithIndex) {\n var foldMapWithIndex = Data_FoldableWithIndex.foldMapWithIndex(dictFoldableWithIndex);\n var foldlWithIndex = Data_FoldableWithIndex.foldlWithIndex(dictFoldableWithIndex);\n var foldrWithIndex = Data_FoldableWithIndex.foldrWithIndex(dictFoldableWithIndex);\n var foldableNonEmpty1 = foldableNonEmpty(dictFoldableWithIndex.Foldable0());\n return {\n foldMapWithIndex: function (dictMonoid) {\n var append1 = Data_Semigroup.append(dictMonoid.Semigroup0());\n var foldMapWithIndex1 = foldMapWithIndex(dictMonoid);\n return function (f) {\n return function (v) {\n return append1(f(Data_Maybe.Nothing.value)(v.value0))(foldMapWithIndex1(function ($246) {\n return f(Data_Maybe.Just.create($246));\n })(v.value1));\n };\n };\n },\n foldlWithIndex: function (f) {\n return function (b) {\n return function (v) {\n return foldlWithIndex(function ($247) {\n return f(Data_Maybe.Just.create($247));\n })(f(Data_Maybe.Nothing.value)(b)(v.value0))(v.value1);\n };\n };\n },\n foldrWithIndex: function (f) {\n return function (b) {\n return function (v) {\n return f(Data_Maybe.Nothing.value)(v.value0)(foldrWithIndex(function ($248) {\n return f(Data_Maybe.Just.create($248));\n })(b)(v.value1));\n };\n };\n },\n Foldable0: function () {\n return foldableNonEmpty1;\n }\n };\n};\nvar traversableNonEmpty = function (dictTraversable) {\n var sequence = Data_Traversable.sequence(dictTraversable);\n var traverse = Data_Traversable.traverse(dictTraversable);\n var functorNonEmpty1 = functorNonEmpty(dictTraversable.Functor0());\n var foldableNonEmpty1 = foldableNonEmpty(dictTraversable.Foldable1());\n return {\n sequence: function (dictApplicative) {\n var Apply0 = dictApplicative.Apply0();\n var apply = Control_Apply.apply(Apply0);\n var map2 = Data_Functor.map(Apply0.Functor0());\n var sequence1 = sequence(dictApplicative);\n return function (v) {\n return apply(map2(NonEmpty.create)(v.value0))(sequence1(v.value1));\n };\n },\n traverse: function (dictApplicative) {\n var Apply0 = dictApplicative.Apply0();\n var apply = Control_Apply.apply(Apply0);\n var map2 = Data_Functor.map(Apply0.Functor0());\n var traverse1 = traverse(dictApplicative);\n return function (f) {\n return function (v) {\n return apply(map2(NonEmpty.create)(f(v.value0)))(traverse1(f)(v.value1));\n };\n };\n },\n Functor0: function () {\n return functorNonEmpty1;\n },\n Foldable1: function () {\n return foldableNonEmpty1;\n }\n };\n};\nvar traversableWithIndexNonEmpty = function (dictTraversableWithIndex) {\n var traverseWithIndex = Data_TraversableWithIndex.traverseWithIndex(dictTraversableWithIndex);\n var functorWithIndex1 = functorWithIndex(dictTraversableWithIndex.FunctorWithIndex0());\n var foldableWithIndexNonEmpty1 = foldableWithIndexNonEmpty(dictTraversableWithIndex.FoldableWithIndex1());\n var traversableNonEmpty1 = traversableNonEmpty(dictTraversableWithIndex.Traversable2());\n return {\n traverseWithIndex: function (dictApplicative) {\n var Apply0 = dictApplicative.Apply0();\n var apply = Control_Apply.apply(Apply0);\n var map2 = Data_Functor.map(Apply0.Functor0());\n var traverseWithIndex1 = traverseWithIndex(dictApplicative);\n return function (f) {\n return function (v) {\n return apply(map2(NonEmpty.create)(f(Data_Maybe.Nothing.value)(v.value0)))(traverseWithIndex1(function ($249) {\n return f(Data_Maybe.Just.create($249));\n })(v.value1));\n };\n };\n },\n FunctorWithIndex0: function () {\n return functorWithIndex1;\n },\n FoldableWithIndex1: function () {\n return foldableWithIndexNonEmpty1;\n },\n Traversable2: function () {\n return traversableNonEmpty1;\n }\n };\n};\nvar foldable1NonEmpty = function (dictFoldable) {\n var foldl = Data_Foldable.foldl(dictFoldable);\n var foldr = Data_Foldable.foldr(dictFoldable);\n var foldableNonEmpty1 = foldableNonEmpty(dictFoldable);\n return {\n foldMap1: function (dictSemigroup) {\n var append1 = Data_Semigroup.append(dictSemigroup);\n return function (f) {\n return function (v) {\n return foldl(function (s) {\n return function (a1) {\n return append1(s)(f(a1));\n };\n })(f(v.value0))(v.value1);\n };\n };\n },\n foldr1: function (f) {\n return function (v) {\n return Data_Maybe.maybe(v.value0)(f(v.value0))(foldr(function (a1) {\n var $250 = Data_Maybe.maybe(a1)(f(a1));\n return function ($251) {\n return Data_Maybe.Just.create($250($251));\n };\n })(Data_Maybe.Nothing.value)(v.value1));\n };\n },\n foldl1: function (f) {\n return function (v) {\n return foldl(f)(v.value0)(v.value1);\n };\n },\n Foldable0: function () {\n return foldableNonEmpty1;\n }\n };\n};\nvar foldl1 = function (dictFoldable) {\n return Data_Semigroup_Foldable.foldl1(foldable1NonEmpty(dictFoldable));\n};\nvar eqNonEmpty = function (dictEq1) {\n var eq1 = Data_Eq.eq1(dictEq1);\n return function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n var eq11 = eq1(dictEq);\n return {\n eq: function (x) {\n return function (y) {\n return eq(x.value0)(y.value0) && eq11(x.value1)(y.value1);\n };\n }\n };\n };\n};\nvar ordNonEmpty = function (dictOrd1) {\n var compare1 = Data_Ord.compare1(dictOrd1);\n var eqNonEmpty1 = eqNonEmpty(dictOrd1.Eq10());\n return function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n var compare11 = compare1(dictOrd);\n var eqNonEmpty2 = eqNonEmpty1(dictOrd.Eq0());\n return {\n compare: function (x) {\n return function (y) {\n var v = compare(x.value0)(y.value0);\n if (v instanceof Data_Ordering.LT) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Ordering.GT) {\n return Data_Ordering.GT.value;\n };\n return compare11(x.value1)(y.value1);\n };\n },\n Eq0: function () {\n return eqNonEmpty2;\n }\n };\n };\n};\nvar eq1NonEmpty = function (dictEq1) {\n var eqNonEmpty1 = eqNonEmpty(dictEq1);\n return {\n eq1: function (dictEq) {\n return Data_Eq.eq(eqNonEmpty1(dictEq));\n }\n };\n};\nvar ord1NonEmpty = function (dictOrd1) {\n var ordNonEmpty1 = ordNonEmpty(dictOrd1);\n var eq1NonEmpty1 = eq1NonEmpty(dictOrd1.Eq10());\n return {\n compare1: function (dictOrd) {\n return Data_Ord.compare(ordNonEmpty1(dictOrd));\n },\n Eq10: function () {\n return eq1NonEmpty1;\n }\n };\n};\nexport {\n NonEmpty,\n singleton,\n foldl1,\n fromNonEmpty,\n oneOf,\n head,\n tail,\n showNonEmpty,\n eqNonEmpty,\n eq1NonEmpty,\n ordNonEmpty,\n ord1NonEmpty,\n functorNonEmpty,\n functorWithIndex,\n foldableNonEmpty,\n foldableWithIndexNonEmpty,\n traversableNonEmpty,\n traversableWithIndexNonEmpty,\n foldable1NonEmpty,\n unfoldable1NonEmpty,\n semigroupNonEmpty\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_FoldableWithIndex from \"../Data.FoldableWithIndex/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_FunctorWithIndex from \"../Data.FunctorWithIndex/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_NonEmpty from \"../Data.NonEmpty/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Semigroup_Traversable from \"../Data.Semigroup.Traversable/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_TraversableWithIndex from \"../Data.TraversableWithIndex/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar add = /* #__PURE__ */ Data_Semiring.add(Data_Semiring.semiringInt);\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar Nil = /* #__PURE__ */ (function () {\n function Nil() {\n\n };\n Nil.value = new Nil();\n return Nil;\n})();\nvar Cons = /* #__PURE__ */ (function () {\n function Cons(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Cons.create = function (value0) {\n return function (value1) {\n return new Cons(value0, value1);\n };\n };\n return Cons;\n})();\nvar NonEmptyList = function (x) {\n return x;\n};\nvar toList = function (v) {\n return new Cons(v.value0, v.value1);\n};\nvar newtypeNonEmptyList = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar nelCons = function (a) {\n return function (v) {\n return new Data_NonEmpty.NonEmpty(a, new Cons(v.value0, v.value1));\n };\n};\nvar listMap = function (f) {\n var chunkedRevMap = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v1 instanceof Cons && (v1.value1 instanceof Cons && v1.value1.value1 instanceof Cons)) {\n $tco_var_v = new Cons(v1, v);\n $copy_v1 = v1.value1.value1.value1;\n return;\n };\n var unrolledMap = function (v2) {\n if (v2 instanceof Cons && (v2.value1 instanceof Cons && v2.value1.value1 instanceof Nil)) {\n return new Cons(f(v2.value0), new Cons(f(v2.value1.value0), Nil.value));\n };\n if (v2 instanceof Cons && v2.value1 instanceof Nil) {\n return new Cons(f(v2.value0), Nil.value);\n };\n return Nil.value;\n };\n var reverseUnrolledMap = function ($copy_v2) {\n return function ($copy_v3) {\n var $tco_var_v2 = $copy_v2;\n var $tco_done1 = false;\n var $tco_result;\n function $tco_loop(v2, v3) {\n if (v2 instanceof Cons && (v2.value0 instanceof Cons && (v2.value0.value1 instanceof Cons && v2.value0.value1.value1 instanceof Cons))) {\n $tco_var_v2 = v2.value1;\n $copy_v3 = new Cons(f(v2.value0.value0), new Cons(f(v2.value0.value1.value0), new Cons(f(v2.value0.value1.value1.value0), v3)));\n return;\n };\n $tco_done1 = true;\n return v3;\n };\n while (!$tco_done1) {\n $tco_result = $tco_loop($tco_var_v2, $copy_v3);\n };\n return $tco_result;\n };\n };\n $tco_done = true;\n return reverseUnrolledMap(v)(unrolledMap(v1));\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n };\n return chunkedRevMap(Nil.value);\n};\nvar functorList = {\n map: listMap\n};\nvar map = /* #__PURE__ */ Data_Functor.map(functorList);\nvar functorNonEmptyList = /* #__PURE__ */ Data_NonEmpty.functorNonEmpty(functorList);\nvar foldableList = {\n foldr: function (f) {\n return function (b) {\n var rev = (function () {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v1 instanceof Nil) {\n $tco_done = true;\n return v;\n };\n if (v1 instanceof Cons) {\n $tco_var_v = new Cons(v1.value0, v);\n $copy_v1 = v1.value1;\n return;\n };\n throw new Error(\"Failed pattern match at Data.List.Types (line 107, column 7 - line 107, column 23): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n };\n return go(Nil.value);\n })();\n var $284 = Data_Foldable.foldl(foldableList)(Data_Function.flip(f))(b);\n return function ($285) {\n return $284(rev($285));\n };\n };\n },\n foldl: function (f) {\n var go = function ($copy_b) {\n return function ($copy_v) {\n var $tco_var_b = $copy_b;\n var $tco_done1 = false;\n var $tco_result;\n function $tco_loop(b, v) {\n if (v instanceof Nil) {\n $tco_done1 = true;\n return b;\n };\n if (v instanceof Cons) {\n $tco_var_b = f(b)(v.value0);\n $copy_v = v.value1;\n return;\n };\n throw new Error(\"Failed pattern match at Data.List.Types (line 111, column 12 - line 113, column 30): \" + [ v.constructor.name ]);\n };\n while (!$tco_done1) {\n $tco_result = $tco_loop($tco_var_b, $copy_v);\n };\n return $tco_result;\n };\n };\n return go;\n },\n foldMap: function (dictMonoid) {\n var append2 = Data_Semigroup.append(dictMonoid.Semigroup0());\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (f) {\n return Data_Foldable.foldl(foldableList)(function (acc) {\n var $286 = append2(acc);\n return function ($287) {\n return $286(f($287));\n };\n })(mempty);\n };\n }\n};\nvar foldl = /* #__PURE__ */ Data_Foldable.foldl(foldableList);\nvar foldr = /* #__PURE__ */ Data_Foldable.foldr(foldableList);\nvar intercalate = /* #__PURE__ */ Data_Foldable.intercalate(foldableList)(Data_Monoid.monoidString);\nvar foldableNonEmptyList = /* #__PURE__ */ Data_NonEmpty.foldableNonEmpty(foldableList);\nvar foldableWithIndexList = {\n foldrWithIndex: function (f) {\n return function (b) {\n return function (xs) {\n var v = (function () {\n var rev = foldl(function (v1) {\n return function (a) {\n return new Data_Tuple.Tuple(v1.value0 + 1 | 0, new Cons(a, v1.value1));\n };\n });\n return rev(new Data_Tuple.Tuple(0, Nil.value))(xs);\n })();\n return Data_Tuple.snd(foldl(function (v1) {\n return function (a) {\n return new Data_Tuple.Tuple(v1.value0 - 1 | 0, f(v1.value0 - 1 | 0)(a)(v1.value1));\n };\n })(new Data_Tuple.Tuple(v.value0, b))(v.value1));\n };\n };\n },\n foldlWithIndex: function (f) {\n return function (acc) {\n var $288 = foldl(function (v) {\n return function (a) {\n return new Data_Tuple.Tuple(v.value0 + 1 | 0, f(v.value0)(v.value1)(a));\n };\n })(new Data_Tuple.Tuple(0, acc));\n return function ($289) {\n return Data_Tuple.snd($288($289));\n };\n };\n },\n foldMapWithIndex: function (dictMonoid) {\n var append2 = Data_Semigroup.append(dictMonoid.Semigroup0());\n var mempty = Data_Monoid.mempty(dictMonoid);\n return function (f) {\n return Data_FoldableWithIndex.foldlWithIndex(foldableWithIndexList)(function (i) {\n return function (acc) {\n var $290 = append2(acc);\n var $291 = f(i);\n return function ($292) {\n return $290($291($292));\n };\n };\n })(mempty);\n };\n },\n Foldable0: function () {\n return foldableList;\n }\n};\nvar foldableWithIndexNonEmpty = /* #__PURE__ */ Data_NonEmpty.foldableWithIndexNonEmpty(foldableWithIndexList);\nvar foldMapWithIndex = /* #__PURE__ */ Data_FoldableWithIndex.foldMapWithIndex(foldableWithIndexNonEmpty);\nvar foldlWithIndex = /* #__PURE__ */ Data_FoldableWithIndex.foldlWithIndex(foldableWithIndexNonEmpty);\nvar foldrWithIndex = /* #__PURE__ */ Data_FoldableWithIndex.foldrWithIndex(foldableWithIndexNonEmpty);\nvar foldrWithIndex1 = /* #__PURE__ */ Data_FoldableWithIndex.foldrWithIndex(foldableWithIndexList);\nvar foldlWithIndex1 = /* #__PURE__ */ Data_FoldableWithIndex.foldlWithIndex(foldableWithIndexList);\nvar foldableWithIndexNonEmptyList = {\n foldMapWithIndex: function (dictMonoid) {\n var foldMapWithIndex1 = foldMapWithIndex(dictMonoid);\n return function (f) {\n return function (v) {\n return foldMapWithIndex1((function () {\n var $293 = Data_Maybe.maybe(0)(add(1));\n return function ($294) {\n return f($293($294));\n };\n })())(v);\n };\n };\n },\n foldlWithIndex: function (f) {\n return function (b) {\n return function (v) {\n return foldlWithIndex((function () {\n var $295 = Data_Maybe.maybe(0)(add(1));\n return function ($296) {\n return f($295($296));\n };\n })())(b)(v);\n };\n };\n },\n foldrWithIndex: function (f) {\n return function (b) {\n return function (v) {\n return foldrWithIndex((function () {\n var $297 = Data_Maybe.maybe(0)(add(1));\n return function ($298) {\n return f($297($298));\n };\n })())(b)(v);\n };\n };\n },\n Foldable0: function () {\n return foldableNonEmptyList;\n }\n};\nvar functorWithIndexList = {\n mapWithIndex: function (f) {\n return foldrWithIndex1(function (i) {\n return function (x) {\n return function (acc) {\n return new Cons(f(i)(x), acc);\n };\n };\n })(Nil.value);\n },\n Functor0: function () {\n return functorList;\n }\n};\nvar mapWithIndex = /* #__PURE__ */ Data_FunctorWithIndex.mapWithIndex(/* #__PURE__ */ Data_NonEmpty.functorWithIndex(functorWithIndexList));\nvar functorWithIndexNonEmptyList = {\n mapWithIndex: function (fn) {\n return function (v) {\n return mapWithIndex((function () {\n var $299 = Data_Maybe.maybe(0)(add(1));\n return function ($300) {\n return fn($299($300));\n };\n })())(v);\n };\n },\n Functor0: function () {\n return functorNonEmptyList;\n }\n};\nvar semigroupList = {\n append: function (xs) {\n return function (ys) {\n return foldr(Cons.create)(ys)(xs);\n };\n }\n};\nvar append1 = /* #__PURE__ */ Data_Semigroup.append(semigroupList);\nvar monoidList = /* #__PURE__ */ (function () {\n return {\n mempty: Nil.value,\n Semigroup0: function () {\n return semigroupList;\n }\n };\n})();\nvar semigroupNonEmptyList = {\n append: function (v) {\n return function (as$prime) {\n return new Data_NonEmpty.NonEmpty(v.value0, append1(v.value1)(toList(as$prime)));\n };\n }\n};\nvar showList = function (dictShow) {\n var show = Data_Show.show(dictShow);\n return {\n show: function (v) {\n if (v instanceof Nil) {\n return \"Nil\";\n };\n return \"(\" + (intercalate(\" : \")(map(show)(v)) + \" : Nil)\");\n }\n };\n};\nvar showNonEmptyList = function (dictShow) {\n var show = Data_Show.show(Data_NonEmpty.showNonEmpty(dictShow)(showList(dictShow)));\n return {\n show: function (v) {\n return \"(NonEmptyList \" + (show(v) + \")\");\n }\n };\n};\nvar traversableList = {\n traverse: function (dictApplicative) {\n var Apply0 = dictApplicative.Apply0();\n var map1 = Data_Functor.map(Apply0.Functor0());\n var lift2 = Control_Apply.lift2(Apply0);\n var pure1 = Control_Applicative.pure(dictApplicative);\n return function (f) {\n var $301 = map1(foldl(Data_Function.flip(Cons.create))(Nil.value));\n var $302 = foldl(function (acc) {\n var $304 = lift2(Data_Function.flip(Cons.create))(acc);\n return function ($305) {\n return $304(f($305));\n };\n })(pure1(Nil.value));\n return function ($303) {\n return $301($302($303));\n };\n };\n },\n sequence: function (dictApplicative) {\n return Data_Traversable.traverse(traversableList)(dictApplicative)(identity);\n },\n Functor0: function () {\n return functorList;\n },\n Foldable1: function () {\n return foldableList;\n }\n};\nvar traversableNonEmptyList = /* #__PURE__ */ Data_NonEmpty.traversableNonEmpty(traversableList);\nvar traversableWithIndexList = {\n traverseWithIndex: function (dictApplicative) {\n var Apply0 = dictApplicative.Apply0();\n var map1 = Data_Functor.map(Apply0.Functor0());\n var lift2 = Control_Apply.lift2(Apply0);\n var pure1 = Control_Applicative.pure(dictApplicative);\n return function (f) {\n var rev = foldl(Data_Function.flip(Cons.create))(Nil.value);\n var $306 = map1(rev);\n var $307 = foldlWithIndex1(function (i) {\n return function (acc) {\n var $309 = lift2(Data_Function.flip(Cons.create))(acc);\n var $310 = f(i);\n return function ($311) {\n return $309($310($311));\n };\n };\n })(pure1(Nil.value));\n return function ($308) {\n return $306($307($308));\n };\n };\n },\n FunctorWithIndex0: function () {\n return functorWithIndexList;\n },\n FoldableWithIndex1: function () {\n return foldableWithIndexList;\n },\n Traversable2: function () {\n return traversableList;\n }\n};\nvar traverseWithIndex = /* #__PURE__ */ Data_TraversableWithIndex.traverseWithIndex(/* #__PURE__ */ Data_NonEmpty.traversableWithIndexNonEmpty(traversableWithIndexList));\nvar traversableWithIndexNonEmptyList = {\n traverseWithIndex: function (dictApplicative) {\n var map1 = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverseWithIndex1 = traverseWithIndex(dictApplicative);\n return function (f) {\n return function (v) {\n return map1(NonEmptyList)(traverseWithIndex1((function () {\n var $312 = Data_Maybe.maybe(0)(add(1));\n return function ($313) {\n return f($312($313));\n };\n })())(v));\n };\n };\n },\n FunctorWithIndex0: function () {\n return functorWithIndexNonEmptyList;\n },\n FoldableWithIndex1: function () {\n return foldableWithIndexNonEmptyList;\n },\n Traversable2: function () {\n return traversableNonEmptyList;\n }\n};\nvar unfoldable1List = {\n unfoldr1: function (f) {\n return function (b) {\n var go = function ($copy_source) {\n return function ($copy_memo) {\n var $tco_var_source = $copy_source;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(source, memo) {\n var v = f(source);\n if (v.value1 instanceof Data_Maybe.Just) {\n $tco_var_source = v.value1.value0;\n $copy_memo = new Cons(v.value0, memo);\n return;\n };\n if (v.value1 instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return foldl(Data_Function.flip(Cons.create))(Nil.value)(new Cons(v.value0, memo));\n };\n throw new Error(\"Failed pattern match at Data.List.Types (line 135, column 22 - line 137, column 61): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_source, $copy_memo);\n };\n return $tco_result;\n };\n };\n return go(b)(Nil.value);\n };\n }\n};\nvar unfoldableList = {\n unfoldr: function (f) {\n return function (b) {\n var go = function ($copy_source) {\n return function ($copy_memo) {\n var $tco_var_source = $copy_source;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(source, memo) {\n var v = f(source);\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return foldl(Data_Function.flip(Cons.create))(Nil.value)(memo);\n };\n if (v instanceof Data_Maybe.Just) {\n $tco_var_source = v.value0.value1;\n $copy_memo = new Cons(v.value0.value0, memo);\n return;\n };\n throw new Error(\"Failed pattern match at Data.List.Types (line 142, column 22 - line 144, column 52): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_source, $copy_memo);\n };\n return $tco_result;\n };\n };\n return go(b)(Nil.value);\n };\n },\n Unfoldable10: function () {\n return unfoldable1List;\n }\n};\nvar unfoldable1NonEmptyList = /* #__PURE__ */ Data_NonEmpty.unfoldable1NonEmpty(unfoldableList);\nvar foldable1NonEmptyList = /* #__PURE__ */ Data_NonEmpty.foldable1NonEmpty(foldableList);\nvar extendNonEmptyList = {\n extend: function (f) {\n return function (v) {\n var go = function (a) {\n return function (v1) {\n return {\n val: new Cons(f(new Data_NonEmpty.NonEmpty(a, v1.acc)), v1.val),\n acc: new Cons(a, v1.acc)\n };\n };\n };\n return new Data_NonEmpty.NonEmpty(f(v), (foldr(go)({\n val: Nil.value,\n acc: Nil.value\n })(v.value1)).val);\n };\n },\n Functor0: function () {\n return functorNonEmptyList;\n }\n};\nvar extendList = {\n extend: function (v) {\n return function (v1) {\n if (v1 instanceof Nil) {\n return Nil.value;\n };\n if (v1 instanceof Cons) {\n var go = function (a$prime) {\n return function (v2) {\n var acc$prime = new Cons(a$prime, v2.acc);\n return {\n val: new Cons(v(acc$prime), v2.val),\n acc: acc$prime\n };\n };\n };\n return new Cons(v(v1), (foldr(go)({\n val: Nil.value,\n acc: Nil.value\n })(v1.value1)).val);\n };\n throw new Error(\"Failed pattern match at Data.List.Types (line 180, column 1 - line 187, column 42): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n Functor0: function () {\n return functorList;\n }\n};\nvar eq1List = {\n eq1: function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n return function (xs) {\n return function (ys) {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n return function ($copy_v2) {\n var $tco_var_v = $copy_v;\n var $tco_var_v1 = $copy_v1;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1, v2) {\n if (!v2) {\n $tco_done = true;\n return false;\n };\n if (v instanceof Nil && v1 instanceof Nil) {\n $tco_done = true;\n return v2;\n };\n if (v instanceof Cons && v1 instanceof Cons) {\n $tco_var_v = v.value1;\n $tco_var_v1 = v1.value1;\n $copy_v2 = v2 && eq(v1.value0)(v.value0);\n return;\n };\n $tco_done = true;\n return false;\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $tco_var_v1, $copy_v2);\n };\n return $tco_result;\n };\n };\n };\n return go(xs)(ys)(true);\n };\n };\n }\n};\nvar eq1 = /* #__PURE__ */ Data_Eq.eq1(eq1List);\nvar eqNonEmpty = /* #__PURE__ */ Data_NonEmpty.eqNonEmpty(eq1List);\nvar eq1NonEmptyList = /* #__PURE__ */ Data_NonEmpty.eq1NonEmpty(eq1List);\nvar eqList = function (dictEq) {\n return {\n eq: eq1(dictEq)\n };\n};\nvar eqNonEmptyList = function (dictEq) {\n return eqNonEmpty(dictEq);\n};\nvar ord1List = {\n compare1: function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (xs) {\n return function (ys) {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v instanceof Nil && v1 instanceof Nil) {\n $tco_done = true;\n return Data_Ordering.EQ.value;\n };\n if (v instanceof Nil) {\n $tco_done = true;\n return Data_Ordering.LT.value;\n };\n if (v1 instanceof Nil) {\n $tco_done = true;\n return Data_Ordering.GT.value;\n };\n if (v instanceof Cons && v1 instanceof Cons) {\n var v2 = compare(v.value0)(v1.value0);\n if (v2 instanceof Data_Ordering.EQ) {\n $tco_var_v = v.value1;\n $copy_v1 = v1.value1;\n return;\n };\n $tco_done = true;\n return v2;\n };\n throw new Error(\"Failed pattern match at Data.List.Types (line 60, column 5 - line 60, column 20): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n };\n return go(xs)(ys);\n };\n };\n },\n Eq10: function () {\n return eq1List;\n }\n};\nvar compare1 = /* #__PURE__ */ Data_Ord.compare1(ord1List);\nvar ordNonEmpty = /* #__PURE__ */ Data_NonEmpty.ordNonEmpty(ord1List);\nvar ord1NonEmptyList = /* #__PURE__ */ Data_NonEmpty.ord1NonEmpty(ord1List);\nvar ordList = function (dictOrd) {\n var eqList1 = eqList(dictOrd.Eq0());\n return {\n compare: compare1(dictOrd),\n Eq0: function () {\n return eqList1;\n }\n };\n};\nvar ordNonEmptyList = function (dictOrd) {\n return ordNonEmpty(dictOrd);\n};\nvar comonadNonEmptyList = {\n extract: function (v) {\n return v.value0;\n },\n Extend0: function () {\n return extendNonEmptyList;\n }\n};\nvar applyList = {\n apply: function (v) {\n return function (v1) {\n if (v instanceof Nil) {\n return Nil.value;\n };\n if (v instanceof Cons) {\n return append1(map(v.value0)(v1))(Control_Apply.apply(applyList)(v.value1)(v1));\n };\n throw new Error(\"Failed pattern match at Data.List.Types (line 157, column 1 - line 159, column 48): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n Functor0: function () {\n return functorList;\n }\n};\nvar apply = /* #__PURE__ */ Control_Apply.apply(applyList);\nvar applyNonEmptyList = {\n apply: function (v) {\n return function (v1) {\n return new Data_NonEmpty.NonEmpty(v.value0(v1.value0), append1(apply(v.value1)(new Cons(v1.value0, Nil.value)))(apply(new Cons(v.value0, v.value1))(v1.value1)));\n };\n },\n Functor0: function () {\n return functorNonEmptyList;\n }\n};\nvar bindList = {\n bind: function (v) {\n return function (v1) {\n if (v instanceof Nil) {\n return Nil.value;\n };\n if (v instanceof Cons) {\n return append1(v1(v.value0))(Control_Bind.bind(bindList)(v.value1)(v1));\n };\n throw new Error(\"Failed pattern match at Data.List.Types (line 164, column 1 - line 166, column 37): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n },\n Apply0: function () {\n return applyList;\n }\n};\nvar bind = /* #__PURE__ */ Control_Bind.bind(bindList);\nvar bindNonEmptyList = {\n bind: function (v) {\n return function (f) {\n var v1 = f(v.value0);\n return new Data_NonEmpty.NonEmpty(v1.value0, append1(v1.value1)(bind(v.value1)(function ($314) {\n return toList(f($314));\n })));\n };\n },\n Apply0: function () {\n return applyNonEmptyList;\n }\n};\nvar applicativeList = {\n pure: function (a) {\n return new Cons(a, Nil.value);\n },\n Apply0: function () {\n return applyList;\n }\n};\nvar monadList = {\n Applicative0: function () {\n return applicativeList;\n },\n Bind1: function () {\n return bindList;\n }\n};\nvar altNonEmptyList = {\n alt: /* #__PURE__ */ Data_Semigroup.append(semigroupNonEmptyList),\n Functor0: function () {\n return functorNonEmptyList;\n }\n};\nvar altList = {\n alt: append1,\n Functor0: function () {\n return functorList;\n }\n};\nvar plusList = /* #__PURE__ */ (function () {\n return {\n empty: Nil.value,\n Alt0: function () {\n return altList;\n }\n };\n})();\nvar alternativeList = {\n Applicative0: function () {\n return applicativeList;\n },\n Plus1: function () {\n return plusList;\n }\n};\nvar monadPlusList = {\n Monad0: function () {\n return monadList;\n },\n Alternative1: function () {\n return alternativeList;\n }\n};\nvar applicativeNonEmptyList = {\n pure: /* #__PURE__ */ (function () {\n var $315 = Data_NonEmpty.singleton(plusList);\n return function ($316) {\n return NonEmptyList($315($316));\n };\n })(),\n Apply0: function () {\n return applyNonEmptyList;\n }\n};\nvar pure = /* #__PURE__ */ Control_Applicative.pure(applicativeNonEmptyList);\nvar monadNonEmptyList = {\n Applicative0: function () {\n return applicativeNonEmptyList;\n },\n Bind1: function () {\n return bindNonEmptyList;\n }\n};\nvar traversable1NonEmptyList = {\n traverse1: function (dictApply) {\n var Functor0 = dictApply.Functor0();\n var mapFlipped = Data_Functor.mapFlipped(Functor0);\n var lift2 = Control_Apply.lift2(dictApply);\n var map1 = Data_Functor.map(Functor0);\n return function (f) {\n return function (v) {\n return mapFlipped(foldl(function (acc) {\n var $317 = lift2(Data_Function.flip(nelCons))(acc);\n return function ($318) {\n return $317(f($318));\n };\n })(map1(pure)(f(v.value0)))(v.value1))(function (v1) {\n return foldl(Data_Function.flip(nelCons))(pure(v1.value0))(v1.value1);\n });\n };\n };\n },\n sequence1: function (dictApply) {\n return Data_Semigroup_Traversable.traverse1(traversable1NonEmptyList)(dictApply)(identity);\n },\n Foldable10: function () {\n return foldable1NonEmptyList;\n },\n Traversable1: function () {\n return traversableNonEmptyList;\n }\n};\nexport {\n Nil,\n Cons,\n NonEmptyList,\n toList,\n nelCons,\n showList,\n eqList,\n eq1List,\n ordList,\n ord1List,\n semigroupList,\n monoidList,\n functorList,\n functorWithIndexList,\n foldableList,\n foldableWithIndexList,\n unfoldable1List,\n unfoldableList,\n traversableList,\n traversableWithIndexList,\n applyList,\n applicativeList,\n bindList,\n monadList,\n altList,\n plusList,\n alternativeList,\n monadPlusList,\n extendList,\n newtypeNonEmptyList,\n eqNonEmptyList,\n ordNonEmptyList,\n eq1NonEmptyList,\n ord1NonEmptyList,\n showNonEmptyList,\n functorNonEmptyList,\n applyNonEmptyList,\n applicativeNonEmptyList,\n bindNonEmptyList,\n monadNonEmptyList,\n altNonEmptyList,\n extendNonEmptyList,\n comonadNonEmptyList,\n semigroupNonEmptyList,\n foldableNonEmptyList,\n traversableNonEmptyList,\n foldable1NonEmptyList,\n unfoldable1NonEmptyList,\n functorWithIndexNonEmptyList,\n foldableWithIndexNonEmptyList,\n traversableWithIndexNonEmptyList,\n traversable1NonEmptyList\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Lazy from \"../Control.Lazy/index.js\";\nimport * as Control_Monad_Rec_Class from \"../Control.Monad.Rec.Class/index.js\";\nimport * as Data_Bifunctor from \"../Data.Bifunctor/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_HeytingAlgebra from \"../Data.HeytingAlgebra/index.js\";\nimport * as Data_List_Internal from \"../Data.List.Internal/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_NonEmpty from \"../Data.NonEmpty/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar foldr = /* #__PURE__ */ Data_Foldable.foldr(Data_List_Types.foldableList);\nvar tailRecM2 = /* #__PURE__ */ Control_Monad_Rec_Class.tailRecM2(Control_Monad_Rec_Class.monadRecMaybe);\nvar eq = /* #__PURE__ */ Data_Eq.eq(Data_Ordering.eqOrdering);\nvar notEq = /* #__PURE__ */ Data_Eq.notEq(Data_Ordering.eqOrdering);\nvar sequence = /* #__PURE__ */ Data_Traversable.sequence(Data_List_Types.traversableList);\nvar bimap = /* #__PURE__ */ Data_Bifunctor.bimap(Control_Monad_Rec_Class.bifunctorStep);\nvar foldl = /* #__PURE__ */ Data_Foldable.foldl(Data_List_Types.foldableList);\nvar any = /* #__PURE__ */ Data_Foldable.any(Data_List_Types.foldableList)(Data_HeytingAlgebra.heytingAlgebraBoolean);\nvar append1 = /* #__PURE__ */ Data_Semigroup.append(Data_List_Types.semigroupList);\nvar bind = /* #__PURE__ */ Control_Bind.bind(Data_List_Types.bindList);\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar Pattern = function (x) {\n return x;\n};\nvar updateAt = function (v) {\n return function (v1) {\n return function (v2) {\n if (v === 0 && v2 instanceof Data_List_Types.Cons) {\n return new Data_Maybe.Just(new Data_List_Types.Cons(v1, v2.value1));\n };\n if (v2 instanceof Data_List_Types.Cons) {\n return map(function (v3) {\n return new Data_List_Types.Cons(v2.value0, v3);\n })(updateAt(v - 1 | 0)(v1)(v2.value1));\n };\n return Data_Maybe.Nothing.value;\n };\n };\n};\nvar unzip = /* #__PURE__ */ (function () {\n return foldr(function (v) {\n return function (v1) {\n return new Data_Tuple.Tuple(new Data_List_Types.Cons(v.value0, v1.value0), new Data_List_Types.Cons(v.value1, v1.value1));\n };\n })(new Data_Tuple.Tuple(Data_List_Types.Nil.value, Data_List_Types.Nil.value));\n})();\nvar uncons = function (v) {\n if (v instanceof Data_List_Types.Nil) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Data_List_Types.Cons) {\n return new Data_Maybe.Just({\n head: v.value0,\n tail: v.value1\n });\n };\n throw new Error(\"Failed pattern match at Data.List (line 259, column 1 - line 259, column 66): \" + [ v.constructor.name ]);\n};\nvar toUnfoldable = function (dictUnfoldable) {\n return Data_Unfoldable.unfoldr(dictUnfoldable)(function (xs) {\n return map(function (rec) {\n return new Data_Tuple.Tuple(rec.head, rec.tail);\n })(uncons(xs));\n });\n};\nvar tail = function (v) {\n if (v instanceof Data_List_Types.Nil) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Data_List_Types.Cons) {\n return new Data_Maybe.Just(v.value1);\n };\n throw new Error(\"Failed pattern match at Data.List (line 245, column 1 - line 245, column 43): \" + [ v.constructor.name ]);\n};\nvar stripPrefix = function (dictEq) {\n var eq2 = Data_Eq.eq(dictEq);\n return function (v) {\n return function (s) {\n var go = function (prefix) {\n return function (input) {\n if (prefix instanceof Data_List_Types.Cons && (input instanceof Data_List_Types.Cons && eq2(prefix.value0)(input.value0))) {\n return new Data_Maybe.Just(new Control_Monad_Rec_Class.Loop({\n a: prefix.value1,\n b: input.value1\n }));\n };\n if (prefix instanceof Data_List_Types.Nil) {\n return new Data_Maybe.Just(new Control_Monad_Rec_Class.Done(input));\n };\n return Data_Maybe.Nothing.value;\n };\n };\n return tailRecM2(go)(v)(s);\n };\n };\n};\nvar span = function (v) {\n return function (v1) {\n if (v1 instanceof Data_List_Types.Cons && v(v1.value0)) {\n var v2 = span(v)(v1.value1);\n return {\n init: new Data_List_Types.Cons(v1.value0, v2.init),\n rest: v2.rest\n };\n };\n return {\n init: Data_List_Types.Nil.value,\n rest: v1\n };\n };\n};\nvar snoc = function (xs) {\n return function (x) {\n return foldr(Data_List_Types.Cons.create)(new Data_List_Types.Cons(x, Data_List_Types.Nil.value))(xs);\n };\n};\nvar singleton = function (a) {\n return new Data_List_Types.Cons(a, Data_List_Types.Nil.value);\n};\nvar sortBy = function (cmp) {\n var merge = function (v) {\n return function (v1) {\n if (v instanceof Data_List_Types.Cons && v1 instanceof Data_List_Types.Cons) {\n if (eq(cmp(v.value0)(v1.value0))(Data_Ordering.GT.value)) {\n return new Data_List_Types.Cons(v1.value0, merge(v)(v1.value1));\n };\n if (Data_Boolean.otherwise) {\n return new Data_List_Types.Cons(v.value0, merge(v.value1)(v1));\n };\n };\n if (v instanceof Data_List_Types.Nil) {\n return v1;\n };\n if (v1 instanceof Data_List_Types.Nil) {\n return v;\n };\n throw new Error(\"Failed pattern match at Data.List (line 466, column 3 - line 466, column 38): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n var mergePairs = function (v) {\n if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Cons) {\n return new Data_List_Types.Cons(merge(v.value0)(v.value1.value0), mergePairs(v.value1.value1));\n };\n return v;\n };\n var mergeAll = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return v.value0;\n };\n $copy_v = mergePairs(v);\n return;\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n };\n var sequences = function (v) {\n if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Cons) {\n if (eq(cmp(v.value0)(v.value1.value0))(Data_Ordering.GT.value)) {\n return descending(v.value1.value0)(singleton(v.value0))(v.value1.value1);\n };\n if (Data_Boolean.otherwise) {\n return ascending(v.value1.value0)(function (v1) {\n return new Data_List_Types.Cons(v.value0, v1);\n })(v.value1.value1);\n };\n };\n return singleton(v);\n };\n var descending = function ($copy_v) {\n return function ($copy_v1) {\n return function ($copy_v2) {\n var $tco_var_v = $copy_v;\n var $tco_var_v1 = $copy_v1;\n var $tco_done1 = false;\n var $tco_result;\n function $tco_loop(v, v1, v2) {\n if (v2 instanceof Data_List_Types.Cons && eq(cmp(v)(v2.value0))(Data_Ordering.GT.value)) {\n $tco_var_v = v2.value0;\n $tco_var_v1 = new Data_List_Types.Cons(v, v1);\n $copy_v2 = v2.value1;\n return;\n };\n $tco_done1 = true;\n return new Data_List_Types.Cons(new Data_List_Types.Cons(v, v1), sequences(v2));\n };\n while (!$tco_done1) {\n $tco_result = $tco_loop($tco_var_v, $tco_var_v1, $copy_v2);\n };\n return $tco_result;\n };\n };\n };\n var ascending = function ($copy_v) {\n return function ($copy_v1) {\n return function ($copy_v2) {\n var $tco_var_v = $copy_v;\n var $tco_var_v1 = $copy_v1;\n var $tco_done2 = false;\n var $tco_result;\n function $tco_loop(v, v1, v2) {\n if (v2 instanceof Data_List_Types.Cons && notEq(cmp(v)(v2.value0))(Data_Ordering.GT.value)) {\n $tco_var_v = v2.value0;\n $tco_var_v1 = function (ys) {\n return v1(new Data_List_Types.Cons(v, ys));\n };\n $copy_v2 = v2.value1;\n return;\n };\n $tco_done2 = true;\n return new Data_List_Types.Cons(v1(singleton(v)), sequences(v2));\n };\n while (!$tco_done2) {\n $tco_result = $tco_loop($tco_var_v, $tco_var_v1, $copy_v2);\n };\n return $tco_result;\n };\n };\n };\n return function ($444) {\n return mergeAll(sequences($444));\n };\n};\nvar sort = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (xs) {\n return sortBy(compare)(xs);\n };\n};\nvar tails = function (v) {\n if (v instanceof Data_List_Types.Nil) {\n return singleton(Data_List_Types.Nil.value);\n };\n if (v instanceof Data_List_Types.Cons) {\n return new Data_List_Types.Cons(v, tails(v.value1));\n };\n throw new Error(\"Failed pattern match at Data.List (line 641, column 1 - line 641, column 43): \" + [ v.constructor.name ]);\n};\nvar showPattern = function (dictShow) {\n var show = Data_Show.show(Data_List_Types.showList(dictShow));\n return {\n show: function (v) {\n return \"(Pattern \" + (show(v) + \")\");\n }\n };\n};\nvar reverse = /* #__PURE__ */ (function () {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return v;\n };\n if (v1 instanceof Data_List_Types.Cons) {\n $tco_var_v = new Data_List_Types.Cons(v1.value0, v);\n $copy_v1 = v1.value1;\n return;\n };\n throw new Error(\"Failed pattern match at Data.List (line 368, column 3 - line 368, column 19): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n };\n return go(Data_List_Types.Nil.value);\n})();\nvar take = /* #__PURE__ */ (function () {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n return function ($copy_v2) {\n var $tco_var_v = $copy_v;\n var $tco_var_v1 = $copy_v1;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1, v2) {\n if (v1 < 1) {\n $tco_done = true;\n return reverse(v);\n };\n if (v2 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return reverse(v);\n };\n if (v2 instanceof Data_List_Types.Cons) {\n $tco_var_v = new Data_List_Types.Cons(v2.value0, v);\n $tco_var_v1 = v1 - 1 | 0;\n $copy_v2 = v2.value1;\n return;\n };\n throw new Error(\"Failed pattern match at Data.List (line 513, column 3 - line 513, column 35): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $tco_var_v1, $copy_v2);\n };\n return $tco_result;\n };\n };\n };\n return go(Data_List_Types.Nil.value);\n})();\nvar takeWhile = function (p) {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v1 instanceof Data_List_Types.Cons && p(v1.value0)) {\n $tco_var_v = new Data_List_Types.Cons(v1.value0, v);\n $copy_v1 = v1.value1;\n return;\n };\n $tco_done = true;\n return reverse(v);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n };\n return go(Data_List_Types.Nil.value);\n};\nvar unsnoc = function (lst) {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return new Data_Maybe.Just({\n revInit: v1,\n last: v.value0\n });\n };\n if (v instanceof Data_List_Types.Cons) {\n $tco_var_v = v.value1;\n $copy_v1 = new Data_List_Types.Cons(v.value0, v1);\n return;\n };\n throw new Error(\"Failed pattern match at Data.List (line 270, column 3 - line 270, column 21): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n };\n return map(function (h) {\n return {\n init: reverse(h.revInit),\n last: h.last\n };\n })(go(lst)(Data_List_Types.Nil.value));\n};\nvar zipWith = function (f) {\n return function (xs) {\n return function (ys) {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n return function ($copy_v2) {\n var $tco_var_v = $copy_v;\n var $tco_var_v1 = $copy_v1;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1, v2) {\n if (v instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return v2;\n };\n if (v1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return v2;\n };\n if (v instanceof Data_List_Types.Cons && v1 instanceof Data_List_Types.Cons) {\n $tco_var_v = v.value1;\n $tco_var_v1 = v1.value1;\n $copy_v2 = new Data_List_Types.Cons(f(v.value0)(v1.value0), v2);\n return;\n };\n throw new Error(\"Failed pattern match at Data.List (line 779, column 3 - line 779, column 21): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $tco_var_v1, $copy_v2);\n };\n return $tco_result;\n };\n };\n };\n return reverse(go(xs)(ys)(Data_List_Types.Nil.value));\n };\n };\n};\nvar zip = /* #__PURE__ */ (function () {\n return zipWith(Data_Tuple.Tuple.create);\n})();\nvar zipWithA = function (dictApplicative) {\n var sequence1 = sequence(dictApplicative);\n return function (f) {\n return function (xs) {\n return function (ys) {\n return sequence1(zipWith(f)(xs)(ys));\n };\n };\n };\n};\nvar range = function (start) {\n return function (end) {\n if (start === end) {\n return singleton(start);\n };\n if (Data_Boolean.otherwise) {\n var go = function ($copy_s) {\n return function ($copy_e) {\n return function ($copy_step) {\n return function ($copy_rest) {\n var $tco_var_s = $copy_s;\n var $tco_var_e = $copy_e;\n var $tco_var_step = $copy_step;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(s, e, step, rest) {\n if (s === e) {\n $tco_done = true;\n return new Data_List_Types.Cons(s, rest);\n };\n if (Data_Boolean.otherwise) {\n $tco_var_s = s + step | 0;\n $tco_var_e = e;\n $tco_var_step = step;\n $copy_rest = new Data_List_Types.Cons(s, rest);\n return;\n };\n throw new Error(\"Failed pattern match at Data.List (line 148, column 3 - line 149, column 65): \" + [ s.constructor.name, e.constructor.name, step.constructor.name, rest.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_s, $tco_var_e, $tco_var_step, $copy_rest);\n };\n return $tco_result;\n };\n };\n };\n };\n return go(end)(start)((function () {\n var $325 = start > end;\n if ($325) {\n return 1;\n };\n return -1 | 0;\n })())(Data_List_Types.Nil.value);\n };\n throw new Error(\"Failed pattern match at Data.List (line 144, column 1 - line 144, column 32): \" + [ start.constructor.name, end.constructor.name ]);\n };\n};\nvar partition = function (p) {\n return function (xs) {\n var select = function (x) {\n return function (v) {\n var $328 = p(x);\n if ($328) {\n return {\n no: v.no,\n yes: new Data_List_Types.Cons(x, v.yes)\n };\n };\n return {\n no: new Data_List_Types.Cons(x, v.no),\n yes: v.yes\n };\n };\n };\n return foldr(select)({\n no: Data_List_Types.Nil.value,\n yes: Data_List_Types.Nil.value\n })(xs);\n };\n};\nvar $$null = function (v) {\n if (v instanceof Data_List_Types.Nil) {\n return true;\n };\n return false;\n};\nvar nubBy = function (p) {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n return function ($copy_v2) {\n var $tco_var_v = $copy_v;\n var $tco_var_v1 = $copy_v1;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1, v2) {\n if (v2 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return v1;\n };\n if (v2 instanceof Data_List_Types.Cons) {\n var v3 = Data_List_Internal.insertAndLookupBy(p)(v2.value0)(v);\n if (v3.found) {\n $tco_var_v = v3.result;\n $tco_var_v1 = v1;\n $copy_v2 = v2.value1;\n return;\n };\n $tco_var_v = v3.result;\n $tco_var_v1 = new Data_List_Types.Cons(v2.value0, v1);\n $copy_v2 = v2.value1;\n return;\n };\n throw new Error(\"Failed pattern match at Data.List (line 673, column 5 - line 673, column 23): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $tco_var_v1, $copy_v2);\n };\n return $tco_result;\n };\n };\n };\n var $445 = go(Data_List_Internal.emptySet)(Data_List_Types.Nil.value);\n return function ($446) {\n return reverse($445($446));\n };\n};\nvar nub = function (dictOrd) {\n return nubBy(Data_Ord.compare(dictOrd));\n};\nvar newtypePattern = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar mapMaybe = function (f) {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return reverse(v);\n };\n if (v1 instanceof Data_List_Types.Cons) {\n var v2 = f(v1.value0);\n if (v2 instanceof Data_Maybe.Nothing) {\n $tco_var_v = v;\n $copy_v1 = v1.value1;\n return;\n };\n if (v2 instanceof Data_Maybe.Just) {\n $tco_var_v = new Data_List_Types.Cons(v2.value0, v);\n $copy_v1 = v1.value1;\n return;\n };\n throw new Error(\"Failed pattern match at Data.List (line 419, column 5 - line 421, column 32): \" + [ v2.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.List (line 417, column 3 - line 417, column 27): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n };\n return go(Data_List_Types.Nil.value);\n};\nvar manyRec = function (dictMonadRec) {\n var bind1 = Control_Bind.bind((dictMonadRec.Monad0()).Bind1());\n var tailRecM = Control_Monad_Rec_Class.tailRecM(dictMonadRec);\n return function (dictAlternative) {\n var Alt0 = (dictAlternative.Plus1()).Alt0();\n var alt = Control_Alt.alt(Alt0);\n var map1 = Data_Functor.map(Alt0.Functor0());\n var pure = Control_Applicative.pure(dictAlternative.Applicative0());\n return function (p) {\n var go = function (acc) {\n return bind1(alt(map1(Control_Monad_Rec_Class.Loop.create)(p))(pure(new Control_Monad_Rec_Class.Done(Data_Unit.unit))))(function (aa) {\n return pure(bimap(function (v) {\n return new Data_List_Types.Cons(v, acc);\n })(function (v) {\n return reverse(acc);\n })(aa));\n });\n };\n return tailRecM(go)(Data_List_Types.Nil.value);\n };\n };\n};\nvar someRec = function (dictMonadRec) {\n var manyRec1 = manyRec(dictMonadRec);\n return function (dictAlternative) {\n var apply = Control_Apply.apply((dictAlternative.Applicative0()).Apply0());\n var map1 = Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0());\n var manyRec2 = manyRec1(dictAlternative);\n return function (v) {\n return apply(map1(Data_List_Types.Cons.create)(v))(manyRec2(v));\n };\n };\n};\nvar some = function (dictAlternative) {\n var apply = Control_Apply.apply((dictAlternative.Applicative0()).Apply0());\n var map1 = Data_Functor.map(((dictAlternative.Plus1()).Alt0()).Functor0());\n return function (dictLazy) {\n var defer = Control_Lazy.defer(dictLazy);\n return function (v) {\n return apply(map1(Data_List_Types.Cons.create)(v))(defer(function (v1) {\n return many(dictAlternative)(dictLazy)(v);\n }));\n };\n };\n};\nvar many = function (dictAlternative) {\n var alt = Control_Alt.alt((dictAlternative.Plus1()).Alt0());\n var pure = Control_Applicative.pure(dictAlternative.Applicative0());\n return function (dictLazy) {\n return function (v) {\n return alt(some(dictAlternative)(dictLazy)(v))(pure(Data_List_Types.Nil.value));\n };\n };\n};\nvar length = /* #__PURE__ */ foldl(function (acc) {\n return function (v) {\n return acc + 1 | 0;\n };\n})(0);\nvar last = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v instanceof Data_List_Types.Cons && v.value1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return new Data_Maybe.Just(v.value0);\n };\n if (v instanceof Data_List_Types.Cons) {\n $copy_v = v.value1;\n return;\n };\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n};\nvar insertBy = function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Data_List_Types.Nil) {\n return singleton(v1);\n };\n if (v2 instanceof Data_List_Types.Cons) {\n var v3 = v(v1)(v2.value0);\n if (v3 instanceof Data_Ordering.GT) {\n return new Data_List_Types.Cons(v2.value0, insertBy(v)(v1)(v2.value1));\n };\n return new Data_List_Types.Cons(v1, v2);\n };\n throw new Error(\"Failed pattern match at Data.List (line 216, column 1 - line 216, column 68): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n};\nvar insertAt = function (v) {\n return function (v1) {\n return function (v2) {\n if (v === 0) {\n return new Data_Maybe.Just(new Data_List_Types.Cons(v1, v2));\n };\n if (v2 instanceof Data_List_Types.Cons) {\n return map(function (v3) {\n return new Data_List_Types.Cons(v2.value0, v3);\n })(insertAt(v - 1 | 0)(v1)(v2.value1));\n };\n return Data_Maybe.Nothing.value;\n };\n };\n};\nvar insert = function (dictOrd) {\n return insertBy(Data_Ord.compare(dictOrd));\n};\nvar init = function (lst) {\n return map(function (v) {\n return v.init;\n })(unsnoc(lst));\n};\nvar index = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Data_List_Types.Cons && v1 === 0) {\n $tco_done = true;\n return new Data_Maybe.Just(v.value0);\n };\n if (v instanceof Data_List_Types.Cons) {\n $tco_var_v = v.value1;\n $copy_v1 = v1 - 1 | 0;\n return;\n };\n throw new Error(\"Failed pattern match at Data.List (line 281, column 1 - line 281, column 44): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n};\nvar head = function (v) {\n if (v instanceof Data_List_Types.Nil) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Data_List_Types.Cons) {\n return new Data_Maybe.Just(v.value0);\n };\n throw new Error(\"Failed pattern match at Data.List (line 230, column 1 - line 230, column 22): \" + [ v.constructor.name ]);\n};\nvar transpose = function (v) {\n if (v instanceof Data_List_Types.Nil) {\n return Data_List_Types.Nil.value;\n };\n if (v instanceof Data_List_Types.Cons && v.value0 instanceof Data_List_Types.Nil) {\n return transpose(v.value1);\n };\n if (v instanceof Data_List_Types.Cons && v.value0 instanceof Data_List_Types.Cons) {\n return new Data_List_Types.Cons(new Data_List_Types.Cons(v.value0.value0, mapMaybe(head)(v.value1)), transpose(new Data_List_Types.Cons(v.value0.value1, mapMaybe(tail)(v.value1))));\n };\n throw new Error(\"Failed pattern match at Data.List (line 813, column 1 - line 813, column 54): \" + [ v.constructor.name ]);\n};\nvar groupBy = function (v) {\n return function (v1) {\n if (v1 instanceof Data_List_Types.Nil) {\n return Data_List_Types.Nil.value;\n };\n if (v1 instanceof Data_List_Types.Cons) {\n var v2 = span(v(v1.value0))(v1.value1);\n return new Data_List_Types.Cons(new Data_NonEmpty.NonEmpty(v1.value0, v2.init), groupBy(v)(v2.rest));\n };\n throw new Error(\"Failed pattern match at Data.List (line 609, column 1 - line 609, column 80): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n};\nvar groupAllBy = function (p) {\n var $447 = groupBy(function (x) {\n return function (y) {\n return eq(p(x)(y))(Data_Ordering.EQ.value);\n };\n });\n var $448 = sortBy(p);\n return function ($449) {\n return $447($448($449));\n };\n};\nvar group = function (dictEq) {\n return groupBy(Data_Eq.eq(dictEq));\n};\nvar groupAll = function (dictOrd) {\n var $450 = group(dictOrd.Eq0());\n var $451 = sort(dictOrd);\n return function ($452) {\n return $450($451($452));\n };\n};\nvar fromFoldable = function (dictFoldable) {\n return Data_Foldable.foldr(dictFoldable)(Data_List_Types.Cons.create)(Data_List_Types.Nil.value);\n};\nvar foldM = function (dictMonad) {\n var pure = Control_Applicative.pure(dictMonad.Applicative0());\n var bind1 = Control_Bind.bind(dictMonad.Bind1());\n return function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Data_List_Types.Nil) {\n return pure(v1);\n };\n if (v2 instanceof Data_List_Types.Cons) {\n return bind1(v(v1)(v2.value0))(function (b$prime) {\n return foldM(dictMonad)(v)(b$prime)(v2.value1);\n });\n };\n throw new Error(\"Failed pattern match at Data.List (line 824, column 1 - line 824, column 72): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n };\n};\nvar findIndex = function (fn) {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v1 instanceof Data_List_Types.Cons) {\n if (fn(v1.value0)) {\n $tco_done = true;\n return new Data_Maybe.Just(v);\n };\n if (Data_Boolean.otherwise) {\n $tco_var_v = v + 1 | 0;\n $copy_v1 = v1.value1;\n return;\n };\n };\n if (v1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.List (line 301, column 3 - line 301, column 35): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n };\n return go(0);\n};\nvar findLastIndex = function (fn) {\n return function (xs) {\n return map(function (v) {\n return (length(xs) - 1 | 0) - v | 0;\n })(findIndex(fn)(reverse(xs)));\n };\n};\nvar filterM = function (dictMonad) {\n var pure = Control_Applicative.pure(dictMonad.Applicative0());\n var bind1 = Control_Bind.bind(dictMonad.Bind1());\n return function (v) {\n return function (v1) {\n if (v1 instanceof Data_List_Types.Nil) {\n return pure(Data_List_Types.Nil.value);\n };\n if (v1 instanceof Data_List_Types.Cons) {\n return bind1(v(v1.value0))(function (b) {\n return bind1(filterM(dictMonad)(v)(v1.value1))(function (xs$prime) {\n return pure((function () {\n if (b) {\n return new Data_List_Types.Cons(v1.value0, xs$prime);\n };\n return xs$prime;\n })());\n });\n });\n };\n throw new Error(\"Failed pattern match at Data.List (line 403, column 1 - line 403, column 75): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n};\nvar filter = function (p) {\n var go = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return reverse(v);\n };\n if (v1 instanceof Data_List_Types.Cons) {\n if (p(v1.value0)) {\n $tco_var_v = new Data_List_Types.Cons(v1.value0, v);\n $copy_v1 = v1.value1;\n return;\n };\n if (Data_Boolean.otherwise) {\n $tco_var_v = v;\n $copy_v1 = v1.value1;\n return;\n };\n };\n throw new Error(\"Failed pattern match at Data.List (line 390, column 3 - line 390, column 27): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n };\n return go(Data_List_Types.Nil.value);\n};\nvar intersectBy = function (v) {\n return function (v1) {\n return function (v2) {\n if (v1 instanceof Data_List_Types.Nil) {\n return Data_List_Types.Nil.value;\n };\n if (v2 instanceof Data_List_Types.Nil) {\n return Data_List_Types.Nil.value;\n };\n return filter(function (x) {\n return any(v(x))(v2);\n })(v1);\n };\n };\n};\nvar intersect = function (dictEq) {\n return intersectBy(Data_Eq.eq(dictEq));\n};\nvar nubByEq = function (v) {\n return function (v1) {\n if (v1 instanceof Data_List_Types.Nil) {\n return Data_List_Types.Nil.value;\n };\n if (v1 instanceof Data_List_Types.Cons) {\n return new Data_List_Types.Cons(v1.value0, nubByEq(v)(filter(function (y) {\n return !v(v1.value0)(y);\n })(v1.value1)));\n };\n throw new Error(\"Failed pattern match at Data.List (line 705, column 1 - line 705, column 61): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n};\nvar nubEq = function (dictEq) {\n return nubByEq(Data_Eq.eq(dictEq));\n};\nvar eqPattern = function (dictEq) {\n var eq2 = Data_Eq.eq(Data_List_Types.eqList(dictEq));\n return {\n eq: function (x) {\n return function (y) {\n return eq2(x)(y);\n };\n }\n };\n};\nvar ordPattern = function (dictOrd) {\n var compare = Data_Ord.compare(Data_List_Types.ordList(dictOrd));\n var eqPattern1 = eqPattern(dictOrd.Eq0());\n return {\n compare: function (x) {\n return function (y) {\n return compare(x)(y);\n };\n },\n Eq0: function () {\n return eqPattern1;\n }\n };\n};\nvar elemLastIndex = function (dictEq) {\n var eq2 = Data_Eq.eq(dictEq);\n return function (x) {\n return findLastIndex(function (v) {\n return eq2(v)(x);\n });\n };\n};\nvar elemIndex = function (dictEq) {\n var eq2 = Data_Eq.eq(dictEq);\n return function (x) {\n return findIndex(function (v) {\n return eq2(v)(x);\n });\n };\n};\nvar dropWhile = function (p) {\n var go = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v instanceof Data_List_Types.Cons && p(v.value0)) {\n $copy_v = v.value1;\n return;\n };\n $tco_done = true;\n return v;\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n };\n return go;\n};\nvar dropEnd = function (n) {\n return function (xs) {\n return take(length(xs) - n | 0)(xs);\n };\n};\nvar drop = function ($copy_v) {\n return function ($copy_v1) {\n var $tco_var_v = $copy_v;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1) {\n if (v < 1) {\n $tco_done = true;\n return v1;\n };\n if (v1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return Data_List_Types.Nil.value;\n };\n if (v1 instanceof Data_List_Types.Cons) {\n $tco_var_v = v - 1 | 0;\n $copy_v1 = v1.value1;\n return;\n };\n throw new Error(\"Failed pattern match at Data.List (line 536, column 1 - line 536, column 42): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $copy_v1);\n };\n return $tco_result;\n };\n};\nvar slice = function (start) {\n return function (end) {\n return function (xs) {\n return take(end - start | 0)(drop(start)(xs));\n };\n };\n};\nvar takeEnd = function (n) {\n return function (xs) {\n return drop(length(xs) - n | 0)(xs);\n };\n};\nvar deleteBy = function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Data_List_Types.Nil) {\n return Data_List_Types.Nil.value;\n };\n if (v2 instanceof Data_List_Types.Cons && v(v1)(v2.value0)) {\n return v2.value1;\n };\n if (v2 instanceof Data_List_Types.Cons) {\n return new Data_List_Types.Cons(v2.value0, deleteBy(v)(v1)(v2.value1));\n };\n throw new Error(\"Failed pattern match at Data.List (line 732, column 1 - line 732, column 67): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n };\n};\nvar unionBy = function (eq2) {\n return function (xs) {\n return function (ys) {\n return append1(xs)(foldl(Data_Function.flip(deleteBy(eq2)))(nubByEq(eq2)(ys))(xs));\n };\n };\n};\nvar union = function (dictEq) {\n return unionBy(Data_Eq.eq(dictEq));\n};\nvar deleteAt = function (v) {\n return function (v1) {\n if (v === 0 && v1 instanceof Data_List_Types.Cons) {\n return new Data_Maybe.Just(v1.value1);\n };\n if (v1 instanceof Data_List_Types.Cons) {\n return map(function (v2) {\n return new Data_List_Types.Cons(v1.value0, v2);\n })(deleteAt(v - 1 | 0)(v1.value1));\n };\n return Data_Maybe.Nothing.value;\n };\n};\nvar $$delete = function (dictEq) {\n return deleteBy(Data_Eq.eq(dictEq));\n};\nvar difference = function (dictEq) {\n return foldl(Data_Function.flip($$delete(dictEq)));\n};\nvar concatMap = /* #__PURE__ */ Data_Function.flip(bind);\nvar concat = function (v) {\n return bind(v)(identity);\n};\nvar catMaybes = /* #__PURE__ */ mapMaybe(identity);\nvar alterAt = function (v) {\n return function (v1) {\n return function (v2) {\n if (v === 0 && v2 instanceof Data_List_Types.Cons) {\n return new Data_Maybe.Just((function () {\n var v3 = v1(v2.value0);\n if (v3 instanceof Data_Maybe.Nothing) {\n return v2.value1;\n };\n if (v3 instanceof Data_Maybe.Just) {\n return new Data_List_Types.Cons(v3.value0, v2.value1);\n };\n throw new Error(\"Failed pattern match at Data.List (line 352, column 3 - line 354, column 23): \" + [ v3.constructor.name ]);\n })());\n };\n if (v2 instanceof Data_List_Types.Cons) {\n return map(function (v3) {\n return new Data_List_Types.Cons(v2.value0, v3);\n })(alterAt(v - 1 | 0)(v1)(v2.value1));\n };\n return Data_Maybe.Nothing.value;\n };\n };\n};\nvar modifyAt = function (n) {\n return function (f) {\n return alterAt(n)(function ($453) {\n return Data_Maybe.Just.create(f($453));\n });\n };\n};\nexport {\n toUnfoldable,\n fromFoldable,\n singleton,\n range,\n some,\n someRec,\n many,\n manyRec,\n $$null as null,\n length,\n snoc,\n insert,\n insertBy,\n head,\n last,\n tail,\n init,\n uncons,\n unsnoc,\n index,\n elemIndex,\n elemLastIndex,\n findIndex,\n findLastIndex,\n insertAt,\n deleteAt,\n updateAt,\n modifyAt,\n alterAt,\n reverse,\n concat,\n concatMap,\n filter,\n filterM,\n mapMaybe,\n catMaybes,\n sort,\n sortBy,\n Pattern,\n stripPrefix,\n slice,\n take,\n takeEnd,\n takeWhile,\n drop,\n dropEnd,\n dropWhile,\n span,\n group,\n groupAll,\n groupBy,\n groupAllBy,\n partition,\n nub,\n nubBy,\n nubEq,\n nubByEq,\n union,\n unionBy,\n $$delete as delete,\n deleteBy,\n difference,\n intersect,\n intersectBy,\n zipWith,\n zipWithA,\n zip,\n unzip,\n transpose,\n foldM,\n eqPattern,\n ordPattern,\n newtypePattern,\n showPattern\n};\nexport {\n all,\n any,\n elem,\n find,\n findMap,\n fold,\n foldMap,\n foldl,\n foldr,\n intercalate,\n notElem\n} from \"../Data.Foldable/index.js\";\nexport {\n Cons,\n Nil\n} from \"../Data.List.Types/index.js\";\nexport {\n scanl,\n scanr\n} from \"../Data.Traversable/index.js\";\n", "// module Partial.Unsafe\n\nexport const _unsafePartial = function (f) {\n return f();\n};\n", "// module Partial\n\nexport const _crashWith = function (msg) {\n throw new Error(msg);\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nvar crashWith = function () {\n return $foreign[\"_crashWith\"];\n};\nvar crashWith1 = /* #__PURE__ */ crashWith();\nvar crash = function () {\n return crashWith1(\"Partial.crash: partial function\");\n};\nexport {\n crash,\n crashWith\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Partial from \"../Partial/index.js\";\nvar crashWith = /* #__PURE__ */ Partial.crashWith();\nvar unsafePartial = $foreign[\"_unsafePartial\"];\nvar unsafeCrashWith = function (msg) {\n return unsafePartial(function () {\n return crashWith(msg);\n });\n};\nexport {\n unsafePartial,\n unsafeCrashWith\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_List from \"../Data.List/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_NonEmpty from \"../Data.NonEmpty/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Semigroup_Foldable from \"../Data.Semigroup.Foldable/index.js\";\nimport * as Data_Semigroup_Traversable from \"../Data.Semigroup.Traversable/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nimport * as Partial_Unsafe from \"../Partial.Unsafe/index.js\";\nvar sequence1 = /* #__PURE__ */ Data_Semigroup_Traversable.sequence1(Data_List_Types.traversable1NonEmptyList);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Data_List_Types.functorNonEmptyList);\nvar bind = /* #__PURE__ */ Control_Bind.bind(Data_List_Types.bindNonEmptyList);\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar append1 = /* #__PURE__ */ Data_Semigroup.append(Data_List_Types.semigroupList);\nvar zipWith = function (f) {\n return function (v) {\n return function (v1) {\n return new Data_NonEmpty.NonEmpty(f(v.value0)(v1.value0), Data_List.zipWith(f)(v.value1)(v1.value1));\n };\n };\n};\nvar zipWithA = function (dictApplicative) {\n var sequence11 = sequence1(dictApplicative.Apply0());\n return function (f) {\n return function (xs) {\n return function (ys) {\n return sequence11(zipWith(f)(xs)(ys));\n };\n };\n };\n};\nvar zip = /* #__PURE__ */ (function () {\n return zipWith(Data_Tuple.Tuple.create);\n})();\nvar wrappedOperation2 = function (name) {\n return function (f) {\n return function (v) {\n return function (v1) {\n var v2 = f(new Data_List_Types.Cons(v.value0, v.value1))(new Data_List_Types.Cons(v1.value0, v1.value1));\n if (v2 instanceof Data_List_Types.Cons) {\n return new Data_NonEmpty.NonEmpty(v2.value0, v2.value1);\n };\n if (v2 instanceof Data_List_Types.Nil) {\n return Partial_Unsafe.unsafeCrashWith(\"Impossible: empty list in NonEmptyList \" + name);\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 105, column 3 - line 107, column 81): \" + [ v2.constructor.name ]);\n };\n };\n };\n};\nvar wrappedOperation = function (name) {\n return function (f) {\n return function (v) {\n var v1 = f(new Data_List_Types.Cons(v.value0, v.value1));\n if (v1 instanceof Data_List_Types.Cons) {\n return new Data_NonEmpty.NonEmpty(v1.value0, v1.value1);\n };\n if (v1 instanceof Data_List_Types.Nil) {\n return Partial_Unsafe.unsafeCrashWith(\"Impossible: empty list in NonEmptyList \" + name);\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 92, column 3 - line 94, column 81): \" + [ v1.constructor.name ]);\n };\n };\n};\nvar updateAt = function (i) {\n return function (a) {\n return function (v) {\n if (i === 0) {\n return new Data_Maybe.Just(new Data_NonEmpty.NonEmpty(a, v.value1));\n };\n if (Data_Boolean.otherwise) {\n return map(function ($193) {\n return Data_List_Types.NonEmptyList((function (v1) {\n return new Data_NonEmpty.NonEmpty(v.value0, v1);\n })($193));\n })(Data_List.updateAt(i - 1 | 0)(a)(v.value1));\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 198, column 1 - line 198, column 75): \" + [ i.constructor.name, a.constructor.name, v.constructor.name ]);\n };\n };\n};\nvar unzip = function (ts) {\n return new Data_Tuple.Tuple(map1(Data_Tuple.fst)(ts), map1(Data_Tuple.snd)(ts));\n};\nvar unsnoc = function (v) {\n var v1 = Data_List.unsnoc(v.value1);\n if (v1 instanceof Data_Maybe.Nothing) {\n return {\n init: Data_List_Types.Nil.value,\n last: v.value0\n };\n };\n if (v1 instanceof Data_Maybe.Just) {\n return {\n init: new Data_List_Types.Cons(v.value0, v1.value0.init),\n last: v1.value0.last\n };\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 160, column 35 - line 162, column 50): \" + [ v1.constructor.name ]);\n};\nvar unionBy = /* #__PURE__ */ (function () {\n var $194 = wrappedOperation2(\"unionBy\");\n return function ($195) {\n return $194(Data_List.unionBy($195));\n };\n})();\nvar union = function (dictEq) {\n return wrappedOperation2(\"union\")(Data_List.union(dictEq));\n};\nvar uncons = function (v) {\n return {\n head: v.value0,\n tail: v.value1\n };\n};\nvar toList = function (v) {\n return new Data_List_Types.Cons(v.value0, v.value1);\n};\nvar toUnfoldable = function (dictUnfoldable) {\n var $196 = Data_Unfoldable.unfoldr(dictUnfoldable)(function (xs) {\n return map(function (rec) {\n return new Data_Tuple.Tuple(rec.head, rec.tail);\n })(Data_List.uncons(xs));\n });\n return function ($197) {\n return $196(toList($197));\n };\n};\nvar tail = function (v) {\n return v.value1;\n};\nvar sortBy = /* #__PURE__ */ (function () {\n var $198 = wrappedOperation(\"sortBy\");\n return function ($199) {\n return $198(Data_List.sortBy($199));\n };\n})();\nvar sort = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (xs) {\n return sortBy(compare)(xs);\n };\n};\nvar snoc = function (v) {\n return function (y) {\n return new Data_NonEmpty.NonEmpty(v.value0, Data_List.snoc(v.value1)(y));\n };\n};\nvar singleton = /* #__PURE__ */ (function () {\n var $200 = Data_NonEmpty.singleton(Data_List_Types.plusList);\n return function ($201) {\n return Data_List_Types.NonEmptyList($200($201));\n };\n})();\nvar snoc$prime = function (v) {\n return function (v1) {\n if (v instanceof Data_List_Types.Cons) {\n return new Data_NonEmpty.NonEmpty(v.value0, Data_List.snoc(v.value1)(v1));\n };\n if (v instanceof Data_List_Types.Nil) {\n return singleton(v1);\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 140, column 1 - line 140, column 51): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n};\nvar reverse = /* #__PURE__ */ wrappedOperation(\"reverse\")(Data_List.reverse);\nvar nubEq = function (dictEq) {\n return wrappedOperation(\"nubEq\")(Data_List.nubEq(dictEq));\n};\nvar nubByEq = /* #__PURE__ */ (function () {\n var $202 = wrappedOperation(\"nubByEq\");\n return function ($203) {\n return $202(Data_List.nubByEq($203));\n };\n})();\nvar nubBy = /* #__PURE__ */ (function () {\n var $204 = wrappedOperation(\"nubBy\");\n return function ($205) {\n return $204(Data_List.nubBy($205));\n };\n})();\nvar nub = function (dictOrd) {\n return wrappedOperation(\"nub\")(Data_List.nub(dictOrd));\n};\nvar modifyAt = function (i) {\n return function (f) {\n return function (v) {\n if (i === 0) {\n return new Data_Maybe.Just(new Data_NonEmpty.NonEmpty(f(v.value0), v.value1));\n };\n if (Data_Boolean.otherwise) {\n return map(function ($206) {\n return Data_List_Types.NonEmptyList((function (v1) {\n return new Data_NonEmpty.NonEmpty(v.value0, v1);\n })($206));\n })(Data_List.modifyAt(i - 1 | 0)(f)(v.value1));\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 203, column 1 - line 203, column 82): \" + [ i.constructor.name, f.constructor.name, v.constructor.name ]);\n };\n };\n};\nvar lift = function (f) {\n return function (v) {\n return f(new Data_List_Types.Cons(v.value0, v.value1));\n };\n};\nvar mapMaybe = function ($207) {\n return lift(Data_List.mapMaybe($207));\n};\nvar partition = function ($208) {\n return lift(Data_List.partition($208));\n};\nvar span = function ($209) {\n return lift(Data_List.span($209));\n};\nvar take = function ($210) {\n return lift(Data_List.take($210));\n};\nvar takeWhile = function ($211) {\n return lift(Data_List.takeWhile($211));\n};\nvar length = function (v) {\n return 1 + Data_List.length(v.value1) | 0;\n};\nvar last = function (v) {\n return Data_Maybe.fromMaybe(v.value0)(Data_List.last(v.value1));\n};\nvar intersectBy = /* #__PURE__ */ (function () {\n var $212 = wrappedOperation2(\"intersectBy\");\n return function ($213) {\n return $212(Data_List.intersectBy($213));\n };\n})();\nvar intersect = function (dictEq) {\n return wrappedOperation2(\"intersect\")(Data_List.intersect(dictEq));\n};\nvar insertAt = function (i) {\n return function (a) {\n return function (v) {\n if (i === 0) {\n return new Data_Maybe.Just(new Data_NonEmpty.NonEmpty(a, new Data_List_Types.Cons(v.value0, v.value1)));\n };\n if (Data_Boolean.otherwise) {\n return map(function ($214) {\n return Data_List_Types.NonEmptyList((function (v1) {\n return new Data_NonEmpty.NonEmpty(v.value0, v1);\n })($214));\n })(Data_List.insertAt(i - 1 | 0)(a)(v.value1));\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 193, column 1 - line 193, column 75): \" + [ i.constructor.name, a.constructor.name, v.constructor.name ]);\n };\n };\n};\nvar init = function (v) {\n return Data_Maybe.maybe(Data_List_Types.Nil.value)(function (v1) {\n return new Data_List_Types.Cons(v.value0, v1);\n })(Data_List.init(v.value1));\n};\nvar index = function (v) {\n return function (i) {\n if (i === 0) {\n return new Data_Maybe.Just(v.value0);\n };\n if (Data_Boolean.otherwise) {\n return Data_List.index(v.value1)(i - 1 | 0);\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 167, column 1 - line 167, column 52): \" + [ v.constructor.name, i.constructor.name ]);\n };\n};\nvar head = function (v) {\n return v.value0;\n};\nvar groupBy = /* #__PURE__ */ (function () {\n var $215 = wrappedOperation(\"groupBy\");\n return function ($216) {\n return $215(Data_List.groupBy($216));\n };\n})();\nvar groupAllBy = /* #__PURE__ */ (function () {\n var $217 = wrappedOperation(\"groupAllBy\");\n return function ($218) {\n return $217(Data_List.groupAllBy($218));\n };\n})();\nvar groupAll = function (dictOrd) {\n return wrappedOperation(\"groupAll\")(Data_List.groupAll(dictOrd));\n};\nvar group = function (dictEq) {\n return wrappedOperation(\"group\")(Data_List.group(dictEq));\n};\nvar fromList = function (v) {\n if (v instanceof Data_List_Types.Nil) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Data_List_Types.Cons) {\n return new Data_Maybe.Just(new Data_NonEmpty.NonEmpty(v.value0, v.value1));\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 121, column 1 - line 121, column 57): \" + [ v.constructor.name ]);\n};\nvar fromFoldable = function (dictFoldable) {\n var $219 = Data_List.fromFoldable(dictFoldable);\n return function ($220) {\n return fromList($219($220));\n };\n};\nvar foldM = function (dictMonad) {\n var bind1 = Control_Bind.bind(dictMonad.Bind1());\n var foldM1 = Data_List.foldM(dictMonad);\n return function (f) {\n return function (b) {\n return function (v) {\n return bind1(f(b)(v.value0))(function (b$prime) {\n return foldM1(f)(b$prime)(v.value1);\n });\n };\n };\n };\n};\nvar findLastIndex = function (f) {\n return function (v) {\n var v1 = Data_List.findLastIndex(f)(v.value1);\n if (v1 instanceof Data_Maybe.Just) {\n return new Data_Maybe.Just(v1.value0 + 1 | 0);\n };\n if (v1 instanceof Data_Maybe.Nothing) {\n if (f(v.value0)) {\n return new Data_Maybe.Just(0);\n };\n if (Data_Boolean.otherwise) {\n return Data_Maybe.Nothing.value;\n };\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 187, column 3 - line 191, column 29): \" + [ v1.constructor.name ]);\n };\n};\nvar findIndex = function (f) {\n return function (v) {\n if (f(v.value0)) {\n return new Data_Maybe.Just(0);\n };\n if (Data_Boolean.otherwise) {\n return map(function (v1) {\n return v1 + 1 | 0;\n })(Data_List.findIndex(f)(v.value1));\n };\n throw new Error(\"Failed pattern match at Data.List.NonEmpty (line 180, column 1 - line 180, column 69): \" + [ f.constructor.name, v.constructor.name ]);\n };\n};\nvar filterM = function (dictMonad) {\n var $221 = Data_List.filterM(dictMonad);\n return function ($222) {\n return lift($221($222));\n };\n};\nvar filter = function ($223) {\n return lift(Data_List.filter($223));\n};\nvar elemLastIndex = function (dictEq) {\n var eq1 = Data_Eq.eq(dictEq);\n return function (x) {\n return findLastIndex(function (v) {\n return eq1(v)(x);\n });\n };\n};\nvar elemIndex = function (dictEq) {\n var eq1 = Data_Eq.eq(dictEq);\n return function (x) {\n return findIndex(function (v) {\n return eq1(v)(x);\n });\n };\n};\nvar dropWhile = function ($224) {\n return lift(Data_List.dropWhile($224));\n};\nvar drop = function ($225) {\n return lift(Data_List.drop($225));\n};\nvar cons$prime = function (x) {\n return function (xs) {\n return new Data_NonEmpty.NonEmpty(x, xs);\n };\n};\nvar cons = function (y) {\n return function (v) {\n return new Data_NonEmpty.NonEmpty(y, new Data_List_Types.Cons(v.value0, v.value1));\n };\n};\nvar concatMap = /* #__PURE__ */ Data_Function.flip(bind);\nvar concat = function (v) {\n return bind(v)(identity);\n};\nvar catMaybes = /* #__PURE__ */ lift(Data_List.catMaybes);\nvar appendFoldable = function (dictFoldable) {\n var fromFoldable1 = Data_List.fromFoldable(dictFoldable);\n return function (v) {\n return function (ys) {\n return new Data_NonEmpty.NonEmpty(v.value0, append1(v.value1)(fromFoldable1(ys)));\n };\n };\n};\nexport {\n toUnfoldable,\n fromFoldable,\n fromList,\n toList,\n singleton,\n length,\n cons,\n cons$prime,\n snoc,\n snoc$prime,\n head,\n last,\n tail,\n init,\n uncons,\n unsnoc,\n index,\n elemIndex,\n elemLastIndex,\n findIndex,\n findLastIndex,\n insertAt,\n updateAt,\n modifyAt,\n reverse,\n concat,\n concatMap,\n filter,\n filterM,\n mapMaybe,\n catMaybes,\n appendFoldable,\n sort,\n sortBy,\n take,\n takeWhile,\n drop,\n dropWhile,\n span,\n group,\n groupAll,\n groupBy,\n groupAllBy,\n partition,\n nub,\n nubBy,\n nubEq,\n nubByEq,\n union,\n unionBy,\n intersect,\n intersectBy,\n zipWith,\n zipWithA,\n zip,\n unzip,\n foldM\n};\nexport {\n all,\n any,\n elem,\n find,\n findMap,\n fold,\n foldMap,\n foldl,\n foldr,\n intercalate,\n notElem\n} from \"../Data.Foldable/index.js\";\nexport {\n NonEmptyList\n} from \"../Data.List.Types/index.js\";\nexport {\n fold1,\n foldMap1,\n for1_,\n sequence1_,\n traverse1_\n} from \"../Data.Semigroup.Foldable/index.js\";\nexport {\n sequence1,\n traverse1,\n traverse1Default\n} from \"../Data.Semigroup.Traversable/index.js\";\nexport {\n scanl,\n scanr\n} from \"../Data.Traversable/index.js\";\n", "/* eslint-disable no-eq-null, eqeqeq */\n\nconst nullImpl = null;\nexport { nullImpl as null };\n\nexport function nullable(a, r, f) {\n return a == null ? r : f(a);\n}\n\nexport function notNull(x) {\n return x;\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nvar toNullable = /* #__PURE__ */ Data_Maybe.maybe($foreign[\"null\"])($foreign.notNull);\nvar toMaybe = function (n) {\n return $foreign.nullable(n, Data_Maybe.Nothing.value, Data_Maybe.Just.create);\n};\nvar showNullable = function (dictShow) {\n return {\n show: (function () {\n var $17 = Data_Maybe.maybe(\"null\")(Data_Show.show(dictShow));\n return function ($18) {\n return $17(toMaybe($18));\n };\n })()\n };\n};\nvar eqNullable = function (dictEq) {\n return {\n eq: Data_Function.on(Data_Eq.eq(Data_Maybe.eqMaybe(dictEq)))(toMaybe)\n };\n};\nvar ordNullable = function (dictOrd) {\n var eqNullable1 = eqNullable(dictOrd.Eq0());\n return {\n compare: Data_Function.on(Data_Ord.compare(Data_Maybe.ordMaybe(dictOrd)))(toMaybe),\n Eq0: function () {\n return eqNullable1;\n }\n };\n};\nvar eq1Nullable = {\n eq1: function (dictEq) {\n return Data_Eq.eq(eqNullable(dictEq));\n }\n};\nvar ord1Nullable = {\n compare1: function (dictOrd) {\n return Data_Ord.compare(ordNullable(dictOrd));\n },\n Eq10: function () {\n return eq1Nullable;\n }\n};\nexport {\n null,\n notNull\n} from \"./foreign.js\";\nexport {\n toMaybe,\n toNullable,\n showNullable,\n eqNullable,\n eq1Nullable,\n ordNullable,\n ord1Nullable\n};\n", "/* globals setImmediate, clearImmediate, setTimeout, clearTimeout */\n/* eslint-disable no-unused-vars, no-prototype-builtins, no-use-before-define, no-unused-labels, no-param-reassign */\nvar Aff = function () {\n // A unique value for empty.\n var EMPTY = {};\n\n /*\n\n An awkward approximation. We elide evidence we would otherwise need in PS for\n efficiency sake.\n\n data Aff eff a\n = Pure a\n | Throw Error\n | Catch (Aff eff a) (Error -> Aff eff a)\n | Sync (Eff eff a)\n | Async ((Either Error a -> Eff eff Unit) -> Eff eff (Canceler eff))\n | forall b. Bind (Aff eff b) (b -> Aff eff a)\n | forall b. Bracket (Aff eff b) (BracketConditions eff b) (b -> Aff eff a)\n | forall b. Fork Boolean (Aff eff b) ?(Fiber eff b -> a)\n | Sequential (ParAff aff a)\n\n */\n var PURE = \"Pure\";\n var THROW = \"Throw\";\n var CATCH = \"Catch\";\n var SYNC = \"Sync\";\n var ASYNC = \"Async\";\n var BIND = \"Bind\";\n var BRACKET = \"Bracket\";\n var FORK = \"Fork\";\n var SEQ = \"Sequential\";\n\n /*\n\n data ParAff eff a\n = forall b. Map (b -> a) (ParAff eff b)\n | forall b. Apply (ParAff eff (b -> a)) (ParAff eff b)\n | Alt (ParAff eff a) (ParAff eff a)\n | ?Par (Aff eff a)\n\n */\n var MAP = \"Map\";\n var APPLY = \"Apply\";\n var ALT = \"Alt\";\n\n // Various constructors used in interpretation\n var CONS = \"Cons\"; // Cons-list, for stacks\n var RESUME = \"Resume\"; // Continue indiscriminately\n var RELEASE = \"Release\"; // Continue with bracket finalizers\n var FINALIZER = \"Finalizer\"; // A non-interruptible effect\n var FINALIZED = \"Finalized\"; // Marker for finalization\n var FORKED = \"Forked\"; // Reference to a forked fiber, with resumption stack\n var FIBER = \"Fiber\"; // Actual fiber reference\n var THUNK = \"Thunk\"; // Primed effect, ready to invoke\n\n function Aff(tag, _1, _2, _3) {\n this.tag = tag;\n this._1 = _1;\n this._2 = _2;\n this._3 = _3;\n }\n\n function AffCtr(tag) {\n var fn = function (_1, _2, _3) {\n return new Aff(tag, _1, _2, _3);\n };\n fn.tag = tag;\n return fn;\n }\n\n function nonCanceler(error) {\n return new Aff(PURE, void 0);\n }\n\n function runEff(eff) {\n try {\n eff();\n } catch (error) {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n }\n\n function runSync(left, right, eff) {\n try {\n return right(eff());\n } catch (error) {\n return left(error);\n }\n }\n\n function runAsync(left, eff, k) {\n try {\n return eff(k)();\n } catch (error) {\n k(left(error))();\n return nonCanceler;\n }\n }\n\n var Scheduler = function () {\n var limit = 1024;\n var size = 0;\n var ix = 0;\n var queue = new Array(limit);\n var draining = false;\n\n function drain() {\n var thunk;\n draining = true;\n while (size !== 0) {\n size--;\n thunk = queue[ix];\n queue[ix] = void 0;\n ix = (ix + 1) % limit;\n thunk();\n }\n draining = false;\n }\n\n return {\n isDraining: function () {\n return draining;\n },\n enqueue: function (cb) {\n var i, tmp;\n if (size === limit) {\n tmp = draining;\n drain();\n draining = tmp;\n }\n\n queue[(ix + size) % limit] = cb;\n size++;\n\n if (!draining) {\n drain();\n }\n }\n };\n }();\n\n function Supervisor(util) {\n var fibers = {};\n var fiberId = 0;\n var count = 0;\n\n return {\n register: function (fiber) {\n var fid = fiberId++;\n fiber.onComplete({\n rethrow: true,\n handler: function (result) {\n return function () {\n count--;\n delete fibers[fid];\n };\n }\n })();\n fibers[fid] = fiber;\n count++;\n },\n isEmpty: function () {\n return count === 0;\n },\n killAll: function (killError, cb) {\n return function () {\n if (count === 0) {\n return cb();\n }\n\n var killCount = 0;\n var kills = {};\n\n function kill(fid) {\n kills[fid] = fibers[fid].kill(killError, function (result) {\n return function () {\n delete kills[fid];\n killCount--;\n if (util.isLeft(result) && util.fromLeft(result)) {\n setTimeout(function () {\n throw util.fromLeft(result);\n }, 0);\n }\n if (killCount === 0) {\n cb();\n }\n };\n })();\n }\n\n for (var k in fibers) {\n if (fibers.hasOwnProperty(k)) {\n killCount++;\n kill(k);\n }\n }\n\n fibers = {};\n fiberId = 0;\n count = 0;\n\n return function (error) {\n return new Aff(SYNC, function () {\n for (var k in kills) {\n if (kills.hasOwnProperty(k)) {\n kills[k]();\n }\n }\n });\n };\n };\n }\n };\n }\n\n // Fiber state machine\n var SUSPENDED = 0; // Suspended, pending a join.\n var CONTINUE = 1; // Interpret the next instruction.\n var STEP_BIND = 2; // Apply the next bind.\n var STEP_RESULT = 3; // Handle potential failure from a result.\n var PENDING = 4; // An async effect is running.\n var RETURN = 5; // The current stack has returned.\n var COMPLETED = 6; // The entire fiber has completed.\n\n function Fiber(util, supervisor, aff) {\n // Monotonically increasing tick, increased on each asynchronous turn.\n var runTick = 0;\n\n // The current branch of the state machine.\n var status = SUSPENDED;\n\n // The current point of interest for the state machine branch.\n var step = aff; // Successful step\n var fail = null; // Failure step\n var interrupt = null; // Asynchronous interrupt\n\n // Stack of continuations for the current fiber.\n var bhead = null;\n var btail = null;\n\n // Stack of attempts and finalizers for error recovery. Every `Cons` is also\n // tagged with current `interrupt` state. We use this to track which items\n // should be ignored or evaluated as a result of a kill.\n var attempts = null;\n\n // A special state is needed for Bracket, because it cannot be killed. When\n // we enter a bracket acquisition or finalizer, we increment the counter,\n // and then decrement once complete.\n var bracketCount = 0;\n\n // Each join gets a new id so they can be revoked.\n var joinId = 0;\n var joins = null;\n var rethrow = true;\n\n // Each invocation of `run` requires a tick. When an asynchronous effect is\n // resolved, we must check that the local tick coincides with the fiber\n // tick before resuming. This prevents multiple async continuations from\n // accidentally resuming the same fiber. A common example may be invoking\n // the provided callback in `makeAff` more than once, but it may also be an\n // async effect resuming after the fiber was already cancelled.\n function run(localRunTick) {\n var tmp, result, attempt;\n while (true) {\n tmp = null;\n result = null;\n attempt = null;\n\n switch (status) {\n case STEP_BIND:\n status = CONTINUE;\n try {\n step = bhead(step);\n if (btail === null) {\n bhead = null;\n } else {\n bhead = btail._1;\n btail = btail._2;\n }\n } catch (e) {\n status = RETURN;\n fail = util.left(e);\n step = null;\n }\n break;\n\n case STEP_RESULT:\n if (util.isLeft(step)) {\n status = RETURN;\n fail = step;\n step = null;\n } else if (bhead === null) {\n status = RETURN;\n } else {\n status = STEP_BIND;\n step = util.fromRight(step);\n }\n break;\n\n case CONTINUE:\n switch (step.tag) {\n case BIND:\n if (bhead) {\n btail = new Aff(CONS, bhead, btail);\n }\n bhead = step._2;\n status = CONTINUE;\n step = step._1;\n break;\n\n case PURE:\n if (bhead === null) {\n status = RETURN;\n step = util.right(step._1);\n } else {\n status = STEP_BIND;\n step = step._1;\n }\n break;\n\n case SYNC:\n status = STEP_RESULT;\n step = runSync(util.left, util.right, step._1);\n break;\n\n case ASYNC:\n status = PENDING;\n step = runAsync(util.left, step._1, function (result) {\n return function () {\n if (runTick !== localRunTick) {\n return;\n }\n runTick++;\n Scheduler.enqueue(function () {\n // It's possible to interrupt the fiber between enqueuing and\n // resuming, so we need to check that the runTick is still\n // valid.\n if (runTick !== localRunTick + 1) {\n return;\n }\n status = STEP_RESULT;\n step = result;\n run(runTick);\n });\n };\n });\n return;\n\n case THROW:\n status = RETURN;\n fail = util.left(step._1);\n step = null;\n break;\n\n // Enqueue the Catch so that we can call the error handler later on\n // in case of an exception.\n case CATCH:\n if (bhead === null) {\n attempts = new Aff(CONS, step, attempts, interrupt);\n } else {\n attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);\n }\n bhead = null;\n btail = null;\n status = CONTINUE;\n step = step._1;\n break;\n\n // Enqueue the Bracket so that we can call the appropriate handlers\n // after resource acquisition.\n case BRACKET:\n bracketCount++;\n if (bhead === null) {\n attempts = new Aff(CONS, step, attempts, interrupt);\n } else {\n attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);\n }\n bhead = null;\n btail = null;\n status = CONTINUE;\n step = step._1;\n break;\n\n case FORK:\n status = STEP_RESULT;\n tmp = Fiber(util, supervisor, step._2);\n if (supervisor) {\n supervisor.register(tmp);\n }\n if (step._1) {\n tmp.run();\n }\n step = util.right(tmp);\n break;\n\n case SEQ:\n status = CONTINUE;\n step = sequential(util, supervisor, step._1);\n break;\n }\n break;\n\n case RETURN:\n bhead = null;\n btail = null;\n // If the current stack has returned, and we have no other stacks to\n // resume or finalizers to run, the fiber has halted and we can\n // invoke all join callbacks. Otherwise we need to resume.\n if (attempts === null) {\n status = COMPLETED;\n step = interrupt || fail || step;\n } else {\n // The interrupt status for the enqueued item.\n tmp = attempts._3;\n attempt = attempts._1;\n attempts = attempts._2;\n\n switch (attempt.tag) {\n // We cannot recover from an unmasked interrupt. Otherwise we should\n // continue stepping, or run the exception handler if an exception\n // was raised.\n case CATCH:\n // We should compare the interrupt status as well because we\n // only want it to apply if there has been an interrupt since\n // enqueuing the catch.\n if (interrupt && interrupt !== tmp && bracketCount === 0) {\n status = RETURN;\n } else if (fail) {\n status = CONTINUE;\n step = attempt._2(util.fromLeft(fail));\n fail = null;\n }\n break;\n\n // We cannot resume from an unmasked interrupt or exception.\n case RESUME:\n // As with Catch, we only want to ignore in the case of an\n // interrupt since enqueing the item.\n if (interrupt && interrupt !== tmp && bracketCount === 0 || fail) {\n status = RETURN;\n } else {\n bhead = attempt._1;\n btail = attempt._2;\n status = STEP_BIND;\n step = util.fromRight(step);\n }\n break;\n\n // If we have a bracket, we should enqueue the handlers,\n // and continue with the success branch only if the fiber has\n // not been interrupted. If the bracket acquisition failed, we\n // should not run either.\n case BRACKET:\n bracketCount--;\n if (fail === null) {\n result = util.fromRight(step);\n // We need to enqueue the Release with the same interrupt\n // status as the Bracket that is initiating it.\n attempts = new Aff(CONS, new Aff(RELEASE, attempt._2, result), attempts, tmp);\n // We should only coninue as long as the interrupt status has not changed or\n // we are currently within a non-interruptable finalizer.\n if (interrupt === tmp || bracketCount > 0) {\n status = CONTINUE;\n step = attempt._3(result);\n }\n }\n break;\n\n // Enqueue the appropriate handler. We increase the bracket count\n // because it should not be cancelled.\n case RELEASE:\n attempts = new Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt);\n status = CONTINUE;\n // It has only been killed if the interrupt status has changed\n // since we enqueued the item, and the bracket count is 0. If the\n // bracket count is non-zero then we are in a masked state so it's\n // impossible to be killed.\n if (interrupt && interrupt !== tmp && bracketCount === 0) {\n step = attempt._1.killed(util.fromLeft(interrupt))(attempt._2);\n } else if (fail) {\n step = attempt._1.failed(util.fromLeft(fail))(attempt._2);\n } else {\n step = attempt._1.completed(util.fromRight(step))(attempt._2);\n }\n fail = null;\n bracketCount++;\n break;\n\n case FINALIZER:\n bracketCount++;\n attempts = new Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt);\n status = CONTINUE;\n step = attempt._1;\n break;\n\n case FINALIZED:\n bracketCount--;\n status = RETURN;\n step = attempt._1;\n fail = attempt._2;\n break;\n }\n }\n break;\n\n case COMPLETED:\n for (var k in joins) {\n if (joins.hasOwnProperty(k)) {\n rethrow = rethrow && joins[k].rethrow;\n runEff(joins[k].handler(step));\n }\n }\n joins = null;\n // If we have an interrupt and a fail, then the thread threw while\n // running finalizers. This should always rethrow in a fresh stack.\n if (interrupt && fail) {\n setTimeout(function () {\n throw util.fromLeft(fail);\n }, 0);\n // If we have an unhandled exception, and no other fiber has joined\n // then we need to throw the exception in a fresh stack.\n } else if (util.isLeft(step) && rethrow) {\n setTimeout(function () {\n // Guard on reathrow because a completely synchronous fiber can\n // still have an observer which was added after-the-fact.\n if (rethrow) {\n throw util.fromLeft(step);\n }\n }, 0);\n }\n return;\n case SUSPENDED:\n status = CONTINUE;\n break;\n case PENDING: return;\n }\n }\n }\n\n function onComplete(join) {\n return function () {\n if (status === COMPLETED) {\n rethrow = rethrow && join.rethrow;\n join.handler(step)();\n return function () {};\n }\n\n var jid = joinId++;\n joins = joins || {};\n joins[jid] = join;\n\n return function() {\n if (joins !== null) {\n delete joins[jid];\n }\n };\n };\n }\n\n function kill(error, cb) {\n return function () {\n if (status === COMPLETED) {\n cb(util.right(void 0))();\n return function () {};\n }\n\n var canceler = onComplete({\n rethrow: false,\n handler: function (/* unused */) {\n return cb(util.right(void 0));\n }\n })();\n\n switch (status) {\n case SUSPENDED:\n interrupt = util.left(error);\n status = COMPLETED;\n step = interrupt;\n run(runTick);\n break;\n case PENDING:\n if (interrupt === null) {\n interrupt = util.left(error);\n }\n if (bracketCount === 0) {\n if (status === PENDING) {\n attempts = new Aff(CONS, new Aff(FINALIZER, step(error)), attempts, interrupt);\n }\n status = RETURN;\n step = null;\n fail = null;\n run(++runTick);\n }\n break;\n default:\n if (interrupt === null) {\n interrupt = util.left(error);\n }\n if (bracketCount === 0) {\n status = RETURN;\n step = null;\n fail = null;\n }\n }\n\n return canceler;\n };\n }\n\n function join(cb) {\n return function () {\n var canceler = onComplete({\n rethrow: false,\n handler: cb\n })();\n if (status === SUSPENDED) {\n run(runTick);\n }\n return canceler;\n };\n }\n\n return {\n kill: kill,\n join: join,\n onComplete: onComplete,\n isSuspended: function () {\n return status === SUSPENDED;\n },\n run: function () {\n if (status === SUSPENDED) {\n if (!Scheduler.isDraining()) {\n Scheduler.enqueue(function () {\n run(runTick);\n });\n } else {\n run(runTick);\n }\n }\n }\n };\n }\n\n function runPar(util, supervisor, par, cb) {\n // Table of all forked fibers.\n var fiberId = 0;\n var fibers = {};\n\n // Table of currently running cancelers, as a product of `Alt` behavior.\n var killId = 0;\n var kills = {};\n\n // Error used for early cancelation on Alt branches.\n var early = new Error(\"[ParAff] Early exit\");\n\n // Error used to kill the entire tree.\n var interrupt = null;\n\n // The root pointer of the tree.\n var root = EMPTY;\n\n // Walks a tree, invoking all the cancelers. Returns the table of pending\n // cancellation fibers.\n function kill(error, par, cb) {\n var step = par;\n var head = null;\n var tail = null;\n var count = 0;\n var kills = {};\n var tmp, kid;\n\n loop: while (true) {\n tmp = null;\n\n switch (step.tag) {\n case FORKED:\n if (step._3 === EMPTY) {\n tmp = fibers[step._1];\n kills[count++] = tmp.kill(error, function (result) {\n return function () {\n count--;\n if (count === 0) {\n cb(result)();\n }\n };\n });\n }\n // Terminal case.\n if (head === null) {\n break loop;\n }\n // Go down the right side of the tree.\n step = head._2;\n if (tail === null) {\n head = null;\n } else {\n head = tail._1;\n tail = tail._2;\n }\n break;\n case MAP:\n step = step._2;\n break;\n case APPLY:\n case ALT:\n if (head) {\n tail = new Aff(CONS, head, tail);\n }\n head = step;\n step = step._1;\n break;\n }\n }\n\n if (count === 0) {\n cb(util.right(void 0))();\n } else {\n // Run the cancelation effects. We alias `count` because it's mutable.\n kid = 0;\n tmp = count;\n for (; kid < tmp; kid++) {\n kills[kid] = kills[kid]();\n }\n }\n\n return kills;\n }\n\n // When a fiber resolves, we need to bubble back up the tree with the\n // result, computing the applicative nodes.\n function join(result, head, tail) {\n var fail, step, lhs, rhs, tmp, kid;\n\n if (util.isLeft(result)) {\n fail = result;\n step = null;\n } else {\n step = result;\n fail = null;\n }\n\n loop: while (true) {\n lhs = null;\n rhs = null;\n tmp = null;\n kid = null;\n\n // We should never continue if the entire tree has been interrupted.\n if (interrupt !== null) {\n return;\n }\n\n // We've made it all the way to the root of the tree, which means\n // the tree has fully evaluated.\n if (head === null) {\n cb(fail || step)();\n return;\n }\n\n // The tree has already been computed, so we shouldn't try to do it\n // again. This should never happen.\n // TODO: Remove this?\n if (head._3 !== EMPTY) {\n return;\n }\n\n switch (head.tag) {\n case MAP:\n if (fail === null) {\n head._3 = util.right(head._1(util.fromRight(step)));\n step = head._3;\n } else {\n head._3 = fail;\n }\n break;\n case APPLY:\n lhs = head._1._3;\n rhs = head._2._3;\n // If we have a failure we should kill the other side because we\n // can't possible yield a result anymore.\n if (fail) {\n head._3 = fail;\n tmp = true;\n kid = killId++;\n\n kills[kid] = kill(early, fail === lhs ? head._2 : head._1, function (/* unused */) {\n return function () {\n delete kills[kid];\n if (tmp) {\n tmp = false;\n } else if (tail === null) {\n join(fail, null, null);\n } else {\n join(fail, tail._1, tail._2);\n }\n };\n });\n\n if (tmp) {\n tmp = false;\n return;\n }\n } else if (lhs === EMPTY || rhs === EMPTY) {\n // We can only proceed if both sides have resolved.\n return;\n } else {\n step = util.right(util.fromRight(lhs)(util.fromRight(rhs)));\n head._3 = step;\n }\n break;\n case ALT:\n lhs = head._1._3;\n rhs = head._2._3;\n // We can only proceed if both have resolved or we have a success\n if (lhs === EMPTY && util.isLeft(rhs) || rhs === EMPTY && util.isLeft(lhs)) {\n return;\n }\n // If both sides resolve with an error, we should continue with the\n // first error\n if (lhs !== EMPTY && util.isLeft(lhs) && rhs !== EMPTY && util.isLeft(rhs)) {\n fail = step === lhs ? rhs : lhs;\n step = null;\n head._3 = fail;\n } else {\n head._3 = step;\n tmp = true;\n kid = killId++;\n // Once a side has resolved, we need to cancel the side that is still\n // pending before we can continue.\n kills[kid] = kill(early, step === lhs ? head._2 : head._1, function (/* unused */) {\n return function () {\n delete kills[kid];\n if (tmp) {\n tmp = false;\n } else if (tail === null) {\n join(step, null, null);\n } else {\n join(step, tail._1, tail._2);\n }\n };\n });\n\n if (tmp) {\n tmp = false;\n return;\n }\n }\n break;\n }\n\n if (tail === null) {\n head = null;\n } else {\n head = tail._1;\n tail = tail._2;\n }\n }\n }\n\n function resolve(fiber) {\n return function (result) {\n return function () {\n delete fibers[fiber._1];\n fiber._3 = result;\n join(result, fiber._2._1, fiber._2._2);\n };\n };\n }\n\n // Walks the applicative tree, substituting non-applicative nodes with\n // `FORKED` nodes. In this tree, all applicative nodes use the `_3` slot\n // as a mutable slot for memoization. In an unresolved state, the `_3`\n // slot is `EMPTY`. In the cases of `ALT` and `APPLY`, we always walk\n // the left side first, because both operations are left-associative. As\n // we `RETURN` from those branches, we then walk the right side.\n function run() {\n var status = CONTINUE;\n var step = par;\n var head = null;\n var tail = null;\n var tmp, fid;\n\n loop: while (true) {\n tmp = null;\n fid = null;\n\n switch (status) {\n case CONTINUE:\n switch (step.tag) {\n case MAP:\n if (head) {\n tail = new Aff(CONS, head, tail);\n }\n head = new Aff(MAP, step._1, EMPTY, EMPTY);\n step = step._2;\n break;\n case APPLY:\n if (head) {\n tail = new Aff(CONS, head, tail);\n }\n head = new Aff(APPLY, EMPTY, step._2, EMPTY);\n step = step._1;\n break;\n case ALT:\n if (head) {\n tail = new Aff(CONS, head, tail);\n }\n head = new Aff(ALT, EMPTY, step._2, EMPTY);\n step = step._1;\n break;\n default:\n // When we hit a leaf value, we suspend the stack in the `FORKED`.\n // When the fiber resolves, it can bubble back up the tree.\n fid = fiberId++;\n status = RETURN;\n tmp = step;\n step = new Aff(FORKED, fid, new Aff(CONS, head, tail), EMPTY);\n tmp = Fiber(util, supervisor, tmp);\n tmp.onComplete({\n rethrow: false,\n handler: resolve(step)\n })();\n fibers[fid] = tmp;\n if (supervisor) {\n supervisor.register(tmp);\n }\n }\n break;\n case RETURN:\n // Terminal case, we are back at the root.\n if (head === null) {\n break loop;\n }\n // If we are done with the right side, we need to continue down the\n // left. Otherwise we should continue up the stack.\n if (head._1 === EMPTY) {\n head._1 = step;\n status = CONTINUE;\n step = head._2;\n head._2 = EMPTY;\n } else {\n head._2 = step;\n step = head;\n if (tail === null) {\n head = null;\n } else {\n head = tail._1;\n tail = tail._2;\n }\n }\n }\n }\n\n // Keep a reference to the tree root so it can be cancelled.\n root = step;\n\n for (fid = 0; fid < fiberId; fid++) {\n fibers[fid].run();\n }\n }\n\n // Cancels the entire tree. If there are already subtrees being canceled,\n // we need to first cancel those joins. We will then add fresh joins for\n // all pending branches including those that were in the process of being\n // canceled.\n function cancel(error, cb) {\n interrupt = util.left(error);\n var innerKills;\n for (var kid in kills) {\n if (kills.hasOwnProperty(kid)) {\n innerKills = kills[kid];\n for (kid in innerKills) {\n if (innerKills.hasOwnProperty(kid)) {\n innerKills[kid]();\n }\n }\n }\n }\n\n kills = null;\n var newKills = kill(error, root, cb);\n\n return function (killError) {\n return new Aff(ASYNC, function (killCb) {\n return function () {\n for (var kid in newKills) {\n if (newKills.hasOwnProperty(kid)) {\n newKills[kid]();\n }\n }\n return nonCanceler;\n };\n });\n };\n }\n\n run();\n\n return function (killError) {\n return new Aff(ASYNC, function (killCb) {\n return function () {\n return cancel(killError, killCb);\n };\n });\n };\n }\n\n function sequential(util, supervisor, par) {\n return new Aff(ASYNC, function (cb) {\n return function () {\n return runPar(util, supervisor, par, cb);\n };\n });\n }\n\n Aff.EMPTY = EMPTY;\n Aff.Pure = AffCtr(PURE);\n Aff.Throw = AffCtr(THROW);\n Aff.Catch = AffCtr(CATCH);\n Aff.Sync = AffCtr(SYNC);\n Aff.Async = AffCtr(ASYNC);\n Aff.Bind = AffCtr(BIND);\n Aff.Bracket = AffCtr(BRACKET);\n Aff.Fork = AffCtr(FORK);\n Aff.Seq = AffCtr(SEQ);\n Aff.ParMap = AffCtr(MAP);\n Aff.ParApply = AffCtr(APPLY);\n Aff.ParAlt = AffCtr(ALT);\n Aff.Fiber = Fiber;\n Aff.Supervisor = Supervisor;\n Aff.Scheduler = Scheduler;\n Aff.nonCanceler = nonCanceler;\n\n return Aff;\n}();\n\nexport const _pure = Aff.Pure;\nexport const _throwError = Aff.Throw;\n\nexport function _catchError(aff) {\n return function (k) {\n return Aff.Catch(aff, k);\n };\n}\n\nexport function _map(f) {\n return function (aff) {\n if (aff.tag === Aff.Pure.tag) {\n return Aff.Pure(f(aff._1));\n } else {\n return Aff.Bind(aff, function (value) {\n return Aff.Pure(f(value));\n });\n }\n };\n}\n\nexport function _bind(aff) {\n return function (k) {\n return Aff.Bind(aff, k);\n };\n}\n\nexport function _fork(immediate) {\n return function (aff) {\n return Aff.Fork(immediate, aff);\n };\n}\n\nexport const _liftEffect = Aff.Sync;\n\nexport function _parAffMap(f) {\n return function (aff) {\n return Aff.ParMap(f, aff);\n };\n}\n\nexport function _parAffApply(aff1) {\n return function (aff2) {\n return Aff.ParApply(aff1, aff2);\n };\n}\n\nexport function _parAffAlt(aff1) {\n return function (aff2) {\n return Aff.ParAlt(aff1, aff2);\n };\n}\n\nexport const makeAff = Aff.Async;\n\nexport function generalBracket(acquire) {\n return function (options) {\n return function (k) {\n return Aff.Bracket(acquire, options, k);\n };\n };\n}\n\nexport function _makeFiber(util, aff) {\n return function () {\n return Aff.Fiber(util, null, aff);\n };\n}\n\nexport function _makeSupervisedFiber(util, aff) {\n return function () {\n var supervisor = Aff.Supervisor(util);\n return {\n fiber: Aff.Fiber(util, supervisor, aff),\n supervisor: supervisor\n };\n };\n}\n\nexport function _killAll(error, supervisor, cb) {\n return supervisor.killAll(error, cb);\n}\n\nexport const _delay = function () {\n function setDelay(n, k) {\n if (n === 0 && typeof setImmediate !== \"undefined\") {\n return setImmediate(k);\n } else {\n return setTimeout(k, n);\n }\n }\n\n function clearDelay(n, t) {\n if (n === 0 && typeof clearImmediate !== \"undefined\") {\n return clearImmediate(t);\n } else {\n return clearTimeout(t);\n }\n }\n\n return function (right, ms) {\n return Aff.Async(function (cb) {\n return function () {\n var timer = setDelay(ms, cb(right()));\n return function () {\n return Aff.Sync(function () {\n return right(clearDelay(ms, timer));\n });\n };\n };\n });\n };\n}();\n\nexport const _sequential = Aff.Seq;\n", "// Generated by purs version 0.15.14\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar wrap = /* #__PURE__ */ Data_Newtype.wrap();\nvar unwrap = /* #__PURE__ */ Data_Newtype.unwrap();\nvar profunctorFn = {\n dimap: function (a2b) {\n return function (c2d) {\n return function (b2c) {\n return function ($18) {\n return c2d(b2c(a2b($18)));\n };\n };\n };\n }\n};\nvar dimap = function (dict) {\n return dict.dimap;\n};\nvar lcmap = function (dictProfunctor) {\n var dimap1 = dimap(dictProfunctor);\n return function (a2b) {\n return dimap1(a2b)(identity);\n };\n};\nvar rmap = function (dictProfunctor) {\n var dimap1 = dimap(dictProfunctor);\n return function (b2c) {\n return dimap1(identity)(b2c);\n };\n};\nvar unwrapIso = function (dictProfunctor) {\n var dimap1 = dimap(dictProfunctor);\n return function () {\n return dimap1(wrap)(unwrap);\n };\n};\nvar wrapIso = function (dictProfunctor) {\n var dimap1 = dimap(dictProfunctor);\n return function () {\n return function (v) {\n return dimap1(unwrap)(wrap);\n };\n };\n};\nvar arr = function (dictCategory) {\n var identity1 = Control_Category.identity(dictCategory);\n return function (dictProfunctor) {\n var rmap1 = rmap(dictProfunctor);\n return function (f) {\n return rmap1(f)(identity1);\n };\n };\n};\nexport {\n dimap,\n lcmap,\n rmap,\n arr,\n unwrapIso,\n wrapIso,\n profunctorFn\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_Cont_Trans from \"../Control.Monad.Cont.Trans/index.js\";\nimport * as Control_Monad_Except_Trans from \"../Control.Monad.Except.Trans/index.js\";\nimport * as Control_Monad_Maybe_Trans from \"../Control.Monad.Maybe.Trans/index.js\";\nimport * as Control_Monad_Reader_Trans from \"../Control.Monad.Reader.Trans/index.js\";\nimport * as Control_Monad_Writer_Trans from \"../Control.Monad.Writer.Trans/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Functor_Compose from \"../Data.Functor.Compose/index.js\";\nimport * as Data_Functor_Costar from \"../Data.Functor.Costar/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Profunctor_Star from \"../Data.Profunctor.Star/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Ref from \"../Effect.Ref/index.js\";\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit);\nvar ParCont = function (x) {\n return x;\n};\nvar sequential = function (dict) {\n return dict.sequential;\n};\nvar parallel = function (dict) {\n return dict.parallel;\n};\nvar newtypeParCont = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar monadParWriterT = function (dictMonoid) {\n var applyWriterT = Control_Monad_Writer_Trans.applyWriterT(dictMonoid.Semigroup0());\n return function (dictParallel) {\n var applyWriterT1 = applyWriterT(dictParallel.Apply0());\n var applyWriterT2 = applyWriterT(dictParallel.Apply1());\n return {\n parallel: Control_Monad_Writer_Trans.mapWriterT(parallel(dictParallel)),\n sequential: Control_Monad_Writer_Trans.mapWriterT(sequential(dictParallel)),\n Apply0: function () {\n return applyWriterT1;\n },\n Apply1: function () {\n return applyWriterT2;\n }\n };\n };\n};\nvar monadParStar = function (dictParallel) {\n var parallel1 = parallel(dictParallel);\n var sequential1 = sequential(dictParallel);\n var applyStar = Data_Profunctor_Star.applyStar(dictParallel.Apply0());\n var applyStar1 = Data_Profunctor_Star.applyStar(dictParallel.Apply1());\n return {\n parallel: function (v) {\n return function ($124) {\n return parallel1(v($124));\n };\n },\n sequential: function (v) {\n return function ($125) {\n return sequential1(v($125));\n };\n },\n Apply0: function () {\n return applyStar;\n },\n Apply1: function () {\n return applyStar1;\n }\n };\n};\nvar monadParReaderT = function (dictParallel) {\n var applyReaderT = Control_Monad_Reader_Trans.applyReaderT(dictParallel.Apply0());\n var applyReaderT1 = Control_Monad_Reader_Trans.applyReaderT(dictParallel.Apply1());\n return {\n parallel: Control_Monad_Reader_Trans.mapReaderT(parallel(dictParallel)),\n sequential: Control_Monad_Reader_Trans.mapReaderT(sequential(dictParallel)),\n Apply0: function () {\n return applyReaderT;\n },\n Apply1: function () {\n return applyReaderT1;\n }\n };\n};\nvar monadParMaybeT = function (dictParallel) {\n var parallel1 = parallel(dictParallel);\n var sequential1 = sequential(dictParallel);\n var applyCompose = Data_Functor_Compose.applyCompose(dictParallel.Apply1())(Data_Maybe.applyMaybe);\n return function (dictMonad) {\n var applyMaybeT = Control_Monad_Maybe_Trans.applyMaybeT(dictMonad);\n return {\n parallel: function (v) {\n return parallel1(v);\n },\n sequential: function (v) {\n return sequential1(v);\n },\n Apply0: function () {\n return applyMaybeT;\n },\n Apply1: function () {\n return applyCompose;\n }\n };\n };\n};\nvar monadParExceptT = function (dictParallel) {\n var parallel1 = parallel(dictParallel);\n var sequential1 = sequential(dictParallel);\n var applyCompose = Data_Functor_Compose.applyCompose(dictParallel.Apply1())(Data_Either.applyEither);\n return function (dictMonad) {\n var applyExceptT = Control_Monad_Except_Trans.applyExceptT(dictMonad);\n return {\n parallel: function (v) {\n return parallel1(v);\n },\n sequential: function (v) {\n return sequential1(v);\n },\n Apply0: function () {\n return applyExceptT;\n },\n Apply1: function () {\n return applyCompose;\n }\n };\n };\n};\nvar monadParCostar = function (dictParallel) {\n var sequential1 = sequential(dictParallel);\n var parallel1 = parallel(dictParallel);\n return {\n parallel: function (v) {\n return function ($126) {\n return v(sequential1($126));\n };\n },\n sequential: function (v) {\n return function ($127) {\n return v(parallel1($127));\n };\n },\n Apply0: function () {\n return Data_Functor_Costar.applyCostar;\n },\n Apply1: function () {\n return Data_Functor_Costar.applyCostar;\n }\n };\n};\nvar monadParParCont = function (dictMonadEffect) {\n var applyContT = Control_Monad_Cont_Trans.applyContT(((dictMonadEffect.Monad0()).Bind1()).Apply0());\n return {\n parallel: ParCont,\n sequential: function (v) {\n return v;\n },\n Apply0: function () {\n return applyContT;\n },\n Apply1: function () {\n return applyParCont(dictMonadEffect);\n }\n };\n};\nvar functorParCont = function (dictMonadEffect) {\n var map = Data_Functor.map(Control_Monad_Cont_Trans.functorContT((((dictMonadEffect.Monad0()).Bind1()).Apply0()).Functor0()));\n return {\n map: function (f) {\n var $128 = parallel(monadParParCont(dictMonadEffect));\n var $129 = map(f);\n var $130 = sequential(monadParParCont(dictMonadEffect));\n return function ($131) {\n return $128($129($130($131)));\n };\n }\n };\n};\nvar applyParCont = function (dictMonadEffect) {\n var Bind1 = (dictMonadEffect.Monad0()).Bind1();\n var bind = Control_Bind.bind(Bind1);\n var liftEffect = Effect_Class.liftEffect(dictMonadEffect);\n var discard1 = discard(Bind1);\n return {\n apply: function (v) {\n return function (v1) {\n return function (k) {\n return bind(liftEffect(Effect_Ref[\"new\"](Data_Maybe.Nothing.value)))(function (ra) {\n return bind(liftEffect(Effect_Ref[\"new\"](Data_Maybe.Nothing.value)))(function (rb) {\n return discard1(Control_Monad_Cont_Trans.runContT(v)(function (a) {\n return bind(liftEffect(Effect_Ref.read(rb)))(function (mb) {\n if (mb instanceof Data_Maybe.Nothing) {\n return liftEffect(Effect_Ref.write(new Data_Maybe.Just(a))(ra));\n };\n if (mb instanceof Data_Maybe.Just) {\n return k(a(mb.value0));\n };\n throw new Error(\"Failed pattern match at Control.Parallel.Class (line 83, column 7 - line 85, column 26): \" + [ mb.constructor.name ]);\n });\n }))(function () {\n return Control_Monad_Cont_Trans.runContT(v1)(function (b) {\n return bind(liftEffect(Effect_Ref.read(ra)))(function (ma) {\n if (ma instanceof Data_Maybe.Nothing) {\n return liftEffect(Effect_Ref.write(new Data_Maybe.Just(b))(rb));\n };\n if (ma instanceof Data_Maybe.Just) {\n return k(ma.value0(b));\n };\n throw new Error(\"Failed pattern match at Control.Parallel.Class (line 89, column 7 - line 91, column 26): \" + [ ma.constructor.name ]);\n });\n });\n });\n });\n });\n };\n };\n },\n Functor0: function () {\n return functorParCont(dictMonadEffect);\n }\n };\n};\nvar applicativeParCont = function (dictMonadEffect) {\n var applyParCont1 = applyParCont(dictMonadEffect);\n return {\n pure: (function () {\n var $132 = parallel(monadParParCont(dictMonadEffect));\n var $133 = Control_Applicative.pure(Control_Monad_Cont_Trans.applicativeContT((dictMonadEffect.Monad0()).Applicative0()));\n return function ($134) {\n return $132($133($134));\n };\n })(),\n Apply0: function () {\n return applyParCont1;\n }\n };\n};\nvar altParCont = function (dictMonadEffect) {\n var Monad0 = dictMonadEffect.Monad0();\n var Bind1 = Monad0.Bind1();\n var bind = Control_Bind.bind(Bind1);\n var liftEffect = Effect_Class.liftEffect(dictMonadEffect);\n var discard1 = discard(Bind1);\n var pure = Control_Applicative.pure(Monad0.Applicative0());\n var functorParCont1 = functorParCont(dictMonadEffect);\n return {\n alt: function (v) {\n return function (v1) {\n return function (k) {\n return bind(liftEffect(Effect_Ref[\"new\"](false)))(function (done) {\n return discard1(Control_Monad_Cont_Trans.runContT(v)(function (a) {\n return bind(liftEffect(Effect_Ref.read(done)))(function (b) {\n if (b) {\n return pure(Data_Unit.unit);\n };\n return discard1(liftEffect(Effect_Ref.write(true)(done)))(function () {\n return k(a);\n });\n });\n }))(function () {\n return Control_Monad_Cont_Trans.runContT(v1)(function (a) {\n return bind(liftEffect(Effect_Ref.read(done)))(function (b) {\n if (b) {\n return pure(Data_Unit.unit);\n };\n return discard1(liftEffect(Effect_Ref.write(true)(done)))(function () {\n return k(a);\n });\n });\n });\n });\n });\n };\n };\n },\n Functor0: function () {\n return functorParCont1;\n }\n };\n};\nvar plusParCont = function (dictMonadEffect) {\n var pure = Control_Applicative.pure((dictMonadEffect.Monad0()).Applicative0());\n var altParCont1 = altParCont(dictMonadEffect);\n return {\n empty: function (v) {\n return pure(Data_Unit.unit);\n },\n Alt0: function () {\n return altParCont1;\n }\n };\n};\nvar alternativeParCont = function (dictMonadEffect) {\n var applicativeParCont1 = applicativeParCont(dictMonadEffect);\n var plusParCont1 = plusParCont(dictMonadEffect);\n return {\n Applicative0: function () {\n return applicativeParCont1;\n },\n Plus1: function () {\n return plusParCont1;\n }\n };\n};\nexport {\n parallel,\n sequential,\n ParCont,\n monadParExceptT,\n monadParReaderT,\n monadParWriterT,\n monadParMaybeT,\n monadParStar,\n monadParCostar,\n newtypeParCont,\n functorParCont,\n applyParCont,\n applicativeParCont,\n altParCont,\n plusParCont,\n alternativeParCont,\n monadParParCont\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Parallel_Class from \"../Control.Parallel.Class/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar parTraverse_ = function (dictParallel) {\n var sequential = Control_Parallel_Class.sequential(dictParallel);\n var parallel = Control_Parallel_Class.parallel(dictParallel);\n return function (dictApplicative) {\n var traverse_ = Data_Foldable.traverse_(dictApplicative);\n return function (dictFoldable) {\n var traverse_1 = traverse_(dictFoldable);\n return function (f) {\n var $51 = traverse_1(function ($53) {\n return parallel(f($53));\n });\n return function ($52) {\n return sequential($51($52));\n };\n };\n };\n };\n};\nvar parTraverse = function (dictParallel) {\n var sequential = Control_Parallel_Class.sequential(dictParallel);\n var parallel = Control_Parallel_Class.parallel(dictParallel);\n return function (dictApplicative) {\n return function (dictTraversable) {\n var traverse = Data_Traversable.traverse(dictTraversable)(dictApplicative);\n return function (f) {\n var $54 = traverse(function ($56) {\n return parallel(f($56));\n });\n return function ($55) {\n return sequential($54($55));\n };\n };\n };\n };\n};\nvar parSequence_ = function (dictParallel) {\n var parTraverse_1 = parTraverse_(dictParallel);\n return function (dictApplicative) {\n var parTraverse_2 = parTraverse_1(dictApplicative);\n return function (dictFoldable) {\n return parTraverse_2(dictFoldable)(identity);\n };\n };\n};\nvar parSequence = function (dictParallel) {\n var parTraverse1 = parTraverse(dictParallel);\n return function (dictApplicative) {\n var parTraverse2 = parTraverse1(dictApplicative);\n return function (dictTraversable) {\n return parTraverse2(dictTraversable)(identity);\n };\n };\n};\nvar parOneOfMap = function (dictParallel) {\n var sequential = Control_Parallel_Class.sequential(dictParallel);\n var parallel = Control_Parallel_Class.parallel(dictParallel);\n return function (dictAlternative) {\n var Plus1 = dictAlternative.Plus1();\n return function (dictFoldable) {\n var oneOfMap = Data_Foldable.oneOfMap(dictFoldable)(Plus1);\n return function (dictFunctor) {\n return function (f) {\n var $57 = oneOfMap(function ($59) {\n return parallel(f($59));\n });\n return function ($58) {\n return sequential($57($58));\n };\n };\n };\n };\n };\n};\nvar parOneOf = function (dictParallel) {\n var sequential = Control_Parallel_Class.sequential(dictParallel);\n var parallel = Control_Parallel_Class.parallel(dictParallel);\n return function (dictAlternative) {\n var Plus1 = dictAlternative.Plus1();\n return function (dictFoldable) {\n var oneOfMap = Data_Foldable.oneOfMap(dictFoldable)(Plus1);\n return function (dictFunctor) {\n var $60 = oneOfMap(parallel);\n return function ($61) {\n return sequential($60($61));\n };\n };\n };\n };\n};\nvar parApply = function (dictParallel) {\n var sequential = Control_Parallel_Class.sequential(dictParallel);\n var apply = Control_Apply.apply(dictParallel.Apply1());\n var parallel = Control_Parallel_Class.parallel(dictParallel);\n return function (mf) {\n return function (ma) {\n return sequential(apply(parallel(mf))(parallel(ma)));\n };\n };\n};\nexport {\n parApply,\n parTraverse,\n parTraverse_,\n parSequence,\n parSequence_,\n parOneOf,\n parOneOfMap\n};\nexport {\n ParCont,\n parallel,\n sequential\n} from \"../Control.Parallel.Class/index.js\";\n", "export const unsafePerformEffect = function (f) {\n return f();\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad from \"../Control.Monad/index.js\";\nimport * as Control_Monad_Error_Class from \"../Control.Monad.Error.Class/index.js\";\nimport * as Control_Monad_Rec_Class from \"../Control.Monad.Rec.Class/index.js\";\nimport * as Control_Monad_ST_Class from \"../Control.Monad.ST.Class/index.js\";\nimport * as Control_Parallel from \"../Control.Parallel/index.js\";\nimport * as Control_Parallel_Class from \"../Control.Parallel.Class/index.js\";\nimport * as Control_Plus from \"../Control.Plus/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Time_Duration from \"../Data.Time.Duration/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Exception from \"../Effect.Exception/index.js\";\nimport * as Effect_Unsafe from \"../Effect.Unsafe/index.js\";\nimport * as Partial_Unsafe from \"../Partial.Unsafe/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Effect.applicativeEffect);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Effect.functorEffect);\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar pure1 = /* #__PURE__ */ Control_Applicative.pure(Data_Either.applicativeEither);\nvar Fiber = function (x) {\n return x;\n};\nvar FFIUtil = function (x) {\n return x;\n};\nvar Canceler = function (x) {\n return x;\n};\nvar suspendAff = /* #__PURE__ */ $foreign[\"_fork\"](false);\nvar newtypeCanceler = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar functorParAff = {\n map: $foreign[\"_parAffMap\"]\n};\nvar functorAff = {\n map: $foreign[\"_map\"]\n};\nvar map1 = /* #__PURE__ */ Data_Functor.map(functorAff);\nvar forkAff = /* #__PURE__ */ $foreign[\"_fork\"](true);\nvar ffiUtil = /* #__PURE__ */ (function () {\n var unsafeFromRight = function (v) {\n if (v instanceof Data_Either.Right) {\n return v.value0;\n };\n if (v instanceof Data_Either.Left) {\n return Partial_Unsafe.unsafeCrashWith(\"unsafeFromRight: Left\");\n };\n throw new Error(\"Failed pattern match at Effect.Aff (line 412, column 21 - line 414, column 54): \" + [ v.constructor.name ]);\n };\n var unsafeFromLeft = function (v) {\n if (v instanceof Data_Either.Left) {\n return v.value0;\n };\n if (v instanceof Data_Either.Right) {\n return Partial_Unsafe.unsafeCrashWith(\"unsafeFromLeft: Right\");\n };\n throw new Error(\"Failed pattern match at Effect.Aff (line 407, column 20 - line 409, column 55): \" + [ v.constructor.name ]);\n };\n var isLeft = function (v) {\n if (v instanceof Data_Either.Left) {\n return true;\n };\n if (v instanceof Data_Either.Right) {\n return false;\n };\n throw new Error(\"Failed pattern match at Effect.Aff (line 402, column 12 - line 404, column 21): \" + [ v.constructor.name ]);\n };\n return {\n isLeft: isLeft,\n fromLeft: unsafeFromLeft,\n fromRight: unsafeFromRight,\n left: Data_Either.Left.create,\n right: Data_Either.Right.create\n };\n})();\nvar makeFiber = function (aff) {\n return $foreign[\"_makeFiber\"](ffiUtil, aff);\n};\nvar launchAff = function (aff) {\n return function __do() {\n var fiber = makeFiber(aff)();\n fiber.run();\n return fiber;\n };\n};\nvar launchAff_ = function ($75) {\n return $$void(launchAff($75));\n};\nvar launchSuspendedAff = makeFiber;\nvar delay = function (v) {\n return $foreign[\"_delay\"](Data_Either.Right.create, v);\n};\nvar bracket = function (acquire) {\n return function (completed) {\n return $foreign.generalBracket(acquire)({\n killed: Data_Function[\"const\"](completed),\n failed: Data_Function[\"const\"](completed),\n completed: Data_Function[\"const\"](completed)\n });\n };\n};\nvar applyParAff = {\n apply: $foreign[\"_parAffApply\"],\n Functor0: function () {\n return functorParAff;\n }\n};\nvar lift2 = /* #__PURE__ */ Control_Apply.lift2(applyParAff);\nvar semigroupParAff = function (dictSemigroup) {\n return {\n append: lift2(Data_Semigroup.append(dictSemigroup))\n };\n};\nvar monadAff = {\n Applicative0: function () {\n return applicativeAff;\n },\n Bind1: function () {\n return bindAff;\n }\n};\nvar bindAff = {\n bind: $foreign[\"_bind\"],\n Apply0: function () {\n return $lazy_applyAff(0);\n }\n};\nvar applicativeAff = {\n pure: $foreign[\"_pure\"],\n Apply0: function () {\n return $lazy_applyAff(0);\n }\n};\nvar $lazy_applyAff = /* #__PURE__ */ $runtime_lazy(\"applyAff\", \"Effect.Aff\", function () {\n return {\n apply: Control_Monad.ap(monadAff),\n Functor0: function () {\n return functorAff;\n }\n };\n});\nvar applyAff = /* #__PURE__ */ $lazy_applyAff(73);\nvar pure2 = /* #__PURE__ */ Control_Applicative.pure(applicativeAff);\nvar bind1 = /* #__PURE__ */ Control_Bind.bind(bindAff);\nvar lift21 = /* #__PURE__ */ Control_Apply.lift2(applyAff);\nvar apply = /* #__PURE__ */ Control_Apply.apply(applyAff);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(bindAff);\nvar cancelWith = function (aff) {\n return function (v) {\n return $foreign.generalBracket(pure2(Data_Unit.unit))({\n killed: function (e) {\n return function (v1) {\n return v(e);\n };\n },\n failed: Data_Function[\"const\"](pure2),\n completed: Data_Function[\"const\"](pure2)\n })(Data_Function[\"const\"](aff));\n };\n};\nvar $$finally = function (fin) {\n return function (a) {\n return bracket(pure2(Data_Unit.unit))(Data_Function[\"const\"](fin))(Data_Function[\"const\"](a));\n };\n};\nvar invincible = function (a) {\n return bracket(a)(Data_Function[\"const\"](pure2(Data_Unit.unit)))(pure2);\n};\nvar lazyAff = {\n defer: function (f) {\n return bind1(pure2(Data_Unit.unit))(f);\n }\n};\nvar parallelAff = {\n parallel: Unsafe_Coerce.unsafeCoerce,\n sequential: $foreign[\"_sequential\"],\n Apply0: function () {\n return applyAff;\n },\n Apply1: function () {\n return applyParAff;\n }\n};\nvar parallel = /* #__PURE__ */ Control_Parallel_Class.parallel(parallelAff);\nvar applicativeParAff = {\n pure: function ($76) {\n return parallel(pure2($76));\n },\n Apply0: function () {\n return applyParAff;\n }\n};\nvar pure3 = /* #__PURE__ */ Control_Applicative.pure(applicativeParAff);\nvar parSequence_ = /* #__PURE__ */ Control_Parallel.parSequence_(parallelAff)(applicativeParAff)(Data_Foldable.foldableArray);\nvar monoidParAff = function (dictMonoid) {\n var semigroupParAff1 = semigroupParAff(dictMonoid.Semigroup0());\n return {\n mempty: pure3(Data_Monoid.mempty(dictMonoid)),\n Semigroup0: function () {\n return semigroupParAff1;\n }\n };\n};\nvar semigroupCanceler = {\n append: function (v) {\n return function (v1) {\n return function (err) {\n return parSequence_([ v(err), v1(err) ]);\n };\n };\n }\n};\nvar semigroupAff = function (dictSemigroup) {\n return {\n append: lift21(Data_Semigroup.append(dictSemigroup))\n };\n};\nvar monadEffectAff = {\n liftEffect: $foreign[\"_liftEffect\"],\n Monad0: function () {\n return monadAff;\n }\n};\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(monadEffectAff);\nvar effectCanceler = function ($77) {\n return Canceler(Data_Function[\"const\"](liftEffect($77)));\n};\nvar joinFiber = function (v) {\n return $foreign.makeAff(function (k) {\n return map(effectCanceler)(v.join(k));\n });\n};\nvar functorFiber = {\n map: function (f) {\n return function (t) {\n return Effect_Unsafe.unsafePerformEffect(makeFiber(map1(f)(joinFiber(t))));\n };\n }\n};\nvar applyFiber = {\n apply: function (t1) {\n return function (t2) {\n return Effect_Unsafe.unsafePerformEffect(makeFiber(apply(joinFiber(t1))(joinFiber(t2))));\n };\n },\n Functor0: function () {\n return functorFiber;\n }\n};\nvar applicativeFiber = {\n pure: function (a) {\n return Effect_Unsafe.unsafePerformEffect(makeFiber(pure2(a)));\n },\n Apply0: function () {\n return applyFiber;\n }\n};\nvar killFiber = function (e) {\n return function (v) {\n return bind1(liftEffect(v.isSuspended))(function (suspended) {\n if (suspended) {\n return liftEffect($$void(v.kill(e, Data_Function[\"const\"](pure(Data_Unit.unit)))));\n };\n return $foreign.makeAff(function (k) {\n return map(effectCanceler)(v.kill(e, k));\n });\n });\n };\n};\nvar fiberCanceler = /* #__PURE__ */ (function () {\n var $78 = Data_Function.flip(killFiber);\n return function ($79) {\n return Canceler($78($79));\n };\n})();\nvar supervise = function (aff) {\n var killError = Effect_Exception.error(\"[Aff] Child fiber outlived parent\");\n var killAll = function (err) {\n return function (sup) {\n return $foreign.makeAff(function (k) {\n return $foreign[\"_killAll\"](err, sup.supervisor, k(pure1(Data_Unit.unit)));\n });\n };\n };\n var acquire = function __do() {\n var sup = $foreign[\"_makeSupervisedFiber\"](ffiUtil, aff)();\n sup.fiber.run();\n return sup;\n };\n return $foreign.generalBracket(liftEffect(acquire))({\n killed: function (err) {\n return function (sup) {\n return parSequence_([ killFiber(err)(sup.fiber), killAll(err)(sup) ]);\n };\n },\n failed: Data_Function[\"const\"](killAll(killError)),\n completed: Data_Function[\"const\"](killAll(killError))\n })(function ($80) {\n return joinFiber((function (v) {\n return v.fiber;\n })($80));\n });\n};\nvar monadSTAff = {\n liftST: /* #__PURE__ */ (function () {\n var $81 = Control_Monad_ST_Class.liftST(Control_Monad_ST_Class.monadSTEffect);\n return function ($82) {\n return liftEffect($81($82));\n };\n })(),\n Monad0: function () {\n return monadAff;\n }\n};\nvar monadThrowAff = {\n throwError: $foreign[\"_throwError\"],\n Monad0: function () {\n return monadAff;\n }\n};\nvar monadErrorAff = {\n catchError: $foreign[\"_catchError\"],\n MonadThrow0: function () {\n return monadThrowAff;\n }\n};\nvar $$try = /* #__PURE__ */ Control_Monad_Error_Class[\"try\"](monadErrorAff);\nvar catchError = /* #__PURE__ */ Control_Monad_Error_Class.catchError(monadErrorAff);\nvar attempt = $$try;\nvar runAff = function (k) {\n return function (aff) {\n return launchAff(bindFlipped(function ($83) {\n return liftEffect(k($83));\n })($$try(aff)));\n };\n};\nvar runAff_ = function (k) {\n return function (aff) {\n return $$void(runAff(k)(aff));\n };\n};\nvar runSuspendedAff = function (k) {\n return function (aff) {\n return launchSuspendedAff(bindFlipped(function ($84) {\n return liftEffect(k($84));\n })($$try(aff)));\n };\n};\nvar monadRecAff = {\n tailRecM: function (k) {\n var go = function (a) {\n return bind1(k(a))(function (res) {\n if (res instanceof Control_Monad_Rec_Class.Done) {\n return pure2(res.value0);\n };\n if (res instanceof Control_Monad_Rec_Class.Loop) {\n return go(res.value0);\n };\n throw new Error(\"Failed pattern match at Effect.Aff (line 104, column 7 - line 106, column 23): \" + [ res.constructor.name ]);\n });\n };\n return go;\n },\n Monad0: function () {\n return monadAff;\n }\n};\nvar monoidAff = function (dictMonoid) {\n var semigroupAff1 = semigroupAff(dictMonoid.Semigroup0());\n return {\n mempty: pure2(Data_Monoid.mempty(dictMonoid)),\n Semigroup0: function () {\n return semigroupAff1;\n }\n };\n};\nvar nonCanceler = /* #__PURE__ */ Data_Function[\"const\"](/* #__PURE__ */ pure2(Data_Unit.unit));\nvar monoidCanceler = {\n mempty: nonCanceler,\n Semigroup0: function () {\n return semigroupCanceler;\n }\n};\nvar mempty = /* #__PURE__ */ Data_Monoid.mempty(monoidCanceler);\nvar never = /* #__PURE__ */ $foreign.makeAff(function (v) {\n return pure(mempty);\n});\nvar apathize = /* #__PURE__ */ (function () {\n var $85 = map1(Data_Function[\"const\"](Data_Unit.unit));\n return function ($86) {\n return $85(attempt($86));\n };\n})();\nvar altParAff = {\n alt: $foreign[\"_parAffAlt\"],\n Functor0: function () {\n return functorParAff;\n }\n};\nvar altAff = {\n alt: function (a1) {\n return function (a2) {\n return catchError(a1)(Data_Function[\"const\"](a2));\n };\n },\n Functor0: function () {\n return functorAff;\n }\n};\nvar plusAff = {\n empty: /* #__PURE__ */ Control_Monad_Error_Class.throwError(monadThrowAff)(/* #__PURE__ */ Effect_Exception.error(\"Always fails\")),\n Alt0: function () {\n return altAff;\n }\n};\nvar plusParAff = {\n empty: /* #__PURE__ */ parallel(/* #__PURE__ */ Control_Plus.empty(plusAff)),\n Alt0: function () {\n return altParAff;\n }\n};\nvar alternativeParAff = {\n Applicative0: function () {\n return applicativeParAff;\n },\n Plus1: function () {\n return plusParAff;\n }\n};\nexport {\n makeAff,\n generalBracket\n} from \"./foreign.js\";\nexport {\n Canceler,\n launchAff,\n launchAff_,\n launchSuspendedAff,\n runAff,\n runAff_,\n runSuspendedAff,\n forkAff,\n suspendAff,\n supervise,\n attempt,\n apathize,\n delay,\n never,\n $$finally as finally,\n invincible,\n killFiber,\n joinFiber,\n cancelWith,\n bracket,\n nonCanceler,\n effectCanceler,\n fiberCanceler,\n functorAff,\n applyAff,\n applicativeAff,\n bindAff,\n monadAff,\n semigroupAff,\n monoidAff,\n altAff,\n plusAff,\n monadRecAff,\n monadThrowAff,\n monadErrorAff,\n monadEffectAff,\n lazyAff,\n monadSTAff,\n functorParAff,\n applyParAff,\n applicativeParAff,\n semigroupParAff,\n monoidParAff,\n altParAff,\n plusParAff,\n alternativeParAff,\n parallelAff,\n functorFiber,\n applyFiber,\n applicativeFiber,\n newtypeCanceler,\n semigroupCanceler,\n monoidCanceler\n};\nexport {\n catchError,\n throwError,\n try\n} from \"../Control.Monad.Error.Class/index.js\";\nexport {\n parallel,\n sequential\n} from \"../Control.Parallel.Class/index.js\";\nexport {\n Milliseconds\n} from \"../Data.Time.Duration/index.js\";\nexport {\n error,\n message\n} from \"../Effect.Exception/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Uncurried from \"../Effect.Uncurried/index.js\";\nvar EffectFnCanceler = function (x) {\n return x;\n};\nvar EffectFnAff = function (x) {\n return x;\n};\nvar fromEffectFnAff = function (v) {\n return Effect_Aff.makeAff(function (k) {\n return function __do() {\n var v1 = v(function ($9) {\n return k(Data_Either.Left.create($9))();\n }, function ($10) {\n return k(Data_Either.Right.create($10))();\n });\n return function (e) {\n return Effect_Aff.makeAff(function (k2) {\n return function __do() {\n v1(e, function ($11) {\n return k2(Data_Either.Left.create($11))();\n }, function ($12) {\n return k2(Data_Either.Right.create($12))();\n });\n return Effect_Aff.nonCanceler;\n };\n });\n };\n };\n });\n};\nexport {\n EffectFnAff,\n EffectFnCanceler,\n fromEffectFnAff\n};\nexport {\n mkEffectFn1,\n mkEffectFn2,\n mkEffectFn3,\n runEffectFn1,\n runEffectFn2,\n runEffectFn3\n} from \"../Effect.Uncurried/index.js\";\n", "export function typeOf(value) {\n return typeof value;\n}\n\nexport function tagOf(value) {\n return Object.prototype.toString.call(value).slice(8, -1);\n}\n\nexport function isNull(value) {\n return value === null;\n}\n\nexport function isUndefined(value) {\n return value === undefined;\n}\n\nexport const isArray = Array.isArray || function (value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n};\n", "export const fromNumberImpl = function (just) {\n return function (nothing) {\n return function (n) {\n /* jshint bitwise: false */\n return (n | 0) === n ? just(n) : nothing;\n };\n };\n};\n\nexport const toNumber = function (n) {\n return n;\n};\n\nexport const fromStringAsImpl = function (just) {\n return function (nothing) {\n return function (radix) {\n var digits;\n if (radix < 11) {\n digits = \"[0-\" + (radix - 1).toString() + \"]\";\n } else if (radix === 11) {\n digits = \"[0-9a]\";\n } else {\n digits = \"[0-9a-\" + String.fromCharCode(86 + radix) + \"]\";\n }\n var pattern = new RegExp(\"^[\\\\+\\\\-]?\" + digits + \"+$\", \"i\");\n\n return function (s) {\n /* jshint bitwise: false */\n if (pattern.test(s)) {\n var i = parseInt(s, radix);\n return (i | 0) === i ? just(i) : nothing;\n } else {\n return nothing;\n }\n };\n };\n };\n};\n\nexport const toStringAs = function (radix) {\n return function (i) {\n return i.toString(radix);\n };\n};\n\n\nexport const quot = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return x / y | 0;\n };\n};\n\nexport const rem = function (x) {\n return function (y) {\n return x % y;\n };\n};\n\nexport const pow = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return Math.pow(x,y) | 0;\n };\n};\n", "/* globals exports */\nexport const nan = NaN;\nconst isNaNImpl = isNaN;\nexport { isNaNImpl as isNaN };\nexport const infinity = Infinity;\nconst isFiniteImpl = isFinite;\nexport { isFiniteImpl as isFinite };\n\nexport function fromStringImpl(str, isFinite, just, nothing) {\n var num = parseFloat(str);\n if (isFinite(num)) {\n return just(num);\n } else {\n return nothing;\n }\n}\n\nexport const abs = Math.abs;\n\nexport const acos = Math.acos;\n\nexport const asin = Math.asin;\n\nexport const atan = Math.atan;\n\nexport const atan2 = function (y) {\n return function (x) {\n return Math.atan2(y, x);\n };\n};\n\nexport const ceil = Math.ceil;\n\nexport const cos = Math.cos;\n\nexport const exp = Math.exp;\n\nexport const floor = Math.floor;\n\nexport const log = Math.log;\n\nexport const max = function (n1) {\n return function (n2) {\n return Math.max(n1, n2);\n };\n};\n\nexport const min = function (n1) {\n return function (n2) {\n return Math.min(n1, n2);\n };\n};\n\nexport const pow = function (n) {\n return function (p) {\n return Math.pow(n, p);\n };\n};\n\nexport const remainder = function (n) {\n return function (m) {\n return n % m;\n };\n};\n\nexport const round = Math.round;\n\nexport const sign = Math.sign ? Math.sign : function(x) {\n return x === 0 || x !== x ? x : (x < 0 ? -1 : 1);\n};\n\nexport const sin = Math.sin;\n\nexport const sqrt = Math.sqrt;\n\nexport const tan = Math.tan;\n\nexport const trunc = Math.trunc ? Math.trunc : function(x) {\n return x < 0 ? Math.ceil(x) : Math.floor(x);\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Bounded from \"../Data.Bounded/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Number from \"../Data.Number/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nvar top = /* #__PURE__ */ Data_Bounded.top(Data_Bounded.boundedInt);\nvar bottom = /* #__PURE__ */ Data_Bounded.bottom(Data_Bounded.boundedInt);\nvar Radix = function (x) {\n return x;\n};\nvar Even = /* #__PURE__ */ (function () {\n function Even() {\n\n };\n Even.value = new Even();\n return Even;\n})();\nvar Odd = /* #__PURE__ */ (function () {\n function Odd() {\n\n };\n Odd.value = new Odd();\n return Odd;\n})();\nvar showParity = {\n show: function (v) {\n if (v instanceof Even) {\n return \"Even\";\n };\n if (v instanceof Odd) {\n return \"Odd\";\n };\n throw new Error(\"Failed pattern match at Data.Int (line 117, column 1 - line 119, column 19): \" + [ v.constructor.name ]);\n }\n};\nvar radix = function (n) {\n if (n >= 2 && n <= 36) {\n return new Data_Maybe.Just(n);\n };\n if (Data_Boolean.otherwise) {\n return Data_Maybe.Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.Int (line 198, column 1 - line 198, column 28): \" + [ n.constructor.name ]);\n};\nvar odd = function (x) {\n return (x & 1) !== 0;\n};\nvar octal = 8;\nvar hexadecimal = 16;\nvar fromStringAs = /* #__PURE__ */ (function () {\n return $foreign.fromStringAsImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar fromString = /* #__PURE__ */ fromStringAs(10);\nvar fromNumber = /* #__PURE__ */ (function () {\n return $foreign.fromNumberImpl(Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar unsafeClamp = function (x) {\n if (!Data_Number[\"isFinite\"](x)) {\n return 0;\n };\n if (x >= $foreign.toNumber(top)) {\n return top;\n };\n if (x <= $foreign.toNumber(bottom)) {\n return bottom;\n };\n if (Data_Boolean.otherwise) {\n return Data_Maybe.fromMaybe(0)(fromNumber(x));\n };\n throw new Error(\"Failed pattern match at Data.Int (line 72, column 1 - line 72, column 29): \" + [ x.constructor.name ]);\n};\nvar round = function ($37) {\n return unsafeClamp(Data_Number.round($37));\n};\nvar trunc = function ($38) {\n return unsafeClamp(Data_Number.trunc($38));\n};\nvar floor = function ($39) {\n return unsafeClamp(Data_Number.floor($39));\n};\nvar even = function (x) {\n return (x & 1) === 0;\n};\nvar parity = function (n) {\n var $28 = even(n);\n if ($28) {\n return Even.value;\n };\n return Odd.value;\n};\nvar eqParity = {\n eq: function (x) {\n return function (y) {\n if (x instanceof Even && y instanceof Even) {\n return true;\n };\n if (x instanceof Odd && y instanceof Odd) {\n return true;\n };\n return false;\n };\n }\n};\nvar eq1 = /* #__PURE__ */ Data_Eq.eq(eqParity);\nvar ordParity = {\n compare: function (x) {\n return function (y) {\n if (x instanceof Even && y instanceof Even) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof Even) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof Even) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof Odd && y instanceof Odd) {\n return Data_Ordering.EQ.value;\n };\n throw new Error(\"Failed pattern match at Data.Int (line 0, column 0 - line 0, column 0): \" + [ x.constructor.name, y.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqParity;\n }\n};\nvar semiringParity = /* #__PURE__ */ (function () {\n return {\n zero: Even.value,\n add: function (x) {\n return function (y) {\n var $33 = eq1(x)(y);\n if ($33) {\n return Even.value;\n };\n return Odd.value;\n };\n },\n one: Odd.value,\n mul: function (v) {\n return function (v1) {\n if (v instanceof Odd && v1 instanceof Odd) {\n return Odd.value;\n };\n return Even.value;\n };\n }\n };\n})();\nvar ringParity = {\n sub: /* #__PURE__ */ Data_Semiring.add(semiringParity),\n Semiring0: function () {\n return semiringParity;\n }\n};\nvar divisionRingParity = {\n recip: /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn),\n Ring0: function () {\n return ringParity;\n }\n};\nvar decimal = 10;\nvar commutativeRingParity = {\n Ring0: function () {\n return ringParity;\n }\n};\nvar euclideanRingParity = {\n degree: function (v) {\n if (v instanceof Even) {\n return 0;\n };\n if (v instanceof Odd) {\n return 1;\n };\n throw new Error(\"Failed pattern match at Data.Int (line 137, column 1 - line 141, column 17): \" + [ v.constructor.name ]);\n },\n div: function (x) {\n return function (v) {\n return x;\n };\n },\n mod: function (v) {\n return function (v1) {\n return Even.value;\n };\n },\n CommutativeRing0: function () {\n return commutativeRingParity;\n }\n};\nvar ceil = function ($40) {\n return unsafeClamp(Data_Number.ceil($40));\n};\nvar boundedParity = /* #__PURE__ */ (function () {\n return {\n bottom: Even.value,\n top: Odd.value,\n Ord0: function () {\n return ordParity;\n }\n };\n})();\nvar binary = 2;\nvar base36 = 36;\nexport {\n toNumber,\n toStringAs,\n quot,\n rem,\n pow\n} from \"./foreign.js\";\nexport {\n fromNumber,\n ceil,\n floor,\n trunc,\n round,\n fromString,\n radix,\n binary,\n octal,\n decimal,\n hexadecimal,\n base36,\n fromStringAs,\n Even,\n Odd,\n parity,\n even,\n odd,\n eqParity,\n ordParity,\n showParity,\n boundedParity,\n semiringParity,\n ringParity,\n commutativeRingParity,\n euclideanRingParity,\n divisionRingParity\n};\n", "export const fromCharArray = function (a) {\n return a.join(\"\");\n};\n\nexport const toCharArray = function (s) {\n return s.split(\"\");\n};\n\nexport const singleton = function (c) {\n return c;\n};\n\nexport const _charAt = function (just) {\n return function (nothing) {\n return function (i) {\n return function (s) {\n return i >= 0 && i < s.length ? just(s.charAt(i)) : nothing;\n };\n };\n };\n};\n\nexport const _toChar = function (just) {\n return function (nothing) {\n return function (s) {\n return s.length === 1 ? just(s) : nothing;\n };\n };\n};\n\nexport const length = function (s) {\n return s.length;\n};\n\nexport const countPrefix = function (p) {\n return function (s) {\n var i = 0;\n while (i < s.length && p(s.charAt(i))) i++;\n return i;\n };\n};\n\nexport const _indexOf = function (just) {\n return function (nothing) {\n return function (x) {\n return function (s) {\n var i = s.indexOf(x);\n return i === -1 ? nothing : just(i);\n };\n };\n };\n};\n\nexport const _indexOfStartingAt = function (just) {\n return function (nothing) {\n return function (x) {\n return function (startAt) {\n return function (s) {\n if (startAt < 0 || startAt > s.length) return nothing;\n var i = s.indexOf(x, startAt);\n return i === -1 ? nothing : just(i);\n };\n };\n };\n };\n};\n\nexport const _lastIndexOf = function (just) {\n return function (nothing) {\n return function (x) {\n return function (s) {\n var i = s.lastIndexOf(x);\n return i === -1 ? nothing : just(i);\n };\n };\n };\n};\n\nexport const _lastIndexOfStartingAt = function (just) {\n return function (nothing) {\n return function (x) {\n return function (startAt) {\n return function (s) {\n var i = s.lastIndexOf(x, startAt);\n return i === -1 ? nothing : just(i);\n };\n };\n };\n };\n};\n\nexport const take = function (n) {\n return function (s) {\n return s.substr(0, n);\n };\n};\n\nexport const drop = function (n) {\n return function (s) {\n return s.substring(n);\n };\n};\n\nexport const slice = function (b) {\n return function (e) {\n return function (s) {\n return s.slice(b,e);\n };\n };\n};\n\nexport const splitAt = function (i) {\n return function (s) {\n return { before: s.substring(0, i), after: s.substring(i) };\n };\n};\n", "export const charAt = function (i) {\n return function (s) {\n if (i >= 0 && i < s.length) return s.charAt(i);\n throw new Error(\"Data.String.Unsafe.charAt: Invalid index.\");\n };\n};\n\nexport const char = function (s) {\n if (s.length === 1) return s.charAt(0);\n throw new Error(\"Data.String.Unsafe.char: Expected string of length 1.\");\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_String_Unsafe from \"../Data.String.Unsafe/index.js\";\nvar uncons = function (v) {\n if (v === \"\") {\n return Data_Maybe.Nothing.value;\n };\n return new Data_Maybe.Just({\n head: Data_String_Unsafe.charAt(0)(v),\n tail: $foreign.drop(1)(v)\n });\n};\nvar toChar = /* #__PURE__ */ (function () {\n return $foreign[\"_toChar\"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar takeWhile = function (p) {\n return function (s) {\n return $foreign.take($foreign.countPrefix(p)(s))(s);\n };\n};\nvar takeRight = function (i) {\n return function (s) {\n return $foreign.drop($foreign.length(s) - i | 0)(s);\n };\n};\nvar stripSuffix = function (v) {\n return function (str) {\n var v1 = $foreign.splitAt($foreign.length(str) - $foreign.length(v) | 0)(str);\n var $14 = v1.after === v;\n if ($14) {\n return new Data_Maybe.Just(v1.before);\n };\n return Data_Maybe.Nothing.value;\n };\n};\nvar stripPrefix = function (v) {\n return function (str) {\n var v1 = $foreign.splitAt($foreign.length(v))(str);\n var $20 = v1.before === v;\n if ($20) {\n return new Data_Maybe.Just(v1.after);\n };\n return Data_Maybe.Nothing.value;\n };\n};\nvar lastIndexOf$prime = /* #__PURE__ */ (function () {\n return $foreign[\"_lastIndexOfStartingAt\"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar lastIndexOf = /* #__PURE__ */ (function () {\n return $foreign[\"_lastIndexOf\"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar indexOf$prime = /* #__PURE__ */ (function () {\n return $foreign[\"_indexOfStartingAt\"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar indexOf = /* #__PURE__ */ (function () {\n return $foreign[\"_indexOf\"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nvar dropWhile = function (p) {\n return function (s) {\n return $foreign.drop($foreign.countPrefix(p)(s))(s);\n };\n};\nvar dropRight = function (i) {\n return function (s) {\n return $foreign.take($foreign.length(s) - i | 0)(s);\n };\n};\nvar contains = function (pat) {\n var $23 = indexOf(pat);\n return function ($24) {\n return Data_Maybe.isJust($23($24));\n };\n};\nvar charAt = /* #__PURE__ */ (function () {\n return $foreign[\"_charAt\"](Data_Maybe.Just.create)(Data_Maybe.Nothing.value);\n})();\nexport {\n singleton,\n fromCharArray,\n toCharArray,\n length,\n countPrefix,\n take,\n drop,\n slice,\n splitAt\n} from \"./foreign.js\";\nexport {\n stripPrefix,\n stripSuffix,\n contains,\n charAt,\n toChar,\n uncons,\n indexOf,\n indexOf$prime,\n lastIndexOf,\n lastIndexOf$prime,\n takeRight,\n takeWhile,\n dropRight,\n dropWhile\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Monad_Error_Class from \"../Control.Monad.Error.Class/index.js\";\nimport * as Control_Monad_Except_Trans from \"../Control.Monad.Except.Trans/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Int from \"../Data.Int/index.js\";\nimport * as Data_List_NonEmpty from \"../Data.List.NonEmpty/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_String_CodeUnits from \"../Data.String.CodeUnits/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showString);\nvar show1 = /* #__PURE__ */ Data_Show.show(Data_Show.showInt);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Data_Either.applicativeEither);\nvar compare = /* #__PURE__ */ Data_Ord.compare(Data_Ord.ordString);\nvar compare1 = /* #__PURE__ */ Data_Ord.compare(Data_Ord.ordInt);\nvar ForeignError = /* #__PURE__ */ (function () {\n function ForeignError(value0) {\n this.value0 = value0;\n };\n ForeignError.create = function (value0) {\n return new ForeignError(value0);\n };\n return ForeignError;\n})();\nvar TypeMismatch = /* #__PURE__ */ (function () {\n function TypeMismatch(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n TypeMismatch.create = function (value0) {\n return function (value1) {\n return new TypeMismatch(value0, value1);\n };\n };\n return TypeMismatch;\n})();\nvar ErrorAtIndex = /* #__PURE__ */ (function () {\n function ErrorAtIndex(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n ErrorAtIndex.create = function (value0) {\n return function (value1) {\n return new ErrorAtIndex(value0, value1);\n };\n };\n return ErrorAtIndex;\n})();\nvar ErrorAtProperty = /* #__PURE__ */ (function () {\n function ErrorAtProperty(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n ErrorAtProperty.create = function (value0) {\n return function (value1) {\n return new ErrorAtProperty(value0, value1);\n };\n };\n return ErrorAtProperty;\n})();\nvar unsafeToForeign = Unsafe_Coerce.unsafeCoerce;\nvar unsafeFromForeign = Unsafe_Coerce.unsafeCoerce;\nvar showForeignError = {\n show: function (v) {\n if (v instanceof ForeignError) {\n return \"(ForeignError \" + (show(v.value0) + \")\");\n };\n if (v instanceof ErrorAtIndex) {\n return \"(ErrorAtIndex \" + (show1(v.value0) + (\" \" + (Data_Show.show(showForeignError)(v.value1) + \")\")));\n };\n if (v instanceof ErrorAtProperty) {\n return \"(ErrorAtProperty \" + (show(v.value0) + (\" \" + (Data_Show.show(showForeignError)(v.value1) + \")\")));\n };\n if (v instanceof TypeMismatch) {\n return \"(TypeMismatch \" + (show(v.value0) + (\" \" + (show(v.value1) + \")\")));\n };\n throw new Error(\"Failed pattern match at Foreign (line 69, column 1 - line 73, column 89): \" + [ v.constructor.name ]);\n }\n};\nvar renderForeignError = function (v) {\n if (v instanceof ForeignError) {\n return v.value0;\n };\n if (v instanceof ErrorAtIndex) {\n return \"Error at array index \" + (show1(v.value0) + (\": \" + renderForeignError(v.value1)));\n };\n if (v instanceof ErrorAtProperty) {\n return \"Error at property \" + (show(v.value0) + (\": \" + renderForeignError(v.value1)));\n };\n if (v instanceof TypeMismatch) {\n return \"Type mismatch: expected \" + (v.value0 + (\", found \" + v.value1));\n };\n throw new Error(\"Failed pattern match at Foreign (line 78, column 1 - line 78, column 45): \" + [ v.constructor.name ]);\n};\nvar readUndefined = function (dictMonad) {\n var pure1 = Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonad));\n return function (value) {\n if ($foreign.isUndefined(value)) {\n return pure1(Data_Maybe.Nothing.value);\n };\n if (Data_Boolean.otherwise) {\n return pure1(new Data_Maybe.Just(value));\n };\n throw new Error(\"Failed pattern match at Foreign (line 174, column 1 - line 174, column 103): \" + [ value.constructor.name ]);\n };\n};\nvar readNullOrUndefined = function (dictMonad) {\n var pure1 = Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonad));\n return function (value) {\n if ($foreign.isNull(value) || $foreign.isUndefined(value)) {\n return pure1(Data_Maybe.Nothing.value);\n };\n if (Data_Boolean.otherwise) {\n return pure1(new Data_Maybe.Just(value));\n };\n throw new Error(\"Failed pattern match at Foreign (line 179, column 1 - line 179, column 109): \" + [ value.constructor.name ]);\n };\n};\nvar readNull = function (dictMonad) {\n var pure1 = Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonad));\n return function (value) {\n if ($foreign.isNull(value)) {\n return pure1(Data_Maybe.Nothing.value);\n };\n if (Data_Boolean.otherwise) {\n return pure1(new Data_Maybe.Just(value));\n };\n throw new Error(\"Failed pattern match at Foreign (line 169, column 1 - line 169, column 98): \" + [ value.constructor.name ]);\n };\n};\nvar fail = function (dictMonad) {\n var $153 = Control_Monad_Error_Class.throwError(Control_Monad_Except_Trans.monadThrowExceptT(dictMonad));\n return function ($154) {\n return $153(Data_List_NonEmpty.singleton($154));\n };\n};\nvar readArray = function (dictMonad) {\n var pure1 = Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonad));\n var fail1 = fail(dictMonad);\n return function (value) {\n if ($foreign.isArray(value)) {\n return pure1(unsafeFromForeign(value));\n };\n if (Data_Boolean.otherwise) {\n return fail1(new TypeMismatch(\"array\", $foreign.tagOf(value)));\n };\n throw new Error(\"Failed pattern match at Foreign (line 164, column 1 - line 164, column 99): \" + [ value.constructor.name ]);\n };\n};\nvar unsafeReadTagged = function (dictMonad) {\n var pure1 = Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonad));\n var fail1 = fail(dictMonad);\n return function (tag) {\n return function (value) {\n if ($foreign.tagOf(value) === tag) {\n return pure1(unsafeFromForeign(value));\n };\n if (Data_Boolean.otherwise) {\n return fail1(new TypeMismatch(tag, $foreign.tagOf(value)));\n };\n throw new Error(\"Failed pattern match at Foreign (line 123, column 1 - line 123, column 104): \" + [ tag.constructor.name, value.constructor.name ]);\n };\n };\n};\nvar readBoolean = function (dictMonad) {\n return unsafeReadTagged(dictMonad)(\"Boolean\");\n};\nvar readNumber = function (dictMonad) {\n return unsafeReadTagged(dictMonad)(\"Number\");\n};\nvar readInt = function (dictMonad) {\n var map = Data_Functor.map(((dictMonad.Bind1()).Apply0()).Functor0());\n var readNumber1 = readNumber(dictMonad);\n return function (value) {\n var error = new Data_Either.Left(Data_List_NonEmpty.singleton(new TypeMismatch(\"Int\", $foreign.tagOf(value))));\n var fromNumber = (function () {\n var $155 = Data_Maybe.maybe(error)(pure);\n return function ($156) {\n return $155(Data_Int.fromNumber($156));\n };\n })();\n return Control_Monad_Except_Trans.mapExceptT(map(Data_Either.either(Data_Function[\"const\"](error))(fromNumber)))(readNumber1(value));\n };\n};\nvar readString = function (dictMonad) {\n return unsafeReadTagged(dictMonad)(\"String\");\n};\nvar readChar = function (dictMonad) {\n var map = Data_Functor.map(((dictMonad.Bind1()).Apply0()).Functor0());\n var readString1 = readString(dictMonad);\n return function (value) {\n var error = new Data_Either.Left(Data_List_NonEmpty.singleton(new TypeMismatch(\"Char\", $foreign.tagOf(value))));\n var fromString = (function () {\n var $157 = Data_Maybe.maybe(error)(pure);\n return function ($158) {\n return $157(Data_String_CodeUnits.toChar($158));\n };\n })();\n return Control_Monad_Except_Trans.mapExceptT(map(Data_Either.either(Data_Function[\"const\"](error))(fromString)))(readString1(value));\n };\n};\nvar eqForeignError = {\n eq: function (x) {\n return function (y) {\n if (x instanceof ForeignError && y instanceof ForeignError) {\n return x.value0 === y.value0;\n };\n if (x instanceof TypeMismatch && y instanceof TypeMismatch) {\n return x.value0 === y.value0 && x.value1 === y.value1;\n };\n if (x instanceof ErrorAtIndex && y instanceof ErrorAtIndex) {\n return x.value0 === y.value0 && Data_Eq.eq(eqForeignError)(x.value1)(y.value1);\n };\n if (x instanceof ErrorAtProperty && y instanceof ErrorAtProperty) {\n return x.value0 === y.value0 && Data_Eq.eq(eqForeignError)(x.value1)(y.value1);\n };\n return false;\n };\n }\n};\nvar ordForeignError = {\n compare: function (x) {\n return function (y) {\n if (x instanceof ForeignError && y instanceof ForeignError) {\n return compare(x.value0)(y.value0);\n };\n if (x instanceof ForeignError) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof ForeignError) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof TypeMismatch && y instanceof TypeMismatch) {\n var v = compare(x.value0)(y.value0);\n if (v instanceof Data_Ordering.LT) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Ordering.GT) {\n return Data_Ordering.GT.value;\n };\n return compare(x.value1)(y.value1);\n };\n if (x instanceof TypeMismatch) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof TypeMismatch) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof ErrorAtIndex && y instanceof ErrorAtIndex) {\n var v = compare1(x.value0)(y.value0);\n if (v instanceof Data_Ordering.LT) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Ordering.GT) {\n return Data_Ordering.GT.value;\n };\n return Data_Ord.compare(ordForeignError)(x.value1)(y.value1);\n };\n if (x instanceof ErrorAtIndex) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof ErrorAtIndex) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof ErrorAtProperty && y instanceof ErrorAtProperty) {\n var v = compare(x.value0)(y.value0);\n if (v instanceof Data_Ordering.LT) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Ordering.GT) {\n return Data_Ordering.GT.value;\n };\n return Data_Ord.compare(ordForeignError)(x.value1)(y.value1);\n };\n throw new Error(\"Failed pattern match at Foreign (line 0, column 0 - line 0, column 0): \" + [ x.constructor.name, y.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqForeignError;\n }\n};\nexport {\n typeOf,\n tagOf,\n isNull,\n isUndefined,\n isArray\n} from \"./foreign.js\";\nexport {\n ForeignError,\n TypeMismatch,\n ErrorAtIndex,\n ErrorAtProperty,\n renderForeignError,\n unsafeToForeign,\n unsafeFromForeign,\n unsafeReadTagged,\n readString,\n readChar,\n readBoolean,\n readNumber,\n readInt,\n readArray,\n readNull,\n readUndefined,\n readNullOrUndefined,\n fail,\n eqForeignError,\n ordForeignError,\n showForeignError\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Affjax_RequestBody from \"../Affjax.RequestBody/index.js\";\nimport * as Affjax_RequestHeader from \"../Affjax.RequestHeader/index.js\";\nimport * as Affjax_ResponseFormat from \"../Affjax.ResponseFormat/index.js\";\nimport * as Affjax_ResponseHeader from \"../Affjax.ResponseHeader/index.js\";\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_Error_Class from \"../Control.Monad.Error.Class/index.js\";\nimport * as Control_Monad_Except from \"../Control.Monad.Except/index.js\";\nimport * as Control_Monad_Except_Trans from \"../Control.Monad.Except.Trans/index.js\";\nimport * as Data_Argonaut_Core from \"../Data.Argonaut.Core/index.js\";\nimport * as Data_Argonaut_Parser from \"../Data.Argonaut.Parser/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_FormURLEncoded from \"../Data.FormURLEncoded/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_HTTP_Method from \"../Data.HTTP.Method/index.js\";\nimport * as Data_HeytingAlgebra from \"../Data.HeytingAlgebra/index.js\";\nimport * as Data_Identity from \"../Data.Identity/index.js\";\nimport * as Data_List_NonEmpty from \"../Data.List.NonEmpty/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Aff_Compat from \"../Effect.Aff.Compat/index.js\";\nimport * as Effect_Exception from \"../Effect.Exception/index.js\";\nimport * as Foreign from \"../Foreign/index.js\";\nvar pure = /* #__PURE__ */ Control_Applicative.pure(/* #__PURE__ */ Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity));\nvar fail = /* #__PURE__ */ Foreign.fail(Data_Identity.monadIdentity);\nvar unsafeReadTagged = /* #__PURE__ */ Foreign.unsafeReadTagged(Data_Identity.monadIdentity);\nvar alt = /* #__PURE__ */ Control_Alt.alt(/* #__PURE__ */ Control_Monad_Except_Trans.altExceptT(Data_List_Types.semigroupNonEmptyList)(Data_Identity.monadIdentity));\nvar composeKleisliFlipped = /* #__PURE__ */ Control_Bind.composeKleisliFlipped(/* #__PURE__ */ Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity));\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar any = /* #__PURE__ */ Data_Foldable.any(Data_Foldable.foldableArray)(Data_HeytingAlgebra.heytingAlgebraBoolean);\nvar eq = /* #__PURE__ */ Data_Eq.eq(Data_Eq.eqString);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Data_Maybe.bindMaybe);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorArray);\nvar mapFlipped = /* #__PURE__ */ Data_Functor.mapFlipped(Effect_Aff.functorAff);\nvar $$try = /* #__PURE__ */ Control_Monad_Error_Class[\"try\"](Effect_Aff.monadErrorAff);\nvar pure1 = /* #__PURE__ */ Control_Applicative.pure(Effect_Aff.applicativeAff);\nvar map2 = /* #__PURE__ */ Data_Functor.map(Effect_Aff.functorAff);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Data_Either.functorEither);\nvar RequestContentError = /* #__PURE__ */ (function () {\n function RequestContentError(value0) {\n this.value0 = value0;\n };\n RequestContentError.create = function (value0) {\n return new RequestContentError(value0);\n };\n return RequestContentError;\n})();\nvar ResponseBodyError = /* #__PURE__ */ (function () {\n function ResponseBodyError(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n ResponseBodyError.create = function (value0) {\n return function (value1) {\n return new ResponseBodyError(value0, value1);\n };\n };\n return ResponseBodyError;\n})();\nvar TimeoutError = /* #__PURE__ */ (function () {\n function TimeoutError() {\n\n };\n TimeoutError.value = new TimeoutError();\n return TimeoutError;\n})();\nvar RequestFailedError = /* #__PURE__ */ (function () {\n function RequestFailedError() {\n\n };\n RequestFailedError.value = new RequestFailedError();\n return RequestFailedError;\n})();\nvar XHROtherError = /* #__PURE__ */ (function () {\n function XHROtherError(value0) {\n this.value0 = value0;\n };\n XHROtherError.create = function (value0) {\n return new XHROtherError(value0);\n };\n return XHROtherError;\n})();\nvar request = function (driver) {\n return function (req) {\n var parseJSON = function (v) {\n if (v === \"\") {\n return pure(Data_Argonaut_Core.jsonEmptyObject);\n };\n return Data_Either.either(function ($74) {\n return fail(Foreign.ForeignError.create($74));\n })(pure)(Data_Argonaut_Parser.jsonParser(v));\n };\n var fromResponse = (function () {\n if (req.responseFormat instanceof Affjax_ResponseFormat[\"ArrayBuffer\"]) {\n return unsafeReadTagged(\"ArrayBuffer\");\n };\n if (req.responseFormat instanceof Affjax_ResponseFormat.Blob) {\n return unsafeReadTagged(\"Blob\");\n };\n if (req.responseFormat instanceof Affjax_ResponseFormat.Document) {\n return function (x) {\n return alt(unsafeReadTagged(\"Document\")(x))(alt(unsafeReadTagged(\"XMLDocument\")(x))(unsafeReadTagged(\"HTMLDocument\")(x)));\n };\n };\n if (req.responseFormat instanceof Affjax_ResponseFormat.Json) {\n return composeKleisliFlipped(function ($75) {\n return req.responseFormat.value0(parseJSON($75));\n })(unsafeReadTagged(\"String\"));\n };\n if (req.responseFormat instanceof Affjax_ResponseFormat[\"String\"]) {\n return unsafeReadTagged(\"String\");\n };\n if (req.responseFormat instanceof Affjax_ResponseFormat.Ignore) {\n return Data_Function[\"const\"](req.responseFormat.value0(pure(Data_Unit.unit)));\n };\n throw new Error(\"Failed pattern match at Affjax (line 274, column 18 - line 283, column 57): \" + [ req.responseFormat.constructor.name ]);\n })();\n var extractContent = function (v) {\n if (v instanceof Affjax_RequestBody.ArrayView) {\n return new Data_Either.Right(v.value0(Foreign.unsafeToForeign));\n };\n if (v instanceof Affjax_RequestBody.Blob) {\n return new Data_Either.Right(Foreign.unsafeToForeign(v.value0));\n };\n if (v instanceof Affjax_RequestBody.Document) {\n return new Data_Either.Right(Foreign.unsafeToForeign(v.value0));\n };\n if (v instanceof Affjax_RequestBody[\"String\"]) {\n return new Data_Either.Right(Foreign.unsafeToForeign(v.value0));\n };\n if (v instanceof Affjax_RequestBody.FormData) {\n return new Data_Either.Right(Foreign.unsafeToForeign(v.value0));\n };\n if (v instanceof Affjax_RequestBody.FormURLEncoded) {\n return Data_Either.note(\"Body contains values that cannot be encoded as application/x-www-form-urlencoded\")(map(Foreign.unsafeToForeign)(Data_FormURLEncoded.encode(v.value0)));\n };\n if (v instanceof Affjax_RequestBody.Json) {\n return new Data_Either.Right(Foreign.unsafeToForeign(Data_Argonaut_Core.stringify(v.value0)));\n };\n throw new Error(\"Failed pattern match at Affjax (line 235, column 20 - line 250, column 69): \" + [ v.constructor.name ]);\n };\n var addHeader = function (mh) {\n return function (hs) {\n if (mh instanceof Data_Maybe.Just && !any(Data_Function.on(eq)(Affjax_RequestHeader.name)(mh.value0))(hs)) {\n return Data_Array.snoc(hs)(mh.value0);\n };\n return hs;\n };\n };\n var headers = function (reqContent) {\n return addHeader(map(Affjax_RequestHeader.ContentType.create)(bindFlipped(Affjax_RequestBody.toMediaType)(reqContent)))(addHeader(map(Affjax_RequestHeader.Accept.create)(Affjax_ResponseFormat.toMediaType(req.responseFormat)))(req.headers));\n };\n var ajaxRequest = function (v) {\n return {\n method: Data_HTTP_Method.print(req.method),\n url: req.url,\n headers: map1(function (h) {\n return {\n field: Affjax_RequestHeader.name(h),\n value: Affjax_RequestHeader.value(h)\n };\n })(headers(req.content)),\n content: v,\n responseType: Affjax_ResponseFormat.toResponseType(req.responseFormat),\n username: Data_Nullable.toNullable(req.username),\n password: Data_Nullable.toNullable(req.password),\n withCredentials: req.withCredentials,\n timeout: Data_Maybe.fromMaybe(0.0)(map(function (v1) {\n return v1;\n })(req.timeout))\n };\n };\n var send = function (content) {\n return mapFlipped($$try(Effect_Aff_Compat.fromEffectFnAff($foreign[\"_ajax\"](driver, \"AffjaxTimeoutErrorMessageIdent\", \"AffjaxRequestFailedMessageIdent\", Affjax_ResponseHeader.ResponseHeader.create, ajaxRequest(content)))))(function (v) {\n if (v instanceof Data_Either.Right) {\n var v1 = Control_Monad_Except.runExcept(fromResponse(v.value0.body));\n if (v1 instanceof Data_Either.Left) {\n return new Data_Either.Left(new ResponseBodyError(Data_List_NonEmpty.head(v1.value0), v.value0));\n };\n if (v1 instanceof Data_Either.Right) {\n return new Data_Either.Right({\n headers: v.value0.headers,\n status: v.value0.status,\n statusText: v.value0.statusText,\n body: v1.value0\n });\n };\n throw new Error(\"Failed pattern match at Affjax (line 209, column 9 - line 211, column 52): \" + [ v1.constructor.name ]);\n };\n if (v instanceof Data_Either.Left) {\n return new Data_Either.Left((function () {\n var message = Effect_Exception.message(v.value0);\n var $61 = message === \"AffjaxTimeoutErrorMessageIdent\";\n if ($61) {\n return TimeoutError.value;\n };\n var $62 = message === \"AffjaxRequestFailedMessageIdent\";\n if ($62) {\n return RequestFailedError.value;\n };\n return new XHROtherError(v.value0);\n })());\n };\n throw new Error(\"Failed pattern match at Affjax (line 207, column 144 - line 219, column 28): \" + [ v.constructor.name ]);\n });\n };\n if (req.content instanceof Data_Maybe.Nothing) {\n return send(Data_Nullable.toNullable(Data_Maybe.Nothing.value));\n };\n if (req.content instanceof Data_Maybe.Just) {\n var v = extractContent(req.content.value0);\n if (v instanceof Data_Either.Right) {\n return send(Data_Nullable.toNullable(new Data_Maybe.Just(v.value0)));\n };\n if (v instanceof Data_Either.Left) {\n return pure1(new Data_Either.Left(new RequestContentError(v.value0)));\n };\n throw new Error(\"Failed pattern match at Affjax (line 199, column 7 - line 203, column 48): \" + [ v.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Affjax (line 195, column 3 - line 203, column 48): \" + [ req.content.constructor.name ]);\n };\n};\nvar printError = function (v) {\n if (v instanceof RequestContentError) {\n return \"There was a problem with the request content: \" + v.value0;\n };\n if (v instanceof ResponseBodyError) {\n return \"There was a problem with the response body: \" + Foreign.renderForeignError(v.value0);\n };\n if (v instanceof TimeoutError) {\n return \"There was a problem making the request: timeout\";\n };\n if (v instanceof RequestFailedError) {\n return \"There was a problem making the request: request failed\";\n };\n if (v instanceof XHROtherError) {\n return \"There was a problem making the request: \" + Effect_Exception.message(v.value0);\n };\n throw new Error(\"Failed pattern match at Affjax (line 113, column 14 - line 123, column 66): \" + [ v.constructor.name ]);\n};\nvar defaultRequest = /* #__PURE__ */ (function () {\n return {\n method: new Data_Either.Left(Data_HTTP_Method.GET.value),\n url: \"/\",\n headers: [ ],\n content: Data_Maybe.Nothing.value,\n username: Data_Maybe.Nothing.value,\n password: Data_Maybe.Nothing.value,\n withCredentials: false,\n responseFormat: Affjax_ResponseFormat.ignore,\n timeout: Data_Maybe.Nothing.value\n };\n})();\nvar $$delete = function (driver) {\n return function (rf) {\n return function (u) {\n return request(driver)({\n headers: defaultRequest.headers,\n content: defaultRequest.content,\n username: defaultRequest.username,\n password: defaultRequest.password,\n withCredentials: defaultRequest.withCredentials,\n timeout: defaultRequest.timeout,\n method: new Data_Either.Left(Data_HTTP_Method.DELETE.value),\n url: u,\n responseFormat: rf\n });\n };\n };\n};\nvar delete_ = function (driver) {\n var $76 = map2($$void);\n var $77 = $$delete(driver)(Affjax_ResponseFormat.ignore);\n return function ($78) {\n return $76($77($78));\n };\n};\nvar get = function (driver) {\n return function (rf) {\n return function (u) {\n return request(driver)({\n method: defaultRequest.method,\n headers: defaultRequest.headers,\n content: defaultRequest.content,\n username: defaultRequest.username,\n password: defaultRequest.password,\n withCredentials: defaultRequest.withCredentials,\n timeout: defaultRequest.timeout,\n url: u,\n responseFormat: rf\n });\n };\n };\n};\nvar patch = function (driver) {\n return function (rf) {\n return function (u) {\n return function (c) {\n return request(driver)({\n headers: defaultRequest.headers,\n username: defaultRequest.username,\n password: defaultRequest.password,\n withCredentials: defaultRequest.withCredentials,\n timeout: defaultRequest.timeout,\n method: new Data_Either.Left(Data_HTTP_Method.PATCH.value),\n url: u,\n content: new Data_Maybe.Just(c),\n responseFormat: rf\n });\n };\n };\n };\n};\nvar patch_ = function (driver) {\n return function (url) {\n var $79 = map2($$void);\n var $80 = patch(driver)(Affjax_ResponseFormat.ignore)(url);\n return function ($81) {\n return $79($80($81));\n };\n };\n};\nvar post = function (driver) {\n return function (rf) {\n return function (u) {\n return function (c) {\n return request(driver)({\n headers: defaultRequest.headers,\n username: defaultRequest.username,\n password: defaultRequest.password,\n withCredentials: defaultRequest.withCredentials,\n timeout: defaultRequest.timeout,\n method: new Data_Either.Left(Data_HTTP_Method.POST.value),\n url: u,\n content: c,\n responseFormat: rf\n });\n };\n };\n };\n};\nvar post_ = function (driver) {\n return function (url) {\n var $82 = map2($$void);\n var $83 = post(driver)(Affjax_ResponseFormat.ignore)(url);\n return function ($84) {\n return $82($83($84));\n };\n };\n};\nvar put = function (driver) {\n return function (rf) {\n return function (u) {\n return function (c) {\n return request(driver)({\n headers: defaultRequest.headers,\n username: defaultRequest.username,\n password: defaultRequest.password,\n withCredentials: defaultRequest.withCredentials,\n timeout: defaultRequest.timeout,\n method: new Data_Either.Left(Data_HTTP_Method.PUT.value),\n url: u,\n content: c,\n responseFormat: rf\n });\n };\n };\n };\n};\nvar put_ = function (driver) {\n return function (url) {\n var $85 = map2($$void);\n var $86 = put(driver)(Affjax_ResponseFormat.ignore)(url);\n return function ($87) {\n return $85($86($87));\n };\n };\n};\nexport {\n defaultRequest,\n RequestContentError,\n ResponseBodyError,\n TimeoutError,\n RequestFailedError,\n XHROtherError,\n printError,\n request,\n get,\n post,\n post_,\n put,\n put_,\n $$delete as delete,\n delete_,\n patch,\n patch_\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showInt);\nvar compare = /* #__PURE__ */ Data_Ord.compare(Data_Ord.ordInt);\nvar StatusCode = function (x) {\n return x;\n};\nvar showStatusCode = {\n show: function (v) {\n return \"(StatusCode \" + (show(v) + \")\");\n }\n};\nvar newtypeStatusCode = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar eqStatusCode = {\n eq: function (x) {\n return function (y) {\n return x === y;\n };\n }\n};\nvar ordStatusCode = {\n compare: function (x) {\n return function (y) {\n return compare(x)(y);\n };\n },\n Eq0: function () {\n return eqStatusCode;\n }\n};\nexport {\n StatusCode,\n eqStatusCode,\n ordStatusCode,\n newtypeStatusCode,\n showStatusCode\n};\n", "export const driver = {\n newXHR: function () {\n return new XMLHttpRequest();\n },\n fixupUrl: function (url) {\n return url || \"/\";\n }\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Affjax from \"../Affjax/index.js\";\nvar request = /* #__PURE__ */ Affjax.request($foreign.driver);\nvar put_ = /* #__PURE__ */ Affjax.put_($foreign.driver);\nvar put = /* #__PURE__ */ Affjax.put($foreign.driver);\nvar post_ = /* #__PURE__ */ Affjax.post_($foreign.driver);\nvar post = /* #__PURE__ */ Affjax.post($foreign.driver);\nvar patch_ = /* #__PURE__ */ Affjax.patch_($foreign.driver);\nvar patch = /* #__PURE__ */ Affjax.patch($foreign.driver);\nvar get = /* #__PURE__ */ Affjax.get($foreign.driver);\nvar delete_ = /* #__PURE__ */ Affjax.delete_($foreign.driver);\nvar $$delete = /* #__PURE__ */ Affjax[\"delete\"]($foreign.driver);\nexport {\n driver\n} from \"./foreign.js\";\nexport {\n request,\n get,\n post,\n post_,\n put,\n put_,\n $$delete as delete,\n delete_,\n patch,\n patch_\n};\nexport {\n RequestContentError,\n RequestFailedError,\n ResponseBodyError,\n TimeoutError,\n XHROtherError,\n defaultRequest,\n printError\n} from \"../Affjax/index.js\";\n", "\"use strict\";\n\nimport moment from 'moment'\n\nexport const _app = function() {\n return app;\n}\n\nexport const _closest = function(just, nothing, selector, el) {\n var node = el.closest(selector);\n if(node) {\n return just(node);\n } else {\n return nothing;\n }\n}\n\nexport const _createFormData = function(formElement) {\n return new FormData(formElement);\n}\n\nexport const _createFormString = function(formElement) {\n return new URLSearchParams(new FormData(formElement)).toString()\n}\n\nexport const _createFormArray = function(formElement) {\n return Array.from(new FormData(formElement));\n}\n\nexport const _moment8601 = function(tuple, s) {\n var m = moment(s, moment.ISO_8601);\n var s1 = m.fromNow();\n var s2 = m.format('MMMM D YYYY, h:mm a') + \" (\" + m.format() + \") \";\n return tuple(s1)(s2);\n}\n\nexport const _mmoment8601 = function(just, nothing, tuple, s) {\n try {\n var m = moment(s, moment.ISO_8601);\n var s1 = m.fromNow();\n var s2 = m.format('MMMM D YYYY, h:mm a') + \" (\" + m.format() + \") \";\n return just(tuple(s1)(s2));\n } catch (error) {\n return nothing\n }\n}\n\nexport const _closeWindow = function (window) {\n window.close();\n};\n\nexport const _setFocus = function(elemId) {\n document.getElementById(elemId).focus();\n};\n\n\nexport const _toLocaleDateString = function(dateString) {\n return new Date(dateString).toLocaleDateString(undefined, {dateStyle: 'medium'}) \n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar RawHTML = function (x) {\n return x;\n};\nvar toLocaleDateString = function (s) {\n return $foreign[\"_toLocaleDateString\"](s);\n};\nvar setFocus = function (s) {\n return function () {\n return $foreign[\"_setFocus\"](s);\n };\n};\nvar newtypeRawHTML = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar moment8601 = function (s) {\n return function () {\n return $foreign[\"_moment8601\"](Data_Tuple.Tuple.create, s);\n };\n};\nvar mmoment8601 = function (s) {\n return $foreign[\"_mmoment8601\"](Data_Maybe.Just.create, Data_Maybe.Nothing.value, Data_Tuple.Tuple.create, s);\n};\nvar createFormString = function (f) {\n return $foreign[\"_createFormString\"](f);\n};\nvar createFormData = function (f) {\n return $foreign[\"_createFormData\"](f);\n};\nvar createFormArray = function (f) {\n return $foreign[\"_createFormArray\"](f);\n};\nvar closest = function (selector) {\n return function (node) {\n return function () {\n return $foreign[\"_closest\"](Data_Maybe.Just.create, Data_Maybe.Nothing.value, selector, node);\n };\n };\n};\nvar closeWindow = function (win) {\n return function () {\n return $foreign[\"_closeWindow\"](win);\n };\n};\nvar app$prime = function (v) {\n return $foreign[\"_app\"]();\n};\nexport {\n _app,\n _closest,\n _moment8601,\n _mmoment8601,\n _createFormData,\n _createFormString,\n _createFormArray,\n _closeWindow,\n _setFocus,\n _toLocaleDateString\n} from \"./foreign.js\";\nexport {\n app$prime,\n closest,\n moment8601,\n mmoment8601,\n createFormData,\n createFormString,\n createFormArray,\n closeWindow,\n RawHTML,\n setFocus,\n toLocaleDateString,\n newtypeRawHTML\n};\n", "export const _parseJSON = JSON.parse;\n\nexport const _undefined = undefined;\n\nexport const _unsafeStringify = JSON.stringify;\n", "export function toCharCode(c) {\n return c.charCodeAt(0);\n}\n\nexport function fromCharCode(c) {\n return String.fromCharCode(c);\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Alternative from \"../Control.Alternative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Bounded from \"../Data.Bounded/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nimport * as Data_Unfoldable1 from \"../Data.Unfoldable1/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nvar apply = /* #__PURE__ */ Control_Apply.apply(Control_Apply.applyFn);\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showInt);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar top = /* #__PURE__ */ Data_Bounded.top(Data_Bounded.boundedInt);\nvar bottom = /* #__PURE__ */ Data_Bounded.bottom(Data_Bounded.boundedInt);\nvar bind = /* #__PURE__ */ Control_Bind.bind(Data_Maybe.bindMaybe);\nvar voidLeft = /* #__PURE__ */ Data_Functor.voidLeft(Data_Maybe.functorMaybe);\nvar guard = /* #__PURE__ */ Control_Alternative.guard(Data_Maybe.alternativeMaybe);\nvar fromJust = /* #__PURE__ */ Data_Maybe.fromJust();\nvar bottom1 = /* #__PURE__ */ Data_Bounded.bottom(Data_Bounded.boundedChar);\nvar top1 = /* #__PURE__ */ Data_Bounded.top(Data_Bounded.boundedChar);\nvar Cardinality = function (x) {\n return x;\n};\nvar toEnum = function (dict) {\n return dict.toEnum;\n};\nvar succ = function (dict) {\n return dict.succ;\n};\nvar upFromIncluding = function (dictEnum) {\n var succ1 = succ(dictEnum);\n return function (dictUnfoldable1) {\n return Data_Unfoldable1.unfoldr1(dictUnfoldable1)(apply(Data_Tuple.Tuple.create)(succ1));\n };\n};\nvar showCardinality = {\n show: function (v) {\n return \"(Cardinality \" + (show(v) + \")\");\n }\n};\nvar pred = function (dict) {\n return dict.pred;\n};\nvar ordCardinality = Data_Ord.ordInt;\nvar newtypeCardinality = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar fromEnum = function (dict) {\n return dict.fromEnum;\n};\nvar toEnumWithDefaults = function (dictBoundedEnum) {\n var toEnum1 = toEnum(dictBoundedEnum);\n var fromEnum1 = fromEnum(dictBoundedEnum);\n var bottom2 = Data_Bounded.bottom(dictBoundedEnum.Bounded0());\n return function (low) {\n return function (high) {\n return function (x) {\n var v = toEnum1(x);\n if (v instanceof Data_Maybe.Just) {\n return v.value0;\n };\n if (v instanceof Data_Maybe.Nothing) {\n var $140 = x < fromEnum1(bottom2);\n if ($140) {\n return low;\n };\n return high;\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 158, column 33 - line 160, column 62): \" + [ v.constructor.name ]);\n };\n };\n };\n};\nvar eqCardinality = Data_Eq.eqInt;\nvar enumUnit = /* #__PURE__ */ (function () {\n return {\n succ: Data_Function[\"const\"](Data_Maybe.Nothing.value),\n pred: Data_Function[\"const\"](Data_Maybe.Nothing.value),\n Ord0: function () {\n return Data_Ord.ordUnit;\n }\n };\n})();\nvar enumTuple = function (dictEnum) {\n var succ1 = succ(dictEnum);\n var pred1 = pred(dictEnum);\n var ordTuple = Data_Tuple.ordTuple(dictEnum.Ord0());\n return function (dictBoundedEnum) {\n var Bounded0 = dictBoundedEnum.Bounded0();\n var bottom2 = Data_Bounded.bottom(Bounded0);\n var Enum1 = dictBoundedEnum.Enum1();\n var succ2 = succ(Enum1);\n var top2 = Data_Bounded.top(Bounded0);\n var pred2 = pred(Enum1);\n var ordTuple1 = ordTuple(Enum1.Ord0());\n return {\n succ: function (v) {\n return Data_Maybe.maybe(map(Data_Function.flip(Data_Tuple.Tuple.create)(bottom2))(succ1(v.value0)))((function () {\n var $183 = Data_Tuple.Tuple.create(v.value0);\n return function ($184) {\n return Data_Maybe.Just.create($183($184));\n };\n })())(succ2(v.value1));\n },\n pred: function (v) {\n return Data_Maybe.maybe(map(Data_Function.flip(Data_Tuple.Tuple.create)(top2))(pred1(v.value0)))((function () {\n var $185 = Data_Tuple.Tuple.create(v.value0);\n return function ($186) {\n return Data_Maybe.Just.create($185($186));\n };\n })())(pred2(v.value1));\n },\n Ord0: function () {\n return ordTuple1;\n }\n };\n };\n};\nvar enumOrdering = {\n succ: function (v) {\n if (v instanceof Data_Ordering.LT) {\n return new Data_Maybe.Just(Data_Ordering.EQ.value);\n };\n if (v instanceof Data_Ordering.EQ) {\n return new Data_Maybe.Just(Data_Ordering.GT.value);\n };\n if (v instanceof Data_Ordering.GT) {\n return Data_Maybe.Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 72, column 1 - line 78, column 20): \" + [ v.constructor.name ]);\n },\n pred: function (v) {\n if (v instanceof Data_Ordering.LT) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Data_Ordering.EQ) {\n return new Data_Maybe.Just(Data_Ordering.LT.value);\n };\n if (v instanceof Data_Ordering.GT) {\n return new Data_Maybe.Just(Data_Ordering.EQ.value);\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 72, column 1 - line 78, column 20): \" + [ v.constructor.name ]);\n },\n Ord0: function () {\n return Data_Ord.ordOrdering;\n }\n};\nvar enumMaybe = function (dictBoundedEnum) {\n var bottom2 = Data_Bounded.bottom(dictBoundedEnum.Bounded0());\n var Enum1 = dictBoundedEnum.Enum1();\n var succ1 = succ(Enum1);\n var pred1 = pred(Enum1);\n var ordMaybe = Data_Maybe.ordMaybe(Enum1.Ord0());\n return {\n succ: function (v) {\n if (v instanceof Data_Maybe.Nothing) {\n return new Data_Maybe.Just(new Data_Maybe.Just(bottom2));\n };\n if (v instanceof Data_Maybe.Just) {\n return map(Data_Maybe.Just.create)(succ1(v.value0));\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 80, column 1 - line 84, column 32): \" + [ v.constructor.name ]);\n },\n pred: function (v) {\n if (v instanceof Data_Maybe.Nothing) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Data_Maybe.Just) {\n return new Data_Maybe.Just(pred1(v.value0));\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 80, column 1 - line 84, column 32): \" + [ v.constructor.name ]);\n },\n Ord0: function () {\n return ordMaybe;\n }\n };\n};\nvar enumInt = {\n succ: function (n) {\n var $153 = n < top;\n if ($153) {\n return new Data_Maybe.Just(n + 1 | 0);\n };\n return Data_Maybe.Nothing.value;\n },\n pred: function (n) {\n var $154 = n > bottom;\n if ($154) {\n return new Data_Maybe.Just(n - 1 | 0);\n };\n return Data_Maybe.Nothing.value;\n },\n Ord0: function () {\n return Data_Ord.ordInt;\n }\n};\nvar enumFromTo = function (dictEnum) {\n var Ord0 = dictEnum.Ord0();\n var eq1 = Data_Eq.eq(Ord0.Eq0());\n var lessThan1 = Data_Ord.lessThan(Ord0);\n var succ1 = succ(dictEnum);\n var lessThanOrEq1 = Data_Ord.lessThanOrEq(Ord0);\n var pred1 = pred(dictEnum);\n var greaterThanOrEq1 = Data_Ord.greaterThanOrEq(Ord0);\n return function (dictUnfoldable1) {\n var singleton = Data_Unfoldable1.singleton(dictUnfoldable1);\n var unfoldr1 = Data_Unfoldable1.unfoldr1(dictUnfoldable1);\n var go = function (step) {\n return function (op) {\n return function (to) {\n return function (a) {\n return new Data_Tuple.Tuple(a, bind(step(a))(function (a$prime) {\n return voidLeft(guard(op(a$prime)(to)))(a$prime);\n }));\n };\n };\n };\n };\n return function (v) {\n return function (v1) {\n if (eq1(v)(v1)) {\n return singleton(v);\n };\n if (lessThan1(v)(v1)) {\n return unfoldr1(go(succ1)(lessThanOrEq1)(v1))(v);\n };\n if (Data_Boolean.otherwise) {\n return unfoldr1(go(pred1)(greaterThanOrEq1)(v1))(v);\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 186, column 14 - line 190, column 51): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n };\n};\nvar enumFromThenTo = function (dictUnfoldable) {\n var unfoldr = Data_Unfoldable.unfoldr(dictUnfoldable);\n return function (dictFunctor) {\n var map1 = Data_Functor.map(dictFunctor);\n return function (dictBoundedEnum) {\n var fromEnum1 = fromEnum(dictBoundedEnum);\n var toEnum1 = toEnum(dictBoundedEnum);\n var go = function (step) {\n return function (to) {\n return function (e) {\n if (e <= to) {\n return new Data_Maybe.Just(new Data_Tuple.Tuple(e, e + step | 0));\n };\n if (Data_Boolean.otherwise) {\n return Data_Maybe.Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 217, column 5 - line 219, column 28): \" + [ step.constructor.name, to.constructor.name, e.constructor.name ]);\n };\n };\n };\n return function (a) {\n return function (b) {\n return function (c) {\n var c$prime = fromEnum1(c);\n var b$prime = fromEnum1(b);\n var a$prime = fromEnum1(a);\n return map1(function ($187) {\n return fromJust(toEnum1($187));\n })(unfoldr(go(b$prime - a$prime | 0)(c$prime))(a$prime));\n };\n };\n };\n };\n };\n};\nvar enumEither = function (dictBoundedEnum) {\n var Enum1 = dictBoundedEnum.Enum1();\n var succ1 = succ(Enum1);\n var pred1 = pred(Enum1);\n var top2 = Data_Bounded.top(dictBoundedEnum.Bounded0());\n var ordEither = Data_Either.ordEither(Enum1.Ord0());\n return function (dictBoundedEnum1) {\n var bottom2 = Data_Bounded.bottom(dictBoundedEnum1.Bounded0());\n var Enum11 = dictBoundedEnum1.Enum1();\n var succ2 = succ(Enum11);\n var pred2 = pred(Enum11);\n var ordEither1 = ordEither(Enum11.Ord0());\n return {\n succ: function (v) {\n if (v instanceof Data_Either.Left) {\n return Data_Maybe.maybe(new Data_Maybe.Just(new Data_Either.Right(bottom2)))(function ($188) {\n return Data_Maybe.Just.create(Data_Either.Left.create($188));\n })(succ1(v.value0));\n };\n if (v instanceof Data_Either.Right) {\n return Data_Maybe.maybe(Data_Maybe.Nothing.value)(function ($189) {\n return Data_Maybe.Just.create(Data_Either.Right.create($189));\n })(succ2(v.value0));\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 86, column 1 - line 90, column 69): \" + [ v.constructor.name ]);\n },\n pred: function (v) {\n if (v instanceof Data_Either.Left) {\n return Data_Maybe.maybe(Data_Maybe.Nothing.value)(function ($190) {\n return Data_Maybe.Just.create(Data_Either.Left.create($190));\n })(pred1(v.value0));\n };\n if (v instanceof Data_Either.Right) {\n return Data_Maybe.maybe(new Data_Maybe.Just(new Data_Either.Left(top2)))(function ($191) {\n return Data_Maybe.Just.create(Data_Either.Right.create($191));\n })(pred2(v.value0));\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 86, column 1 - line 90, column 69): \" + [ v.constructor.name ]);\n },\n Ord0: function () {\n return ordEither1;\n }\n };\n };\n};\nvar enumBoolean = {\n succ: function (v) {\n if (!v) {\n return new Data_Maybe.Just(true);\n };\n return Data_Maybe.Nothing.value;\n },\n pred: function (v) {\n if (v) {\n return new Data_Maybe.Just(false);\n };\n return Data_Maybe.Nothing.value;\n },\n Ord0: function () {\n return Data_Ord.ordBoolean;\n }\n};\nvar downFromIncluding = function (dictEnum) {\n var pred1 = pred(dictEnum);\n return function (dictUnfoldable1) {\n return Data_Unfoldable1.unfoldr1(dictUnfoldable1)(apply(Data_Tuple.Tuple.create)(pred1));\n };\n};\nvar diag = function (a) {\n return new Data_Tuple.Tuple(a, a);\n};\nvar downFrom = function (dictEnum) {\n var pred1 = pred(dictEnum);\n return function (dictUnfoldable) {\n return Data_Unfoldable.unfoldr(dictUnfoldable)((function () {\n var $192 = map(diag);\n return function ($193) {\n return $192(pred1($193));\n };\n })());\n };\n};\nvar upFrom = function (dictEnum) {\n var succ1 = succ(dictEnum);\n return function (dictUnfoldable) {\n return Data_Unfoldable.unfoldr(dictUnfoldable)((function () {\n var $194 = map(diag);\n return function ($195) {\n return $194(succ1($195));\n };\n })());\n };\n};\nvar defaultToEnum = function (dictBounded) {\n var bottom2 = Data_Bounded.bottom(dictBounded);\n return function (dictEnum) {\n var succ1 = succ(dictEnum);\n return function (i$prime) {\n var go = function ($copy_i) {\n return function ($copy_x) {\n var $tco_var_i = $copy_i;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(i, x) {\n var $168 = i === 0;\n if ($168) {\n $tco_done = true;\n return new Data_Maybe.Just(x);\n };\n var v = succ1(x);\n if (v instanceof Data_Maybe.Just) {\n $tco_var_i = i - 1 | 0;\n $copy_x = v.value0;\n return;\n };\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 296, column 12 - line 298, column 33): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_i, $copy_x);\n };\n return $tco_result;\n };\n };\n var $171 = i$prime < 0;\n if ($171) {\n return Data_Maybe.Nothing.value;\n };\n return go(i$prime)(bottom2);\n };\n };\n};\nvar defaultSucc = function (toEnum$prime) {\n return function (fromEnum$prime) {\n return function (a) {\n return toEnum$prime(fromEnum$prime(a) + 1 | 0);\n };\n };\n};\nvar defaultPred = function (toEnum$prime) {\n return function (fromEnum$prime) {\n return function (a) {\n return toEnum$prime(fromEnum$prime(a) - 1 | 0);\n };\n };\n};\nvar defaultFromEnum = function (dictEnum) {\n var pred1 = pred(dictEnum);\n var go = function ($copy_i) {\n return function ($copy_x) {\n var $tco_var_i = $copy_i;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(i, x) {\n var v = pred1(x);\n if (v instanceof Data_Maybe.Just) {\n $tco_var_i = i + 1 | 0;\n $copy_x = v.value0;\n return;\n };\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return i;\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 309, column 5 - line 311, column 19): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_i, $copy_x);\n };\n return $tco_result;\n };\n };\n return go(0);\n};\nvar defaultCardinality = function (dictBounded) {\n var bottom2 = Data_Bounded.bottom(dictBounded);\n return function (dictEnum) {\n var succ1 = succ(dictEnum);\n var go = function ($copy_i) {\n return function ($copy_x) {\n var $tco_var_i = $copy_i;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(i, x) {\n var v = succ1(x);\n if (v instanceof Data_Maybe.Just) {\n $tco_var_i = i + 1 | 0;\n $copy_x = v.value0;\n return;\n };\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return i;\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 276, column 5 - line 278, column 19): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_i, $copy_x);\n };\n return $tco_result;\n };\n };\n return go(1)(bottom2);\n };\n};\nvar charToEnum = function (v) {\n if (v >= $foreign.toCharCode(bottom1) && v <= $foreign.toCharCode(top1)) {\n return new Data_Maybe.Just($foreign.fromCharCode(v));\n };\n return Data_Maybe.Nothing.value;\n};\nvar enumChar = {\n succ: /* #__PURE__ */ defaultSucc(charToEnum)($foreign.toCharCode),\n pred: /* #__PURE__ */ defaultPred(charToEnum)($foreign.toCharCode),\n Ord0: function () {\n return Data_Ord.ordChar;\n }\n};\nvar cardinality = function (dict) {\n return dict.cardinality;\n};\nvar boundedEnumUnit = {\n cardinality: 1,\n toEnum: function (v) {\n if (v === 0) {\n return new Data_Maybe.Just(Data_Unit.unit);\n };\n return Data_Maybe.Nothing.value;\n },\n fromEnum: /* #__PURE__ */ Data_Function[\"const\"](0),\n Bounded0: function () {\n return Data_Bounded.boundedUnit;\n },\n Enum1: function () {\n return enumUnit;\n }\n};\nvar boundedEnumOrdering = {\n cardinality: 3,\n toEnum: function (v) {\n if (v === 0) {\n return new Data_Maybe.Just(Data_Ordering.LT.value);\n };\n if (v === 1) {\n return new Data_Maybe.Just(Data_Ordering.EQ.value);\n };\n if (v === 2) {\n return new Data_Maybe.Just(Data_Ordering.GT.value);\n };\n return Data_Maybe.Nothing.value;\n },\n fromEnum: function (v) {\n if (v instanceof Data_Ordering.LT) {\n return 0;\n };\n if (v instanceof Data_Ordering.EQ) {\n return 1;\n };\n if (v instanceof Data_Ordering.GT) {\n return 2;\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 137, column 1 - line 145, column 18): \" + [ v.constructor.name ]);\n },\n Bounded0: function () {\n return Data_Bounded.boundedOrdering;\n },\n Enum1: function () {\n return enumOrdering;\n }\n};\nvar boundedEnumChar = /* #__PURE__ */ (function () {\n return {\n cardinality: $foreign.toCharCode(top1) - $foreign.toCharCode(bottom1) | 0,\n toEnum: charToEnum,\n fromEnum: $foreign.toCharCode,\n Bounded0: function () {\n return Data_Bounded.boundedChar;\n },\n Enum1: function () {\n return enumChar;\n }\n };\n})();\nvar boundedEnumBoolean = {\n cardinality: 2,\n toEnum: function (v) {\n if (v === 0) {\n return new Data_Maybe.Just(false);\n };\n if (v === 1) {\n return new Data_Maybe.Just(true);\n };\n return Data_Maybe.Nothing.value;\n },\n fromEnum: function (v) {\n if (!v) {\n return 0;\n };\n if (v) {\n return 1;\n };\n throw new Error(\"Failed pattern match at Data.Enum (line 118, column 1 - line 124, column 20): \" + [ v.constructor.name ]);\n },\n Bounded0: function () {\n return Data_Bounded.boundedBoolean;\n },\n Enum1: function () {\n return enumBoolean;\n }\n};\nexport {\n succ,\n pred,\n cardinality,\n toEnum,\n fromEnum,\n toEnumWithDefaults,\n Cardinality,\n enumFromTo,\n enumFromThenTo,\n upFrom,\n upFromIncluding,\n downFrom,\n downFromIncluding,\n defaultSucc,\n defaultPred,\n defaultCardinality,\n defaultToEnum,\n defaultFromEnum,\n enumBoolean,\n enumInt,\n enumChar,\n enumUnit,\n enumOrdering,\n enumMaybe,\n enumEither,\n enumTuple,\n boundedEnumBoolean,\n boundedEnumChar,\n boundedEnumUnit,\n boundedEnumOrdering,\n newtypeCardinality,\n eqCardinality,\n ordCardinality,\n showCardinality\n};\n", "export function unsafeReadPropImpl(f, s, key, value) {\n return value == null ? f : s(value[key]);\n}\n\nexport function unsafeHasOwnProperty(prop, value) {\n return Object.prototype.hasOwnProperty.call(value, prop);\n}\n\nexport function unsafeHasProperty(prop, value) {\n return prop in value;\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_Except_Trans from \"../Control.Monad.Except.Trans/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Foreign from \"../Foreign/index.js\";\nvar unsafeReadProp = function (dictMonad) {\n var fail = Foreign.fail(dictMonad);\n var pure = Control_Applicative.pure(Control_Monad_Except_Trans.applicativeExceptT(dictMonad));\n return function (k) {\n return function (value) {\n return $foreign.unsafeReadPropImpl(fail(new Foreign.TypeMismatch(\"object\", Foreign.typeOf(value))), pure, k, value);\n };\n };\n};\nvar readProp = function (dictMonad) {\n return unsafeReadProp(dictMonad);\n};\nvar readIndex = function (dictMonad) {\n return unsafeReadProp(dictMonad);\n};\nvar ix = function (dict) {\n return dict.ix;\n};\nvar index = function (dict) {\n return dict.index;\n};\nvar indexableExceptT = function (dictMonad) {\n var bindFlipped = Control_Bind.bindFlipped(Control_Monad_Except_Trans.bindExceptT(dictMonad));\n return {\n ix: function (dictIndex) {\n var index1 = index(dictIndex);\n return function (f) {\n return function (i) {\n return bindFlipped(Data_Function.flip(index1)(i))(f);\n };\n };\n }\n };\n};\nvar indexableForeign = function (dictMonad) {\n return {\n ix: function (dictIndex) {\n return index(dictIndex);\n }\n };\n};\nvar hasPropertyImpl = function (v) {\n return function (v1) {\n if (Foreign.isNull(v1)) {\n return false;\n };\n if (Foreign.isUndefined(v1)) {\n return false;\n };\n if (Foreign.typeOf(v1) === \"object\" || Foreign.typeOf(v1) === \"function\") {\n return $foreign.unsafeHasProperty(v, v1);\n };\n return false;\n };\n};\nvar hasProperty = function (dict) {\n return dict.hasProperty;\n};\nvar hasOwnPropertyImpl = function (v) {\n return function (v1) {\n if (Foreign.isNull(v1)) {\n return false;\n };\n if (Foreign.isUndefined(v1)) {\n return false;\n };\n if (Foreign.typeOf(v1) === \"object\" || Foreign.typeOf(v1) === \"function\") {\n return $foreign.unsafeHasOwnProperty(v, v1);\n };\n return false;\n };\n};\nvar indexInt = function (dictMonad) {\n return {\n index: Data_Function.flip(readIndex(dictMonad)),\n hasProperty: hasPropertyImpl,\n hasOwnProperty: hasOwnPropertyImpl,\n errorAt: Foreign.ErrorAtIndex.create\n };\n};\nvar indexString = function (dictMonad) {\n return {\n index: Data_Function.flip(readProp(dictMonad)),\n hasProperty: hasPropertyImpl,\n hasOwnProperty: hasOwnPropertyImpl,\n errorAt: Foreign.ErrorAtProperty.create\n };\n};\nvar hasOwnProperty = function (dict) {\n return dict.hasOwnProperty;\n};\nvar errorAt = function (dict) {\n return dict.errorAt;\n};\nexport {\n readProp,\n readIndex,\n ix,\n index,\n hasProperty,\n hasOwnProperty,\n errorAt,\n indexString,\n indexInt,\n indexableForeign,\n indexableExceptT\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Record_Unsafe from \"../Record.Unsafe/index.js\";\nimport * as Record_Unsafe_Union from \"../Record.Unsafe.Union/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar union = function () {\n return function (l) {\n return function (r) {\n return Record_Unsafe_Union.unsafeUnionFn(l, r);\n };\n };\n};\nvar set = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function () {\n return function () {\n return function (l) {\n return function (b) {\n return function (r) {\n return Record_Unsafe.unsafeSet(reflectSymbol(l))(b)(r);\n };\n };\n };\n };\n };\n};\nvar nub = function () {\n return Unsafe_Coerce.unsafeCoerce;\n};\nvar merge = function () {\n return function () {\n return function (l) {\n return function (r) {\n return Record_Unsafe_Union.unsafeUnionFn(l, r);\n };\n };\n };\n};\nvar insert = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function () {\n return function () {\n return function (l) {\n return function (a) {\n return function (r) {\n return Record_Unsafe.unsafeSet(reflectSymbol(l))(a)(r);\n };\n };\n };\n };\n };\n};\nvar get = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function () {\n return function (l) {\n return function (r) {\n return Record_Unsafe.unsafeGet(reflectSymbol(l))(r);\n };\n };\n };\n};\nvar modify = function (dictIsSymbol) {\n var set1 = set(dictIsSymbol)()();\n var get1 = get(dictIsSymbol)();\n return function () {\n return function () {\n return function (l) {\n return function (f) {\n return function (r) {\n return set1(l)(f(get1(l)(r)))(r);\n };\n };\n };\n };\n };\n};\nvar equalFieldsNil = {\n equalFields: function (v) {\n return function (v1) {\n return function (v2) {\n return true;\n };\n };\n }\n};\nvar equalFields = function (dict) {\n return dict.equalFields;\n};\nvar equalFieldsCons = function (dictIsSymbol) {\n var get1 = get(dictIsSymbol)();\n return function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n return function () {\n return function (dictEqualFields) {\n var equalFields1 = equalFields(dictEqualFields);\n return {\n equalFields: function (v) {\n return function (a) {\n return function (b) {\n var get$prime = get1(Type_Proxy[\"Proxy\"].value);\n var equalRest = equalFields1(Type_Proxy[\"Proxy\"].value);\n return eq(get$prime(a))(get$prime(b)) && equalRest(a)(b);\n };\n };\n }\n };\n };\n };\n };\n};\nvar equal = function () {\n return function (dictEqualFields) {\n var equalFields1 = equalFields(dictEqualFields);\n return function (a) {\n return function (b) {\n return equalFields1(Type_Proxy[\"Proxy\"].value)(a)(b);\n };\n };\n };\n};\nvar disjointUnion = function () {\n return function () {\n return function (l) {\n return function (r) {\n return Record_Unsafe_Union.unsafeUnionFn(l, r);\n };\n };\n };\n};\nvar $$delete = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function () {\n return function () {\n return function (l) {\n return function (r) {\n return Record_Unsafe.unsafeDelete(reflectSymbol(l))(r);\n };\n };\n };\n };\n};\nvar rename = function (dictIsSymbol) {\n var get1 = get(dictIsSymbol)();\n var delete1 = $$delete(dictIsSymbol)()();\n return function (dictIsSymbol1) {\n var insert1 = insert(dictIsSymbol1)()();\n return function () {\n return function () {\n return function () {\n return function () {\n return function (prev) {\n return function (next) {\n return function (record) {\n return insert1(next)(get1(prev)(record))(delete1(prev)(record));\n };\n };\n };\n };\n };\n };\n };\n };\n};\nexport {\n get,\n set,\n modify,\n insert,\n $$delete as delete,\n rename,\n equal,\n merge,\n union,\n disjointUnion,\n nub,\n equalFields,\n equalFieldsCons,\n equalFieldsNil\n};\n", "export function copyRecord(rec) {\n var copy = {};\n for (var key in rec) {\n if ({}.hasOwnProperty.call(rec, key)) {\n copy[key] = rec[key];\n }\n }\n return copy;\n}\n\nexport function unsafeInsert(l) {\n return function(a) {\n return function(rec) {\n rec[l] = a;\n return rec;\n };\n };\n}\n\nexport function unsafeModify(l) {\n return function (f) {\n return function(rec) {\n rec[l] = f(rec[l]);\n return rec;\n };\n };\n}\n\nexport function unsafeDelete(l) {\n return function(rec) {\n delete rec[l];\n return rec;\n };\n}\n\nexport function unsafeRename(l1) {\n return function (l2) {\n return function (rec) {\n rec[l2] = rec[l1];\n delete rec[l1];\n return rec;\n };\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Semigroupoid from \"../Control.Semigroupoid/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Record_Unsafe_Union from \"../Record.Unsafe.Union/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar Builder = function (x) {\n return x;\n};\nvar union = function () {\n return function (r1) {\n return function (r2) {\n return Record_Unsafe_Union.unsafeUnionFn(r1, r2);\n };\n };\n};\nvar semigroupoidBuilder = Control_Semigroupoid.semigroupoidFn;\nvar rename = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (dictIsSymbol1) {\n var reflectSymbol1 = Data_Symbol.reflectSymbol(dictIsSymbol1);\n return function () {\n return function () {\n return function () {\n return function () {\n return function (l1) {\n return function (l2) {\n return function (r1) {\n return $foreign.unsafeRename(reflectSymbol(l1))(reflectSymbol1(l2))(r1);\n };\n };\n };\n };\n };\n };\n };\n };\n};\nvar nub = function () {\n return Unsafe_Coerce.unsafeCoerce;\n};\nvar modify = function () {\n return function () {\n return function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (l) {\n return function (f) {\n return function (r1) {\n return $foreign.unsafeModify(reflectSymbol(l))(f)(r1);\n };\n };\n };\n };\n };\n};\nvar merge = function () {\n return function () {\n return function (r1) {\n return function (r2) {\n return Record_Unsafe_Union.unsafeUnionFn(r1, r2);\n };\n };\n };\n};\nvar insert = function () {\n return function () {\n return function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (l) {\n return function (a) {\n return function (r1) {\n return $foreign.unsafeInsert(reflectSymbol(l))(a)(r1);\n };\n };\n };\n };\n };\n};\nvar disjointUnion = function () {\n return function () {\n return function (r1) {\n return function (r2) {\n return Record_Unsafe_Union.unsafeUnionFn(r1, r2);\n };\n };\n };\n};\nvar $$delete = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function () {\n return function () {\n return function (l) {\n return function (r2) {\n return $foreign.unsafeDelete(reflectSymbol(l))(r2);\n };\n };\n };\n };\n};\nvar categoryBuilder = Control_Category.categoryFn;\nvar build = function (v) {\n return function (r1) {\n return v($foreign.copyRecord(r1));\n };\n};\nvar buildFromScratch = /* #__PURE__ */ Data_Function.flip(build)({});\nvar flip = function (f) {\n return function (b) {\n return function (a) {\n return build(f(a))(b);\n };\n };\n};\nexport {\n build,\n buildFromScratch,\n flip,\n insert,\n modify,\n $$delete as delete,\n rename,\n merge,\n union,\n disjointUnion,\n nub,\n semigroupoidBuilder,\n categoryBuilder\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Monad_Except from \"../Control.Monad.Except/index.js\";\nimport * as Control_Monad_Except_Trans from \"../Control.Monad.Except.Trans/index.js\";\nimport * as Control_Semigroupoid from \"../Control.Semigroupoid/index.js\";\nimport * as Data_Array_NonEmpty from \"../Data.Array.NonEmpty/index.js\";\nimport * as Data_Bifunctor from \"../Data.Bifunctor/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Identity from \"../Data.Identity/index.js\";\nimport * as Data_List_NonEmpty from \"../Data.List.NonEmpty/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_TraversableWithIndex from \"../Data.TraversableWithIndex/index.js\";\nimport * as Data_Variant from \"../Data.Variant/index.js\";\nimport * as Effect_Exception from \"../Effect.Exception/index.js\";\nimport * as Effect_Uncurried from \"../Effect.Uncurried/index.js\";\nimport * as Effect_Unsafe from \"../Effect.Unsafe/index.js\";\nimport * as Foreign from \"../Foreign/index.js\";\nimport * as Foreign_Index from \"../Foreign.Index/index.js\";\nimport * as Foreign_Object from \"../Foreign.Object/index.js\";\nimport * as Partial_Unsafe from \"../Partial.Unsafe/index.js\";\nimport * as Record from \"../Record/index.js\";\nimport * as Record_Builder from \"../Record.Builder/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorArray);\nvar fail = /* #__PURE__ */ Foreign.fail(Data_Identity.monadIdentity);\nvar applicativeExceptT = /* #__PURE__ */ Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(applicativeExceptT);\nvar map1 = /* #__PURE__ */ Data_Functor.map(/* #__PURE__ */ Control_Monad_Except_Trans.functorExceptT(Data_Identity.functorIdentity));\nvar map2 = /* #__PURE__ */ Data_Functor.map(Data_List_Types.functorNonEmptyList);\nvar bindExceptT = /* #__PURE__ */ Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(bindExceptT);\nvar map3 = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorFn);\nvar traverse = /* #__PURE__ */ Data_Traversable.traverse(Data_Traversable.traversableMaybe)(applicativeExceptT);\nvar readNull = /* #__PURE__ */ Foreign.readNull(Data_Identity.monadIdentity);\nvar composeKleisliFlipped = /* #__PURE__ */ Control_Bind.composeKleisliFlipped(bindExceptT);\nvar sequence = /* #__PURE__ */ Data_Traversable.sequence(Foreign_Object.traversableObject)(applicativeExceptT);\nvar identity = /* #__PURE__ */ Control_Category.identity(Record_Builder.categoryBuilder);\nvar traverseWithIndex = /* #__PURE__ */ Data_TraversableWithIndex.traverseWithIndex(Data_TraversableWithIndex.traversableWithIndexArray)(applicativeExceptT);\nvar readArray1 = /* #__PURE__ */ Foreign.readArray(Data_Identity.monadIdentity);\nvar bind = /* #__PURE__ */ Control_Bind.bind(bindExceptT);\nvar except = /* #__PURE__ */ Control_Monad_Except_Trans.except(Data_Identity.applicativeIdentity);\nvar on = /* #__PURE__ */ Data_Variant.on();\nvar compose1 = /* #__PURE__ */ Control_Semigroupoid.compose(Record_Builder.semigroupoidBuilder);\nvar insert = /* #__PURE__ */ Record_Builder.insert()();\nvar readProp = /* #__PURE__ */ Foreign_Index.readProp(Data_Identity.monadIdentity);\nvar alt = /* #__PURE__ */ Control_Alt.alt(/* #__PURE__ */ Control_Monad_Except_Trans.altExceptT(Data_List_Types.semigroupNonEmptyList)(Data_Identity.monadIdentity));\nvar inj = /* #__PURE__ */ Data_Variant.inj();\nvar writeVariantImpl = function (dict) {\n return dict.writeVariantImpl;\n};\nvar writeImplFields = function (dict) {\n return dict.writeImplFields;\n};\nvar writeImpl = function (dict) {\n return dict.writeImpl;\n};\nvar writeJSON = function (dictWriteForeign) {\n var $191 = writeImpl(dictWriteForeign);\n return function ($192) {\n return $foreign[\"_unsafeStringify\"]($191($192));\n };\n};\nvar writeForeignVariant = function () {\n return function (dictWriteForeignVariant) {\n var writeVariantImpl1 = writeVariantImpl(dictWriteForeignVariant);\n return {\n writeImpl: function (variant) {\n return writeVariantImpl1(Type_Proxy[\"Proxy\"].value)(variant);\n }\n };\n };\n};\nvar writeForeignString = {\n writeImpl: Foreign.unsafeToForeign\n};\nvar writeForeignObject = function (dictWriteForeign) {\n return {\n writeImpl: (function () {\n var $193 = Foreign_Object.mapWithKey(Data_Function[\"const\"](writeImpl(dictWriteForeign)));\n return function ($194) {\n return Foreign.unsafeToForeign($193($194));\n };\n })()\n };\n};\nvar writeForeignNumber = {\n writeImpl: Foreign.unsafeToForeign\n};\nvar writeForeignNullable = function (dictWriteForeign) {\n return {\n writeImpl: (function () {\n var $195 = Data_Maybe.maybe(Foreign.unsafeToForeign(Data_Nullable.toNullable(Data_Maybe.Nothing.value)))(writeImpl(dictWriteForeign));\n return function ($196) {\n return $195(Data_Nullable.toMaybe($196));\n };\n })()\n };\n};\nvar writeForeignInt = {\n writeImpl: Foreign.unsafeToForeign\n};\nvar writeForeignForeign = {\n writeImpl: /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn)\n};\nvar writeForeignChar = {\n writeImpl: Foreign.unsafeToForeign\n};\nvar writeForeignBoolean = {\n writeImpl: Foreign.unsafeToForeign\n};\nvar writeForeignArray = function (dictWriteForeign) {\n var writeImpl1 = writeImpl(dictWriteForeign);\n return {\n writeImpl: function (xs) {\n return Foreign.unsafeToForeign(map(writeImpl1)(xs));\n }\n };\n};\nvar writeForeignNEArray = function (dictWriteForeign) {\n var writeImpl1 = writeImpl(writeForeignArray(dictWriteForeign));\n return {\n writeImpl: function (a) {\n return writeImpl1(Data_Array_NonEmpty.toArray(a));\n }\n };\n};\nvar write = function (dictWriteForeign) {\n return writeImpl(dictWriteForeign);\n};\nvar unsafeStringify = $foreign[\"_unsafeStringify\"];\nvar $$undefined = $foreign[\"_undefined\"];\nvar writeForeignMaybe = function (dictWriteForeign) {\n return {\n writeImpl: Data_Maybe.maybe($$undefined)(writeImpl(dictWriteForeign))\n };\n};\nvar recordWriteForeign = function () {\n return function (dictWriteForeignFields) {\n var writeImplFields1 = writeImplFields(dictWriteForeignFields);\n return {\n writeImpl: function (rec) {\n var steps = writeImplFields1(Type_Proxy[\"Proxy\"].value)(rec);\n return Foreign.unsafeToForeign(Record_Builder.build(steps)({}));\n }\n };\n };\n};\nvar readVariantNil = {\n readVariantImpl: function (v) {\n return function (v1) {\n return fail(new Foreign.ForeignError(\"Unable to match any variant member.\"));\n };\n }\n};\nvar readVariantImpl = function (dict) {\n return dict.readVariantImpl;\n};\nvar readString = {\n readImpl: /* #__PURE__ */ Foreign.readString(Data_Identity.monadIdentity)\n};\nvar readNumber = {\n readImpl: /* #__PURE__ */ Foreign.readNumber(Data_Identity.monadIdentity)\n};\nvar readInt = {\n readImpl: /* #__PURE__ */ Foreign.readInt(Data_Identity.monadIdentity)\n};\nvar readImpl = function (dict) {\n return dict.readImpl;\n};\nvar readMaybe = function (dictReadForeign) {\n return {\n readImpl: (function () {\n var readNullOrUndefined = function (v) {\n return function (v1) {\n if (Foreign.isNull(v1) || Foreign.isUndefined(v1)) {\n return pure(Data_Maybe.Nothing.value);\n };\n return map1(Data_Maybe.Just.create)(v(v1));\n };\n };\n return readNullOrUndefined(readImpl(dictReadForeign));\n })()\n };\n};\nvar readNullable = function (dictReadForeign) {\n var readImpl2 = readImpl(dictReadForeign);\n return {\n readImpl: function (o) {\n var reformat = function (error) {\n if (error instanceof Foreign.TypeMismatch) {\n return new Foreign.TypeMismatch(\"Nullable \" + error.value0, error.value1);\n };\n return error;\n };\n return Control_Monad_Except.withExcept(map2(reformat))(bindFlipped(map3(map1(Data_Nullable.toNullable))(traverse(readImpl2)))(readNull(o)));\n }\n };\n};\nvar readObject = function (dictReadForeign) {\n return {\n readImpl: (function () {\n var readObject$prime = function (value) {\n if (Foreign.tagOf(value) === \"Object\") {\n return pure(Foreign.unsafeFromForeign(value));\n };\n if (Data_Boolean.otherwise) {\n return fail(new Foreign.TypeMismatch(\"Object\", Foreign.tagOf(value)));\n };\n throw new Error(\"Failed pattern match at Simple.JSON (line 197, column 7 - line 197, column 51): \" + [ value.constructor.name ]);\n };\n return composeKleisliFlipped((function () {\n var $197 = Foreign_Object.mapWithKey(Data_Function[\"const\"](readImpl(dictReadForeign)));\n return function ($198) {\n return sequence($197($198));\n };\n })())(readObject$prime);\n })()\n };\n};\nvar readForeignVariant = function () {\n return function (dictReadForeignVariant) {\n var readVariantImpl1 = readVariantImpl(dictReadForeignVariant);\n return {\n readImpl: function (o) {\n return readVariantImpl1(Type_Proxy[\"Proxy\"].value)(o);\n }\n };\n };\n};\nvar readForeign = {\n readImpl: pure\n};\nvar readFieldsNil = {\n getFields: function (v) {\n return function (v1) {\n return pure(identity);\n };\n }\n};\nvar readChar = {\n readImpl: /* #__PURE__ */ Foreign.readChar(Data_Identity.monadIdentity)\n};\nvar readBoolean = {\n readImpl: /* #__PURE__ */ Foreign.readBoolean(Data_Identity.monadIdentity)\n};\nvar readArray = function (dictReadForeign) {\n var readImpl2 = readImpl(dictReadForeign);\n return {\n readImpl: (function () {\n var readAtIdx = function (i) {\n return function (f) {\n return Control_Monad_Except.withExcept(map2(Foreign.ErrorAtIndex.create(i)))(readImpl2(f));\n };\n };\n return composeKleisliFlipped(traverseWithIndex(readAtIdx))(readArray1);\n })()\n };\n};\nvar readForeignNEArray = function (dictReadForeign) {\n var readImpl2 = readImpl(readArray(dictReadForeign));\n return {\n readImpl: function (f) {\n return bind(readImpl2(f))(function (v) {\n return except(Data_Either.note(Data_List_NonEmpty.singleton(new Foreign.ForeignError(\"Nonempty array expected, got empty array\")))(Data_Array_NonEmpty.fromArray(v)));\n });\n }\n };\n};\nvar read$prime = function (dictReadForeign) {\n return readImpl(dictReadForeign);\n};\nvar read = function (dictReadForeign) {\n var $199 = readImpl(dictReadForeign);\n return function ($200) {\n return Control_Monad_Except.runExcept($199($200));\n };\n};\nvar readAsForeign = function (dictReadForeign) {\n var $201 = read(dictReadForeign);\n return function ($202) {\n return $201(Foreign.unsafeToForeign($202));\n };\n};\nvar read_ = function (dictReadForeign) {\n var $203 = read(dictReadForeign);\n return function ($204) {\n return Data_Either.hush($203($204));\n };\n};\nvar parseJSON = /* #__PURE__ */ (function () {\n var $205 = Data_Bifunctor.lmap(Data_Bifunctor.bifunctorEither)((function () {\n var $208 = Control_Applicative.pure(Data_List_Types.applicativeNonEmptyList);\n return function ($209) {\n return $208(Foreign.ForeignError.create(Effect_Exception.message($209)));\n };\n })());\n var $206 = Effect_Uncurried.runEffectFn1($foreign[\"_parseJSON\"]);\n return function ($207) {\n return Control_Monad_Except_Trans.ExceptT(Data_Identity.Identity($205(Effect_Unsafe.unsafePerformEffect(Effect_Exception[\"try\"]($206($207))))));\n };\n})();\nvar readJSON = function (dictReadForeign) {\n var $210 = composeKleisliFlipped(readImpl(dictReadForeign))(parseJSON);\n return function ($211) {\n return Control_Monad_Except.runExcept($210($211));\n };\n};\nvar readJSON_ = function (dictReadForeign) {\n var $212 = readJSON(dictReadForeign);\n return function ($213) {\n return Data_Either.hush($212($213));\n };\n};\nvar readJSON$prime = function (dictReadForeign) {\n return composeKleisliFlipped(readImpl(dictReadForeign))(parseJSON);\n};\nvar nilWriteForeignVariant = {\n writeVariantImpl: function (v) {\n return function (v1) {\n return Partial_Unsafe.unsafeCrashWith(\"Variant was not able to be writen row WriteForeign.\");\n };\n }\n};\nvar nilWriteForeignFields = {\n writeImplFields: function (v) {\n return function (v1) {\n return identity;\n };\n }\n};\nvar getFields = function (dict) {\n return dict.getFields;\n};\nvar readRecord = function () {\n return function (dictReadForeignFields) {\n var getFields1 = getFields(dictReadForeignFields);\n return {\n readImpl: function (o) {\n return map1(Data_Function.flip(Record_Builder.build)({}))(getFields1(Type_Proxy[\"Proxy\"].value)(o));\n }\n };\n };\n};\nvar consWriteForeignVariant = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n var on1 = on(dictIsSymbol);\n return function (dictWriteForeign) {\n var writeImpl1 = writeImpl(dictWriteForeign);\n return function () {\n return function (dictWriteForeignVariant) {\n var writeVariantImpl1 = writeVariantImpl(dictWriteForeignVariant);\n return {\n writeVariantImpl: function (v) {\n return function (variant) {\n var writeVariant = function (value) {\n return Foreign.unsafeToForeign({\n type: reflectSymbol(Type_Proxy[\"Proxy\"].value),\n value: writeImpl1(value)\n });\n };\n return on1(Type_Proxy[\"Proxy\"].value)(writeVariant)(writeVariantImpl1(Type_Proxy[\"Proxy\"].value))(variant);\n };\n }\n };\n };\n };\n };\n};\nvar consWriteForeignFields = function (dictIsSymbol) {\n var get = Record.get(dictIsSymbol)();\n var insert1 = insert(dictIsSymbol);\n return function (dictWriteForeign) {\n var writeImpl1 = writeImpl(dictWriteForeign);\n return function (dictWriteForeignFields) {\n var writeImplFields1 = writeImplFields(dictWriteForeignFields);\n return function () {\n return function () {\n return function () {\n return {\n writeImplFields: function (v) {\n return function (rec) {\n var rest = writeImplFields1(Type_Proxy[\"Proxy\"].value)(rec);\n var value = writeImpl1(get(Type_Proxy[\"Proxy\"].value)(rec));\n var result = compose1(insert1(Type_Proxy[\"Proxy\"].value)(value))(rest);\n return result;\n };\n }\n };\n };\n };\n };\n };\n };\n};\nvar applyEither = function (dictSemigroup) {\n var append1 = Data_Semigroup.append(dictSemigroup);\n return function (v) {\n return function (v1) {\n if (v instanceof Data_Either.Left && v1 instanceof Data_Either.Right) {\n return new Data_Either.Left(v.value0);\n };\n if (v instanceof Data_Either.Left && v1 instanceof Data_Either.Left) {\n return new Data_Either.Left(append1(v.value0)(v1.value0));\n };\n if (v instanceof Data_Either.Right && v1 instanceof Data_Either.Left) {\n return new Data_Either.Left(v1.value0);\n };\n if (v instanceof Data_Either.Right && v1 instanceof Data_Either.Right) {\n return new Data_Either.Right(v.value0(v1.value0));\n };\n throw new Error(\"Failed pattern match at Simple.JSON (line 241, column 1 - line 241, column 90): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n};\nvar exceptTApply = function (dictSemigroup) {\n var applyEither1 = applyEither(dictSemigroup);\n return function (dictApplicative) {\n var Apply0 = dictApplicative.Apply0();\n var apply = Control_Apply.apply(Apply0);\n var map4 = Data_Functor.map(Apply0.Functor0());\n return function (fun) {\n return function (a) {\n return apply(map4(applyEither1)(Control_Monad_Except_Trans.runExceptT(fun)))(Control_Monad_Except_Trans.runExceptT(a));\n };\n };\n };\n};\nvar exceptTApply1 = /* #__PURE__ */ exceptTApply(Data_List_Types.semigroupNonEmptyList)(Data_Identity.applicativeIdentity);\nvar readFieldsCons = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n var insert1 = insert(dictIsSymbol);\n return function (dictReadForeign) {\n var readImpl2 = readImpl(dictReadForeign);\n return function (dictReadForeignFields) {\n var getFields1 = getFields(dictReadForeignFields);\n return function () {\n return function () {\n return {\n getFields: function (v) {\n return function (obj) {\n var rest = getFields1(Type_Proxy[\"Proxy\"].value)(obj);\n var name = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n var withExcept$prime = Control_Monad_Except.withExcept(map2(Foreign.ErrorAtProperty.create(name)));\n var first = bind(withExcept$prime(bindFlipped(readImpl2)(readProp(name)(obj))))(function (value) {\n return pure(insert1(Type_Proxy[\"Proxy\"].value)(value));\n });\n return exceptTApply1(map1(compose1)(first))(rest);\n };\n }\n };\n };\n };\n };\n };\n};\nvar readImpl1 = /* #__PURE__ */ readImpl(/* #__PURE__ */ readRecord()(/* #__PURE__ */ readFieldsCons({\n reflectSymbol: function () {\n return \"type\";\n }\n})(readString)(/* #__PURE__ */ readFieldsCons({\n reflectSymbol: function () {\n return \"value\";\n }\n})(readForeign)(readFieldsNil)()())()()));\nvar readVariantCons = function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n var inj1 = inj(dictIsSymbol);\n return function (dictReadForeign) {\n var readImpl2 = readImpl(dictReadForeign);\n return function () {\n return function (dictReadForeignVariant) {\n var readVariantImpl1 = readVariantImpl(dictReadForeignVariant);\n return {\n readVariantImpl: function (v) {\n return function (o) {\n var name = reflectSymbol(Type_Proxy[\"Proxy\"].value);\n return alt(bind(readImpl1(o))(function (v1) {\n var $189 = v1.type === name;\n if ($189) {\n return bind(readImpl2(v1.value))(function (v2) {\n return pure(inj1(Type_Proxy[\"Proxy\"].value)(v2));\n });\n };\n return fail(Foreign.ForeignError.create(\"Did not match variant tag \" + name));\n }))(readVariantImpl1(Type_Proxy[\"Proxy\"].value)(o));\n };\n }\n };\n };\n };\n };\n};\nexport {\n readJSON,\n readJSON$prime,\n readJSON_,\n writeJSON,\n write,\n read,\n read$prime,\n read_,\n readAsForeign,\n parseJSON,\n $$undefined as undefined,\n unsafeStringify,\n readImpl,\n getFields,\n readVariantImpl,\n writeImpl,\n writeImplFields,\n writeVariantImpl,\n readForeign,\n readChar,\n readNumber,\n readInt,\n readString,\n readBoolean,\n readArray,\n readMaybe,\n readNullable,\n readObject,\n readRecord,\n readFieldsCons,\n readFieldsNil,\n readForeignVariant,\n readVariantNil,\n readVariantCons,\n writeForeignForeign,\n writeForeignString,\n writeForeignInt,\n writeForeignChar,\n writeForeignNumber,\n writeForeignBoolean,\n writeForeignArray,\n writeForeignMaybe,\n writeForeignNullable,\n writeForeignObject,\n recordWriteForeign,\n consWriteForeignFields,\n nilWriteForeignFields,\n writeForeignVariant,\n nilWriteForeignVariant,\n consWriteForeignVariant,\n readForeignNEArray,\n writeForeignNEArray\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Monad_Except from \"../Control.Monad.Except/index.js\";\nimport * as Control_Monad_Except_Trans from \"../Control.Monad.Except.Trans/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Identity from \"../Data.Identity/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Foreign from \"../Foreign/index.js\";\nimport * as Simple_JSON from \"../Simple.JSON/index.js\";\nvar recordWriteForeign = /* #__PURE__ */ Simple_JSON.recordWriteForeign();\nvar expandedIsSymbol = {\n reflectSymbol: function () {\n return \"expanded\";\n }\n};\nvar modeIsSymbol = {\n reflectSymbol: function () {\n return \"mode\";\n }\n};\nvar valueIsSymbol = {\n reflectSymbol: function () {\n return \"value\";\n }\n};\nvar createdIsSymbol = {\n reflectSymbol: function () {\n return \"created\";\n }\n};\nvar idIsSymbol = {\n reflectSymbol: function () {\n return \"id\";\n }\n};\nvar isMarkdownIsSymbol = {\n reflectSymbol: function () {\n return \"isMarkdown\";\n }\n};\nvar lengthIsSymbol = {\n reflectSymbol: function () {\n return \"length\";\n }\n};\nvar sharedIsSymbol = {\n reflectSymbol: function () {\n return \"shared\";\n }\n};\nvar slugIsSymbol = {\n reflectSymbol: function () {\n return \"slug\";\n }\n};\nvar consWriteForeignFields = /* #__PURE__ */ Simple_JSON.consWriteForeignFields(slugIsSymbol)(Simple_JSON.writeForeignString);\nvar textIsSymbol = {\n reflectSymbol: function () {\n return \"text\";\n }\n};\nvar titleIsSymbol = {\n reflectSymbol: function () {\n return \"title\";\n }\n};\nvar consWriteForeignFields1 = /* #__PURE__ */ Simple_JSON.consWriteForeignFields(titleIsSymbol)(Simple_JSON.writeForeignString);\nvar updatedIsSymbol = {\n reflectSymbol: function () {\n return \"updated\";\n }\n};\nvar archiveUrlIsSymbol = {\n reflectSymbol: function () {\n return \"archiveUrl\";\n }\n};\nvar bidIsSymbol = {\n reflectSymbol: function () {\n return \"bid\";\n }\n};\nvar descriptionIsSymbol = {\n reflectSymbol: function () {\n return \"description\";\n }\n};\nvar privateIsSymbol = {\n reflectSymbol: function () {\n return \"private\";\n }\n};\nvar selectedIsSymbol = {\n reflectSymbol: function () {\n return \"selected\";\n }\n};\nvar tagsIsSymbol = {\n reflectSymbol: function () {\n return \"tags\";\n }\n};\nvar timeIsSymbol = {\n reflectSymbol: function () {\n return \"time\";\n }\n};\nvar toreadIsSymbol = {\n reflectSymbol: function () {\n return \"toread\";\n }\n};\nvar urlIsSymbol = {\n reflectSymbol: function () {\n return \"url\";\n }\n};\nvar archiveDefaultIsSymbol = {\n reflectSymbol: function () {\n return \"archiveDefault\";\n }\n};\nvar privacyLockIsSymbol = {\n reflectSymbol: function () {\n return \"privacyLock\";\n }\n};\nvar privateDefaultIsSymbol = {\n reflectSymbol: function () {\n return \"privateDefault\";\n }\n};\nvar readRecord = /* #__PURE__ */ Simple_JSON.readRecord();\nvar readFieldsCons = /* #__PURE__ */ Simple_JSON.readFieldsCons(slugIsSymbol)(Simple_JSON.readString);\nvar readFieldsCons1 = /* #__PURE__ */ Simple_JSON.readFieldsCons(titleIsSymbol)(Simple_JSON.readString);\nvar eq2 = /* #__PURE__ */ Data_Eq.eq(/* #__PURE__ */ Data_Eq.eqArray(Data_Eq.eqString));\nvar map = /* #__PURE__ */ Data_Functor.map(/* #__PURE__ */ Control_Monad_Except_Trans.functorExceptT(Data_Identity.functorIdentity));\nvar readInt = /* #__PURE__ */ Foreign.readInt(Data_Identity.monadIdentity);\nvar readString = /* #__PURE__ */ Foreign.readString(Data_Identity.monadIdentity);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(/* #__PURE__ */ Control_Monad_Except_Trans.applicativeExceptT(Data_Identity.monadIdentity));\nvar intercalate = /* #__PURE__ */ Data_Array.intercalate(Data_Monoid.monoidString);\nvar TagCloudModeTop = /* #__PURE__ */ (function () {\n function TagCloudModeTop(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n TagCloudModeTop.create = function (value0) {\n return function (value1) {\n return new TagCloudModeTop(value0, value1);\n };\n };\n return TagCloudModeTop;\n})();\nvar TagCloudModeLowerBound = /* #__PURE__ */ (function () {\n function TagCloudModeLowerBound(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n TagCloudModeLowerBound.create = function (value0) {\n return function (value1) {\n return new TagCloudModeLowerBound(value0, value1);\n };\n };\n return TagCloudModeLowerBound;\n})();\nvar TagCloudModeRelated = /* #__PURE__ */ (function () {\n function TagCloudModeRelated(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n TagCloudModeRelated.create = function (value0) {\n return function (value1) {\n return new TagCloudModeRelated(value0, value1);\n };\n };\n return TagCloudModeRelated;\n})();\nvar TagCloudModeNone = /* #__PURE__ */ (function () {\n function TagCloudModeNone() {\n\n };\n TagCloudModeNone.value = new TagCloudModeNone();\n return TagCloudModeNone;\n})();\nvar TagCloudMode$prime = function (x) {\n return x;\n};\nvar Note$prime = function (x) {\n return x;\n};\nvar Bookmark$prime = function (x) {\n return x;\n};\nvar AccountSettings$prime = function (x) {\n return x;\n};\nvar writeForeignTagCloudMode$prime = /* #__PURE__ */ recordWriteForeign(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(expandedIsSymbol)(Simple_JSON.writeForeignBoolean)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(modeIsSymbol)(Simple_JSON.writeForeignString)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(valueIsSymbol)(Simple_JSON.writeForeignForeign)(Simple_JSON.nilWriteForeignFields)()()())()()())()()());\nvar writeForeignNote$prime = /* #__PURE__ */ recordWriteForeign(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(createdIsSymbol)(Simple_JSON.writeForeignString)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(idIsSymbol)(Simple_JSON.writeForeignInt)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(isMarkdownIsSymbol)(Simple_JSON.writeForeignBoolean)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(lengthIsSymbol)(Simple_JSON.writeForeignInt)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(sharedIsSymbol)(Simple_JSON.writeForeignBoolean)(/* #__PURE__ */ consWriteForeignFields(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(textIsSymbol)(Simple_JSON.writeForeignString)(/* #__PURE__ */ consWriteForeignFields1(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(updatedIsSymbol)(Simple_JSON.writeForeignString)(Simple_JSON.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()());\nvar writeForeignBookmark$prime = /* #__PURE__ */ recordWriteForeign(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(archiveUrlIsSymbol)(/* #__PURE__ */ Simple_JSON.writeForeignNullable(Simple_JSON.writeForeignString))(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(bidIsSymbol)(Simple_JSON.writeForeignInt)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(descriptionIsSymbol)(Simple_JSON.writeForeignString)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(privateIsSymbol)(Simple_JSON.writeForeignBoolean)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(selectedIsSymbol)(Simple_JSON.writeForeignBoolean)(/* #__PURE__ */ consWriteForeignFields(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(tagsIsSymbol)(Simple_JSON.writeForeignString)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(timeIsSymbol)(Simple_JSON.writeForeignString)(/* #__PURE__ */ consWriteForeignFields1(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(toreadIsSymbol)(Simple_JSON.writeForeignBoolean)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(urlIsSymbol)(Simple_JSON.writeForeignString)(Simple_JSON.nilWriteForeignFields)()()())()()())()()())()()())()()())()()())()()())()()())()()())()()())()()());\nvar writeForeignAccountSettin = /* #__PURE__ */ recordWriteForeign(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(archiveDefaultIsSymbol)(Simple_JSON.writeForeignBoolean)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(privacyLockIsSymbol)(Simple_JSON.writeForeignBoolean)(/* #__PURE__ */ Simple_JSON.consWriteForeignFields(privateDefaultIsSymbol)(Simple_JSON.writeForeignBoolean)(Simple_JSON.nilWriteForeignFields)()()())()()())()()());\nvar readForeignTagCloudMode$prime = /* #__PURE__ */ readRecord(/* #__PURE__ */ Simple_JSON.readFieldsCons(expandedIsSymbol)(Simple_JSON.readBoolean)(/* #__PURE__ */ Simple_JSON.readFieldsCons(modeIsSymbol)(Simple_JSON.readString)(/* #__PURE__ */ Simple_JSON.readFieldsCons(valueIsSymbol)(Simple_JSON.readForeign)(Simple_JSON.readFieldsNil)()())()())()());\nvar readForeignNote$prime = /* #__PURE__ */ readRecord(/* #__PURE__ */ Simple_JSON.readFieldsCons(createdIsSymbol)(Simple_JSON.readString)(/* #__PURE__ */ Simple_JSON.readFieldsCons(idIsSymbol)(Simple_JSON.readInt)(/* #__PURE__ */ Simple_JSON.readFieldsCons(isMarkdownIsSymbol)(Simple_JSON.readBoolean)(/* #__PURE__ */ Simple_JSON.readFieldsCons(lengthIsSymbol)(Simple_JSON.readInt)(/* #__PURE__ */ Simple_JSON.readFieldsCons(sharedIsSymbol)(Simple_JSON.readBoolean)(/* #__PURE__ */ readFieldsCons(/* #__PURE__ */ Simple_JSON.readFieldsCons(textIsSymbol)(Simple_JSON.readString)(/* #__PURE__ */ readFieldsCons1(/* #__PURE__ */ Simple_JSON.readFieldsCons(updatedIsSymbol)(Simple_JSON.readString)(Simple_JSON.readFieldsNil)()())()())()())()())()())()())()())()())()());\nvar readForeignBookmark$prime = /* #__PURE__ */ readRecord(/* #__PURE__ */ Simple_JSON.readFieldsCons(archiveUrlIsSymbol)(/* #__PURE__ */ Simple_JSON.readNullable(Simple_JSON.readString))(/* #__PURE__ */ Simple_JSON.readFieldsCons(bidIsSymbol)(Simple_JSON.readInt)(/* #__PURE__ */ Simple_JSON.readFieldsCons(descriptionIsSymbol)(Simple_JSON.readString)(/* #__PURE__ */ Simple_JSON.readFieldsCons(privateIsSymbol)(Simple_JSON.readBoolean)(/* #__PURE__ */ Simple_JSON.readFieldsCons(selectedIsSymbol)(Simple_JSON.readBoolean)(/* #__PURE__ */ readFieldsCons(/* #__PURE__ */ Simple_JSON.readFieldsCons(tagsIsSymbol)(Simple_JSON.readString)(/* #__PURE__ */ Simple_JSON.readFieldsCons(timeIsSymbol)(Simple_JSON.readString)(/* #__PURE__ */ readFieldsCons1(/* #__PURE__ */ Simple_JSON.readFieldsCons(toreadIsSymbol)(Simple_JSON.readBoolean)(/* #__PURE__ */ Simple_JSON.readFieldsCons(urlIsSymbol)(Simple_JSON.readString)(Simple_JSON.readFieldsNil)()())()())()())()())()())()())()())()())()())()())()());\nvar readForeignAccountSetting = /* #__PURE__ */ readRecord(/* #__PURE__ */ Simple_JSON.readFieldsCons(archiveDefaultIsSymbol)(Simple_JSON.readBoolean)(/* #__PURE__ */ Simple_JSON.readFieldsCons(privacyLockIsSymbol)(Simple_JSON.readBoolean)(/* #__PURE__ */ Simple_JSON.readFieldsCons(privateDefaultIsSymbol)(Simple_JSON.readBoolean)(Simple_JSON.readFieldsNil)()())()())()());\nvar eqTagCloudModeF = {\n eq: function (x) {\n return function (y) {\n if (x instanceof TagCloudModeTop && y instanceof TagCloudModeTop) {\n return x.value0 === y.value0 && x.value1 === y.value1;\n };\n if (x instanceof TagCloudModeLowerBound && y instanceof TagCloudModeLowerBound) {\n return x.value0 === y.value0 && x.value1 === y.value1;\n };\n if (x instanceof TagCloudModeRelated && y instanceof TagCloudModeRelated) {\n return x.value0 === y.value0 && eq2(x.value1)(y.value1);\n };\n if (x instanceof TagCloudModeNone && y instanceof TagCloudModeNone) {\n return true;\n };\n return false;\n };\n }\n};\nvar tagCloudModeToF = function (tagCloudMode) {\n return Data_Maybe.fromMaybe(TagCloudModeNone.value)(Data_Either.hush(Control_Monad_Except.runExcept((function () {\n if (tagCloudMode.mode === \"top\") {\n return map(TagCloudModeTop.create(tagCloudMode.expanded))(readInt(tagCloudMode.value));\n };\n if (tagCloudMode.mode === \"lowerBound\") {\n return map(TagCloudModeLowerBound.create(tagCloudMode.expanded))(readInt(tagCloudMode.value));\n };\n if (tagCloudMode.mode === \"related\") {\n return map(function (s) {\n return new TagCloudModeRelated(tagCloudMode.expanded, Data_String_Common.split(\" \")(s));\n })(readString(tagCloudMode.value));\n };\n return pure(TagCloudModeNone.value);\n })())));\n};\nvar tagCloudModeFromF = function (v) {\n if (v instanceof TagCloudModeTop) {\n return {\n mode: \"top\",\n value: Foreign.unsafeToForeign(v.value1),\n expanded: v.value0\n };\n };\n if (v instanceof TagCloudModeLowerBound) {\n return {\n mode: \"lowerBound\",\n value: Foreign.unsafeToForeign(v.value1),\n expanded: v.value0\n };\n };\n if (v instanceof TagCloudModeRelated) {\n return {\n mode: \"related\",\n value: Foreign.unsafeToForeign(intercalate(\" \")(v.value1)),\n expanded: v.value0\n };\n };\n if (v instanceof TagCloudModeNone) {\n return {\n mode: \"none\",\n value: Foreign.unsafeToForeign(\"\"),\n expanded: false\n };\n };\n throw new Error(\"Failed pattern match at Model (line 92, column 1 - line 92, column 51): \" + [ v.constructor.name ]);\n};\nvar showMode = function (v) {\n if (v instanceof TagCloudModeTop) {\n return \"top\";\n };\n if (v instanceof TagCloudModeLowerBound) {\n return \"lowerBound\";\n };\n if (v instanceof TagCloudModeRelated) {\n return \"related\";\n };\n if (v instanceof TagCloudModeNone) {\n return \"\";\n };\n throw new Error(\"Failed pattern match at Model (line 118, column 1 - line 118, column 36): \" + [ v.constructor.name ]);\n};\nvar setExpanded = function (v) {\n return function (v1) {\n if (v instanceof TagCloudModeTop) {\n return new TagCloudModeTop(v1, v.value1);\n };\n if (v instanceof TagCloudModeLowerBound) {\n return new TagCloudModeLowerBound(v1, v.value1);\n };\n if (v instanceof TagCloudModeRelated) {\n return new TagCloudModeRelated(v1, v.value1);\n };\n if (v instanceof TagCloudModeNone) {\n return TagCloudModeNone.value;\n };\n throw new Error(\"Failed pattern match at Model (line 112, column 1 - line 112, column 57): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n};\nvar isRelated = function (v) {\n if (v instanceof TagCloudModeRelated) {\n return true;\n };\n return false;\n};\nvar isExpanded = function (v) {\n if (v instanceof TagCloudModeTop) {\n return v.value0;\n };\n if (v instanceof TagCloudModeLowerBound) {\n return v.value0;\n };\n if (v instanceof TagCloudModeRelated) {\n return v.value0;\n };\n if (v instanceof TagCloudModeNone) {\n return false;\n };\n throw new Error(\"Failed pattern match at Model (line 102, column 1 - line 102, column 39): \" + [ v.constructor.name ]);\n};\nexport {\n Bookmark$prime,\n Note$prime,\n AccountSettings$prime,\n TagCloudMode$prime,\n TagCloudModeTop,\n TagCloudModeLowerBound,\n TagCloudModeRelated,\n TagCloudModeNone,\n tagCloudModeToF,\n tagCloudModeFromF,\n isExpanded,\n isRelated,\n setExpanded,\n showMode,\n readForeignBookmark$prime,\n writeForeignBookmark$prime,\n readForeignNote$prime,\n writeForeignNote$prime,\n readForeignAccountSetting,\n writeForeignAccountSettin,\n readForeignTagCloudMode$prime,\n writeForeignTagCloudMode$prime,\n eqTagCloudModeF\n};\n", "const windowImpl = function () {\n return window;\n};\nexport { windowImpl as window };\n", "// Generated by purs version 0.15.14\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nvar PropName = function (x) {\n return x;\n};\nvar ClassName = function (x) {\n return x;\n};\nvar AttrName = function (x) {\n return x;\n};\nvar ordPropName = Data_Ord.ordString;\nvar ordClassName = Data_Ord.ordString;\nvar ordAttrName = Data_Ord.ordString;\nvar newtypePropName = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeClassName = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeAttrName = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar eqPropName = Data_Eq.eqString;\nvar eqClassName = Data_Eq.eqString;\nvar eqAttrName = Data_Eq.eqString;\nexport {\n PropName,\n AttrName,\n ClassName,\n newtypePropName,\n eqPropName,\n ordPropName,\n newtypeAttrName,\n eqAttrName,\n ordAttrName,\n newtypeClassName,\n eqClassName,\n ordClassName\n};\n", "export function _documentElement(doc) {\n return doc.documentElement;\n}\n\nexport function _head(doc) {\n return doc.head;\n}\n\nexport function _body(doc) {\n return doc.body;\n}\n\nexport function _readyState(doc) {\n return doc.readyState;\n}\n\nexport function _visibilityState(doc) {\n return doc.readyState;\n}\n\nexport function _activeElement(doc) {\n return doc.activeElement;\n}\n\nexport function _currentScript(doc) {\n return doc.currentScript;\n}\n\nexport function _referrer(doc) {\n return doc.referrer;\n}\n\nexport function _title(doc) {\n return doc.title;\n}\n\nexport function _setTitle(title, doc) {\n doc.title = title;\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nimport * as Web_HTML_HTMLDocument_ReadyState from \"../Web.HTML.HTMLDocument.ReadyState/index.js\";\nimport * as Web_HTML_HTMLDocument_VisibilityState from \"../Web.HTML.HTMLDocument.VisibilityState/index.js\";\nimport * as Web_Internal_FFI from \"../Web.Internal.FFI/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar visibilityState = function (doc) {\n return map((function () {\n var $2 = Data_Maybe.fromMaybe(Web_HTML_HTMLDocument_VisibilityState.Visible.value);\n return function ($3) {\n return $2(Web_HTML_HTMLDocument_VisibilityState.parse($3));\n };\n })())(function () {\n return $foreign[\"_visibilityState\"](doc);\n });\n};\nvar toParentNode = Unsafe_Coerce.unsafeCoerce;\nvar toNonElementParentNode = Unsafe_Coerce.unsafeCoerce;\nvar toNode = Unsafe_Coerce.unsafeCoerce;\nvar toEventTarget = Unsafe_Coerce.unsafeCoerce;\nvar toDocument = Unsafe_Coerce.unsafeCoerce;\nvar title = function (doc) {\n return function () {\n return $foreign[\"_title\"](doc);\n };\n};\nvar setTitle = function (newTitle) {\n return function (doc) {\n return function () {\n return $foreign[\"_setTitle\"](newTitle, doc);\n };\n };\n};\nvar referrer = function (doc) {\n return function () {\n return $foreign[\"_referrer\"](doc);\n };\n};\nvar readyState = function (doc) {\n return map((function () {\n var $4 = Data_Maybe.fromMaybe(Web_HTML_HTMLDocument_ReadyState.Loading.value);\n return function ($5) {\n return $4(Web_HTML_HTMLDocument_ReadyState.parse($5));\n };\n })())(function () {\n return $foreign[\"_readyState\"](doc);\n });\n};\nvar head = function (doc) {\n return map(Data_Nullable.toMaybe)(function () {\n return $foreign[\"_head\"](doc);\n });\n};\nvar fromParentNode = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"HTMLDocument\");\nvar fromNonElementParentNode = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"HTMLDocument\");\nvar fromNode = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"HTMLDocument\");\nvar fromEventTarget = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"HTMLDocument\");\nvar fromDocument = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"HTMLDocument\");\nvar documentElement = function (doc) {\n return map(Data_Nullable.toMaybe)(function () {\n return $foreign[\"_documentElement\"](doc);\n });\n};\nvar currentScript = function (doc) {\n return map(Data_Nullable.toMaybe)(function () {\n return $foreign[\"_currentScript\"](doc);\n });\n};\nvar body = function (doc) {\n return map(Data_Nullable.toMaybe)(function () {\n return $foreign[\"_body\"](doc);\n });\n};\nvar activeElement = function (doc) {\n return map(Data_Nullable.toMaybe)(function () {\n return $foreign[\"_activeElement\"](doc);\n });\n};\nexport {\n fromDocument,\n fromNode,\n fromParentNode,\n fromNonElementParentNode,\n fromEventTarget,\n toDocument,\n toNode,\n toParentNode,\n toNonElementParentNode,\n toEventTarget,\n documentElement,\n head,\n body,\n readyState,\n visibilityState,\n activeElement,\n currentScript,\n referrer,\n title,\n setTitle\n};\n", "export function _read(nothing, just, value) {\n var tag = Object.prototype.toString.call(value);\n if (tag.indexOf(\"[object HTML\") === 0 && tag.indexOf(\"Element]\") === tag.length - 8) {\n return just(value);\n } else {\n return nothing;\n }\n}\n\n// ----------------------------------------------------------------------------\n\nexport function title(elt) {\n return function () {\n return elt.title;\n };\n}\n\nexport function setTitle(title) {\n return function (elt) {\n return function () {\n elt.title = title;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function lang(elt) {\n return function () {\n return elt.lang;\n };\n}\n\nexport function setLang(lang) {\n return function (elt) {\n return function () {\n elt.lang = lang;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function dir(elt) {\n return function () {\n return elt.dir;\n };\n}\n\nexport function setDir(dir) {\n return function (elt) {\n return function () {\n elt.dir = dir;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function hidden(elt) {\n return function () {\n return elt.hidden;\n };\n}\n\nexport function setHidden(hidden) {\n return function (elt) {\n return function () {\n elt.hidden = hidden;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function tabIndex(elt) {\n return function () {\n return elt.tabIndex;\n };\n}\n\nexport function setTabIndex(tabIndex) {\n return function (elt) {\n return function () {\n elt.tabIndex = tabIndex;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function draggable(elt) {\n return function () {\n return elt.draggable;\n };\n}\n\nexport function setDraggable(draggable) {\n return function (elt) {\n return function () {\n elt.draggable = draggable;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function contentEditable(elt) {\n return function () {\n return elt.contentEditable;\n };\n}\n\nexport function setContentEditable(contentEditable) {\n return function (elt) {\n return function () {\n elt.contentEditable = contentEditable;\n };\n };\n}\n\nexport function isContentEditable(elt) {\n return function () {\n return elt.isContentEditable;\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function spellcheck(elt) {\n return function () {\n return elt.spellcheck;\n };\n}\n\nexport function setSpellcheck(spellcheck) {\n return function (elt) {\n return function () {\n elt.spellcheck = spellcheck;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function click(elt) {\n return function () {\n return elt.click();\n };\n}\n\nexport function focus(elt) {\n return function () {\n return elt.focus();\n };\n}\n\nexport function blur(elt) {\n return function () {\n return elt.blur();\n };\n}\n\n// - CSSOM ---------------------------------------------------------------------\n\nexport function _offsetParent(el) {\n return function () {\n return el.offsetParent;\n };\n}\n\nexport function offsetTop(el) {\n return function () {\n return el.offsetTop;\n };\n}\n\nexport function offsetLeft(el) {\n return function () {\n return el.offsetLeft;\n };\n}\n\nexport function offsetWidth(el) {\n return function () {\n return el.offsetWidth;\n };\n}\n\nexport function offsetHeight(el) {\n return function () {\n return el.offsetHeight;\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar toParentNode = Unsafe_Coerce.unsafeCoerce;\nvar toNonDocumentTypeChildNode = Unsafe_Coerce.unsafeCoerce;\nvar toNode = Unsafe_Coerce.unsafeCoerce;\nvar toEventTarget = Unsafe_Coerce.unsafeCoerce;\nvar toElement = Unsafe_Coerce.unsafeCoerce;\nvar toChildNode = Unsafe_Coerce.unsafeCoerce;\nvar offsetParent = /* #__PURE__ */ (function () {\n var $2 = Data_Functor.map(Effect.functorEffect)(Data_Nullable.toMaybe);\n return function ($3) {\n return $2($foreign[\"_offsetParent\"]($3));\n };\n})();\nvar fromParentNode = function (x) {\n return $foreign[\"_read\"](Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);\n};\nvar fromNonDocumentTypeChildNode = function (x) {\n return $foreign[\"_read\"](Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);\n};\nvar fromNode = function (x) {\n return $foreign[\"_read\"](Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);\n};\nvar fromEventTarget = function (x) {\n return $foreign[\"_read\"](Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);\n};\nvar fromElement = function (x) {\n return $foreign[\"_read\"](Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);\n};\nvar fromChildNode = function (x) {\n return $foreign[\"_read\"](Data_Maybe.Nothing.value, Data_Maybe.Just.create, x);\n};\nexport {\n title,\n setTitle,\n lang,\n setLang,\n dir,\n setDir,\n hidden,\n setHidden,\n tabIndex,\n setTabIndex,\n draggable,\n setDraggable,\n contentEditable,\n setContentEditable,\n isContentEditable,\n spellcheck,\n setSpellcheck,\n click,\n focus,\n blur,\n offsetTop,\n offsetLeft,\n offsetWidth,\n offsetHeight\n} from \"./foreign.js\";\nexport {\n fromElement,\n fromNode,\n fromChildNode,\n fromNonDocumentTypeChildNode,\n fromParentNode,\n fromEventTarget,\n toElement,\n toNode,\n toChildNode,\n toNonDocumentTypeChildNode,\n toParentNode,\n toEventTarget,\n offsetParent\n};\n", "export function hash(location) {\n return function () {\n return location.hash;\n };\n}\n\nexport function setHash(hash) {\n return function (location) {\n return function () {\n location.hash = hash;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function host(location) {\n return function () {\n return location.host;\n };\n}\n\nexport function setHost(host) {\n return function (location) {\n return function () {\n location.host = host;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function hostname(location) {\n return function () {\n return location.hostname;\n };\n}\n\nexport function setHostname(hostname) {\n return function (location) {\n return function () {\n location.hostname = hostname;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function href(location) {\n return function () {\n return location.href;\n };\n}\n\nexport function setHref(href) {\n return function (location) {\n return function () {\n location.href = href;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function origin(location) {\n return function () {\n return location.origin;\n };\n}\n\nexport function setOrigin(origin) {\n return function (location) {\n return function () {\n location.origin = origin;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function pathname(location) {\n return function () {\n return location.pathname;\n };\n}\n\nexport function setPathname(pathname) {\n return function (location) {\n return function () {\n location.pathname = pathname;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function port(location) {\n return function () {\n return location.port;\n };\n}\n\nexport function setPort(port) {\n return function (location) {\n return function () {\n location.port = port;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function protocol(location) {\n return function () {\n return location.protocol;\n };\n}\n\nexport function setProtocol(protocol) {\n return function (location) {\n return function () {\n location.protocol = protocol;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function search(location) {\n return function () {\n return location.search;\n };\n}\n\nexport function setSearch(search) {\n return function (location) {\n return function () {\n location.search = search;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function assign(url) {\n return function (location) {\n return function () {\n location.assign(url);\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function replace(url) {\n return function (location) {\n return function () {\n location.replace(url);\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function reload(location) {\n return function () {\n location.reload();\n };\n}\n", "export function document(window) {\n return function () {\n return window.document;\n };\n}\n\nexport function navigator(window) {\n return function () {\n return window.navigator;\n };\n}\n\nexport function location(window) {\n return function () {\n return window.location;\n };\n}\n\nexport function history(window) {\n return function() {\n return window.history;\n };\n}\n\nexport function innerWidth(window) {\n return function () {\n return window.innerWidth;\n };\n}\n\nexport function innerHeight(window) {\n return function () {\n return window.innerHeight;\n };\n}\n\nexport function alert(str) {\n return function (window) {\n return function () {\n window.alert(str);\n };\n };\n}\n\nexport function confirm(str) {\n return function (window) {\n return function () {\n return window.confirm(str);\n };\n };\n}\n\nexport function moveBy(xDelta) {\n return function (yDelta) {\n return function (window) {\n return function () {\n window.moveBy(xDelta, yDelta);\n };\n };\n };\n}\n\nexport function moveTo(width) {\n return function (height) {\n return function (window) {\n return function () {\n window.moveTo(width, height);\n };\n };\n };\n}\n\nexport function _open(url) {\n return function (name) {\n return function (features) {\n return function (window) {\n return function () {\n return window.open(url, name, features);\n };\n };\n };\n };\n}\n\nexport function close(window) {\n return function () {\n return window.close();\n };\n}\n\nexport function outerHeight(window) {\n return function () {\n return window.outerHeight;\n };\n}\n\nexport function outerWidth(window) {\n return function () {\n return window.outerWidth;\n };\n}\n\nexport function print(window) {\n return function () {\n window.print();\n };\n}\n\nexport function _prompt(str) {\n return function (defaultText) {\n return function (window) {\n return function () {\n return window.prompt(str, defaultText);\n };\n };\n };\n}\n\nexport function resizeBy(xDelta) {\n return function (yDelta) {\n return function (window) {\n return function () {\n window.resizeBy(xDelta, yDelta);\n };\n };\n };\n}\n\nexport function resizeTo(width) {\n return function (height) {\n return function (window) {\n return function () {\n window.resizeTo(width, height);\n };\n };\n };\n}\n\nexport function screenX(window) {\n return function () {\n return window.screenX;\n };\n}\n\nexport function screenY(window) {\n return function () {\n return window.screenY;\n };\n}\n\nexport function scroll(xCoord) {\n return function (yCoord) {\n return function (window) {\n return function () {\n window.scroll(xCoord, yCoord);\n };\n };\n };\n}\n\nexport function scrollBy(xCoord) {\n return function (yCoord) {\n return function (window) {\n return function () {\n window.scrollBy(xCoord, yCoord);\n };\n };\n };\n}\n\nexport function scrollX(window) {\n return function () {\n return window.scrollX;\n };\n}\n\nexport function scrollY(window) {\n return function () {\n return window.scrollY;\n };\n}\n\nexport function localStorage(window) {\n return function () {\n return window.localStorage;\n };\n}\n\nexport function sessionStorage(window) {\n return function () {\n return window.sessionStorage;\n };\n}\n\nexport function requestAnimationFrame(fn) {\n return function(window) {\n return function() {\n return window.requestAnimationFrame(fn);\n };\n };\n}\n\nexport function cancelAnimationFrame(id) {\n return function(window) {\n return function() {\n return window.cancelAnimationFrame(id);\n };\n };\n}\n\nexport function requestIdleCallback(opts) {\n return function(fn) {\n return function(window) {\n return function() {\n return window.requestIdleCallback(fn, opts);\n };\n };\n };\n}\n\nexport function cancelIdleCallback(id) {\n return function(window) {\n return function() {\n return window.cancelIdleCallback(id);\n };\n };\n}\n\nexport function parent(window) {\n return function() {\n return window.parent;\n };\n}\n\nexport function _opener(window) {\n return function() {\n return window.opener;\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as Affjax from \"../Affjax/index.js\";\nimport * as Affjax_RequestBody from \"../Affjax.RequestBody/index.js\";\nimport * as Affjax_RequestHeader from \"../Affjax.RequestHeader/index.js\";\nimport * as Affjax_ResponseFormat from \"../Affjax.ResponseFormat/index.js\";\nimport * as Affjax_StatusCode from \"../Affjax.StatusCode/index.js\";\nimport * as Affjax_Web from \"../Affjax.Web/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_HTTP_Method from \"../Data.HTTP.Method/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_MediaType_Common from \"../Data.MediaType.Common/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Globals from \"../Globals/index.js\";\nimport * as Model from \"../Model/index.js\";\nimport * as Simple_JSON from \"../Simple.JSON/index.js\";\nimport * as Web_HTML from \"../Web.HTML/index.js\";\nimport * as Web_HTML_Location from \"../Web.HTML.Location/index.js\";\nimport * as Web_HTML_Window from \"../Web.HTML.Window/index.js\";\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Effect_Aff.functorAff);\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(Effect_Aff.monadEffectAff);\nvar bind = /* #__PURE__ */ Control_Bind.bind(Effect.bindEffect);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showInt);\nvar bind1 = /* #__PURE__ */ Control_Bind.bind(Effect_Aff.bindAff);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Effect_Aff.applicativeAff);\nvar bind2 = /* #__PURE__ */ Control_Bind.bind(Data_Maybe.bindMaybe);\nvar pure1 = /* #__PURE__ */ Control_Applicative.pure(Data_Maybe.applicativeMaybe);\nvar eq = /* #__PURE__ */ Data_Eq.eq(Affjax_StatusCode.eqStatusCode);\nvar Star = /* #__PURE__ */ (function () {\n function Star() {\n\n };\n Star.value = new Star();\n return Star;\n})();\nvar UnStar = /* #__PURE__ */ (function () {\n function UnStar() {\n\n };\n UnStar.value = new UnStar();\n return UnStar;\n})();\nvar showStar = {\n show: function (v) {\n if (v instanceof Star) {\n return \"star\";\n };\n if (v instanceof UnStar) {\n return \"unstar\";\n };\n throw new Error(\"Failed pattern match at App (line 29, column 1 - line 31, column 25): \" + [ v.constructor.name ]);\n }\n};\nvar show1 = /* #__PURE__ */ Data_Show.show(showStar);\nvar fetchUrl = function (method) {\n return function (url) {\n return function (headers) {\n return function (content) {\n return function (rt) {\n var app = Globals[\"app$prime\"](Data_Unit.unit);\n return Affjax_Web.request({\n username: Affjax.defaultRequest.username,\n password: Affjax.defaultRequest.password,\n withCredentials: Affjax.defaultRequest.withCredentials,\n timeout: Affjax.defaultRequest.timeout,\n url: url,\n method: new Data_Either.Left(method),\n headers: Data_Array.cons(new Affjax_RequestHeader.RequestHeader(app.csrfHeaderName, app.csrfToken))(headers),\n content: content,\n responseFormat: rt\n });\n };\n };\n };\n };\n};\nvar logout = function (u) {\n var app = Globals[\"app$prime\"](u);\n return discard($$void(fetchUrl(Data_HTTP_Method.POST.value)(app.authRlogoutR)([ ])(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore)))(function () {\n return liftEffect(bind(bind(Web_HTML.window)(Web_HTML_Window.location))(Web_HTML_Location.reload));\n });\n};\nvar fetchPath = function (method) {\n return function (path) {\n return function (headers) {\n return function (content) {\n return function (rt) {\n return fetchUrl(method)((Globals[\"app$prime\"](Data_Unit.unit)).homeR + path)(headers)(content)(rt);\n };\n };\n };\n };\n};\nvar fetchUrlEnc = function (method) {\n return function (path) {\n return function (content) {\n return function (rt) {\n return fetchPath(method)(path)([ new Affjax_RequestHeader.ContentType(Data_MediaType_Common.applicationFormURLEncoded) ])(map(Affjax_RequestBody.FormURLEncoded.create)(content))(rt);\n };\n };\n };\n};\nvar markRead = function (bid) {\n var path = \"bm/\" + (show(bid) + \"/read\");\n return fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore);\n};\nvar toggleStar = function (bid) {\n return function (action) {\n var path = \"bm/\" + (show(bid) + (\"/\" + show1(action)));\n return $$void(fetchUrlEnc(Data_HTTP_Method.POST.value)(path)(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore));\n };\n};\nvar fetchJson = function (dictWriteForeign) {\n var writeJSON = Simple_JSON.writeJSON(dictWriteForeign);\n return function (method) {\n return function (path) {\n return function (content) {\n return function (rt) {\n return fetchPath(method)(path)([ new Affjax_RequestHeader.ContentType(Data_MediaType_Common.applicationJSON) ])(map(function ($25) {\n return Affjax_RequestBody.string(writeJSON($25));\n })(content))(rt);\n };\n };\n };\n };\n};\nvar fetchJson1 = /* #__PURE__ */ fetchJson(Model[\"writeForeignTagCloudMode$prime\"]);\nvar fetchJson2 = /* #__PURE__ */ fetchJson(Model[\"writeForeignBookmark$prime\"]);\nvar fetchJson3 = /* #__PURE__ */ fetchJson(Model[\"writeForeignNote$prime\"]);\nvar fetchJson4 = /* #__PURE__ */ fetchJson(Model.writeForeignAccountSettin);\nvar getTagCloud = function (mode) {\n return bind1(fetchJson1(Data_HTTP_Method.POST.value)(\"api/tagcloud\")(new Data_Maybe.Just(mode))(Affjax_ResponseFormat.json))(function (eres) {\n return pure(bind2(Data_Either.hush(eres))(function (res) {\n return pure1(res.body);\n }));\n });\n};\nvar lookupTitle = function (bm) {\n return bind1(fetchJson2(Data_HTTP_Method.POST.value)(\"api/lookuptitle\")(new Data_Maybe.Just(bm))(Affjax_ResponseFormat.string))(function (eres) {\n return pure(bind2(Data_Either.hush(eres))(function (res) {\n var $24 = eq(res.status)(200);\n if ($24) {\n return new Data_Maybe.Just(res.body);\n };\n return Data_Maybe.Nothing.value;\n }));\n });\n};\nvar updateTagCloudMode = function (mode) {\n return fetchJson1(Data_HTTP_Method.POST.value)(\"api/tagcloudmode\")(new Data_Maybe.Just(mode))(Affjax_ResponseFormat.ignore);\n};\nvar editNote = function (bm) {\n return fetchJson3(Data_HTTP_Method.POST.value)(\"api/note/add\")(new Data_Maybe.Just(bm))(Affjax_ResponseFormat.string);\n};\nvar editBookmark = function (bm) {\n return fetchJson2(Data_HTTP_Method.POST.value)(\"api/add\")(new Data_Maybe.Just(bm))(Affjax_ResponseFormat.string);\n};\nvar editAccountSettings = function (us) {\n return fetchJson4(Data_HTTP_Method.POST.value)(\"api/accountSettings\")(new Data_Maybe.Just(us))(Affjax_ResponseFormat.ignore);\n};\nvar destroyNote = function (nid) {\n return fetchUrlEnc(Data_HTTP_Method.DELETE.value)(\"api/note/\" + show(nid))(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore);\n};\nvar destroy = function (bid) {\n return fetchUrlEnc(Data_HTTP_Method.DELETE.value)(\"bm/\" + show(bid))(Data_Maybe.Nothing.value)(Affjax_ResponseFormat.ignore);\n};\nexport {\n Star,\n UnStar,\n toggleStar,\n destroy,\n markRead,\n editBookmark,\n editNote,\n lookupTitle,\n getTagCloud,\n updateTagCloudMode,\n destroyNote,\n editAccountSettings,\n logout,\n fetchJson,\n fetchUrlEnc,\n fetchPath,\n fetchUrl,\n showStar\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nvar InputButton = /* #__PURE__ */ (function () {\n function InputButton() {\n\n };\n InputButton.value = new InputButton();\n return InputButton;\n})();\nvar InputCheckbox = /* #__PURE__ */ (function () {\n function InputCheckbox() {\n\n };\n InputCheckbox.value = new InputCheckbox();\n return InputCheckbox;\n})();\nvar InputColor = /* #__PURE__ */ (function () {\n function InputColor() {\n\n };\n InputColor.value = new InputColor();\n return InputColor;\n})();\nvar InputDate = /* #__PURE__ */ (function () {\n function InputDate() {\n\n };\n InputDate.value = new InputDate();\n return InputDate;\n})();\nvar InputDatetimeLocal = /* #__PURE__ */ (function () {\n function InputDatetimeLocal() {\n\n };\n InputDatetimeLocal.value = new InputDatetimeLocal();\n return InputDatetimeLocal;\n})();\nvar InputEmail = /* #__PURE__ */ (function () {\n function InputEmail() {\n\n };\n InputEmail.value = new InputEmail();\n return InputEmail;\n})();\nvar InputFile = /* #__PURE__ */ (function () {\n function InputFile() {\n\n };\n InputFile.value = new InputFile();\n return InputFile;\n})();\nvar InputHidden = /* #__PURE__ */ (function () {\n function InputHidden() {\n\n };\n InputHidden.value = new InputHidden();\n return InputHidden;\n})();\nvar InputImage = /* #__PURE__ */ (function () {\n function InputImage() {\n\n };\n InputImage.value = new InputImage();\n return InputImage;\n})();\nvar InputMonth = /* #__PURE__ */ (function () {\n function InputMonth() {\n\n };\n InputMonth.value = new InputMonth();\n return InputMonth;\n})();\nvar InputNumber = /* #__PURE__ */ (function () {\n function InputNumber() {\n\n };\n InputNumber.value = new InputNumber();\n return InputNumber;\n})();\nvar InputPassword = /* #__PURE__ */ (function () {\n function InputPassword() {\n\n };\n InputPassword.value = new InputPassword();\n return InputPassword;\n})();\nvar InputRadio = /* #__PURE__ */ (function () {\n function InputRadio() {\n\n };\n InputRadio.value = new InputRadio();\n return InputRadio;\n})();\nvar InputRange = /* #__PURE__ */ (function () {\n function InputRange() {\n\n };\n InputRange.value = new InputRange();\n return InputRange;\n})();\nvar InputReset = /* #__PURE__ */ (function () {\n function InputReset() {\n\n };\n InputReset.value = new InputReset();\n return InputReset;\n})();\nvar InputSearch = /* #__PURE__ */ (function () {\n function InputSearch() {\n\n };\n InputSearch.value = new InputSearch();\n return InputSearch;\n})();\nvar InputSubmit = /* #__PURE__ */ (function () {\n function InputSubmit() {\n\n };\n InputSubmit.value = new InputSubmit();\n return InputSubmit;\n})();\nvar InputTel = /* #__PURE__ */ (function () {\n function InputTel() {\n\n };\n InputTel.value = new InputTel();\n return InputTel;\n})();\nvar InputText = /* #__PURE__ */ (function () {\n function InputText() {\n\n };\n InputText.value = new InputText();\n return InputText;\n})();\nvar InputTime = /* #__PURE__ */ (function () {\n function InputTime() {\n\n };\n InputTime.value = new InputTime();\n return InputTime;\n})();\nvar InputUrl = /* #__PURE__ */ (function () {\n function InputUrl() {\n\n };\n InputUrl.value = new InputUrl();\n return InputUrl;\n})();\nvar InputWeek = /* #__PURE__ */ (function () {\n function InputWeek() {\n\n };\n InputWeek.value = new InputWeek();\n return InputWeek;\n})();\nvar renderInputType = function (v) {\n if (v instanceof InputButton) {\n return \"button\";\n };\n if (v instanceof InputCheckbox) {\n return \"checkbox\";\n };\n if (v instanceof InputColor) {\n return \"color\";\n };\n if (v instanceof InputDate) {\n return \"date\";\n };\n if (v instanceof InputDatetimeLocal) {\n return \"datetime-local\";\n };\n if (v instanceof InputEmail) {\n return \"email\";\n };\n if (v instanceof InputFile) {\n return \"file\";\n };\n if (v instanceof InputHidden) {\n return \"hidden\";\n };\n if (v instanceof InputImage) {\n return \"image\";\n };\n if (v instanceof InputMonth) {\n return \"month\";\n };\n if (v instanceof InputNumber) {\n return \"number\";\n };\n if (v instanceof InputPassword) {\n return \"password\";\n };\n if (v instanceof InputRadio) {\n return \"radio\";\n };\n if (v instanceof InputRange) {\n return \"range\";\n };\n if (v instanceof InputReset) {\n return \"reset\";\n };\n if (v instanceof InputSearch) {\n return \"search\";\n };\n if (v instanceof InputSubmit) {\n return \"submit\";\n };\n if (v instanceof InputTel) {\n return \"tel\";\n };\n if (v instanceof InputText) {\n return \"text\";\n };\n if (v instanceof InputTime) {\n return \"time\";\n };\n if (v instanceof InputUrl) {\n return \"url\";\n };\n if (v instanceof InputWeek) {\n return \"week\";\n };\n throw new Error(\"Failed pattern match at DOM.HTML.Indexed.InputType (line 33, column 19 - line 55, column 22): \" + [ v.constructor.name ]);\n};\nvar eqInputType = {\n eq: function (x) {\n return function (y) {\n if (x instanceof InputButton && y instanceof InputButton) {\n return true;\n };\n if (x instanceof InputCheckbox && y instanceof InputCheckbox) {\n return true;\n };\n if (x instanceof InputColor && y instanceof InputColor) {\n return true;\n };\n if (x instanceof InputDate && y instanceof InputDate) {\n return true;\n };\n if (x instanceof InputDatetimeLocal && y instanceof InputDatetimeLocal) {\n return true;\n };\n if (x instanceof InputEmail && y instanceof InputEmail) {\n return true;\n };\n if (x instanceof InputFile && y instanceof InputFile) {\n return true;\n };\n if (x instanceof InputHidden && y instanceof InputHidden) {\n return true;\n };\n if (x instanceof InputImage && y instanceof InputImage) {\n return true;\n };\n if (x instanceof InputMonth && y instanceof InputMonth) {\n return true;\n };\n if (x instanceof InputNumber && y instanceof InputNumber) {\n return true;\n };\n if (x instanceof InputPassword && y instanceof InputPassword) {\n return true;\n };\n if (x instanceof InputRadio && y instanceof InputRadio) {\n return true;\n };\n if (x instanceof InputRange && y instanceof InputRange) {\n return true;\n };\n if (x instanceof InputReset && y instanceof InputReset) {\n return true;\n };\n if (x instanceof InputSearch && y instanceof InputSearch) {\n return true;\n };\n if (x instanceof InputSubmit && y instanceof InputSubmit) {\n return true;\n };\n if (x instanceof InputTel && y instanceof InputTel) {\n return true;\n };\n if (x instanceof InputText && y instanceof InputText) {\n return true;\n };\n if (x instanceof InputTime && y instanceof InputTime) {\n return true;\n };\n if (x instanceof InputUrl && y instanceof InputUrl) {\n return true;\n };\n if (x instanceof InputWeek && y instanceof InputWeek) {\n return true;\n };\n return false;\n };\n }\n};\nvar ordInputType = {\n compare: function (x) {\n return function (y) {\n if (x instanceof InputButton && y instanceof InputButton) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputButton) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputButton) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputCheckbox && y instanceof InputCheckbox) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputCheckbox) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputCheckbox) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputColor && y instanceof InputColor) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputColor) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputColor) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputDate && y instanceof InputDate) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputDate) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputDate) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputDatetimeLocal && y instanceof InputDatetimeLocal) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputDatetimeLocal) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputDatetimeLocal) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputEmail && y instanceof InputEmail) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputEmail) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputEmail) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputFile && y instanceof InputFile) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputFile) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputFile) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputHidden && y instanceof InputHidden) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputHidden) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputHidden) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputImage && y instanceof InputImage) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputImage) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputImage) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputMonth && y instanceof InputMonth) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputMonth) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputMonth) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputNumber && y instanceof InputNumber) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputNumber) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputNumber) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputPassword && y instanceof InputPassword) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputPassword) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputPassword) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputRadio && y instanceof InputRadio) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputRadio) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputRadio) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputRange && y instanceof InputRange) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputRange) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputRange) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputReset && y instanceof InputReset) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputReset) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputReset) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputSearch && y instanceof InputSearch) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputSearch) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputSearch) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputSubmit && y instanceof InputSubmit) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputSubmit) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputSubmit) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputTel && y instanceof InputTel) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputTel) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputTel) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputText && y instanceof InputText) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputText) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputText) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputTime && y instanceof InputTime) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputTime) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputTime) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputUrl && y instanceof InputUrl) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof InputUrl) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof InputUrl) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof InputWeek && y instanceof InputWeek) {\n return Data_Ordering.EQ.value;\n };\n throw new Error(\"Failed pattern match at DOM.HTML.Indexed.InputType (line 0, column 0 - line 0, column 0): \" + [ x.constructor.name, y.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqInputType;\n }\n};\nexport {\n InputButton,\n InputCheckbox,\n InputColor,\n InputDate,\n InputDatetimeLocal,\n InputEmail,\n InputFile,\n InputHidden,\n InputImage,\n InputMonth,\n InputNumber,\n InputPassword,\n InputRadio,\n InputRange,\n InputReset,\n InputSearch,\n InputSubmit,\n InputTel,\n InputText,\n InputTime,\n InputUrl,\n InputWeek,\n renderInputType,\n eqInputType,\n ordInputType\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Const from \"../Data.Const/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar alaF = /* #__PURE__ */ Data_Newtype.alaF()()()();\nvar Forget = function (x) {\n return x;\n};\nvar semigroupForget = function (dictSemigroup) {\n return Data_Semigroup.semigroupFn(dictSemigroup);\n};\nvar profunctorForget = {\n dimap: function (f) {\n return function (v) {\n return function (v1) {\n return function ($36) {\n return v1(f($36));\n };\n };\n };\n }\n};\nvar strongForget = {\n first: function (v) {\n return function ($37) {\n return v(Data_Tuple.fst($37));\n };\n },\n second: function (v) {\n return function ($38) {\n return v(Data_Tuple.snd($38));\n };\n },\n Profunctor0: function () {\n return profunctorForget;\n }\n};\nvar newtypeForget = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar monoidForget = function (dictMonoid) {\n return Data_Monoid.monoidFn(dictMonoid);\n};\nvar cochoiceForget = {\n unleft: function (v) {\n return function ($39) {\n return v(Data_Either.Left.create($39));\n };\n },\n unright: function (v) {\n return function ($40) {\n return v(Data_Either.Right.create($40));\n };\n },\n Profunctor0: function () {\n return profunctorForget;\n }\n};\nvar choiceForget = function (dictMonoid) {\n var mempty = Data_Monoid.mempty(Data_Monoid.monoidFn(dictMonoid));\n return {\n left: function (v) {\n return Data_Either.either(v)(mempty);\n },\n right: function (v) {\n return Data_Either.either(mempty)(v);\n },\n Profunctor0: function () {\n return profunctorForget;\n }\n };\n};\nvar wanderForget = function (dictMonoid) {\n var applicativeConst = Data_Const.applicativeConst(dictMonoid);\n var choiceForget1 = choiceForget(dictMonoid);\n return {\n wander: function (f) {\n return function (v) {\n return alaF(Data_Const.Const)(f(applicativeConst))(v);\n };\n },\n Strong0: function () {\n return strongForget;\n },\n Choice1: function () {\n return choiceForget1;\n }\n };\n};\nexport {\n Forget,\n newtypeForget,\n semigroupForget,\n monoidForget,\n profunctorForget,\n choiceForget,\n strongForget,\n cochoiceForget,\n wanderForget\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Semigroupoid from \"../Control.Semigroupoid/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Profunctor from \"../Data.Profunctor/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar strongFn = {\n first: function (a2b) {\n return function (v) {\n return new Data_Tuple.Tuple(a2b(v.value0), v.value1);\n };\n },\n second: /* #__PURE__ */ Data_Functor.map(Data_Tuple.functorTuple),\n Profunctor0: function () {\n return Data_Profunctor.profunctorFn;\n }\n};\nvar second = function (dict) {\n return dict.second;\n};\nvar first = function (dict) {\n return dict.first;\n};\nvar splitStrong = function (dictCategory) {\n var composeFlipped = Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0());\n return function (dictStrong) {\n var first1 = first(dictStrong);\n var second1 = second(dictStrong);\n return function (l) {\n return function (r) {\n return composeFlipped(first1(l))(second1(r));\n };\n };\n };\n};\nvar fanout = function (dictCategory) {\n var identity1 = Control_Category.identity(dictCategory);\n var composeFlipped = Control_Semigroupoid.composeFlipped(dictCategory.Semigroupoid0());\n var splitStrong1 = splitStrong(dictCategory);\n return function (dictStrong) {\n var dimap = Data_Profunctor.dimap(dictStrong.Profunctor0());\n var splitStrong2 = splitStrong1(dictStrong);\n return function (l) {\n return function (r) {\n var split = dimap(identity)(function (a) {\n return new Data_Tuple.Tuple(a, a);\n })(identity1);\n return composeFlipped(split)(splitStrong2(l)(r));\n };\n };\n };\n};\nexport {\n first,\n second,\n splitStrong,\n fanout,\n strongFn\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as Data_Lens_Types from \"../Data.Lens.Types/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_Profunctor_Strong from \"../Data.Profunctor.Strong/index.js\";\nvar unwrap = /* #__PURE__ */ Data_Newtype.unwrap();\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar fanout = /* #__PURE__ */ Data_Profunctor_Strong.fanout(Control_Category.categoryFn)(Data_Profunctor_Strong.strongFn);\nvar view = function (l) {\n return unwrap(l(identity));\n};\nvar viewOn = function (s) {\n return function (l) {\n return view(l)(s);\n };\n};\nvar use = function (dictMonadState) {\n var gets = Control_Monad_State_Class.gets(dictMonadState);\n return function (p) {\n return gets(function (v) {\n return viewOn(v)(p);\n });\n };\n};\nvar to = function (f) {\n return function (p) {\n var $10 = unwrap(p);\n return function ($11) {\n return $10(f($11));\n };\n };\n};\nvar takeBoth = function (l) {\n return function (r) {\n return to(fanout(view(l))(view(r)));\n };\n};\nvar iview = function (l) {\n return unwrap(l(identity));\n};\nvar iuse = function (dictMonadState) {\n var gets = Control_Monad_State_Class.gets(dictMonadState);\n return function (p) {\n return gets(iview(p));\n };\n};\nvar cloneGetter = function (g) {\n return to(view(g));\n};\nexport {\n viewOn,\n view,\n to,\n takeBoth,\n use,\n iview,\n iuse,\n cloneGetter\n};\nexport {\n Indexed\n} from \"../Data.Lens.Types/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Lens_Internal_Indexed from \"../Data.Lens.Internal.Indexed/index.js\";\nimport * as Data_Lens_Internal_Shop from \"../Data.Lens.Internal.Shop/index.js\";\nimport * as Data_Lens_Types from \"../Data.Lens.Types/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_Profunctor from \"../Data.Profunctor/index.js\";\nimport * as Data_Profunctor_Strong from \"../Data.Profunctor.Strong/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar lift2 = /* #__PURE__ */ Control_Apply.lift2(Control_Apply.applyFn);\nvar un = /* #__PURE__ */ Data_Newtype.un();\nvar withLens = function (l) {\n return function (f) {\n var v = l(new Data_Lens_Internal_Shop.Shop(identity, function (v1) {\n return function (b) {\n return b;\n };\n }));\n return f(v.value0)(v.value1);\n };\n};\nvar withIndexedLens = function (l) {\n return function (f) {\n var v = l(new Data_Lens_Internal_Shop.Shop(identity, function (v1) {\n return function (b) {\n return b;\n };\n }));\n return f(v.value0)(v.value1);\n };\n};\nvar lensStore = function (l) {\n return withLens(l)(lift2(Data_Tuple.Tuple.create));\n};\nvar lens$prime = function (to) {\n return function (dictStrong) {\n var dimap = Data_Profunctor.dimap(dictStrong.Profunctor0());\n var first = Data_Profunctor_Strong.first(dictStrong);\n return function (pab) {\n return dimap(to)(function (v) {\n return v.value1(v.value0);\n })(first(pab));\n };\n };\n};\nvar lens = function (get) {\n return function (set) {\n return function (dictStrong) {\n return lens$prime(function (s) {\n return new Data_Tuple.Tuple(get(s), function (b) {\n return set(s)(b);\n });\n })(dictStrong);\n };\n };\n};\nvar ilens$prime = function (to) {\n return function (dictStrong) {\n var dimap = Data_Profunctor.dimap(dictStrong.Profunctor0());\n var first = Data_Profunctor_Strong.first(dictStrong);\n return function (pab) {\n return dimap(to)(function (v) {\n return v.value1(v.value0);\n })(first(un(Data_Lens_Internal_Indexed.Indexed)(pab)));\n };\n };\n};\nvar ilens = function (get) {\n return function (set) {\n return function (dictStrong) {\n return ilens$prime(function (s) {\n return new Data_Tuple.Tuple(get(s), function (b) {\n return set(s)(b);\n });\n })(dictStrong);\n };\n };\n};\nvar cloneLens = function (l) {\n return function (dictStrong) {\n return withLens(l)(function (x) {\n return function (y) {\n return function (p) {\n return lens(x)(y)(dictStrong)(p);\n };\n };\n });\n };\n};\nvar cloneIndexedLens = function (l) {\n return function (dictStrong) {\n return withIndexedLens(l)(function (x) {\n return function (y) {\n return function (p) {\n return ilens(x)(y)(dictStrong)(p);\n };\n };\n });\n };\n};\nexport {\n lens,\n lens$prime,\n withLens,\n cloneLens,\n ilens,\n ilens$prime,\n withIndexedLens,\n cloneIndexedLens,\n lensStore\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as Data_EuclideanRing from \"../Data.EuclideanRing/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_HeytingAlgebra from \"../Data.HeytingAlgebra/index.js\";\nimport * as Data_Lens_Types from \"../Data.Lens.Types/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ring from \"../Data.Ring/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar over = function (l) {\n return l;\n};\nvar set = function (l) {\n return function (b) {\n return over(l)(Data_Function[\"const\"](b));\n };\n};\nvar setJust = function (p) {\n var $59 = set(p);\n return function ($60) {\n return $59(Data_Maybe.Just.create($60));\n };\n};\nvar subOver = function (dictRing) {\n var sub = Data_Ring.sub(dictRing);\n return function (p) {\n var $61 = over(p);\n var $62 = Data_Function.flip(sub);\n return function ($63) {\n return $61($62($63));\n };\n };\n};\nvar mulOver = function (dictSemiring) {\n var mul = Data_Semiring.mul(dictSemiring);\n return function (p) {\n var $64 = over(p);\n var $65 = Data_Function.flip(mul);\n return function ($66) {\n return $64($65($66));\n };\n };\n};\nvar modifying = function (dictMonadState) {\n var $$void = Data_Functor[\"void\"]((((dictMonadState.Monad0()).Bind1()).Apply0()).Functor0());\n var modify = Control_Monad_State_Class.modify(dictMonadState);\n return function (p) {\n return function (f) {\n return $$void(modify(over(p)(f)));\n };\n };\n};\nvar mulModifying = function (dictMonadState) {\n var modifying1 = modifying(dictMonadState);\n return function (dictSemiring) {\n var mul = Data_Semiring.mul(dictSemiring);\n return function (p) {\n var $67 = modifying1(p);\n var $68 = Data_Function.flip(mul);\n return function ($69) {\n return $67($68($69));\n };\n };\n };\n};\nvar subModifying = function (dictMonadState) {\n var modifying1 = modifying(dictMonadState);\n return function (dictRing) {\n var sub = Data_Ring.sub(dictRing);\n return function (p) {\n var $70 = modifying1(p);\n var $71 = Data_Function.flip(sub);\n return function ($72) {\n return $70($71($72));\n };\n };\n };\n};\nvar iover = function (l) {\n return function (f) {\n return l(Data_Tuple.uncurry(f));\n };\n};\nvar divOver = function (dictEuclideanRing) {\n var div = Data_EuclideanRing.div(dictEuclideanRing);\n return function (p) {\n var $73 = over(p);\n var $74 = Data_Function.flip(div);\n return function ($75) {\n return $73($74($75));\n };\n };\n};\nvar divModifying = function (dictMonadState) {\n var modifying1 = modifying(dictMonadState);\n return function (dictEuclideanRing) {\n var div = Data_EuclideanRing.div(dictEuclideanRing);\n return function (p) {\n var $76 = modifying1(p);\n var $77 = Data_Function.flip(div);\n return function ($78) {\n return $76($77($78));\n };\n };\n };\n};\nvar disjOver = function (dictHeytingAlgebra) {\n var disj = Data_HeytingAlgebra.disj(dictHeytingAlgebra);\n return function (p) {\n var $79 = over(p);\n var $80 = Data_Function.flip(disj);\n return function ($81) {\n return $79($80($81));\n };\n };\n};\nvar disjModifying = function (dictMonadState) {\n var modifying1 = modifying(dictMonadState);\n return function (dictHeytingAlgebra) {\n var disj = Data_HeytingAlgebra.disj(dictHeytingAlgebra);\n return function (p) {\n var $82 = modifying1(p);\n var $83 = Data_Function.flip(disj);\n return function ($84) {\n return $82($83($84));\n };\n };\n };\n};\nvar conjOver = function (dictHeytingAlgebra) {\n var conj = Data_HeytingAlgebra.conj(dictHeytingAlgebra);\n return function (p) {\n var $85 = over(p);\n var $86 = Data_Function.flip(conj);\n return function ($87) {\n return $85($86($87));\n };\n };\n};\nvar conjModifying = function (dictMonadState) {\n var modifying1 = modifying(dictMonadState);\n return function (dictHeytingAlgebra) {\n var conj = Data_HeytingAlgebra.conj(dictHeytingAlgebra);\n return function (p) {\n var $88 = modifying1(p);\n var $89 = Data_Function.flip(conj);\n return function ($90) {\n return $88($89($90));\n };\n };\n };\n};\nvar assign = function (dictMonadState) {\n var $$void = Data_Functor[\"void\"]((((dictMonadState.Monad0()).Bind1()).Apply0()).Functor0());\n var modify = Control_Monad_State_Class.modify(dictMonadState);\n return function (p) {\n return function (b) {\n return $$void(modify(set(p)(b)));\n };\n };\n};\nvar assignJust = function (dictMonadState) {\n var assign1 = assign(dictMonadState);\n return function (p) {\n var $91 = assign1(p);\n return function ($92) {\n return $91(Data_Maybe.Just.create($92));\n };\n };\n};\nvar appendOver = function (dictSemigroup) {\n var append = Data_Semigroup.append(dictSemigroup);\n return function (p) {\n var $93 = over(p);\n var $94 = Data_Function.flip(append);\n return function ($95) {\n return $93($94($95));\n };\n };\n};\nvar appendModifying = function (dictMonadState) {\n var modifying1 = modifying(dictMonadState);\n return function (dictSemigroup) {\n var append = Data_Semigroup.append(dictSemigroup);\n return function (p) {\n var $96 = modifying1(p);\n var $97 = Data_Function.flip(append);\n return function ($98) {\n return $96($97($98));\n };\n };\n };\n};\nvar addOver = function (dictSemiring) {\n var add = Data_Semiring.add(dictSemiring);\n return function (p) {\n var $99 = over(p);\n return function ($100) {\n return $99(add($100));\n };\n };\n};\nvar addModifying = function (dictMonadState) {\n var modifying1 = modifying(dictMonadState);\n return function (dictSemiring) {\n var add = Data_Semiring.add(dictSemiring);\n return function (p) {\n var $101 = modifying1(p);\n return function ($102) {\n return $101(add($102));\n };\n };\n };\n};\nexport {\n over,\n iover,\n set,\n addOver,\n subOver,\n mulOver,\n divOver,\n disjOver,\n conjOver,\n appendOver,\n setJust,\n assign,\n modifying,\n addModifying,\n mulModifying,\n subModifying,\n divModifying,\n disjModifying,\n conjModifying,\n appendModifying,\n assignJust\n};\nexport {\n Indexed\n} from \"../Data.Lens.Types/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Monad_Cont_Trans from \"../Control.Monad.Cont.Trans/index.js\";\nimport * as Control_Monad_Except_Trans from \"../Control.Monad.Except.Trans/index.js\";\nimport * as Control_Monad_List_Trans from \"../Control.Monad.List.Trans/index.js\";\nimport * as Control_Monad_Maybe_Trans from \"../Control.Monad.Maybe.Trans/index.js\";\nimport * as Control_Monad_RWS_Trans from \"../Control.Monad.RWS.Trans/index.js\";\nimport * as Control_Monad_Reader_Trans from \"../Control.Monad.Reader.Trans/index.js\";\nimport * as Control_Monad_State_Trans from \"../Control.Monad.State.Trans/index.js\";\nimport * as Control_Monad_Trans_Class from \"../Control.Monad.Trans.Class/index.js\";\nimport * as Control_Monad_Writer_Trans from \"../Control.Monad.Writer.Trans/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nvar lift = /* #__PURE__ */ Control_Monad_Trans_Class.lift(Control_Monad_Cont_Trans.monadTransContT);\nvar lift1 = /* #__PURE__ */ Control_Monad_Trans_Class.lift(Control_Monad_Except_Trans.monadTransExceptT);\nvar lift2 = /* #__PURE__ */ Control_Monad_Trans_Class.lift(Control_Monad_List_Trans.monadTransListT);\nvar lift3 = /* #__PURE__ */ Control_Monad_Trans_Class.lift(Control_Monad_Maybe_Trans.monadTransMaybeT);\nvar lift4 = /* #__PURE__ */ Control_Monad_Trans_Class.lift(Control_Monad_Reader_Trans.monadTransReaderT);\nvar lift5 = /* #__PURE__ */ Control_Monad_Trans_Class.lift(Control_Monad_State_Trans.monadTransStateT);\nvar monadAffAff = {\n liftAff: /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn),\n MonadEffect0: function () {\n return Effect_Aff.monadEffectAff;\n }\n};\nvar liftAff = function (dict) {\n return dict.liftAff;\n};\nvar monadAffContT = function (dictMonadAff) {\n var MonadEffect0 = dictMonadAff.MonadEffect0();\n var monadEffectContT = Control_Monad_Cont_Trans.monadEffectContT(MonadEffect0);\n return {\n liftAff: (function () {\n var $65 = lift(MonadEffect0.Monad0());\n var $66 = liftAff(dictMonadAff);\n return function ($67) {\n return $65($66($67));\n };\n })(),\n MonadEffect0: function () {\n return monadEffectContT;\n }\n };\n};\nvar monadAffExceptT = function (dictMonadAff) {\n var MonadEffect0 = dictMonadAff.MonadEffect0();\n var monadEffectExceptT = Control_Monad_Except_Trans.monadEffectExceptT(MonadEffect0);\n return {\n liftAff: (function () {\n var $68 = lift1(MonadEffect0.Monad0());\n var $69 = liftAff(dictMonadAff);\n return function ($70) {\n return $68($69($70));\n };\n })(),\n MonadEffect0: function () {\n return monadEffectExceptT;\n }\n };\n};\nvar monadAffListT = function (dictMonadAff) {\n var MonadEffect0 = dictMonadAff.MonadEffect0();\n var monadEffectListT = Control_Monad_List_Trans.monadEffectListT(MonadEffect0);\n return {\n liftAff: (function () {\n var $71 = lift2(MonadEffect0.Monad0());\n var $72 = liftAff(dictMonadAff);\n return function ($73) {\n return $71($72($73));\n };\n })(),\n MonadEffect0: function () {\n return monadEffectListT;\n }\n };\n};\nvar monadAffMaybe = function (dictMonadAff) {\n var MonadEffect0 = dictMonadAff.MonadEffect0();\n var monadEffectMaybe = Control_Monad_Maybe_Trans.monadEffectMaybe(MonadEffect0);\n return {\n liftAff: (function () {\n var $74 = lift3(MonadEffect0.Monad0());\n var $75 = liftAff(dictMonadAff);\n return function ($76) {\n return $74($75($76));\n };\n })(),\n MonadEffect0: function () {\n return monadEffectMaybe;\n }\n };\n};\nvar monadAffRWS = function (dictMonadAff) {\n var MonadEffect0 = dictMonadAff.MonadEffect0();\n var Monad0 = MonadEffect0.Monad0();\n var liftAff1 = liftAff(dictMonadAff);\n return function (dictMonoid) {\n var monadEffectRWS = Control_Monad_RWS_Trans.monadEffectRWS(dictMonoid)(MonadEffect0);\n return {\n liftAff: (function () {\n var $77 = Control_Monad_Trans_Class.lift(Control_Monad_RWS_Trans.monadTransRWST(dictMonoid))(Monad0);\n return function ($78) {\n return $77(liftAff1($78));\n };\n })(),\n MonadEffect0: function () {\n return monadEffectRWS;\n }\n };\n };\n};\nvar monadAffReader = function (dictMonadAff) {\n var MonadEffect0 = dictMonadAff.MonadEffect0();\n var monadEffectReader = Control_Monad_Reader_Trans.monadEffectReader(MonadEffect0);\n return {\n liftAff: (function () {\n var $79 = lift4(MonadEffect0.Monad0());\n var $80 = liftAff(dictMonadAff);\n return function ($81) {\n return $79($80($81));\n };\n })(),\n MonadEffect0: function () {\n return monadEffectReader;\n }\n };\n};\nvar monadAffState = function (dictMonadAff) {\n var MonadEffect0 = dictMonadAff.MonadEffect0();\n var monadEffectState = Control_Monad_State_Trans.monadEffectState(MonadEffect0);\n return {\n liftAff: (function () {\n var $82 = lift5(MonadEffect0.Monad0());\n var $83 = liftAff(dictMonadAff);\n return function ($84) {\n return $82($83($84));\n };\n })(),\n MonadEffect0: function () {\n return monadEffectState;\n }\n };\n};\nvar monadAffWriter = function (dictMonadAff) {\n var MonadEffect0 = dictMonadAff.MonadEffect0();\n var Monad0 = MonadEffect0.Monad0();\n var liftAff1 = liftAff(dictMonadAff);\n return function (dictMonoid) {\n var monadEffectWriter = Control_Monad_Writer_Trans.monadEffectWriter(dictMonoid)(MonadEffect0);\n return {\n liftAff: (function () {\n var $85 = Control_Monad_Trans_Class.lift(Control_Monad_Writer_Trans.monadTransWriterT(dictMonoid))(Monad0);\n return function ($86) {\n return $85(liftAff1($86));\n };\n })(),\n MonadEffect0: function () {\n return monadEffectWriter;\n }\n };\n };\n};\nexport {\n liftAff,\n monadAffAff,\n monadAffContT,\n monadAffExceptT,\n monadAffListT,\n monadAffMaybe,\n monadAffReader,\n monadAffRWS,\n monadAffState,\n monadAffWriter\n};\n", "// Generated by purs version 0.15.14\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar runExists = Unsafe_Coerce.unsafeCoerce;\nvar mkExists = Unsafe_Coerce.unsafeCoerce;\nexport {\n mkExists,\n runExists\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Alt from \"../Control.Alt/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Comonad from \"../Control.Comonad/index.js\";\nimport * as Control_Extend from \"../Control.Extend/index.js\";\nimport * as Control_Plus from \"../Control.Plus/index.js\";\nimport * as Data_Distributive from \"../Data.Distributive/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Exists from \"../Data.Exists/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Functor_Invariant from \"../Data.Functor.Invariant/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Semigroup_Foldable from \"../Data.Semigroup.Foldable/index.js\";\nimport * as Data_Semigroup_Traversable from \"../Data.Semigroup.Traversable/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nvar CoyonedaF = /* #__PURE__ */ (function () {\n function CoyonedaF(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n CoyonedaF.create = function (value0) {\n return function (value1) {\n return new CoyonedaF(value0, value1);\n };\n };\n return CoyonedaF;\n})();\nvar Coyoneda = function (x) {\n return x;\n};\nvar unCoyoneda = function (f) {\n return function (v) {\n return Data_Exists.runExists(function (v1) {\n return f(v1.value0)(v1.value1);\n })(v);\n };\n};\nvar lowerCoyoneda = function (dictFunctor) {\n return unCoyoneda(Data_Functor.map(dictFunctor));\n};\nvar foldableCoyoneda = function (dictFoldable) {\n var foldr = Data_Foldable.foldr(dictFoldable);\n var foldl = Data_Foldable.foldl(dictFoldable);\n var foldMap = Data_Foldable.foldMap(dictFoldable);\n return {\n foldr: function (f) {\n return function (z) {\n return unCoyoneda(function (k) {\n return foldr(function ($175) {\n return f(k($175));\n })(z);\n });\n };\n },\n foldl: function (f) {\n return function (z) {\n return unCoyoneda(function (k) {\n return foldl(function (x) {\n var $176 = f(x);\n return function ($177) {\n return $176(k($177));\n };\n })(z);\n });\n };\n },\n foldMap: function (dictMonoid) {\n var foldMap1 = foldMap(dictMonoid);\n return function (f) {\n return unCoyoneda(function (k) {\n return foldMap1(function ($178) {\n return f(k($178));\n });\n });\n };\n }\n };\n};\nvar foldable1Coyoneda = function (dictFoldable1) {\n var foldMap1 = Data_Semigroup_Foldable.foldMap1(dictFoldable1);\n var foldableCoyoneda1 = foldableCoyoneda(dictFoldable1.Foldable0());\n return {\n foldMap1: function (dictSemigroup) {\n var foldMap11 = foldMap1(dictSemigroup);\n return function (f) {\n return unCoyoneda(function (k) {\n return foldMap11(function ($179) {\n return f(k($179));\n });\n });\n };\n },\n foldr1: Data_Semigroup_Foldable.foldr1Default(foldable1Coyoneda(dictFoldable1)),\n foldl1: Data_Semigroup_Foldable.foldl1Default(foldable1Coyoneda(dictFoldable1)),\n Foldable0: function () {\n return foldableCoyoneda1;\n }\n };\n};\nvar eqCoyoneda = function (dictFunctor) {\n var lowerCoyoneda1 = lowerCoyoneda(dictFunctor);\n return function (dictEq1) {\n var eq1 = Data_Eq.eq1(dictEq1);\n return function (dictEq) {\n var eq11 = eq1(dictEq);\n return {\n eq: function (x) {\n return function (y) {\n return eq11(lowerCoyoneda1(x))(lowerCoyoneda1(y));\n };\n }\n };\n };\n };\n};\nvar ordCoyoneda = function (dictFunctor) {\n var lowerCoyoneda1 = lowerCoyoneda(dictFunctor);\n var eqCoyoneda1 = eqCoyoneda(dictFunctor);\n return function (dictOrd1) {\n var compare1 = Data_Ord.compare1(dictOrd1);\n var eqCoyoneda2 = eqCoyoneda1(dictOrd1.Eq10());\n return function (dictOrd) {\n var compare11 = compare1(dictOrd);\n var eqCoyoneda3 = eqCoyoneda2(dictOrd.Eq0());\n return {\n compare: function (x) {\n return function (y) {\n return compare11(lowerCoyoneda1(x))(lowerCoyoneda1(y));\n };\n },\n Eq0: function () {\n return eqCoyoneda3;\n }\n };\n };\n };\n};\nvar eq1Coyoneda = function (dictFunctor) {\n var eqCoyoneda1 = eqCoyoneda(dictFunctor);\n return function (dictEq1) {\n var eqCoyoneda2 = eqCoyoneda1(dictEq1);\n return {\n eq1: function (dictEq) {\n return Data_Eq.eq(eqCoyoneda2(dictEq));\n }\n };\n };\n};\nvar ord1Coyoneda = function (dictFunctor) {\n var ordCoyoneda1 = ordCoyoneda(dictFunctor);\n var eq1Coyoneda1 = eq1Coyoneda(dictFunctor);\n return function (dictOrd1) {\n var ordCoyoneda2 = ordCoyoneda1(dictOrd1);\n var eq1Coyoneda2 = eq1Coyoneda1(dictOrd1.Eq10());\n return {\n compare1: function (dictOrd) {\n return Data_Ord.compare(ordCoyoneda2(dictOrd));\n },\n Eq10: function () {\n return eq1Coyoneda2;\n }\n };\n };\n};\nvar coyoneda = function (k) {\n return function (fi) {\n return Data_Exists.mkExists(new CoyonedaF(k, fi));\n };\n};\nvar functorCoyoneda = {\n map: function (f) {\n return function (v) {\n return Data_Exists.runExists(function (v1) {\n return coyoneda(function ($180) {\n return f(v1.value0($180));\n })(v1.value1);\n })(v);\n };\n }\n};\nvar invatiantCoyoneda = {\n imap: /* #__PURE__ */ Data_Functor_Invariant.imapF(functorCoyoneda)\n};\nvar hoistCoyoneda = function (nat) {\n return function (v) {\n return Data_Exists.runExists(function (v1) {\n return coyoneda(v1.value0)(nat(v1.value1));\n })(v);\n };\n};\nvar liftCoyoneda = /* #__PURE__ */ coyoneda(/* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn));\nvar distributiveCoyoneda = function (dictDistributive) {\n var collect = Data_Distributive.collect(dictDistributive);\n var lowerCoyoneda1 = lowerCoyoneda(dictDistributive.Functor0());\n return {\n collect: function (dictFunctor) {\n var collect1 = collect(dictFunctor);\n return function (f) {\n var $181 = collect1(function ($183) {\n return lowerCoyoneda1(f($183));\n });\n return function ($182) {\n return liftCoyoneda($181($182));\n };\n };\n },\n distribute: function (dictFunctor) {\n var $184 = collect(dictFunctor)(lowerCoyoneda1);\n return function ($185) {\n return liftCoyoneda($184($185));\n };\n },\n Functor0: function () {\n return functorCoyoneda;\n }\n };\n};\nvar extendCoyoneda = function (dictExtend) {\n var extend = Control_Extend.extend(dictExtend);\n return {\n extend: function (f) {\n return function (v) {\n return Data_Exists.runExists(function (v1) {\n return liftCoyoneda(extend((function () {\n var $186 = coyoneda(v1.value0);\n return function ($187) {\n return f($186($187));\n };\n })())(v1.value1));\n })(v);\n };\n },\n Functor0: function () {\n return functorCoyoneda;\n }\n };\n};\nvar monadTransCoyoneda = {\n lift: function (dictMonad) {\n return liftCoyoneda;\n }\n};\nvar traversableCoyoneda = function (dictTraversable) {\n var traverse = Data_Traversable.traverse(dictTraversable);\n var foldableCoyoneda1 = foldableCoyoneda(dictTraversable.Foldable1());\n return {\n traverse: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverse1 = traverse(dictApplicative);\n return function (f) {\n return unCoyoneda(function (k) {\n var $188 = map(liftCoyoneda);\n var $189 = traverse1(function ($191) {\n return f(k($191));\n });\n return function ($190) {\n return $188($189($190));\n };\n });\n };\n },\n sequence: function (dictApplicative) {\n var map = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverse1 = traverse(dictApplicative);\n return unCoyoneda(function (k) {\n var $192 = map(liftCoyoneda);\n var $193 = traverse1(k);\n return function ($194) {\n return $192($193($194));\n };\n });\n },\n Functor0: function () {\n return functorCoyoneda;\n },\n Foldable1: function () {\n return foldableCoyoneda1;\n }\n };\n};\nvar traversable1Coyoneda = function (dictTraversable1) {\n var traverse1 = Data_Semigroup_Traversable.traverse1(dictTraversable1);\n var sequence1 = Data_Semigroup_Traversable.sequence1(dictTraversable1);\n var Traversable1 = dictTraversable1.Traversable1();\n var map = Data_Functor.map(Traversable1.Functor0());\n var foldable1Coyoneda1 = foldable1Coyoneda(dictTraversable1.Foldable10());\n var traversableCoyoneda1 = traversableCoyoneda(Traversable1);\n return {\n traverse1: function (dictApply) {\n var map1 = Data_Functor.map(dictApply.Functor0());\n var traverse11 = traverse1(dictApply);\n return function (f) {\n return unCoyoneda(function (k) {\n var $195 = map1(liftCoyoneda);\n var $196 = traverse11(function ($198) {\n return f(k($198));\n });\n return function ($197) {\n return $195($196($197));\n };\n });\n };\n },\n sequence1: function (dictApply) {\n var map1 = Data_Functor.map(dictApply.Functor0());\n var sequence11 = sequence1(dictApply);\n return unCoyoneda(function (k) {\n var $199 = map1(liftCoyoneda);\n var $200 = map(k);\n return function ($201) {\n return $199(sequence11($200($201)));\n };\n });\n },\n Foldable10: function () {\n return foldable1Coyoneda1;\n },\n Traversable1: function () {\n return traversableCoyoneda1;\n }\n };\n};\nvar comonadCoyoneda = function (dictComonad) {\n var extract = Control_Comonad.extract(dictComonad);\n var extendCoyoneda1 = extendCoyoneda(dictComonad.Extend0());\n return {\n extract: function (v) {\n return Data_Exists.runExists(function (v1) {\n return v1.value0(extract(v1.value1));\n })(v);\n },\n Extend0: function () {\n return extendCoyoneda1;\n }\n };\n};\nvar applyCoyoneda = function (dictApply) {\n var apply = Control_Apply.apply(dictApply);\n var lowerCoyoneda1 = lowerCoyoneda(dictApply.Functor0());\n return {\n apply: function (f) {\n return function (g) {\n return liftCoyoneda(apply(lowerCoyoneda1(f))(lowerCoyoneda1(g)));\n };\n },\n Functor0: function () {\n return functorCoyoneda;\n }\n };\n};\nvar bindCoyoneda = function (dictBind) {\n var bindFlipped = Control_Bind.bindFlipped(dictBind);\n var Apply0 = dictBind.Apply0();\n var lowerCoyoneda1 = lowerCoyoneda(Apply0.Functor0());\n var applyCoyoneda1 = applyCoyoneda(Apply0);\n return {\n bind: function (v) {\n return function (f) {\n return liftCoyoneda(Data_Exists.runExists(function (v1) {\n return bindFlipped(function ($202) {\n return lowerCoyoneda1(f(v1.value0($202)));\n })(v1.value1);\n })(v));\n };\n },\n Apply0: function () {\n return applyCoyoneda1;\n }\n };\n};\nvar applicativeCoyoneda = function (dictApplicative) {\n var applyCoyoneda1 = applyCoyoneda(dictApplicative.Apply0());\n return {\n pure: (function () {\n var $203 = Control_Applicative.pure(dictApplicative);\n return function ($204) {\n return liftCoyoneda($203($204));\n };\n })(),\n Apply0: function () {\n return applyCoyoneda1;\n }\n };\n};\nvar monadCoyoneda = function (dictMonad) {\n var applicativeCoyoneda1 = applicativeCoyoneda(dictMonad.Applicative0());\n var bindCoyoneda1 = bindCoyoneda(dictMonad.Bind1());\n return {\n Applicative0: function () {\n return applicativeCoyoneda1;\n },\n Bind1: function () {\n return bindCoyoneda1;\n }\n };\n};\nvar altCoyoneda = function (dictAlt) {\n var alt = Control_Alt.alt(dictAlt);\n var lowerCoyoneda1 = lowerCoyoneda(dictAlt.Functor0());\n return {\n alt: function (x) {\n return function (y) {\n return liftCoyoneda(alt(lowerCoyoneda1(x))(lowerCoyoneda1(y)));\n };\n },\n Functor0: function () {\n return functorCoyoneda;\n }\n };\n};\nvar plusCoyoneda = function (dictPlus) {\n var altCoyoneda1 = altCoyoneda(dictPlus.Alt0());\n return {\n empty: liftCoyoneda(Control_Plus.empty(dictPlus)),\n Alt0: function () {\n return altCoyoneda1;\n }\n };\n};\nvar alternativeCoyoneda = function (dictAlternative) {\n var applicativeCoyoneda1 = applicativeCoyoneda(dictAlternative.Applicative0());\n var plusCoyoneda1 = plusCoyoneda(dictAlternative.Plus1());\n return {\n Applicative0: function () {\n return applicativeCoyoneda1;\n },\n Plus1: function () {\n return plusCoyoneda1;\n }\n };\n};\nvar monadPlusCoyoneda = function (dictMonadPlus) {\n var monadCoyoneda1 = monadCoyoneda(dictMonadPlus.Monad0());\n var alternativeCoyoneda1 = alternativeCoyoneda(dictMonadPlus.Alternative1());\n return {\n Monad0: function () {\n return monadCoyoneda1;\n },\n Alternative1: function () {\n return alternativeCoyoneda1;\n }\n };\n};\nexport {\n Coyoneda,\n coyoneda,\n unCoyoneda,\n liftCoyoneda,\n lowerCoyoneda,\n hoistCoyoneda,\n eqCoyoneda,\n eq1Coyoneda,\n ordCoyoneda,\n ord1Coyoneda,\n functorCoyoneda,\n invatiantCoyoneda,\n applyCoyoneda,\n applicativeCoyoneda,\n altCoyoneda,\n plusCoyoneda,\n alternativeCoyoneda,\n bindCoyoneda,\n monadCoyoneda,\n monadTransCoyoneda,\n monadPlusCoyoneda,\n extendCoyoneda,\n comonadCoyoneda,\n foldableCoyoneda,\n traversableCoyoneda,\n foldable1Coyoneda,\n traversable1Coyoneda,\n distributiveCoyoneda\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_FoldableWithIndex from \"../Data.FoldableWithIndex/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Ring from \"../Data.Ring/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showInt);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar abs = /* #__PURE__ */ Data_Ord.abs(Data_Ord.ordInt)(Data_Ring.ringInt);\nvar Leaf = /* #__PURE__ */ (function () {\n function Leaf() {\n\n };\n Leaf.value = new Leaf();\n return Leaf;\n})();\nvar Node = /* #__PURE__ */ (function () {\n function Node(value0, value1, value2, value3, value4, value5) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n this.value3 = value3;\n this.value4 = value4;\n this.value5 = value5;\n };\n Node.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return function (value3) {\n return function (value4) {\n return function (value5) {\n return new Node(value0, value1, value2, value3, value4, value5);\n };\n };\n };\n };\n };\n };\n return Node;\n})();\nvar IterLeaf = /* #__PURE__ */ (function () {\n function IterLeaf() {\n\n };\n IterLeaf.value = new IterLeaf();\n return IterLeaf;\n})();\nvar IterEmit = /* #__PURE__ */ (function () {\n function IterEmit(value0, value1, value2) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n };\n IterEmit.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return new IterEmit(value0, value1, value2);\n };\n };\n };\n return IterEmit;\n})();\nvar IterNode = /* #__PURE__ */ (function () {\n function IterNode(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n IterNode.create = function (value0) {\n return function (value1) {\n return new IterNode(value0, value1);\n };\n };\n return IterNode;\n})();\nvar IterDone = /* #__PURE__ */ (function () {\n function IterDone() {\n\n };\n IterDone.value = new IterDone();\n return IterDone;\n})();\nvar IterNext = /* #__PURE__ */ (function () {\n function IterNext(value0, value1, value2) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n };\n IterNext.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return new IterNext(value0, value1, value2);\n };\n };\n };\n return IterNext;\n})();\nvar Split = /* #__PURE__ */ (function () {\n function Split(value0, value1, value2) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n };\n Split.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return new Split(value0, value1, value2);\n };\n };\n };\n return Split;\n})();\nvar SplitLast = /* #__PURE__ */ (function () {\n function SplitLast(value0, value1, value2) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n };\n SplitLast.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return new SplitLast(value0, value1, value2);\n };\n };\n };\n return SplitLast;\n})();\nvar unsafeNode = function (k, v, l, r) {\n if (l instanceof Leaf) {\n if (r instanceof Leaf) {\n return new Node(1, 1, k, v, l, r);\n };\n if (r instanceof Node) {\n return new Node(1 + r.value0 | 0, 1 + r.value1 | 0, k, v, l, r);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 680, column 5 - line 684, column 39): \" + [ r.constructor.name ]);\n };\n if (l instanceof Node) {\n if (r instanceof Leaf) {\n return new Node(1 + l.value0 | 0, 1 + l.value1 | 0, k, v, l, r);\n };\n if (r instanceof Node) {\n return new Node(1 + (function () {\n var $277 = l.value0 > r.value0;\n if ($277) {\n return l.value0;\n };\n return r.value0;\n })() | 0, (1 + l.value1 | 0) + r.value1 | 0, k, v, l, r);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 686, column 5 - line 690, column 68): \" + [ r.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 678, column 32 - line 690, column 68): \" + [ l.constructor.name ]);\n};\nvar toMapIter = /* #__PURE__ */ (function () {\n return Data_Function.flip(IterNode.create)(IterLeaf.value);\n})();\nvar stepWith = function (f) {\n return function (next) {\n return function (done) {\n var go = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v instanceof IterLeaf) {\n $tco_done = true;\n return done(Data_Unit.unit);\n };\n if (v instanceof IterEmit) {\n $tco_done = true;\n return next(v.value0, v.value1, v.value2);\n };\n if (v instanceof IterNode) {\n $copy_v = f(v.value1)(v.value0);\n return;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 918, column 8 - line 924, column 20): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n };\n return go;\n };\n };\n};\nvar size = function (v) {\n if (v instanceof Leaf) {\n return 0;\n };\n if (v instanceof Node) {\n return v.value1;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 616, column 8 - line 618, column 24): \" + [ v.constructor.name ]);\n};\nvar singleton = function (k) {\n return function (v) {\n return new Node(1, 1, k, v, Leaf.value, Leaf.value);\n };\n};\nvar unsafeBalancedNode = /* #__PURE__ */ (function () {\n var height = function (v) {\n if (v instanceof Leaf) {\n return 0;\n };\n if (v instanceof Node) {\n return v.value0;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 735, column 12 - line 737, column 26): \" + [ v.constructor.name ]);\n };\n var rotateLeft = function (k, v, l, rk, rv, rl, rr) {\n if (rl instanceof Node && rl.value0 > height(rr)) {\n return unsafeNode(rl.value2, rl.value3, unsafeNode(k, v, l, rl.value4), unsafeNode(rk, rv, rl.value5, rr));\n };\n return unsafeNode(rk, rv, unsafeNode(k, v, l, rl), rr);\n };\n var rotateRight = function (k, v, lk, lv, ll, lr, r) {\n if (lr instanceof Node && height(ll) <= lr.value0) {\n return unsafeNode(lr.value2, lr.value3, unsafeNode(lk, lv, ll, lr.value4), unsafeNode(k, v, lr.value5, r));\n };\n return unsafeNode(lk, lv, ll, unsafeNode(k, v, lr, r));\n };\n return function (k, v, l, r) {\n if (l instanceof Leaf) {\n if (r instanceof Leaf) {\n return singleton(k)(v);\n };\n if (r instanceof Node && r.value0 > 1) {\n return rotateLeft(k, v, l, r.value2, r.value3, r.value4, r.value5);\n };\n return unsafeNode(k, v, l, r);\n };\n if (l instanceof Node) {\n if (r instanceof Node) {\n if (r.value0 > (l.value0 + 1 | 0)) {\n return rotateLeft(k, v, l, r.value2, r.value3, r.value4, r.value5);\n };\n if (l.value0 > (r.value0 + 1 | 0)) {\n return rotateRight(k, v, l.value2, l.value3, l.value4, l.value5, r);\n };\n };\n if (r instanceof Leaf && l.value0 > 1) {\n return rotateRight(k, v, l.value2, l.value3, l.value4, l.value5, r);\n };\n return unsafeNode(k, v, l, r);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 695, column 40 - line 716, column 34): \" + [ l.constructor.name ]);\n };\n})();\nvar $lazy_unsafeSplit = /* #__PURE__ */ $runtime_lazy(\"unsafeSplit\", \"Data.Map.Internal\", function () {\n return function (comp, k, m) {\n if (m instanceof Leaf) {\n return new Split(Data_Maybe.Nothing.value, Leaf.value, Leaf.value);\n };\n if (m instanceof Node) {\n var v = comp(k)(m.value2);\n if (v instanceof Data_Ordering.LT) {\n var v1 = $lazy_unsafeSplit(771)(comp, k, m.value4);\n return new Split(v1.value0, v1.value1, unsafeBalancedNode(m.value2, m.value3, v1.value2, m.value5));\n };\n if (v instanceof Data_Ordering.GT) {\n var v1 = $lazy_unsafeSplit(774)(comp, k, m.value5);\n return new Split(v1.value0, unsafeBalancedNode(m.value2, m.value3, m.value4, v1.value1), v1.value2);\n };\n if (v instanceof Data_Ordering.EQ) {\n return new Split(new Data_Maybe.Just(m.value3), m.value4, m.value5);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 769, column 5 - line 777, column 30): \" + [ v.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 765, column 34 - line 777, column 30): \" + [ m.constructor.name ]);\n };\n});\nvar unsafeSplit = /* #__PURE__ */ $lazy_unsafeSplit(764);\nvar $lazy_unsafeSplitLast = /* #__PURE__ */ $runtime_lazy(\"unsafeSplitLast\", \"Data.Map.Internal\", function () {\n return function (k, v, l, r) {\n if (r instanceof Leaf) {\n return new SplitLast(k, v, l);\n };\n if (r instanceof Node) {\n var v1 = $lazy_unsafeSplitLast(757)(r.value2, r.value3, r.value4, r.value5);\n return new SplitLast(v1.value0, v1.value1, unsafeBalancedNode(k, v, l, v1.value2));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 754, column 37 - line 758, column 57): \" + [ r.constructor.name ]);\n };\n});\nvar unsafeSplitLast = /* #__PURE__ */ $lazy_unsafeSplitLast(753);\nvar unsafeJoinNodes = function (v, v1) {\n if (v instanceof Leaf) {\n return v1;\n };\n if (v instanceof Node) {\n var v2 = unsafeSplitLast(v.value2, v.value3, v.value4, v.value5);\n return unsafeBalancedNode(v2.value0, v2.value1, v2.value2, v1);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 742, column 25 - line 746, column 38): \" + [ v.constructor.name, v1.constructor.name ]);\n};\nvar $lazy_unsafeDifference = /* #__PURE__ */ $runtime_lazy(\"unsafeDifference\", \"Data.Map.Internal\", function () {\n return function (comp, l, r) {\n if (l instanceof Leaf) {\n return Leaf.value;\n };\n if (r instanceof Leaf) {\n return l;\n };\n if (r instanceof Node) {\n var v = unsafeSplit(comp, r.value2, l);\n var l$prime = $lazy_unsafeDifference(819)(comp, v.value1, r.value4);\n var r$prime = $lazy_unsafeDifference(820)(comp, v.value2, r.value5);\n return unsafeJoinNodes(l$prime, r$prime);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 814, column 39 - line 821, column 33): \" + [ l.constructor.name, r.constructor.name ]);\n };\n});\nvar unsafeDifference = /* #__PURE__ */ $lazy_unsafeDifference(813);\nvar $lazy_unsafeIntersectionWith = /* #__PURE__ */ $runtime_lazy(\"unsafeIntersectionWith\", \"Data.Map.Internal\", function () {\n return function (comp, app, l, r) {\n if (l instanceof Leaf) {\n return Leaf.value;\n };\n if (r instanceof Leaf) {\n return Leaf.value;\n };\n if (r instanceof Node) {\n var v = unsafeSplit(comp, r.value2, l);\n var l$prime = $lazy_unsafeIntersectionWith(803)(comp, app, v.value1, r.value4);\n var r$prime = $lazy_unsafeIntersectionWith(804)(comp, app, v.value2, r.value5);\n if (v.value0 instanceof Data_Maybe.Just) {\n return unsafeBalancedNode(r.value2, app(v.value0.value0)(r.value3), l$prime, r$prime);\n };\n if (v.value0 instanceof Data_Maybe.Nothing) {\n return unsafeJoinNodes(l$prime, r$prime);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 805, column 5 - line 809, column 37): \" + [ v.value0.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 798, column 49 - line 809, column 37): \" + [ l.constructor.name, r.constructor.name ]);\n };\n});\nvar unsafeIntersectionWith = /* #__PURE__ */ $lazy_unsafeIntersectionWith(797);\nvar $lazy_unsafeUnionWith = /* #__PURE__ */ $runtime_lazy(\"unsafeUnionWith\", \"Data.Map.Internal\", function () {\n return function (comp, app, l, r) {\n if (l instanceof Leaf) {\n return r;\n };\n if (r instanceof Leaf) {\n return l;\n };\n if (r instanceof Node) {\n var v = unsafeSplit(comp, r.value2, l);\n var l$prime = $lazy_unsafeUnionWith(787)(comp, app, v.value1, r.value4);\n var r$prime = $lazy_unsafeUnionWith(788)(comp, app, v.value2, r.value5);\n if (v.value0 instanceof Data_Maybe.Just) {\n return unsafeBalancedNode(r.value2, app(v.value0.value0)(r.value3), l$prime, r$prime);\n };\n if (v.value0 instanceof Data_Maybe.Nothing) {\n return unsafeBalancedNode(r.value2, r.value3, l$prime, r$prime);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 789, column 5 - line 793, column 46): \" + [ v.value0.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 782, column 42 - line 793, column 46): \" + [ l.constructor.name, r.constructor.name ]);\n };\n});\nvar unsafeUnionWith = /* #__PURE__ */ $lazy_unsafeUnionWith(781);\nvar unionWith = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (app) {\n return function (m1) {\n return function (m2) {\n return unsafeUnionWith(compare, app, m1, m2);\n };\n };\n };\n};\nvar union = function (dictOrd) {\n return unionWith(dictOrd)(Data_Function[\"const\"]);\n};\nvar update = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (f) {\n return function (k) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Leaf.value;\n };\n if (v instanceof Node) {\n var v1 = compare(k)(v.value2);\n if (v1 instanceof Data_Ordering.LT) {\n return unsafeBalancedNode(v.value2, v.value3, go(v.value4), v.value5);\n };\n if (v1 instanceof Data_Ordering.GT) {\n return unsafeBalancedNode(v.value2, v.value3, v.value4, go(v.value5));\n };\n if (v1 instanceof Data_Ordering.EQ) {\n var v2 = f(v.value3);\n if (v2 instanceof Data_Maybe.Nothing) {\n return unsafeJoinNodes(v.value4, v.value5);\n };\n if (v2 instanceof Data_Maybe.Just) {\n return new Node(v.value0, v.value1, v.value2, v2.value0, v.value4, v.value5);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 529, column 11 - line 533, column 38): \" + [ v2.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 525, column 7 - line 533, column 38): \" + [ v1.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 522, column 8 - line 533, column 38): \" + [ v.constructor.name ]);\n };\n return go;\n };\n };\n};\nvar showTree = function (dictShow) {\n var show1 = Data_Show.show(dictShow);\n return function (dictShow1) {\n var show2 = Data_Show.show(dictShow1);\n var go = function (ind) {\n return function (v) {\n if (v instanceof Leaf) {\n return ind + \"Leaf\";\n };\n if (v instanceof Node) {\n return ind + (\"[\" + (show(v.value0) + (\"] \" + (show1(v.value2) + (\" => \" + (show2(v.value3) + \"\\x0a\")))))) + (go(ind + \" \")(v.value4) + \"\\x0a\" + go(ind + \" \")(v.value5));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 231, column 12 - line 236, column 34): \" + [ v.constructor.name ]);\n };\n };\n return go(\"\");\n };\n};\nvar semigroupMap = function () {\n return function (dictOrd) {\n var unionWith1 = unionWith(dictOrd);\n return function (dictSemigroup) {\n return {\n append: unionWith1(Data_Semigroup.append(dictSemigroup))\n };\n };\n };\n};\nvar semigroupMap1 = /* #__PURE__ */ semigroupMap();\nvar pop = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (k) {\n return function (m) {\n var v = unsafeSplit(compare, k, m);\n return map(function (a) {\n return new Data_Tuple.Tuple(a, unsafeJoinNodes(v.value1, v.value2));\n })(v.value0);\n };\n };\n};\nvar member = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (k) {\n var go = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v instanceof Leaf) {\n $tco_done = true;\n return false;\n };\n if (v instanceof Node) {\n var v1 = compare(k)(v.value2);\n if (v1 instanceof Data_Ordering.LT) {\n $copy_v = v.value4;\n return;\n };\n if (v1 instanceof Data_Ordering.GT) {\n $copy_v = v.value5;\n return;\n };\n if (v1 instanceof Data_Ordering.EQ) {\n $tco_done = true;\n return true;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 457, column 7 - line 460, column 19): \" + [ v1.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 454, column 8 - line 460, column 19): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n };\n return go;\n };\n};\nvar mapMaybeWithKey = function (dictOrd) {\n return function (f) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Leaf.value;\n };\n if (v instanceof Node) {\n var v2 = f(v.value2)(v.value3);\n if (v2 instanceof Data_Maybe.Just) {\n return unsafeBalancedNode(v.value2, v2.value0, go(v.value4), go(v.value5));\n };\n if (v2 instanceof Data_Maybe.Nothing) {\n return unsafeJoinNodes(go(v.value4), go(v.value5));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 659, column 7 - line 663, column 47): \" + [ v2.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 656, column 8 - line 663, column 47): \" + [ v.constructor.name ]);\n };\n return go;\n };\n};\nvar mapMaybe = function (dictOrd) {\n var $763 = mapMaybeWithKey(dictOrd);\n return function ($764) {\n return $763(Data_Function[\"const\"]($764));\n };\n};\nvar lookupLE = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (k) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Node) {\n var v1 = compare(k)(v.value2);\n if (v1 instanceof Data_Ordering.LT) {\n return go(v.value4);\n };\n if (v1 instanceof Data_Ordering.GT) {\n var v2 = go(v.value5);\n if (v2 instanceof Data_Maybe.Nothing) {\n return new Data_Maybe.Just({\n key: v.value2,\n value: v.value3\n });\n };\n return v2;\n };\n if (v1 instanceof Data_Ordering.EQ) {\n return new Data_Maybe.Just({\n key: v.value2,\n value: v.value3\n });\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 293, column 7 - line 300, column 38): \" + [ v1.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 290, column 8 - line 300, column 38): \" + [ v.constructor.name ]);\n };\n return go;\n };\n};\nvar lookupGE = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (k) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Node) {\n var v1 = compare(k)(v.value2);\n if (v1 instanceof Data_Ordering.LT) {\n var v2 = go(v.value4);\n if (v2 instanceof Data_Maybe.Nothing) {\n return new Data_Maybe.Just({\n key: v.value2,\n value: v.value3\n });\n };\n return v2;\n };\n if (v1 instanceof Data_Ordering.GT) {\n return go(v.value5);\n };\n if (v1 instanceof Data_Ordering.EQ) {\n return new Data_Maybe.Just({\n key: v.value2,\n value: v.value3\n });\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 325, column 7 - line 331, column 42): \" + [ v1.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 322, column 8 - line 331, column 42): \" + [ v.constructor.name ]);\n };\n return go;\n };\n};\nvar lookup = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (k) {\n var go = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v instanceof Leaf) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Node) {\n var v1 = compare(k)(v.value2);\n if (v1 instanceof Data_Ordering.LT) {\n $copy_v = v.value4;\n return;\n };\n if (v1 instanceof Data_Ordering.GT) {\n $copy_v = v.value5;\n return;\n };\n if (v1 instanceof Data_Ordering.EQ) {\n $tco_done = true;\n return new Data_Maybe.Just(v.value3);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 281, column 7 - line 284, column 22): \" + [ v1.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 278, column 8 - line 284, column 22): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n };\n return go;\n };\n};\nvar iterMapU = function (iter) {\n return function (v) {\n if (v instanceof Leaf) {\n return iter;\n };\n if (v instanceof Node) {\n if (v.value4 instanceof Leaf) {\n if (v.value5 instanceof Leaf) {\n return new IterEmit(v.value2, v.value3, iter);\n };\n return new IterEmit(v.value2, v.value3, new IterNode(v.value5, iter));\n };\n if (v.value5 instanceof Leaf) {\n return new IterEmit(v.value2, v.value3, new IterNode(v.value4, iter));\n };\n return new IterEmit(v.value2, v.value3, new IterNode(v.value4, new IterNode(v.value5, iter)));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 951, column 17 - line 966, column 56): \" + [ v.constructor.name ]);\n };\n};\nvar stepUnorderedCps = /* #__PURE__ */ stepWith(iterMapU);\nvar stepUnfoldrUnordered = /* #__PURE__ */ (function () {\n var step = function (k, v, next) {\n return new Data_Maybe.Just(new Data_Tuple.Tuple(new Data_Tuple.Tuple(k, v), next));\n };\n return stepUnorderedCps(step)(function (v) {\n return Data_Maybe.Nothing.value;\n });\n})();\nvar toUnfoldableUnordered = function (dictUnfoldable) {\n var $765 = Data_Unfoldable.unfoldr(dictUnfoldable)(stepUnfoldrUnordered);\n return function ($766) {\n return $765(toMapIter($766));\n };\n};\nvar stepUnordered = /* #__PURE__ */ (function () {\n return stepUnorderedCps(function (k, v, next) {\n return new IterNext(k, v, next);\n })(Data_Function[\"const\"](IterDone.value));\n})();\nvar iterMapR = /* #__PURE__ */ (function () {\n var go = function ($copy_iter) {\n return function ($copy_v) {\n var $tco_var_iter = $copy_iter;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(iter, v) {\n if (v instanceof Leaf) {\n $tco_done = true;\n return iter;\n };\n if (v instanceof Node) {\n if (v.value5 instanceof Leaf) {\n $tco_var_iter = new IterEmit(v.value2, v.value3, iter);\n $copy_v = v.value4;\n return;\n };\n $tco_var_iter = new IterEmit(v.value2, v.value3, new IterNode(v.value4, iter));\n $copy_v = v.value5;\n return;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 941, column 13 - line 948, column 48): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_iter, $copy_v);\n };\n return $tco_result;\n };\n };\n return go;\n})();\nvar stepDescCps = /* #__PURE__ */ stepWith(iterMapR);\nvar stepDesc = /* #__PURE__ */ (function () {\n return stepDescCps(function (k, v, next) {\n return new IterNext(k, v, next);\n })(Data_Function[\"const\"](IterDone.value));\n})();\nvar iterMapL = /* #__PURE__ */ (function () {\n var go = function ($copy_iter) {\n return function ($copy_v) {\n var $tco_var_iter = $copy_iter;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(iter, v) {\n if (v instanceof Leaf) {\n $tco_done = true;\n return iter;\n };\n if (v instanceof Node) {\n if (v.value5 instanceof Leaf) {\n $tco_var_iter = new IterEmit(v.value2, v.value3, iter);\n $copy_v = v.value4;\n return;\n };\n $tco_var_iter = new IterEmit(v.value2, v.value3, new IterNode(v.value5, iter));\n $copy_v = v.value4;\n return;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 929, column 13 - line 936, column 48): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_iter, $copy_v);\n };\n return $tco_result;\n };\n };\n return go;\n})();\nvar stepAscCps = /* #__PURE__ */ stepWith(iterMapL);\nvar stepAsc = /* #__PURE__ */ (function () {\n return stepAscCps(function (k, v, next) {\n return new IterNext(k, v, next);\n })(Data_Function[\"const\"](IterDone.value));\n})();\nvar eqMapIter = function (dictEq) {\n var eq1 = Data_Eq.eq(dictEq);\n return function (dictEq1) {\n var eq2 = Data_Eq.eq(dictEq1);\n return {\n eq: (function () {\n var go = function ($copy_a) {\n return function ($copy_b) {\n var $tco_var_a = $copy_a;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(a, b) {\n var v = stepAsc(a);\n if (v instanceof IterNext) {\n var v2 = stepAsc(b);\n if (v2 instanceof IterNext && (eq1(v.value0)(v2.value0) && eq2(v.value1)(v2.value1))) {\n $tco_var_a = v.value2;\n $copy_b = v2.value2;\n return;\n };\n $tco_done = true;\n return false;\n };\n if (v instanceof IterDone) {\n $tco_done = true;\n return true;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 837, column 14 - line 846, column 13): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_a, $copy_b);\n };\n return $tco_result;\n };\n };\n return go;\n })()\n };\n };\n};\nvar ordMapIter = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n var eqMapIter1 = eqMapIter(dictOrd.Eq0());\n return function (dictOrd1) {\n var compare1 = Data_Ord.compare(dictOrd1);\n var eqMapIter2 = eqMapIter1(dictOrd1.Eq0());\n return {\n compare: (function () {\n var go = function ($copy_a) {\n return function ($copy_b) {\n var $tco_var_a = $copy_a;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(a, b) {\n var v = stepAsc(b);\n var v1 = stepAsc(a);\n if (v1 instanceof IterNext && v instanceof IterNext) {\n var v3 = compare(v1.value0)(v.value0);\n if (v3 instanceof Data_Ordering.EQ) {\n var v4 = compare1(v1.value1)(v.value1);\n if (v4 instanceof Data_Ordering.EQ) {\n $tco_var_a = v1.value2;\n $copy_b = v.value2;\n return;\n };\n $tco_done = true;\n return v4;\n };\n $tco_done = true;\n return v3;\n };\n if (v1 instanceof IterDone) {\n if (v instanceof IterDone) {\n $tco_done = true;\n return Data_Ordering.EQ.value;\n };\n $tco_done = true;\n return Data_Ordering.LT.value;\n };\n if (v instanceof IterDone) {\n $tco_done = true;\n return Data_Ordering.GT.value;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 851, column 14 - line 869, column 11): \" + [ v1.constructor.name, v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_a, $copy_b);\n };\n return $tco_result;\n };\n };\n return go;\n })(),\n Eq0: function () {\n return eqMapIter2;\n }\n };\n };\n};\nvar stepUnfoldr = /* #__PURE__ */ (function () {\n var step = function (k, v, next) {\n return new Data_Maybe.Just(new Data_Tuple.Tuple(new Data_Tuple.Tuple(k, v), next));\n };\n return stepAscCps(step)(function (v) {\n return Data_Maybe.Nothing.value;\n });\n})();\nvar toUnfoldable = function (dictUnfoldable) {\n var $767 = Data_Unfoldable.unfoldr(dictUnfoldable)(stepUnfoldr);\n return function ($768) {\n return $767(toMapIter($768));\n };\n};\nvar toUnfoldable1 = /* #__PURE__ */ toUnfoldable(Data_Unfoldable.unfoldableArray);\nvar showMap = function (dictShow) {\n var showTuple = Data_Tuple.showTuple(dictShow);\n return function (dictShow1) {\n var show1 = Data_Show.show(Data_Show.showArray(showTuple(dictShow1)));\n return {\n show: function (as) {\n return \"(fromFoldable \" + (show1(toUnfoldable1(as)) + \")\");\n }\n };\n };\n};\nvar isSubmap = function (dictOrd) {\n var lookup1 = lookup(dictOrd);\n return function (dictEq) {\n var eq1 = Data_Eq.eq(dictEq);\n var go = function (m1) {\n return function (m2) {\n if (m1 instanceof Leaf) {\n return true;\n };\n if (m1 instanceof Node) {\n var v1 = lookup1(m1.value2)(m2);\n if (v1 instanceof Data_Maybe.Nothing) {\n return false;\n };\n if (v1 instanceof Data_Maybe.Just) {\n return eq1(m1.value3)(v1.value0) && (go(m1.value4)(m2) && go(m1.value5)(m2));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 609, column 7 - line 612, column 40): \" + [ v1.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 606, column 14 - line 612, column 40): \" + [ m1.constructor.name ]);\n };\n };\n return go;\n };\n};\nvar isEmpty = function (v) {\n if (v instanceof Leaf) {\n return true;\n };\n return false;\n};\nvar intersectionWith = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (app) {\n return function (m1) {\n return function (m2) {\n return unsafeIntersectionWith(compare, app, m1, m2);\n };\n };\n };\n};\nvar intersection = function (dictOrd) {\n return intersectionWith(dictOrd)(Data_Function[\"const\"]);\n};\nvar insertWith = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (app) {\n return function (k) {\n return function (v) {\n var go = function (v1) {\n if (v1 instanceof Leaf) {\n return singleton(k)(v);\n };\n if (v1 instanceof Node) {\n var v2 = compare(k)(v1.value2);\n if (v2 instanceof Data_Ordering.LT) {\n return unsafeBalancedNode(v1.value2, v1.value3, go(v1.value4), v1.value5);\n };\n if (v2 instanceof Data_Ordering.GT) {\n return unsafeBalancedNode(v1.value2, v1.value3, v1.value4, go(v1.value5));\n };\n if (v2 instanceof Data_Ordering.EQ) {\n return new Node(v1.value0, v1.value1, k, app(v1.value3)(v), v1.value4, v1.value5);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 484, column 7 - line 487, column 44): \" + [ v2.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 481, column 8 - line 487, column 44): \" + [ v1.constructor.name ]);\n };\n return go;\n };\n };\n };\n};\nvar insert = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (k) {\n return function (v) {\n var go = function (v1) {\n if (v1 instanceof Leaf) {\n return singleton(k)(v);\n };\n if (v1 instanceof Node) {\n var v2 = compare(k)(v1.value2);\n if (v2 instanceof Data_Ordering.LT) {\n return unsafeBalancedNode(v1.value2, v1.value3, go(v1.value4), v1.value5);\n };\n if (v2 instanceof Data_Ordering.GT) {\n return unsafeBalancedNode(v1.value2, v1.value3, v1.value4, go(v1.value5));\n };\n if (v2 instanceof Data_Ordering.EQ) {\n return new Node(v1.value0, v1.value1, k, v, v1.value4, v1.value5);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 469, column 7 - line 472, column 35): \" + [ v2.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 466, column 8 - line 472, column 35): \" + [ v1.constructor.name ]);\n };\n return go;\n };\n };\n};\nvar functorMap = {\n map: function (f) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Leaf.value;\n };\n if (v instanceof Node) {\n return new Node(v.value0, v.value1, v.value2, f(v.value3), go(v.value4), go(v.value5));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 145, column 10 - line 148, column 39): \" + [ v.constructor.name ]);\n };\n return go;\n }\n};\nvar functorWithIndexMap = {\n mapWithIndex: function (f) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Leaf.value;\n };\n if (v instanceof Node) {\n return new Node(v.value0, v.value1, v.value2, f(v.value2)(v.value3), go(v.value4), go(v.value5));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 153, column 10 - line 156, column 41): \" + [ v.constructor.name ]);\n };\n return go;\n },\n Functor0: function () {\n return functorMap;\n }\n};\nvar foldableMap = {\n foldr: function (f) {\n return function (z) {\n var $lazy_go = $runtime_lazy(\"go\", \"Data.Map.Internal\", function () {\n return function (m$prime, z$prime) {\n if (m$prime instanceof Leaf) {\n return z$prime;\n };\n if (m$prime instanceof Node) {\n return $lazy_go(170)(m$prime.value4, f(m$prime.value3)($lazy_go(170)(m$prime.value5, z$prime)));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 167, column 26 - line 170, column 43): \" + [ m$prime.constructor.name ]);\n };\n });\n var go = $lazy_go(167);\n return function (m) {\n return go(m, z);\n };\n };\n },\n foldl: function (f) {\n return function (z) {\n var $lazy_go = $runtime_lazy(\"go\", \"Data.Map.Internal\", function () {\n return function (z$prime, m$prime) {\n if (m$prime instanceof Leaf) {\n return z$prime;\n };\n if (m$prime instanceof Node) {\n return $lazy_go(176)(f($lazy_go(176)(z$prime, m$prime.value4))(m$prime.value3), m$prime.value5);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 173, column 26 - line 176, column 43): \" + [ m$prime.constructor.name ]);\n };\n });\n var go = $lazy_go(173);\n return function (m) {\n return go(z, m);\n };\n };\n },\n foldMap: function (dictMonoid) {\n var mempty = Data_Monoid.mempty(dictMonoid);\n var append1 = Data_Semigroup.append(dictMonoid.Semigroup0());\n return function (f) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return mempty;\n };\n if (v instanceof Node) {\n return append1(go(v.value4))(append1(f(v.value3))(go(v.value5)));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 179, column 10 - line 182, column 28): \" + [ v.constructor.name ]);\n };\n return go;\n };\n }\n};\nvar foldableWithIndexMap = {\n foldrWithIndex: function (f) {\n return function (z) {\n var $lazy_go = $runtime_lazy(\"go\", \"Data.Map.Internal\", function () {\n return function (m$prime, z$prime) {\n if (m$prime instanceof Leaf) {\n return z$prime;\n };\n if (m$prime instanceof Node) {\n return $lazy_go(190)(m$prime.value4, f(m$prime.value2)(m$prime.value3)($lazy_go(190)(m$prime.value5, z$prime)));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 187, column 26 - line 190, column 45): \" + [ m$prime.constructor.name ]);\n };\n });\n var go = $lazy_go(187);\n return function (m) {\n return go(m, z);\n };\n };\n },\n foldlWithIndex: function (f) {\n return function (z) {\n var $lazy_go = $runtime_lazy(\"go\", \"Data.Map.Internal\", function () {\n return function (z$prime, m$prime) {\n if (m$prime instanceof Leaf) {\n return z$prime;\n };\n if (m$prime instanceof Node) {\n return $lazy_go(196)(f(m$prime.value2)($lazy_go(196)(z$prime, m$prime.value4))(m$prime.value3), m$prime.value5);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 193, column 26 - line 196, column 45): \" + [ m$prime.constructor.name ]);\n };\n });\n var go = $lazy_go(193);\n return function (m) {\n return go(z, m);\n };\n };\n },\n foldMapWithIndex: function (dictMonoid) {\n var mempty = Data_Monoid.mempty(dictMonoid);\n var append1 = Data_Semigroup.append(dictMonoid.Semigroup0());\n return function (f) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return mempty;\n };\n if (v instanceof Node) {\n return append1(go(v.value4))(append1(f(v.value2)(v.value3))(go(v.value5)));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 199, column 10 - line 202, column 30): \" + [ v.constructor.name ]);\n };\n return go;\n };\n },\n Foldable0: function () {\n return foldableMap;\n }\n};\nvar keys = /* #__PURE__ */ (function () {\n return Data_FoldableWithIndex.foldrWithIndex(foldableWithIndexMap)(function (k) {\n return function (v) {\n return function (acc) {\n return new Data_List_Types.Cons(k, acc);\n };\n };\n })(Data_List_Types.Nil.value);\n})();\nvar traversableMap = {\n traverse: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n var Apply0 = dictApplicative.Apply0();\n var apply = Control_Apply.apply(Apply0);\n var map1 = Data_Functor.map(Apply0.Functor0());\n return function (f) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return pure(Leaf.value);\n };\n if (v instanceof Node) {\n return apply(apply(map1(function (l$prime) {\n return function (v$prime) {\n return function (r$prime) {\n return new Node(v.value0, v.value1, v.value2, v$prime, l$prime, r$prime);\n };\n };\n })(go(v.value4)))(f(v.value3)))(go(v.value5));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 207, column 10 - line 213, column 19): \" + [ v.constructor.name ]);\n };\n return go;\n };\n },\n sequence: function (dictApplicative) {\n return Data_Traversable.traverse(traversableMap)(dictApplicative)(identity);\n },\n Functor0: function () {\n return functorMap;\n },\n Foldable1: function () {\n return foldableMap;\n }\n};\nvar traversableWithIndexMap = {\n traverseWithIndex: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n var Apply0 = dictApplicative.Apply0();\n var apply = Control_Apply.apply(Apply0);\n var map1 = Data_Functor.map(Apply0.Functor0());\n return function (f) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return pure(Leaf.value);\n };\n if (v instanceof Node) {\n return apply(apply(map1(function (l$prime) {\n return function (v$prime) {\n return function (r$prime) {\n return new Node(v.value0, v.value1, v.value2, v$prime, l$prime, r$prime);\n };\n };\n })(go(v.value4)))(f(v.value2)(v.value3)))(go(v.value5));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 219, column 10 - line 225, column 19): \" + [ v.constructor.name ]);\n };\n return go;\n };\n },\n FunctorWithIndex0: function () {\n return functorWithIndexMap;\n },\n FoldableWithIndex1: function () {\n return foldableWithIndexMap;\n },\n Traversable2: function () {\n return traversableMap;\n }\n};\nvar values = /* #__PURE__ */ (function () {\n return Data_Foldable.foldr(foldableMap)(Data_List_Types.Cons.create)(Data_List_Types.Nil.value);\n})();\nvar foldSubmapBy = function (dictOrd) {\n var lessThan1 = Data_Ord.lessThan(dictOrd);\n var greaterThan1 = Data_Ord.greaterThan(dictOrd);\n var lessThanOrEq1 = Data_Ord.lessThanOrEq(dictOrd);\n return function (appendFn) {\n return function (memptyValue) {\n return function (kmin) {\n return function (kmax) {\n return function (f) {\n var tooSmall = (function () {\n if (kmin instanceof Data_Maybe.Just) {\n return function (k) {\n return lessThan1(k)(kmin.value0);\n };\n };\n if (kmin instanceof Data_Maybe.Nothing) {\n return Data_Function[\"const\"](false);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 387, column 7 - line 391, column 22): \" + [ kmin.constructor.name ]);\n })();\n var tooLarge = (function () {\n if (kmax instanceof Data_Maybe.Just) {\n return function (k) {\n return greaterThan1(k)(kmax.value0);\n };\n };\n if (kmax instanceof Data_Maybe.Nothing) {\n return Data_Function[\"const\"](false);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 394, column 7 - line 398, column 22): \" + [ kmax.constructor.name ]);\n })();\n var inBounds = (function () {\n if (kmin instanceof Data_Maybe.Just && kmax instanceof Data_Maybe.Just) {\n return function (k) {\n return lessThanOrEq1(kmin.value0)(k) && lessThanOrEq1(k)(kmax.value0);\n };\n };\n if (kmin instanceof Data_Maybe.Just && kmax instanceof Data_Maybe.Nothing) {\n return function (k) {\n return lessThanOrEq1(kmin.value0)(k);\n };\n };\n if (kmin instanceof Data_Maybe.Nothing && kmax instanceof Data_Maybe.Just) {\n return function (k) {\n return lessThanOrEq1(k)(kmax.value0);\n };\n };\n if (kmin instanceof Data_Maybe.Nothing && kmax instanceof Data_Maybe.Nothing) {\n return Data_Function[\"const\"](true);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 401, column 7 - line 409, column 21): \" + [ kmin.constructor.name, kmax.constructor.name ]);\n })();\n var go = function (v) {\n if (v instanceof Leaf) {\n return memptyValue;\n };\n if (v instanceof Node) {\n return appendFn(appendFn((function () {\n var $640 = tooSmall(v.value2);\n if ($640) {\n return memptyValue;\n };\n return go(v.value4);\n })())((function () {\n var $641 = inBounds(v.value2);\n if ($641) {\n return f(v.value2)(v.value3);\n };\n return memptyValue;\n })()))((function () {\n var $642 = tooLarge(v.value2);\n if ($642) {\n return memptyValue;\n };\n return go(v.value5);\n })());\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 411, column 10 - line 417, column 66): \" + [ v.constructor.name ]);\n };\n return go;\n };\n };\n };\n };\n };\n};\nvar foldSubmap = function (dictOrd) {\n var foldSubmapBy1 = foldSubmapBy(dictOrd);\n return function (dictMonoid) {\n return foldSubmapBy1(Data_Semigroup.append(dictMonoid.Semigroup0()))(Data_Monoid.mempty(dictMonoid));\n };\n};\nvar findMin = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v instanceof Leaf) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Node) {\n if (v.value4 instanceof Leaf) {\n $tco_done = true;\n return new Data_Maybe.Just({\n key: v.value2,\n value: v.value3\n });\n };\n $copy_v = v.value4;\n return;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 359, column 11 - line 364, column 21): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n};\nvar lookupGT = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (k) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Node) {\n var v1 = compare(k)(v.value2);\n if (v1 instanceof Data_Ordering.LT) {\n var v2 = go(v.value4);\n if (v2 instanceof Data_Maybe.Nothing) {\n return new Data_Maybe.Just({\n key: v.value2,\n value: v.value3\n });\n };\n return v2;\n };\n if (v1 instanceof Data_Ordering.GT) {\n return go(v.value5);\n };\n if (v1 instanceof Data_Ordering.EQ) {\n return findMin(v.value5);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 340, column 7 - line 346, column 25): \" + [ v1.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 337, column 8 - line 346, column 25): \" + [ v.constructor.name ]);\n };\n return go;\n };\n};\nvar findMax = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v instanceof Leaf) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Node) {\n if (v.value5 instanceof Leaf) {\n $tco_done = true;\n return new Data_Maybe.Just({\n key: v.value2,\n value: v.value3\n });\n };\n $copy_v = v.value5;\n return;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 350, column 11 - line 355, column 21): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n};\nvar lookupLT = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (k) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof Node) {\n var v1 = compare(k)(v.value2);\n if (v1 instanceof Data_Ordering.LT) {\n return go(v.value4);\n };\n if (v1 instanceof Data_Ordering.GT) {\n var v2 = go(v.value5);\n if (v2 instanceof Data_Maybe.Nothing) {\n return new Data_Maybe.Just({\n key: v.value2,\n value: v.value3\n });\n };\n return v2;\n };\n if (v1 instanceof Data_Ordering.EQ) {\n return findMax(v.value4);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 309, column 7 - line 316, column 21): \" + [ v1.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 306, column 8 - line 316, column 21): \" + [ v.constructor.name ]);\n };\n return go;\n };\n};\nvar filterWithKey = function (dictOrd) {\n return function (f) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Leaf.value;\n };\n if (v instanceof Node) {\n if (f(v.value2)(v.value3)) {\n return unsafeBalancedNode(v.value2, v.value3, go(v.value4), go(v.value5));\n };\n if (Data_Boolean.otherwise) {\n return unsafeJoinNodes(go(v.value4), go(v.value5));\n };\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 625, column 8 - line 631, column 47): \" + [ v.constructor.name ]);\n };\n return go;\n };\n};\nvar filterKeys = function (dictOrd) {\n return function (f) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Leaf.value;\n };\n if (v instanceof Node) {\n if (f(v.value2)) {\n return unsafeBalancedNode(v.value2, v.value3, go(v.value4), go(v.value5));\n };\n if (Data_Boolean.otherwise) {\n return unsafeJoinNodes(go(v.value4), go(v.value5));\n };\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 638, column 8 - line 644, column 47): \" + [ v.constructor.name ]);\n };\n return go;\n };\n};\nvar filter = function (dictOrd) {\n var $769 = filterWithKey(dictOrd);\n return function ($770) {\n return $769(Data_Function[\"const\"]($770));\n };\n};\nvar eqMap = function (dictEq) {\n var eqMapIter1 = eqMapIter(dictEq);\n return function (dictEq1) {\n var eq1 = Data_Eq.eq(eqMapIter1(dictEq1));\n return {\n eq: function (xs) {\n return function (ys) {\n if (xs instanceof Leaf) {\n if (ys instanceof Leaf) {\n return true;\n };\n return false;\n };\n if (xs instanceof Node) {\n if (ys instanceof Node && xs.value1 === ys.value1) {\n return eq1(toMapIter(xs))(toMapIter(ys));\n };\n return false;\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 92, column 14 - line 103, column 16): \" + [ xs.constructor.name ]);\n };\n }\n };\n };\n};\nvar ordMap = function (dictOrd) {\n var ordMapIter1 = ordMapIter(dictOrd);\n var eqMap1 = eqMap(dictOrd.Eq0());\n return function (dictOrd1) {\n var compare = Data_Ord.compare(ordMapIter1(dictOrd1));\n var eqMap2 = eqMap1(dictOrd1.Eq0());\n return {\n compare: function (xs) {\n return function (ys) {\n if (xs instanceof Leaf) {\n if (ys instanceof Leaf) {\n return Data_Ordering.EQ.value;\n };\n return Data_Ordering.LT.value;\n };\n if (ys instanceof Leaf) {\n return Data_Ordering.GT.value;\n };\n return compare(toMapIter(xs))(toMapIter(ys));\n };\n },\n Eq0: function () {\n return eqMap2;\n }\n };\n };\n};\nvar eq1Map = function (dictEq) {\n var eqMap1 = eqMap(dictEq);\n return {\n eq1: function (dictEq1) {\n return Data_Eq.eq(eqMap1(dictEq1));\n }\n };\n};\nvar ord1Map = function (dictOrd) {\n var ordMap1 = ordMap(dictOrd);\n var eq1Map1 = eq1Map(dictOrd.Eq0());\n return {\n compare1: function (dictOrd1) {\n return Data_Ord.compare(ordMap1(dictOrd1));\n },\n Eq10: function () {\n return eq1Map1;\n }\n };\n};\nvar empty = /* #__PURE__ */ (function () {\n return Leaf.value;\n})();\nvar fromFoldable = function (dictOrd) {\n var insert1 = insert(dictOrd);\n return function (dictFoldable) {\n return Data_Foldable.foldl(dictFoldable)(function (m) {\n return function (v) {\n return insert1(v.value0)(v.value1)(m);\n };\n })(empty);\n };\n};\nvar fromFoldableWith = function (dictOrd) {\n var insertWith1 = insertWith(dictOrd);\n return function (dictFoldable) {\n var foldl = Data_Foldable.foldl(dictFoldable);\n return function (f) {\n var f$prime = insertWith1(Data_Function.flip(f));\n return foldl(function (m) {\n return function (v) {\n return f$prime(v.value0)(v.value1)(m);\n };\n })(empty);\n };\n };\n};\nvar fromFoldableWithIndex = function (dictOrd) {\n var insert1 = insert(dictOrd);\n return function (dictFoldableWithIndex) {\n return Data_FoldableWithIndex.foldlWithIndex(dictFoldableWithIndex)(function (k) {\n return function (m) {\n return function (v) {\n return insert1(k)(v)(m);\n };\n };\n })(empty);\n };\n};\nvar monoidSemigroupMap = function () {\n return function (dictOrd) {\n var semigroupMap2 = semigroupMap1(dictOrd);\n return function (dictSemigroup) {\n var semigroupMap3 = semigroupMap2(dictSemigroup);\n return {\n mempty: empty,\n Semigroup0: function () {\n return semigroupMap3;\n }\n };\n };\n };\n};\nvar submap = function (dictOrd) {\n var foldSubmapBy1 = foldSubmapBy(dictOrd);\n var union1 = union(dictOrd);\n return function (kmin) {\n return function (kmax) {\n return foldSubmapBy1(union1)(empty)(kmin)(kmax)(singleton);\n };\n };\n};\nvar unions = function (dictOrd) {\n var union1 = union(dictOrd);\n return function (dictFoldable) {\n return Data_Foldable.foldl(dictFoldable)(union1)(empty);\n };\n};\nvar difference = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (m1) {\n return function (m2) {\n return unsafeDifference(compare, m1, m2);\n };\n };\n};\nvar $$delete = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (k) {\n var go = function (v) {\n if (v instanceof Leaf) {\n return Leaf.value;\n };\n if (v instanceof Node) {\n var v1 = compare(k)(v.value2);\n if (v1 instanceof Data_Ordering.LT) {\n return unsafeBalancedNode(v.value2, v.value3, go(v.value4), v.value5);\n };\n if (v1 instanceof Data_Ordering.GT) {\n return unsafeBalancedNode(v.value2, v.value3, v.value4, go(v.value5));\n };\n if (v1 instanceof Data_Ordering.EQ) {\n return unsafeJoinNodes(v.value4, v.value5);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 496, column 7 - line 499, column 43): \" + [ v1.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 493, column 8 - line 499, column 43): \" + [ v.constructor.name ]);\n };\n return go;\n };\n};\nvar checkValid = function (dictOrd) {\n var greaterThan1 = Data_Ord.greaterThan(dictOrd);\n var lessThan1 = Data_Ord.lessThan(dictOrd);\n var go = function (v) {\n if (v instanceof Leaf) {\n return true;\n };\n if (v instanceof Node) {\n if (v.value4 instanceof Leaf) {\n if (v.value5 instanceof Leaf) {\n return true;\n };\n if (v.value5 instanceof Node) {\n return v.value0 === 2 && (v.value5.value0 === 1 && (v.value1 > v.value5.value1 && (greaterThan1(v.value5.value2)(v.value2) && go(v.value5))));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 262, column 11 - line 266, column 60): \" + [ v.value5.constructor.name ]);\n };\n if (v.value4 instanceof Node) {\n if (v.value5 instanceof Leaf) {\n return v.value0 === 2 && (v.value4.value0 === 1 && (v.value1 > v.value4.value1 && (lessThan1(v.value4.value2)(v.value2) && go(v.value4))));\n };\n if (v.value5 instanceof Node) {\n return v.value0 > v.value5.value0 && (greaterThan1(v.value5.value2)(v.value2) && (v.value0 > v.value4.value0 && (lessThan1(v.value4.value2)(v.value2) && (abs(v.value5.value0 - v.value4.value0 | 0) < 2 && (((v.value5.value1 + v.value4.value1 | 0) + 1 | 0) === v.value1 && (go(v.value4) && go(v.value5)))))));\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 268, column 11 - line 272, column 108): \" + [ v.value5.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 260, column 7 - line 272, column 108): \" + [ v.value4.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 257, column 8 - line 272, column 108): \" + [ v.constructor.name ]);\n };\n return go;\n};\nvar catMaybes = function (dictOrd) {\n return mapMaybe(dictOrd)(identity);\n};\nvar applyMap = function (dictOrd) {\n return {\n apply: intersectionWith(dictOrd)(identity),\n Functor0: function () {\n return functorMap;\n }\n };\n};\nvar bindMap = function (dictOrd) {\n var mapMaybeWithKey1 = mapMaybeWithKey(dictOrd);\n var lookup1 = lookup(dictOrd);\n var applyMap1 = applyMap(dictOrd);\n return {\n bind: function (m) {\n return function (f) {\n return mapMaybeWithKey1(function (k) {\n var $771 = lookup1(k);\n return function ($772) {\n return $771(f($772));\n };\n })(m);\n };\n },\n Apply0: function () {\n return applyMap1;\n }\n };\n};\nvar alter = function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n return function (f) {\n return function (k) {\n return function (m) {\n var v = unsafeSplit(compare, k, m);\n var v2 = f(v.value0);\n if (v2 instanceof Data_Maybe.Nothing) {\n return unsafeJoinNodes(v.value1, v.value2);\n };\n if (v2 instanceof Data_Maybe.Just) {\n return unsafeBalancedNode(k, v2.value0, v.value1, v.value2);\n };\n throw new Error(\"Failed pattern match at Data.Map.Internal (line 512, column 3 - line 516, column 41): \" + [ v2.constructor.name ]);\n };\n };\n };\n};\nvar altMap = function (dictOrd) {\n return {\n alt: union(dictOrd),\n Functor0: function () {\n return functorMap;\n }\n };\n};\nvar plusMap = function (dictOrd) {\n var altMap1 = altMap(dictOrd);\n return {\n empty: empty,\n Alt0: function () {\n return altMap1;\n }\n };\n};\nexport {\n Leaf,\n Node,\n showTree,\n empty,\n isEmpty,\n singleton,\n checkValid,\n insert,\n insertWith,\n lookup,\n lookupLE,\n lookupLT,\n lookupGE,\n lookupGT,\n findMin,\n findMax,\n foldSubmap,\n submap,\n fromFoldable,\n fromFoldableWith,\n fromFoldableWithIndex,\n toUnfoldable,\n toUnfoldableUnordered,\n $$delete as delete,\n pop,\n member,\n alter,\n update,\n keys,\n values,\n union,\n unionWith,\n unions,\n intersection,\n intersectionWith,\n difference,\n isSubmap,\n size,\n filterWithKey,\n filterKeys,\n filter,\n mapMaybeWithKey,\n mapMaybe,\n catMaybes,\n IterDone,\n IterNext,\n toMapIter,\n stepAsc,\n stepAscCps,\n stepDesc,\n stepDescCps,\n stepUnordered,\n stepUnorderedCps,\n unsafeNode,\n unsafeBalancedNode,\n unsafeJoinNodes,\n unsafeSplit,\n Split,\n eq1Map,\n eqMap,\n ord1Map,\n ordMap,\n showMap,\n semigroupMap,\n monoidSemigroupMap,\n altMap,\n plusMap,\n functorMap,\n functorWithIndexMap,\n applyMap,\n bindMap,\n foldableMap,\n foldableWithIndexMap,\n traversableMap,\n traversableWithIndexMap,\n eqMapIter,\n ordMapIter\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nvar OrdBox = /* #__PURE__ */ (function () {\n function OrdBox(value0, value1, value2) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n };\n OrdBox.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return new OrdBox(value0, value1, value2);\n };\n };\n };\n return OrdBox;\n})();\nvar unOrdBox = function (v) {\n return v.value2;\n};\nvar mkOrdBox = function (dictOrd) {\n return OrdBox.create(Data_Eq.eq(dictOrd.Eq0()))(Data_Ord.compare(dictOrd));\n};\nvar eqOrdBox = {\n eq: function (v) {\n return function (v1) {\n return v.value0(v.value2)(v1.value2);\n };\n }\n};\nvar ordOrdBox = {\n compare: function (v) {\n return function (v1) {\n return v.value1(v.value2)(v1.value2);\n };\n },\n Eq0: function () {\n return eqOrdBox;\n }\n};\nexport {\n mkOrdBox,\n unOrdBox,\n eqOrdBox,\n ordOrdBox\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Map_Internal from \"../Data.Map.Internal/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid_Alternate from \"../Data.Monoid.Alternate/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Symbol from \"../Data.Symbol/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Halogen_Data_OrdBox from \"../Halogen.Data.OrdBox/index.js\";\nvar un = /* #__PURE__ */ Data_Newtype.un();\nvar ordTuple = /* #__PURE__ */ Data_Tuple.ordTuple(Data_Ord.ordString)(Halogen_Data_OrdBox.ordOrdBox);\nvar foldSubmap = /* #__PURE__ */ Data_Map_Internal.foldSubmap(ordTuple);\nvar pop1 = /* #__PURE__ */ Data_Map_Internal.pop(ordTuple);\nvar lookup1 = /* #__PURE__ */ Data_Map_Internal.lookup(ordTuple);\nvar insert1 = /* #__PURE__ */ Data_Map_Internal.insert(ordTuple);\nvar SlotStorage = function (x) {\n return x;\n};\nvar slots = function () {\n return function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (dictOrd) {\n var foldSubmap1 = foldSubmap(Data_Monoid_Alternate.monoidAlternate(Data_Map_Internal.plusMap(dictOrd)));\n return function (sym) {\n return function (v) {\n var key = reflectSymbol(sym);\n var go = function (v1) {\n return function (val) {\n if (key === v1.value0) {\n return Data_Map_Internal.singleton(Halogen_Data_OrdBox.unOrdBox(v1.value1))(val);\n };\n if (Data_Boolean.otherwise) {\n return Data_Map_Internal.empty;\n };\n throw new Error(\"Failed pattern match at Halogen.Data.Slot (line 121, column 3 - line 123, column 38): \" + [ v1.constructor.name, val.constructor.name ]);\n };\n };\n return un(Data_Monoid_Alternate.Alternate)(foldSubmap1(Data_Maybe.Nothing.value)(Data_Maybe.Nothing.value)(go)(v));\n };\n };\n };\n };\n};\nvar pop = function () {\n return function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (dictOrd) {\n var mkOrdBox = Halogen_Data_OrdBox.mkOrdBox(dictOrd);\n return function (sym) {\n return function (key) {\n return function (v) {\n return pop1(new Data_Tuple.Tuple(reflectSymbol(sym), mkOrdBox(key)))(v);\n };\n };\n };\n };\n };\n};\nvar lookup = function () {\n return function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (dictOrd) {\n var mkOrdBox = Halogen_Data_OrdBox.mkOrdBox(dictOrd);\n return function (sym) {\n return function (key) {\n return function (v) {\n return lookup1(new Data_Tuple.Tuple(reflectSymbol(sym), mkOrdBox(key)))(v);\n };\n };\n };\n };\n };\n};\nvar insert = function () {\n return function (dictIsSymbol) {\n var reflectSymbol = Data_Symbol.reflectSymbol(dictIsSymbol);\n return function (dictOrd) {\n var mkOrdBox = Halogen_Data_OrdBox.mkOrdBox(dictOrd);\n return function (sym) {\n return function (key) {\n return function (val) {\n return function (v) {\n return insert1(new Data_Tuple.Tuple(reflectSymbol(sym), mkOrdBox(key)))(val)(v);\n };\n };\n };\n };\n };\n };\n};\nvar foreachSlot = function (dictApplicative) {\n var traverse_ = Data_Foldable.traverse_(dictApplicative)(Data_Map_Internal.foldableMap);\n return function (v) {\n return function (k) {\n return traverse_(function ($54) {\n return k($54);\n })(v);\n };\n };\n};\nvar empty = Data_Map_Internal.empty;\nexport {\n empty,\n lookup,\n insert,\n pop,\n slots,\n foreachSlot\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nvar AutocompleteOff = /* #__PURE__ */ (function () {\n function AutocompleteOff() {\n\n };\n AutocompleteOff.value = new AutocompleteOff();\n return AutocompleteOff;\n})();\nvar AutocompleteOn = /* #__PURE__ */ (function () {\n function AutocompleteOn() {\n\n };\n AutocompleteOn.value = new AutocompleteOn();\n return AutocompleteOn;\n})();\nvar AutocompleteName = /* #__PURE__ */ (function () {\n function AutocompleteName() {\n\n };\n AutocompleteName.value = new AutocompleteName();\n return AutocompleteName;\n})();\nvar AutocompleteHonorificPrefix = /* #__PURE__ */ (function () {\n function AutocompleteHonorificPrefix() {\n\n };\n AutocompleteHonorificPrefix.value = new AutocompleteHonorificPrefix();\n return AutocompleteHonorificPrefix;\n})();\nvar AutocompleteGivenName = /* #__PURE__ */ (function () {\n function AutocompleteGivenName() {\n\n };\n AutocompleteGivenName.value = new AutocompleteGivenName();\n return AutocompleteGivenName;\n})();\nvar AutocompleteAdditionalName = /* #__PURE__ */ (function () {\n function AutocompleteAdditionalName() {\n\n };\n AutocompleteAdditionalName.value = new AutocompleteAdditionalName();\n return AutocompleteAdditionalName;\n})();\nvar AutocompleteFamilyName = /* #__PURE__ */ (function () {\n function AutocompleteFamilyName() {\n\n };\n AutocompleteFamilyName.value = new AutocompleteFamilyName();\n return AutocompleteFamilyName;\n})();\nvar AutocompleteHonorificSuffix = /* #__PURE__ */ (function () {\n function AutocompleteHonorificSuffix() {\n\n };\n AutocompleteHonorificSuffix.value = new AutocompleteHonorificSuffix();\n return AutocompleteHonorificSuffix;\n})();\nvar AutocompleteNickname = /* #__PURE__ */ (function () {\n function AutocompleteNickname() {\n\n };\n AutocompleteNickname.value = new AutocompleteNickname();\n return AutocompleteNickname;\n})();\nvar AutocompleteEmail = /* #__PURE__ */ (function () {\n function AutocompleteEmail() {\n\n };\n AutocompleteEmail.value = new AutocompleteEmail();\n return AutocompleteEmail;\n})();\nvar AutocompleteUsername = /* #__PURE__ */ (function () {\n function AutocompleteUsername() {\n\n };\n AutocompleteUsername.value = new AutocompleteUsername();\n return AutocompleteUsername;\n})();\nvar AutocompleteNewPassword = /* #__PURE__ */ (function () {\n function AutocompleteNewPassword() {\n\n };\n AutocompleteNewPassword.value = new AutocompleteNewPassword();\n return AutocompleteNewPassword;\n})();\nvar AutocompleteCurrentPassword = /* #__PURE__ */ (function () {\n function AutocompleteCurrentPassword() {\n\n };\n AutocompleteCurrentPassword.value = new AutocompleteCurrentPassword();\n return AutocompleteCurrentPassword;\n})();\nvar AutocompleteOneTimeCode = /* #__PURE__ */ (function () {\n function AutocompleteOneTimeCode() {\n\n };\n AutocompleteOneTimeCode.value = new AutocompleteOneTimeCode();\n return AutocompleteOneTimeCode;\n})();\nvar AutocompleteOrganizationTitle = /* #__PURE__ */ (function () {\n function AutocompleteOrganizationTitle() {\n\n };\n AutocompleteOrganizationTitle.value = new AutocompleteOrganizationTitle();\n return AutocompleteOrganizationTitle;\n})();\nvar AutocompleteOrganization = /* #__PURE__ */ (function () {\n function AutocompleteOrganization() {\n\n };\n AutocompleteOrganization.value = new AutocompleteOrganization();\n return AutocompleteOrganization;\n})();\nvar AutocompleteStreetAddress = /* #__PURE__ */ (function () {\n function AutocompleteStreetAddress() {\n\n };\n AutocompleteStreetAddress.value = new AutocompleteStreetAddress();\n return AutocompleteStreetAddress;\n})();\nvar AutocompleteAddressLine1 = /* #__PURE__ */ (function () {\n function AutocompleteAddressLine1() {\n\n };\n AutocompleteAddressLine1.value = new AutocompleteAddressLine1();\n return AutocompleteAddressLine1;\n})();\nvar AutocompleteAddressLine2 = /* #__PURE__ */ (function () {\n function AutocompleteAddressLine2() {\n\n };\n AutocompleteAddressLine2.value = new AutocompleteAddressLine2();\n return AutocompleteAddressLine2;\n})();\nvar AutocompleteAddressLine3 = /* #__PURE__ */ (function () {\n function AutocompleteAddressLine3() {\n\n };\n AutocompleteAddressLine3.value = new AutocompleteAddressLine3();\n return AutocompleteAddressLine3;\n})();\nvar AutocompleteAddressLevel1 = /* #__PURE__ */ (function () {\n function AutocompleteAddressLevel1() {\n\n };\n AutocompleteAddressLevel1.value = new AutocompleteAddressLevel1();\n return AutocompleteAddressLevel1;\n})();\nvar AutocompleteAddressLevel2 = /* #__PURE__ */ (function () {\n function AutocompleteAddressLevel2() {\n\n };\n AutocompleteAddressLevel2.value = new AutocompleteAddressLevel2();\n return AutocompleteAddressLevel2;\n})();\nvar AutocompleteAddressLevel3 = /* #__PURE__ */ (function () {\n function AutocompleteAddressLevel3() {\n\n };\n AutocompleteAddressLevel3.value = new AutocompleteAddressLevel3();\n return AutocompleteAddressLevel3;\n})();\nvar AutocompleteAddressLevel4 = /* #__PURE__ */ (function () {\n function AutocompleteAddressLevel4() {\n\n };\n AutocompleteAddressLevel4.value = new AutocompleteAddressLevel4();\n return AutocompleteAddressLevel4;\n})();\nvar AutocompleteCountry = /* #__PURE__ */ (function () {\n function AutocompleteCountry() {\n\n };\n AutocompleteCountry.value = new AutocompleteCountry();\n return AutocompleteCountry;\n})();\nvar AutocompleteCountryName = /* #__PURE__ */ (function () {\n function AutocompleteCountryName() {\n\n };\n AutocompleteCountryName.value = new AutocompleteCountryName();\n return AutocompleteCountryName;\n})();\nvar AutocompletePostalCode = /* #__PURE__ */ (function () {\n function AutocompletePostalCode() {\n\n };\n AutocompletePostalCode.value = new AutocompletePostalCode();\n return AutocompletePostalCode;\n})();\nvar AutocompleteCreditCardName = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardName() {\n\n };\n AutocompleteCreditCardName.value = new AutocompleteCreditCardName();\n return AutocompleteCreditCardName;\n})();\nvar AutocompleteCreditCardGivenName = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardGivenName() {\n\n };\n AutocompleteCreditCardGivenName.value = new AutocompleteCreditCardGivenName();\n return AutocompleteCreditCardGivenName;\n})();\nvar AutocompleteCreditCardAdditionalName = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardAdditionalName() {\n\n };\n AutocompleteCreditCardAdditionalName.value = new AutocompleteCreditCardAdditionalName();\n return AutocompleteCreditCardAdditionalName;\n})();\nvar AutocompleteCreditCardFamilyName = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardFamilyName() {\n\n };\n AutocompleteCreditCardFamilyName.value = new AutocompleteCreditCardFamilyName();\n return AutocompleteCreditCardFamilyName;\n})();\nvar AutocompleteCreditCardNumber = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardNumber() {\n\n };\n AutocompleteCreditCardNumber.value = new AutocompleteCreditCardNumber();\n return AutocompleteCreditCardNumber;\n})();\nvar AutocompleteCreditCardExpiration = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardExpiration() {\n\n };\n AutocompleteCreditCardExpiration.value = new AutocompleteCreditCardExpiration();\n return AutocompleteCreditCardExpiration;\n})();\nvar AutocompleteCreditCardExpirationMonth = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardExpirationMonth() {\n\n };\n AutocompleteCreditCardExpirationMonth.value = new AutocompleteCreditCardExpirationMonth();\n return AutocompleteCreditCardExpirationMonth;\n})();\nvar AutocompleteCreditCardExpirationYear = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardExpirationYear() {\n\n };\n AutocompleteCreditCardExpirationYear.value = new AutocompleteCreditCardExpirationYear();\n return AutocompleteCreditCardExpirationYear;\n})();\nvar AutocompleteCreditCardSecurityCode = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardSecurityCode() {\n\n };\n AutocompleteCreditCardSecurityCode.value = new AutocompleteCreditCardSecurityCode();\n return AutocompleteCreditCardSecurityCode;\n})();\nvar AutocompleteCreditCardType = /* #__PURE__ */ (function () {\n function AutocompleteCreditCardType() {\n\n };\n AutocompleteCreditCardType.value = new AutocompleteCreditCardType();\n return AutocompleteCreditCardType;\n})();\nvar AutocompleteTransactionCurrency = /* #__PURE__ */ (function () {\n function AutocompleteTransactionCurrency() {\n\n };\n AutocompleteTransactionCurrency.value = new AutocompleteTransactionCurrency();\n return AutocompleteTransactionCurrency;\n})();\nvar AutocompleteTransactionAmount = /* #__PURE__ */ (function () {\n function AutocompleteTransactionAmount() {\n\n };\n AutocompleteTransactionAmount.value = new AutocompleteTransactionAmount();\n return AutocompleteTransactionAmount;\n})();\nvar AutocompleteLanguage = /* #__PURE__ */ (function () {\n function AutocompleteLanguage() {\n\n };\n AutocompleteLanguage.value = new AutocompleteLanguage();\n return AutocompleteLanguage;\n})();\nvar AutocompleteBirthday = /* #__PURE__ */ (function () {\n function AutocompleteBirthday() {\n\n };\n AutocompleteBirthday.value = new AutocompleteBirthday();\n return AutocompleteBirthday;\n})();\nvar AutocompleteBirthdayDay = /* #__PURE__ */ (function () {\n function AutocompleteBirthdayDay() {\n\n };\n AutocompleteBirthdayDay.value = new AutocompleteBirthdayDay();\n return AutocompleteBirthdayDay;\n})();\nvar AutocompleteBirthdayMonth = /* #__PURE__ */ (function () {\n function AutocompleteBirthdayMonth() {\n\n };\n AutocompleteBirthdayMonth.value = new AutocompleteBirthdayMonth();\n return AutocompleteBirthdayMonth;\n})();\nvar AutocompleteBirthdayYear = /* #__PURE__ */ (function () {\n function AutocompleteBirthdayYear() {\n\n };\n AutocompleteBirthdayYear.value = new AutocompleteBirthdayYear();\n return AutocompleteBirthdayYear;\n})();\nvar AutocompleteSex = /* #__PURE__ */ (function () {\n function AutocompleteSex() {\n\n };\n AutocompleteSex.value = new AutocompleteSex();\n return AutocompleteSex;\n})();\nvar AutocompleteTelephone = /* #__PURE__ */ (function () {\n function AutocompleteTelephone() {\n\n };\n AutocompleteTelephone.value = new AutocompleteTelephone();\n return AutocompleteTelephone;\n})();\nvar AutocompleteTelephoneCountryCode = /* #__PURE__ */ (function () {\n function AutocompleteTelephoneCountryCode() {\n\n };\n AutocompleteTelephoneCountryCode.value = new AutocompleteTelephoneCountryCode();\n return AutocompleteTelephoneCountryCode;\n})();\nvar AutocompleteTelephoneNational = /* #__PURE__ */ (function () {\n function AutocompleteTelephoneNational() {\n\n };\n AutocompleteTelephoneNational.value = new AutocompleteTelephoneNational();\n return AutocompleteTelephoneNational;\n})();\nvar AutocompleteTelephoneAreaCode = /* #__PURE__ */ (function () {\n function AutocompleteTelephoneAreaCode() {\n\n };\n AutocompleteTelephoneAreaCode.value = new AutocompleteTelephoneAreaCode();\n return AutocompleteTelephoneAreaCode;\n})();\nvar AutocompleteTelephoneLocal = /* #__PURE__ */ (function () {\n function AutocompleteTelephoneLocal() {\n\n };\n AutocompleteTelephoneLocal.value = new AutocompleteTelephoneLocal();\n return AutocompleteTelephoneLocal;\n})();\nvar AutocompleteTelephoneLocalPrefix = /* #__PURE__ */ (function () {\n function AutocompleteTelephoneLocalPrefix() {\n\n };\n AutocompleteTelephoneLocalPrefix.value = new AutocompleteTelephoneLocalPrefix();\n return AutocompleteTelephoneLocalPrefix;\n})();\nvar AutocompleteTelephoneLocalSuffix = /* #__PURE__ */ (function () {\n function AutocompleteTelephoneLocalSuffix() {\n\n };\n AutocompleteTelephoneLocalSuffix.value = new AutocompleteTelephoneLocalSuffix();\n return AutocompleteTelephoneLocalSuffix;\n})();\nvar AutocompleteTelephoneExtension = /* #__PURE__ */ (function () {\n function AutocompleteTelephoneExtension() {\n\n };\n AutocompleteTelephoneExtension.value = new AutocompleteTelephoneExtension();\n return AutocompleteTelephoneExtension;\n})();\nvar AutocompleteIMPP = /* #__PURE__ */ (function () {\n function AutocompleteIMPP() {\n\n };\n AutocompleteIMPP.value = new AutocompleteIMPP();\n return AutocompleteIMPP;\n})();\nvar AutocompleteURL = /* #__PURE__ */ (function () {\n function AutocompleteURL() {\n\n };\n AutocompleteURL.value = new AutocompleteURL();\n return AutocompleteURL;\n})();\nvar AutocompletePhoto = /* #__PURE__ */ (function () {\n function AutocompletePhoto() {\n\n };\n AutocompletePhoto.value = new AutocompletePhoto();\n return AutocompletePhoto;\n})();\nvar renderAutocompleteType = function (v) {\n if (v instanceof AutocompleteOff) {\n return \"off\";\n };\n if (v instanceof AutocompleteOn) {\n return \"on\";\n };\n if (v instanceof AutocompleteName) {\n return \"name\";\n };\n if (v instanceof AutocompleteHonorificPrefix) {\n return \"honorific-prefix\";\n };\n if (v instanceof AutocompleteGivenName) {\n return \"given-name\";\n };\n if (v instanceof AutocompleteAdditionalName) {\n return \"additional-name\";\n };\n if (v instanceof AutocompleteFamilyName) {\n return \"family-name\";\n };\n if (v instanceof AutocompleteHonorificSuffix) {\n return \"honorific-suffix\";\n };\n if (v instanceof AutocompleteNickname) {\n return \"nickname\";\n };\n if (v instanceof AutocompleteEmail) {\n return \"email\";\n };\n if (v instanceof AutocompleteUsername) {\n return \"username\";\n };\n if (v instanceof AutocompleteNewPassword) {\n return \"new-password\";\n };\n if (v instanceof AutocompleteCurrentPassword) {\n return \"current-password\";\n };\n if (v instanceof AutocompleteOneTimeCode) {\n return \"one-time-code\";\n };\n if (v instanceof AutocompleteOrganizationTitle) {\n return \"organization-title\";\n };\n if (v instanceof AutocompleteOrganization) {\n return \"organization\";\n };\n if (v instanceof AutocompleteStreetAddress) {\n return \"street-address\";\n };\n if (v instanceof AutocompleteAddressLine1) {\n return \"address-line1\";\n };\n if (v instanceof AutocompleteAddressLine2) {\n return \"address-line2\";\n };\n if (v instanceof AutocompleteAddressLine3) {\n return \"address-line3\";\n };\n if (v instanceof AutocompleteAddressLevel1) {\n return \"address-level1\";\n };\n if (v instanceof AutocompleteAddressLevel2) {\n return \"address-level2\";\n };\n if (v instanceof AutocompleteAddressLevel3) {\n return \"address-level3\";\n };\n if (v instanceof AutocompleteAddressLevel4) {\n return \"address-level4\";\n };\n if (v instanceof AutocompleteCountry) {\n return \"country\";\n };\n if (v instanceof AutocompleteCountryName) {\n return \"country-name\";\n };\n if (v instanceof AutocompletePostalCode) {\n return \"postal-code\";\n };\n if (v instanceof AutocompleteCreditCardName) {\n return \"cc-name\";\n };\n if (v instanceof AutocompleteCreditCardGivenName) {\n return \"cc-given-name\";\n };\n if (v instanceof AutocompleteCreditCardAdditionalName) {\n return \"cc-additional-name\";\n };\n if (v instanceof AutocompleteCreditCardFamilyName) {\n return \"cc-family-name\";\n };\n if (v instanceof AutocompleteCreditCardNumber) {\n return \"cc-number\";\n };\n if (v instanceof AutocompleteCreditCardExpiration) {\n return \"cc-exp\";\n };\n if (v instanceof AutocompleteCreditCardExpirationMonth) {\n return \"cc-exp-month\";\n };\n if (v instanceof AutocompleteCreditCardExpirationYear) {\n return \"cc-exp-year\";\n };\n if (v instanceof AutocompleteCreditCardSecurityCode) {\n return \"cc-csc\";\n };\n if (v instanceof AutocompleteCreditCardType) {\n return \"cc-type\";\n };\n if (v instanceof AutocompleteTransactionCurrency) {\n return \"transaction-currency\";\n };\n if (v instanceof AutocompleteTransactionAmount) {\n return \"transaction-amount\";\n };\n if (v instanceof AutocompleteLanguage) {\n return \"language\";\n };\n if (v instanceof AutocompleteBirthday) {\n return \"bday\";\n };\n if (v instanceof AutocompleteBirthdayDay) {\n return \"bday-day\";\n };\n if (v instanceof AutocompleteBirthdayMonth) {\n return \"bday-month\";\n };\n if (v instanceof AutocompleteBirthdayYear) {\n return \"bday-year\";\n };\n if (v instanceof AutocompleteSex) {\n return \"sex\";\n };\n if (v instanceof AutocompleteTelephone) {\n return \"tel\";\n };\n if (v instanceof AutocompleteTelephoneCountryCode) {\n return \"tel-country-code\";\n };\n if (v instanceof AutocompleteTelephoneNational) {\n return \"tel-national\";\n };\n if (v instanceof AutocompleteTelephoneAreaCode) {\n return \"telarea-code\";\n };\n if (v instanceof AutocompleteTelephoneLocal) {\n return \"tel-local\";\n };\n if (v instanceof AutocompleteTelephoneLocalPrefix) {\n return \"tel-local-prefix\";\n };\n if (v instanceof AutocompleteTelephoneLocalSuffix) {\n return \"tel-local-suffix\";\n };\n if (v instanceof AutocompleteTelephoneExtension) {\n return \"tel-extension\";\n };\n if (v instanceof AutocompleteIMPP) {\n return \"impp\";\n };\n if (v instanceof AutocompleteURL) {\n return \"url\";\n };\n if (v instanceof AutocompletePhoto) {\n return \"photo\";\n };\n throw new Error(\"Failed pattern match at DOM.HTML.Indexed.AutocompleteType (line 67, column 26 - line 123, column 31): \" + [ v.constructor.name ]);\n};\nvar eqAutocompleteType = {\n eq: function (x) {\n return function (y) {\n if (x instanceof AutocompleteOff && y instanceof AutocompleteOff) {\n return true;\n };\n if (x instanceof AutocompleteOn && y instanceof AutocompleteOn) {\n return true;\n };\n if (x instanceof AutocompleteName && y instanceof AutocompleteName) {\n return true;\n };\n if (x instanceof AutocompleteHonorificPrefix && y instanceof AutocompleteHonorificPrefix) {\n return true;\n };\n if (x instanceof AutocompleteGivenName && y instanceof AutocompleteGivenName) {\n return true;\n };\n if (x instanceof AutocompleteAdditionalName && y instanceof AutocompleteAdditionalName) {\n return true;\n };\n if (x instanceof AutocompleteFamilyName && y instanceof AutocompleteFamilyName) {\n return true;\n };\n if (x instanceof AutocompleteHonorificSuffix && y instanceof AutocompleteHonorificSuffix) {\n return true;\n };\n if (x instanceof AutocompleteNickname && y instanceof AutocompleteNickname) {\n return true;\n };\n if (x instanceof AutocompleteEmail && y instanceof AutocompleteEmail) {\n return true;\n };\n if (x instanceof AutocompleteUsername && y instanceof AutocompleteUsername) {\n return true;\n };\n if (x instanceof AutocompleteNewPassword && y instanceof AutocompleteNewPassword) {\n return true;\n };\n if (x instanceof AutocompleteCurrentPassword && y instanceof AutocompleteCurrentPassword) {\n return true;\n };\n if (x instanceof AutocompleteOneTimeCode && y instanceof AutocompleteOneTimeCode) {\n return true;\n };\n if (x instanceof AutocompleteOrganizationTitle && y instanceof AutocompleteOrganizationTitle) {\n return true;\n };\n if (x instanceof AutocompleteOrganization && y instanceof AutocompleteOrganization) {\n return true;\n };\n if (x instanceof AutocompleteStreetAddress && y instanceof AutocompleteStreetAddress) {\n return true;\n };\n if (x instanceof AutocompleteAddressLine1 && y instanceof AutocompleteAddressLine1) {\n return true;\n };\n if (x instanceof AutocompleteAddressLine2 && y instanceof AutocompleteAddressLine2) {\n return true;\n };\n if (x instanceof AutocompleteAddressLine3 && y instanceof AutocompleteAddressLine3) {\n return true;\n };\n if (x instanceof AutocompleteAddressLevel1 && y instanceof AutocompleteAddressLevel1) {\n return true;\n };\n if (x instanceof AutocompleteAddressLevel2 && y instanceof AutocompleteAddressLevel2) {\n return true;\n };\n if (x instanceof AutocompleteAddressLevel3 && y instanceof AutocompleteAddressLevel3) {\n return true;\n };\n if (x instanceof AutocompleteAddressLevel4 && y instanceof AutocompleteAddressLevel4) {\n return true;\n };\n if (x instanceof AutocompleteCountry && y instanceof AutocompleteCountry) {\n return true;\n };\n if (x instanceof AutocompleteCountryName && y instanceof AutocompleteCountryName) {\n return true;\n };\n if (x instanceof AutocompletePostalCode && y instanceof AutocompletePostalCode) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardName && y instanceof AutocompleteCreditCardName) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardGivenName && y instanceof AutocompleteCreditCardGivenName) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardAdditionalName && y instanceof AutocompleteCreditCardAdditionalName) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardFamilyName && y instanceof AutocompleteCreditCardFamilyName) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardNumber && y instanceof AutocompleteCreditCardNumber) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardExpiration && y instanceof AutocompleteCreditCardExpiration) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardExpirationMonth && y instanceof AutocompleteCreditCardExpirationMonth) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardExpirationYear && y instanceof AutocompleteCreditCardExpirationYear) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardSecurityCode && y instanceof AutocompleteCreditCardSecurityCode) {\n return true;\n };\n if (x instanceof AutocompleteCreditCardType && y instanceof AutocompleteCreditCardType) {\n return true;\n };\n if (x instanceof AutocompleteTransactionCurrency && y instanceof AutocompleteTransactionCurrency) {\n return true;\n };\n if (x instanceof AutocompleteTransactionAmount && y instanceof AutocompleteTransactionAmount) {\n return true;\n };\n if (x instanceof AutocompleteLanguage && y instanceof AutocompleteLanguage) {\n return true;\n };\n if (x instanceof AutocompleteBirthday && y instanceof AutocompleteBirthday) {\n return true;\n };\n if (x instanceof AutocompleteBirthdayDay && y instanceof AutocompleteBirthdayDay) {\n return true;\n };\n if (x instanceof AutocompleteBirthdayMonth && y instanceof AutocompleteBirthdayMonth) {\n return true;\n };\n if (x instanceof AutocompleteBirthdayYear && y instanceof AutocompleteBirthdayYear) {\n return true;\n };\n if (x instanceof AutocompleteSex && y instanceof AutocompleteSex) {\n return true;\n };\n if (x instanceof AutocompleteTelephone && y instanceof AutocompleteTelephone) {\n return true;\n };\n if (x instanceof AutocompleteTelephoneCountryCode && y instanceof AutocompleteTelephoneCountryCode) {\n return true;\n };\n if (x instanceof AutocompleteTelephoneNational && y instanceof AutocompleteTelephoneNational) {\n return true;\n };\n if (x instanceof AutocompleteTelephoneAreaCode && y instanceof AutocompleteTelephoneAreaCode) {\n return true;\n };\n if (x instanceof AutocompleteTelephoneLocal && y instanceof AutocompleteTelephoneLocal) {\n return true;\n };\n if (x instanceof AutocompleteTelephoneLocalPrefix && y instanceof AutocompleteTelephoneLocalPrefix) {\n return true;\n };\n if (x instanceof AutocompleteTelephoneLocalSuffix && y instanceof AutocompleteTelephoneLocalSuffix) {\n return true;\n };\n if (x instanceof AutocompleteTelephoneExtension && y instanceof AutocompleteTelephoneExtension) {\n return true;\n };\n if (x instanceof AutocompleteIMPP && y instanceof AutocompleteIMPP) {\n return true;\n };\n if (x instanceof AutocompleteURL && y instanceof AutocompleteURL) {\n return true;\n };\n if (x instanceof AutocompletePhoto && y instanceof AutocompletePhoto) {\n return true;\n };\n return false;\n };\n }\n};\nvar ordAutocompleteType = {\n compare: function (x) {\n return function (y) {\n if (x instanceof AutocompleteOff && y instanceof AutocompleteOff) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteOff) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteOff) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteOn && y instanceof AutocompleteOn) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteOn) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteOn) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteName && y instanceof AutocompleteName) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteName) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteName) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteHonorificPrefix && y instanceof AutocompleteHonorificPrefix) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteHonorificPrefix) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteHonorificPrefix) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteGivenName && y instanceof AutocompleteGivenName) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteGivenName) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteGivenName) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteAdditionalName && y instanceof AutocompleteAdditionalName) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteAdditionalName) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteAdditionalName) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteFamilyName && y instanceof AutocompleteFamilyName) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteFamilyName) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteFamilyName) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteHonorificSuffix && y instanceof AutocompleteHonorificSuffix) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteHonorificSuffix) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteHonorificSuffix) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteNickname && y instanceof AutocompleteNickname) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteNickname) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteNickname) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteEmail && y instanceof AutocompleteEmail) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteEmail) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteEmail) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteUsername && y instanceof AutocompleteUsername) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteUsername) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteUsername) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteNewPassword && y instanceof AutocompleteNewPassword) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteNewPassword) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteNewPassword) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCurrentPassword && y instanceof AutocompleteCurrentPassword) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCurrentPassword) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCurrentPassword) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteOneTimeCode && y instanceof AutocompleteOneTimeCode) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteOneTimeCode) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteOneTimeCode) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteOrganizationTitle && y instanceof AutocompleteOrganizationTitle) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteOrganizationTitle) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteOrganizationTitle) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteOrganization && y instanceof AutocompleteOrganization) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteOrganization) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteOrganization) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteStreetAddress && y instanceof AutocompleteStreetAddress) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteStreetAddress) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteStreetAddress) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteAddressLine1 && y instanceof AutocompleteAddressLine1) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteAddressLine1) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteAddressLine1) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteAddressLine2 && y instanceof AutocompleteAddressLine2) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteAddressLine2) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteAddressLine2) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteAddressLine3 && y instanceof AutocompleteAddressLine3) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteAddressLine3) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteAddressLine3) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteAddressLevel1 && y instanceof AutocompleteAddressLevel1) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteAddressLevel1) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteAddressLevel1) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteAddressLevel2 && y instanceof AutocompleteAddressLevel2) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteAddressLevel2) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteAddressLevel2) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteAddressLevel3 && y instanceof AutocompleteAddressLevel3) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteAddressLevel3) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteAddressLevel3) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteAddressLevel4 && y instanceof AutocompleteAddressLevel4) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteAddressLevel4) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteAddressLevel4) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCountry && y instanceof AutocompleteCountry) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCountry) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCountry) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCountryName && y instanceof AutocompleteCountryName) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCountryName) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCountryName) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompletePostalCode && y instanceof AutocompletePostalCode) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompletePostalCode) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompletePostalCode) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardName && y instanceof AutocompleteCreditCardName) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardName) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardName) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardGivenName && y instanceof AutocompleteCreditCardGivenName) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardGivenName) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardGivenName) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardAdditionalName && y instanceof AutocompleteCreditCardAdditionalName) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardAdditionalName) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardAdditionalName) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardFamilyName && y instanceof AutocompleteCreditCardFamilyName) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardFamilyName) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardFamilyName) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardNumber && y instanceof AutocompleteCreditCardNumber) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardNumber) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardNumber) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardExpiration && y instanceof AutocompleteCreditCardExpiration) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardExpiration) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardExpiration) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardExpirationMonth && y instanceof AutocompleteCreditCardExpirationMonth) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardExpirationMonth) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardExpirationMonth) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardExpirationYear && y instanceof AutocompleteCreditCardExpirationYear) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardExpirationYear) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardExpirationYear) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardSecurityCode && y instanceof AutocompleteCreditCardSecurityCode) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardSecurityCode) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardSecurityCode) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteCreditCardType && y instanceof AutocompleteCreditCardType) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteCreditCardType) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteCreditCardType) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTransactionCurrency && y instanceof AutocompleteTransactionCurrency) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTransactionCurrency) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTransactionCurrency) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTransactionAmount && y instanceof AutocompleteTransactionAmount) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTransactionAmount) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTransactionAmount) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteLanguage && y instanceof AutocompleteLanguage) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteLanguage) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteLanguage) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteBirthday && y instanceof AutocompleteBirthday) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteBirthday) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteBirthday) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteBirthdayDay && y instanceof AutocompleteBirthdayDay) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteBirthdayDay) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteBirthdayDay) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteBirthdayMonth && y instanceof AutocompleteBirthdayMonth) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteBirthdayMonth) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteBirthdayMonth) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteBirthdayYear && y instanceof AutocompleteBirthdayYear) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteBirthdayYear) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteBirthdayYear) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteSex && y instanceof AutocompleteSex) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteSex) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteSex) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTelephone && y instanceof AutocompleteTelephone) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTelephone) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTelephone) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTelephoneCountryCode && y instanceof AutocompleteTelephoneCountryCode) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTelephoneCountryCode) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTelephoneCountryCode) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTelephoneNational && y instanceof AutocompleteTelephoneNational) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTelephoneNational) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTelephoneNational) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTelephoneAreaCode && y instanceof AutocompleteTelephoneAreaCode) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTelephoneAreaCode) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTelephoneAreaCode) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTelephoneLocal && y instanceof AutocompleteTelephoneLocal) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTelephoneLocal) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTelephoneLocal) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTelephoneLocalPrefix && y instanceof AutocompleteTelephoneLocalPrefix) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTelephoneLocalPrefix) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTelephoneLocalPrefix) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTelephoneLocalSuffix && y instanceof AutocompleteTelephoneLocalSuffix) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTelephoneLocalSuffix) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTelephoneLocalSuffix) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteTelephoneExtension && y instanceof AutocompleteTelephoneExtension) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteTelephoneExtension) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteTelephoneExtension) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteIMPP && y instanceof AutocompleteIMPP) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteIMPP) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteIMPP) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompleteURL && y instanceof AutocompleteURL) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof AutocompleteURL) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof AutocompleteURL) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof AutocompletePhoto && y instanceof AutocompletePhoto) {\n return Data_Ordering.EQ.value;\n };\n throw new Error(\"Failed pattern match at DOM.HTML.Indexed.AutocompleteType (line 0, column 0 - line 0, column 0): \" + [ x.constructor.name, y.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqAutocompleteType;\n }\n};\nexport {\n AutocompleteOff,\n AutocompleteOn,\n AutocompleteName,\n AutocompleteHonorificPrefix,\n AutocompleteGivenName,\n AutocompleteAdditionalName,\n AutocompleteFamilyName,\n AutocompleteHonorificSuffix,\n AutocompleteNickname,\n AutocompleteEmail,\n AutocompleteUsername,\n AutocompleteNewPassword,\n AutocompleteCurrentPassword,\n AutocompleteOneTimeCode,\n AutocompleteOrganizationTitle,\n AutocompleteOrganization,\n AutocompleteStreetAddress,\n AutocompleteAddressLine1,\n AutocompleteAddressLine2,\n AutocompleteAddressLine3,\n AutocompleteAddressLevel1,\n AutocompleteAddressLevel2,\n AutocompleteAddressLevel3,\n AutocompleteAddressLevel4,\n AutocompleteCountry,\n AutocompleteCountryName,\n AutocompletePostalCode,\n AutocompleteCreditCardName,\n AutocompleteCreditCardGivenName,\n AutocompleteCreditCardAdditionalName,\n AutocompleteCreditCardFamilyName,\n AutocompleteCreditCardNumber,\n AutocompleteCreditCardExpiration,\n AutocompleteCreditCardExpirationMonth,\n AutocompleteCreditCardExpirationYear,\n AutocompleteCreditCardSecurityCode,\n AutocompleteCreditCardType,\n AutocompleteTransactionCurrency,\n AutocompleteTransactionAmount,\n AutocompleteLanguage,\n AutocompleteBirthday,\n AutocompleteBirthdayDay,\n AutocompleteBirthdayMonth,\n AutocompleteBirthdayYear,\n AutocompleteSex,\n AutocompleteTelephone,\n AutocompleteTelephoneCountryCode,\n AutocompleteTelephoneNational,\n AutocompleteTelephoneAreaCode,\n AutocompleteTelephoneLocal,\n AutocompleteTelephoneLocalPrefix,\n AutocompleteTelephoneLocalSuffix,\n AutocompleteTelephoneExtension,\n AutocompleteIMPP,\n AutocompleteURL,\n AutocompletePhoto,\n renderAutocompleteType,\n eqAutocompleteType,\n ordAutocompleteType\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nvar ButtonButton = /* #__PURE__ */ (function () {\n function ButtonButton() {\n\n };\n ButtonButton.value = new ButtonButton();\n return ButtonButton;\n})();\nvar ButtonSubmit = /* #__PURE__ */ (function () {\n function ButtonSubmit() {\n\n };\n ButtonSubmit.value = new ButtonSubmit();\n return ButtonSubmit;\n})();\nvar ButtonReset = /* #__PURE__ */ (function () {\n function ButtonReset() {\n\n };\n ButtonReset.value = new ButtonReset();\n return ButtonReset;\n})();\nvar renderButtonType = function (v) {\n if (v instanceof ButtonButton) {\n return \"button\";\n };\n if (v instanceof ButtonSubmit) {\n return \"submit\";\n };\n if (v instanceof ButtonReset) {\n return \"reset\";\n };\n throw new Error(\"Failed pattern match at DOM.HTML.Indexed.ButtonType (line 14, column 20 - line 17, column 25): \" + [ v.constructor.name ]);\n};\nvar eqButtonType = {\n eq: function (x) {\n return function (y) {\n if (x instanceof ButtonButton && y instanceof ButtonButton) {\n return true;\n };\n if (x instanceof ButtonSubmit && y instanceof ButtonSubmit) {\n return true;\n };\n if (x instanceof ButtonReset && y instanceof ButtonReset) {\n return true;\n };\n return false;\n };\n }\n};\nvar ordButtonType = {\n compare: function (x) {\n return function (y) {\n if (x instanceof ButtonButton && y instanceof ButtonButton) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof ButtonButton) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof ButtonButton) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof ButtonSubmit && y instanceof ButtonSubmit) {\n return Data_Ordering.EQ.value;\n };\n if (x instanceof ButtonSubmit) {\n return Data_Ordering.LT.value;\n };\n if (y instanceof ButtonSubmit) {\n return Data_Ordering.GT.value;\n };\n if (x instanceof ButtonReset && y instanceof ButtonReset) {\n return Data_Ordering.EQ.value;\n };\n throw new Error(\"Failed pattern match at DOM.HTML.Indexed.ButtonType (line 0, column 0 - line 0, column 0): \" + [ x.constructor.name, y.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqButtonType;\n }\n};\nexport {\n ButtonButton,\n ButtonSubmit,\n ButtonReset,\n renderButtonType,\n eqButtonType,\n ordButtonType\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nvar RefLabel = function (x) {\n return x;\n};\nvar RefUpdate = /* #__PURE__ */ (function () {\n function RefUpdate(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n RefUpdate.create = function (value0) {\n return function (value1) {\n return new RefUpdate(value0, value1);\n };\n };\n return RefUpdate;\n})();\nvar Action = /* #__PURE__ */ (function () {\n function Action(value0) {\n this.value0 = value0;\n };\n Action.create = function (value0) {\n return new Action(value0);\n };\n return Action;\n})();\nvar ordRefLabel = Data_Ord.ordString;\nvar newtypeRefLabel = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar functorInput = {\n map: function (f) {\n return function (m) {\n if (m instanceof RefUpdate) {\n return new RefUpdate(m.value0, m.value1);\n };\n if (m instanceof Action) {\n return new Action(f(m.value0));\n };\n throw new Error(\"Failed pattern match at Halogen.Query.Input (line 0, column 0 - line 0, column 0): \" + [ m.constructor.name ]);\n };\n }\n};\nvar eqRefLabel = Data_Eq.eqString;\nexport {\n RefLabel,\n RefUpdate,\n Action,\n newtypeRefLabel,\n eqRefLabel,\n ordRefLabel,\n functorInput\n};\n", "// Generated by purs version 0.15.14\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar Step = /* #__PURE__ */ (function () {\n function Step(value0, value1, value2, value3) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n this.value3 = value3;\n };\n Step.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return function (value3) {\n return new Step(value0, value1, value2, value3);\n };\n };\n };\n };\n return Step;\n})();\nvar unStep = Unsafe_Coerce.unsafeCoerce;\nvar step = function (v, a) {\n return v.value2(v.value1, a);\n};\nvar mkStep = Unsafe_Coerce.unsafeCoerce;\nvar halt = function (v) {\n return v.value3(v.value1);\n};\nvar extract = /* #__PURE__ */ unStep(function (v) {\n return v.value0;\n});\nexport {\n Step,\n mkStep,\n unStep,\n extract,\n step,\n halt\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Bifunctor from \"../Data.Bifunctor/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorArray);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Data_Tuple.functorTuple);\nvar Namespace = function (x) {\n return x;\n};\nvar ElemName = function (x) {\n return x;\n};\nvar Text = /* #__PURE__ */ (function () {\n function Text(value0) {\n this.value0 = value0;\n };\n Text.create = function (value0) {\n return new Text(value0);\n };\n return Text;\n})();\nvar Elem = /* #__PURE__ */ (function () {\n function Elem(value0, value1, value2, value3) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n this.value3 = value3;\n };\n Elem.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return function (value3) {\n return new Elem(value0, value1, value2, value3);\n };\n };\n };\n };\n return Elem;\n})();\nvar Keyed = /* #__PURE__ */ (function () {\n function Keyed(value0, value1, value2, value3) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n this.value3 = value3;\n };\n Keyed.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return function (value3) {\n return new Keyed(value0, value1, value2, value3);\n };\n };\n };\n };\n return Keyed;\n})();\nvar Widget = /* #__PURE__ */ (function () {\n function Widget(value0) {\n this.value0 = value0;\n };\n Widget.create = function (value0) {\n return new Widget(value0);\n };\n return Widget;\n})();\nvar Grafted = /* #__PURE__ */ (function () {\n function Grafted(value0) {\n this.value0 = value0;\n };\n Grafted.create = function (value0) {\n return new Grafted(value0);\n };\n return Grafted;\n})();\nvar Graft = /* #__PURE__ */ (function () {\n function Graft(value0, value1, value2) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n };\n Graft.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return new Graft(value0, value1, value2);\n };\n };\n };\n return Graft;\n})();\nvar unGraft = function (f) {\n return function ($61) {\n return f($61);\n };\n};\nvar ordNamespace = Data_Ord.ordString;\nvar ordElemName = Data_Ord.ordString;\nvar newtypeNamespace = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar newtypeElemName = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar graft = Unsafe_Coerce.unsafeCoerce;\nvar functorGraft = {\n map: function (g) {\n return unGraft(function (v) {\n return graft(new Graft(v.value0, function ($62) {\n return g(v.value1($62));\n }, v.value2));\n });\n }\n};\nvar map2 = /* #__PURE__ */ Data_Functor.map(functorGraft);\nvar functorVDom = {\n map: function (v) {\n return function (v1) {\n if (v1 instanceof Text) {\n return new Text(v1.value0);\n };\n if (v1 instanceof Grafted) {\n return new Grafted(map2(v)(v1.value0));\n };\n return new Grafted(graft(new Graft(identity, v, v1)));\n };\n }\n};\nvar eqNamespace = Data_Eq.eqString;\nvar eqElemName = Data_Eq.eqString;\nvar bifunctorGraft = {\n bimap: function (f) {\n return function (g) {\n return unGraft(function (v) {\n return graft(new Graft(function ($63) {\n return f(v.value0($63));\n }, function ($64) {\n return g(v.value1($64));\n }, v.value2));\n });\n };\n }\n};\nvar bimap = /* #__PURE__ */ Data_Bifunctor.bimap(bifunctorGraft);\nvar bifunctorVDom = {\n bimap: function (v) {\n return function (v1) {\n return function (v2) {\n if (v2 instanceof Text) {\n return new Text(v2.value0);\n };\n if (v2 instanceof Grafted) {\n return new Grafted(bimap(v)(v1)(v2.value0));\n };\n return new Grafted(graft(new Graft(v, v1, v2)));\n };\n };\n }\n};\nvar runGraft = /* #__PURE__ */ unGraft(function (v) {\n var go = function (v2) {\n if (v2 instanceof Text) {\n return new Text(v2.value0);\n };\n if (v2 instanceof Elem) {\n return new Elem(v2.value0, v2.value1, v.value0(v2.value2), map(go)(v2.value3));\n };\n if (v2 instanceof Keyed) {\n return new Keyed(v2.value0, v2.value1, v.value0(v2.value2), map(map1(go))(v2.value3));\n };\n if (v2 instanceof Widget) {\n return new Widget(v.value1(v2.value0));\n };\n if (v2 instanceof Grafted) {\n return new Grafted(bimap(v.value0)(v.value1)(v2.value0));\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.Types (line 86, column 7 - line 86, column 27): \" + [ v2.constructor.name ]);\n };\n return go(v.value2);\n});\nvar renderWidget = function (f) {\n return function (g) {\n return function (v) {\n if (v instanceof Text) {\n return new Text(v.value0);\n };\n if (v instanceof Elem) {\n return new Elem(v.value0, v.value1, f(v.value2), map(renderWidget(f)(g))(v.value3));\n };\n if (v instanceof Keyed) {\n return new Keyed(v.value0, v.value1, f(v.value2), map(map1(renderWidget(f)(g)))(v.value3));\n };\n if (v instanceof Widget) {\n return g(v.value0);\n };\n if (v instanceof Grafted) {\n return renderWidget(f)(g)(runGraft(v.value0));\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.Types (line 48, column 20 - line 53, column 48): \" + [ v.constructor.name ]);\n };\n };\n};\nexport {\n Text,\n Elem,\n Keyed,\n Widget,\n Grafted,\n renderWidget,\n Graft,\n graft,\n unGraft,\n runGraft,\n ElemName,\n Namespace,\n functorVDom,\n bifunctorVDom,\n functorGraft,\n bifunctorGraft,\n newtypeElemName,\n eqElemName,\n ordElemName,\n newtypeNamespace,\n eqNamespace,\n ordNamespace\n};\n", "\"use strict\";\n\nexport function unsafeGetAny(key, obj) {\n return obj[key];\n}\n\nexport function unsafeHasAny(key, obj) {\n return obj.hasOwnProperty(key);\n}\n\nexport function unsafeSetAny(key, val, obj) {\n obj[key] = val;\n}\n\nexport function unsafeDeleteAny(key, obj) {\n delete obj[key];\n}\n\nexport function forE(a, f) {\n var b = [];\n for (var i = 0; i < a.length; i++) {\n b.push(f(i, a[i]));\n }\n return b;\n}\n\nexport function forEachE(a, f) {\n for (var i = 0; i < a.length; i++) {\n f(a[i]);\n }\n}\n\nexport function forInE(o, f) {\n var ks = Object.keys(o);\n for (var i = 0; i < ks.length; i++) {\n var k = ks[i];\n f(k, o[k]);\n }\n}\n\nexport function replicateE(n, f) {\n for (var i = 0; i < n; i++) {\n f();\n }\n}\n\nexport function diffWithIxE(a1, a2, f1, f2, f3) {\n var a3 = [];\n var l1 = a1.length;\n var l2 = a2.length;\n var i = 0;\n while (1) {\n if (i < l1) {\n if (i < l2) {\n a3.push(f1(i, a1[i], a2[i]));\n } else {\n f2(i, a1[i]);\n }\n } else if (i < l2) {\n a3.push(f3(i, a2[i]));\n } else {\n break;\n }\n i++;\n }\n return a3;\n}\n\nexport function strMapWithIxE(as, fk, f) {\n var o = {};\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n var k = fk(a);\n o[k] = f(k, i, a);\n }\n return o;\n}\n\nexport function diffWithKeyAndIxE(o1, as, fk, f1, f2, f3) {\n var o2 = {};\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n var k = fk(a);\n if (o1.hasOwnProperty(k)) {\n o2[k] = f1(k, i, o1[k], a);\n } else {\n o2[k] = f3(k, i, a);\n }\n }\n for (var k in o1) {\n if (k in o2) {\n continue;\n }\n f2(k, o1[k]);\n }\n return o2;\n}\n\nexport function refEq(a, b) {\n return a === b;\n}\n\nexport function createTextNode(s, doc) {\n return doc.createTextNode(s);\n}\n\nexport function setTextContent(s, n) {\n n.textContent = s;\n}\n\nexport function createElement(ns, name, doc) {\n if (ns != null) {\n return doc.createElementNS(ns, name);\n } else {\n return doc.createElement(name)\n }\n}\n\nexport function insertChildIx(i, a, b) {\n var n = b.childNodes.item(i) || null;\n if (n !== a) {\n b.insertBefore(a, n);\n }\n}\n\nexport function removeChild(a, b) {\n if (b && a.parentNode === b) {\n b.removeChild(a);\n }\n}\n\nexport function parentNode(a) {\n return a.parentNode;\n}\n\nexport function setAttribute(ns, attr, val, el) {\n if (ns != null) {\n el.setAttributeNS(ns, attr, val);\n } else {\n el.setAttribute(attr, val);\n }\n}\n\nexport function removeAttribute(ns, attr, el) {\n if (ns != null) {\n el.removeAttributeNS(ns, attr);\n } else {\n el.removeAttribute(attr);\n }\n}\n\nexport function hasAttribute(ns, attr, el) {\n if (ns != null) {\n return el.hasAttributeNS(ns, attr);\n } else {\n return el.hasAttribute(attr);\n }\n}\n\nexport function addEventListener(ev, listener, el) {\n el.addEventListener(ev, listener, false);\n}\n\nexport function removeEventListener(ev, listener, el) {\n el.removeEventListener(ev, listener, false);\n}\n\nexport var jsUndefined = void 0;\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Foreign_Object_ST from \"../Foreign.Object.ST/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar unsafeLookup = $foreign.unsafeGetAny;\nvar unsafeFreeze = Unsafe_Coerce.unsafeCoerce;\nvar pokeMutMap = $foreign.unsafeSetAny;\nvar newMutMap = Foreign_Object_ST[\"new\"];\nvar deleteMutMap = $foreign.unsafeDeleteAny;\nexport {\n unsafeGetAny,\n unsafeHasAny,\n unsafeSetAny,\n unsafeDeleteAny,\n forE,\n forEachE,\n forInE,\n replicateE,\n diffWithIxE,\n diffWithKeyAndIxE,\n strMapWithIxE,\n refEq,\n createTextNode,\n setTextContent,\n createElement,\n insertChildIx,\n removeChild,\n parentNode,\n setAttribute,\n removeAttribute,\n hasAttribute,\n addEventListener,\n removeEventListener,\n jsUndefined\n} from \"./foreign.js\";\nexport {\n newMutMap,\n pokeMutMap,\n deleteMutMap,\n unsafeFreeze,\n unsafeLookup\n};\n", "var getProp = function (name) {\n return function (doctype) {\n return doctype[name];\n };\n};\n\nexport const _namespaceURI = getProp(\"namespaceURI\");\nexport const _prefix = getProp(\"prefix\");\nexport const localName = getProp(\"localName\");\nexport const tagName = getProp(\"tagName\");\n\nexport function id(node) {\n return function () {\n return node.id;\n };\n}\n\nexport function setId(id) {\n return function (node) {\n return function () {\n node.id = id;\n };\n };\n}\n\nexport function className(node) {\n return function () {\n return node.className;\n };\n}\n\nexport function classList(element) {\n return function () {\n return element.classList;\n };\n}\n\nexport function setClassName(className) {\n return function (node) {\n return function () {\n node.className = className;\n };\n };\n}\n\nexport function getElementsByTagName(localName) {\n return function (doc) {\n return function () {\n return doc.getElementsByTagName(localName);\n };\n };\n}\n\nexport function _getElementsByTagNameNS(ns) {\n return function (localName) {\n return function (doc) {\n return function () {\n return doc.getElementsByTagNameNS(ns, localName);\n };\n };\n };\n}\n\nexport function getElementsByClassName(classNames) {\n return function (doc) {\n return function () {\n return doc.getElementsByClassName(classNames);\n };\n };\n}\n\nexport function setAttribute(name) {\n return function (value) {\n return function (element) {\n return function () {\n element.setAttribute(name, value);\n };\n };\n };\n}\n\nexport function _getAttribute(name) {\n return function (element) {\n return function () {\n return element.getAttribute(name);\n };\n };\n}\n\nexport function hasAttribute(name) {\n return function (element) {\n return function () {\n return element.hasAttribute(name);\n };\n };\n}\n\nexport function removeAttribute(name) {\n return function (element) {\n return function () {\n element.removeAttribute(name);\n };\n };\n}\n\nexport function matches(selector) {\n return function(element) {\n return function () {\n return element.matches(selector);\n };\n };\n}\n\nexport function _closest(selector) {\n return function(element) {\n return function () {\n return element.closest(selector);\n };\n };\n}\n\n// - CSSOM ---------------------------------------------------------------------\n\nexport function scrollTop(node) {\n return function () {\n return node.scrollTop;\n };\n}\n\nexport function setScrollTop(scrollTop) {\n return function (node) {\n return function () {\n node.scrollTop = scrollTop;\n };\n };\n}\n\nexport function scrollLeft(node) {\n return function () {\n return node.scrollLeft;\n };\n}\n\nexport function setScrollLeft(scrollLeft) {\n return function (node) {\n return function () {\n node.scrollLeft = scrollLeft;\n };\n };\n}\n\nexport function scrollWidth(el) {\n return function () {\n return el.scrollWidth;\n };\n}\n\nexport function scrollHeight(el) {\n return function () {\n return el.scrollHeight;\n };\n}\n\nexport function clientTop(el) {\n return function () {\n return el.clientTop;\n };\n}\n\nexport function clientLeft(el) {\n return function () {\n return el.clientLeft;\n };\n}\n\nexport function clientWidth(el) {\n return function () {\n return el.clientWidth;\n };\n}\n\nexport function clientHeight(el) {\n return function () {\n return el.clientHeight;\n };\n}\n\nexport function getBoundingClientRect(el) {\n return function () {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.width,\n height: rect.height,\n x: rect.x,\n y: rect.y\n };\n };\n}\n\nexport function _attachShadow(props) {\n return function (el) {\n return function() {\n return el.attachShadow(props);\n };\n };\n}\n", "var getEffProp = function (name) {\n return function (node) {\n return function () {\n return node[name];\n };\n };\n};\n\nexport const children = getEffProp(\"children\");\nexport const _firstElementChild = getEffProp(\"firstElementChild\");\nexport const _lastElementChild = getEffProp(\"lastElementChild\");\nexport const childElementCount = getEffProp(\"childElementCount\");\n\nexport function _querySelector(selector) {\n return function (node) {\n return function () {\n return node.querySelector(selector);\n };\n };\n}\n\nexport function querySelectorAll(selector) {\n return function (node) {\n return function () {\n return node.querySelectorAll(selector);\n };\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar QuerySelector = function (x) {\n return x;\n};\nvar querySelector = function (qs) {\n var $2 = map(Data_Nullable.toMaybe);\n var $3 = $foreign[\"_querySelector\"](qs);\n return function ($4) {\n return $2($3($4));\n };\n};\nvar ordQuerySelector = Data_Ord.ordString;\nvar newtypeQuerySelector = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar lastElementChild = /* #__PURE__ */ (function () {\n var $5 = map(Data_Nullable.toMaybe);\n return function ($6) {\n return $5($foreign[\"_lastElementChild\"]($6));\n };\n})();\nvar firstElementChild = /* #__PURE__ */ (function () {\n var $7 = map(Data_Nullable.toMaybe);\n return function ($8) {\n return $7($foreign[\"_firstElementChild\"]($8));\n };\n})();\nvar eqQuerySelector = Data_Eq.eqString;\nexport {\n children,\n childElementCount,\n querySelectorAll\n} from \"./foreign.js\";\nexport {\n firstElementChild,\n lastElementChild,\n QuerySelector,\n querySelector,\n eqQuerySelector,\n ordQuerySelector,\n newtypeQuerySelector\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nimport * as Web_DOM_Internal_Types from \"../Web.DOM.Internal.Types/index.js\";\nimport * as Web_DOM_ParentNode from \"../Web.DOM.ParentNode/index.js\";\nimport * as Web_DOM_ShadowRoot from \"../Web.DOM.ShadowRoot/index.js\";\nimport * as Web_Internal_FFI from \"../Web.Internal.FFI/index.js\";\nvar show = /* #__PURE__ */ Data_Show.show(Web_DOM_ShadowRoot.showShadowRootMode);\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar toParentNode = Unsafe_Coerce.unsafeCoerce;\nvar toNonDocumentTypeChildNode = Unsafe_Coerce.unsafeCoerce;\nvar toNode = Unsafe_Coerce.unsafeCoerce;\nvar toEventTarget = Unsafe_Coerce.unsafeCoerce;\nvar toChildNode = Unsafe_Coerce.unsafeCoerce;\nvar prefix = function ($3) {\n return Data_Nullable.toMaybe($foreign[\"_prefix\"]($3));\n};\nvar namespaceURI = function ($4) {\n return Data_Nullable.toMaybe($foreign[\"_namespaceURI\"]($4));\n};\nvar initToProps = function (init) {\n return {\n mode: show(init.mode),\n delegatesFocus: init.delegatesFocus\n };\n};\nvar getElementsByTagNameNS = function ($5) {\n return $foreign[\"_getElementsByTagNameNS\"](Data_Nullable.toNullable($5));\n};\nvar getAttribute = function (attr) {\n var $6 = map(Data_Nullable.toMaybe);\n var $7 = $foreign[\"_getAttribute\"](attr);\n return function ($8) {\n return $6($7($8));\n };\n};\nvar fromParentNode = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"Element\");\nvar fromNonDocumentTypeChildNode = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"Element\");\nvar fromNode = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"Element\");\nvar fromEventTarget = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"Element\");\nvar fromChildNode = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"Element\");\nvar closest = function (qs) {\n var $9 = map(Data_Nullable.toMaybe);\n var $10 = $foreign[\"_closest\"](qs);\n return function ($11) {\n return $9($10($11));\n };\n};\nvar attachShadow = function ($12) {\n return $foreign[\"_attachShadow\"](initToProps($12));\n};\nexport {\n localName,\n tagName,\n id,\n setId,\n className,\n classList,\n setClassName,\n getElementsByTagName,\n getElementsByClassName,\n setAttribute,\n hasAttribute,\n removeAttribute,\n matches,\n scrollTop,\n setScrollTop,\n scrollLeft,\n setScrollLeft,\n scrollWidth,\n scrollHeight,\n clientTop,\n clientLeft,\n clientWidth,\n clientHeight,\n getBoundingClientRect\n} from \"./foreign.js\";\nexport {\n fromNode,\n fromChildNode,\n fromNonDocumentTypeChildNode,\n fromParentNode,\n fromEventTarget,\n toNode,\n toChildNode,\n toNonDocumentTypeChildNode,\n toParentNode,\n toEventTarget,\n namespaceURI,\n prefix,\n getElementsByTagNameNS,\n getAttribute,\n closest,\n attachShadow\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Halogen_VDom_Machine from \"../Halogen.VDom.Machine/index.js\";\nimport * as Halogen_VDom_Types from \"../Halogen.VDom.Types/index.js\";\nimport * as Halogen_VDom_Util from \"../Halogen.VDom.Util/index.js\";\nimport * as Web_DOM_Element from \"../Web.DOM.Element/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar VDomSpec = function (x) {\n return x;\n};\nvar haltWidget = function (v) {\n return Halogen_VDom_Machine.halt(v.widget);\n};\nvar $lazy_patchWidget = /* #__PURE__ */ $runtime_lazy(\"patchWidget\", \"Halogen.VDom.DOM\", function () {\n return function (state, vdom) {\n if (vdom instanceof Halogen_VDom_Types.Grafted) {\n return $lazy_patchWidget(291)(state, Halogen_VDom_Types.runGraft(vdom.value0));\n };\n if (vdom instanceof Halogen_VDom_Types.Widget) {\n var res = Halogen_VDom_Machine.step(state.widget, vdom.value0);\n var res$prime = Halogen_VDom_Machine.unStep(function (v) {\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(v.value0, {\n build: state.build,\n widget: res\n }, $lazy_patchWidget(296), haltWidget));\n })(res);\n return res$prime;\n };\n haltWidget(state);\n return state.build(vdom);\n };\n});\nvar patchWidget = /* #__PURE__ */ $lazy_patchWidget(286);\nvar haltText = function (v) {\n var parent = Halogen_VDom_Util.parentNode(v.node);\n return Halogen_VDom_Util.removeChild(v.node, parent);\n};\nvar $lazy_patchText = /* #__PURE__ */ $runtime_lazy(\"patchText\", \"Halogen.VDom.DOM\", function () {\n return function (state, vdom) {\n if (vdom instanceof Halogen_VDom_Types.Grafted) {\n return $lazy_patchText(82)(state, Halogen_VDom_Types.runGraft(vdom.value0));\n };\n if (vdom instanceof Halogen_VDom_Types.Text) {\n if (state.value === vdom.value0) {\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, state, $lazy_patchText(85), haltText));\n };\n if (Data_Boolean.otherwise) {\n var nextState = {\n build: state.build,\n node: state.node,\n value: vdom.value0\n };\n Halogen_VDom_Util.setTextContent(vdom.value0, state.node);\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, $lazy_patchText(89), haltText));\n };\n };\n haltText(state);\n return state.build(vdom);\n };\n});\nvar patchText = /* #__PURE__ */ $lazy_patchText(77);\nvar haltKeyed = function (v) {\n var parent = Halogen_VDom_Util.parentNode(v.node);\n Halogen_VDom_Util.removeChild(v.node, parent);\n Halogen_VDom_Util.forInE(v.children, function (v1, s) {\n return Halogen_VDom_Machine.halt(s);\n });\n return Halogen_VDom_Machine.halt(v.attrs);\n};\nvar haltElem = function (v) {\n var parent = Halogen_VDom_Util.parentNode(v.node);\n Halogen_VDom_Util.removeChild(v.node, parent);\n Halogen_VDom_Util.forEachE(v.children, Halogen_VDom_Machine.halt);\n return Halogen_VDom_Machine.halt(v.attrs);\n};\nvar eqElemSpec = function (ns1, v, ns2, v1) {\n var $63 = v === v1;\n if ($63) {\n if (ns1 instanceof Data_Maybe.Just && (ns2 instanceof Data_Maybe.Just && ns1.value0 === ns2.value0)) {\n return true;\n };\n if (ns1 instanceof Data_Maybe.Nothing && ns2 instanceof Data_Maybe.Nothing) {\n return true;\n };\n return false;\n };\n return false;\n};\nvar $lazy_patchElem = /* #__PURE__ */ $runtime_lazy(\"patchElem\", \"Halogen.VDom.DOM\", function () {\n return function (state, vdom) {\n if (vdom instanceof Halogen_VDom_Types.Grafted) {\n return $lazy_patchElem(135)(state, Halogen_VDom_Types.runGraft(vdom.value0));\n };\n if (vdom instanceof Halogen_VDom_Types.Elem && eqElemSpec(state.ns, state.name, vdom.value0, vdom.value1)) {\n var v = Data_Array.length(vdom.value3);\n var v1 = Data_Array.length(state.children);\n if (v1 === 0 && v === 0) {\n var attrs2 = Halogen_VDom_Machine.step(state.attrs, vdom.value2);\n var nextState = {\n build: state.build,\n node: state.node,\n attrs: attrs2,\n ns: vdom.value0,\n name: vdom.value1,\n children: state.children\n };\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, $lazy_patchElem(149), haltElem));\n };\n var onThis = function (v2, s) {\n return Halogen_VDom_Machine.halt(s);\n };\n var onThese = function (ix, s, v2) {\n var res = Halogen_VDom_Machine.step(s, v2);\n Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), state.node);\n return res;\n };\n var onThat = function (ix, v2) {\n var res = state.build(v2);\n Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), state.node);\n return res;\n };\n var children2 = Halogen_VDom_Util.diffWithIxE(state.children, vdom.value3, onThese, onThis, onThat);\n var attrs2 = Halogen_VDom_Machine.step(state.attrs, vdom.value2);\n var nextState = {\n build: state.build,\n node: state.node,\n attrs: attrs2,\n ns: vdom.value0,\n name: vdom.value1,\n children: children2\n };\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, $lazy_patchElem(172), haltElem));\n };\n haltElem(state);\n return state.build(vdom);\n };\n});\nvar patchElem = /* #__PURE__ */ $lazy_patchElem(130);\nvar $lazy_patchKeyed = /* #__PURE__ */ $runtime_lazy(\"patchKeyed\", \"Halogen.VDom.DOM\", function () {\n return function (state, vdom) {\n if (vdom instanceof Halogen_VDom_Types.Grafted) {\n return $lazy_patchKeyed(222)(state, Halogen_VDom_Types.runGraft(vdom.value0));\n };\n if (vdom instanceof Halogen_VDom_Types.Keyed && eqElemSpec(state.ns, state.name, vdom.value0, vdom.value1)) {\n var v = Data_Array.length(vdom.value3);\n if (state.length === 0 && v === 0) {\n var attrs2 = Halogen_VDom_Machine.step(state.attrs, vdom.value2);\n var nextState = {\n build: state.build,\n node: state.node,\n attrs: attrs2,\n ns: vdom.value0,\n name: vdom.value1,\n children: state.children,\n length: 0\n };\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, $lazy_patchKeyed(237), haltKeyed));\n };\n var onThis = function (v2, s) {\n return Halogen_VDom_Machine.halt(s);\n };\n var onThese = function (v2, ix$prime, s, v3) {\n var res = Halogen_VDom_Machine.step(s, v3.value1);\n Halogen_VDom_Util.insertChildIx(ix$prime, Halogen_VDom_Machine.extract(res), state.node);\n return res;\n };\n var onThat = function (v2, ix, v3) {\n var res = state.build(v3.value1);\n Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), state.node);\n return res;\n };\n var children2 = Halogen_VDom_Util.diffWithKeyAndIxE(state.children, vdom.value3, Data_Tuple.fst, onThese, onThis, onThat);\n var attrs2 = Halogen_VDom_Machine.step(state.attrs, vdom.value2);\n var nextState = {\n build: state.build,\n node: state.node,\n attrs: attrs2,\n ns: vdom.value0,\n name: vdom.value1,\n children: children2,\n length: v\n };\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(state.node, nextState, $lazy_patchKeyed(261), haltKeyed));\n };\n haltKeyed(state);\n return state.build(vdom);\n };\n});\nvar patchKeyed = /* #__PURE__ */ $lazy_patchKeyed(217);\nvar buildWidget = function (v, build, w) {\n var res = v.buildWidget(v)(w);\n var res$prime = Halogen_VDom_Machine.unStep(function (v1) {\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(v1.value0, {\n build: build,\n widget: res\n }, patchWidget, haltWidget));\n })(res);\n return res$prime;\n};\nvar buildText = function (v, build, s) {\n var node = Halogen_VDom_Util.createTextNode(s, v.document);\n var state = {\n build: build,\n node: node,\n value: s\n };\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(node, state, patchText, haltText));\n};\nvar buildKeyed = function (v, build, ns1, name1, as1, ch1) {\n var el = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(ns1), name1, v.document);\n var node = Web_DOM_Element.toNode(el);\n var onChild = function (v1, ix, v2) {\n var res = build(v2.value1);\n Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), node);\n return res;\n };\n var children = Halogen_VDom_Util.strMapWithIxE(ch1, Data_Tuple.fst, onChild);\n var attrs = v.buildAttributes(el)(as1);\n var state = {\n build: build,\n node: node,\n attrs: attrs,\n ns: ns1,\n name: name1,\n children: children,\n length: Data_Array.length(ch1)\n };\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(node, state, patchKeyed, haltKeyed));\n};\nvar buildElem = function (v, build, ns1, name1, as1, ch1) {\n var el = Halogen_VDom_Util.createElement(Data_Nullable.toNullable(ns1), name1, v.document);\n var node = Web_DOM_Element.toNode(el);\n var onChild = function (ix, child) {\n var res = build(child);\n Halogen_VDom_Util.insertChildIx(ix, Halogen_VDom_Machine.extract(res), node);\n return res;\n };\n var children = Halogen_VDom_Util.forE(ch1, onChild);\n var attrs = v.buildAttributes(el)(as1);\n var state = {\n build: build,\n node: node,\n attrs: attrs,\n ns: ns1,\n name: name1,\n children: children\n };\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(node, state, patchElem, haltElem));\n};\nvar buildVDom = function (spec) {\n var $lazy_build = $runtime_lazy(\"build\", \"Halogen.VDom.DOM\", function () {\n return function (v) {\n if (v instanceof Halogen_VDom_Types.Text) {\n return buildText(spec, $lazy_build(59), v.value0);\n };\n if (v instanceof Halogen_VDom_Types.Elem) {\n return buildElem(spec, $lazy_build(60), v.value0, v.value1, v.value2, v.value3);\n };\n if (v instanceof Halogen_VDom_Types.Keyed) {\n return buildKeyed(spec, $lazy_build(61), v.value0, v.value1, v.value2, v.value3);\n };\n if (v instanceof Halogen_VDom_Types.Widget) {\n return buildWidget(spec, $lazy_build(62), v.value0);\n };\n if (v instanceof Halogen_VDom_Types.Grafted) {\n return $lazy_build(63)(Halogen_VDom_Types.runGraft(v.value0));\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.DOM (line 58, column 27 - line 63, column 52): \" + [ v.constructor.name ]);\n };\n });\n var build = $lazy_build(58);\n return build;\n};\nexport {\n VDomSpec,\n buildVDom,\n buildText,\n buildElem,\n buildKeyed,\n buildWidget\n};\n", "export function eventListener(fn) {\n return function () {\n return function (event) {\n return fn(event)();\n };\n };\n}\n\nexport function addEventListenerWithOptions(type) {\n return function (listener) {\n return function (options) {\n return function (target) {\n return function () {\n return target.addEventListener(type, listener, options);\n };\n };\n };\n };\n}\n\nexport function addEventListener(type) {\n return function (listener) {\n return function (useCapture) {\n return function (target) {\n return function () {\n return target.addEventListener(type, listener, useCapture);\n };\n };\n };\n };\n}\n\nexport function removeEventListener(type) {\n return function (listener) {\n return function (useCapture) {\n return function (target) {\n return function () {\n return target.removeEventListener(type, listener, useCapture);\n };\n };\n };\n };\n}\n\nexport function dispatchEvent(event) {\n return function (target) {\n return function () {\n return target.dispatchEvent(event);\n };\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect_Ref from \"../Effect.Ref/index.js\";\nimport * as Foreign from \"../Foreign/index.js\";\nimport * as Foreign_Object from \"../Foreign.Object/index.js\";\nimport * as Halogen_VDom_Machine from \"../Halogen.VDom.Machine/index.js\";\nimport * as Halogen_VDom_Util from \"../Halogen.VDom.Util/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nimport * as Web_Event_EventTarget from \"../Web.Event.EventTarget/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorFn);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar Created = /* #__PURE__ */ (function () {\n function Created(value0) {\n this.value0 = value0;\n };\n Created.create = function (value0) {\n return new Created(value0);\n };\n return Created;\n})();\nvar Removed = /* #__PURE__ */ (function () {\n function Removed(value0) {\n this.value0 = value0;\n };\n Removed.create = function (value0) {\n return new Removed(value0);\n };\n return Removed;\n})();\nvar Attribute = /* #__PURE__ */ (function () {\n function Attribute(value0, value1, value2) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n };\n Attribute.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return new Attribute(value0, value1, value2);\n };\n };\n };\n return Attribute;\n})();\nvar Property = /* #__PURE__ */ (function () {\n function Property(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Property.create = function (value0) {\n return function (value1) {\n return new Property(value0, value1);\n };\n };\n return Property;\n})();\nvar Handler = /* #__PURE__ */ (function () {\n function Handler(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Handler.create = function (value0) {\n return function (value1) {\n return new Handler(value0, value1);\n };\n };\n return Handler;\n})();\nvar Ref = /* #__PURE__ */ (function () {\n function Ref(value0) {\n this.value0 = value0;\n };\n Ref.create = function (value0) {\n return new Ref(value0);\n };\n return Ref;\n})();\nvar unsafeGetProperty = Halogen_VDom_Util.unsafeGetAny;\nvar setProperty = Halogen_VDom_Util.unsafeSetAny;\nvar removeProperty = function (key, el) {\n var v = Halogen_VDom_Util.hasAttribute(Data_Nullable[\"null\"], key, el);\n if (v) {\n return Halogen_VDom_Util.removeAttribute(Data_Nullable[\"null\"], key, el);\n };\n var v1 = Foreign.typeOf(Halogen_VDom_Util.unsafeGetAny(key, el));\n if (v1 === \"string\") {\n return Halogen_VDom_Util.unsafeSetAny(key, \"\", el);\n };\n if (key === \"rowSpan\") {\n return Halogen_VDom_Util.unsafeSetAny(key, 1, el);\n };\n if (key === \"colSpan\") {\n return Halogen_VDom_Util.unsafeSetAny(key, 1, el);\n };\n return Halogen_VDom_Util.unsafeSetAny(key, Halogen_VDom_Util.jsUndefined, el);\n};\nvar propToStrKey = function (v) {\n if (v instanceof Attribute && v.value0 instanceof Data_Maybe.Just) {\n return \"attr/\" + (v.value0.value0 + (\":\" + v.value1));\n };\n if (v instanceof Attribute) {\n return \"attr/:\" + v.value1;\n };\n if (v instanceof Property) {\n return \"prop/\" + v.value0;\n };\n if (v instanceof Handler) {\n return \"handler/\" + v.value0;\n };\n if (v instanceof Ref) {\n return \"ref\";\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.DOM.Prop (line 182, column 16 - line 187, column 16): \" + [ v.constructor.name ]);\n};\nvar propFromString = Unsafe_Coerce.unsafeCoerce;\nvar propFromNumber = Unsafe_Coerce.unsafeCoerce;\nvar propFromInt = Unsafe_Coerce.unsafeCoerce;\nvar propFromBoolean = Unsafe_Coerce.unsafeCoerce;\nvar functorProp = {\n map: function (v) {\n return function (v1) {\n if (v1 instanceof Handler) {\n return new Handler(v1.value0, map(map1(v))(v1.value1));\n };\n if (v1 instanceof Ref) {\n return new Ref(map(map1(v))(v1.value0));\n };\n return v1;\n };\n }\n};\nvar functorElemRef = {\n map: function (v) {\n return function (v1) {\n if (v1 instanceof Created) {\n return new Created(v(v1.value0));\n };\n if (v1 instanceof Removed) {\n return new Removed(v(v1.value0));\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.DOM.Prop (line 49, column 1 - line 51, column 36): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n }\n};\nvar buildProp = function (emit) {\n return function (el) {\n var removeProp = function (prevEvents) {\n return function (v, v1) {\n if (v1 instanceof Attribute) {\n return Halogen_VDom_Util.removeAttribute(Data_Nullable.toNullable(v1.value0), v1.value1, el);\n };\n if (v1 instanceof Property) {\n return removeProperty(v1.value0, el);\n };\n if (v1 instanceof Handler) {\n var handler = Halogen_VDom_Util.unsafeLookup(v1.value0, prevEvents);\n return Halogen_VDom_Util.removeEventListener(v1.value0, Data_Tuple.fst(handler), el);\n };\n if (v1 instanceof Ref) {\n return Data_Unit.unit;\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.DOM.Prop (line 169, column 5 - line 179, column 18): \" + [ v1.constructor.name ]);\n };\n };\n var mbEmit = function (v) {\n if (v instanceof Data_Maybe.Just) {\n return emit(v.value0)();\n };\n return Data_Unit.unit;\n };\n var haltProp = function (state) {\n var v = Foreign_Object.lookup(\"ref\")(state.props);\n if (v instanceof Data_Maybe.Just && v.value0 instanceof Ref) {\n return mbEmit(v.value0.value0(new Removed(el)));\n };\n return Data_Unit.unit;\n };\n var diffProp = function (prevEvents, events) {\n return function (v, v1, v11, v2) {\n if (v11 instanceof Attribute && v2 instanceof Attribute) {\n var $66 = v11.value2 === v2.value2;\n if ($66) {\n return v2;\n };\n Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);\n return v2;\n };\n if (v11 instanceof Property && v2 instanceof Property) {\n var v4 = Halogen_VDom_Util.refEq(v11.value1, v2.value1);\n if (v4) {\n return v2;\n };\n if (v2.value0 === \"value\") {\n var elVal = unsafeGetProperty(\"value\", el);\n var $75 = Halogen_VDom_Util.refEq(elVal, v2.value1);\n if ($75) {\n return v2;\n };\n setProperty(v2.value0, v2.value1, el);\n return v2;\n };\n setProperty(v2.value0, v2.value1, el);\n return v2;\n };\n if (v11 instanceof Handler && v2 instanceof Handler) {\n var handler = Halogen_VDom_Util.unsafeLookup(v2.value0, prevEvents);\n Effect_Ref.write(v2.value1)(Data_Tuple.snd(handler))();\n Halogen_VDom_Util.pokeMutMap(v2.value0, handler, events);\n return v2;\n };\n return v2;\n };\n };\n var applyProp = function (events) {\n return function (v, v1, v2) {\n if (v2 instanceof Attribute) {\n Halogen_VDom_Util.setAttribute(Data_Nullable.toNullable(v2.value0), v2.value1, v2.value2, el);\n return v2;\n };\n if (v2 instanceof Property) {\n setProperty(v2.value0, v2.value1, el);\n return v2;\n };\n if (v2 instanceof Handler) {\n var v3 = Halogen_VDom_Util.unsafeGetAny(v2.value0, events);\n if (Halogen_VDom_Util.unsafeHasAny(v2.value0, events)) {\n Effect_Ref.write(v2.value1)(Data_Tuple.snd(v3))();\n return v2;\n };\n var ref = Effect_Ref[\"new\"](v2.value1)();\n var listener = Web_Event_EventTarget.eventListener(function (ev) {\n return function __do() {\n var f$prime = Effect_Ref.read(ref)();\n return mbEmit(f$prime(ev));\n };\n })();\n Halogen_VDom_Util.pokeMutMap(v2.value0, new Data_Tuple.Tuple(listener, ref), events);\n Halogen_VDom_Util.addEventListener(v2.value0, listener, el);\n return v2;\n };\n if (v2 instanceof Ref) {\n mbEmit(v2.value0(new Created(el)));\n return v2;\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.DOM.Prop (line 113, column 5 - line 135, column 15): \" + [ v2.constructor.name ]);\n };\n };\n var $lazy_patchProp = $runtime_lazy(\"patchProp\", \"Halogen.VDom.DOM.Prop\", function () {\n return function (state, ps2) {\n var events = Halogen_VDom_Util.newMutMap();\n var onThis = removeProp(state.events);\n var onThese = diffProp(state.events, events);\n var onThat = applyProp(events);\n var props = Halogen_VDom_Util.diffWithKeyAndIxE(state.props, ps2, propToStrKey, onThese, onThis, onThat);\n var nextState = {\n events: Halogen_VDom_Util.unsafeFreeze(events),\n props: props\n };\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Data_Unit.unit, nextState, $lazy_patchProp(100), haltProp));\n };\n });\n var patchProp = $lazy_patchProp(87);\n var renderProp = function (ps1) {\n var events = Halogen_VDom_Util.newMutMap();\n var ps1$prime = Halogen_VDom_Util.strMapWithIxE(ps1, propToStrKey, applyProp(events));\n var state = {\n events: Halogen_VDom_Util.unsafeFreeze(events),\n props: ps1$prime\n };\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Data_Unit.unit, state, patchProp, haltProp));\n };\n return renderProp;\n };\n};\nexport {\n Attribute,\n Property,\n Handler,\n Ref,\n Created,\n Removed,\n propFromString,\n propFromBoolean,\n propFromInt,\n propFromNumber,\n buildProp,\n functorProp,\n functorElemRef\n};\n", "// Generated by purs version 0.15.14\nimport * as DOM_HTML_Indexed_AutocompleteType from \"../DOM.HTML.Indexed.AutocompleteType/index.js\";\nimport * as DOM_HTML_Indexed_ButtonType from \"../DOM.HTML.Indexed.ButtonType/index.js\";\nimport * as DOM_HTML_Indexed_CrossOriginValue from \"../DOM.HTML.Indexed.CrossOriginValue/index.js\";\nimport * as DOM_HTML_Indexed_DirValue from \"../DOM.HTML.Indexed.DirValue/index.js\";\nimport * as DOM_HTML_Indexed_FormMethod from \"../DOM.HTML.Indexed.FormMethod/index.js\";\nimport * as DOM_HTML_Indexed_InputAcceptType from \"../DOM.HTML.Indexed.InputAcceptType/index.js\";\nimport * as DOM_HTML_Indexed_InputType from \"../DOM.HTML.Indexed.InputType/index.js\";\nimport * as DOM_HTML_Indexed_KindValue from \"../DOM.HTML.Indexed.KindValue/index.js\";\nimport * as DOM_HTML_Indexed_MenuType from \"../DOM.HTML.Indexed.MenuType/index.js\";\nimport * as DOM_HTML_Indexed_MenuitemType from \"../DOM.HTML.Indexed.MenuitemType/index.js\";\nimport * as DOM_HTML_Indexed_OrderedListType from \"../DOM.HTML.Indexed.OrderedListType/index.js\";\nimport * as DOM_HTML_Indexed_PreloadValue from \"../DOM.HTML.Indexed.PreloadValue/index.js\";\nimport * as DOM_HTML_Indexed_ScopeValue from \"../DOM.HTML.Indexed.ScopeValue/index.js\";\nimport * as DOM_HTML_Indexed_StepValue from \"../DOM.HTML.Indexed.StepValue/index.js\";\nimport * as DOM_HTML_Indexed_WrapValue from \"../DOM.HTML.Indexed.WrapValue/index.js\";\nimport * as Data_Bifunctor from \"../Data.Bifunctor/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Halogen_Query_Input from \"../Halogen.Query.Input/index.js\";\nimport * as Halogen_VDom from \"../Halogen.VDom/index.js\";\nimport * as Halogen_VDom_DOM_Prop from \"../Halogen.VDom.DOM.Prop/index.js\";\nimport * as Halogen_VDom_Types from \"../Halogen.VDom.Types/index.js\";\nimport * as Web_HTML_Common from \"../Web.HTML.Common/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorArray);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Halogen_VDom_DOM_Prop.functorProp);\nvar map2 = /* #__PURE__ */ Data_Functor.map(Halogen_Query_Input.functorInput);\nvar un = /* #__PURE__ */ Data_Newtype.un();\nvar bimap = /* #__PURE__ */ Data_Bifunctor.bimap(Halogen_VDom_Types.bifunctorVDom);\nvar HTML = function (x) {\n return x;\n};\nvar widget = function ($28) {\n return HTML(Halogen_VDom_Types.Widget.create($28));\n};\nvar toPropValue = function (dict) {\n return dict.toPropValue;\n};\nvar text = function ($29) {\n return HTML(Halogen_VDom_Types.Text.create($29));\n};\nvar ref = function (f) {\n return new Halogen_VDom_DOM_Prop.Ref(function ($30) {\n return f((function (v) {\n if (v instanceof Halogen_VDom_DOM_Prop.Created) {\n return new Data_Maybe.Just(v.value0);\n };\n if (v instanceof Halogen_VDom_DOM_Prop.Removed) {\n return Data_Maybe.Nothing.value;\n };\n throw new Error(\"Failed pattern match at Halogen.HTML.Core (line 109, column 21 - line 111, column 23): \" + [ v.constructor.name ]);\n })($30));\n });\n};\nvar prop = function (dictIsProp) {\n var toPropValue1 = toPropValue(dictIsProp);\n return function (v) {\n var $31 = Halogen_VDom_DOM_Prop.Property.create(v);\n return function ($32) {\n return $31(toPropValue1($32));\n };\n };\n};\nvar newtypeHTML = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar renderWidget = function (f) {\n return function (g) {\n return function (v) {\n return Halogen_VDom_Types.renderWidget(map(map1(map2(f))))((function () {\n var $33 = un(HTML);\n return function ($34) {\n return $33(g($34));\n };\n })())(v);\n };\n };\n};\nvar keyed = function (ns) {\n return function (name) {\n return function (props) {\n return function (children) {\n return new Halogen_VDom_Types.Keyed(ns, name, props, children);\n };\n };\n };\n};\nvar isPropWrapValue = {\n toPropValue: function ($35) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_WrapValue.renderWrapValue($35));\n }\n};\nvar isPropString = {\n toPropValue: Halogen_VDom_DOM_Prop.propFromString\n};\nvar isPropStepValue = {\n toPropValue: function ($36) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_StepValue.renderStepValue($36));\n }\n};\nvar isPropScopeValue = {\n toPropValue: function ($37) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_ScopeValue.renderScopeValue($37));\n }\n};\nvar isPropPreloadValue = {\n toPropValue: function ($38) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_PreloadValue.renderPreloadValue($38));\n }\n};\nvar isPropOrderedListType = {\n toPropValue: function ($39) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_OrderedListType.renderOrderedListType($39));\n }\n};\nvar isPropNumber = {\n toPropValue: Halogen_VDom_DOM_Prop.propFromNumber\n};\nvar isPropMenuitemType = {\n toPropValue: function ($40) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_MenuitemType.renderMenuitemType($40));\n }\n};\nvar isPropMenuType = {\n toPropValue: function ($41) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_MenuType.renderMenuType($41));\n }\n};\nvar isPropMediaType = {\n toPropValue: /* #__PURE__ */ (function () {\n var $42 = Data_Newtype.unwrap();\n return function ($43) {\n return Halogen_VDom_DOM_Prop.propFromString($42($43));\n };\n })()\n};\nvar isPropKindValue = {\n toPropValue: function ($44) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_KindValue.renderKindValue($44));\n }\n};\nvar isPropInt = {\n toPropValue: Halogen_VDom_DOM_Prop.propFromInt\n};\nvar isPropInputType = {\n toPropValue: function ($45) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_InputType.renderInputType($45));\n }\n};\nvar isPropInputAcceptType = {\n toPropValue: function ($46) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_InputAcceptType.renderInputAcceptType($46));\n }\n};\nvar isPropFormMethod = {\n toPropValue: function ($47) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_FormMethod.renderFormMethod($47));\n }\n};\nvar isPropDirValue = {\n toPropValue: function ($48) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_DirValue.renderDirValue($48));\n }\n};\nvar isPropCrossOriginValue = {\n toPropValue: function ($49) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_CrossOriginValue.renderCrossOriginValue($49));\n }\n};\nvar isPropButtonType = {\n toPropValue: function ($50) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_ButtonType.renderButtonType($50));\n }\n};\nvar isPropBoolean = {\n toPropValue: Halogen_VDom_DOM_Prop.propFromBoolean\n};\nvar isPropAutocompleteType = {\n toPropValue: function ($51) {\n return Halogen_VDom_DOM_Prop.propFromString(DOM_HTML_Indexed_AutocompleteType.renderAutocompleteType($51));\n }\n};\nvar handler = /* #__PURE__ */ (function () {\n return Halogen_VDom_DOM_Prop.Handler.create;\n})();\nvar element = function (ns) {\n return function (name) {\n return function (props) {\n return function (children) {\n return new Halogen_VDom_Types.Elem(ns, name, props, children);\n };\n };\n };\n};\nvar bifunctorHTML = {\n bimap: function (f) {\n return function (g) {\n return function (v) {\n return bimap(map(map1(map2(g))))(f)(v);\n };\n };\n }\n};\nvar functorHTML = {\n map: /* #__PURE__ */ Data_Bifunctor.rmap(bifunctorHTML)\n};\nvar attr = function (ns) {\n return function (v) {\n return Halogen_VDom_DOM_Prop.Attribute.create(ns)(v);\n };\n};\nexport {\n HTML,\n renderWidget,\n widget,\n text,\n element,\n keyed,\n prop,\n attr,\n handler,\n ref,\n toPropValue,\n newtypeHTML,\n bifunctorHTML,\n functorHTML,\n isPropString,\n isPropInt,\n isPropNumber,\n isPropBoolean,\n isPropMediaType,\n isPropButtonType,\n isPropCrossOriginValue,\n isPropDirValue,\n isPropFormMethod,\n isPropInputType,\n isPropKindValue,\n isPropMenuitemType,\n isPropMenuType,\n isPropAutocompleteType,\n isPropOrderedListType,\n isPropPreloadValue,\n isPropScopeValue,\n isPropStepValue,\n isPropWrapValue,\n isPropInputAcceptType\n};\nexport {\n ElemName,\n Namespace\n} from \"../Halogen.VDom/index.js\";\nexport {\n Attribute,\n Handler,\n Property,\n Ref\n} from \"../Halogen.VDom.DOM.Prop/index.js\";\nexport {\n AttrName,\n ClassName,\n PropName\n} from \"../Web.HTML.Common/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Const from \"../Data.Const/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_List_NonEmpty from \"../Data.List.NonEmpty/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_NonEmpty from \"../Data.NonEmpty/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar unwrap = /* #__PURE__ */ Data_Newtype.unwrap();\nvar Pure = /* #__PURE__ */ (function () {\n function Pure(value0) {\n this.value0 = value0;\n };\n Pure.create = function (value0) {\n return new Pure(value0);\n };\n return Pure;\n})();\nvar Lift = /* #__PURE__ */ (function () {\n function Lift(value0) {\n this.value0 = value0;\n };\n Lift.create = function (value0) {\n return new Lift(value0);\n };\n return Lift;\n})();\nvar Ap = /* #__PURE__ */ (function () {\n function Ap(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Ap.create = function (value0) {\n return function (value1) {\n return new Ap(value0, value1);\n };\n };\n return Ap;\n})();\nvar mkAp = function (fba) {\n return function (fb) {\n return new Ap(fba, fb);\n };\n};\nvar liftFreeAp = /* #__PURE__ */ (function () {\n return Lift.create;\n})();\nvar goLeft = function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n return function (fStack) {\n return function (valStack) {\n return function (nat) {\n return function (func) {\n return function (count) {\n if (func instanceof Pure) {\n return new Data_Tuple.Tuple(new Data_List_Types.Cons({\n func: pure(func.value0),\n count: count\n }, fStack), valStack);\n };\n if (func instanceof Lift) {\n return new Data_Tuple.Tuple(new Data_List_Types.Cons({\n func: nat(func.value0),\n count: count\n }, fStack), valStack);\n };\n if (func instanceof Ap) {\n return goLeft(dictApplicative)(fStack)(Data_List_NonEmpty.cons(func.value1)(valStack))(nat)(func.value0)(count + 1 | 0);\n };\n throw new Error(\"Failed pattern match at Control.Applicative.Free (line 102, column 41 - line 105, column 81): \" + [ func.constructor.name ]);\n };\n };\n };\n };\n };\n};\nvar goApply = function (dictApplicative) {\n var apply = Control_Apply.apply(dictApplicative.Apply0());\n return function (fStack) {\n return function (vals) {\n return function (gVal) {\n if (fStack instanceof Data_List_Types.Nil) {\n return new Data_Either.Left(gVal);\n };\n if (fStack instanceof Data_List_Types.Cons) {\n var gRes = apply(fStack.value0.func)(gVal);\n var $31 = fStack.value0.count === 1;\n if ($31) {\n if (fStack.value1 instanceof Data_List_Types.Nil) {\n return new Data_Either.Left(gRes);\n };\n return goApply(dictApplicative)(fStack.value1)(vals)(gRes);\n };\n if (vals instanceof Data_List_Types.Nil) {\n return new Data_Either.Left(gRes);\n };\n if (vals instanceof Data_List_Types.Cons) {\n return new Data_Either.Right(new Data_Tuple.Tuple(new Data_List_Types.Cons({\n func: gRes,\n count: fStack.value0.count - 1 | 0\n }, fStack.value1), new Data_NonEmpty.NonEmpty(vals.value0, vals.value1)));\n };\n throw new Error(\"Failed pattern match at Control.Applicative.Free (line 83, column 11 - line 88, column 50): \" + [ vals.constructor.name ]);\n };\n throw new Error(\"Failed pattern match at Control.Applicative.Free (line 72, column 3 - line 88, column 50): \" + [ fStack.constructor.name ]);\n };\n };\n };\n};\nvar functorFreeAp = {\n map: function (f) {\n return function (x) {\n return mkAp(new Pure(f))(x);\n };\n }\n};\nvar foldFreeAp = function (dictApplicative) {\n var goApply1 = goApply(dictApplicative);\n var pure = Control_Applicative.pure(dictApplicative);\n var goLeft1 = goLeft(dictApplicative);\n return function (nat) {\n return function (z) {\n var go = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v.value1.value0 instanceof Pure) {\n var v1 = goApply1(v.value0)(v.value1.value1)(pure(v.value1.value0.value0));\n if (v1 instanceof Data_Either.Left) {\n $tco_done = true;\n return v1.value0;\n };\n if (v1 instanceof Data_Either.Right) {\n $copy_v = v1.value0;\n return;\n };\n throw new Error(\"Failed pattern match at Control.Applicative.Free (line 54, column 17 - line 56, column 24): \" + [ v1.constructor.name ]);\n };\n if (v.value1.value0 instanceof Lift) {\n var v1 = goApply1(v.value0)(v.value1.value1)(nat(v.value1.value0.value0));\n if (v1 instanceof Data_Either.Left) {\n $tco_done = true;\n return v1.value0;\n };\n if (v1 instanceof Data_Either.Right) {\n $copy_v = v1.value0;\n return;\n };\n throw new Error(\"Failed pattern match at Control.Applicative.Free (line 57, column 17 - line 59, column 24): \" + [ v1.constructor.name ]);\n };\n if (v.value1.value0 instanceof Ap) {\n var nextVals = new Data_NonEmpty.NonEmpty(v.value1.value0.value1, v.value1.value1);\n $copy_v = goLeft1(v.value0)(nextVals)(nat)(v.value1.value0.value0)(1);\n return;\n };\n throw new Error(\"Failed pattern match at Control.Applicative.Free (line 53, column 5 - line 62, column 47): \" + [ v.value1.value0.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n };\n return go(new Data_Tuple.Tuple(Data_List_Types.Nil.value, Data_List_NonEmpty.singleton(z)));\n };\n };\n};\nvar retractFreeAp = function (dictApplicative) {\n return foldFreeAp(dictApplicative)(identity);\n};\nvar applyFreeAp = {\n apply: function (fba) {\n return function (fb) {\n return mkAp(fba)(fb);\n };\n },\n Functor0: function () {\n return functorFreeAp;\n }\n};\nvar applicativeFreeAp = /* #__PURE__ */ (function () {\n return {\n pure: Pure.create,\n Apply0: function () {\n return applyFreeAp;\n }\n };\n})();\nvar foldFreeAp1 = /* #__PURE__ */ foldFreeAp(applicativeFreeAp);\nvar hoistFreeAp = function (f) {\n return foldFreeAp1(function ($54) {\n return liftFreeAp(f($54));\n });\n};\nvar analyzeFreeAp = function (dictMonoid) {\n var foldFreeAp2 = foldFreeAp(Data_Const.applicativeConst(dictMonoid));\n return function (k) {\n var $55 = foldFreeAp2(function ($57) {\n return Data_Const.Const(k($57));\n });\n return function ($56) {\n return unwrap($55($56));\n };\n };\n};\nexport {\n liftFreeAp,\n retractFreeAp,\n foldFreeAp,\n hoistFreeAp,\n analyzeFreeAp,\n functorFreeAp,\n applyFreeAp,\n applicativeFreeAp\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Monad from \"../Control.Monad/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_List from \"../Data.List/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar map = /* #__PURE__ */ Data_Functor.map(Data_List_Types.functorList);\nvar CatQueue = /* #__PURE__ */ (function () {\n function CatQueue(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n CatQueue.create = function (value0) {\n return function (value1) {\n return new CatQueue(value0, value1);\n };\n };\n return CatQueue;\n})();\nvar unsnoc = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v.value1 instanceof Data_List_Types.Cons) {\n $tco_done = true;\n return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value1.value0, new CatQueue(v.value0, v.value1.value1)));\n };\n if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n if (v.value1 instanceof Data_List_Types.Nil) {\n $copy_v = new CatQueue(Data_List_Types.Nil.value, Data_List.reverse(v.value0));\n return;\n };\n throw new Error(\"Failed pattern match at Data.CatQueue (line 92, column 1 - line 92, column 63): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n};\nvar uncons = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n if (v.value0 instanceof Data_List_Types.Nil) {\n $copy_v = new CatQueue(Data_List.reverse(v.value1), Data_List_Types.Nil.value);\n return;\n };\n if (v.value0 instanceof Data_List_Types.Cons) {\n $tco_done = true;\n return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0.value0, new CatQueue(v.value0.value1, v.value1)));\n };\n throw new Error(\"Failed pattern match at Data.CatQueue (line 82, column 1 - line 82, column 63): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n};\nvar snoc = function (v) {\n return function (a) {\n return new CatQueue(v.value0, new Data_List_Types.Cons(a, v.value1));\n };\n};\nvar showCatQueue = function (dictShow) {\n var show = Data_Show.show(Data_List_Types.showList(dictShow));\n return {\n show: function (v) {\n return \"(CatQueue \" + (show(v.value0) + (\" \" + (show(v.value1) + \")\")));\n }\n };\n};\nvar $$null = function (v) {\n if (v.value0 instanceof Data_List_Types.Nil && v.value1 instanceof Data_List_Types.Nil) {\n return true;\n };\n return false;\n};\nvar length = function (v) {\n return Data_List.length(v.value0) + Data_List.length(v.value1) | 0;\n};\nvar functorCatQueue = {\n map: function (f) {\n return function (v) {\n return new CatQueue(map(f)(v.value0), map(f)(v.value1));\n };\n }\n};\nvar foldableCatQueue = {\n foldMap: function (dictMonoid) {\n return Data_Foldable.foldMapDefaultL(foldableCatQueue)(dictMonoid);\n },\n foldr: function (f) {\n return Data_Foldable.foldrDefault(foldableCatQueue)(f);\n },\n foldl: function (f) {\n var go = function ($copy_acc) {\n return function ($copy_q) {\n var $tco_var_acc = $copy_acc;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(acc, q) {\n var v = uncons(q);\n if (v instanceof Data_Maybe.Just) {\n $tco_var_acc = f(acc)(v.value0.value0);\n $copy_q = v.value0.value1;\n return;\n };\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return acc;\n };\n throw new Error(\"Failed pattern match at Data.CatQueue (line 147, column 16 - line 149, column 22): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_acc, $copy_q);\n };\n return $tco_result;\n };\n };\n return go;\n }\n};\nvar foldl = /* #__PURE__ */ Data_Foldable.foldl(foldableCatQueue);\nvar semigroupCatQueue = {\n append: /* #__PURE__ */ foldl(snoc)\n};\nvar empty = /* #__PURE__ */ (function () {\n return new CatQueue(Data_List_Types.Nil.value, Data_List_Types.Nil.value);\n})();\nvar monoidCatQueue = {\n mempty: empty,\n Semigroup0: function () {\n return semigroupCatQueue;\n }\n};\nvar singleton = /* #__PURE__ */ snoc(empty);\nvar fromFoldable = function (dictFoldable) {\n var foldMap = Data_Foldable.foldMap(dictFoldable)(monoidCatQueue);\n return function (f) {\n return foldMap(singleton)(f);\n };\n};\nvar traversableCatQueue = {\n traverse: function (dictApplicative) {\n var Apply0 = dictApplicative.Apply0();\n var map1 = Data_Functor.map(Apply0.Functor0());\n var lift2 = Control_Apply.lift2(Apply0);\n var pure = Control_Applicative.pure(dictApplicative);\n return function (f) {\n var $123 = map1(foldl(snoc)(empty));\n var $124 = foldl(function (acc) {\n var $126 = lift2(snoc)(acc);\n return function ($127) {\n return $126(f($127));\n };\n })(pure(empty));\n return function ($125) {\n return $123($124($125));\n };\n };\n },\n sequence: function (dictApplicative) {\n return Data_Traversable.sequenceDefault(traversableCatQueue)(dictApplicative);\n },\n Functor0: function () {\n return functorCatQueue;\n },\n Foldable1: function () {\n return foldableCatQueue;\n }\n};\nvar unfoldable1CatQueue = {\n unfoldr1: function (f) {\n return function (b) {\n var go = function ($copy_source) {\n return function ($copy_memo) {\n var $tco_var_source = $copy_source;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(source, memo) {\n var v = f(source);\n if (v.value1 instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return snoc(memo)(v.value0);\n };\n if (v.value1 instanceof Data_Maybe.Just) {\n $tco_var_source = v.value1.value0;\n $copy_memo = snoc(memo)(v.value0);\n return;\n };\n throw new Error(\"Failed pattern match at Data.CatQueue (line 154, column 24 - line 156, column 57): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_source, $copy_memo);\n };\n return $tco_result;\n };\n };\n return go(b)(empty);\n };\n }\n};\nvar unfoldableCatQueue = {\n unfoldr: function (f) {\n return function (b) {\n var go = function ($copy_source) {\n return function ($copy_memo) {\n var $tco_var_source = $copy_source;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(source, memo) {\n var v = f(source);\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return memo;\n };\n if (v instanceof Data_Maybe.Just) {\n $tco_var_source = v.value0.value1;\n $copy_memo = snoc(memo)(v.value0.value0);\n return;\n };\n throw new Error(\"Failed pattern match at Data.CatQueue (line 161, column 24 - line 163, column 57): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_source, $copy_memo);\n };\n return $tco_result;\n };\n };\n return go(b)(empty);\n };\n },\n Unfoldable10: function () {\n return unfoldable1CatQueue;\n }\n};\nvar cqEq = function (dictEq) {\n var elemEq = Data_Eq.eq(dictEq);\n var go = function ($copy_xs) {\n return function ($copy_ys) {\n var $tco_var_xs = $copy_xs;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(xs, ys) {\n var v = uncons(ys);\n var v1 = uncons(xs);\n if (v1 instanceof Data_Maybe.Just && (v instanceof Data_Maybe.Just && elemEq(v1.value0.value0)(v.value0.value0))) {\n $tco_var_xs = v1.value0.value1;\n $copy_ys = v.value0.value1;\n return;\n };\n if (v1 instanceof Data_Maybe.Nothing && v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return true;\n };\n $tco_done = true;\n return false;\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_xs, $copy_ys);\n };\n return $tco_result;\n };\n };\n return go;\n};\nvar eqCatQueue = function (dictEq) {\n return {\n eq: cqEq(dictEq)\n };\n};\nvar cqCompare = function (dictOrd) {\n var elemCompare = Data_Ord.compare(dictOrd);\n var go = function ($copy_xs) {\n return function ($copy_ys) {\n var $tco_var_xs = $copy_xs;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(xs, ys) {\n var v = uncons(ys);\n var v1 = uncons(xs);\n if (v1 instanceof Data_Maybe.Just && v instanceof Data_Maybe.Just) {\n var v2 = elemCompare(v1.value0.value0)(v.value0.value0);\n if (v2 instanceof Data_Ordering.EQ) {\n $tco_var_xs = v1.value0.value1;\n $copy_ys = v.value0.value1;\n return;\n };\n $tco_done = true;\n return v2;\n };\n if (v1 instanceof Data_Maybe.Just && v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return Data_Ordering.GT.value;\n };\n if (v1 instanceof Data_Maybe.Nothing && v instanceof Data_Maybe.Just) {\n $tco_done = true;\n return Data_Ordering.LT.value;\n };\n if (v1 instanceof Data_Maybe.Nothing && v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return Data_Ordering.EQ.value;\n };\n throw new Error(\"Failed pattern match at Data.CatQueue (line 117, column 16 - line 124, column 30): \" + [ v1.constructor.name, v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_xs, $copy_ys);\n };\n return $tco_result;\n };\n };\n return go;\n};\nvar ordCatQueue = function (dictOrd) {\n var eqCatQueue1 = eqCatQueue(dictOrd.Eq0());\n return {\n compare: cqCompare(dictOrd),\n Eq0: function () {\n return eqCatQueue1;\n }\n };\n};\nvar cons = function (a) {\n return function (v) {\n return new CatQueue(new Data_List_Types.Cons(a, v.value0), v.value1);\n };\n};\nvar monadCatQueue = {\n Applicative0: function () {\n return applicativeCatQueue;\n },\n Bind1: function () {\n return bindCatQueue;\n }\n};\nvar bindCatQueue = {\n bind: /* #__PURE__ */ Data_Function.flip(/* #__PURE__ */ Data_Foldable.foldMap(foldableCatQueue)(monoidCatQueue)),\n Apply0: function () {\n return $lazy_applyCatQueue(0);\n }\n};\nvar applicativeCatQueue = {\n pure: singleton,\n Apply0: function () {\n return $lazy_applyCatQueue(0);\n }\n};\nvar $lazy_applyCatQueue = /* #__PURE__ */ $runtime_lazy(\"applyCatQueue\", \"Data.CatQueue\", function () {\n return {\n apply: Control_Monad.ap(monadCatQueue),\n Functor0: function () {\n return functorCatQueue;\n }\n };\n});\nvar applyCatQueue = /* #__PURE__ */ $lazy_applyCatQueue(174);\nvar altCatQueue = {\n alt: /* #__PURE__ */ Data_Semigroup.append(semigroupCatQueue),\n Functor0: function () {\n return functorCatQueue;\n }\n};\nvar plusCatQueue = {\n empty: empty,\n Alt0: function () {\n return altCatQueue;\n }\n};\nvar alternativeCatQueue = {\n Applicative0: function () {\n return applicativeCatQueue;\n },\n Plus1: function () {\n return plusCatQueue;\n }\n};\nvar monadPlusCatQueue = {\n Monad0: function () {\n return monadCatQueue;\n },\n Alternative1: function () {\n return alternativeCatQueue;\n }\n};\nexport {\n CatQueue,\n empty,\n $$null as null,\n singleton,\n length,\n cons,\n snoc,\n uncons,\n unsnoc,\n fromFoldable,\n eqCatQueue,\n ordCatQueue,\n semigroupCatQueue,\n monoidCatQueue,\n showCatQueue,\n foldableCatQueue,\n unfoldable1CatQueue,\n unfoldableCatQueue,\n traversableCatQueue,\n functorCatQueue,\n applyCatQueue,\n applicativeCatQueue,\n bindCatQueue,\n monadCatQueue,\n altCatQueue,\n plusCatQueue,\n alternativeCatQueue,\n monadPlusCatQueue\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Monad from \"../Control.Monad/index.js\";\nimport * as Data_CatQueue from \"../Data.CatQueue/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Semiring from \"../Data.Semiring/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar CatNil = /* #__PURE__ */ (function () {\n function CatNil() {\n\n };\n CatNil.value = new CatNil();\n return CatNil;\n})();\nvar CatCons = /* #__PURE__ */ (function () {\n function CatCons(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n CatCons.create = function (value0) {\n return function (value1) {\n return new CatCons(value0, value1);\n };\n };\n return CatCons;\n})();\nvar showCatList = function (dictShow) {\n var show = Data_Show.show(dictShow);\n return {\n show: function (v) {\n if (v instanceof CatNil) {\n return \"CatNil\";\n };\n if (v instanceof CatCons) {\n return \"(CatList \" + (show(v.value0) + (\" \" + (Data_Show.show(Data_CatQueue.showCatQueue(showCatList(dictShow)))(v.value1) + \")\")));\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 147, column 1 - line 149, column 71): \" + [ v.constructor.name ]);\n }\n };\n};\nvar $$null = function (v) {\n if (v instanceof CatNil) {\n return true;\n };\n return false;\n};\nvar link = function (v) {\n return function (v1) {\n if (v instanceof CatNil) {\n return v1;\n };\n if (v1 instanceof CatNil) {\n return v;\n };\n if (v instanceof CatCons) {\n return new CatCons(v.value0, Data_CatQueue.snoc(v.value1)(v1));\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 108, column 1 - line 108, column 54): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n};\nvar foldr = function (k) {\n return function (b) {\n return function (q) {\n var foldl = function ($copy_v) {\n return function ($copy_v1) {\n return function ($copy_v2) {\n var $tco_var_v = $copy_v;\n var $tco_var_v1 = $copy_v1;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v, v1, v2) {\n if (v2 instanceof Data_List_Types.Nil) {\n $tco_done = true;\n return v1;\n };\n if (v2 instanceof Data_List_Types.Cons) {\n $tco_var_v = v;\n $tco_var_v1 = v(v1)(v2.value0);\n $copy_v2 = v2.value1;\n return;\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 124, column 3 - line 124, column 59): \" + [ v.constructor.name, v1.constructor.name, v2.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_v, $tco_var_v1, $copy_v2);\n };\n return $tco_result;\n };\n };\n };\n var go = function ($copy_xs) {\n return function ($copy_ys) {\n var $tco_var_xs = $copy_xs;\n var $tco_done1 = false;\n var $tco_result;\n function $tco_loop(xs, ys) {\n var v = Data_CatQueue.uncons(xs);\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done1 = true;\n return foldl(function (x) {\n return function (i) {\n return i(x);\n };\n })(b)(ys);\n };\n if (v instanceof Data_Maybe.Just) {\n $tco_var_xs = v.value0.value1;\n $copy_ys = new Data_List_Types.Cons(k(v.value0.value0), ys);\n return;\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 120, column 14 - line 122, column 67): \" + [ v.constructor.name ]);\n };\n while (!$tco_done1) {\n $tco_result = $tco_loop($tco_var_xs, $copy_ys);\n };\n return $tco_result;\n };\n };\n return go(q)(Data_List_Types.Nil.value);\n };\n };\n};\nvar uncons = function (v) {\n if (v instanceof CatNil) {\n return Data_Maybe.Nothing.value;\n };\n if (v instanceof CatCons) {\n return new Data_Maybe.Just(new Data_Tuple.Tuple(v.value0, (function () {\n var $66 = Data_CatQueue[\"null\"](v.value1);\n if ($66) {\n return CatNil.value;\n };\n return foldr(link)(CatNil.value)(v.value1);\n })()));\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 99, column 1 - line 99, column 61): \" + [ v.constructor.name ]);\n};\nvar foldableCatList = {\n foldMap: function (dictMonoid) {\n return Data_Foldable.foldMapDefaultL(foldableCatList)(dictMonoid);\n },\n foldr: function (f) {\n return function (s) {\n return function (l) {\n return Data_Foldable.foldrDefault(foldableCatList)(f)(s)(l);\n };\n };\n },\n foldl: function (f) {\n var go = function ($copy_acc) {\n return function ($copy_q) {\n var $tco_var_acc = $copy_acc;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(acc, q) {\n var v = uncons(q);\n if (v instanceof Data_Maybe.Just) {\n $tco_var_acc = f(acc)(v.value0.value0);\n $copy_q = v.value0.value1;\n return;\n };\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return acc;\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 156, column 16 - line 158, column 22): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_acc, $copy_q);\n };\n return $tco_result;\n };\n };\n return go;\n }\n};\nvar length = /* #__PURE__ */ Data_Foldable.length(foldableCatList)(Data_Semiring.semiringInt);\nvar foldMap = function (dictMonoid) {\n var mempty = Data_Monoid.mempty(dictMonoid);\n var append2 = Data_Semigroup.append(dictMonoid.Semigroup0());\n return function (v) {\n return function (v1) {\n if (v1 instanceof CatNil) {\n return mempty;\n };\n if (v1 instanceof CatCons) {\n var d = (function () {\n var $75 = Data_CatQueue[\"null\"](v1.value1);\n if ($75) {\n return CatNil.value;\n };\n return foldr(link)(CatNil.value)(v1.value1);\n })();\n return append2(v(v1.value0))(foldMap(dictMonoid)(v)(d));\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 134, column 1 - line 134, column 62): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n};\nvar empty = /* #__PURE__ */ (function () {\n return CatNil.value;\n})();\nvar append = link;\nvar cons = function (a) {\n return function (cat) {\n return append(new CatCons(a, Data_CatQueue.empty))(cat);\n };\n};\nvar functorCatList = {\n map: function (v) {\n return function (v1) {\n if (v1 instanceof CatNil) {\n return CatNil.value;\n };\n if (v1 instanceof CatCons) {\n var d = (function () {\n var $80 = Data_CatQueue[\"null\"](v1.value1);\n if ($80) {\n return CatNil.value;\n };\n return foldr(link)(CatNil.value)(v1.value1);\n })();\n return cons(v(v1.value0))(Data_Functor.map(functorCatList)(v)(d));\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 184, column 1 - line 188, column 26): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n }\n};\nvar singleton = function (a) {\n return cons(a)(CatNil.value);\n};\nvar traversableCatList = {\n traverse: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n var Apply0 = dictApplicative.Apply0();\n var apply = Control_Apply.apply(Apply0);\n var map = Data_Functor.map(Apply0.Functor0());\n return function (v) {\n return function (v1) {\n if (v1 instanceof CatNil) {\n return pure(CatNil.value);\n };\n if (v1 instanceof CatCons) {\n var d = (function () {\n var $85 = Data_CatQueue[\"null\"](v1.value1);\n if ($85) {\n return CatNil.value;\n };\n return foldr(link)(CatNil.value)(v1.value1);\n })();\n return apply(map(cons)(v(v1.value0)))(Data_Traversable.traverse(traversableCatList)(dictApplicative)(v)(d));\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 174, column 1 - line 182, column 33): \" + [ v.constructor.name, v1.constructor.name ]);\n };\n };\n },\n sequence: function (dictApplicative) {\n var pure = Control_Applicative.pure(dictApplicative);\n var Apply0 = dictApplicative.Apply0();\n var apply = Control_Apply.apply(Apply0);\n var map = Data_Functor.map(Apply0.Functor0());\n return function (v) {\n if (v instanceof CatNil) {\n return pure(CatNil.value);\n };\n if (v instanceof CatCons) {\n var d = (function () {\n var $89 = Data_CatQueue[\"null\"](v.value1);\n if ($89) {\n return CatNil.value;\n };\n return foldr(link)(CatNil.value)(v.value1);\n })();\n return apply(map(cons)(v.value0))(Data_Traversable.sequence(traversableCatList)(dictApplicative)(d));\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 174, column 1 - line 182, column 33): \" + [ v.constructor.name ]);\n };\n },\n Functor0: function () {\n return functorCatList;\n },\n Foldable1: function () {\n return foldableCatList;\n }\n};\nvar semigroupCatList = {\n append: append\n};\nvar monoidCatList = /* #__PURE__ */ (function () {\n return {\n mempty: CatNil.value,\n Semigroup0: function () {\n return semigroupCatList;\n }\n };\n})();\nvar monadCatList = {\n Applicative0: function () {\n return applicativeCatList;\n },\n Bind1: function () {\n return bindCatList;\n }\n};\nvar bindCatList = {\n bind: /* #__PURE__ */ Data_Function.flip(/* #__PURE__ */ foldMap(monoidCatList)),\n Apply0: function () {\n return $lazy_applyCatList(0);\n }\n};\nvar applicativeCatList = {\n pure: singleton,\n Apply0: function () {\n return $lazy_applyCatList(0);\n }\n};\nvar $lazy_applyCatList = /* #__PURE__ */ $runtime_lazy(\"applyCatList\", \"Data.CatList\", function () {\n return {\n apply: Control_Monad.ap(monadCatList),\n Functor0: function () {\n return functorCatList;\n }\n };\n});\nvar applyCatList = /* #__PURE__ */ $lazy_applyCatList(190);\nvar fromFoldable = function (dictFoldable) {\n var foldMap1 = Data_Foldable.foldMap(dictFoldable)(monoidCatList);\n return function (f) {\n return foldMap1(singleton)(f);\n };\n};\nvar snoc = function (cat) {\n return function (a) {\n return append(cat)(new CatCons(a, Data_CatQueue.empty));\n };\n};\nvar unfoldable1CatList = {\n unfoldr1: function (f) {\n return function (b) {\n var go = function ($copy_source) {\n return function ($copy_memo) {\n var $tco_var_source = $copy_source;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(source, memo) {\n var v = f(source);\n if (v.value1 instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return snoc(memo)(v.value0);\n };\n if (v.value1 instanceof Data_Maybe.Just) {\n $tco_var_source = v.value1.value0;\n $copy_memo = snoc(memo)(v.value0);\n return;\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 170, column 24 - line 172, column 57): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_source, $copy_memo);\n };\n return $tco_result;\n };\n };\n return go(b)(CatNil.value);\n };\n }\n};\nvar unfoldableCatList = {\n unfoldr: function (f) {\n return function (b) {\n var go = function ($copy_source) {\n return function ($copy_memo) {\n var $tco_var_source = $copy_source;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(source, memo) {\n var v = f(source);\n if (v instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return memo;\n };\n if (v instanceof Data_Maybe.Just) {\n $tco_var_source = v.value0.value1;\n $copy_memo = snoc(memo)(v.value0.value0);\n return;\n };\n throw new Error(\"Failed pattern match at Data.CatList (line 163, column 24 - line 165, column 57): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_source, $copy_memo);\n };\n return $tco_result;\n };\n };\n return go(b)(CatNil.value);\n };\n },\n Unfoldable10: function () {\n return unfoldable1CatList;\n }\n};\nvar altCatList = {\n alt: append,\n Functor0: function () {\n return functorCatList;\n }\n};\nvar plusCatList = {\n empty: empty,\n Alt0: function () {\n return altCatList;\n }\n};\nvar alternativeCatList = {\n Applicative0: function () {\n return applicativeCatList;\n },\n Plus1: function () {\n return plusCatList;\n }\n};\nvar monadPlusCatList = {\n Monad0: function () {\n return monadCatList;\n },\n Alternative1: function () {\n return alternativeCatList;\n }\n};\nexport {\n CatNil,\n CatCons,\n empty,\n $$null as null,\n singleton,\n length,\n append,\n cons,\n snoc,\n uncons,\n fromFoldable,\n semigroupCatList,\n monoidCatList,\n showCatList,\n foldableCatList,\n unfoldableCatList,\n unfoldable1CatList,\n traversableCatList,\n functorCatList,\n applyCatList,\n applicativeCatList,\n bindCatList,\n monadCatList,\n altCatList,\n plusCatList,\n alternativeCatList,\n monadPlusCatList\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Monad from \"../Control.Monad/index.js\";\nimport * as Control_Monad_Rec_Class from \"../Control.Monad.Rec.Class/index.js\";\nimport * as Data_CatList from \"../Data.CatList/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Ordering from \"../Data.Ordering/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar append = /* #__PURE__ */ Data_Semigroup.append(Data_CatList.semigroupCatList);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorFn);\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar ExpF = function (x) {\n return x;\n};\nvar Free = /* #__PURE__ */ (function () {\n function Free(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Free.create = function (value0) {\n return function (value1) {\n return new Free(value0, value1);\n };\n };\n return Free;\n})();\nvar Return = /* #__PURE__ */ (function () {\n function Return(value0) {\n this.value0 = value0;\n };\n Return.create = function (value0) {\n return new Return(value0);\n };\n return Return;\n})();\nvar Bind = /* #__PURE__ */ (function () {\n function Bind(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Bind.create = function (value0) {\n return function (value1) {\n return new Bind(value0, value1);\n };\n };\n return Bind;\n})();\nvar toView = function ($copy_v) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(v) {\n var runExpF = function (v2) {\n return v2;\n };\n var concatF = function (v2) {\n return function (r) {\n return new Free(v2.value0, append(v2.value1)(r));\n };\n };\n if (v.value0 instanceof Return) {\n var v2 = Data_CatList.uncons(v.value1);\n if (v2 instanceof Data_Maybe.Nothing) {\n $tco_done = true;\n return new Return(v.value0.value0);\n };\n if (v2 instanceof Data_Maybe.Just) {\n $copy_v = concatF(runExpF(v2.value0.value0)(v.value0.value0))(v2.value0.value1);\n return;\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 227, column 7 - line 231, column 64): \" + [ v2.constructor.name ]);\n };\n if (v.value0 instanceof Bind) {\n $tco_done = true;\n return new Bind(v.value0.value0, function (a) {\n return concatF(v.value0.value1(a))(v.value1);\n });\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 225, column 3 - line 233, column 56): \" + [ v.value0.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_v);\n };\n return $tco_result;\n};\nvar runFreeM = function (dictFunctor) {\n var map1 = Data_Functor.map(dictFunctor);\n return function (dictMonadRec) {\n var Monad0 = dictMonadRec.Monad0();\n var map2 = Data_Functor.map(((Monad0.Bind1()).Apply0()).Functor0());\n var pure1 = Control_Applicative.pure(Monad0.Applicative0());\n var tailRecM = Control_Monad_Rec_Class.tailRecM(dictMonadRec);\n return function (k) {\n var go = function (f) {\n var v = toView(f);\n if (v instanceof Return) {\n return map2(Control_Monad_Rec_Class.Done.create)(pure1(v.value0));\n };\n if (v instanceof Bind) {\n return map2(Control_Monad_Rec_Class.Loop.create)(k(map1(v.value1)(v.value0)));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 194, column 10 - line 196, column 37): \" + [ v.constructor.name ]);\n };\n return tailRecM(go);\n };\n };\n};\nvar runFree = function (dictFunctor) {\n var map1 = Data_Functor.map(dictFunctor);\n return function (k) {\n var go = function ($copy_f) {\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(f) {\n var v = toView(f);\n if (v instanceof Return) {\n $tco_done = true;\n return v.value0;\n };\n if (v instanceof Bind) {\n $copy_f = k(map1(v.value1)(v.value0));\n return;\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 178, column 10 - line 180, column 33): \" + [ v.constructor.name ]);\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($copy_f);\n };\n return $tco_result;\n };\n return go;\n };\n};\nvar resume$prime = function (k) {\n return function (j) {\n return function (f) {\n var v = toView(f);\n if (v instanceof Return) {\n return j(v.value0);\n };\n if (v instanceof Bind) {\n return k(v.value0)(v.value1);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 213, column 17 - line 215, column 20): \" + [ v.constructor.name ]);\n };\n };\n};\nvar resume = function (dictFunctor) {\n var map1 = Data_Functor.map(dictFunctor);\n return resume$prime(function (g) {\n return function (i) {\n return new Data_Either.Left(map1(i)(g));\n };\n })(Data_Either.Right.create);\n};\nvar fromView = function (f) {\n return new Free(f, Data_CatList.empty);\n};\nvar wrap = function (f) {\n return fromView(new Bind(f, Unsafe_Coerce.unsafeCoerce));\n};\nvar suspendF = function (dictApplicative) {\n var pure1 = Control_Applicative.pure(dictApplicative);\n return function (f) {\n return wrap(pure1(f));\n };\n};\nvar freeMonad = {\n Applicative0: function () {\n return freeApplicative;\n },\n Bind1: function () {\n return freeBind;\n }\n};\nvar freeFunctor = {\n map: function (k) {\n return function (f) {\n return Control_Bind.bindFlipped(freeBind)((function () {\n var $189 = Control_Applicative.pure(freeApplicative);\n return function ($190) {\n return $189(k($190));\n };\n })())(f);\n };\n }\n};\nvar freeBind = {\n bind: function (v) {\n return function (k) {\n return new Free(v.value0, Data_CatList.snoc(v.value1)(k));\n };\n },\n Apply0: function () {\n return $lazy_freeApply(0);\n }\n};\nvar freeApplicative = {\n pure: function ($191) {\n return fromView(Return.create($191));\n },\n Apply0: function () {\n return $lazy_freeApply(0);\n }\n};\nvar $lazy_freeApply = /* #__PURE__ */ $runtime_lazy(\"freeApply\", \"Control.Monad.Free\", function () {\n return {\n apply: Control_Monad.ap(freeMonad),\n Functor0: function () {\n return freeFunctor;\n }\n };\n});\nvar freeApply = /* #__PURE__ */ $lazy_freeApply(77);\nvar lift2 = /* #__PURE__ */ Control_Apply.lift2(freeApply);\nvar bind = /* #__PURE__ */ Control_Bind.bind(freeBind);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(freeApplicative);\nvar join = /* #__PURE__ */ Control_Bind.join(freeBind);\nvar semigroupFree = function (dictSemigroup) {\n return {\n append: lift2(Data_Semigroup.append(dictSemigroup))\n };\n};\nvar freeMonadRec = {\n tailRecM: function (k) {\n return function (a) {\n return bind(k(a))(function (v) {\n if (v instanceof Control_Monad_Rec_Class.Loop) {\n return Control_Monad_Rec_Class.tailRecM(freeMonadRec)(k)(v.value0);\n };\n if (v instanceof Control_Monad_Rec_Class.Done) {\n return pure(v.value0);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 86, column 26 - line 88, column 21): \" + [ v.constructor.name ]);\n });\n };\n },\n Monad0: function () {\n return freeMonad;\n }\n};\nvar liftF = function (f) {\n return fromView(new Bind(f, function ($192) {\n return pure($192);\n }));\n};\nvar freeMonadTrans = {\n lift: function (dictMonad) {\n return liftF;\n }\n};\nvar monoidFree = function (dictMonoid) {\n var semigroupFree1 = semigroupFree(dictMonoid.Semigroup0());\n return {\n mempty: pure(Data_Monoid.mempty(dictMonoid)),\n Semigroup0: function () {\n return semigroupFree1;\n }\n };\n};\nvar substFree = function (k) {\n var go = function (f) {\n var v = toView(f);\n if (v instanceof Return) {\n return pure(v.value0);\n };\n if (v instanceof Bind) {\n return bind(k(v.value0))(map(go)(v.value1));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 168, column 10 - line 170, column 33): \" + [ v.constructor.name ]);\n };\n return go;\n};\nvar hoistFree = function (k) {\n return substFree(function ($193) {\n return liftF(k($193));\n });\n};\nvar foldableFree = function (dictFunctor) {\n var resume1 = resume(dictFunctor);\n return function (dictFoldable) {\n var foldMap = Data_Foldable.foldMap(dictFoldable);\n var foldl = Data_Foldable.foldl(dictFoldable);\n var foldr = Data_Foldable.foldr(dictFoldable);\n return {\n foldMap: function (dictMonoid) {\n var foldMap1 = foldMap(dictMonoid);\n return function (f) {\n var $lazy_go = $runtime_lazy(\"go\", \"Control.Monad.Free\", function () {\n return function ($194) {\n return (function (v) {\n if (v instanceof Data_Either.Left) {\n return foldMap1($lazy_go(94))(v.value0);\n };\n if (v instanceof Data_Either.Right) {\n return f(v.value0);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 93, column 21 - line 95, column 21): \" + [ v.constructor.name ]);\n })(resume1($194));\n };\n });\n var go = $lazy_go(93);\n return go;\n };\n },\n foldl: function (f) {\n var go = function (r) {\n return function ($195) {\n return (function (v) {\n if (v instanceof Data_Either.Left) {\n return foldl(go)(r)(v.value0);\n };\n if (v instanceof Data_Either.Right) {\n return f(r)(v.value0);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 98, column 23 - line 100, column 23): \" + [ v.constructor.name ]);\n })(resume1($195));\n };\n };\n return go;\n },\n foldr: function (f) {\n var go = function (r) {\n return function ($196) {\n return (function (v) {\n if (v instanceof Data_Either.Left) {\n return foldr(Data_Function.flip(go))(r)(v.value0);\n };\n if (v instanceof Data_Either.Right) {\n return f(v.value0)(r);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 103, column 23 - line 105, column 23): \" + [ v.constructor.name ]);\n })(resume1($196));\n };\n };\n return go;\n }\n };\n };\n};\nvar traversableFree = function (dictTraversable) {\n var Functor0 = dictTraversable.Functor0();\n var resume1 = resume(Functor0);\n var traverse = Data_Traversable.traverse(dictTraversable);\n var foldableFree1 = foldableFree(Functor0)(dictTraversable.Foldable1());\n return {\n traverse: function (dictApplicative) {\n var map1 = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverse1 = traverse(dictApplicative);\n return function (f) {\n var $lazy_go = $runtime_lazy(\"go\", \"Control.Monad.Free\", function () {\n return function ($197) {\n return (function (v) {\n if (v instanceof Data_Either.Left) {\n return map1(function ($198) {\n return join(liftF($198));\n })(traverse1($lazy_go(111))(v.value0));\n };\n if (v instanceof Data_Either.Right) {\n return map1(pure)(f(v.value0));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 110, column 21 - line 112, column 30): \" + [ v.constructor.name ]);\n })(resume1($197));\n };\n });\n var go = $lazy_go(110);\n return go;\n };\n },\n sequence: function (dictApplicative) {\n return function (tma) {\n return Data_Traversable.traverse(traversableFree(dictTraversable))(dictApplicative)(identity)(tma);\n };\n },\n Functor0: function () {\n return freeFunctor;\n },\n Foldable1: function () {\n return foldableFree1;\n }\n };\n};\nvar foldFree = function (dictMonadRec) {\n var Monad0 = dictMonadRec.Monad0();\n var map1 = Data_Functor.map(((Monad0.Bind1()).Apply0()).Functor0());\n var pure1 = Control_Applicative.pure(Monad0.Applicative0());\n var tailRecM = Control_Monad_Rec_Class.tailRecM(dictMonadRec);\n return function (k) {\n var go = function (f) {\n var v = toView(f);\n if (v instanceof Return) {\n return map1(Control_Monad_Rec_Class.Done.create)(pure1(v.value0));\n };\n if (v instanceof Bind) {\n return map1(function ($199) {\n return Control_Monad_Rec_Class.Loop.create(v.value1($199));\n })(k(v.value0));\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 158, column 10 - line 160, column 37): \" + [ v.constructor.name ]);\n };\n return tailRecM(go);\n };\n};\nvar eqFree = function (dictFunctor) {\n var resume1 = resume(dictFunctor);\n return function (dictEq1) {\n var eq1 = Data_Eq.eq1(dictEq1);\n return function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n return {\n eq: function (x) {\n return function (y) {\n var v = resume1(y);\n var v1 = resume1(x);\n if (v1 instanceof Data_Either.Left && v instanceof Data_Either.Left) {\n return eq1(eqFree(dictFunctor)(dictEq1)(dictEq))(v1.value0)(v.value0);\n };\n if (v1 instanceof Data_Either.Right && v instanceof Data_Either.Right) {\n return eq(v1.value0)(v.value0);\n };\n return false;\n };\n }\n };\n };\n };\n};\nvar ordFree = function (dictFunctor) {\n var resume1 = resume(dictFunctor);\n var eqFree1 = eqFree(dictFunctor);\n return function (dictOrd1) {\n var compare1 = Data_Ord.compare1(dictOrd1);\n var eqFree2 = eqFree1(dictOrd1.Eq10());\n return function (dictOrd) {\n var compare = Data_Ord.compare(dictOrd);\n var eqFree3 = eqFree2(dictOrd.Eq0());\n return {\n compare: function (x) {\n return function (y) {\n var v = resume1(y);\n var v1 = resume1(x);\n if (v1 instanceof Data_Either.Left && v instanceof Data_Either.Left) {\n return compare1(ordFree(dictFunctor)(dictOrd1)(dictOrd))(v1.value0)(v.value0);\n };\n if (v1 instanceof Data_Either.Left) {\n return Data_Ordering.LT.value;\n };\n if (v instanceof Data_Either.Left) {\n return Data_Ordering.GT.value;\n };\n if (v1 instanceof Data_Either.Right && v instanceof Data_Either.Right) {\n return compare(v1.value0)(v.value0);\n };\n throw new Error(\"Failed pattern match at Control.Monad.Free (line 56, column 17 - line 60, column 36): \" + [ v1.constructor.name, v.constructor.name ]);\n };\n },\n Eq0: function () {\n return eqFree3;\n }\n };\n };\n };\n};\nvar eq1Free = function (dictFunctor) {\n var eqFree1 = eqFree(dictFunctor);\n return function (dictEq1) {\n var eqFree2 = eqFree1(dictEq1);\n return {\n eq1: function (dictEq) {\n return Data_Eq.eq(eqFree2(dictEq));\n }\n };\n };\n};\nvar ord1Free = function (dictFunctor) {\n var ordFree1 = ordFree(dictFunctor);\n var eq1Free1 = eq1Free(dictFunctor);\n return function (dictOrd1) {\n var ordFree2 = ordFree1(dictOrd1);\n var eq1Free2 = eq1Free1(dictOrd1.Eq10());\n return {\n compare1: function (dictOrd) {\n return Data_Ord.compare(ordFree2(dictOrd));\n },\n Eq10: function () {\n return eq1Free2;\n }\n };\n };\n};\nexport {\n suspendF,\n wrap,\n liftF,\n hoistFree,\n foldFree,\n substFree,\n runFree,\n runFreeM,\n resume,\n resume$prime,\n eqFree,\n eq1Free,\n ordFree,\n ord1Free,\n freeFunctor,\n freeBind,\n freeApplicative,\n freeApply,\n freeMonad,\n freeMonadTrans,\n freeMonadRec,\n foldableFree,\n traversableFree,\n semigroupFree,\n monoidFree\n};\n", "// Generated by purs version 0.15.14\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar ChildQuery = /* #__PURE__ */ (function () {\n function ChildQuery(value0, value1, value2) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n };\n ChildQuery.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return new ChildQuery(value0, value1, value2);\n };\n };\n };\n return ChildQuery;\n})();\nvar unChildQueryBox = Unsafe_Coerce.unsafeCoerce;\nvar mkChildQueryBox = Unsafe_Coerce.unsafeCoerce;\nvar functorChildQuery = {\n map: function (f) {\n return unChildQueryBox(function (v) {\n return mkChildQueryBox(new ChildQuery(function (dictApplicative) {\n return v.value0(dictApplicative);\n }, v.value1, function ($8) {\n return f(v.value2($8));\n }));\n });\n }\n};\nexport {\n ChildQuery,\n mkChildQueryBox,\n unChildQueryBox,\n functorChildQuery\n};\n", "export function reallyUnsafeRefEq(a) {\n return function (b) {\n return a === b;\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nvar UnsafeRefEqFallback = function (x) {\n return x;\n};\nvar UnsafeRefEq = function (x) {\n return x;\n};\nvar unsafeRefEq = $foreign.reallyUnsafeRefEq;\nvar eqUnsafeRefEqFallback = function (dictEq) {\n var eq = Data_Eq.eq(dictEq);\n return {\n eq: function (v) {\n return function (v1) {\n return unsafeRefEq(v)(v1) || eq(v)(v1);\n };\n }\n };\n};\nvar eqUnsafeRefEq = {\n eq: function (v) {\n return function (v1) {\n return unsafeRefEq(v)(v1);\n };\n }\n};\nexport {\n reallyUnsafeRefEq\n} from \"./foreign.js\";\nexport {\n unsafeRefEq,\n UnsafeRefEq,\n UnsafeRefEqFallback,\n eqUnsafeRefEq,\n eqUnsafeRefEqFallback\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Apply from \"../Control.Apply/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Ref from \"../Effect.Ref/index.js\";\nimport * as Effect_Unsafe from \"../Effect.Unsafe/index.js\";\nimport * as Safe_Coerce from \"../Safe.Coerce/index.js\";\nimport * as Unsafe_Reference from \"../Unsafe.Reference/index.js\";\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Effect.functorEffect);\nvar coerce = /* #__PURE__ */ Safe_Coerce.coerce();\nvar bind = /* #__PURE__ */ Control_Bind.bind(Effect.bindEffect);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Effect.applicativeEffect);\nvar append = /* #__PURE__ */ Data_Semigroup.append(Data_Semigroup.semigroupArray);\nvar traverse_ = /* #__PURE__ */ Data_Foldable.traverse_(Effect.applicativeEffect);\nvar traverse_1 = /* #__PURE__ */ traverse_(Data_Foldable.foldableArray);\nvar applySecond = /* #__PURE__ */ Control_Apply.applySecond(Effect.applyEffect);\nvar traverse_2 = /* #__PURE__ */ traverse_(Data_Foldable.foldableMaybe);\nvar Subscription = function (x) {\n return x;\n};\nvar Listener = function (x) {\n return x;\n};\nvar Emitter = function (x) {\n return x;\n};\nvar unsubscribe = function (v) {\n return v;\n};\nvar subscribe = function (v) {\n return function (k) {\n return v(function ($76) {\n return $$void(k($76));\n });\n };\n};\nvar semigroupSubscription = /* #__PURE__ */ Effect.semigroupEffect(Data_Semigroup.semigroupUnit);\nvar notify = function (v) {\n return function (a) {\n return v(a);\n };\n};\nvar monoidSubscription = /* #__PURE__ */ Effect.monoidEffect(Data_Monoid.monoidUnit);\nvar mempty = /* #__PURE__ */ Data_Monoid.mempty(/* #__PURE__ */ Data_Monoid.monoidFn(/* #__PURE__ */ Effect.monoidEffect(monoidSubscription)));\nvar makeEmitter = coerce;\nvar functorEmitter = {\n map: function (f) {\n return function (v) {\n return function (k) {\n return v(function ($77) {\n return k(f($77));\n });\n };\n };\n }\n};\nvar fold = function (f) {\n return function (v) {\n return function (b) {\n return function (k) {\n return function __do() {\n var result = Effect_Ref[\"new\"](b)();\n return v(function (a) {\n return bind(Effect_Ref.modify(f(a))(result))(k);\n })();\n };\n };\n };\n };\n};\nvar filter = function (p) {\n return function (v) {\n return function (k) {\n return v(function (a) {\n var $57 = p(a);\n if ($57) {\n return k(a);\n };\n return pure(Data_Unit.unit);\n });\n };\n };\n};\nvar create = function __do() {\n var subscribers = Effect_Ref[\"new\"]([ ])();\n return {\n emitter: function (k) {\n return function __do() {\n Effect_Ref.modify_(function (v) {\n return append(v)([ k ]);\n })(subscribers)();\n return Effect_Ref.modify_(Data_Array.deleteBy(Unsafe_Reference.unsafeRefEq)(k))(subscribers);\n };\n },\n listener: function (a) {\n return bind(Effect_Ref.read(subscribers))(traverse_1(function (k) {\n return k(a);\n }));\n }\n };\n};\nvar fix = function (f) {\n var v = Effect_Unsafe.unsafePerformEffect(create);\n var v1 = f(v.emitter);\n return function (k) {\n return function __do() {\n var v2 = subscribe(v1.input)(notify(v.listener))();\n var v3 = subscribe(v1.output)(k)();\n return applySecond(v2)(v3);\n };\n };\n};\nvar contravariantListener = {\n cmap: function (f) {\n return function (v) {\n return coerce(function ($78) {\n return v(f($78));\n });\n };\n }\n};\nvar applyEmitter = {\n apply: function (v) {\n return function (v1) {\n return function (k) {\n return function __do() {\n var latestA = Effect_Ref[\"new\"](Data_Maybe.Nothing.value)();\n var latestB = Effect_Ref[\"new\"](Data_Maybe.Nothing.value)();\n var v2 = v(function (a) {\n return function __do() {\n Effect_Ref.write(new Data_Maybe.Just(a))(latestA)();\n return bind(Effect_Ref.read(latestB))(traverse_2(function ($79) {\n return k(a($79));\n }))();\n };\n })();\n var v3 = v1(function (b) {\n return function __do() {\n Effect_Ref.write(new Data_Maybe.Just(b))(latestB)();\n return bind(Effect_Ref.read(latestA))(traverse_2(function ($80) {\n return k((function (v3) {\n return v3(b);\n })($80));\n }))();\n };\n })();\n return applySecond(v2)(v3);\n };\n };\n };\n },\n Functor0: function () {\n return functorEmitter;\n }\n};\nvar lift2 = /* #__PURE__ */ Control_Apply.lift2(applyEmitter);\nvar semigroupEmitter = function (dictSemigroup) {\n return {\n append: lift2(Data_Semigroup.append(dictSemigroup))\n };\n};\nvar monoidEmitter = function (dictMonoid) {\n var semigroupEmitter1 = semigroupEmitter(dictMonoid.Semigroup0());\n return {\n mempty: mempty,\n Semigroup0: function () {\n return semigroupEmitter1;\n }\n };\n};\nvar applicativeEmitter = {\n pure: function (a) {\n return function (k) {\n return function __do() {\n k(a)();\n return pure(Data_Unit.unit);\n };\n };\n },\n Apply0: function () {\n return applyEmitter;\n }\n};\nvar altEmitter = {\n alt: function (v) {\n return function (v1) {\n return function (k) {\n return function __do() {\n var v2 = v(k)();\n var v3 = v1(k)();\n return applySecond(v2)(v3);\n };\n };\n };\n },\n Functor0: function () {\n return functorEmitter;\n }\n};\nvar plusEmitter = {\n empty: function (v) {\n return pure(pure(Data_Unit.unit));\n },\n Alt0: function () {\n return altEmitter;\n }\n};\nvar alternativeEmitter = {\n Applicative0: function () {\n return applicativeEmitter;\n },\n Plus1: function () {\n return plusEmitter;\n }\n};\nexport {\n create,\n notify,\n makeEmitter,\n subscribe,\n unsubscribe,\n fold,\n filter,\n fix,\n functorEmitter,\n applyEmitter,\n applicativeEmitter,\n altEmitter,\n plusEmitter,\n alternativeEmitter,\n semigroupEmitter,\n monoidEmitter,\n contravariantListener,\n semigroupSubscription,\n monoidSubscription\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Applicative_Free from \"../Control.Applicative.Free/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Monad_Error_Class from \"../Control.Monad.Error.Class/index.js\";\nimport * as Control_Monad_Free from \"../Control.Monad.Free/index.js\";\nimport * as Control_Monad_Reader_Class from \"../Control.Monad.Reader.Class/index.js\";\nimport * as Control_Monad_Rec_Class from \"../Control.Monad.Rec.Class/index.js\";\nimport * as Control_Monad_Writer_Class from \"../Control.Monad.Writer.Class/index.js\";\nimport * as Data_Bifunctor from \"../Data.Bifunctor/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_FoldableWithIndex from \"../Data.FoldableWithIndex/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Map_Internal from \"../Data.Map.Internal/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Traversable from \"../Data.Traversable/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect_Aff_Class from \"../Effect.Aff.Class/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Halogen_Data_Slot from \"../Halogen.Data.Slot/index.js\";\nimport * as Halogen_Query_ChildQuery from \"../Halogen.Query.ChildQuery/index.js\";\nimport * as Halogen_Subscription from \"../Halogen.Subscription/index.js\";\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar foldrWithIndex = /* #__PURE__ */ Data_FoldableWithIndex.foldrWithIndex(Data_Map_Internal.foldableWithIndexMap);\nvar traverse = /* #__PURE__ */ Data_Traversable.traverse(Data_Map_Internal.traversableMap);\nvar slots = /* #__PURE__ */ Halogen_Data_Slot.slots();\nvar lookup = /* #__PURE__ */ Halogen_Data_Slot.lookup();\nvar over = /* #__PURE__ */ Data_Newtype.over()();\nvar map = /* #__PURE__ */ Data_Functor.map(Halogen_Subscription.functorEmitter);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Data_Tuple.functorTuple);\nvar lmap = /* #__PURE__ */ Data_Bifunctor.lmap(Data_Bifunctor.bifunctorTuple);\nvar map2 = /* #__PURE__ */ Data_Functor.map(Halogen_Query_ChildQuery.functorChildQuery);\nvar SubscriptionId = function (x) {\n return x;\n};\nvar ForkId = function (x) {\n return x;\n};\nvar State = /* #__PURE__ */ (function () {\n function State(value0) {\n this.value0 = value0;\n };\n State.create = function (value0) {\n return new State(value0);\n };\n return State;\n})();\nvar Subscribe = /* #__PURE__ */ (function () {\n function Subscribe(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Subscribe.create = function (value0) {\n return function (value1) {\n return new Subscribe(value0, value1);\n };\n };\n return Subscribe;\n})();\nvar Unsubscribe = /* #__PURE__ */ (function () {\n function Unsubscribe(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Unsubscribe.create = function (value0) {\n return function (value1) {\n return new Unsubscribe(value0, value1);\n };\n };\n return Unsubscribe;\n})();\nvar Lift = /* #__PURE__ */ (function () {\n function Lift(value0) {\n this.value0 = value0;\n };\n Lift.create = function (value0) {\n return new Lift(value0);\n };\n return Lift;\n})();\nvar ChildQuery = /* #__PURE__ */ (function () {\n function ChildQuery(value0) {\n this.value0 = value0;\n };\n ChildQuery.create = function (value0) {\n return new ChildQuery(value0);\n };\n return ChildQuery;\n})();\nvar Raise = /* #__PURE__ */ (function () {\n function Raise(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Raise.create = function (value0) {\n return function (value1) {\n return new Raise(value0, value1);\n };\n };\n return Raise;\n})();\nvar Par = /* #__PURE__ */ (function () {\n function Par(value0) {\n this.value0 = value0;\n };\n Par.create = function (value0) {\n return new Par(value0);\n };\n return Par;\n})();\nvar Fork = /* #__PURE__ */ (function () {\n function Fork(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Fork.create = function (value0) {\n return function (value1) {\n return new Fork(value0, value1);\n };\n };\n return Fork;\n})();\nvar Join = /* #__PURE__ */ (function () {\n function Join(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Join.create = function (value0) {\n return function (value1) {\n return new Join(value0, value1);\n };\n };\n return Join;\n})();\nvar Kill = /* #__PURE__ */ (function () {\n function Kill(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Kill.create = function (value0) {\n return function (value1) {\n return new Kill(value0, value1);\n };\n };\n return Kill;\n})();\nvar GetRef = /* #__PURE__ */ (function () {\n function GetRef(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n GetRef.create = function (value0) {\n return function (value1) {\n return new GetRef(value0, value1);\n };\n };\n return GetRef;\n})();\nvar HalogenAp = function (x) {\n return x;\n};\nvar HalogenM = function (x) {\n return x;\n};\nvar unsubscribe = function (sid) {\n return Control_Monad_Free.liftF(new Unsubscribe(sid, Data_Unit.unit));\n};\nvar subscribe$prime = function (esc) {\n return Control_Monad_Free.liftF(new Subscribe(esc, Data_Function[\"const\"](Data_Unit.unit)));\n};\nvar subscribe = function (es) {\n return Control_Monad_Free.liftF(new Subscribe(function (v) {\n return es;\n }, identity));\n};\nvar semigroupHalogenM = function (dictSemigroup) {\n return Control_Monad_Free.semigroupFree(dictSemigroup);\n};\nvar raise = function (o) {\n return Control_Monad_Free.liftF(new Raise(o, Data_Unit.unit));\n};\nvar queryAll = function () {\n return function (dictIsSymbol) {\n var slots1 = slots(dictIsSymbol);\n return function (dictOrd) {\n var slots2 = slots1(dictOrd);\n return function (label) {\n return function (q) {\n var catMapMaybes = function (dictOrd1) {\n var insert = Data_Map_Internal.insert(dictOrd1);\n return foldrWithIndex(function (k) {\n return function (v) {\n return function (acc) {\n return Data_Maybe.maybe(acc)(Data_Function.flip(insert(k))(acc))(v);\n };\n };\n })(Data_Map_Internal.empty);\n };\n var catMapMaybes1 = catMapMaybes(dictOrd);\n return Control_Monad_Free.liftF(new ChildQuery(Halogen_Query_ChildQuery.mkChildQueryBox(new Halogen_Query_ChildQuery.ChildQuery(function (dictApplicative) {\n var map4 = Data_Functor.map((dictApplicative.Apply0()).Functor0());\n var traverse1 = traverse(dictApplicative);\n return function (k) {\n var $173 = map4(catMapMaybes1);\n var $174 = traverse1(k);\n var $175 = slots2(label);\n return function ($176) {\n return $173($174($175($176)));\n };\n };\n }, q, identity))));\n };\n };\n };\n };\n};\nvar query = function () {\n return function (dictIsSymbol) {\n var lookup1 = lookup(dictIsSymbol);\n return function (dictOrd) {\n var lookup2 = lookup1(dictOrd);\n return function (label) {\n return function (p) {\n return function (q) {\n return Control_Monad_Free.liftF(new ChildQuery(Halogen_Query_ChildQuery.mkChildQueryBox(new Halogen_Query_ChildQuery.ChildQuery(function (dictApplicative) {\n var pure1 = Control_Applicative.pure(dictApplicative);\n return function (k) {\n var $177 = Data_Maybe.maybe(pure1(Data_Maybe.Nothing.value))(k);\n var $178 = lookup2(label)(p);\n return function ($179) {\n return $177($178($179));\n };\n };\n }, q, identity))));\n };\n };\n };\n };\n };\n};\nvar ordSubscriptionId = Data_Ord.ordInt;\nvar ordForkId = Data_Ord.ordInt;\nvar newtypeHalogenAp = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar monoidHalogenM = function (dictMonoid) {\n return Control_Monad_Free.monoidFree(dictMonoid);\n};\nvar monadTransHalogenM = {\n lift: function (dictMonad) {\n return function ($180) {\n return HalogenM(Control_Monad_Free.liftF(Lift.create($180)));\n };\n }\n};\nvar monadHalogenM = Control_Monad_Free.freeMonad;\nvar monadStateHalogenM = {\n state: function ($181) {\n return HalogenM(Control_Monad_Free.liftF(State.create($181)));\n },\n Monad0: function () {\n return monadHalogenM;\n }\n};\nvar monadTellHalogenM = function (dictMonadTell) {\n var Semigroup0 = dictMonadTell.Semigroup0();\n return {\n tell: (function () {\n var $182 = Control_Monad_Writer_Class.tell(dictMonadTell);\n return function ($183) {\n return HalogenM(Control_Monad_Free.liftF(Lift.create($182($183))));\n };\n })(),\n Semigroup0: function () {\n return Semigroup0;\n },\n Monad1: function () {\n return monadHalogenM;\n }\n };\n};\nvar monadThrowHalogenM = function (dictMonadThrow) {\n return {\n throwError: (function () {\n var $184 = Control_Monad_Error_Class.throwError(dictMonadThrow);\n return function ($185) {\n return HalogenM(Control_Monad_Free.liftF(Lift.create($184($185))));\n };\n })(),\n Monad0: function () {\n return monadHalogenM;\n }\n };\n};\nvar monadEffectHalogenM = function (dictMonadEffect) {\n return {\n liftEffect: (function () {\n var $186 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($187) {\n return HalogenM(Control_Monad_Free.liftF(Lift.create($186($187))));\n };\n })(),\n Monad0: function () {\n return monadHalogenM;\n }\n };\n};\nvar monadAskHalogenM = function (dictMonadAsk) {\n return {\n ask: Control_Monad_Free.liftF(new Lift(Control_Monad_Reader_Class.ask(dictMonadAsk))),\n Monad0: function () {\n return monadHalogenM;\n }\n };\n};\nvar monadAffHalogenM = function (dictMonadAff) {\n var monadEffectHalogenM1 = monadEffectHalogenM(dictMonadAff.MonadEffect0());\n return {\n liftAff: (function () {\n var $188 = Effect_Aff_Class.liftAff(dictMonadAff);\n return function ($189) {\n return HalogenM(Control_Monad_Free.liftF(Lift.create($188($189))));\n };\n })(),\n MonadEffect0: function () {\n return monadEffectHalogenM1;\n }\n };\n};\nvar mapOutput = function (f) {\n return function (v) {\n var go = function (v1) {\n if (v1 instanceof State) {\n return new State(v1.value0);\n };\n if (v1 instanceof Subscribe) {\n return new Subscribe(v1.value0, v1.value1);\n };\n if (v1 instanceof Unsubscribe) {\n return new Unsubscribe(v1.value0, v1.value1);\n };\n if (v1 instanceof Lift) {\n return new Lift(v1.value0);\n };\n if (v1 instanceof ChildQuery) {\n return new ChildQuery(v1.value0);\n };\n if (v1 instanceof Raise) {\n return new Raise(f(v1.value0), v1.value1);\n };\n if (v1 instanceof Par) {\n return new Par(over(HalogenAp)(Control_Applicative_Free.hoistFreeAp(mapOutput(f)))(v1.value0));\n };\n if (v1 instanceof Fork) {\n return new Fork(mapOutput(f)(v1.value0), v1.value1);\n };\n if (v1 instanceof Join) {\n return new Join(v1.value0, v1.value1);\n };\n if (v1 instanceof Kill) {\n return new Kill(v1.value0, v1.value1);\n };\n if (v1 instanceof GetRef) {\n return new GetRef(v1.value0, v1.value1);\n };\n throw new Error(\"Failed pattern match at Halogen.Query.HalogenM (line 290, column 8 - line 301, column 29): \" + [ v1.constructor.name ]);\n };\n return Control_Monad_Free.hoistFree(go)(v);\n };\n};\nvar mapAction = function (dictFunctor) {\n return function (f) {\n return function (v) {\n var go = function (v1) {\n if (v1 instanceof State) {\n return new State(v1.value0);\n };\n if (v1 instanceof Subscribe) {\n return new Subscribe((function () {\n var $190 = map(f);\n return function ($191) {\n return $190(v1.value0($191));\n };\n })(), v1.value1);\n };\n if (v1 instanceof Unsubscribe) {\n return new Unsubscribe(v1.value0, v1.value1);\n };\n if (v1 instanceof Lift) {\n return new Lift(v1.value0);\n };\n if (v1 instanceof ChildQuery) {\n return new ChildQuery(v1.value0);\n };\n if (v1 instanceof Raise) {\n return new Raise(v1.value0, v1.value1);\n };\n if (v1 instanceof Par) {\n return new Par(over(HalogenAp)(Control_Applicative_Free.hoistFreeAp(mapAction(dictFunctor)(f)))(v1.value0));\n };\n if (v1 instanceof Fork) {\n return new Fork(mapAction(dictFunctor)(f)(v1.value0), v1.value1);\n };\n if (v1 instanceof Join) {\n return new Join(v1.value0, v1.value1);\n };\n if (v1 instanceof Kill) {\n return new Kill(v1.value0, v1.value1);\n };\n if (v1 instanceof GetRef) {\n return new GetRef(v1.value0, v1.value1);\n };\n throw new Error(\"Failed pattern match at Halogen.Query.HalogenM (line 269, column 8 - line 280, column 29): \" + [ v1.constructor.name ]);\n };\n return Control_Monad_Free.hoistFree(go)(v);\n };\n };\n};\nvar kill = function (fid) {\n return Control_Monad_Free.liftF(new Kill(fid, Data_Unit.unit));\n};\nvar join = function (fid) {\n return Control_Monad_Free.liftF(new Join(fid, Data_Unit.unit));\n};\nvar imapState = function (f) {\n return function (f$prime) {\n return function (v) {\n var go = function (v1) {\n if (v1 instanceof State) {\n return new State((function () {\n var $192 = map1(f);\n return function ($193) {\n return $192(v1.value0(f$prime($193)));\n };\n })());\n };\n if (v1 instanceof Subscribe) {\n return new Subscribe(v1.value0, v1.value1);\n };\n if (v1 instanceof Unsubscribe) {\n return new Unsubscribe(v1.value0, v1.value1);\n };\n if (v1 instanceof Lift) {\n return new Lift(v1.value0);\n };\n if (v1 instanceof ChildQuery) {\n return new ChildQuery(v1.value0);\n };\n if (v1 instanceof Raise) {\n return new Raise(v1.value0, v1.value1);\n };\n if (v1 instanceof Par) {\n return new Par(over(HalogenAp)(Control_Applicative_Free.hoistFreeAp(imapState(f)(f$prime)))(v1.value0));\n };\n if (v1 instanceof Fork) {\n return new Fork(imapState(f)(f$prime)(v1.value0), v1.value1);\n };\n if (v1 instanceof Join) {\n return new Join(v1.value0, v1.value1);\n };\n if (v1 instanceof Kill) {\n return new Kill(v1.value0, v1.value1);\n };\n if (v1 instanceof GetRef) {\n return new GetRef(v1.value0, v1.value1);\n };\n throw new Error(\"Failed pattern match at Halogen.Query.HalogenM (line 247, column 8 - line 258, column 29): \" + [ v1.constructor.name ]);\n };\n return Control_Monad_Free.hoistFree(go)(v);\n };\n };\n};\nvar hoist = function (dictFunctor) {\n return function (nat) {\n return function (v) {\n var go = function (v1) {\n if (v1 instanceof State) {\n return new State(v1.value0);\n };\n if (v1 instanceof Subscribe) {\n return new Subscribe(v1.value0, v1.value1);\n };\n if (v1 instanceof Unsubscribe) {\n return new Unsubscribe(v1.value0, v1.value1);\n };\n if (v1 instanceof Lift) {\n return new Lift(nat(v1.value0));\n };\n if (v1 instanceof ChildQuery) {\n return new ChildQuery(v1.value0);\n };\n if (v1 instanceof Raise) {\n return new Raise(v1.value0, v1.value1);\n };\n if (v1 instanceof Par) {\n return new Par(over(HalogenAp)(Control_Applicative_Free.hoistFreeAp(hoist(dictFunctor)(nat)))(v1.value0));\n };\n if (v1 instanceof Fork) {\n return new Fork(hoist(dictFunctor)(nat)(v1.value0), v1.value1);\n };\n if (v1 instanceof Join) {\n return new Join(v1.value0, v1.value1);\n };\n if (v1 instanceof Kill) {\n return new Kill(v1.value0, v1.value1);\n };\n if (v1 instanceof GetRef) {\n return new GetRef(v1.value0, v1.value1);\n };\n throw new Error(\"Failed pattern match at Halogen.Query.HalogenM (line 312, column 8 - line 323, column 29): \" + [ v1.constructor.name ]);\n };\n return Control_Monad_Free.hoistFree(go)(v);\n };\n };\n};\nvar getRef = function (p) {\n return Control_Monad_Free.liftF(new GetRef(p, identity));\n};\nvar functorHalogenM = Control_Monad_Free.freeFunctor;\nvar functorHalogenAp = Control_Applicative_Free.functorFreeAp;\nvar map3 = /* #__PURE__ */ Data_Functor.map(functorHalogenAp);\nvar functorHalogenF = function (dictFunctor) {\n var map4 = Data_Functor.map(dictFunctor);\n return {\n map: function (f) {\n return function (v) {\n if (v instanceof State) {\n return new State((function () {\n var $194 = lmap(f);\n return function ($195) {\n return $194(v.value0($195));\n };\n })());\n };\n if (v instanceof Subscribe) {\n return new Subscribe(v.value0, function ($196) {\n return f(v.value1($196));\n });\n };\n if (v instanceof Unsubscribe) {\n return new Unsubscribe(v.value0, f(v.value1));\n };\n if (v instanceof Lift) {\n return new Lift(map4(f)(v.value0));\n };\n if (v instanceof ChildQuery) {\n return new ChildQuery(map2(f)(v.value0));\n };\n if (v instanceof Raise) {\n return new Raise(v.value0, f(v.value1));\n };\n if (v instanceof Par) {\n return new Par(map3(f)(v.value0));\n };\n if (v instanceof Fork) {\n return new Fork(v.value0, function ($197) {\n return f(v.value1($197));\n });\n };\n if (v instanceof Join) {\n return new Join(v.value0, f(v.value1));\n };\n if (v instanceof Kill) {\n return new Kill(v.value0, f(v.value1));\n };\n if (v instanceof GetRef) {\n return new GetRef(v.value0, function ($198) {\n return f(v.value1($198));\n });\n };\n throw new Error(\"Failed pattern match at Halogen.Query.HalogenM (line 57, column 11 - line 68, column 37): \" + [ v.constructor.name ]);\n };\n }\n };\n};\nvar fork = function (hmu) {\n return Control_Monad_Free.liftF(new Fork(hmu, identity));\n};\nvar eqSubscriptionId = Data_Eq.eqInt;\nvar eqForkId = Data_Eq.eqInt;\nvar bindHalogenM = Control_Monad_Free.freeBind;\nvar bind = /* #__PURE__ */ Control_Bind.bind(bindHalogenM);\nvar applyHalogenM = Control_Monad_Free.freeApply;\nvar applyHalogenAp = Control_Applicative_Free.applyFreeAp;\nvar parallelHalogenM = {\n parallel: function ($199) {\n return HalogenAp(Control_Applicative_Free.liftFreeAp($199));\n },\n sequential: function ($200) {\n return HalogenM(Control_Monad_Free.liftF(Par.create($200)));\n },\n Apply0: function () {\n return applyHalogenM;\n },\n Apply1: function () {\n return applyHalogenAp;\n }\n};\nvar applicativeHalogenM = Control_Monad_Free.freeApplicative;\nvar pure = /* #__PURE__ */ Control_Applicative.pure(applicativeHalogenM);\nvar monadRecHalogenM = {\n tailRecM: function (k) {\n return function (a) {\n return bind(k(a))(function (v) {\n if (v instanceof Control_Monad_Rec_Class.Loop) {\n return Control_Monad_Rec_Class.tailRecM(monadRecHalogenM)(k)(v.value0);\n };\n if (v instanceof Control_Monad_Rec_Class.Done) {\n return pure(v.value0);\n };\n throw new Error(\"Failed pattern match at Halogen.Query.HalogenM (line 105, column 26 - line 107, column 21): \" + [ v.constructor.name ]);\n });\n };\n },\n Monad0: function () {\n return monadHalogenM;\n }\n};\nvar applicativeHalogenAp = Control_Applicative_Free.applicativeFreeAp;\nexport {\n State,\n Subscribe,\n Unsubscribe,\n Lift,\n ChildQuery,\n Raise,\n Par,\n Fork,\n Join,\n Kill,\n GetRef,\n HalogenM,\n HalogenAp,\n raise,\n query,\n queryAll,\n SubscriptionId,\n subscribe,\n subscribe$prime,\n unsubscribe,\n ForkId,\n fork,\n join,\n kill,\n getRef,\n imapState,\n mapAction,\n mapOutput,\n hoist,\n functorHalogenF,\n functorHalogenM,\n applyHalogenM,\n applicativeHalogenM,\n bindHalogenM,\n monadHalogenM,\n semigroupHalogenM,\n monoidHalogenM,\n monadEffectHalogenM,\n monadAffHalogenM,\n parallelHalogenM,\n monadTransHalogenM,\n monadRecHalogenM,\n monadStateHalogenM,\n monadAskHalogenM,\n monadTellHalogenM,\n monadThrowHalogenM,\n newtypeHalogenAp,\n functorHalogenAp,\n applyHalogenAp,\n applicativeHalogenAp,\n eqSubscriptionId,\n ordSubscriptionId,\n eqForkId,\n ordForkId\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Coyoneda from \"../Data.Coyoneda/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Coyoneda.functorCoyoneda);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorFn);\nvar Initialize = /* #__PURE__ */ (function () {\n function Initialize(value0) {\n this.value0 = value0;\n };\n Initialize.create = function (value0) {\n return new Initialize(value0);\n };\n return Initialize;\n})();\nvar Finalize = /* #__PURE__ */ (function () {\n function Finalize(value0) {\n this.value0 = value0;\n };\n Finalize.create = function (value0) {\n return new Finalize(value0);\n };\n return Finalize;\n})();\nvar Receive = /* #__PURE__ */ (function () {\n function Receive(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Receive.create = function (value0) {\n return function (value1) {\n return new Receive(value0, value1);\n };\n };\n return Receive;\n})();\nvar Action = /* #__PURE__ */ (function () {\n function Action(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Action.create = function (value0) {\n return function (value1) {\n return new Action(value0, value1);\n };\n };\n return Action;\n})();\nvar Query = /* #__PURE__ */ (function () {\n function Query(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n Query.create = function (value0) {\n return function (value1) {\n return new Query(value0, value1);\n };\n };\n return Query;\n})();\nvar functorHalogenQ = {\n map: function (f) {\n return function (m) {\n if (m instanceof Initialize) {\n return new Initialize(f(m.value0));\n };\n if (m instanceof Finalize) {\n return new Finalize(f(m.value0));\n };\n if (m instanceof Receive) {\n return new Receive(m.value0, f(m.value1));\n };\n if (m instanceof Action) {\n return new Action(m.value0, f(m.value1));\n };\n if (m instanceof Query) {\n return new Query(map(f)(m.value0), map1(f)(m.value1));\n };\n throw new Error(\"Failed pattern match at Halogen.Query.HalogenQ (line 0, column 0 - line 0, column 0): \" + [ m.constructor.name ]);\n };\n }\n};\nvar bifunctorHalogenQ = {\n bimap: function (f) {\n return function (g) {\n return function (v) {\n if (v instanceof Initialize) {\n return new Initialize(g(v.value0));\n };\n if (v instanceof Finalize) {\n return new Finalize(g(v.value0));\n };\n if (v instanceof Receive) {\n return new Receive(f(v.value0), g(v.value1));\n };\n if (v instanceof Action) {\n return new Action(v.value0, g(v.value1));\n };\n if (v instanceof Query) {\n return new Query(map(g)(v.value0), map1(g)(v.value1));\n };\n throw new Error(\"Failed pattern match at Halogen.Query.HalogenQ (line 16, column 15 - line 21, column 45): \" + [ v.constructor.name ]);\n };\n };\n }\n};\nexport {\n Initialize,\n Finalize,\n Receive,\n Action,\n Query,\n bifunctorHalogenQ,\n functorHalogenQ\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Function_Uncurried from \"../Data.Function.Uncurried/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Halogen_VDom_DOM from \"../Halogen.VDom.DOM/index.js\";\nimport * as Halogen_VDom_Machine from \"../Halogen.VDom.Machine/index.js\";\nimport * as Halogen_VDom_Util from \"../Halogen.VDom.Util/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar Thunk = /* #__PURE__ */ (function () {\n function Thunk(value0, value1, value2, value3) {\n this.value0 = value0;\n this.value1 = value1;\n this.value2 = value2;\n this.value3 = value3;\n };\n Thunk.create = function (value0) {\n return function (value1) {\n return function (value2) {\n return function (value3) {\n return new Thunk(value0, value1, value2, value3);\n };\n };\n };\n };\n return Thunk;\n})();\nvar unsafeThunkId = Unsafe_Coerce.unsafeCoerce;\nvar unsafeEqThunk = function (v, v1) {\n return Halogen_VDom_Util.refEq(v.value0, v1.value0) && (Halogen_VDom_Util.refEq(v.value1, v1.value1) && v.value1(v.value3, v1.value3));\n};\nvar thunk = function (tid, eqFn, f, a) {\n return new Thunk(tid, eqFn, f, a);\n};\nvar thunk1 = function (f, a) {\n return thunk(unsafeThunkId(f), Halogen_VDom_Util.refEq, f, a);\n};\nvar thunk2 = /* #__PURE__ */ (function () {\n var eqFn = function (a, b) {\n return Halogen_VDom_Util.refEq(a[\"_1\"], b[\"_1\"]) && Halogen_VDom_Util.refEq(a[\"_2\"], b[\"_2\"]);\n };\n return function (f, a, b) {\n return thunk(unsafeThunkId(f), eqFn, function (v) {\n return f(v[\"_1\"])(v[\"_2\"]);\n }, {\n \"_1\": a,\n \"_2\": b\n });\n };\n})();\nvar thunk3 = /* #__PURE__ */ (function () {\n var eqFn = function (a, b) {\n return Halogen_VDom_Util.refEq(a[\"_1\"], b[\"_1\"]) && (Halogen_VDom_Util.refEq(a[\"_2\"], b[\"_2\"]) && Halogen_VDom_Util.refEq(a[\"_3\"], b[\"_3\"]));\n };\n return function (f, a, b, c) {\n return thunk(unsafeThunkId(f), eqFn, function (v) {\n return f(v[\"_1\"])(v[\"_2\"])(v[\"_3\"]);\n }, {\n \"_1\": a,\n \"_2\": b,\n \"_3\": c\n });\n };\n})();\nvar thunked = function (eqFn) {\n return function (f) {\n var tid = unsafeThunkId({\n f: f\n });\n var eqFn$prime = Data_Function_Uncurried.mkFn2(eqFn);\n return function (a) {\n return thunk(tid, eqFn$prime, f, a);\n };\n };\n};\nvar runThunk = function (v) {\n return v.value2(v.value3);\n};\nvar mapThunk = function (k) {\n return function (v) {\n return new Thunk(v.value0, v.value1, function ($51) {\n return k(v.value2($51));\n }, v.value3);\n };\n};\nvar hoist = mapThunk;\nvar functorThunk = function (dictFunctor) {\n var map = Data_Functor.map(dictFunctor);\n return {\n map: function (f) {\n return function (v) {\n return new Thunk(v.value0, v.value1, (function () {\n var $52 = map(f);\n return function ($53) {\n return $52(v.value2($53));\n };\n })(), v.value3);\n };\n }\n };\n};\nvar buildThunk = function (toVDom) {\n var haltThunk = function (state) {\n return Halogen_VDom_Machine.halt(state.vdom);\n };\n var $lazy_patchThunk = $runtime_lazy(\"patchThunk\", \"Halogen.VDom.Thunk\", function () {\n return function (state, t2) {\n var $48 = unsafeEqThunk(state.thunk, t2);\n if ($48) {\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(state.vdom), state, $lazy_patchThunk(112), haltThunk));\n };\n var vdom = Halogen_VDom_Machine.step(state.vdom, toVDom(runThunk(t2)));\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(vdom), {\n vdom: vdom,\n thunk: t2\n }, $lazy_patchThunk(115), haltThunk));\n };\n });\n var patchThunk = $lazy_patchThunk(108);\n var renderThunk = function (spec) {\n return function (t) {\n var vdom = Halogen_VDom_DOM.buildVDom(spec)(toVDom(runThunk(t)));\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(vdom), {\n thunk: t,\n vdom: vdom\n }, patchThunk, haltThunk));\n };\n };\n return renderThunk;\n};\nexport {\n buildThunk,\n runThunk,\n hoist,\n mapThunk,\n thunked,\n thunk1,\n thunk2,\n thunk3,\n functorThunk\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Data_Bifunctor from \"../Data.Bifunctor/index.js\";\nimport * as Data_Coyoneda from \"../Data.Coyoneda/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Halogen_Data_Slot from \"../Halogen.Data.Slot/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Halogen_Query_HalogenQ from \"../Halogen.Query.HalogenQ/index.js\";\nimport * as Halogen_VDom_Thunk from \"../Halogen.VDom.Thunk/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar voidLeft = /* #__PURE__ */ Data_Functor.voidLeft(Halogen_Query_HalogenM.functorHalogenM);\nvar traverse_ = /* #__PURE__ */ Data_Foldable.traverse_(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Foldable.foldableMaybe);\nvar map = /* #__PURE__ */ Data_Functor.map(Halogen_Query_HalogenM.functorHalogenM);\nvar lmap = /* #__PURE__ */ Data_Bifunctor.lmap(Halogen_HTML_Core.bifunctorHTML);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorFn);\nvar map2 = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar bimap = /* #__PURE__ */ Data_Bifunctor.bimap(Halogen_HTML_Core.bifunctorHTML);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM);\nvar lookup = /* #__PURE__ */ Halogen_Data_Slot.lookup();\nvar pop = /* #__PURE__ */ Halogen_Data_Slot.pop();\nvar insert = /* #__PURE__ */ Halogen_Data_Slot.insert();\nvar ComponentSlot = /* #__PURE__ */ (function () {\n function ComponentSlot(value0) {\n this.value0 = value0;\n };\n ComponentSlot.create = function (value0) {\n return new ComponentSlot(value0);\n };\n return ComponentSlot;\n})();\nvar ThunkSlot = /* #__PURE__ */ (function () {\n function ThunkSlot(value0) {\n this.value0 = value0;\n };\n ThunkSlot.create = function (value0) {\n return new ThunkSlot(value0);\n };\n return ThunkSlot;\n})();\nvar unComponentSlot = Unsafe_Coerce.unsafeCoerce;\nvar unComponent = Unsafe_Coerce.unsafeCoerce;\nvar mkEval = function (args) {\n return function (v) {\n if (v instanceof Halogen_Query_HalogenQ.Initialize) {\n return voidLeft(traverse_(args.handleAction)(args.initialize))(v.value0);\n };\n if (v instanceof Halogen_Query_HalogenQ.Finalize) {\n return voidLeft(traverse_(args.handleAction)(args.finalize))(v.value0);\n };\n if (v instanceof Halogen_Query_HalogenQ.Receive) {\n return voidLeft(traverse_(args.handleAction)(args.receive(v.value0)))(v.value1);\n };\n if (v instanceof Halogen_Query_HalogenQ.Action) {\n return voidLeft(args.handleAction(v.value0))(v.value1);\n };\n if (v instanceof Halogen_Query_HalogenQ.Query) {\n return Data_Coyoneda.unCoyoneda(function (g) {\n var $45 = map(Data_Maybe.maybe(v.value1(Data_Unit.unit))(g));\n return function ($46) {\n return $45(args.handleQuery($46));\n };\n })(v.value0);\n };\n throw new Error(\"Failed pattern match at Halogen.Component (line 182, column 15 - line 192, column 71): \" + [ v.constructor.name ]);\n };\n};\nvar mkComponentSlot = Unsafe_Coerce.unsafeCoerce;\nvar mkComponent = Unsafe_Coerce.unsafeCoerce;\nvar hoistSlot = function (dictFunctor) {\n return function (nat) {\n return function (v) {\n if (v instanceof ComponentSlot) {\n return unComponentSlot(function (slot) {\n return new ComponentSlot(mkComponentSlot({\n get: slot.get,\n pop: slot.pop,\n set: slot.set,\n input: slot.input,\n output: slot.output,\n component: hoist(dictFunctor)(nat)(slot.component)\n }));\n })(v.value0);\n };\n if (v instanceof ThunkSlot) {\n return new ThunkSlot(Halogen_VDom_Thunk.hoist(lmap(hoistSlot(dictFunctor)(nat)))(v.value0));\n };\n throw new Error(\"Failed pattern match at Halogen.Component (line 279, column 17 - line 284, column 53): \" + [ v.constructor.name ]);\n };\n };\n};\nvar hoist = function (dictFunctor) {\n var hoist1 = Halogen_Query_HalogenM.hoist(dictFunctor);\n return function (nat) {\n return unComponent(function (c) {\n return mkComponent({\n initialState: c.initialState,\n render: (function () {\n var $47 = lmap(hoistSlot(dictFunctor)(nat));\n return function ($48) {\n return $47(c.render($48));\n };\n })(),\n \"eval\": (function () {\n var $49 = hoist1(nat);\n return function ($50) {\n return $49(c[\"eval\"]($50));\n };\n })()\n });\n });\n };\n};\nvar functorComponentSlotBox = {\n map: function (f) {\n return unComponentSlot(function (slot) {\n return mkComponentSlot({\n get: slot.get,\n pop: slot.pop,\n set: slot.set,\n component: slot.component,\n input: slot.input,\n output: map1(map2(f))(slot.output)\n });\n });\n }\n};\nvar map3 = /* #__PURE__ */ Data_Functor.map(functorComponentSlotBox);\nvar functorComponentSlot = {\n map: function (f) {\n return function (v) {\n if (v instanceof ComponentSlot) {\n return new ComponentSlot(map3(f)(v.value0));\n };\n if (v instanceof ThunkSlot) {\n return new ThunkSlot(Halogen_VDom_Thunk.mapThunk(bimap(Data_Functor.map(functorComponentSlot)(f))(f))(v.value0));\n };\n throw new Error(\"Failed pattern match at Halogen.Component (line 209, column 11 - line 211, column 74): \" + [ v.constructor.name ]);\n };\n }\n};\nvar defaultEval = /* #__PURE__ */ (function () {\n return {\n handleAction: Data_Function[\"const\"](pure(Data_Unit.unit)),\n handleQuery: Data_Function[\"const\"](pure(Data_Maybe.Nothing.value)),\n receive: Data_Function[\"const\"](Data_Maybe.Nothing.value),\n initialize: Data_Maybe.Nothing.value,\n finalize: Data_Maybe.Nothing.value\n };\n})();\nvar componentSlot = function () {\n return function (dictIsSymbol) {\n var lookup1 = lookup(dictIsSymbol);\n var pop1 = pop(dictIsSymbol);\n var insert1 = insert(dictIsSymbol);\n return function (dictOrd) {\n var lookup2 = lookup1(dictOrd);\n var pop2 = pop1(dictOrd);\n var insert2 = insert1(dictOrd);\n return function (label) {\n return function (p) {\n return function (comp) {\n return function (input) {\n return function (output) {\n return mkComponentSlot({\n get: lookup2(label)(p),\n pop: pop2(label)(p),\n set: insert2(label)(p),\n component: comp,\n input: input,\n output: output\n });\n };\n };\n };\n };\n };\n };\n };\n};\nexport {\n mkComponent,\n unComponent,\n hoist,\n mkEval,\n defaultEval,\n ComponentSlot,\n ThunkSlot,\n componentSlot,\n mkComponentSlot,\n unComponentSlot,\n hoistSlot,\n functorComponentSlotBox,\n functorComponentSlot\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_VDom_Types from \"../Halogen.VDom.Types/index.js\";\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Data_Maybe.applicativeMaybe);\nvar withKeys_ = function (ctor) {\n return function (children) {\n var v = ctor([ ]);\n if (v instanceof Halogen_VDom_Types.Elem) {\n return new Halogen_VDom_Types.Keyed(v.value0, v.value1, v.value2, children);\n };\n return v;\n };\n};\nvar withKeys = function (ctor) {\n return function (props) {\n return function (children) {\n var v = ctor(props)([ ]);\n if (v instanceof Halogen_VDom_Types.Elem) {\n return new Halogen_VDom_Types.Keyed(v.value0, v.value1, v.value2, children);\n };\n return v;\n };\n };\n};\nvar keyedNS = function ($14) {\n return Halogen_HTML_Core.keyed(pure($14));\n};\nvar keyed = /* #__PURE__ */ (function () {\n return Halogen_HTML_Core.keyed(Data_Maybe.Nothing.value);\n})();\nvar elementNS = function ($15) {\n return Halogen_HTML_Core.element(pure($15));\n};\nvar element = /* #__PURE__ */ (function () {\n return Halogen_HTML_Core.element(Data_Maybe.Nothing.value);\n})();\nvar em = /* #__PURE__ */ element(\"em\");\nvar em_ = /* #__PURE__ */ em([ ]);\nvar embed = /* #__PURE__ */ element(\"embed\");\nvar embed_ = /* #__PURE__ */ embed([ ]);\nvar fieldset = /* #__PURE__ */ element(\"fieldset\");\nvar fieldset_ = /* #__PURE__ */ fieldset([ ]);\nvar figcaption = /* #__PURE__ */ element(\"figcaption\");\nvar figcaption_ = /* #__PURE__ */ figcaption([ ]);\nvar figure = /* #__PURE__ */ element(\"figure\");\nvar figure_ = /* #__PURE__ */ figure([ ]);\nvar footer = /* #__PURE__ */ element(\"footer\");\nvar footer_ = /* #__PURE__ */ footer([ ]);\nvar form = /* #__PURE__ */ element(\"form\");\nvar form_ = /* #__PURE__ */ form([ ]);\nvar h1 = /* #__PURE__ */ element(\"h1\");\nvar h1_ = /* #__PURE__ */ h1([ ]);\nvar h2 = /* #__PURE__ */ element(\"h2\");\nvar h2_ = /* #__PURE__ */ h2([ ]);\nvar h3 = /* #__PURE__ */ element(\"h3\");\nvar h3_ = /* #__PURE__ */ h3([ ]);\nvar h4 = /* #__PURE__ */ element(\"h4\");\nvar h4_ = /* #__PURE__ */ h4([ ]);\nvar h5 = /* #__PURE__ */ element(\"h5\");\nvar h5_ = /* #__PURE__ */ h5([ ]);\nvar h6 = /* #__PURE__ */ element(\"h6\");\nvar h6_ = /* #__PURE__ */ h6([ ]);\nvar head = /* #__PURE__ */ element(\"head\");\nvar head_ = /* #__PURE__ */ head([ ]);\nvar header = /* #__PURE__ */ element(\"header\");\nvar header_ = /* #__PURE__ */ header([ ]);\nvar hr = function (props) {\n return element(\"hr\")(props)([ ]);\n};\nvar hr_ = /* #__PURE__ */ hr([ ]);\nvar html = /* #__PURE__ */ element(\"html\");\nvar html_ = /* #__PURE__ */ html([ ]);\nvar i = /* #__PURE__ */ element(\"i\");\nvar i_ = /* #__PURE__ */ i([ ]);\nvar iframe = function (props) {\n return element(\"iframe\")(props)([ ]);\n};\nvar img = function (props) {\n return element(\"img\")(props)([ ]);\n};\nvar input = function (props) {\n return element(\"input\")(props)([ ]);\n};\nvar ins = /* #__PURE__ */ element(\"ins\");\nvar ins_ = /* #__PURE__ */ ins([ ]);\nvar kbd = /* #__PURE__ */ element(\"kbd\");\nvar kbd_ = /* #__PURE__ */ kbd([ ]);\nvar label = /* #__PURE__ */ element(\"label\");\nvar label_ = /* #__PURE__ */ label([ ]);\nvar legend = /* #__PURE__ */ element(\"legend\");\nvar legend_ = /* #__PURE__ */ legend([ ]);\nvar li = /* #__PURE__ */ element(\"li\");\nvar li_ = /* #__PURE__ */ li([ ]);\nvar link = function (props) {\n return element(\"link\")(props)([ ]);\n};\nvar main = /* #__PURE__ */ element(\"main\");\nvar main_ = /* #__PURE__ */ main([ ]);\nvar map = /* #__PURE__ */ element(\"map\");\nvar map_ = /* #__PURE__ */ map([ ]);\nvar mark = /* #__PURE__ */ element(\"mark\");\nvar mark_ = /* #__PURE__ */ mark([ ]);\nvar menu = /* #__PURE__ */ element(\"menu\");\nvar menu_ = /* #__PURE__ */ menu([ ]);\nvar menuitem = /* #__PURE__ */ element(\"menuitem\");\nvar menuitem_ = /* #__PURE__ */ menuitem([ ]);\nvar meta = function (props) {\n return element(\"meta\")(props)([ ]);\n};\nvar meter = /* #__PURE__ */ element(\"meter\");\nvar meter_ = /* #__PURE__ */ meter([ ]);\nvar nav = /* #__PURE__ */ element(\"nav\");\nvar nav_ = /* #__PURE__ */ nav([ ]);\nvar noscript = /* #__PURE__ */ element(\"noscript\");\nvar noscript_ = /* #__PURE__ */ noscript([ ]);\nvar object = /* #__PURE__ */ element(\"object\");\nvar object_ = /* #__PURE__ */ object([ ]);\nvar ol = /* #__PURE__ */ element(\"ol\");\nvar ol_ = /* #__PURE__ */ ol([ ]);\nvar optgroup = /* #__PURE__ */ element(\"optgroup\");\nvar optgroup_ = /* #__PURE__ */ optgroup([ ]);\nvar option = /* #__PURE__ */ element(\"option\");\nvar option_ = /* #__PURE__ */ option([ ]);\nvar output = /* #__PURE__ */ element(\"output\");\nvar output_ = /* #__PURE__ */ output([ ]);\nvar p = /* #__PURE__ */ element(\"p\");\nvar p_ = /* #__PURE__ */ p([ ]);\nvar param = function (props) {\n return element(\"param\")(props)([ ]);\n};\nvar pre = /* #__PURE__ */ element(\"pre\");\nvar pre_ = /* #__PURE__ */ pre([ ]);\nvar progress = /* #__PURE__ */ element(\"progress\");\nvar progress_ = /* #__PURE__ */ progress([ ]);\nvar q = /* #__PURE__ */ element(\"q\");\nvar q_ = /* #__PURE__ */ q([ ]);\nvar rp = /* #__PURE__ */ element(\"rp\");\nvar rp_ = /* #__PURE__ */ rp([ ]);\nvar rt = /* #__PURE__ */ element(\"rt\");\nvar rt_ = /* #__PURE__ */ rt([ ]);\nvar ruby = /* #__PURE__ */ element(\"ruby\");\nvar ruby_ = /* #__PURE__ */ ruby([ ]);\nvar samp = /* #__PURE__ */ element(\"samp\");\nvar samp_ = /* #__PURE__ */ samp([ ]);\nvar script = /* #__PURE__ */ element(\"script\");\nvar script_ = /* #__PURE__ */ script([ ]);\nvar section = /* #__PURE__ */ element(\"section\");\nvar section_ = /* #__PURE__ */ section([ ]);\nvar select = /* #__PURE__ */ element(\"select\");\nvar select_ = /* #__PURE__ */ select([ ]);\nvar small = /* #__PURE__ */ element(\"small\");\nvar small_ = /* #__PURE__ */ small([ ]);\nvar source = function (props) {\n return element(\"source\")(props)([ ]);\n};\nvar span = /* #__PURE__ */ element(\"span\");\nvar span_ = /* #__PURE__ */ span([ ]);\nvar strong = /* #__PURE__ */ element(\"strong\");\nvar strong_ = /* #__PURE__ */ strong([ ]);\nvar style = /* #__PURE__ */ element(\"style\");\nvar style_ = /* #__PURE__ */ style([ ]);\nvar sub = /* #__PURE__ */ element(\"sub\");\nvar sub_ = /* #__PURE__ */ sub([ ]);\nvar summary = /* #__PURE__ */ element(\"summary\");\nvar summary_ = /* #__PURE__ */ summary([ ]);\nvar sup = /* #__PURE__ */ element(\"sup\");\nvar sup_ = /* #__PURE__ */ sup([ ]);\nvar table = /* #__PURE__ */ element(\"table\");\nvar table_ = /* #__PURE__ */ table([ ]);\nvar tbody = /* #__PURE__ */ element(\"tbody\");\nvar tbody_ = /* #__PURE__ */ tbody([ ]);\nvar td = /* #__PURE__ */ element(\"td\");\nvar td_ = /* #__PURE__ */ td([ ]);\nvar textarea = function (es) {\n return element(\"textarea\")(es)([ ]);\n};\nvar tfoot = /* #__PURE__ */ element(\"tfoot\");\nvar tfoot_ = /* #__PURE__ */ tfoot([ ]);\nvar th = /* #__PURE__ */ element(\"th\");\nvar th_ = /* #__PURE__ */ th([ ]);\nvar thead = /* #__PURE__ */ element(\"thead\");\nvar thead_ = /* #__PURE__ */ thead([ ]);\nvar time = /* #__PURE__ */ element(\"time\");\nvar time_ = /* #__PURE__ */ time([ ]);\nvar title = /* #__PURE__ */ element(\"title\");\nvar title_ = /* #__PURE__ */ title([ ]);\nvar tr = /* #__PURE__ */ element(\"tr\");\nvar tr_ = /* #__PURE__ */ tr([ ]);\nvar track = function (props) {\n return element(\"track\")(props)([ ]);\n};\nvar u = /* #__PURE__ */ element(\"u\");\nvar u_ = /* #__PURE__ */ u([ ]);\nvar ul = /* #__PURE__ */ element(\"ul\");\nvar ul_ = /* #__PURE__ */ ul([ ]);\nvar $$var = /* #__PURE__ */ element(\"var\");\nvar var_ = /* #__PURE__ */ $$var([ ]);\nvar video = /* #__PURE__ */ element(\"video\");\nvar video_ = /* #__PURE__ */ video([ ]);\nvar wbr = function (props) {\n return element(\"wbr\")(props)([ ]);\n};\nvar dt = /* #__PURE__ */ element(\"dt\");\nvar dt_ = /* #__PURE__ */ dt([ ]);\nvar dl = /* #__PURE__ */ element(\"dl\");\nvar dl_ = /* #__PURE__ */ dl([ ]);\nvar div = /* #__PURE__ */ element(\"div\");\nvar div_ = /* #__PURE__ */ div([ ]);\nvar dialog = /* #__PURE__ */ element(\"dialog\");\nvar dialog_ = /* #__PURE__ */ dialog([ ]);\nvar dfn = /* #__PURE__ */ element(\"dfn\");\nvar dfn_ = /* #__PURE__ */ dfn([ ]);\nvar details = /* #__PURE__ */ element(\"details\");\nvar details_ = /* #__PURE__ */ details([ ]);\nvar del = /* #__PURE__ */ element(\"del\");\nvar del_ = /* #__PURE__ */ del([ ]);\nvar dd = /* #__PURE__ */ element(\"dd\");\nvar dd_ = /* #__PURE__ */ dd([ ]);\nvar datalist = /* #__PURE__ */ element(\"datalist\");\nvar datalist_ = /* #__PURE__ */ datalist([ ]);\nvar command = function (props) {\n return element(\"command\")(props)([ ]);\n};\nvar colgroup = /* #__PURE__ */ element(\"colgroup\");\nvar colgroup_ = /* #__PURE__ */ colgroup([ ]);\nvar col = function (props) {\n return element(\"col\")(props)([ ]);\n};\nvar code = /* #__PURE__ */ element(\"code\");\nvar code_ = /* #__PURE__ */ code([ ]);\nvar cite = /* #__PURE__ */ element(\"cite\");\nvar cite_ = /* #__PURE__ */ cite([ ]);\nvar caption = /* #__PURE__ */ element(\"caption\");\nvar caption_ = /* #__PURE__ */ caption([ ]);\nvar canvas = function (props) {\n return element(\"canvas\")(props)([ ]);\n};\nvar button = /* #__PURE__ */ element(\"button\");\nvar button_ = /* #__PURE__ */ button([ ]);\nvar br = function (props) {\n return element(\"br\")(props)([ ]);\n};\nvar br_ = /* #__PURE__ */ br([ ]);\nvar body = /* #__PURE__ */ element(\"body\");\nvar body_ = /* #__PURE__ */ body([ ]);\nvar blockquote = /* #__PURE__ */ element(\"blockquote\");\nvar blockquote_ = /* #__PURE__ */ blockquote([ ]);\nvar bdo = /* #__PURE__ */ element(\"bdo\");\nvar bdo_ = /* #__PURE__ */ bdo([ ]);\nvar bdi = /* #__PURE__ */ element(\"bdi\");\nvar bdi_ = /* #__PURE__ */ bdi([ ]);\nvar base = function (props) {\n return element(\"base\")(props)([ ]);\n};\nvar b = /* #__PURE__ */ element(\"b\");\nvar b_ = /* #__PURE__ */ b([ ]);\nvar audio = /* #__PURE__ */ element(\"audio\");\nvar audio_ = /* #__PURE__ */ audio([ ]);\nvar aside = /* #__PURE__ */ element(\"aside\");\nvar aside_ = /* #__PURE__ */ aside([ ]);\nvar article = /* #__PURE__ */ element(\"article\");\nvar article_ = /* #__PURE__ */ article([ ]);\nvar area = function (props) {\n return element(\"area\")(props)([ ]);\n};\nvar address = /* #__PURE__ */ element(\"address\");\nvar address_ = /* #__PURE__ */ address([ ]);\nvar abbr = /* #__PURE__ */ element(\"abbr\");\nvar abbr_ = /* #__PURE__ */ abbr([ ]);\nvar a = /* #__PURE__ */ element(\"a\");\nvar a_ = /* #__PURE__ */ a([ ]);\nexport {\n element,\n elementNS,\n keyed,\n keyedNS,\n withKeys,\n withKeys_,\n a,\n a_,\n abbr,\n abbr_,\n address,\n address_,\n area,\n article,\n article_,\n aside,\n aside_,\n audio,\n audio_,\n b,\n b_,\n base,\n bdi,\n bdi_,\n bdo,\n bdo_,\n blockquote,\n blockquote_,\n body,\n body_,\n br,\n br_,\n button,\n button_,\n canvas,\n caption,\n caption_,\n cite,\n cite_,\n code,\n code_,\n col,\n colgroup,\n colgroup_,\n command,\n datalist,\n datalist_,\n dd,\n dd_,\n del,\n del_,\n details,\n details_,\n dfn,\n dfn_,\n dialog,\n dialog_,\n div,\n div_,\n dl,\n dl_,\n dt,\n dt_,\n em,\n em_,\n embed,\n embed_,\n fieldset,\n fieldset_,\n figcaption,\n figcaption_,\n figure,\n figure_,\n footer,\n footer_,\n form,\n form_,\n h1,\n h1_,\n h2,\n h2_,\n h3,\n h3_,\n h4,\n h4_,\n h5,\n h5_,\n h6,\n h6_,\n head,\n head_,\n header,\n header_,\n hr,\n hr_,\n html,\n html_,\n i,\n i_,\n iframe,\n img,\n input,\n ins,\n ins_,\n kbd,\n kbd_,\n label,\n label_,\n legend,\n legend_,\n li,\n li_,\n link,\n main,\n main_,\n map,\n map_,\n mark,\n mark_,\n menu,\n menu_,\n menuitem,\n menuitem_,\n meta,\n meter,\n meter_,\n nav,\n nav_,\n noscript,\n noscript_,\n object,\n object_,\n ol,\n ol_,\n optgroup,\n optgroup_,\n option,\n option_,\n output,\n output_,\n p,\n p_,\n param,\n pre,\n pre_,\n progress,\n progress_,\n q,\n q_,\n rp,\n rp_,\n rt,\n rt_,\n ruby,\n ruby_,\n samp,\n samp_,\n script,\n script_,\n section,\n section_,\n select,\n select_,\n small,\n small_,\n source,\n span,\n span_,\n strong,\n strong_,\n style,\n style_,\n sub,\n sub_,\n summary,\n summary_,\n sup,\n sup_,\n table,\n table_,\n tbody,\n tbody_,\n td,\n td_,\n textarea,\n tfoot,\n tfoot_,\n th,\n th_,\n thead,\n thead_,\n time,\n time_,\n title,\n title_,\n tr,\n tr_,\n track,\n u,\n u_,\n ul,\n ul_,\n $$var as var,\n var_,\n video,\n video_,\n wbr\n};\n", "export function bubbles(e) {\n return e.bubbles;\n}\n\nexport function cancelable(e) {\n return e.cancelable;\n}\n\nexport function _currentTarget(e) {\n return e.currentTarget;\n}\n\nexport function defaultPrevented(e) {\n return function() {\n return e.defaultPrevented;\n };\n}\n\nexport function eventPhaseIndex(e) {\n return e.eventPhase;\n}\n\nexport function _target(e) {\n return e.target;\n}\n\nexport function timeStamp(e) {\n return e.timeStamp;\n}\n\nexport function type_(e) {\n return e.type;\n}\n\nexport function preventDefault(e) {\n return function () {\n return e.preventDefault();\n };\n}\n\nexport function stopImmediatePropagation(e) {\n return function () {\n return e.stopImmediatePropagation();\n };\n}\n\nexport function stopPropagation(e) {\n return function () {\n return e.stopPropagation();\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Enum from \"../Data.Enum/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Web_Event_EventPhase from \"../Web.Event.EventPhase/index.js\";\nimport * as Web_Event_Internal_Types from \"../Web.Event.Internal.Types/index.js\";\nvar fromJust = /* #__PURE__ */ Data_Maybe.fromJust();\nvar toEnum = /* #__PURE__ */ Data_Enum.toEnum(Web_Event_EventPhase.boundedEnumEventPhase);\nvar EventType = function (x) {\n return x;\n};\nvar target = function ($3) {\n return Data_Nullable.toMaybe($foreign[\"_target\"]($3));\n};\nvar ordEventType = Data_Ord.ordString;\nvar newtypeEventType = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar eventPhase = function () {\n return function ($4) {\n return fromJust(toEnum($foreign.eventPhaseIndex($4)));\n };\n};\nvar eqEventType = Data_Eq.eqString;\nvar currentTarget = function ($5) {\n return Data_Nullable.toMaybe($foreign[\"_currentTarget\"]($5));\n};\nexport {\n type_,\n stopPropagation,\n stopImmediatePropagation,\n bubbles,\n cancelable,\n preventDefault,\n defaultPrevented,\n timeStamp\n} from \"./foreign.js\";\nexport {\n EventType,\n target,\n currentTarget,\n eventPhase,\n newtypeEventType,\n eqEventType,\n ordEventType\n};\n", "// Generated by purs version 0.15.14\nvar unload = \"unload\";\nvar toggle = \"toggle\";\nvar submit = \"submit\";\nvar storage = \"storage\";\nvar select = \"select\";\nvar reset = \"reset\";\nvar readystatechange = \"readystatechange\";\nvar progress = \"progress\";\nvar paste = \"paste\";\nvar online = \"online\";\nvar offline = \"offline\";\nvar message = \"message\";\nvar loadstart = \"loadstart\";\nvar loadend = \"loadend\";\nvar load = \"load\";\nvar languagechange = \"languagechange\";\nvar invalid = \"invalid\";\nvar input = \"input\";\nvar focus = \"focus\";\nvar error = \"error\";\nvar domcontentloaded = \"DOMContentLoaded\";\nvar cut = \"cut\";\nvar copy = \"copy\";\nvar close = \"close\";\nvar click = \"click\";\nvar change = \"change\";\nvar cancel = \"cancel\";\nvar blur = \"blur\";\nvar beforescriptexecute = \"beforescriptexecute\";\nvar beforeprint = \"beforeprint\";\nvar afterscriptexecute = \"afterscriptexecute\";\nvar afterprint = \"afterprint\";\nvar abort = \"abort\";\nexport {\n abort,\n afterprint,\n afterscriptexecute,\n beforeprint,\n beforescriptexecute,\n blur,\n cancel,\n change,\n click,\n close,\n copy,\n cut,\n domcontentloaded,\n error,\n focus,\n input,\n invalid,\n languagechange,\n load,\n loadend,\n loadstart,\n message,\n offline,\n online,\n paste,\n progress,\n readystatechange,\n reset,\n select,\n storage,\n submit,\n toggle,\n unload\n};\n", "// Generated by purs version 0.15.14\nvar mouseup = \"mouseup\";\nvar mouseover = \"mouseover\";\nvar mouseout = \"mouseout\";\nvar mousemove = \"mousemove\";\nvar mouseleave = \"mouseleave\";\nvar mouseenter = \"mouseenter\";\nvar mousedown = \"mousedown\";\nvar dblclick = \"dblclick\";\nvar click = \"click\";\nvar auxclick = \"auxclick\";\nexport {\n auxclick,\n click,\n dblclick,\n mousedown,\n mouseenter,\n mouseleave,\n mousemove,\n mouseout,\n mouseover,\n mouseup\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_Except from \"../Control.Monad.Except/index.js\";\nimport * as Control_Monad_Except_Trans from \"../Control.Monad.Except.Trans/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Identity from \"../Data.Identity/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nimport * as Effect_Unsafe from \"../Effect.Unsafe/index.js\";\nimport * as Foreign from \"../Foreign/index.js\";\nimport * as Foreign_Index from \"../Foreign.Index/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_Query_Input from \"../Halogen.Query.Input/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nimport * as Web_Clipboard_ClipboardEvent_EventTypes from \"../Web.Clipboard.ClipboardEvent.EventTypes/index.js\";\nimport * as Web_Event_Event from \"../Web.Event.Event/index.js\";\nimport * as Web_File_FileList from \"../Web.File.FileList/index.js\";\nimport * as Web_HTML_Event_DragEvent_EventTypes from \"../Web.HTML.Event.DragEvent.EventTypes/index.js\";\nimport * as Web_HTML_Event_EventTypes from \"../Web.HTML.Event.EventTypes/index.js\";\nimport * as Web_HTML_HTMLInputElement from \"../Web.HTML.HTMLInputElement/index.js\";\nimport * as Web_UIEvent_FocusEvent_EventTypes from \"../Web.UIEvent.FocusEvent.EventTypes/index.js\";\nimport * as Web_UIEvent_KeyboardEvent_EventTypes from \"../Web.UIEvent.KeyboardEvent.EventTypes/index.js\";\nimport * as Web_UIEvent_MouseEvent_EventTypes from \"../Web.UIEvent.MouseEvent.EventTypes/index.js\";\nimport * as Web_UIEvent_WheelEvent_EventTypes from \"../Web.UIEvent.WheelEvent.EventTypes/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar composeKleisli = /* #__PURE__ */ Control_Bind.composeKleisli(Data_Maybe.bindMaybe);\nvar composeKleisliFlipped = /* #__PURE__ */ Control_Bind.composeKleisliFlipped(/* #__PURE__ */ Control_Monad_Except_Trans.bindExceptT(Data_Identity.monadIdentity));\nvar readProp = /* #__PURE__ */ Foreign_Index.readProp(Data_Identity.monadIdentity);\nvar readString = /* #__PURE__ */ Foreign.readString(Data_Identity.monadIdentity);\nvar wheelHandler = Unsafe_Coerce.unsafeCoerce;\nvar touchHandler = Unsafe_Coerce.unsafeCoerce;\nvar mouseHandler = Unsafe_Coerce.unsafeCoerce;\nvar keyHandler = Unsafe_Coerce.unsafeCoerce;\nvar handler$prime = function (et) {\n return function (f) {\n return Halogen_HTML_Core.handler(et)(function (ev) {\n return map(Halogen_Query_Input.Action.create)(f(ev));\n });\n };\n};\nvar handler = function (et) {\n return function (f) {\n return Halogen_HTML_Core.handler(et)(function (ev) {\n return new Data_Maybe.Just(new Halogen_Query_Input.Action(f(ev)));\n });\n };\n};\nvar onAbort = /* #__PURE__ */ handler(\"abort\");\nvar onAuxClick = /* #__PURE__ */ (function () {\n var $13 = handler(Web_UIEvent_MouseEvent_EventTypes.auxclick);\n return function ($14) {\n return $13(mouseHandler($14));\n };\n})();\nvar onChange = /* #__PURE__ */ handler(Web_HTML_Event_EventTypes.change);\nvar onClick = /* #__PURE__ */ (function () {\n var $15 = handler(Web_UIEvent_MouseEvent_EventTypes.click);\n return function ($16) {\n return $15(mouseHandler($16));\n };\n})();\nvar onDoubleClick = /* #__PURE__ */ (function () {\n var $17 = handler(Web_UIEvent_MouseEvent_EventTypes.dblclick);\n return function ($18) {\n return $17(mouseHandler($18));\n };\n})();\nvar onError = /* #__PURE__ */ handler(Web_HTML_Event_EventTypes.error);\nvar onFileUpload = function (dictUnfoldable) {\n var none = Data_Unfoldable.none(dictUnfoldable);\n var items = Web_File_FileList.items(dictUnfoldable);\n return function (f) {\n return handler(Web_HTML_Event_EventTypes.change)((function () {\n var $19 = Data_Maybe.maybe(none)(items);\n var $20 = composeKleisli(Web_Event_Event.target)(composeKleisli(Web_HTML_HTMLInputElement.fromEventTarget)(function ($22) {\n return Effect_Unsafe.unsafePerformEffect(Web_HTML_HTMLInputElement.files($22));\n }));\n return function ($21) {\n return f($19($20($21)));\n };\n })());\n };\n};\nvar onInput = /* #__PURE__ */ handler(Web_HTML_Event_EventTypes.input);\nvar onInvalid = /* #__PURE__ */ handler(Web_HTML_Event_EventTypes.invalid);\nvar onKeyDown = /* #__PURE__ */ (function () {\n var $23 = handler(Web_UIEvent_KeyboardEvent_EventTypes.keydown);\n return function ($24) {\n return $23(keyHandler($24));\n };\n})();\nvar onKeyUp = /* #__PURE__ */ (function () {\n var $25 = handler(Web_UIEvent_KeyboardEvent_EventTypes.keyup);\n return function ($26) {\n return $25(keyHandler($26));\n };\n})();\nvar onLoad = /* #__PURE__ */ handler(Web_HTML_Event_EventTypes.load);\nvar onMouseDown = /* #__PURE__ */ (function () {\n var $27 = handler(Web_UIEvent_MouseEvent_EventTypes.mousedown);\n return function ($28) {\n return $27(mouseHandler($28));\n };\n})();\nvar onMouseEnter = /* #__PURE__ */ (function () {\n var $29 = handler(Web_UIEvent_MouseEvent_EventTypes.mouseenter);\n return function ($30) {\n return $29(mouseHandler($30));\n };\n})();\nvar onMouseLeave = /* #__PURE__ */ (function () {\n var $31 = handler(Web_UIEvent_MouseEvent_EventTypes.mouseleave);\n return function ($32) {\n return $31(mouseHandler($32));\n };\n})();\nvar onMouseMove = /* #__PURE__ */ (function () {\n var $33 = handler(Web_UIEvent_MouseEvent_EventTypes.mousemove);\n return function ($34) {\n return $33(mouseHandler($34));\n };\n})();\nvar onMouseOut = /* #__PURE__ */ (function () {\n var $35 = handler(Web_UIEvent_MouseEvent_EventTypes.mouseout);\n return function ($36) {\n return $35(mouseHandler($36));\n };\n})();\nvar onMouseOver = /* #__PURE__ */ (function () {\n var $37 = handler(Web_UIEvent_MouseEvent_EventTypes.mouseover);\n return function ($38) {\n return $37(mouseHandler($38));\n };\n})();\nvar onMouseUp = /* #__PURE__ */ (function () {\n var $39 = handler(Web_UIEvent_MouseEvent_EventTypes.mouseup);\n return function ($40) {\n return $39(mouseHandler($40));\n };\n})();\nvar onReset = /* #__PURE__ */ handler(\"reset\");\nvar onResize = /* #__PURE__ */ handler(\"resize\");\nvar onScroll = /* #__PURE__ */ handler(\"scroll\");\nvar onSelect = /* #__PURE__ */ handler(Web_HTML_Event_EventTypes.select);\nvar onSubmit = /* #__PURE__ */ handler(\"submit\");\nvar onTouchCancel = /* #__PURE__ */ (function () {\n var $41 = handler(\"touchcancel\");\n return function ($42) {\n return $41(touchHandler($42));\n };\n})();\nvar onTouchEnd = /* #__PURE__ */ (function () {\n var $43 = handler(\"touchend\");\n return function ($44) {\n return $43(touchHandler($44));\n };\n})();\nvar onTouchEnter = /* #__PURE__ */ (function () {\n var $45 = handler(\"touchenter\");\n return function ($46) {\n return $45(touchHandler($46));\n };\n})();\nvar onTouchLeave = /* #__PURE__ */ (function () {\n var $47 = handler(\"touchleave\");\n return function ($48) {\n return $47(touchHandler($48));\n };\n})();\nvar onTouchMove = /* #__PURE__ */ (function () {\n var $49 = handler(\"touchmove\");\n return function ($50) {\n return $49(touchHandler($50));\n };\n})();\nvar onTouchStart = /* #__PURE__ */ (function () {\n var $51 = handler(\"touchstart\");\n return function ($52) {\n return $51(touchHandler($52));\n };\n})();\nvar onTransitionEnd = /* #__PURE__ */ handler(\"transitionend\");\nvar onWheel = /* #__PURE__ */ (function () {\n var $53 = handler(Web_UIEvent_WheelEvent_EventTypes.wheel);\n return function ($54) {\n return $53(wheelHandler($54));\n };\n})();\nvar focusHandler = Unsafe_Coerce.unsafeCoerce;\nvar onBlur = /* #__PURE__ */ (function () {\n var $55 = handler(Web_HTML_Event_EventTypes.blur);\n return function ($56) {\n return $55(focusHandler($56));\n };\n})();\nvar onFocus = /* #__PURE__ */ (function () {\n var $57 = handler(Web_UIEvent_FocusEvent_EventTypes.focus);\n return function ($58) {\n return $57(focusHandler($58));\n };\n})();\nvar onFocusIn = /* #__PURE__ */ (function () {\n var $59 = handler(Web_UIEvent_FocusEvent_EventTypes.focusin);\n return function ($60) {\n return $59(focusHandler($60));\n };\n})();\nvar onFocusOut = /* #__PURE__ */ (function () {\n var $61 = handler(Web_UIEvent_FocusEvent_EventTypes.focusout);\n return function ($62) {\n return $61(focusHandler($62));\n };\n})();\nvar dragHandler = Unsafe_Coerce.unsafeCoerce;\nvar onDrag = /* #__PURE__ */ (function () {\n var $63 = handler(Web_HTML_Event_DragEvent_EventTypes.drag);\n return function ($64) {\n return $63(dragHandler($64));\n };\n})();\nvar onDragEnd = /* #__PURE__ */ (function () {\n var $65 = handler(Web_HTML_Event_DragEvent_EventTypes.dragend);\n return function ($66) {\n return $65(dragHandler($66));\n };\n})();\nvar onDragEnter = /* #__PURE__ */ (function () {\n var $67 = handler(Web_HTML_Event_DragEvent_EventTypes.dragenter);\n return function ($68) {\n return $67(dragHandler($68));\n };\n})();\nvar onDragExit = /* #__PURE__ */ (function () {\n var $69 = handler(Web_HTML_Event_DragEvent_EventTypes.dragexit);\n return function ($70) {\n return $69(dragHandler($70));\n };\n})();\nvar onDragLeave = /* #__PURE__ */ (function () {\n var $71 = handler(Web_HTML_Event_DragEvent_EventTypes.dragleave);\n return function ($72) {\n return $71(dragHandler($72));\n };\n})();\nvar onDragOver = /* #__PURE__ */ (function () {\n var $73 = handler(Web_HTML_Event_DragEvent_EventTypes.dragover);\n return function ($74) {\n return $73(dragHandler($74));\n };\n})();\nvar onDragStart = /* #__PURE__ */ (function () {\n var $75 = handler(Web_HTML_Event_DragEvent_EventTypes.dragstart);\n return function ($76) {\n return $75(dragHandler($76));\n };\n})();\nvar onDrop = /* #__PURE__ */ (function () {\n var $77 = handler(Web_HTML_Event_DragEvent_EventTypes.drop);\n return function ($78) {\n return $77(dragHandler($78));\n };\n})();\nvar clipboardHandler = Unsafe_Coerce.unsafeCoerce;\nvar onCopy = /* #__PURE__ */ (function () {\n var $79 = handler(Web_Clipboard_ClipboardEvent_EventTypes.copy);\n return function ($80) {\n return $79(clipboardHandler($80));\n };\n})();\nvar onCut = /* #__PURE__ */ (function () {\n var $81 = handler(Web_Clipboard_ClipboardEvent_EventTypes.cut);\n return function ($82) {\n return $81(clipboardHandler($82));\n };\n})();\nvar onPaste = /* #__PURE__ */ (function () {\n var $83 = handler(Web_Clipboard_ClipboardEvent_EventTypes.paste);\n return function ($84) {\n return $83(clipboardHandler($84));\n };\n})();\nvar addForeignPropHandler = function (key) {\n return function (prop) {\n return function (reader) {\n return function (f) {\n var go = function (a) {\n return composeKleisliFlipped(reader)(readProp(prop))(Foreign.unsafeToForeign(a));\n };\n return handler$prime(key)(composeKleisli(Web_Event_Event.currentTarget)(function (e) {\n return Data_Either.either(Data_Function[\"const\"](Data_Maybe.Nothing.value))(function ($85) {\n return Data_Maybe.Just.create(f($85));\n })(Control_Monad_Except.runExcept(go(e)));\n }));\n };\n };\n };\n};\nvar onChecked = /* #__PURE__ */ addForeignPropHandler(Web_HTML_Event_EventTypes.change)(\"checked\")(/* #__PURE__ */ Foreign.readBoolean(Data_Identity.monadIdentity));\nvar onSelectedIndexChange = /* #__PURE__ */ addForeignPropHandler(Web_HTML_Event_EventTypes.change)(\"selectedIndex\")(/* #__PURE__ */ Foreign.readInt(Data_Identity.monadIdentity));\nvar onValueChange = /* #__PURE__ */ addForeignPropHandler(Web_HTML_Event_EventTypes.change)(\"value\")(readString);\nvar onValueInput = /* #__PURE__ */ addForeignPropHandler(Web_HTML_Event_EventTypes.input)(\"value\")(readString);\nexport {\n handler,\n handler$prime,\n onAbort,\n onError,\n onLoad,\n onScroll,\n onChange,\n onFileUpload,\n onInput,\n onInvalid,\n onReset,\n onSelect,\n onSubmit,\n onTransitionEnd,\n onCopy,\n onPaste,\n onCut,\n onAuxClick,\n onClick,\n onDoubleClick,\n onMouseDown,\n onMouseEnter,\n onMouseLeave,\n onMouseMove,\n onMouseOver,\n onMouseOut,\n onMouseUp,\n onWheel,\n onKeyDown,\n onKeyUp,\n onBlur,\n onFocus,\n onFocusIn,\n onFocusOut,\n onDrag,\n onDragEnd,\n onDragExit,\n onDragEnter,\n onDragLeave,\n onDragOver,\n onDragStart,\n onDrop,\n onTouchCancel,\n onTouchEnd,\n onTouchEnter,\n onTouchLeave,\n onTouchMove,\n onTouchStart,\n onResize,\n onValueChange,\n onValueInput,\n onSelectedIndexChange,\n onChecked\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as DOM_HTML_Indexed from \"../DOM.HTML.Indexed/index.js\";\nimport * as DOM_HTML_Indexed_AutocompleteType from \"../DOM.HTML.Indexed.AutocompleteType/index.js\";\nimport * as DOM_HTML_Indexed_ButtonType from \"../DOM.HTML.Indexed.ButtonType/index.js\";\nimport * as DOM_HTML_Indexed_FormMethod from \"../DOM.HTML.Indexed.FormMethod/index.js\";\nimport * as DOM_HTML_Indexed_InputAcceptType from \"../DOM.HTML.Indexed.InputAcceptType/index.js\";\nimport * as DOM_HTML_Indexed_InputType from \"../DOM.HTML.Indexed.InputType/index.js\";\nimport * as DOM_HTML_Indexed_MenuType from \"../DOM.HTML.Indexed.MenuType/index.js\";\nimport * as DOM_HTML_Indexed_MenuitemType from \"../DOM.HTML.Indexed.MenuitemType/index.js\";\nimport * as DOM_HTML_Indexed_OrderedListType from \"../DOM.HTML.Indexed.OrderedListType/index.js\";\nimport * as DOM_HTML_Indexed_PreloadValue from \"../DOM.HTML.Indexed.PreloadValue/index.js\";\nimport * as DOM_HTML_Indexed_ScopeValue from \"../DOM.HTML.Indexed.ScopeValue/index.js\";\nimport * as DOM_HTML_Indexed_StepValue from \"../DOM.HTML.Indexed.StepValue/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_HeytingAlgebra from \"../Data.HeytingAlgebra/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_Query_Input from \"../Halogen.Query.Input/index.js\";\nimport * as Halogen_VDom_DOM_Prop from \"../Halogen.VDom.DOM.Prop/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Halogen_VDom_DOM_Prop.functorProp);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Halogen_Query_Input.functorInput);\nvar unwrap = /* #__PURE__ */ Data_Newtype.unwrap();\nvar IProp = function (x) {\n return x;\n};\nvar ref = /* #__PURE__ */ (function () {\n var go = function (p) {\n return function (mel) {\n return new Data_Maybe.Just(new Halogen_Query_Input.RefUpdate(p, mel));\n };\n };\n return function ($29) {\n return Halogen_HTML_Core.ref(go($29));\n };\n})();\nvar prop = function (dictIsProp) {\n return Halogen_HTML_Core.prop(dictIsProp);\n};\nvar prop1 = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropBoolean);\nvar prop2 = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropString);\nvar prop3 = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropInt);\nvar prop4 = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropNumber);\nvar readOnly = /* #__PURE__ */ prop1(\"readOnly\");\nvar rel = /* #__PURE__ */ prop2(\"rel\");\nvar required = /* #__PURE__ */ prop1(\"required\");\nvar rowSpan = /* #__PURE__ */ prop3(\"rowSpan\");\nvar rows = /* #__PURE__ */ prop3(\"rows\");\nvar scope = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropScopeValue)(\"scope\");\nvar selected = /* #__PURE__ */ prop1(\"selected\");\nvar selectedIndex = /* #__PURE__ */ prop3(\"selectedIndex\");\nvar spellcheck = /* #__PURE__ */ prop1(\"spellcheck\");\nvar src = /* #__PURE__ */ prop2(\"src\");\nvar srcDoc = /* #__PURE__ */ prop2(\"srcdoc\");\nvar step = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropStepValue)(\"step\");\nvar tabIndex = /* #__PURE__ */ prop3(\"tabIndex\");\nvar target = /* #__PURE__ */ prop2(\"target\");\nvar title = /* #__PURE__ */ prop2(\"title\");\nvar type_ = function (dictIsProp) {\n return prop(dictIsProp)(\"type\");\n};\nvar value = function (dictIsProp) {\n return prop(dictIsProp)(\"value\");\n};\nvar width = /* #__PURE__ */ prop3(\"width\");\nvar preload = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropPreloadValue)(\"preload\");\nvar poster = /* #__PURE__ */ prop2(\"poster\");\nvar placeholder = /* #__PURE__ */ prop2(\"placeholder\");\nvar pattern = /* #__PURE__ */ prop2(\"pattern\");\nvar noValidate = /* #__PURE__ */ prop1(\"noValidate\");\nvar newtypeIProp = {\n Coercible0: function () {\n return undefined;\n }\n};\nvar name = /* #__PURE__ */ prop2(\"name\");\nvar muted = /* #__PURE__ */ prop1(\"muted\");\nvar multiple = /* #__PURE__ */ prop1(\"multiple\");\nvar min = /* #__PURE__ */ prop4(\"min\");\nvar method = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropFormMethod)(\"method\");\nvar max = /* #__PURE__ */ prop4(\"max\");\nvar loop = /* #__PURE__ */ prop1(\"loop\");\nvar id = /* #__PURE__ */ prop2(\"id\");\nvar href = /* #__PURE__ */ prop2(\"href\");\nvar height = /* #__PURE__ */ prop3(\"height\");\nvar functorIProp = {\n map: function (f) {\n return function (m) {\n return map(map1(f))(m);\n };\n }\n};\nvar $$for = /* #__PURE__ */ prop2(\"htmlFor\");\nvar expand = function () {\n return Unsafe_Coerce.unsafeCoerce;\n};\nvar enctype = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropMediaType)(\"enctype\");\nvar draggable = /* #__PURE__ */ prop1(\"draggable\");\nvar download = /* #__PURE__ */ prop2(\"download\");\nvar disabled = /* #__PURE__ */ prop1(\"disabled\");\nvar enabled = /* #__PURE__ */ (function () {\n var $30 = Data_HeytingAlgebra.not(Data_HeytingAlgebra.heytingAlgebraBoolean);\n return function ($31) {\n return disabled($30($31));\n };\n})();\nvar controls = /* #__PURE__ */ prop1(\"controls\");\nvar cols = /* #__PURE__ */ prop3(\"cols\");\nvar colSpan = /* #__PURE__ */ prop3(\"colSpan\");\nvar classes = /* #__PURE__ */ (function () {\n var $32 = prop2(\"className\");\n var $33 = Data_String_Common.joinWith(\" \");\n var $34 = Data_Functor.map(Data_Functor.functorArray)(unwrap);\n return function ($35) {\n return $32($33($34($35)));\n };\n})();\nvar class_ = /* #__PURE__ */ (function () {\n var $36 = prop2(\"className\");\n return function ($37) {\n return $36(unwrap($37));\n };\n})();\nvar checked = /* #__PURE__ */ prop1(\"checked\");\nvar charset = /* #__PURE__ */ prop2(\"charset\");\nvar autoplay = /* #__PURE__ */ prop1(\"autoplay\");\nvar autofocus = /* #__PURE__ */ prop1(\"autofocus\");\nvar autocomplete = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropAutocompleteType)(\"autocomplete\");\nvar attrNS = /* #__PURE__ */ (function () {\n var $38 = Control_Applicative.pure(Data_Maybe.applicativeMaybe);\n return function ($39) {\n return Halogen_HTML_Core.attr($38($39));\n };\n})();\nvar attr = /* #__PURE__ */ (function () {\n return Halogen_HTML_Core.attr(Data_Maybe.Nothing.value);\n})();\nvar list = /* #__PURE__ */ attr(\"list\");\nvar style = /* #__PURE__ */ attr(\"style\");\nvar alt = /* #__PURE__ */ prop2(\"alt\");\nvar action = /* #__PURE__ */ prop2(\"action\");\nvar accept = /* #__PURE__ */ prop(Halogen_HTML_Core.isPropInputAcceptType)(\"accept\");\nexport {\n IProp,\n prop,\n attr,\n attrNS,\n ref,\n expand,\n alt,\n charset,\n class_,\n classes,\n cols,\n rows,\n colSpan,\n rowSpan,\n $$for as for,\n height,\n width,\n href,\n id,\n name,\n rel,\n src,\n srcDoc,\n style,\n scope,\n target,\n title,\n download,\n method,\n action,\n enctype,\n noValidate,\n type_,\n value,\n min,\n max,\n step,\n disabled,\n enabled,\n required,\n readOnly,\n spellcheck,\n checked,\n selected,\n selectedIndex,\n placeholder,\n autocomplete,\n list,\n autofocus,\n multiple,\n pattern,\n accept,\n autoplay,\n controls,\n loop,\n muted,\n poster,\n preload,\n draggable,\n tabIndex,\n newtypeIProp,\n functorIProp\n};\nexport {\n AutocompleteAdditionalName,\n AutocompleteAddressLevel1,\n AutocompleteAddressLevel2,\n AutocompleteAddressLevel3,\n AutocompleteAddressLevel4,\n AutocompleteAddressLine1,\n AutocompleteAddressLine2,\n AutocompleteAddressLine3,\n AutocompleteBirthday,\n AutocompleteBirthdayDay,\n AutocompleteBirthdayMonth,\n AutocompleteBirthdayYear,\n AutocompleteCountry,\n AutocompleteCountryName,\n AutocompleteCreditCardAdditionalName,\n AutocompleteCreditCardExpiration,\n AutocompleteCreditCardExpirationMonth,\n AutocompleteCreditCardExpirationYear,\n AutocompleteCreditCardFamilyName,\n AutocompleteCreditCardGivenName,\n AutocompleteCreditCardName,\n AutocompleteCreditCardNumber,\n AutocompleteCreditCardSecurityCode,\n AutocompleteCreditCardType,\n AutocompleteCurrentPassword,\n AutocompleteEmail,\n AutocompleteFamilyName,\n AutocompleteGivenName,\n AutocompleteHonorificPrefix,\n AutocompleteHonorificSuffix,\n AutocompleteIMPP,\n AutocompleteLanguage,\n AutocompleteName,\n AutocompleteNewPassword,\n AutocompleteNickname,\n AutocompleteOff,\n AutocompleteOn,\n AutocompleteOneTimeCode,\n AutocompleteOrganization,\n AutocompleteOrganizationTitle,\n AutocompletePhoto,\n AutocompletePostalCode,\n AutocompleteSex,\n AutocompleteStreetAddress,\n AutocompleteTelephone,\n AutocompleteTelephoneAreaCode,\n AutocompleteTelephoneCountryCode,\n AutocompleteTelephoneExtension,\n AutocompleteTelephoneLocal,\n AutocompleteTelephoneLocalPrefix,\n AutocompleteTelephoneLocalSuffix,\n AutocompleteTelephoneNational,\n AutocompleteTransactionAmount,\n AutocompleteTransactionCurrency,\n AutocompleteURL,\n AutocompleteUsername\n} from \"../DOM.HTML.Indexed.AutocompleteType/index.js\";\nexport {\n ButtonButton,\n ButtonReset,\n ButtonSubmit\n} from \"../DOM.HTML.Indexed.ButtonType/index.js\";\nexport {\n GET,\n POST\n} from \"../DOM.HTML.Indexed.FormMethod/index.js\";\nexport {\n InputAcceptType\n} from \"../DOM.HTML.Indexed.InputAcceptType/index.js\";\nexport {\n InputButton,\n InputCheckbox,\n InputColor,\n InputDate,\n InputDatetimeLocal,\n InputEmail,\n InputFile,\n InputHidden,\n InputImage,\n InputMonth,\n InputNumber,\n InputPassword,\n InputRadio,\n InputRange,\n InputReset,\n InputSearch,\n InputSubmit,\n InputTel,\n InputText,\n InputTime,\n InputUrl,\n InputWeek\n} from \"../DOM.HTML.Indexed.InputType/index.js\";\nexport {\n MenuContext,\n MenuList,\n MenuToolbar\n} from \"../DOM.HTML.Indexed.MenuType/index.js\";\nexport {\n MenuitemCheckbox,\n MenuitemCommand,\n MenuitemRadio\n} from \"../DOM.HTML.Indexed.MenuitemType/index.js\";\nexport {\n OrderedListAlphabetic,\n OrderedListNumeric\n} from \"../DOM.HTML.Indexed.OrderedListType/index.js\";\nexport {\n PreloadAuto,\n PreloadMetadata,\n PreloadNone\n} from \"../DOM.HTML.Indexed.PreloadValue/index.js\";\nexport {\n ScopeAuto,\n ScopeCol,\n ScopeColGroup,\n ScopeRow,\n ScopeRowGroup\n} from \"../DOM.HTML.Indexed.ScopeValue/index.js\";\nexport {\n Any,\n Step\n} from \"../DOM.HTML.Indexed.StepValue/index.js\";\n", "/* global Symbol */\n\nvar hasArrayFrom = typeof Array.from === \"function\";\nvar hasStringIterator =\n typeof Symbol !== \"undefined\" &&\n Symbol != null &&\n typeof Symbol.iterator !== \"undefined\" &&\n typeof String.prototype[Symbol.iterator] === \"function\";\nvar hasFromCodePoint = typeof String.prototype.fromCodePoint === \"function\";\nvar hasCodePointAt = typeof String.prototype.codePointAt === \"function\";\n\nexport const _unsafeCodePointAt0 = function (fallback) {\n return hasCodePointAt\n ? function (str) { return str.codePointAt(0); }\n : fallback;\n};\n\nexport const _codePointAt = function (fallback) {\n return function (Just) {\n return function (Nothing) {\n return function (unsafeCodePointAt0) {\n return function (index) {\n return function (str) {\n var length = str.length;\n if (index < 0 || index >= length) return Nothing;\n if (hasStringIterator) {\n var iter = str[Symbol.iterator]();\n for (var i = index;; --i) {\n var o = iter.next();\n if (o.done) return Nothing;\n if (i === 0) return Just(unsafeCodePointAt0(o.value));\n }\n }\n return fallback(index)(str);\n };\n };\n };\n };\n };\n};\n\nexport const _countPrefix = function (fallback) {\n return function (unsafeCodePointAt0) {\n if (hasStringIterator) {\n return function (pred) {\n return function (str) {\n var iter = str[Symbol.iterator]();\n for (var cpCount = 0; ; ++cpCount) {\n var o = iter.next();\n if (o.done) return cpCount;\n var cp = unsafeCodePointAt0(o.value);\n if (!pred(cp)) return cpCount;\n }\n };\n };\n }\n return fallback;\n };\n};\n\nexport const _fromCodePointArray = function (singleton) {\n return hasFromCodePoint\n ? function (cps) {\n // Function.prototype.apply will fail for very large second parameters,\n // so we don't use it for arrays with 10,000 or more entries.\n if (cps.length < 10e3) {\n return String.fromCodePoint.apply(String, cps);\n }\n return cps.map(singleton).join(\"\");\n }\n : function (cps) {\n return cps.map(singleton).join(\"\");\n };\n};\n\nexport const _singleton = function (fallback) {\n return hasFromCodePoint ? String.fromCodePoint : fallback;\n};\n\nexport const _take = function (fallback) {\n return function (n) {\n if (hasStringIterator) {\n return function (str) {\n var accum = \"\";\n var iter = str[Symbol.iterator]();\n for (var i = 0; i < n; ++i) {\n var o = iter.next();\n if (o.done) return accum;\n accum += o.value;\n }\n return accum;\n };\n }\n return fallback(n);\n };\n};\n\nexport const _toCodePointArray = function (fallback) {\n return function (unsafeCodePointAt0) {\n if (hasArrayFrom) {\n return function (str) {\n return Array.from(str, unsafeCodePointAt0);\n };\n }\n return fallback;\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Bounded from \"../Data.Bounded/index.js\";\nimport * as Data_Enum from \"../Data.Enum/index.js\";\nimport * as Data_EuclideanRing from \"../Data.EuclideanRing/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Int from \"../Data.Int/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_String_CodeUnits from \"../Data.String.CodeUnits/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Data_String_Unsafe from \"../Data.String.Unsafe/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar fromEnum = /* #__PURE__ */ Data_Enum.fromEnum(Data_Enum.boundedEnumChar);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar unfoldr = /* #__PURE__ */ Data_Unfoldable.unfoldr(Data_Unfoldable.unfoldableArray);\nvar div = /* #__PURE__ */ Data_EuclideanRing.div(Data_EuclideanRing.euclideanRingInt);\nvar mod = /* #__PURE__ */ Data_EuclideanRing.mod(Data_EuclideanRing.euclideanRingInt);\nvar compare = /* #__PURE__ */ Data_Ord.compare(Data_Ord.ordInt);\nvar CodePoint = function (x) {\n return x;\n};\nvar unsurrogate = function (lead) {\n return function (trail) {\n return (((lead - 55296 | 0) * 1024 | 0) + (trail - 56320 | 0) | 0) + 65536 | 0;\n };\n};\nvar showCodePoint = {\n show: function (v) {\n return \"(CodePoint 0x\" + (Data_String_Common.toUpper(Data_Int.toStringAs(Data_Int.hexadecimal)(v)) + \")\");\n }\n};\nvar isTrail = function (cu) {\n return 56320 <= cu && cu <= 57343;\n};\nvar isLead = function (cu) {\n return 55296 <= cu && cu <= 56319;\n};\nvar uncons = function (s) {\n var v = Data_String_CodeUnits.length(s);\n if (v === 0) {\n return Data_Maybe.Nothing.value;\n };\n if (v === 1) {\n return new Data_Maybe.Just({\n head: fromEnum(Data_String_Unsafe.charAt(0)(s)),\n tail: \"\"\n });\n };\n var cu1 = fromEnum(Data_String_Unsafe.charAt(1)(s));\n var cu0 = fromEnum(Data_String_Unsafe.charAt(0)(s));\n var $43 = isLead(cu0) && isTrail(cu1);\n if ($43) {\n return new Data_Maybe.Just({\n head: unsurrogate(cu0)(cu1),\n tail: Data_String_CodeUnits.drop(2)(s)\n });\n };\n return new Data_Maybe.Just({\n head: cu0,\n tail: Data_String_CodeUnits.drop(1)(s)\n });\n};\nvar unconsButWithTuple = function (s) {\n return map(function (v) {\n return new Data_Tuple.Tuple(v.head, v.tail);\n })(uncons(s));\n};\nvar toCodePointArrayFallback = function (s) {\n return unfoldr(unconsButWithTuple)(s);\n};\nvar unsafeCodePointAt0Fallback = function (s) {\n var cu0 = fromEnum(Data_String_Unsafe.charAt(0)(s));\n var $47 = isLead(cu0) && Data_String_CodeUnits.length(s) > 1;\n if ($47) {\n var cu1 = fromEnum(Data_String_Unsafe.charAt(1)(s));\n var $48 = isTrail(cu1);\n if ($48) {\n return unsurrogate(cu0)(cu1);\n };\n return cu0;\n };\n return cu0;\n};\nvar unsafeCodePointAt0 = /* #__PURE__ */ $foreign[\"_unsafeCodePointAt0\"](unsafeCodePointAt0Fallback);\nvar toCodePointArray = /* #__PURE__ */ $foreign[\"_toCodePointArray\"](toCodePointArrayFallback)(unsafeCodePointAt0);\nvar length = function ($74) {\n return Data_Array.length(toCodePointArray($74));\n};\nvar lastIndexOf = function (p) {\n return function (s) {\n return map(function (i) {\n return length(Data_String_CodeUnits.take(i)(s));\n })(Data_String_CodeUnits.lastIndexOf(p)(s));\n };\n};\nvar indexOf = function (p) {\n return function (s) {\n return map(function (i) {\n return length(Data_String_CodeUnits.take(i)(s));\n })(Data_String_CodeUnits.indexOf(p)(s));\n };\n};\nvar fromCharCode = /* #__PURE__ */ (function () {\n var $75 = Data_Enum.toEnumWithDefaults(Data_Enum.boundedEnumChar)(Data_Bounded.bottom(Data_Bounded.boundedChar))(Data_Bounded.top(Data_Bounded.boundedChar));\n return function ($76) {\n return Data_String_CodeUnits.singleton($75($76));\n };\n})();\nvar singletonFallback = function (v) {\n if (v <= 65535) {\n return fromCharCode(v);\n };\n var lead = div(v - 65536 | 0)(1024) + 55296 | 0;\n var trail = mod(v - 65536 | 0)(1024) + 56320 | 0;\n return fromCharCode(lead) + fromCharCode(trail);\n};\nvar fromCodePointArray = /* #__PURE__ */ $foreign[\"_fromCodePointArray\"](singletonFallback);\nvar singleton = /* #__PURE__ */ $foreign[\"_singleton\"](singletonFallback);\nvar takeFallback = function (v) {\n return function (v1) {\n if (v < 1) {\n return \"\";\n };\n var v2 = uncons(v1);\n if (v2 instanceof Data_Maybe.Just) {\n return singleton(v2.value0.head) + takeFallback(v - 1 | 0)(v2.value0.tail);\n };\n return v1;\n };\n};\nvar take = /* #__PURE__ */ $foreign[\"_take\"](takeFallback);\nvar lastIndexOf$prime = function (p) {\n return function (i) {\n return function (s) {\n var i$prime = Data_String_CodeUnits.length(take(i)(s));\n return map(function (k) {\n return length(Data_String_CodeUnits.take(k)(s));\n })(Data_String_CodeUnits[\"lastIndexOf$prime\"](p)(i$prime)(s));\n };\n };\n};\nvar splitAt = function (i) {\n return function (s) {\n var before = take(i)(s);\n return {\n before: before,\n after: Data_String_CodeUnits.drop(Data_String_CodeUnits.length(before))(s)\n };\n };\n};\nvar eqCodePoint = {\n eq: function (x) {\n return function (y) {\n return x === y;\n };\n }\n};\nvar ordCodePoint = {\n compare: function (x) {\n return function (y) {\n return compare(x)(y);\n };\n },\n Eq0: function () {\n return eqCodePoint;\n }\n};\nvar drop = function (n) {\n return function (s) {\n return Data_String_CodeUnits.drop(Data_String_CodeUnits.length(take(n)(s)))(s);\n };\n};\nvar indexOf$prime = function (p) {\n return function (i) {\n return function (s) {\n var s$prime = drop(i)(s);\n return map(function (k) {\n return i + length(Data_String_CodeUnits.take(k)(s$prime)) | 0;\n })(Data_String_CodeUnits.indexOf(p)(s$prime));\n };\n };\n};\nvar countTail = function ($copy_p) {\n return function ($copy_s) {\n return function ($copy_accum) {\n var $tco_var_p = $copy_p;\n var $tco_var_s = $copy_s;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(p, s, accum) {\n var v = uncons(s);\n if (v instanceof Data_Maybe.Just) {\n var $61 = p(v.value0.head);\n if ($61) {\n $tco_var_p = p;\n $tco_var_s = v.value0.tail;\n $copy_accum = accum + 1 | 0;\n return;\n };\n $tco_done = true;\n return accum;\n };\n $tco_done = true;\n return accum;\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_p, $tco_var_s, $copy_accum);\n };\n return $tco_result;\n };\n };\n};\nvar countFallback = function (p) {\n return function (s) {\n return countTail(p)(s)(0);\n };\n};\nvar countPrefix = /* #__PURE__ */ $foreign[\"_countPrefix\"](countFallback)(unsafeCodePointAt0);\nvar dropWhile = function (p) {\n return function (s) {\n return drop(countPrefix(p)(s))(s);\n };\n};\nvar takeWhile = function (p) {\n return function (s) {\n return take(countPrefix(p)(s))(s);\n };\n};\nvar codePointFromChar = function ($77) {\n return CodePoint(fromEnum($77));\n};\nvar codePointAtFallback = function ($copy_n) {\n return function ($copy_s) {\n var $tco_var_n = $copy_n;\n var $tco_done = false;\n var $tco_result;\n function $tco_loop(n, s) {\n var v = uncons(s);\n if (v instanceof Data_Maybe.Just) {\n var $66 = n === 0;\n if ($66) {\n $tco_done = true;\n return new Data_Maybe.Just(v.value0.head);\n };\n $tco_var_n = n - 1 | 0;\n $copy_s = v.value0.tail;\n return;\n };\n $tco_done = true;\n return Data_Maybe.Nothing.value;\n };\n while (!$tco_done) {\n $tco_result = $tco_loop($tco_var_n, $copy_s);\n };\n return $tco_result;\n };\n};\nvar codePointAt = function (v) {\n return function (v1) {\n if (v < 0) {\n return Data_Maybe.Nothing.value;\n };\n if (v === 0 && v1 === \"\") {\n return Data_Maybe.Nothing.value;\n };\n if (v === 0) {\n return new Data_Maybe.Just(unsafeCodePointAt0(v1));\n };\n return $foreign[\"_codePointAt\"](codePointAtFallback)(Data_Maybe.Just.create)(Data_Maybe.Nothing.value)(unsafeCodePointAt0)(v)(v1);\n };\n};\nvar boundedCodePoint = {\n bottom: 0,\n top: 1114111,\n Ord0: function () {\n return ordCodePoint;\n }\n};\nvar boundedEnumCodePoint = /* #__PURE__ */ (function () {\n return {\n cardinality: 1114111 + 1 | 0,\n fromEnum: function (v) {\n return v;\n },\n toEnum: function (n) {\n if (n >= 0 && n <= 1114111) {\n return new Data_Maybe.Just(n);\n };\n if (Data_Boolean.otherwise) {\n return Data_Maybe.Nothing.value;\n };\n throw new Error(\"Failed pattern match at Data.String.CodePoints (line 63, column 1 - line 68, column 26): \" + [ n.constructor.name ]);\n },\n Bounded0: function () {\n return boundedCodePoint;\n },\n Enum1: function () {\n return $lazy_enumCodePoint(0);\n }\n };\n})();\nvar $lazy_enumCodePoint = /* #__PURE__ */ $runtime_lazy(\"enumCodePoint\", \"Data.String.CodePoints\", function () {\n return {\n succ: Data_Enum.defaultSucc(Data_Enum.toEnum(boundedEnumCodePoint))(Data_Enum.fromEnum(boundedEnumCodePoint)),\n pred: Data_Enum.defaultPred(Data_Enum.toEnum(boundedEnumCodePoint))(Data_Enum.fromEnum(boundedEnumCodePoint)),\n Ord0: function () {\n return ordCodePoint;\n }\n };\n});\nvar enumCodePoint = /* #__PURE__ */ $lazy_enumCodePoint(59);\nexport {\n codePointFromChar,\n singleton,\n fromCodePointArray,\n toCodePointArray,\n codePointAt,\n uncons,\n length,\n countPrefix,\n indexOf,\n indexOf$prime,\n lastIndexOf,\n lastIndexOf$prime,\n take,\n takeWhile,\n drop,\n dropWhile,\n splitAt,\n eqCodePoint,\n ordCodePoint,\n showCodePoint,\n boundedCodePoint,\n enumCodePoint,\n boundedEnumCodePoint\n};\nexport {\n contains,\n stripPrefix,\n stripSuffix\n} from \"../Data.String.CodeUnits/index.js\";\n", "var getEffProp = function (name) {\n return function (doc) {\n return function () {\n return doc[name];\n };\n };\n};\n\nexport const url = getEffProp(\"URL\");\nexport const documentURI = getEffProp(\"documentURI\");\nexport const origin = getEffProp(\"origin\");\nexport const compatMode = getEffProp(\"compatMode\");\nexport const characterSet = getEffProp(\"characterSet\");\nexport const contentType = getEffProp(\"contentType\");\nexport function _doctype(doc) {\n return doc[\"doctype\"];\n}\nexport const _documentElement = getEffProp(\"documentElement\");\n\nexport function getElementsByTagName(localName) {\n return function (doc) {\n return function () {\n return doc.getElementsByTagName(localName);\n };\n };\n}\n\nexport function _getElementsByTagNameNS(ns) {\n return function (localName) {\n return function (doc) {\n return function () {\n return doc.getElementsByTagNameNS(ns, localName);\n };\n };\n };\n}\n\nexport function getElementsByClassName(classNames) {\n return function (doc) {\n return function () {\n return doc.getElementsByClassName(classNames);\n };\n };\n}\n\nexport function createElement(localName) {\n return function (doc) {\n return function () {\n return doc.createElement(localName);\n };\n };\n}\n\nexport function _createElementNS(ns) {\n return function (qualifiedName) {\n return function (doc) {\n return function () {\n return doc.createElementNS(ns, qualifiedName);\n };\n };\n };\n}\n\nexport function createDocumentFragment(doc) {\n return function () {\n return doc.createDocumentFragment();\n };\n}\n\nexport function createTextNode(data) {\n return function (doc) {\n return function () {\n return doc.createTextNode(data);\n };\n };\n}\n\nexport function createComment(data) {\n return function (doc) {\n return function () {\n return doc.createComment(data);\n };\n };\n}\n\nexport function createProcessingInstruction(target) {\n return function (data) {\n return function (doc) {\n return function () {\n return doc.createProcessingInstruction(target, data);\n };\n };\n };\n}\n\nexport function importNode(node) {\n return function (deep) {\n return function (doc) {\n return function () {\n return doc.importNode(node, deep);\n };\n };\n };\n}\n\nexport function adoptNode(node) {\n return function (doc) {\n return function () {\n return doc.adoptNode(node);\n };\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_Maybe_Trans from \"../Control.Monad.Maybe.Trans/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Data_String_CodePoints from \"../Data.String.CodePoints/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_HTML_Properties from \"../Halogen.HTML.Properties/index.js\";\nimport * as JSURI from \"../JSURI/index.js\";\nimport * as Web_DOM_Document from \"../Web.DOM.Document/index.js\";\nimport * as Web_DOM_Element from \"../Web.DOM.Element/index.js\";\nimport * as Web_DOM_NodeList from \"../Web.DOM.NodeList/index.js\";\nimport * as Web_DOM_NonElementParentNode from \"../Web.DOM.NonElementParentNode/index.js\";\nimport * as Web_DOM_ParentNode from \"../Web.DOM.ParentNode/index.js\";\nimport * as Web_HTML from \"../Web.HTML/index.js\";\nimport * as Web_HTML_Common from \"../Web.HTML.Common/index.js\";\nimport * as Web_HTML_HTMLDocument from \"../Web.HTML.HTMLDocument/index.js\";\nimport * as Web_HTML_HTMLElement from \"../Web.HTML.HTMLElement/index.js\";\nimport * as Web_HTML_Location from \"../Web.HTML.Location/index.js\";\nimport * as Web_HTML_Window from \"../Web.HTML.Window/index.js\";\nvar fromJust = /* #__PURE__ */ Data_Maybe.fromJust();\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Effect.bindEffect);\nvar for_ = /* #__PURE__ */ Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Effect.applicativeEffect);\nvar join = /* #__PURE__ */ Control_Bind.join(Data_Maybe.bindMaybe);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar whenH = function (b) {\n return function (k) {\n if (b) {\n return k(Data_Unit.unit);\n };\n return Halogen_HTML_Core.text(\"\");\n };\n};\nvar whenC = function (b) {\n return function (c) {\n if (b) {\n return c;\n };\n return \"\";\n };\n};\nvar whenA = function (b) {\n return function (k) {\n if (b) {\n return k(Data_Unit.unit);\n };\n return [ ];\n };\n};\nvar unsafeDecode = function (str) {\n return fromJust(JSURI[\"decodeURIComponent\"](str));\n};\nvar monthNames = [ \"january\", \"february\", \"march\", \"april\", \"may\", \"june\", \"july\", \"august\", \"september\", \"october\", \"november\", \"december\" ];\nvar maybeH = function (m) {\n return function (k) {\n return Data_Maybe.maybe(Halogen_HTML_Core.text(\"\"))(k)(m);\n };\n};\nvar ifElseH = function (b) {\n return function (f) {\n return function (k) {\n if (b) {\n return f(Data_Unit.unit);\n };\n return k(Data_Unit.unit);\n };\n };\n};\nvar ifElseA = function (b) {\n return function (f) {\n return function (k) {\n if (b) {\n return f(Data_Unit.unit);\n };\n return k(Data_Unit.unit);\n };\n };\n};\nvar fromNullableStr = /* #__PURE__ */ (function () {\n var $53 = Data_Maybe.fromMaybe(\"\");\n return function ($54) {\n return $53(Data_Nullable.toMaybe($54));\n };\n})();\nvar encodeTag = /* #__PURE__ */ (function () {\n var $55 = Data_Maybe.fromMaybe(\"\");\n var $56 = Data_String_Common.replaceAll(\"+\")(\"%2B\");\n return function ($57) {\n return $55(JSURI[\"encodeURIComponent\"]($56($57)));\n };\n})();\nvar dummyAttr = /* #__PURE__ */ Halogen_HTML_Properties.attr(\"data-dummy\")(\"\");\nvar maybeP = function (m) {\n return function (p) {\n return Data_Maybe.maybe(dummyAttr)(p)(m);\n };\n};\nvar whenP = function (b) {\n return function (p) {\n if (b) {\n return p;\n };\n return dummyAttr;\n };\n};\nvar class_ = function ($58) {\n return Halogen_HTML_Properties.class_(Web_HTML_Common.ClassName($58));\n};\nvar attr = function (a) {\n return Halogen_HTML_Properties.attr(a);\n};\nvar _querySelectorAll = function (s) {\n return function (n) {\n return bindFlipped(Web_DOM_NodeList.toArray)(Web_DOM_ParentNode.querySelectorAll(s)(Web_DOM_Element.toParentNode(n)));\n };\n};\nvar _querySelector = function (s) {\n return function (n) {\n return Web_DOM_ParentNode.querySelector(s)(Web_DOM_Element.toParentNode(n));\n };\n};\nvar _queryBoth$prime$prime = function (v) {\n return function (v1) {\n return function (f) {\n return function __do() {\n var as = _querySelectorAll(v.value0)(v.value1)();\n var bs = _querySelectorAll(v1.value0)(v1.value1)();\n return f(as)(bs)();\n };\n };\n };\n};\nvar _queryBoth$prime = function (v) {\n return function (v1) {\n return function (f) {\n return function __do() {\n var ma = _querySelector(v.value0)(v.value1)();\n var bs = _querySelectorAll(v1.value0)(v1.value1)();\n return for_(ma)(function (a) {\n return f(a)(bs);\n })();\n };\n };\n };\n};\nvar _queryBoth = function (v) {\n return function (v1) {\n return function (f) {\n return function __do() {\n var ma = _querySelector(v.value0)(v.value1)();\n var mb = _querySelector(v1.value0)(v1.value1)();\n return for_(ma)(function (a) {\n return for_(mb)(function (b) {\n return f(a)(b);\n });\n })();\n };\n };\n };\n};\nvar _parseQueryString = function (srh) {\n var decode = (function () {\n var $59 = Data_String_Common.replaceAll(\"+\")(\" \");\n return function ($60) {\n return unsafeDecode($59($60));\n };\n })();\n var go = function (kv) {\n var v = Data_String_Common.split(\"=\")(kv);\n if (v.length === 1) {\n return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), Data_Maybe.Nothing.value));\n };\n if (v.length === 2) {\n return new Data_Maybe.Just(new Data_Tuple.Tuple(decode(v[0]), new Data_Maybe.Just(decode(v[1]))));\n };\n return Data_Maybe.Nothing.value;\n };\n var qs = (function () {\n var srh$prime = Data_String_CodePoints.take(1)(srh);\n var $52 = srh$prime === \"#\" || srh$prime === \"?\";\n if ($52) {\n return Data_String_CodePoints.drop(1)(srh);\n };\n return srh;\n })();\n return Data_Array.mapMaybe(go)(Data_Array.filter(function (v) {\n return v !== \"\";\n })(Data_String_Common.split(\"&\")(qs)));\n};\nvar _mt_pure = function ($61) {\n return Control_Monad_Maybe_Trans.MaybeT(pure($61));\n};\nvar _mt = Control_Monad_Maybe_Trans.MaybeT;\nvar _lookupQueryStringValue = function (qs) {\n return function (k) {\n return join(map(Data_Tuple.snd)(Data_Array.find(function ($62) {\n return (function (v) {\n return v === k;\n })(Data_Tuple.fst($62));\n })(qs)));\n };\n};\nvar _loc = /* #__PURE__ */ bindFlipped(Web_HTML_Window.location)(Web_HTML.window);\nvar _getElementById = function (s) {\n var $63 = Web_DOM_NonElementParentNode.getElementById(s);\n return function ($64) {\n return $63(Web_DOM_Document.toNonElementParentNode(Web_HTML_HTMLDocument.toDocument($64)));\n };\n};\nvar _fromNode = function (e) {\n return fromJust(Web_DOM_Element.fromNode(e));\n};\nvar _fromElement = function (e) {\n return fromJust(Web_HTML_HTMLElement.fromElement(e));\n};\nvar _doc = /* #__PURE__ */ bindFlipped(Web_HTML_Window.document)(Web_HTML.window);\nvar _curQuerystring = function __do() {\n var loc = _loc();\n var srh = Web_HTML_Location.search(loc)();\n return _parseQueryString(srh);\n};\nvar _body = /* #__PURE__ */ bindFlipped(function ($65) {\n return pure(fromJust($65));\n})(/* #__PURE__ */ bindFlipped(Web_HTML_HTMLDocument.body)(_doc));\nexport {\n unsafeDecode,\n class_,\n attr,\n _queryBoth,\n _queryBoth$prime,\n _queryBoth$prime$prime,\n _querySelector,\n _querySelectorAll,\n _fromNode,\n _fromElement,\n _getElementById,\n _doc,\n _loc,\n _curQuerystring,\n _parseQueryString,\n _lookupQueryStringValue,\n _body,\n _mt,\n _mt_pure,\n encodeTag,\n dummyAttr,\n whenP,\n maybeP,\n whenC,\n whenH,\n whenA,\n ifElseH,\n ifElseA,\n maybeH,\n fromNullableStr,\n monthNames\n};\n", "// Generated by purs version 0.15.14\nimport * as App from \"../App/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as DOM_HTML_Indexed_InputType from \"../DOM.HTML.Indexed.InputType/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Lens_Getter from \"../Data.Lens.Getter/index.js\";\nimport * as Data_Lens_Internal_Forget from \"../Data.Lens.Internal.Forget/index.js\";\nimport * as Data_Lens_Lens from \"../Data.Lens.Lens/index.js\";\nimport * as Data_Lens_Setter from \"../Data.Lens.Setter/index.js\";\nimport * as Data_Profunctor_Strong from \"../Data.Profunctor.Strong/index.js\";\nimport * as Effect_Aff_Class from \"../Effect.Aff.Class/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_HTML_Elements from \"../Halogen.HTML.Elements/index.js\";\nimport * as Halogen_HTML_Events from \"../Halogen.HTML.Events/index.js\";\nimport * as Halogen_HTML_Properties from \"../Halogen.HTML.Properties/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Util from \"../Util/index.js\";\nvar type_ = /* #__PURE__ */ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM);\nvar modifying = /* #__PURE__ */ Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM);\nvar bind = /* #__PURE__ */ Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM);\nvar use = /* #__PURE__ */ Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM);\nvar liftAff = /* #__PURE__ */ Effect_Aff_Class.liftAff(/* #__PURE__ */ Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff));\nvar EarchiveDefault = /* #__PURE__ */ (function () {\n function EarchiveDefault(value0) {\n this.value0 = value0;\n };\n EarchiveDefault.create = function (value0) {\n return new EarchiveDefault(value0);\n };\n return EarchiveDefault;\n})();\nvar EprivateDefault = /* #__PURE__ */ (function () {\n function EprivateDefault(value0) {\n this.value0 = value0;\n };\n EprivateDefault.create = function (value0) {\n return new EprivateDefault(value0);\n };\n return EprivateDefault;\n})();\nvar EprivacyLock = /* #__PURE__ */ (function () {\n function EprivacyLock(value0) {\n this.value0 = value0;\n };\n EprivacyLock.create = function (value0) {\n return new EprivacyLock(value0);\n };\n return EprivacyLock;\n})();\nvar UEditField = /* #__PURE__ */ (function () {\n function UEditField(value0) {\n this.value0 = value0;\n };\n UEditField.create = function (value0) {\n return new UEditField(value0);\n };\n return UEditField;\n})();\nvar USubmit = /* #__PURE__ */ (function () {\n function USubmit(value0) {\n this.value0 = value0;\n };\n USubmit.create = function (value0) {\n return new USubmit(value0);\n };\n return USubmit;\n})();\nvar _us = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.us;\n })(function (v) {\n return function (v1) {\n return {\n us: v1\n };\n };\n })(dictStrong);\n};\nvar _us1 = /* #__PURE__ */ _us(Data_Profunctor_Strong.strongFn);\nvar _us2 = /* #__PURE__ */ _us(Data_Lens_Internal_Forget.strongForget);\nvar usetting = function (u$prime) {\n var render = function (v) {\n var editField = function (f) {\n return function ($31) {\n return UEditField.create(f($31));\n };\n };\n return Halogen_HTML_Elements.div([ Util.class_(\"settings-form\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"fw7 mb2\") ])([ Halogen_HTML_Core.text(\"Account Settings\") ]), Halogen_HTML_Elements.div([ Util.class_(\"flex items-center mb2\") ])([ Halogen_HTML_Elements.input([ type_(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"pointer mr2\"), Halogen_HTML_Properties.id(\"archiveDefault\"), Halogen_HTML_Properties.name(\"archiveDefault\"), Halogen_HTML_Properties.checked(v.us.archiveDefault), Halogen_HTML_Events.onChecked(editField(EarchiveDefault.create)) ]), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"archiveDefault\"), Util.class_(\"lh-copy\") ])([ Halogen_HTML_Core.text(\"Archive Non-Private Bookmarks (archive.li)\") ]) ]), Halogen_HTML_Elements.div([ Util.class_(\"flex items-center mb2\") ])([ Halogen_HTML_Elements.input([ type_(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"pointer mr2\"), Halogen_HTML_Properties.id(\"privateDefault\"), Halogen_HTML_Properties.name(\"privateDefault\"), Halogen_HTML_Properties.checked(v.us.privateDefault), Halogen_HTML_Events.onChecked(editField(EprivateDefault.create)) ]), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"privateDefault\"), Util.class_(\"lh-copy\") ])([ Halogen_HTML_Core.text(\"Default new bookmarks to Private\") ]) ]), Halogen_HTML_Elements.div([ Util.class_(\"flex items-center mb2\") ])([ Halogen_HTML_Elements.input([ type_(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"pointer mr2\"), Halogen_HTML_Properties.id(\"privacyLock\"), Halogen_HTML_Properties.name(\"privacyLock\"), Halogen_HTML_Properties.checked(v.us.privacyLock), Halogen_HTML_Events.onChecked(editField(EprivacyLock.create)) ]), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"privacyLock\"), Util.class_(\"lh-copy\") ])([ Halogen_HTML_Core.text(\"Privacy Lock (Private Account)\") ]) ]) ]);\n };\n var mkState = function (u) {\n return {\n us: u\n };\n };\n var handleAction = function (v) {\n if (v instanceof UEditField) {\n return discard(modifying(_us1)((function () {\n if (v.value0 instanceof EarchiveDefault) {\n return function (v1) {\n return {\n privateDefault: v1.privateDefault,\n privacyLock: v1.privacyLock,\n archiveDefault: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof EprivateDefault) {\n return function (v1) {\n return {\n archiveDefault: v1.archiveDefault,\n privacyLock: v1.privacyLock,\n privateDefault: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof EprivacyLock) {\n return function (v1) {\n return {\n archiveDefault: v1.archiveDefault,\n privateDefault: v1.privateDefault,\n privacyLock: v.value0.value0\n };\n };\n };\n throw new Error(\"Failed pattern match at Component.AccountSettings (line 77, column 12 - line 80, column 46): \" + [ v.value0.constructor.name ]);\n })()))(function () {\n return bind(use(_us2))(function (us) {\n return $$void(liftAff(App.editAccountSettings(us)));\n });\n });\n };\n if (v instanceof USubmit) {\n return bind(use(_us2))(function (us) {\n return $$void(liftAff(App.editAccountSettings(us)));\n });\n };\n throw new Error(\"Failed pattern match at Component.AccountSettings (line 75, column 3 - line 75, column 69): \" + [ v.constructor.name ]);\n };\n return Halogen_Component.mkComponent({\n initialState: Data_Function[\"const\"](mkState(u$prime)),\n render: render,\n \"eval\": Halogen_Component.mkEval({\n handleQuery: Halogen_Component.defaultEval.handleQuery,\n receive: Halogen_Component.defaultEval.receive,\n initialize: Halogen_Component.defaultEval.initialize,\n finalize: Halogen_Component.defaultEval.finalize,\n handleAction: handleAction\n })\n });\n};\nexport {\n _us,\n UEditField,\n USubmit,\n EarchiveDefault,\n EprivateDefault,\n EprivacyLock,\n usetting\n};\n", "export const log = function (s) {\n return function () {\n console.log(s);\n };\n};\n\nexport const warn = function (s) {\n return function () {\n console.warn(s);\n };\n};\n\nexport const error = function (s) {\n return function () {\n console.error(s);\n };\n};\n\nexport const info = function (s) {\n return function () {\n console.info(s);\n };\n};\n\nexport const debug = function (s) {\n return function () {\n console.debug(s);\n };\n};\n\nexport const time = function (s) {\n return function () {\n console.time(s);\n };\n};\n\nexport const timeLog = function (s) {\n return function () {\n console.timeLog(s);\n };\n};\n\nexport const timeEnd = function (s) {\n return function () {\n console.timeEnd(s);\n };\n};\n\nexport const clear = function () {\n console.clear();\n};\n\nexport const group = function (s) {\n return function () {\n console.group(s);\n };\n};\n\nexport const groupCollapsed = function (s) {\n return function () {\n console.groupCollapsed(s);\n };\n};\n\nexport const groupEnd = function () {\n console.groupEnd();\n};\n", "// Generated by purs version 0.15.14\nimport * as Affjax from \"../Affjax/index.js\";\nimport * as App from \"../App/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as DOM_HTML_Indexed_AutocompleteType from \"../DOM.HTML.Indexed.AutocompleteType/index.js\";\nimport * as DOM_HTML_Indexed_ButtonType from \"../DOM.HTML.Indexed.ButtonType/index.js\";\nimport * as DOM_HTML_Indexed_InputType from \"../DOM.HTML.Indexed.InputType/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Lens_Getter from \"../Data.Lens.Getter/index.js\";\nimport * as Data_Lens_Internal_Forget from \"../Data.Lens.Internal.Forget/index.js\";\nimport * as Data_Lens_Lens from \"../Data.Lens.Lens/index.js\";\nimport * as Data_Lens_Setter from \"../Data.Lens.Setter/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Profunctor_Strong from \"../Data.Profunctor.Strong/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_String_CodeUnits from \"../Data.String.CodeUnits/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Aff_Class from \"../Effect.Aff.Class/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Console from \"../Effect.Console/index.js\";\nimport * as Globals from \"../Globals/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_HTML_Elements from \"../Halogen.HTML.Elements/index.js\";\nimport * as Halogen_HTML_Events from \"../Halogen.HTML.Events/index.js\";\nimport * as Halogen_HTML_Properties from \"../Halogen.HTML.Properties/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Util from \"../Util/index.js\";\nimport * as Web_Event_Event from \"../Web.Event.Event/index.js\";\nimport * as Web_HTML from \"../Web.HTML/index.js\";\nimport * as Web_HTML_HTMLDocument from \"../Web.HTML.HTMLDocument/index.js\";\nimport * as Web_HTML_Location from \"../Web.HTML.Location/index.js\";\nvar append = /* #__PURE__ */ Data_Semigroup.append(Data_Semigroup.semigroupArray);\nvar type_ = /* #__PURE__ */ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType);\nvar guard = /* #__PURE__ */ Data_Monoid.guard(Data_Monoid.monoidArray);\nvar type_1 = /* #__PURE__ */ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType);\nvar value = /* #__PURE__ */ Halogen_HTML_Properties.value(Halogen_HTML_Core.isPropString);\nvar guard1 = /* #__PURE__ */ Data_Monoid.guard(Data_Monoid.monoidString);\nvar modify_ = /* #__PURE__ */ Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM);\nvar bind = /* #__PURE__ */ Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM);\nvar gets = /* #__PURE__ */ Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM);\nvar liftAff = /* #__PURE__ */ Effect_Aff_Class.liftAff(/* #__PURE__ */ Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff));\nvar modifying = /* #__PURE__ */ Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM);\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(/* #__PURE__ */ Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff));\nvar use = /* #__PURE__ */ Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM);\nvar assign = /* #__PURE__ */ Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Effect.bindEffect);\nvar Eurl = /* #__PURE__ */ (function () {\n function Eurl(value0) {\n this.value0 = value0;\n };\n Eurl.create = function (value0) {\n return new Eurl(value0);\n };\n return Eurl;\n})();\nvar Etitle = /* #__PURE__ */ (function () {\n function Etitle(value0) {\n this.value0 = value0;\n };\n Etitle.create = function (value0) {\n return new Etitle(value0);\n };\n return Etitle;\n})();\nvar Edescription = /* #__PURE__ */ (function () {\n function Edescription(value0) {\n this.value0 = value0;\n };\n Edescription.create = function (value0) {\n return new Edescription(value0);\n };\n return Edescription;\n})();\nvar Etags = /* #__PURE__ */ (function () {\n function Etags(value0) {\n this.value0 = value0;\n };\n Etags.create = function (value0) {\n return new Etags(value0);\n };\n return Etags;\n})();\nvar Eprivate = /* #__PURE__ */ (function () {\n function Eprivate(value0) {\n this.value0 = value0;\n };\n Eprivate.create = function (value0) {\n return new Eprivate(value0);\n };\n return Eprivate;\n})();\nvar Etoread = /* #__PURE__ */ (function () {\n function Etoread(value0) {\n this.value0 = value0;\n };\n Etoread.create = function (value0) {\n return new Etoread(value0);\n };\n return Etoread;\n})();\nvar BEditField = /* #__PURE__ */ (function () {\n function BEditField(value0) {\n this.value0 = value0;\n };\n BEditField.create = function (value0) {\n return new BEditField(value0);\n };\n return BEditField;\n})();\nvar BEditSubmit = /* #__PURE__ */ (function () {\n function BEditSubmit(value0) {\n this.value0 = value0;\n };\n BEditSubmit.create = function (value0) {\n return new BEditSubmit(value0);\n };\n return BEditSubmit;\n})();\nvar BDeleteAsk = /* #__PURE__ */ (function () {\n function BDeleteAsk(value0) {\n this.value0 = value0;\n };\n BDeleteAsk.create = function (value0) {\n return new BDeleteAsk(value0);\n };\n return BDeleteAsk;\n})();\nvar BLookupTitle = /* #__PURE__ */ (function () {\n function BLookupTitle() {\n\n };\n BLookupTitle.value = new BLookupTitle();\n return BLookupTitle;\n})();\nvar BDestroy = /* #__PURE__ */ (function () {\n function BDestroy() {\n\n };\n BDestroy.value = new BDestroy();\n return BDestroy;\n})();\nvar _edit_bm = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.edit_bm;\n })(function (v) {\n return function (v1) {\n return {\n apiError: v.apiError,\n bm: v.bm,\n deleteAsk: v.deleteAsk,\n destroyed: v.destroyed,\n loading: v.loading,\n edit_bm: v1\n };\n };\n })(dictStrong);\n};\nvar _edit_bm1 = /* #__PURE__ */ _edit_bm(Data_Profunctor_Strong.strongFn);\nvar _edit_bm2 = /* #__PURE__ */ _edit_bm(Data_Lens_Internal_Forget.strongForget);\nvar _bm = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.bm;\n })(function (v) {\n return function (v1) {\n return {\n apiError: v.apiError,\n deleteAsk: v.deleteAsk,\n destroyed: v.destroyed,\n edit_bm: v.edit_bm,\n loading: v.loading,\n bm: v1\n };\n };\n })(dictStrong);\n};\nvar _bm1 = /* #__PURE__ */ _bm(Data_Profunctor_Strong.strongFn);\nvar _apiError = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.apiError;\n })(function (v) {\n return function (v1) {\n return {\n bm: v.bm,\n deleteAsk: v.deleteAsk,\n destroyed: v.destroyed,\n edit_bm: v.edit_bm,\n loading: v.loading,\n apiError: v1\n };\n };\n })(dictStrong);\n};\nvar _apiError1 = /* #__PURE__ */ _apiError(Data_Profunctor_Strong.strongFn);\nvar addbmark = function (b$prime) {\n var render = function (v) {\n var mmoment = Globals.mmoment8601(v.bm.time);\n var editField = function (f) {\n return function ($111) {\n return BEditField.create(f($111));\n };\n };\n var display_exists = function (v1) {\n return Halogen_HTML_Elements.div([ Util.class_(\"alert\") ])([ Halogen_HTML_Core.text(\"previously saved\\xa0\"), Halogen_HTML_Elements.span([ Util.class_(\"link f7 dib gray pr3\"), Halogen_HTML_Properties.title(Data_Maybe.maybe(v.bm.time)(Data_Tuple.snd)(mmoment)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe(\"\\xa0\")(Data_Tuple.fst)(mmoment)) ]), Halogen_HTML_Elements.div([ Util.class_(\"edit_links dib ml1\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"delete_link di\") ])([ Halogen_HTML_Elements.button(append([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n return new BDeleteAsk(true);\n }), Util.class_(\"delete\") ])(guard(v.deleteAsk)([ Util.attr(\"hidden\")(\"hidden\") ])))([ Halogen_HTML_Core.text(\"delete\") ]), Halogen_HTML_Elements.span(append([ Util.class_(\"confirm red\") ])(guard(!v.deleteAsk)([ Util.attr(\"hidden\")(\"hidden\") ])))([ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n return new BDeleteAsk(false);\n }) ])([ Halogen_HTML_Core.text(\"cancel\\xa0/\\xa0\") ]), Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n return BDestroy.value;\n }), Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"destroy\") ]) ]) ]) ]) ]);\n };\n var display_destroyed = function (v1) {\n return Halogen_HTML_Elements.p([ Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"you killed this bookmark\") ]);\n };\n var alert_notification = function (alert_text) {\n return function (v1) {\n return Halogen_HTML_Elements.div([ Util.class_(\"alert alert-err\") ])([ Halogen_HTML_Core.text(alert_text) ]);\n };\n };\n var display_edit = function (v1) {\n return Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(BEditSubmit.create) ])([ Halogen_HTML_Elements.table([ Util.class_(\"w-100\") ])([ Halogen_HTML_Elements.tbody_([ Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td([ Util.class_(\"w1\") ])([ ]), Halogen_HTML_Elements.td_([ Util.whenH(v.bm.bid > 0)(display_exists), Util.whenH(Data_Maybe.isJust(v.apiError))(alert_notification(Data_Maybe.fromMaybe(\"\")(v.apiError))) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"url\") ])([ Halogen_HTML_Core.text(\"URL\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputUrl.value), Halogen_HTML_Properties.id(\"url\"), Util.class_(\"w-100 mv1\"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name(\"url\"), Halogen_HTML_Properties.autofocus(Data_String_Common[\"null\"](v.bm.url)), value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(editField(Eurl.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"title\") ])([ Halogen_HTML_Core.text(\"title\") ]) ]), Halogen_HTML_Elements.td([ Util.class_(\"flex\") ])([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id(\"title\"), Util.class_(\"w-100 mv1 flex-auto\"), Halogen_HTML_Properties.name(\"title\"), value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.disabled(v.loading), type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n return BLookupTitle.value;\n }), Util.class_(\"ml2 input-reset ba b--navy pointer f6 di dim pa1 ma1 mr0 \" + guard1(v.loading)(\"bg-light-silver\")) ])([ Halogen_HTML_Core.text(\"fetch\") ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"description\") ])([ Halogen_HTML_Core.text(\"description\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.textarea([ Util.class_(\"w-100 mt1 mid-gray\"), Halogen_HTML_Properties.id(\"description\"), Halogen_HTML_Properties.name(\"description\"), Halogen_HTML_Properties.rows(4), value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(editField(Edescription.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"tags\") ])([ Halogen_HTML_Core.text(\"tags\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputText.value), Halogen_HTML_Properties.id(\"tags\"), Util.class_(\"w-100 mv1\"), Halogen_HTML_Properties.name(\"tags\"), Halogen_HTML_Properties.autocomplete(DOM_HTML_Indexed_AutocompleteType.AutocompleteOff.value), Util.attr(\"autocapitalize\")(\"off\"), Halogen_HTML_Properties.autofocus(!Data_String_Common[\"null\"](v.bm.url)), value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(editField(Etags.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"private\") ])([ Halogen_HTML_Core.text(\"private\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id(\"private\"), Util.class_(\"private pointer\"), Halogen_HTML_Properties.name(\"private\"), Halogen_HTML_Properties.checked(v[\"edit_bm\"][\"private\"]), Halogen_HTML_Events.onChecked(editField(Eprivate.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"toread\") ])([ Halogen_HTML_Core.text(\"read later\") ]) ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputCheckbox.value), Halogen_HTML_Properties.id(\"toread\"), Util.class_(\"toread pointer\"), Halogen_HTML_Properties.name(\"toread\"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(editField(Etoread.create)) ]) ]) ]), Halogen_HTML_Elements.tr_([ Halogen_HTML_Elements.td_([ ]), Halogen_HTML_Elements.td_([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_(\"ph3 pv2 input-reset ba b--navy bg-transparent pointer f6 dib mt1 dim\"), value((function () {\n var $72 = v.bm.bid > 0;\n if ($72) {\n return \"update bookmark\";\n };\n return \"add bookmark\";\n })()) ]) ]) ]) ]) ]) ]);\n };\n return Util.ifElseH(!v.destroyed)(display_edit)(display_destroyed);\n };\n var mkState = function (b) {\n return {\n bm: b,\n edit_bm: b,\n deleteAsk: false,\n destroyed: false,\n loading: false,\n apiError: Data_Maybe.Nothing.value\n };\n };\n var handleAction = function (v) {\n if (v instanceof BDeleteAsk) {\n return modify_(function (v1) {\n var $77 = {};\n for (var $78 in v1) {\n if ({}.hasOwnProperty.call(v1, $78)) {\n $77[$78] = v1[$78];\n };\n };\n $77.deleteAsk = v.value0;\n return $77;\n });\n };\n if (v instanceof BLookupTitle) {\n return discard(modify_(function (v1) {\n var $81 = {};\n for (var $82 in v1) {\n if ({}.hasOwnProperty.call(v1, $82)) {\n $81[$82] = v1[$82];\n };\n };\n $81.loading = true;\n return $81;\n }))(function () {\n return bind(gets(function (v1) {\n return v1.edit_bm;\n }))(function (edit_bm) {\n return bind(liftAff(App.lookupTitle(edit_bm)))(function (mtitle) {\n return discard((function () {\n if (mtitle instanceof Data_Maybe.Just) {\n return modifying(_edit_bm1)(function (v1) {\n return {\n url: v1.url,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n title: mtitle.value0\n };\n });\n };\n if (mtitle instanceof Data_Maybe.Nothing) {\n return pure(Data_Unit.unit);\n };\n throw new Error(\"Failed pattern match at Component.Add (line 177, column 5 - line 179, column 29): \" + [ mtitle.constructor.name ]);\n })())(function () {\n return modify_(function (v1) {\n var $86 = {};\n for (var $87 in v1) {\n if ({}.hasOwnProperty.call(v1, $87)) {\n $86[$87] = v1[$87];\n };\n };\n $86.loading = false;\n return $86;\n });\n });\n });\n });\n });\n };\n if (v instanceof BDestroy) {\n return bind(gets(function (v1) {\n return v1.bm.bid;\n }))(function (bid) {\n return discard($$void(liftAff(App.destroy(bid))))(function () {\n return modify_(function (v1) {\n var $89 = {};\n for (var $90 in v1) {\n if ({}.hasOwnProperty.call(v1, $90)) {\n $89[$90] = v1[$90];\n };\n };\n $89.destroyed = true;\n return $89;\n });\n });\n });\n };\n if (v instanceof BEditField) {\n return modifying(_edit_bm1)((function () {\n if (v.value0 instanceof Eurl) {\n return function (v1) {\n return {\n title: v1.title,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n url: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Etitle) {\n return function (v1) {\n return {\n url: v1.url,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n title: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Edescription) {\n return function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n description: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Etags) {\n return function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n description: v1.description,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n tags: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Eprivate) {\n return function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n description: v1.description,\n tags: v1.tags,\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n \"private\": v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Etoread) {\n return function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n toread: v.value0.value0\n };\n };\n };\n throw new Error(\"Failed pattern match at Component.Add (line 188, column 17 - line 194, column 36): \" + [ v.value0.constructor.name ]);\n })());\n };\n if (v instanceof BEditSubmit) {\n return discard(liftEffect(Web_Event_Event.preventDefault(v.value0)))(function () {\n return bind(use(_edit_bm2))(function (edit_bm) {\n return discard(assign(_apiError1)(Data_Maybe.Nothing.value))(function () {\n return bind(liftAff(App.editBookmark(edit_bm)))(function (v1) {\n if (v1 instanceof Data_Either.Left) {\n return discard(assign(_apiError1)(new Data_Maybe.Just(Affjax.printError(v1.value0))))(function () {\n return liftEffect(Effect_Console.log(Affjax.printError(v1.value0)));\n });\n };\n if (v1 instanceof Data_Either.Right && (v1.value0.status >= 200 && v1.value0.status < 300)) {\n return discard(assign(_bm1)(edit_bm))(function () {\n return bind(liftEffect(Util[\"_curQuerystring\"]))(function (qs) {\n return bind(liftEffect(Util[\"_doc\"]))(function (doc) {\n return bind(liftEffect(Web_HTML_HTMLDocument.referrer(doc)))(function (ref) {\n return bind(liftEffect(Util[\"_loc\"]))(function (loc) {\n return bind(liftEffect(Web_HTML_Location.origin(loc)))(function (org) {\n var v2 = Util[\"_lookupQueryStringValue\"](qs)(\"next\");\n if (v2 instanceof Data_Maybe.Just && v2.value0 === \"closeWindow\") {\n return liftEffect(bindFlipped(Globals.closeWindow)(Web_HTML.window));\n };\n if (v2 instanceof Data_Maybe.Just && v2.value0 === \"back\") {\n return liftEffect((function () {\n var v3 = Data_String_CodeUnits.stripPrefix(org)(ref);\n if (v3 instanceof Data_Maybe.Just) {\n return Web_HTML_Location.setHref(ref)(loc);\n };\n if (v3 instanceof Data_Maybe.Nothing) {\n return Web_HTML_Location.setHref(org)(loc);\n };\n throw new Error(\"Failed pattern match at Component.Add (line 214, column 13 - line 216, column 41): \" + [ v3.constructor.name ]);\n })());\n };\n return liftEffect(bindFlipped(Globals.closeWindow)(Web_HTML.window));\n });\n });\n });\n });\n });\n });\n };\n if (v1 instanceof Data_Either.Right) {\n return discard(assign(_apiError1)(new Data_Maybe.Just(v1.value0.body)))(function () {\n return liftEffect(Effect_Console.log(v1.value0.body));\n });\n };\n throw new Error(\"Failed pattern match at Component.Add (line 200, column 42 - line 220, column 36): \" + [ v1.constructor.name ]);\n });\n });\n });\n });\n };\n throw new Error(\"Failed pattern match at Component.Add (line 169, column 3 - line 169, column 69): \" + [ v.constructor.name ]);\n };\n return Halogen_Component.mkComponent({\n initialState: Data_Function[\"const\"](mkState(b$prime)),\n render: render,\n \"eval\": Halogen_Component.mkEval({\n handleQuery: Halogen_Component.defaultEval.handleQuery,\n receive: Halogen_Component.defaultEval.receive,\n initialize: Halogen_Component.defaultEval.initialize,\n finalize: Halogen_Component.defaultEval.finalize,\n handleAction: handleAction\n })\n });\n};\nexport {\n BEditField,\n BEditSubmit,\n BDeleteAsk,\n BLookupTitle,\n BDestroy,\n Eurl,\n Etitle,\n Edescription,\n Etags,\n Eprivate,\n Etoread,\n _bm,\n _edit_bm,\n _apiError,\n addbmark\n};\n", "// use at your own risk!\nexport const unsafeSetInnerHTML = function(element) {\n return function(html) {\n return function() {\n element.innerHTML = html;\n };\n };\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as Control_Monad_Trans_Class from \"../Control.Monad.Trans.Class/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect_Aff_Class from \"../Effect.Aff.Class/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Halogen_Query_HalogenQ from \"../Halogen.Query.HalogenQ/index.js\";\nimport * as Halogen_Query_Input from \"../Halogen.Query.Input/index.js\";\nimport * as Web_HTML_HTMLElement from \"../Web.HTML.HTMLElement/index.js\";\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM);\nvar queryAll = /* #__PURE__ */ Halogen_Query_HalogenM.queryAll();\nvar query = /* #__PURE__ */ Halogen_Query_HalogenM.query();\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Data_Maybe.bindMaybe);\nvar tellAll = function () {\n return function (dictIsSymbol) {\n var queryAll1 = queryAll(dictIsSymbol);\n return function (dictOrd) {\n var queryAll2 = queryAll1(dictOrd);\n return function (label) {\n return function (req) {\n return $$void(queryAll2(label)(req(Data_Unit.unit)));\n };\n };\n };\n };\n};\nvar tell = function () {\n return function (dictIsSymbol) {\n var query1 = query(dictIsSymbol);\n return function (dictOrd) {\n var query2 = query1(dictOrd);\n return function (slot) {\n return function (label) {\n return function (req) {\n return $$void(query2(slot)(label)(req(Data_Unit.unit)));\n };\n };\n };\n };\n };\n};\nvar requestAll = function () {\n return function (dictIsSymbol) {\n var queryAll1 = queryAll(dictIsSymbol);\n return function (dictOrd) {\n var queryAll2 = queryAll1(dictOrd);\n return function (label) {\n return function (req) {\n return queryAll2(label)(req(identity));\n };\n };\n };\n };\n};\nvar request = function () {\n return function (dictIsSymbol) {\n var query1 = query(dictIsSymbol);\n return function (dictOrd) {\n var query2 = query1(dictOrd);\n return function (slot) {\n return function (label) {\n return function (req) {\n return query2(slot)(label)(req(identity));\n };\n };\n };\n };\n };\n};\nvar mkTell = function (act) {\n return act(Data_Unit.unit);\n};\nvar mkRequest = function (req) {\n return req(identity);\n};\nvar getHTMLElementRef = /* #__PURE__ */ (function () {\n var $24 = Data_Functor.map(Halogen_Query_HalogenM.functorHalogenM)(function (v) {\n return bindFlipped(Web_HTML_HTMLElement.fromElement)(v);\n });\n return function ($25) {\n return $24(Halogen_Query_HalogenM.getRef($25));\n };\n})();\nexport {\n mkTell,\n tell,\n tellAll,\n mkRequest,\n request,\n requestAll,\n getHTMLElementRef\n};\nexport {\n get,\n gets,\n modify,\n modify_,\n put\n} from \"../Control.Monad.State.Class/index.js\";\nexport {\n lift\n} from \"../Control.Monad.Trans.Class/index.js\";\nexport {\n liftAff\n} from \"../Effect.Aff.Class/index.js\";\nexport {\n liftEffect\n} from \"../Effect.Class/index.js\";\nexport {\n ChildQuery,\n Fork,\n GetRef,\n Join,\n Kill,\n Lift,\n Par,\n Raise,\n State,\n Subscribe,\n Unsubscribe,\n HalogenM,\n fork,\n getRef,\n join,\n kill,\n query,\n queryAll,\n raise,\n subscribe,\n subscribe$prime,\n unsubscribe\n} from \"../Halogen.Query.HalogenM/index.js\";\nexport {\n Action,\n Finalize,\n Initialize,\n Query,\n Receive\n} from \"../Halogen.Query.HalogenQ/index.js\";\nexport {\n RefLabel\n} from \"../Halogen.Query.Input/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Aff_Class from \"../Effect.Aff.Class/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Globals from \"../Globals/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_HTML_Elements from \"../Halogen.HTML.Elements/index.js\";\nimport * as Halogen_HTML_Properties from \"../Halogen.HTML.Properties/index.js\";\nimport * as Halogen_Query from \"../Halogen.Query/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nvar bind = /* #__PURE__ */ Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM);\nvar get = /* #__PURE__ */ Control_Monad_State_Class.get(Halogen_Query_HalogenM.monadStateHalogenM);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit);\nvar discard1 = /* #__PURE__ */ discard(Halogen_Query_HalogenM.bindHalogenM);\nvar for_ = /* #__PURE__ */ Data_Foldable.for_(Halogen_Query_HalogenM.applicativeHalogenM)(Data_Foldable.foldableMaybe);\nvar liftAff = /* #__PURE__ */ Effect_Aff_Class.liftAff(/* #__PURE__ */ Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff));\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(Effect_Class.monadEffectEffect);\nvar mempty = /* #__PURE__ */ Data_Monoid.mempty(/* #__PURE__ */ Effect.monoidEffect(Effect_Aff.monoidCanceler));\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM);\nvar modify_ = /* #__PURE__ */ Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM);\nvar SetInnerHTML = /* #__PURE__ */ (function () {\n function SetInnerHTML() {\n\n };\n SetInnerHTML.value = new SetInnerHTML();\n return SetInnerHTML;\n})();\nvar Receive = /* #__PURE__ */ (function () {\n function Receive(value0) {\n this.value0 = value0;\n };\n Receive.create = function (value0) {\n return new Receive(value0);\n };\n return Receive;\n})();\nvar mkComponent = function (toRawHTML) {\n var render = function (state) {\n return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.ref(state.elRef) ])([ ]);\n };\n var handleAction = function (v) {\n if (v instanceof SetInnerHTML) {\n return bind(get)(function (v1) {\n return bind(Halogen_Query.getHTMLElementRef(v1.elRef))(function (mel) {\n return discard1(for_(mel)(function (el) {\n return bind(get)(function (v2) {\n return liftAff(Effect_Aff.forkAff(Effect_Aff.makeAff(function (v3) {\n return function __do() {\n liftEffect($foreign.unsafeSetInnerHTML(el)(toRawHTML(v2.inputval)))();\n return mempty();\n };\n })));\n });\n }))(function () {\n return pure(Data_Unit.unit);\n });\n });\n });\n };\n if (v instanceof Receive) {\n return discard1(modify_(function (v1) {\n var $26 = {};\n for (var $27 in v1) {\n if ({}.hasOwnProperty.call(v1, $27)) {\n $26[$27] = v1[$27];\n };\n };\n $26.inputval = v.value0;\n return $26;\n }))(function () {\n return handleAction(SetInnerHTML.value);\n });\n };\n throw new Error(\"Failed pattern match at Component.RawHtml (line 51, column 18 - line 64, column 34): \" + [ v.constructor.name ]);\n };\n return Halogen_Component.mkComponent({\n initialState: function (inputval) {\n return {\n elRef: \"inputval\",\n inputval: inputval\n };\n },\n render: render,\n \"eval\": Halogen_Component.mkEval({\n handleQuery: Halogen_Component.defaultEval.handleQuery,\n finalize: Halogen_Component.defaultEval.finalize,\n handleAction: handleAction,\n initialize: new Data_Maybe.Just(SetInnerHTML.value),\n receive: function ($30) {\n return Data_Maybe.Just.create(Receive.create($30));\n }\n })\n });\n};\nvar component = /* #__PURE__ */ mkComponent(Globals.RawHTML);\nexport {\n unsafeSetInnerHTML\n} from \"./foreign.js\";\nexport {\n SetInnerHTML,\n Receive,\n component,\n mkComponent\n};\n", "/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n", "/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n", "import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^/i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n", "import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nconst _comment = /|$)/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n .replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, \nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
'\n                + (escaped ? code : escape(code, true))\n                + '
\\n';\n }\n return '
'\n            + (escaped ? code : escape(code, true))\n            + '
\\n';\n }\n blockquote(quote) {\n return `
\\n${quote}
\\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `${text}\\n`;\n }\n hr() {\n return '
\\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n listitem(text, task, checked) {\n return `
  • ${text}
  • \\n`;\n }\n checkbox(checked) {\n return '';\n }\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `${text}`;\n }\n em(text) {\n return `${text}`;\n }\n codespan(text) {\n return `${text}`;\n }\n br() {\n return '
    ';\n }\n del(text) {\n return `${text}`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n", "import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n", "import { marked } from 'marked';\nimport DOMPurify from \"dompurify\"\n\nmarked.setOptions({\n pedantic: false,\n gfm: true\n});\n\nexport const markedImpl = function(str) {\n if (!str) return \"\";\n return DOMPurify.sanitize(marked.parse(str));\n};\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Globals from \"../Globals/index.js\";\nvar marked = function ($1) {\n return Globals.RawHTML($foreign.markedImpl($1));\n};\nexport {\n markedImpl\n} from \"./foreign.js\";\nexport {\n marked\n};\n", "// Generated by purs version 0.15.14\nimport * as Component_RawHtml from \"../Component.RawHtml/index.js\";\nimport * as Foreign_Marked from \"../Foreign.Marked/index.js\";\nvar component = /* #__PURE__ */ Component_RawHtml.mkComponent(Foreign_Marked.marked);\nexport {\n component\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Console from \"../Effect.Console/index.js\";\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit);\nvar warnShow = function (dictMonadEffect) {\n var liftEffect = Effect_Class.liftEffect(dictMonadEffect);\n return function (dictShow) {\n var $55 = Effect_Console.warnShow(dictShow);\n return function ($56) {\n return liftEffect($55($56));\n };\n };\n};\nvar warn = function (dictMonadEffect) {\n var $57 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($58) {\n return $57(Effect_Console.warn($58));\n };\n};\nvar timeLog = function (dictMonadEffect) {\n var $59 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($60) {\n return $59(Effect_Console.timeLog($60));\n };\n};\nvar timeEnd = function (dictMonadEffect) {\n var $61 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($62) {\n return $61(Effect_Console.timeEnd($62));\n };\n};\nvar time = function (dictMonadEffect) {\n var $63 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($64) {\n return $63(Effect_Console.time($64));\n };\n};\nvar logShow = function (dictMonadEffect) {\n var liftEffect = Effect_Class.liftEffect(dictMonadEffect);\n return function (dictShow) {\n var $65 = Effect_Console.logShow(dictShow);\n return function ($66) {\n return liftEffect($65($66));\n };\n };\n};\nvar log = function (dictMonadEffect) {\n var $67 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($68) {\n return $67(Effect_Console.log($68));\n };\n};\nvar infoShow = function (dictMonadEffect) {\n var liftEffect = Effect_Class.liftEffect(dictMonadEffect);\n return function (dictShow) {\n var $69 = Effect_Console.infoShow(dictShow);\n return function ($70) {\n return liftEffect($69($70));\n };\n };\n};\nvar info = function (dictMonadEffect) {\n var $71 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($72) {\n return $71(Effect_Console.info($72));\n };\n};\nvar groupEnd = function (dictMonadEffect) {\n return Effect_Class.liftEffect(dictMonadEffect)(Effect_Console.groupEnd);\n};\nvar groupCollapsed = function (dictMonadEffect) {\n var $73 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($74) {\n return $73(Effect_Console.groupCollapsed($74));\n };\n};\nvar group = function (dictMonadEffect) {\n var $75 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($76) {\n return $75(Effect_Console.group($76));\n };\n};\nvar grouped = function (dictMonadEffect) {\n var Monad0 = dictMonadEffect.Monad0();\n var Bind1 = Monad0.Bind1();\n var discard1 = discard(Bind1);\n var group1 = group(dictMonadEffect);\n var bind = Control_Bind.bind(Bind1);\n var groupEnd1 = groupEnd(dictMonadEffect);\n var pure = Control_Applicative.pure(Monad0.Applicative0());\n return function (name) {\n return function (inner) {\n return discard1(group1(name))(function () {\n return bind(inner)(function (result) {\n return discard1(groupEnd1)(function () {\n return pure(result);\n });\n });\n });\n };\n };\n};\nvar errorShow = function (dictMonadEffect) {\n var liftEffect = Effect_Class.liftEffect(dictMonadEffect);\n return function (dictShow) {\n var $77 = Effect_Console.errorShow(dictShow);\n return function ($78) {\n return liftEffect($77($78));\n };\n };\n};\nvar error = function (dictMonadEffect) {\n var $79 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($80) {\n return $79(Effect_Console.error($80));\n };\n};\nvar debugShow = function (dictMonadEffect) {\n var liftEffect = Effect_Class.liftEffect(dictMonadEffect);\n return function (dictShow) {\n var $81 = Effect_Console.debugShow(dictShow);\n return function ($82) {\n return liftEffect($81($82));\n };\n };\n};\nvar debug = function (dictMonadEffect) {\n var $83 = Effect_Class.liftEffect(dictMonadEffect);\n return function ($84) {\n return $83(Effect_Console.debug($84));\n };\n};\nvar clear = function (dictMonadEffect) {\n return Effect_Class.liftEffect(dictMonadEffect)(Effect_Console.clear);\n};\nexport {\n log,\n logShow,\n warn,\n warnShow,\n error,\n errorShow,\n info,\n infoShow,\n debug,\n debugShow,\n time,\n timeLog,\n timeEnd,\n clear,\n group,\n groupCollapsed,\n groupEnd,\n grouped\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_HTML_Elements from \"../Halogen.HTML.Elements/index.js\";\nimport * as Halogen_HTML_Properties from \"../Halogen.HTML.Properties/index.js\";\nimport * as Halogen_VDom_Thunk from \"../Halogen.VDom.Thunk/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar componentSlot = /* #__PURE__ */ Halogen_Component.componentSlot();\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorFn);\nvar slot_ = function () {\n return function (dictIsSymbol) {\n var componentSlot1 = componentSlot(dictIsSymbol);\n return function (dictOrd) {\n var componentSlot2 = componentSlot1(dictOrd);\n return function (label) {\n return function (p) {\n return function (component) {\n return function (input) {\n return Halogen_HTML_Core.widget(new Halogen_Component.ComponentSlot(componentSlot2(label)(p)(component)(input)(Data_Function[\"const\"](Data_Maybe.Nothing.value))));\n };\n };\n };\n };\n };\n };\n};\nvar slot = function () {\n return function (dictIsSymbol) {\n var componentSlot1 = componentSlot(dictIsSymbol);\n return function (dictOrd) {\n var componentSlot2 = componentSlot1(dictOrd);\n return function (label) {\n return function (p) {\n return function (component) {\n return function (input) {\n return function (outputQuery) {\n return Halogen_HTML_Core.widget(new Halogen_Component.ComponentSlot(componentSlot2(label)(p)(component)(input)(function ($11) {\n return Data_Maybe.Just.create(outputQuery($11));\n })));\n };\n };\n };\n };\n };\n };\n };\n};\nvar memoized = function (eqFn) {\n return function (f) {\n return map(function ($12) {\n return Halogen_HTML_Core.widget(Halogen_Component.ThunkSlot.create($12));\n })(Halogen_VDom_Thunk.thunked(eqFn)(f));\n };\n};\nvar lazy3 = function (f) {\n return function (a) {\n return function (b) {\n return function (c) {\n return Halogen_HTML_Core.widget(new Halogen_Component.ThunkSlot(Halogen_VDom_Thunk.thunk3(f, a, b, c)));\n };\n };\n };\n};\nvar lazy2 = function (f) {\n return function (a) {\n return function (b) {\n return Halogen_HTML_Core.widget(new Halogen_Component.ThunkSlot(Halogen_VDom_Thunk.thunk2(f, a, b)));\n };\n };\n};\nvar lazy = function (f) {\n return function (a) {\n return Halogen_HTML_Core.widget(new Halogen_Component.ThunkSlot(Halogen_VDom_Thunk.thunk1(f, a)));\n };\n};\nvar fromPlainHTML = Unsafe_Coerce.unsafeCoerce;\nexport {\n fromPlainHTML,\n slot,\n slot_,\n memoized,\n lazy,\n lazy2,\n lazy3\n};\nexport {\n AttrName,\n ClassName,\n ElemName,\n HTML,\n Namespace,\n PropName,\n handler,\n text\n} from \"../Halogen.HTML.Core/index.js\";\nexport {\n a,\n a_,\n abbr,\n abbr_,\n address,\n address_,\n area,\n article,\n article_,\n aside,\n aside_,\n audio,\n audio_,\n b,\n b_,\n base,\n bdi,\n bdi_,\n bdo,\n bdo_,\n blockquote,\n blockquote_,\n body,\n body_,\n br,\n br_,\n button,\n button_,\n canvas,\n caption,\n caption_,\n cite,\n cite_,\n code,\n code_,\n col,\n colgroup,\n colgroup_,\n command,\n datalist,\n datalist_,\n dd,\n dd_,\n del,\n del_,\n details,\n details_,\n dfn,\n dfn_,\n dialog,\n dialog_,\n div,\n div_,\n dl,\n dl_,\n dt,\n dt_,\n element,\n elementNS,\n em,\n em_,\n embed,\n embed_,\n fieldset,\n fieldset_,\n figcaption,\n figcaption_,\n figure,\n figure_,\n footer,\n footer_,\n form,\n form_,\n h1,\n h1_,\n h2,\n h2_,\n h3,\n h3_,\n h4,\n h4_,\n h5,\n h5_,\n h6,\n h6_,\n head,\n head_,\n header,\n header_,\n hr,\n hr_,\n html,\n html_,\n i,\n i_,\n iframe,\n img,\n input,\n ins,\n ins_,\n kbd,\n kbd_,\n keyed,\n keyedNS,\n label,\n label_,\n legend,\n legend_,\n li,\n li_,\n link,\n main,\n main_,\n map,\n map_,\n mark,\n mark_,\n menu,\n menu_,\n menuitem,\n menuitem_,\n meta,\n meter,\n meter_,\n nav,\n nav_,\n noscript,\n noscript_,\n object,\n object_,\n ol,\n ol_,\n optgroup,\n optgroup_,\n option,\n option_,\n output,\n output_,\n p,\n p_,\n param,\n pre,\n pre_,\n progress,\n progress_,\n q,\n q_,\n rp,\n rp_,\n rt,\n rt_,\n ruby,\n ruby_,\n samp,\n samp_,\n script,\n script_,\n section,\n section_,\n select,\n select_,\n small,\n small_,\n source,\n span,\n span_,\n strong,\n strong_,\n style,\n style_,\n sub,\n sub_,\n summary,\n summary_,\n sup,\n sup_,\n table,\n table_,\n tbody,\n tbody_,\n td,\n td_,\n textarea,\n tfoot,\n tfoot_,\n th,\n th_,\n thead,\n thead_,\n time,\n time_,\n title,\n title_,\n tr,\n tr_,\n track,\n u,\n u_,\n ul,\n ul_,\n var,\n var_,\n video,\n video_,\n wbr,\n withKeys,\n withKeys_\n} from \"../Halogen.HTML.Elements/index.js\";\nexport {\n attr,\n attrNS,\n prop\n} from \"../Halogen.HTML.Properties/index.js\";\n", "// Generated by purs version 0.15.14\nimport * as Affjax from \"../Affjax/index.js\";\nimport * as App from \"../App/index.js\";\nimport * as Component_Markdown from \"../Component.Markdown/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as DOM_HTML_Indexed_AutocompleteType from \"../DOM.HTML.Indexed.AutocompleteType/index.js\";\nimport * as DOM_HTML_Indexed_ButtonType from \"../DOM.HTML.Indexed.ButtonType/index.js\";\nimport * as DOM_HTML_Indexed_InputType from \"../DOM.HTML.Indexed.InputType/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Lens_Getter from \"../Data.Lens.Getter/index.js\";\nimport * as Data_Lens_Internal_Forget from \"../Data.Lens.Internal.Forget/index.js\";\nimport * as Data_Lens_Lens from \"../Data.Lens.Lens/index.js\";\nimport * as Data_Lens_Setter from \"../Data.Lens.Setter/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Profunctor_Strong from \"../Data.Profunctor.Strong/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_String_CodePoints from \"../Data.String.CodePoints/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Data_Void from \"../Data.Void/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Aff_Class from \"../Effect.Aff.Class/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Class_Console from \"../Effect.Class.Console/index.js\";\nimport * as Globals from \"../Globals/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_HTML from \"../Halogen.HTML/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_HTML_Elements from \"../Halogen.HTML.Elements/index.js\";\nimport * as Halogen_HTML_Events from \"../Halogen.HTML.Events/index.js\";\nimport * as Halogen_HTML_Properties from \"../Halogen.HTML.Properties/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nimport * as Util from \"../Util/index.js\";\nimport * as Web_Event_Event from \"../Web.Event.Event/index.js\";\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showInt);\nvar bind = /* #__PURE__ */ Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM);\nvar use = /* #__PURE__ */ Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM);\nvar liftAff = /* #__PURE__ */ Effect_Aff_Class.liftAff(/* #__PURE__ */ Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff));\nvar modifying = /* #__PURE__ */ Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM);\nvar modify_ = /* #__PURE__ */ Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM);\nvar assign = /* #__PURE__ */ Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM);\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(/* #__PURE__ */ Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff));\nvar when = /* #__PURE__ */ Control_Applicative.when(Effect.applicativeEffect);\nvar gets = /* #__PURE__ */ Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM);\nvar log = /* #__PURE__ */ Effect_Class_Console.log(Effect_Class.monadEffectEffect);\nvar guard = /* #__PURE__ */ Data_Monoid.guard(Data_Monoid.monoidString);\nvar slot = /* #__PURE__ */ Halogen_HTML.slot()({\n reflectSymbol: function () {\n return \"markdown\";\n }\n})(Data_Ord.ordUnit);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorArray);\nvar type_ = /* #__PURE__ */ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType);\nvar guard1 = /* #__PURE__ */ Data_Monoid.guard(Data_Monoid.monoidArray);\nvar type_1 = /* #__PURE__ */ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType);\nvar value = /* #__PURE__ */ Halogen_HTML_Properties.value(Halogen_HTML_Core.isPropString);\nvar Eurl = /* #__PURE__ */ (function () {\n function Eurl(value0) {\n this.value0 = value0;\n };\n Eurl.create = function (value0) {\n return new Eurl(value0);\n };\n return Eurl;\n})();\nvar Etitle = /* #__PURE__ */ (function () {\n function Etitle(value0) {\n this.value0 = value0;\n };\n Etitle.create = function (value0) {\n return new Etitle(value0);\n };\n return Etitle;\n})();\nvar Edescription = /* #__PURE__ */ (function () {\n function Edescription(value0) {\n this.value0 = value0;\n };\n Edescription.create = function (value0) {\n return new Edescription(value0);\n };\n return Edescription;\n})();\nvar Etags = /* #__PURE__ */ (function () {\n function Etags(value0) {\n this.value0 = value0;\n };\n Etags.create = function (value0) {\n return new Etags(value0);\n };\n return Etags;\n})();\nvar Eprivate = /* #__PURE__ */ (function () {\n function Eprivate(value0) {\n this.value0 = value0;\n };\n Eprivate.create = function (value0) {\n return new Eprivate(value0);\n };\n return Eprivate;\n})();\nvar Etoread = /* #__PURE__ */ (function () {\n function Etoread(value0) {\n this.value0 = value0;\n };\n Etoread.create = function (value0) {\n return new Etoread(value0);\n };\n return Etoread;\n})();\nvar BNotifyRemove = /* #__PURE__ */ (function () {\n function BNotifyRemove() {\n\n };\n BNotifyRemove.value = new BNotifyRemove();\n return BNotifyRemove;\n})();\nvar BStar = /* #__PURE__ */ (function () {\n function BStar(value0) {\n this.value0 = value0;\n };\n BStar.create = function (value0) {\n return new BStar(value0);\n };\n return BStar;\n})();\nvar BDeleteAsk = /* #__PURE__ */ (function () {\n function BDeleteAsk(value0) {\n this.value0 = value0;\n };\n BDeleteAsk.create = function (value0) {\n return new BDeleteAsk(value0);\n };\n return BDeleteAsk;\n})();\nvar BLookupTitle = /* #__PURE__ */ (function () {\n function BLookupTitle() {\n\n };\n BLookupTitle.value = new BLookupTitle();\n return BLookupTitle;\n})();\nvar BDestroy = /* #__PURE__ */ (function () {\n function BDestroy() {\n\n };\n BDestroy.value = new BDestroy();\n return BDestroy;\n})();\nvar BEdit = /* #__PURE__ */ (function () {\n function BEdit(value0) {\n this.value0 = value0;\n };\n BEdit.create = function (value0) {\n return new BEdit(value0);\n };\n return BEdit;\n})();\nvar BEditField = /* #__PURE__ */ (function () {\n function BEditField(value0) {\n this.value0 = value0;\n };\n BEditField.create = function (value0) {\n return new BEditField(value0);\n };\n return BEditField;\n})();\nvar BEditSubmit = /* #__PURE__ */ (function () {\n function BEditSubmit(value0) {\n this.value0 = value0;\n };\n BEditSubmit.create = function (value0) {\n return new BEditSubmit(value0);\n };\n return BEditSubmit;\n})();\nvar BMarkRead = /* #__PURE__ */ (function () {\n function BMarkRead() {\n\n };\n BMarkRead.value = new BMarkRead();\n return BMarkRead;\n})();\nvar _markdown = /* #__PURE__ */ (function () {\n return Type_Proxy[\"Proxy\"].value;\n})();\nvar _edit_bm = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.edit_bm;\n })(function (v) {\n return function (v1) {\n return {\n apiError: v.apiError,\n bm: v.bm,\n deleteAsk: v.deleteAsk,\n edit: v.edit,\n loading: v.loading,\n edit_bm: v1\n };\n };\n })(dictStrong);\n};\nvar _edit_bm1 = /* #__PURE__ */ _edit_bm(Data_Profunctor_Strong.strongFn);\nvar _edit_bm2 = /* #__PURE__ */ _edit_bm(Data_Lens_Internal_Forget.strongForget);\nvar _edit = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.edit;\n })(function (v) {\n return function (v1) {\n return {\n apiError: v.apiError,\n bm: v.bm,\n deleteAsk: v.deleteAsk,\n edit_bm: v.edit_bm,\n loading: v.loading,\n edit: v1\n };\n };\n })(dictStrong);\n};\nvar _edit1 = /* #__PURE__ */ _edit(Data_Profunctor_Strong.strongFn);\nvar _bm = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.bm;\n })(function (v) {\n return function (v1) {\n return {\n apiError: v.apiError,\n deleteAsk: v.deleteAsk,\n edit: v.edit,\n edit_bm: v.edit_bm,\n loading: v.loading,\n bm: v1\n };\n };\n })(dictStrong);\n};\nvar _bm1 = /* #__PURE__ */ _bm(Data_Lens_Internal_Forget.strongForget);\nvar _bm2 = /* #__PURE__ */ _bm(Data_Profunctor_Strong.strongFn);\nvar _apiError = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.apiError;\n })(function (v) {\n return function (v1) {\n return {\n bm: v.bm,\n deleteAsk: v.deleteAsk,\n edit: v.edit,\n edit_bm: v.edit_bm,\n loading: v.loading,\n apiError: v1\n };\n };\n })(dictStrong);\n};\nvar _apiError1 = /* #__PURE__ */ _apiError(Data_Profunctor_Strong.strongFn);\nvar bmark = function (b$prime) {\n var tagid = function (bm) {\n return show(bm.bid) + \"_tags\";\n };\n var mkState = function (b) {\n return {\n bm: b,\n edit_bm: b,\n deleteAsk: false,\n edit: false,\n loading: false,\n apiError: Data_Maybe.Nothing.value\n };\n };\n var handleAction = function (v) {\n if (v instanceof BStar) {\n return bind(use(_bm1))(function (bm) {\n return discard(liftAff(App.toggleStar(bm.bid)((function () {\n if (v.value0) {\n return App.Star.value;\n };\n return App.UnStar.value;\n })())))(function () {\n return discard(modifying(_bm2)(function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n selected: v.value0\n };\n }))(function () {\n return modifying(_edit_bm1)(function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n selected: v.value0\n };\n });\n });\n });\n });\n };\n if (v instanceof BDeleteAsk) {\n return modify_(function (v1) {\n var $93 = {};\n for (var $94 in v1) {\n if ({}.hasOwnProperty.call(v1, $94)) {\n $93[$94] = v1[$94];\n };\n };\n $93.deleteAsk = v.value0;\n return $93;\n });\n };\n if (v instanceof BDestroy) {\n return bind(use(_bm1))(function (bm) {\n return discard($$void(liftAff(App.destroy(bm.bid))))(function () {\n return Halogen_Query_HalogenM.raise(BNotifyRemove.value);\n });\n });\n };\n if (v instanceof BMarkRead) {\n return bind(use(_bm1))(function (bm) {\n return discard($$void(liftAff(App.markRead(bm.bid))))(function () {\n return modifying(_bm2)(function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n toread: false\n };\n });\n });\n });\n };\n if (v instanceof BEdit) {\n return bind(use(_bm1))(function (bm) {\n return discard(assign(_edit_bm1)(bm))(function () {\n return discard(assign(_edit1)(v.value0))(function () {\n return discard(assign(_apiError1)(Data_Maybe.Nothing.value))(function () {\n return liftEffect(when(v.value0)(Globals.setFocus(tagid(bm))));\n });\n });\n });\n });\n };\n if (v instanceof BEditField) {\n return modifying(_edit_bm1)((function () {\n if (v.value0 instanceof Eurl) {\n return function (v1) {\n return {\n title: v1.title,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n url: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Etitle) {\n return function (v1) {\n return {\n url: v1.url,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n title: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Edescription) {\n return function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n description: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Etags) {\n return function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n description: v1.description,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n tags: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Eprivate) {\n return function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n description: v1.description,\n tags: v1.tags,\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n \"private\": v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Etoread) {\n return function (v1) {\n return {\n url: v1.url,\n title: v1.title,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n toread: v.value0.value0\n };\n };\n };\n throw new Error(\"Failed pattern match at Component.BMark (line 253, column 17 - line 259, column 36): \" + [ v.value0.constructor.name ]);\n })());\n };\n if (v instanceof BLookupTitle) {\n return discard(modify_(function (v1) {\n var $106 = {};\n for (var $107 in v1) {\n if ({}.hasOwnProperty.call(v1, $107)) {\n $106[$107] = v1[$107];\n };\n };\n $106.loading = true;\n return $106;\n }))(function () {\n return bind(gets(function (v1) {\n return v1.edit_bm;\n }))(function (edit_bm) {\n return bind(liftAff(App.lookupTitle(edit_bm)))(function (mtitle) {\n return discard((function () {\n if (mtitle instanceof Data_Maybe.Just) {\n return modifying(_edit_bm1)(function (v1) {\n return {\n url: v1.url,\n description: v1.description,\n tags: v1.tags,\n \"private\": v1[\"private\"],\n toread: v1.toread,\n bid: v1.bid,\n slug: v1.slug,\n selected: v1.selected,\n time: v1.time,\n archiveUrl: v1.archiveUrl,\n title: mtitle.value0\n };\n });\n };\n if (mtitle instanceof Data_Maybe.Nothing) {\n return pure(Data_Unit.unit);\n };\n throw new Error(\"Failed pattern match at Component.BMark (line 266, column 5 - line 268, column 29): \" + [ mtitle.constructor.name ]);\n })())(function () {\n return modify_(function (v1) {\n var $111 = {};\n for (var $112 in v1) {\n if ({}.hasOwnProperty.call(v1, $112)) {\n $111[$112] = v1[$112];\n };\n };\n $111.loading = false;\n return $111;\n });\n });\n });\n });\n });\n };\n if (v instanceof BEditSubmit) {\n return discard(liftEffect(Web_Event_Event.preventDefault(v.value0)))(function () {\n return bind(use(_edit_bm2))(function (edit_bm) {\n return discard(assign(_apiError1)(Data_Maybe.Nothing.value))(function () {\n var edit_bm$prime = {\n archiveUrl: edit_bm.archiveUrl,\n bid: edit_bm.bid,\n description: edit_bm.description,\n \"private\": edit_bm[\"private\"],\n selected: edit_bm.selected,\n slug: edit_bm.slug,\n time: edit_bm.time,\n title: edit_bm.title,\n toread: edit_bm.toread,\n url: edit_bm.url,\n tags: Data_String_Common.replaceAll(\",\")(\" \")(edit_bm.tags)\n };\n return bind(liftAff(App.editBookmark(edit_bm$prime)))(function (v1) {\n if (v1 instanceof Data_Either.Left) {\n return discard(assign(_apiError1)(new Data_Maybe.Just(Affjax.printError(v1.value0))))(function () {\n return liftEffect(log(Affjax.printError(v1.value0)));\n });\n };\n if (v1 instanceof Data_Either.Right && (v1.value0.status >= 200 && v1.value0.status < 300)) {\n return discard(assign(_bm2)(edit_bm$prime))(function () {\n return assign(_edit1)(false);\n });\n };\n if (v1 instanceof Data_Either.Right) {\n return discard(assign(_apiError1)(new Data_Maybe.Just(v1.value0.body)))(function () {\n return liftEffect(log(v1.value0.body));\n });\n };\n throw new Error(\"Failed pattern match at Component.BMark (line 277, column 43 - line 286, column 36): \" + [ v1.constructor.name ]);\n });\n });\n });\n });\n };\n throw new Error(\"Failed pattern match at Component.BMark (line 216, column 3 - line 216, column 84): \" + [ v.constructor.name ]);\n };\n var app = Globals[\"app$prime\"](Data_Unit.unit);\n var render = function (v) {\n var star = function (v1) {\n return Halogen_HTML_Elements.div([ Util.class_(\"star fl pointer\" + guard(v.bm.selected)(\" selected\")) ])([ Halogen_HTML_Elements.button([ Util.class_(\"moon-gray\"), Halogen_HTML_Events.onClick(function (v2) {\n return new BStar(!v.bm.selected);\n }) ])([ Halogen_HTML_Core.text(\"\\u272d\") ]) ]);\n };\n var shdatetime = Data_String_CodePoints.take(16)(v.bm.time) + \"Z\";\n var shdate = Globals.toLocaleDateString(v.bm.time);\n var linkToFilterTag = function (tag) {\n return Util.fromNullableStr(app.userR) + (\"/t:\" + Util.encodeTag(tag));\n };\n var linkToFilterSingle = function (slug) {\n return Util.fromNullableStr(app.userR) + (\"/b:\" + slug);\n };\n var editField = function (f) {\n return function ($126) {\n return BEditField.create(f($126));\n };\n };\n var display = function (v1) {\n return Halogen_HTML_Elements.div([ Util.class_(\"display\") ])([ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Halogen_HTML_Properties.target(\"_blank\"), Util.class_(\"link f5 lh-title\" + guard(v.bm.toread)(\" unread\")) ])([ Halogen_HTML_Core.text((function () {\n var $121 = Data_String_Common[\"null\"](v.bm.title);\n if ($121) {\n return \"[no title]\";\n };\n return v.bm.title;\n })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(v.bm.url), Util.class_(\"link f7 gray hover-blue\") ])([ Halogen_HTML_Core.text(v.bm.url) ]), Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(Data_Maybe.fromMaybe(\"http://archive.is/\" + v.bm.url)(Data_Nullable.toMaybe(v.bm.archiveUrl))), Util.class_(\"link f7 gray hover-blue ml2\" + guard(Data_Maybe.isJust(Data_Nullable.toMaybe(v.bm.archiveUrl)))(\" green\")), Halogen_HTML_Properties.target(\"_blank\"), Halogen_HTML_Properties.title(\"archive link\") ])([ (function () {\n var $122 = Data_Maybe.isJust(Data_Nullable.toMaybe(v.bm.archiveUrl));\n if ($122) {\n return Halogen_HTML_Core.text(\"\\u2611\");\n };\n return Halogen_HTML_Core.text(\"\\u2610\");\n })() ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_(\"description mt1 mid-gray\") ])([ slot(_markdown)(Data_Unit.unit)(Component_Markdown.component)(v.bm.description)(Data_Void.absurd) ]), Halogen_HTML_Elements.div([ Util.class_(\"tags\") ])(Util.whenA(!Data_String_Common[\"null\"](v.bm.tags))(function (v2) {\n return map(function (tag) {\n return Halogen_HTML_Elements.a([ Util.class_(\"link tag mr1\" + guard(Data_String_CodePoints.take(1)(tag) === \".\")(\" private\")), Halogen_HTML_Properties.href(linkToFilterTag(tag)) ])([ Halogen_HTML_Core.text(tag) ]);\n })(Data_String_Common.split(\" \")(v.bm.tags));\n })), Halogen_HTML_Elements.a([ Util.class_(\"link f7 dib gray w4\"), Halogen_HTML_Properties.href(linkToFilterSingle(v.bm.slug)), Halogen_HTML_Properties.title(shdatetime) ])([ Halogen_HTML_Core.text(shdate) ]), Util.whenH(app.dat.isowner)(function (v2) {\n return Halogen_HTML_Elements.div([ Util.class_(\"edit_links di\") ])([ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n return new BEdit(true);\n }), Util.class_(\"edit light-silver hover-blue\") ])([ Halogen_HTML_Core.text(\"edit\\xa0\\xa0\") ]), Halogen_HTML_Elements.div([ Util.class_(\"delete_link di\") ])([ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n return new BDeleteAsk(true);\n }), Util.class_(\"delete light-silver hover-blue\" + guard(v.deleteAsk)(\" dn\")) ])([ Halogen_HTML_Core.text(\"delete\") ]), Halogen_HTML_Elements.span([ Util.class_(\"confirm red\" + guard(!v.deleteAsk)(\" dn\")) ])([ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n return new BDeleteAsk(false);\n }) ])([ Halogen_HTML_Core.text(\"cancel\\xa0/\\xa0\") ]), Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n return BDestroy.value;\n }), Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"destroy\") ]) ]) ]) ]);\n }), Util.whenH(app.dat.isowner)(function (v2) {\n return Halogen_HTML_Elements.div([ Util.class_(\"read di\") ])(guard1(v.bm.toread)([ Halogen_HTML_Core.text(\"\\xa0\\xa0\"), Halogen_HTML_Elements.button([ Halogen_HTML_Events.onClick(function (v3) {\n return BMarkRead.value;\n }), Util.class_(\"mark_read\") ])([ Halogen_HTML_Core.text(\"mark as read\") ]) ]));\n }) ]);\n };\n var alert_notification = function (alert_text) {\n return function (v1) {\n return Halogen_HTML_Elements.div([ Util.class_(\"alert alert-err\") ])([ Halogen_HTML_Core.text(alert_text) ]);\n };\n };\n var display_edit = function (v1) {\n return Halogen_HTML_Elements.div([ Util.class_(\"edit_bookmark_form pa2 pt0 bg-white\") ])([ Util.whenH(Data_Maybe.isJust(v.apiError))(alert_notification(Data_Maybe.fromMaybe(\"\")(v.apiError))), Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(BEditSubmit.create) ])([ Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text(\"url\") ]), Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputUrl.value), Util.class_(\"url w-100 mb2 pt1 edit_form_input\"), Halogen_HTML_Properties.required(true), Halogen_HTML_Properties.name(\"url\"), value(v.edit_bm.url), Halogen_HTML_Events.onValueChange(editField(Eurl.create)) ]), Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text(\"title\") ]), Halogen_HTML_Elements.div([ Util.class_(\"flex\") ])([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputText.value), Util.class_(\"title w-100 mb2 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"title\"), value(v.edit_bm.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)) ]), Halogen_HTML_Elements.button([ Halogen_HTML_Properties.disabled(v.loading), type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v2) {\n return BLookupTitle.value;\n }), Util.class_(\"ml1 pa1 mb2 dark-gray ba b--moon-gray bg-near-white pointer rdim f7 \" + guard(v.loading)(\"bg-light-silver\")) ])([ Halogen_HTML_Core.text(\"fetch\") ]) ]), Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text(\"description\") ]), Halogen_HTML_Elements.textarea([ Util.class_(\"description w-100 mb1 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"description\"), Halogen_HTML_Properties.rows(5), value(v.edit_bm.description), Halogen_HTML_Events.onValueChange(editField(Edescription.create)) ]), Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id(\"tags_input_box\") ])([ Halogen_HTML_Elements.div_([ Halogen_HTML_Core.text(\"tags\") ]), Halogen_HTML_Elements.input([ Halogen_HTML_Properties.id(tagid(v.edit_bm)), type_1(DOM_HTML_Indexed_InputType.InputText.value), Util.class_(\"tags w-100 mb1 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"tags\"), Halogen_HTML_Properties.autocomplete(DOM_HTML_Indexed_AutocompleteType.AutocompleteOff.value), Util.attr(\"autocapitalize\")(\"off\"), value(v.edit_bm.tags), Halogen_HTML_Events.onValueChange(editField(Etags.create)) ]) ]), Halogen_HTML_Elements.div([ Util.class_(\"edit_form_checkboxes mv3\") ])([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"private pointer\"), Halogen_HTML_Properties.id(\"edit_private\"), Halogen_HTML_Properties.name(\"private\"), Halogen_HTML_Properties.checked(v[\"edit_bm\"][\"private\"]), Halogen_HTML_Events.onChecked(editField(Eprivate.create)) ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"edit_private\"), Util.class_(\"mr2\") ])([ Halogen_HTML_Core.text(\"private\") ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"toread pointer\"), Halogen_HTML_Properties.id(\"edit_toread\"), Halogen_HTML_Properties.name(\"toread\"), Halogen_HTML_Properties.checked(v.edit_bm.toread), Halogen_HTML_Events.onChecked(editField(Etoread.create)) ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"edit_toread\") ])([ Halogen_HTML_Core.text(\"to-read\") ]) ]), Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_(\"mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"), value(\"save\") ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputReset.value), Util.class_(\"pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"), value(\"cancel\"), Halogen_HTML_Events.onClick(function (v2) {\n return new BEdit(false);\n }) ]) ]) ]);\n };\n return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id(show(v.bm.bid)), Util.class_(\"bookmark w-100 mw7 pa1 mb3\" + guard(v[\"bm\"][\"private\"])(\" private\")) ])([ Util.whenH(app.dat.isowner)(star), Util.ifElseH(v.edit)(display_edit)(display) ]);\n };\n return Halogen_Component.mkComponent({\n initialState: Data_Function[\"const\"](mkState(b$prime)),\n render: render,\n \"eval\": Halogen_Component.mkEval({\n handleQuery: Halogen_Component.defaultEval.handleQuery,\n receive: Halogen_Component.defaultEval.receive,\n initialize: Halogen_Component.defaultEval.initialize,\n finalize: Halogen_Component.defaultEval.finalize,\n handleAction: handleAction\n })\n });\n};\nexport {\n BStar,\n BDeleteAsk,\n BLookupTitle,\n BDestroy,\n BEdit,\n BEditField,\n BEditSubmit,\n BMarkRead,\n Eurl,\n Etitle,\n Edescription,\n Etags,\n Eprivate,\n Etoread,\n BNotifyRemove,\n _bm,\n _edit_bm,\n _edit,\n _apiError,\n _markdown,\n bmark\n};\n", "// Generated by purs version 0.15.14\nimport * as Component_BMark from \"../Component.BMark/index.js\";\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_HTML from \"../Halogen.HTML/index.js\";\nimport * as Halogen_HTML_Elements from \"../Halogen.HTML.Elements/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorArray);\nvar slot = /* #__PURE__ */ Halogen_HTML.slot()({\n reflectSymbol: function () {\n return \"bookmark\";\n }\n})(Data_Ord.ordInt);\nvar modify_ = /* #__PURE__ */ Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM);\nvar HandleBMessage = /* #__PURE__ */ (function () {\n function HandleBMessage(value0, value1) {\n this.value0 = value0;\n this.value1 = value1;\n };\n HandleBMessage.create = function (value0) {\n return function (value1) {\n return new HandleBMessage(value0, value1);\n };\n };\n return HandleBMessage;\n})();\nvar _bookmark = /* #__PURE__ */ (function () {\n return Type_Proxy[\"Proxy\"].value;\n})();\nvar blist = function (st) {\n var render = function (bms) {\n return Halogen_HTML_Elements.div_(map(function (b) {\n return slot(_bookmark)(b.bid)(Component_BMark.bmark(b))(Data_Unit.unit)(HandleBMessage.create(b.bid));\n })(bms));\n };\n var handleAction = function (v) {\n return modify_(Data_Array.filter(function (b) {\n return b.bid !== v.value0;\n }));\n };\n return Halogen_Component.mkComponent({\n initialState: Data_Function[\"const\"](st),\n render: render,\n \"eval\": Halogen_Component.mkEval({\n handleQuery: Halogen_Component.defaultEval.handleQuery,\n receive: Halogen_Component.defaultEval.receive,\n initialize: Halogen_Component.defaultEval.initialize,\n finalize: Halogen_Component.defaultEval.finalize,\n handleAction: handleAction\n })\n });\n};\nexport {\n HandleBMessage,\n _bookmark,\n blist\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_String_CodePoints from \"../Data.String.CodePoints/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Globals from \"../Globals/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_HTML_Elements from \"../Halogen.HTML.Elements/index.js\";\nimport * as Halogen_HTML_Properties from \"../Halogen.HTML.Properties/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Util from \"../Util/index.js\";\nvar foldMap = /* #__PURE__ */ Data_Array.foldMap(Data_Monoid.monoidArray);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM);\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showInt);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorArray);\nvar NLNop = /* #__PURE__ */ (function () {\n function NLNop() {\n\n };\n NLNop.value = new NLNop();\n return NLNop;\n})();\nvar nlist = function (st$prime) {\n var toTextarea = function (input) {\n return Data_Array.drop(1)(foldMap(function (x) {\n return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];\n })(Data_String_Common.split(\"\\x0a\")(input)));\n };\n var mmoment = function (note) {\n return Globals.mmoment8601(note.created);\n };\n var mkState = function (notes$prime) {\n return {\n notes: notes$prime,\n cur: Data_Maybe.Nothing.value,\n deleteAsk: false,\n edit: false\n };\n };\n var handleAction = function (v) {\n return pure(Data_Unit.unit);\n };\n var app = Globals[\"app$prime\"](Data_Unit.unit);\n var linkToFilterSingle = function (slug) {\n return Util.fromNullableStr(app.userR) + (\"/notes/\" + slug);\n };\n var render = function (v) {\n var renderNote = function (note) {\n return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id(show(note.id)), Util.class_(\"note w-100 mw7 pa1 mb2\" + (function () {\n if (note.shared) {\n return \"\";\n };\n return \" private\";\n })()) ])([ Halogen_HTML_Elements.div([ Util.class_(\"display\") ])([ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterSingle(note.slug)), Util.class_(\"link f5 lh-title\") ])([ Halogen_HTML_Core.text((function () {\n var $11 = Data_String_Common[\"null\"](note.title);\n if ($11) {\n return \"[no title]\";\n };\n return note.title;\n })()) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.div([ Util.class_(\"description mt1 mid-gray\") ])(toTextarea(Data_String_CodePoints.take(200)(note.text))), Halogen_HTML_Elements.a([ Util.class_(\"link f7 dib gray w4\"), Halogen_HTML_Properties.title(Data_Maybe.maybe(note.created)(Data_Tuple.snd)(mmoment(note))), Halogen_HTML_Properties.href(linkToFilterSingle(note.slug)) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe(\"\\xa0\")(Data_Tuple.fst)(mmoment(note))) ]) ]) ]);\n };\n return Halogen_HTML_Elements.div_(map(renderNote)(v.notes));\n };\n return Halogen_Component.mkComponent({\n initialState: Data_Function[\"const\"](mkState(st$prime)),\n render: render,\n \"eval\": Halogen_Component.mkEval({\n handleQuery: Halogen_Component.defaultEval.handleQuery,\n receive: Halogen_Component.defaultEval.receive,\n initialize: Halogen_Component.defaultEval.initialize,\n finalize: Halogen_Component.defaultEval.finalize,\n handleAction: handleAction\n })\n });\n};\nexport {\n NLNop,\n nlist\n};\n", "// Generated by purs version 0.15.14\nimport * as Affjax from \"../Affjax/index.js\";\nimport * as App from \"../App/index.js\";\nimport * as Component_Markdown from \"../Component.Markdown/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad from \"../Control.Monad/index.js\";\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as DOM_HTML_Indexed_ButtonType from \"../DOM.HTML.Indexed.ButtonType/index.js\";\nimport * as DOM_HTML_Indexed_InputType from \"../DOM.HTML.Indexed.InputType/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Lens_Getter from \"../Data.Lens.Getter/index.js\";\nimport * as Data_Lens_Internal_Forget from \"../Data.Lens.Internal.Forget/index.js\";\nimport * as Data_Lens_Lens from \"../Data.Lens.Lens/index.js\";\nimport * as Data_Lens_Setter from \"../Data.Lens.Setter/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Profunctor_Strong from \"../Data.Profunctor.Strong/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_String_CodeUnits from \"../Data.String.CodeUnits/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Data_Void from \"../Data.Void/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Aff_Class from \"../Effect.Aff.Class/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Console from \"../Effect.Console/index.js\";\nimport * as Globals from \"../Globals/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_HTML from \"../Halogen.HTML/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_HTML_Elements from \"../Halogen.HTML.Elements/index.js\";\nimport * as Halogen_HTML_Events from \"../Halogen.HTML.Events/index.js\";\nimport * as Halogen_HTML_Properties from \"../Halogen.HTML.Properties/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Type_Proxy from \"../Type.Proxy/index.js\";\nimport * as Util from \"../Util/index.js\";\nimport * as Web_Event_Event from \"../Web.Event.Event/index.js\";\nimport * as Web_HTML from \"../Web.HTML/index.js\";\nimport * as Web_HTML_HTMLDocument from \"../Web.HTML.HTMLDocument/index.js\";\nimport * as Web_HTML_Location from \"../Web.HTML.Location/index.js\";\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showInt);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM);\nvar modifying = /* #__PURE__ */ Data_Lens_Setter.modifying(Halogen_Query_HalogenM.monadStateHalogenM);\nvar modify_ = /* #__PURE__ */ Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM);\nvar bind = /* #__PURE__ */ Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM);\nvar use = /* #__PURE__ */ Data_Lens_Getter.use(Halogen_Query_HalogenM.monadStateHalogenM);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM);\nvar liftAff = /* #__PURE__ */ Effect_Aff_Class.liftAff(/* #__PURE__ */ Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff));\nvar assign = /* #__PURE__ */ Data_Lens_Setter.assign(Halogen_Query_HalogenM.monadStateHalogenM);\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(/* #__PURE__ */ Halogen_Query_HalogenM.monadEffectHalogenM(Effect_Aff.monadEffectAff));\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Effect.bindEffect);\nvar whenM = /* #__PURE__ */ Control_Monad.whenM(Effect.monadEffect);\nvar pure1 = /* #__PURE__ */ Control_Applicative.pure(Effect.applicativeEffect);\nvar foldMap = /* #__PURE__ */ Data_Array.foldMap(Data_Monoid.monoidArray);\nvar slot = /* #__PURE__ */ Halogen_HTML.slot()({\n reflectSymbol: function () {\n return \"markdown\";\n }\n})(Data_Ord.ordUnit);\nvar type_ = /* #__PURE__ */ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType);\nvar guard = /* #__PURE__ */ Data_Monoid.guard(Data_Monoid.monoidString);\nvar type_1 = /* #__PURE__ */ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropInputType);\nvar value = /* #__PURE__ */ Halogen_HTML_Properties.value(Halogen_HTML_Core.isPropString);\nvar Etitle = /* #__PURE__ */ (function () {\n function Etitle(value0) {\n this.value0 = value0;\n };\n Etitle.create = function (value0) {\n return new Etitle(value0);\n };\n return Etitle;\n})();\nvar Etext = /* #__PURE__ */ (function () {\n function Etext(value0) {\n this.value0 = value0;\n };\n Etext.create = function (value0) {\n return new Etext(value0);\n };\n return Etext;\n})();\nvar EisMarkdown = /* #__PURE__ */ (function () {\n function EisMarkdown(value0) {\n this.value0 = value0;\n };\n EisMarkdown.create = function (value0) {\n return new EisMarkdown(value0);\n };\n return EisMarkdown;\n})();\nvar Eshared = /* #__PURE__ */ (function () {\n function Eshared(value0) {\n this.value0 = value0;\n };\n Eshared.create = function (value0) {\n return new Eshared(value0);\n };\n return Eshared;\n})();\nvar NNop = /* #__PURE__ */ (function () {\n function NNop() {\n\n };\n NNop.value = new NNop();\n return NNop;\n})();\nvar NEditField = /* #__PURE__ */ (function () {\n function NEditField(value0) {\n this.value0 = value0;\n };\n NEditField.create = function (value0) {\n return new NEditField(value0);\n };\n return NEditField;\n})();\nvar NEditSubmit = /* #__PURE__ */ (function () {\n function NEditSubmit(value0) {\n this.value0 = value0;\n };\n NEditSubmit.create = function (value0) {\n return new NEditSubmit(value0);\n };\n return NEditSubmit;\n})();\nvar NEdit = /* #__PURE__ */ (function () {\n function NEdit(value0) {\n this.value0 = value0;\n };\n NEdit.create = function (value0) {\n return new NEdit(value0);\n };\n return NEdit;\n})();\nvar NDeleteAsk = /* #__PURE__ */ (function () {\n function NDeleteAsk(value0) {\n this.value0 = value0;\n };\n NDeleteAsk.create = function (value0) {\n return new NDeleteAsk(value0);\n };\n return NDeleteAsk;\n})();\nvar NDestroy = /* #__PURE__ */ (function () {\n function NDestroy() {\n\n };\n NDestroy.value = new NDestroy();\n return NDestroy;\n})();\nvar _note = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.note;\n })(function (v) {\n return function (v1) {\n return {\n apiError: v.apiError,\n deleteAsk: v.deleteAsk,\n destroyed: v.destroyed,\n edit: v.edit,\n edit_note: v.edit_note,\n note: v1\n };\n };\n })(dictStrong);\n};\nvar _note1 = /* #__PURE__ */ _note(Data_Lens_Internal_Forget.strongForget);\nvar _note2 = /* #__PURE__ */ _note(Data_Profunctor_Strong.strongFn);\nvar _markdown = /* #__PURE__ */ (function () {\n return Type_Proxy[\"Proxy\"].value;\n})();\nvar _edit_note = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.edit_note;\n })(function (v) {\n return function (v1) {\n return {\n apiError: v.apiError,\n deleteAsk: v.deleteAsk,\n destroyed: v.destroyed,\n edit: v.edit,\n note: v.note,\n edit_note: v1\n };\n };\n })(dictStrong);\n};\nvar _edit_note1 = /* #__PURE__ */ _edit_note(Data_Profunctor_Strong.strongFn);\nvar _edit_note2 = /* #__PURE__ */ _edit_note(Data_Lens_Internal_Forget.strongForget);\nvar _edit = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.edit;\n })(function (v) {\n return function (v1) {\n return {\n apiError: v.apiError,\n deleteAsk: v.deleteAsk,\n destroyed: v.destroyed,\n edit_note: v.edit_note,\n note: v.note,\n edit: v1\n };\n };\n })(dictStrong);\n};\nvar _edit1 = /* #__PURE__ */ _edit(Data_Profunctor_Strong.strongFn);\nvar _apiError = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.apiError;\n })(function (v) {\n return function (v1) {\n return {\n deleteAsk: v.deleteAsk,\n destroyed: v.destroyed,\n edit: v.edit,\n edit_note: v.edit_note,\n note: v.note,\n apiError: v1\n };\n };\n })(dictStrong);\n};\nvar _apiError1 = /* #__PURE__ */ _apiError(Data_Profunctor_Strong.strongFn);\nvar nnote = function (st$prime) {\n var notetextid = function (note) {\n return show(note.id) + \"_text\";\n };\n var mkState = function (note$prime) {\n return {\n note: note$prime,\n edit_note: note$prime,\n deleteAsk: false,\n edit: note$prime.id <= 0,\n destroyed: false,\n apiError: Data_Maybe.Nothing.value\n };\n };\n var app = Globals[\"app$prime\"](Data_Unit.unit);\n var handleAction = function (v) {\n if (v instanceof NNop) {\n return pure(Data_Unit.unit);\n };\n if (v instanceof NEditField) {\n return modifying(_edit_note1)((function () {\n if (v.value0 instanceof Etitle) {\n return function (v1) {\n return {\n id: v1.id,\n slug: v1.slug,\n text: v1.text,\n length: v1.length,\n isMarkdown: v1.isMarkdown,\n shared: v1.shared,\n created: v1.created,\n updated: v1.updated,\n title: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Etext) {\n return function (v1) {\n return {\n id: v1.id,\n slug: v1.slug,\n title: v1.title,\n length: v1.length,\n isMarkdown: v1.isMarkdown,\n shared: v1.shared,\n created: v1.created,\n updated: v1.updated,\n text: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof EisMarkdown) {\n return function (v1) {\n return {\n id: v1.id,\n slug: v1.slug,\n title: v1.title,\n text: v1.text,\n length: v1.length,\n shared: v1.shared,\n created: v1.created,\n updated: v1.updated,\n isMarkdown: v.value0.value0\n };\n };\n };\n if (v.value0 instanceof Eshared) {\n return function (v1) {\n return {\n id: v1.id,\n slug: v1.slug,\n title: v1.title,\n text: v1.text,\n length: v1.length,\n isMarkdown: v1.isMarkdown,\n created: v1.created,\n updated: v1.updated,\n shared: v.value0.value0\n };\n };\n };\n throw new Error(\"Failed pattern match at Component.NNote (line 194, column 19 - line 198, column 36): \" + [ v.value0.constructor.name ]);\n })());\n };\n if (v instanceof NDeleteAsk) {\n return modify_(function (v1) {\n var $84 = {};\n for (var $85 in v1) {\n if ({}.hasOwnProperty.call(v1, $85)) {\n $84[$85] = v1[$85];\n };\n };\n $84.deleteAsk = v.value0;\n return $84;\n });\n };\n if (v instanceof NDestroy) {\n return bind(use(_note1))(function (note) {\n return discard($$void(liftAff(App.destroyNote(note.id))))(function () {\n return modify_(function (v1) {\n var $88 = {};\n for (var $89 in v1) {\n if ({}.hasOwnProperty.call(v1, $89)) {\n $88[$89] = v1[$89];\n };\n };\n $88.destroyed = true;\n return $88;\n });\n });\n });\n };\n if (v instanceof NEdit) {\n return bind(use(_note1))(function (note) {\n return discard(assign(_edit_note1)(note))(function () {\n return discard(assign(_edit1)(v.value0))(function () {\n return bind(liftEffect(Util[\"_curQuerystring\"]))(function (qs) {\n var $91 = {\n e: v.value0,\n q: Util[\"_lookupQueryStringValue\"](qs)(\"next\")\n };\n if (!$91.e && ($91.q instanceof Data_Maybe.Just && $91.q.value0 === \"closeWindow\")) {\n return liftEffect(bindFlipped(Globals.closeWindow)(Web_HTML.window));\n };\n return liftEffect(whenM(pure1(v.value0))(Globals.setFocus(notetextid(note))));\n });\n });\n });\n });\n };\n if (v instanceof NEditSubmit) {\n return discard(liftEffect(Web_Event_Event.preventDefault(v.value0)))(function () {\n return bind(use(_edit_note2))(function (edit_note) {\n return discard(assign(_apiError1)(Data_Maybe.Nothing.value))(function () {\n return bind(liftAff(App.editNote(edit_note)))(function (v1) {\n if (v1 instanceof Data_Either.Left) {\n return discard(assign(_apiError1)(new Data_Maybe.Just(Affjax.printError(v1.value0))))(function () {\n return liftEffect(Effect_Console.log(Affjax.printError(v1.value0)));\n });\n };\n if (v1 instanceof Data_Either.Right && (v1.value0.status >= 200 && v1.value0.status < 300)) {\n return bind(liftEffect(Util[\"_curQuerystring\"]))(function (qs) {\n return bind(liftEffect(Util[\"_doc\"]))(function (doc) {\n return bind(liftEffect(Web_HTML_HTMLDocument.referrer(doc)))(function (ref) {\n return bind(liftEffect(Util[\"_loc\"]))(function (loc) {\n return bind(liftEffect(Web_HTML_Location.origin(loc)))(function (org) {\n var v2 = Util[\"_lookupQueryStringValue\"](qs)(\"next\");\n if (v2 instanceof Data_Maybe.Just && v2.value0 === \"closeWindow\") {\n return liftEffect(bindFlipped(Globals.closeWindow)(Web_HTML.window));\n };\n if (v2 instanceof Data_Maybe.Just && v2.value0 === \"back\") {\n return liftEffect((function () {\n var $100 = Data_Maybe.isJust(Data_String_CodeUnits.stripPrefix(org)(ref));\n if ($100) {\n return Web_HTML_Location.setHref(ref)(loc);\n };\n return Web_HTML_Location.setHref(org)(loc);\n })());\n };\n var $102 = edit_note.id === 0;\n if ($102) {\n return liftEffect(bindFlipped(Web_HTML_Location.setHref(Util.fromNullableStr(app.noteR)))(Util[\"_loc\"]));\n };\n return discard(assign(_note2)(edit_note))(function () {\n return assign(_edit1)(false);\n });\n });\n });\n });\n });\n });\n };\n if (v1 instanceof Data_Either.Right) {\n return discard(assign(_apiError1)(new Data_Maybe.Just(v1.value0.body)))(function () {\n return liftEffect(Effect_Console.log(v1.value0.body));\n });\n };\n throw new Error(\"Failed pattern match at Component.NNote (line 226, column 40 - line 249, column 36): \" + [ v1.constructor.name ]);\n });\n });\n });\n });\n };\n throw new Error(\"Failed pattern match at Component.NNote (line 189, column 3 - line 189, column 77): \" + [ v.constructor.name ]);\n };\n var render = function (v) {\n var toTextarea = function (input) {\n return Data_Array.drop(1)(foldMap(function (x) {\n return [ Halogen_HTML_Elements.br_, Halogen_HTML_Core.text(x) ];\n })(Data_String_Common.split(\"\\x0a\")(input)));\n };\n var mmoment = function (n) {\n return Globals.mmoment8601(n.created);\n };\n var renderNote = function (v1) {\n return Halogen_HTML_Elements.div([ Halogen_HTML_Properties.id(show(v.note.id)), Util.class_(\"note w-100 mw7 pa1 mb2\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"display\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"link f5 lh-title\") ])([ Halogen_HTML_Core.text((function () {\n var $108 = Data_String_Common[\"null\"](v.note.title);\n if ($108) {\n return \"[no title]\";\n };\n return v.note.title;\n })()) ]), Halogen_HTML_Elements.br_, (function () {\n if (v.note.isMarkdown) {\n return Halogen_HTML_Elements.div([ Util.class_(\"description mt1\") ])([ slot(_markdown)(Data_Unit.unit)(Component_Markdown.component)(v.note.text)(Data_Void.absurd) ]);\n };\n return Halogen_HTML_Elements.div([ Util.class_(\"description mt1 mid-gray\") ])(toTextarea(v.note.text));\n })(), Halogen_HTML_Elements.div([ Util.class_(\"link f7 dib gray w4\") ])([ Halogen_HTML_Elements.span([ Halogen_HTML_Properties.title(Data_Maybe.maybe(v.note.created)(Data_Tuple.snd)(mmoment(v.note))) ])([ Halogen_HTML_Core.text(Data_Maybe.maybe(\"\\xa0\")(Data_Tuple.fst)(mmoment(v.note))) ]), Halogen_HTML_Core.text(\" - \"), Halogen_HTML_Elements.span([ Util.class_(\"gray\") ])([ Halogen_HTML_Core.text((function () {\n if (v.note.shared) {\n return \"public\";\n };\n return \"private\";\n })()) ]) ]) ]), Util.whenH(app.dat.isowner)(function (v2) {\n return Halogen_HTML_Elements.div([ Util.class_(\"edit_links db mt3\") ])([ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n return new NEdit(true);\n }), Util.class_(\"edit light-silver hover-blue\") ])([ Halogen_HTML_Core.text(\"edit\\xa0\\xa0\") ]), Halogen_HTML_Elements.div([ Util.class_(\"delete_link di\") ])([ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n return new NDeleteAsk(true);\n }), Util.class_(\"delete light-silver hover-blue\" + guard(v.deleteAsk)(\" dn\")) ])([ Halogen_HTML_Core.text(\"delete\") ]), Halogen_HTML_Elements.span([ Util.class_(\"confirm red\" + guard(!v.deleteAsk)(\" dn\")) ])([ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n return new NDeleteAsk(false);\n }) ])([ Halogen_HTML_Core.text(\"cancel\\xa0/\\xa0\") ]), Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Halogen_HTML_Events.onClick(function (v3) {\n return NDestroy.value;\n }), Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"destroy\") ]) ]) ]) ]);\n }) ]);\n };\n var editField = function (f) {\n return function ($114) {\n return NEditField.create(f($114));\n };\n };\n var display_destroyed = function (v1) {\n return Halogen_HTML_Elements.p([ Util.class_(\"red\") ])([ Halogen_HTML_Core.text(\"you killed this note\") ]);\n };\n var alert_notification = function (alert_text) {\n return function (v1) {\n return Halogen_HTML_Elements.div([ Util.class_(\"alert alert-err\") ])([ Halogen_HTML_Core.text(alert_text) ]);\n };\n };\n var renderNote_edit = function (v1) {\n return Halogen_HTML_Elements.form([ Halogen_HTML_Events.onSubmit(NEditSubmit.create) ])([ Util.whenH(Data_Maybe.isJust(v.apiError))(alert_notification(Data_Maybe.fromMaybe(\"\")(v.apiError))), Halogen_HTML_Elements.p([ Util.class_(\"mt2 mb1\") ])([ Halogen_HTML_Core.text(\"title:\") ]), Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputText.value), Util.class_(\"title w-100 mb1 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"title\"), value(v.edit_note.title), Halogen_HTML_Events.onValueChange(editField(Etitle.create)), Halogen_HTML_Properties.autofocus(Data_String_Common[\"null\"](v.edit_note.title)) ]), Halogen_HTML_Elements.br_, Halogen_HTML_Elements.p([ Util.class_(\"mt2 mb1\") ])([ Halogen_HTML_Core.text(\"description:\") ]), Halogen_HTML_Elements.textarea([ Halogen_HTML_Properties.id(notetextid(v.edit_note)), Util.class_(\"description w-100 mb1 pt1 edit_form_input\"), Halogen_HTML_Properties.name(\"text\"), Halogen_HTML_Properties.rows(25), value(v.edit_note.text), Halogen_HTML_Events.onValueChange(editField(Etext.create)) ]), Halogen_HTML_Elements.div([ Util.class_(\"edit_form_checkboxes mb3\") ])([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"is-markdown pointer\"), Halogen_HTML_Properties.id(\"edit_ismarkdown\"), Halogen_HTML_Properties.name(\"ismarkdown\"), Halogen_HTML_Properties.checked(v.edit_note.isMarkdown), Halogen_HTML_Events.onChecked(editField(EisMarkdown.create)) ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"edit_ismarkdown\"), Util.class_(\"mr2\") ])([ Halogen_HTML_Core.text(\"use markdown?\") ]), Halogen_HTML_Elements.br_ ]), Halogen_HTML_Elements.div([ Util.class_(\"edit_form_checkboxes mb3\") ])([ Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputCheckbox.value), Util.class_(\"is-markdown pointer\"), Halogen_HTML_Properties.id(\"edit_shared\"), Halogen_HTML_Properties.name(\"shared\"), Halogen_HTML_Properties.checked(v.edit_note.shared), Halogen_HTML_Events.onChecked(editField(Eshared.create)) ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.label([ Halogen_HTML_Properties[\"for\"](\"edit_shared\"), Util.class_(\"mr2\") ])([ Halogen_HTML_Core.text(\"public?\") ]), Halogen_HTML_Elements.br_ ]), Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputSubmit.value), Util.class_(\"mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"), value(\"save\") ]), Halogen_HTML_Core.text(\" \"), Halogen_HTML_Elements.input([ type_1(DOM_HTML_Indexed_InputType.InputReset.value), Util.class_(\"pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"), value(\"cancel\"), Halogen_HTML_Events.onClick(function (v2) {\n return new NEdit(false);\n }) ]) ]);\n };\n return Util.ifElseH(v.destroyed)(display_destroyed)(Data_Function[\"const\"](Util.ifElseH(v.edit)(renderNote_edit)(renderNote)));\n };\n return Halogen_Component.mkComponent({\n initialState: Data_Function[\"const\"](mkState(st$prime)),\n render: render,\n \"eval\": Halogen_Component.mkEval({\n handleQuery: Halogen_Component.defaultEval.handleQuery,\n receive: Halogen_Component.defaultEval.receive,\n initialize: Halogen_Component.defaultEval.initialize,\n finalize: Halogen_Component.defaultEval.finalize,\n handleAction: handleAction\n })\n });\n};\nexport {\n NNop,\n NEditField,\n NEditSubmit,\n NEdit,\n NDeleteAsk,\n NDestroy,\n _note,\n _edit_note,\n _edit,\n _apiError,\n Etitle,\n Etext,\n EisMarkdown,\n Eshared,\n _markdown,\n nnote\n};\n", "// Generated by purs version 0.15.14\nimport * as App from \"../App/index.js\";\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Control_Monad_State_Class from \"../Control.Monad.State.Class/index.js\";\nimport * as DOM_HTML_Indexed_ButtonType from \"../DOM.HTML.Indexed.ButtonType/index.js\";\nimport * as Data_Array from \"../Data.Array/index.js\";\nimport * as Data_Eq from \"../Data.Eq/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Int from \"../Data.Int/index.js\";\nimport * as Data_Lens_Lens from \"../Data.Lens.Lens/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Monoid from \"../Data.Monoid/index.js\";\nimport * as Data_Number from \"../Data.Number/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Semigroup from \"../Data.Semigroup/index.js\";\nimport * as Data_Show from \"../Data.Show/index.js\";\nimport * as Data_String_Common from \"../Data.String.Common/index.js\";\nimport * as Data_Tuple from \"../Data.Tuple/index.js\";\nimport * as Data_Unfoldable from \"../Data.Unfoldable/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect_Aff_Class from \"../Effect.Aff.Class/index.js\";\nimport * as Foreign_Object from \"../Foreign.Object/index.js\";\nimport * as Globals from \"../Globals/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_HTML_Core from \"../Halogen.HTML.Core/index.js\";\nimport * as Halogen_HTML_Elements from \"../Halogen.HTML.Elements/index.js\";\nimport * as Halogen_HTML_Events from \"../Halogen.HTML.Events/index.js\";\nimport * as Halogen_HTML_Properties from \"../Halogen.HTML.Properties/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Model from \"../Model/index.js\";\nimport * as Util from \"../Util/index.js\";\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Halogen_Query_HalogenM.applicativeHalogenM);\nvar bind = /* #__PURE__ */ Control_Bind.bind(Halogen_Query_HalogenM.bindHalogenM);\nvar liftAff = /* #__PURE__ */ Effect_Aff_Class.liftAff(/* #__PURE__ */ Halogen_Query_HalogenM.monadAffHalogenM(Effect_Aff_Class.monadAffAff));\nvar modify_ = /* #__PURE__ */ Control_Monad_State_Class.modify_(Halogen_Query_HalogenM.monadStateHalogenM);\nvar gets = /* #__PURE__ */ Control_Monad_State_Class.gets(Halogen_Query_HalogenM.monadStateHalogenM);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit)(Halogen_Query_HalogenM.bindHalogenM);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Halogen_Query_HalogenM.functorHalogenM);\nvar eq = /* #__PURE__ */ Data_Eq.eq(Model.eqTagCloudModeF);\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar show = /* #__PURE__ */ Data_Show.show(Data_Show.showNumber);\nvar notElem = /* #__PURE__ */ Data_Array.notElem(Data_Eq.eqString);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Functor.functorArray);\nvar $$delete = /* #__PURE__ */ Data_Array[\"delete\"](Data_Eq.eqString);\nvar comparing = /* #__PURE__ */ Data_Ord.comparing(Data_Ord.ordString);\nvar toUnfoldable = /* #__PURE__ */ Foreign_Object.toUnfoldable(Data_Unfoldable.unfoldableArray);\nvar append1 = /* #__PURE__ */ Data_Semigroup.append(Data_Semigroup.semigroupArray);\nvar type_ = /* #__PURE__ */ Halogen_HTML_Properties.type_(Halogen_HTML_Core.isPropButtonType);\nvar guard = /* #__PURE__ */ Data_Monoid.guard(Data_Monoid.monoidString);\nvar minimum = /* #__PURE__ */ Data_Foldable.minimum(Data_Ord.ordInt)(Data_Foldable.foldableArray);\nvar maximum = /* #__PURE__ */ Data_Foldable.maximum(Data_Ord.ordInt)(Data_Foldable.foldableArray);\nvar TInitialize = /* #__PURE__ */ (function () {\n function TInitialize() {\n\n };\n TInitialize.value = new TInitialize();\n return TInitialize;\n})();\nvar TExpanded = /* #__PURE__ */ (function () {\n function TExpanded(value0) {\n this.value0 = value0;\n };\n TExpanded.create = function (value0) {\n return new TExpanded(value0);\n };\n return TExpanded;\n})();\nvar TChangeMode = /* #__PURE__ */ (function () {\n function TChangeMode(value0) {\n this.value0 = value0;\n };\n TChangeMode.create = function (value0) {\n return new TChangeMode(value0);\n };\n return TChangeMode;\n})();\nvar tagcloudcomponent = function (m$prime) {\n var rescale = function (f) {\n return function (v) {\n return function (n) {\n return function (m) {\n return function (l) {\n return function (h) {\n return (function () {\n var $57 = m - n < 1.0e-2;\n if ($57) {\n return 1.0;\n };\n return f(v - n) / f(m - n);\n })() * (h - l) + l;\n };\n };\n };\n };\n };\n };\n var mkState = function (m) {\n return {\n mode: m,\n tagcloud: Foreign_Object.empty\n };\n };\n var fetchTagCloud = function (mode$prime) {\n if (mode$prime instanceof Model.TagCloudModeNone) {\n return pure(Data_Unit.unit);\n };\n return bind(liftAff(App.getTagCloud(Model.tagCloudModeFromF(mode$prime))))(function (tagcloud) {\n return modify_(function (s) {\n var $59 = {};\n for (var $60 in s) {\n if ({}.hasOwnProperty.call(s, $60)) {\n $59[$60] = s[$60];\n };\n };\n $59.mode = mode$prime;\n $59.tagcloud = Data_Maybe.fromMaybe(Foreign_Object.empty)(tagcloud);\n return $59;\n });\n });\n };\n var handleAction = function (v) {\n if (v instanceof TInitialize) {\n return bind(gets(function (v1) {\n return v1.mode;\n }))(function (mode) {\n return fetchTagCloud(mode);\n });\n };\n if (v instanceof TExpanded) {\n return discard(modify_(function (s) {\n var $63 = {};\n for (var $64 in s) {\n if ({}.hasOwnProperty.call(s, $64)) {\n $63[$64] = s[$64];\n };\n };\n $63.mode = Model.setExpanded(s.mode)(v.value0);\n return $63;\n }))(function () {\n return bind(gets(function (v1) {\n return v1.mode;\n }))(function (mode) {\n return $$void(liftAff(App.updateTagCloudMode(Model.tagCloudModeFromF(mode))));\n });\n });\n };\n if (v instanceof TChangeMode) {\n return bind(gets(function (v1) {\n return v1.mode;\n }))(function (mode) {\n var $67 = eq(mode)(v.value0);\n if ($67) {\n return handleAction(new TExpanded(!Model.isExpanded(mode)));\n };\n return fetchTagCloud(Model.setExpanded(v.value0)(true));\n });\n };\n throw new Error(\"Failed pattern match at Component.TagCloud (line 161, column 3 - line 161, column 69): \" + [ v.constructor.name ]);\n };\n var app = Globals[\"app$prime\"](Data_Unit.unit);\n var linkToFilterTag = function (rest) {\n return Util.fromNullableStr(app.userR) + (function () {\n var $69 = Data_String_Common[\"null\"](rest);\n if ($69) {\n return \"\";\n };\n return \"/t:\" + rest;\n })();\n };\n var toSizedTag = function (curtags) {\n return function (n) {\n return function (m) {\n return function (k) {\n return function (v) {\n var opacity = rescale(function ($79) {\n return Data_Number.log((function (v1) {\n return 1.0 + v1;\n })($79));\n })(Data_Int.toNumber(v))(Data_Int.toNumber(n))(Data_Int.toNumber(m))(0.6)(1.0);\n var k_lower = Data_String_Common.toLower(k);\n var fontsize = rescale(identity)(Data_Int.toNumber(v))(Data_Int.toNumber(n))(Data_Int.toNumber(m))(100.0)(150.0);\n var style = Halogen_HTML_Properties.attr(\"style\")(\"font-size:\" + (show(fontsize) + (\"%\" + (\";opacity:\" + show(opacity)))));\n return [ Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterTag(Util.encodeTag(k))), Util.class_(\"link tag mr1\"), style ])([ Halogen_HTML_Core.text(k) ]), Util.whenH(!Data_Array[\"null\"](curtags))(function (v1) {\n var $70 = notElem(k_lower)(curtags);\n if ($70) {\n return Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterTag(Data_String_Common.joinWith(\"+\")(map(Util.encodeTag)(Data_Array.cons(k_lower)(curtags))))), Util.class_(\"link mr2 tag-include\") ])([ Halogen_HTML_Core.text(\"\\u2295\") ]);\n };\n return Halogen_HTML_Elements.a([ Halogen_HTML_Properties.href(linkToFilterTag(Data_String_Common.joinWith(\"+\")(map(Util.encodeTag)($$delete(k_lower)(curtags))))), Util.class_(\"link mr2 tag-exclude\") ])([ Halogen_HTML_Core.text(\"\\u2296\") ]);\n }) ];\n };\n };\n };\n };\n };\n var toArray = function (curtags) {\n return function (n) {\n return function (m) {\n var $80 = map(Data_Tuple.uncurry(toSizedTag(map(Data_String_Common.toLower)(curtags))(n)(m)));\n var $81 = Data_Array.sortBy(comparing(function ($83) {\n return Data_String_Common.toLower(Data_Tuple.fst($83));\n }));\n return function ($82) {\n return Data_Array.concat($80($81(toUnfoldable($82))));\n };\n };\n };\n };\n var render = function (v) {\n if (v.mode instanceof Model.TagCloudModeNone) {\n return Halogen_HTML_Elements.div([ Util.class_(\"tag_cloud\") ])([ ]);\n };\n var modetop = new Model.TagCloudModeTop(Model.isExpanded(v.mode), 200);\n var modelb5 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 5);\n var modelb20 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 20);\n var modelb2 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 2);\n var modelb10 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 10);\n var modelb1 = new Model.TagCloudModeLowerBound(Model.isExpanded(v.mode), 1);\n return Halogen_HTML_Elements.div([ Util.class_(\"tag_cloud mv3\") ])([ Halogen_HTML_Elements.div([ Util.class_(\"tag_cloud_header mb2\") ])(append1(Util.ifElseA(Model.isRelated(v.mode))(function (v1) {\n return [ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue mr1 b\"), Halogen_HTML_Events.onClick(function (v2) {\n return new TExpanded(!Model.isExpanded(v.mode));\n }) ])([ Halogen_HTML_Core.text(\"Related Tags\") ]) ];\n })(function (v1) {\n return [ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue mr1\" + guard(eq(v.mode)(modetop))(\" b\")), Halogen_HTML_Properties.title(\"show a cloud of your most-used tags\"), Halogen_HTML_Events.onClick(function (v2) {\n return new TChangeMode(modetop);\n }) ])([ Halogen_HTML_Core.text(\"Top Tags\") ]), Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue ml2 \" + guard(eq(v.mode)(modelb1))(\" b\")), Halogen_HTML_Properties.title(\"show all tags\"), Halogen_HTML_Events.onClick(function (v2) {\n return new TChangeMode(modelb1);\n }) ])([ Halogen_HTML_Core.text(\"all\") ]), Halogen_HTML_Core.text(\"\\u2027\"), Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue\" + guard(eq(v.mode)(modelb2))(\" b\")), Halogen_HTML_Properties.title(\"show tags with at least 2 bookmarks\"), Halogen_HTML_Events.onClick(function (v2) {\n return new TChangeMode(modelb2);\n }) ])([ Halogen_HTML_Core.text(\"2\") ]), Halogen_HTML_Core.text(\"\\u2027\"), Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue\" + guard(eq(v.mode)(modelb5))(\" b\")), Halogen_HTML_Properties.title(\"show tags with at least 5 bookmarks\"), Halogen_HTML_Events.onClick(function (v2) {\n return new TChangeMode(modelb5);\n }) ])([ Halogen_HTML_Core.text(\"5\") ]), Halogen_HTML_Core.text(\"\\u2027\"), Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue\" + guard(eq(v.mode)(modelb10))(\" b\")), Halogen_HTML_Properties.title(\"show tags with at least 10 bookmarks\"), Halogen_HTML_Events.onClick(function (v2) {\n return new TChangeMode(modelb10);\n }) ])([ Halogen_HTML_Core.text(\"10\") ]), Halogen_HTML_Core.text(\"\\u2027\"), Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 f7 link hover-blue\" + guard(eq(v.mode)(modelb20))(\" b\")), Halogen_HTML_Properties.title(\"show tags with at least 20 bookmarks\"), Halogen_HTML_Events.onClick(function (v2) {\n return new TChangeMode(modelb20);\n }) ])([ Halogen_HTML_Core.text(\"20\") ]) ];\n }))([ Halogen_HTML_Elements.button([ type_(DOM_HTML_Indexed_ButtonType.ButtonButton.value), Util.class_(\"pa1 ml2 f7 link silver hover-blue \"), Halogen_HTML_Events.onClick(function (v1) {\n return new TExpanded(!Model.isExpanded(v.mode));\n }) ])([ Halogen_HTML_Core.text((function () {\n var $73 = Model.isExpanded(v.mode);\n if ($73) {\n return \"hide\";\n };\n return \"show\";\n })()) ]) ])), Util.whenH(Model.isExpanded(v.mode))(function (v1) {\n var n = Data_Maybe.fromMaybe(1)(minimum(Foreign_Object.values(v.tagcloud)));\n var m = Data_Maybe.fromMaybe(1)(maximum(Foreign_Object.values(v.tagcloud)));\n return Halogen_HTML_Elements.div([ Util.class_(\"tag_cloud_body\") ])((function () {\n if (v.mode instanceof Model.TagCloudModeNone) {\n return [ ];\n };\n if (v.mode instanceof Model.TagCloudModeRelated) {\n return toArray(v.mode.value1)(n)(m)(v.tagcloud);\n };\n return toArray([ ])(n)(m)(v.tagcloud);\n })());\n }) ]);\n };\n return Halogen_Component.mkComponent({\n initialState: Data_Function[\"const\"](mkState(m$prime)),\n render: render,\n \"eval\": Halogen_Component.mkEval({\n handleQuery: Halogen_Component.defaultEval.handleQuery,\n receive: Halogen_Component.defaultEval.receive,\n finalize: Halogen_Component.defaultEval.finalize,\n handleAction: handleAction,\n initialize: new Data_Maybe.Just(TInitialize.value)\n })\n });\n};\nvar _mode = function (dictStrong) {\n return Data_Lens_Lens.lens(function (v) {\n return v.mode;\n })(function (v) {\n return function (v1) {\n return {\n tagcloud: v.tagcloud,\n mode: v1\n };\n };\n })(dictStrong);\n};\nexport {\n TInitialize,\n TExpanded,\n TChangeMode,\n _mode,\n tagcloudcomponent\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_Error_Class from \"../Control.Monad.Error.Class/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Exception from \"../Effect.Exception/index.js\";\nimport * as Web_DOM_ParentNode from \"../Web.DOM.ParentNode/index.js\";\nimport * as Web_Event_EventTarget from \"../Web.Event.EventTarget/index.js\";\nimport * as Web_HTML from \"../Web.HTML/index.js\";\nimport * as Web_HTML_Event_EventTypes from \"../Web.HTML.Event.EventTypes/index.js\";\nimport * as Web_HTML_HTMLDocument from \"../Web.HTML.HTMLDocument/index.js\";\nimport * as Web_HTML_HTMLDocument_ReadyState from \"../Web.HTML.HTMLDocument.ReadyState/index.js\";\nimport * as Web_HTML_HTMLElement from \"../Web.HTML.HTMLElement/index.js\";\nimport * as Web_HTML_Window from \"../Web.HTML.Window/index.js\";\nvar bind = /* #__PURE__ */ Control_Bind.bind(Effect_Aff.bindAff);\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(Effect_Aff.monadEffectAff);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Effect.bindEffect);\nvar composeKleisliFlipped = /* #__PURE__ */ Control_Bind.composeKleisliFlipped(Effect.bindEffect);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Effect_Aff.applicativeAff);\nvar bindFlipped1 = /* #__PURE__ */ Control_Bind.bindFlipped(Data_Maybe.bindMaybe);\nvar pure1 = /* #__PURE__ */ Control_Applicative.pure(Effect.applicativeEffect);\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit);\nvar throwError = /* #__PURE__ */ Control_Monad_Error_Class.throwError(Effect_Aff.monadThrowAff);\nvar selectElement = function (query) {\n return bind(liftEffect(bindFlipped(composeKleisliFlipped((function () {\n var $16 = Web_DOM_ParentNode.querySelector(query);\n return function ($17) {\n return $16(Web_HTML_HTMLDocument.toParentNode($17));\n };\n })())(Web_HTML_Window.document))(Web_HTML.window)))(function (mel) {\n return pure(bindFlipped1(Web_HTML_HTMLElement.fromElement)(mel));\n });\n};\nvar runHalogenAff = /* #__PURE__ */ Effect_Aff.runAff_(/* #__PURE__ */ Data_Either.either(Effect_Exception.throwException)(/* #__PURE__ */ Data_Function[\"const\"](/* #__PURE__ */ pure1(Data_Unit.unit))));\nvar awaitLoad = /* #__PURE__ */ Effect_Aff.makeAff(function (callback) {\n return function __do() {\n var rs = bindFlipped(Web_HTML_HTMLDocument.readyState)(bindFlipped(Web_HTML_Window.document)(Web_HTML.window))();\n if (rs instanceof Web_HTML_HTMLDocument_ReadyState.Loading) {\n var et = map(Web_HTML_Window.toEventTarget)(Web_HTML.window)();\n var listener = Web_Event_EventTarget.eventListener(function (v) {\n return callback(new Data_Either.Right(Data_Unit.unit));\n })();\n Web_Event_EventTarget.addEventListener(Web_HTML_Event_EventTypes.domcontentloaded)(listener)(false)(et)();\n return Effect_Aff.effectCanceler(Web_Event_EventTarget.removeEventListener(Web_HTML_Event_EventTypes.domcontentloaded)(listener)(false)(et));\n };\n callback(new Data_Either.Right(Data_Unit.unit))();\n return Effect_Aff.nonCanceler;\n };\n});\nvar awaitBody = /* #__PURE__ */ discard(Effect_Aff.bindAff)(awaitLoad)(function () {\n return bind(selectElement(\"body\"))(function (body) {\n return Data_Maybe.maybe(throwError(Effect_Exception.error(\"Could not find body\")))(pure)(body);\n });\n});\nexport {\n awaitLoad,\n awaitBody,\n selectElement,\n runHalogenAff\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Monad_Reader_Trans from \"../Control.Monad.Reader.Trans/index.js\";\nimport * as Control_Monad_Trans_Class from \"../Control.Monad.Trans.Class/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nvar lift = /* #__PURE__ */ Control_Monad_Trans_Class.lift(Control_Monad_Reader_Trans.monadTransReaderT);\nvar Completed = /* #__PURE__ */ (function () {\n function Completed(value0) {\n this.value0 = value0;\n };\n Completed.create = function (value0) {\n return new Completed(value0);\n };\n return Completed;\n})();\nvar Failed = /* #__PURE__ */ (function () {\n function Failed(value0) {\n this.value0 = value0;\n };\n Failed.create = function (value0) {\n return new Failed(value0);\n };\n return Failed;\n})();\nvar Killed = /* #__PURE__ */ (function () {\n function Killed(value0) {\n this.value0 = value0;\n };\n Killed.create = function (value0) {\n return new Killed(value0);\n };\n return Killed;\n})();\nvar uninterruptible = function (dict) {\n return dict.uninterruptible;\n};\nvar suspend = function (dict) {\n return dict.suspend;\n};\nvar never = function (dict) {\n return dict.never;\n};\nvar monadForkAff = {\n suspend: Effect_Aff.suspendAff,\n fork: Effect_Aff.forkAff,\n join: Effect_Aff.joinFiber,\n Monad0: function () {\n return Effect_Aff.monadAff;\n },\n Functor1: function () {\n return Effect_Aff.functorFiber;\n }\n};\nvar monadKillAff = {\n kill: Effect_Aff.killFiber,\n MonadFork0: function () {\n return monadForkAff;\n },\n MonadThrow1: function () {\n return Effect_Aff.monadThrowAff;\n }\n};\nvar monadBracketAff = {\n bracket: function (acquire) {\n return function (release) {\n return function (run) {\n return Effect_Aff.generalBracket(acquire)({\n completed: function ($44) {\n return release(Completed.create($44));\n },\n failed: function ($45) {\n return release(Failed.create($45));\n },\n killed: function ($46) {\n return release(Killed.create($46));\n }\n })(run);\n };\n };\n },\n uninterruptible: Effect_Aff.invincible,\n never: Effect_Aff.never,\n MonadKill0: function () {\n return monadKillAff;\n },\n MonadError1: function () {\n return Effect_Aff.monadErrorAff;\n }\n};\nvar kill = function (dict) {\n return dict.kill;\n};\nvar join = function (dict) {\n return dict.join;\n};\nvar fork = function (dict) {\n return dict.fork;\n};\nvar monadForkReaderT = function (dictMonadFork) {\n var suspend1 = suspend(dictMonadFork);\n var fork1 = fork(dictMonadFork);\n var Monad0 = dictMonadFork.Monad0();\n var monadReaderT = Control_Monad_Reader_Trans.monadReaderT(Monad0);\n var Functor1 = dictMonadFork.Functor1();\n return {\n suspend: function (v) {\n return function ($47) {\n return suspend1(v($47));\n };\n },\n fork: function (v) {\n return function ($48) {\n return fork1(v($48));\n };\n },\n join: (function () {\n var $49 = lift(Monad0);\n var $50 = join(dictMonadFork);\n return function ($51) {\n return $49($50($51));\n };\n })(),\n Monad0: function () {\n return monadReaderT;\n },\n Functor1: function () {\n return Functor1;\n }\n };\n};\nvar monadKillReaderT = function (dictMonadKill) {\n var MonadThrow1 = dictMonadKill.MonadThrow1();\n var lift1 = lift(MonadThrow1.Monad0());\n var kill1 = kill(dictMonadKill);\n var monadForkReaderT1 = monadForkReaderT(dictMonadKill.MonadFork0());\n var monadThrowReaderT = Control_Monad_Reader_Trans.monadThrowReaderT(MonadThrow1);\n return {\n kill: function (e) {\n var $52 = kill1(e);\n return function ($53) {\n return lift1($52($53));\n };\n },\n MonadFork0: function () {\n return monadForkReaderT1;\n },\n MonadThrow1: function () {\n return monadThrowReaderT;\n }\n };\n};\nvar bracket = function (dict) {\n return dict.bracket;\n};\nvar monadBracketReaderT = function (dictMonadBracket) {\n var bracket1 = bracket(dictMonadBracket);\n var uninterruptible1 = uninterruptible(dictMonadBracket);\n var MonadError1 = dictMonadBracket.MonadError1();\n var monadKillReaderT1 = monadKillReaderT(dictMonadBracket.MonadKill0());\n var monadErrorReaderT = Control_Monad_Reader_Trans.monadErrorReaderT(MonadError1);\n return {\n bracket: function (v) {\n return function (release) {\n return function (run) {\n return function (r) {\n return bracket1(v(r))(function (c) {\n return function (a) {\n return Control_Monad_Reader_Trans.runReaderT(release(c)(a))(r);\n };\n })(function (a) {\n return Control_Monad_Reader_Trans.runReaderT(run(a))(r);\n });\n };\n };\n };\n },\n uninterruptible: function (k) {\n return function (r) {\n return uninterruptible1(Control_Monad_Reader_Trans.runReaderT(k)(r));\n };\n },\n never: lift((MonadError1.MonadThrow0()).Monad0())(never(dictMonadBracket)),\n MonadKill0: function () {\n return monadKillReaderT1;\n },\n MonadError1: function () {\n return monadErrorReaderT;\n }\n };\n};\nexport {\n bracket,\n fork,\n join,\n kill,\n never,\n suspend,\n uninterruptible,\n Completed,\n Failed,\n Killed,\n monadForkAff,\n monadForkReaderT,\n monadKillAff,\n monadKillReaderT,\n monadBracketAff,\n monadBracketReaderT\n};\n", "// Generated by purs version 0.15.14\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Map_Internal from \"../Data.Map.Internal/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Effect_Ref from \"../Effect.Ref/index.js\";\nimport * as Halogen_Data_Slot from \"../Halogen.Data.Slot/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nvar DriverStateRef = function (x) {\n return x;\n};\nvar DriverState = function (x) {\n return x;\n};\nvar unRenderStateX = Unsafe_Coerce.unsafeCoerce;\nvar unDriverStateX = Unsafe_Coerce.unsafeCoerce;\nvar renderStateX_ = function (dictApplicative) {\n var traverse_ = Data_Foldable.traverse_(dictApplicative)(Data_Foldable.foldableMaybe);\n return function (f) {\n return unDriverStateX(function (st) {\n return traverse_(f)(st.rendering);\n });\n };\n};\nvar mkRenderStateX = Unsafe_Coerce.unsafeCoerce;\nvar renderStateX = function (dictFunctor) {\n return function (f) {\n return unDriverStateX(function (st) {\n return mkRenderStateX(f(st.rendering));\n });\n };\n};\nvar mkDriverStateXRef = Unsafe_Coerce.unsafeCoerce;\nvar mapDriverState = function (f) {\n return function (v) {\n return f(v);\n };\n};\nvar initDriverState = function (component) {\n return function (input) {\n return function (handler) {\n return function (lchs) {\n return function __do() {\n var selfRef = Effect_Ref[\"new\"]({})();\n var childrenIn = Effect_Ref[\"new\"](Halogen_Data_Slot.empty)();\n var childrenOut = Effect_Ref[\"new\"](Halogen_Data_Slot.empty)();\n var handlerRef = Effect_Ref[\"new\"](handler)();\n var pendingQueries = Effect_Ref[\"new\"](new Data_Maybe.Just(Data_List_Types.Nil.value))();\n var pendingOuts = Effect_Ref[\"new\"](new Data_Maybe.Just(Data_List_Types.Nil.value))();\n var pendingHandlers = Effect_Ref[\"new\"](Data_Maybe.Nothing.value)();\n var fresh = Effect_Ref[\"new\"](1)();\n var subscriptions = Effect_Ref[\"new\"](new Data_Maybe.Just(Data_Map_Internal.empty))();\n var forks = Effect_Ref[\"new\"](Data_Map_Internal.empty)();\n var ds = {\n component: component,\n state: component.initialState(input),\n refs: Data_Map_Internal.empty,\n children: Halogen_Data_Slot.empty,\n childrenIn: childrenIn,\n childrenOut: childrenOut,\n selfRef: selfRef,\n handlerRef: handlerRef,\n pendingQueries: pendingQueries,\n pendingOuts: pendingOuts,\n pendingHandlers: pendingHandlers,\n rendering: Data_Maybe.Nothing.value,\n fresh: fresh,\n subscriptions: subscriptions,\n forks: forks,\n lifecycleHandlers: lchs\n };\n Effect_Ref.write(ds)(selfRef)();\n return mkDriverStateXRef(selfRef);\n };\n };\n };\n };\n};\nexport {\n DriverState,\n mapDriverState,\n DriverStateRef,\n unDriverStateX,\n mkDriverStateXRef,\n renderStateX,\n renderStateX_,\n unRenderStateX,\n initDriverState\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Applicative_Free from \"../Control.Applicative.Free/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad from \"../Control.Monad/index.js\";\nimport * as Control_Monad_Fork_Class from \"../Control.Monad.Fork.Class/index.js\";\nimport * as Control_Monad_Free from \"../Control.Monad.Free/index.js\";\nimport * as Control_Parallel from \"../Control.Parallel/index.js\";\nimport * as Control_Parallel_Class from \"../Control.Parallel.Class/index.js\";\nimport * as Data_Boolean from \"../Data.Boolean/index.js\";\nimport * as Data_Coyoneda from \"../Data.Coyoneda/index.js\";\nimport * as Data_Either from \"../Data.Either/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Map_Internal from \"../Data.Map.Internal/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Ord from \"../Data.Ord/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Exception from \"../Effect.Exception/index.js\";\nimport * as Effect_Ref from \"../Effect.Ref/index.js\";\nimport * as Halogen_Aff_Driver_State from \"../Halogen.Aff.Driver.State/index.js\";\nimport * as Halogen_Query_ChildQuery from \"../Halogen.Query.ChildQuery/index.js\";\nimport * as Halogen_Query_HalogenM from \"../Halogen.Query.HalogenM/index.js\";\nimport * as Halogen_Query_HalogenQ from \"../Halogen.Query.HalogenQ/index.js\";\nimport * as Halogen_Query_Input from \"../Halogen.Query.Input/index.js\";\nimport * as Halogen_Subscription from \"../Halogen.Subscription/index.js\";\nimport * as Unsafe_Reference from \"../Unsafe.Reference/index.js\";\nvar traverse_ = /* #__PURE__ */ Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Data_Maybe.bindMaybe);\nvar lookup = /* #__PURE__ */ Data_Map_Internal.lookup(Halogen_Query_HalogenM.ordSubscriptionId);\nvar bind1 = /* #__PURE__ */ Control_Bind.bind(Effect_Aff.bindAff);\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(Effect_Aff.monadEffectAff);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit);\nvar discard1 = /* #__PURE__ */ discard(Effect_Aff.bindAff);\nvar traverse_1 = /* #__PURE__ */ Data_Foldable.traverse_(Effect_Aff.applicativeAff);\nvar traverse_2 = /* #__PURE__ */ traverse_1(Data_List_Types.foldableList);\nvar fork = /* #__PURE__ */ Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff);\nvar parSequence_ = /* #__PURE__ */ Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Effect_Aff.applicativeParAff)(Data_List_Types.foldableList);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Effect_Aff.applicativeAff);\nvar map = /* #__PURE__ */ Data_Functor.map(Data_Coyoneda.functorCoyoneda);\nvar parallel = /* #__PURE__ */ Control_Parallel_Class.parallel(Effect_Aff.parallelAff);\nvar map1 = /* #__PURE__ */ Data_Functor.map(Effect_Aff.functorAff);\nvar sequential = /* #__PURE__ */ Control_Parallel_Class.sequential(Effect_Aff.parallelAff);\nvar map2 = /* #__PURE__ */ Data_Functor.map(Data_Maybe.functorMaybe);\nvar insert = /* #__PURE__ */ Data_Map_Internal.insert(Halogen_Query_HalogenM.ordSubscriptionId);\nvar retractFreeAp = /* #__PURE__ */ Control_Applicative_Free.retractFreeAp(Effect_Aff.applicativeParAff);\nvar $$delete = /* #__PURE__ */ Data_Map_Internal[\"delete\"](Halogen_Query_HalogenM.ordForkId);\nvar unlessM = /* #__PURE__ */ Control_Monad.unlessM(Effect.monadEffect);\nvar insert1 = /* #__PURE__ */ Data_Map_Internal.insert(Halogen_Query_HalogenM.ordForkId);\nvar traverse_3 = /* #__PURE__ */ traverse_1(Data_Foldable.foldableMaybe);\nvar lookup1 = /* #__PURE__ */ Data_Map_Internal.lookup(Halogen_Query_HalogenM.ordForkId);\nvar lookup2 = /* #__PURE__ */ Data_Map_Internal.lookup(Data_Ord.ordString);\nvar foldFree = /* #__PURE__ */ Control_Monad_Free.foldFree(Effect_Aff.monadRecAff);\nvar alter = /* #__PURE__ */ Data_Map_Internal.alter(Data_Ord.ordString);\nvar unsubscribe = function (sid) {\n return function (ref) {\n return function __do() {\n var v = Effect_Ref.read(ref)();\n var subs = Effect_Ref.read(v.subscriptions)();\n return traverse_(Halogen_Subscription.unsubscribe)(bindFlipped(lookup(sid))(subs))();\n };\n };\n};\nvar queueOrRun = function (ref) {\n return function (au) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v) {\n if (v instanceof Data_Maybe.Nothing) {\n return au;\n };\n if (v instanceof Data_Maybe.Just) {\n return liftEffect(Effect_Ref.write(new Data_Maybe.Just(new Data_List_Types.Cons(au, v.value0)))(ref));\n };\n throw new Error(\"Failed pattern match at Halogen.Aff.Driver.Eval (line 188, column 33 - line 190, column 57): \" + [ v.constructor.name ]);\n });\n };\n};\nvar handleLifecycle = function (lchs) {\n return function (f) {\n return discard1(liftEffect(Effect_Ref.write({\n initializers: Data_List_Types.Nil.value,\n finalizers: Data_List_Types.Nil.value\n })(lchs)))(function () {\n return bind1(liftEffect(f))(function (result) {\n return bind1(liftEffect(Effect_Ref.read(lchs)))(function (v) {\n return discard1(traverse_2(fork)(v.finalizers))(function () {\n return discard1(parSequence_(v.initializers))(function () {\n return pure(result);\n });\n });\n });\n });\n });\n };\n};\nvar handleAff = /* #__PURE__ */ Effect_Aff.runAff_(/* #__PURE__ */ Data_Either.either(Effect_Exception.throwException)(/* #__PURE__ */ Data_Function[\"const\"](/* #__PURE__ */ Control_Applicative.pure(Effect.applicativeEffect)(Data_Unit.unit))));\nvar fresh = function (f) {\n return function (ref) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v) {\n return liftEffect(Effect_Ref[\"modify$prime\"](function (i) {\n return {\n state: i + 1 | 0,\n value: f(i)\n };\n })(v.fresh));\n });\n };\n};\nvar evalQ = function (render) {\n return function (ref) {\n return function (q) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v) {\n return evalM(render)(ref)(v[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Query(map(Data_Maybe.Just.create)(Data_Coyoneda.liftCoyoneda(q)), Data_Function[\"const\"](Data_Maybe.Nothing.value))));\n });\n };\n };\n};\nvar evalM = function (render) {\n return function (initRef) {\n return function (v) {\n var evalChildQuery = function (ref) {\n return function (cqb) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v1) {\n return Halogen_Query_ChildQuery.unChildQueryBox(function (v2) {\n var evalChild = function (v3) {\n return parallel(bind1(liftEffect(Effect_Ref.read(v3)))(function (dsx) {\n return Halogen_Aff_Driver_State.unDriverStateX(function (ds) {\n return evalQ(render)(ds.selfRef)(v2.value1);\n })(dsx);\n }));\n };\n return map1(v2.value2)(sequential(v2.value0(Effect_Aff.applicativeParAff)(evalChild)(v1.children)));\n })(cqb);\n });\n };\n };\n var go = function (ref) {\n return function (v1) {\n if (v1 instanceof Halogen_Query_HalogenM.State) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v2) {\n var v3 = v1.value0(v2.state);\n if (Unsafe_Reference.unsafeRefEq(v2.state)(v3.value1)) {\n return pure(v3.value0);\n };\n if (Data_Boolean.otherwise) {\n return discard1(liftEffect(Effect_Ref.write({\n component: v2.component,\n refs: v2.refs,\n children: v2.children,\n childrenIn: v2.childrenIn,\n childrenOut: v2.childrenOut,\n selfRef: v2.selfRef,\n handlerRef: v2.handlerRef,\n pendingQueries: v2.pendingQueries,\n pendingOuts: v2.pendingOuts,\n pendingHandlers: v2.pendingHandlers,\n rendering: v2.rendering,\n fresh: v2.fresh,\n subscriptions: v2.subscriptions,\n forks: v2.forks,\n lifecycleHandlers: v2.lifecycleHandlers,\n state: v3.value1\n })(ref)))(function () {\n return discard1(handleLifecycle(v2.lifecycleHandlers)(render(v2.lifecycleHandlers)(ref)))(function () {\n return pure(v3.value0);\n });\n });\n };\n throw new Error(\"Failed pattern match at Halogen.Aff.Driver.Eval (line 86, column 7 - line 92, column 21): \" + [ v3.constructor.name ]);\n });\n };\n if (v1 instanceof Halogen_Query_HalogenM.Subscribe) {\n return bind1(fresh(Halogen_Query_HalogenM.SubscriptionId)(ref))(function (sid) {\n return bind1(liftEffect(Halogen_Subscription.subscribe(v1.value0(sid))(function (act) {\n return handleAff(evalF(render)(ref)(new Halogen_Query_Input.Action(act)));\n })))(function (finalize) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v2) {\n return discard1(liftEffect(Effect_Ref.modify_(map2(insert(sid)(finalize)))(v2.subscriptions)))(function () {\n return pure(v1.value1(sid));\n });\n });\n });\n });\n };\n if (v1 instanceof Halogen_Query_HalogenM.Unsubscribe) {\n return discard1(liftEffect(unsubscribe(v1.value0)(ref)))(function () {\n return pure(v1.value1);\n });\n };\n if (v1 instanceof Halogen_Query_HalogenM.Lift) {\n return v1.value0;\n };\n if (v1 instanceof Halogen_Query_HalogenM.ChildQuery) {\n return evalChildQuery(ref)(v1.value0);\n };\n if (v1 instanceof Halogen_Query_HalogenM.Raise) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v2) {\n return bind1(liftEffect(Effect_Ref.read(v2.handlerRef)))(function (handler) {\n return discard1(queueOrRun(v2.pendingOuts)(handler(v1.value0)))(function () {\n return pure(v1.value1);\n });\n });\n });\n };\n if (v1 instanceof Halogen_Query_HalogenM.Par) {\n return sequential(retractFreeAp(Control_Applicative_Free.hoistFreeAp((function () {\n var $119 = evalM(render)(ref);\n return function ($120) {\n return parallel($119($120));\n };\n })())(v1.value0)));\n };\n if (v1 instanceof Halogen_Query_HalogenM.Fork) {\n return bind1(fresh(Halogen_Query_HalogenM.ForkId)(ref))(function (fid) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v2) {\n return bind1(liftEffect(Effect_Ref[\"new\"](false)))(function (doneRef) {\n return bind1(fork(Effect_Aff[\"finally\"](liftEffect(function __do() {\n Effect_Ref.modify_($$delete(fid))(v2.forks)();\n return Effect_Ref.write(true)(doneRef)();\n }))(evalM(render)(ref)(v1.value0))))(function (fiber) {\n return discard1(liftEffect(unlessM(Effect_Ref.read(doneRef))(Effect_Ref.modify_(insert1(fid)(fiber))(v2.forks))))(function () {\n return pure(v1.value1(fid));\n });\n });\n });\n });\n });\n };\n if (v1 instanceof Halogen_Query_HalogenM.Join) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v2) {\n return bind1(liftEffect(Effect_Ref.read(v2.forks)))(function (forkMap) {\n return discard1(traverse_3(Effect_Aff.joinFiber)(lookup1(v1.value0)(forkMap)))(function () {\n return pure(v1.value1);\n });\n });\n });\n };\n if (v1 instanceof Halogen_Query_HalogenM.Kill) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v2) {\n return bind1(liftEffect(Effect_Ref.read(v2.forks)))(function (forkMap) {\n return discard1(traverse_3(Effect_Aff.killFiber(Effect_Exception.error(\"Cancelled\")))(lookup1(v1.value0)(forkMap)))(function () {\n return pure(v1.value1);\n });\n });\n });\n };\n if (v1 instanceof Halogen_Query_HalogenM.GetRef) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v2) {\n return pure(v1.value1(lookup2(v1.value0)(v2.refs)));\n });\n };\n throw new Error(\"Failed pattern match at Halogen.Aff.Driver.Eval (line 83, column 12 - line 139, column 33): \" + [ v1.constructor.name ]);\n };\n };\n return foldFree(go(initRef))(v);\n };\n };\n};\nvar evalF = function (render) {\n return function (ref) {\n return function (v) {\n if (v instanceof Halogen_Query_Input.RefUpdate) {\n return liftEffect(Data_Function.flip(Effect_Ref.modify_)(ref)(Halogen_Aff_Driver_State.mapDriverState(function (st) {\n return {\n component: st.component,\n state: st.state,\n children: st.children,\n childrenIn: st.childrenIn,\n childrenOut: st.childrenOut,\n selfRef: st.selfRef,\n handlerRef: st.handlerRef,\n pendingQueries: st.pendingQueries,\n pendingOuts: st.pendingOuts,\n pendingHandlers: st.pendingHandlers,\n rendering: st.rendering,\n fresh: st.fresh,\n subscriptions: st.subscriptions,\n forks: st.forks,\n lifecycleHandlers: st.lifecycleHandlers,\n refs: alter(Data_Function[\"const\"](v.value1))(v.value0)(st.refs)\n };\n })));\n };\n if (v instanceof Halogen_Query_Input.Action) {\n return bind1(liftEffect(Effect_Ref.read(ref)))(function (v1) {\n return evalM(render)(ref)(v1[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Action(v.value0, Data_Unit.unit)));\n });\n };\n throw new Error(\"Failed pattern match at Halogen.Aff.Driver.Eval (line 52, column 20 - line 58, column 62): \" + [ v.constructor.name ]);\n };\n };\n};\nexport {\n evalF,\n evalQ,\n evalM,\n handleLifecycle,\n queueOrRun,\n handleAff\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Monad_Fork_Class from \"../Control.Monad.Fork.Class/index.js\";\nimport * as Control_Monad_Rec_Class from \"../Control.Monad.Rec.Class/index.js\";\nimport * as Control_Parallel from \"../Control.Parallel/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Function from \"../Data.Function/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_List from \"../Data.List/index.js\";\nimport * as Data_List_Types from \"../Data.List.Types/index.js\";\nimport * as Data_Map_Internal from \"../Data.Map.Internal/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Console from \"../Effect.Console/index.js\";\nimport * as Effect_Exception from \"../Effect.Exception/index.js\";\nimport * as Effect_Ref from \"../Effect.Ref/index.js\";\nimport * as Halogen from \"../Halogen/index.js\";\nimport * as Halogen_Aff_Driver_Eval from \"../Halogen.Aff.Driver.Eval/index.js\";\nimport * as Halogen_Aff_Driver_State from \"../Halogen.Aff.Driver.State/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_Data_Slot from \"../Halogen.Data.Slot/index.js\";\nimport * as Halogen_Query_HalogenQ from \"../Halogen.Query.HalogenQ/index.js\";\nimport * as Halogen_Query_Input from \"../Halogen.Query.Input/index.js\";\nimport * as Halogen_Subscription from \"../Halogen.Subscription/index.js\";\nvar bind = /* #__PURE__ */ Control_Bind.bind(Effect.bindEffect);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit);\nvar for_ = /* #__PURE__ */ Data_Foldable.for_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe);\nvar traverse_ = /* #__PURE__ */ Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_List_Types.foldableList);\nvar fork = /* #__PURE__ */ Control_Monad_Fork_Class.fork(Control_Monad_Fork_Class.monadForkAff);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Effect.bindEffect);\nvar traverse_1 = /* #__PURE__ */ Data_Foldable.traverse_(Effect.applicativeEffect);\nvar traverse_2 = /* #__PURE__ */ traverse_1(Data_Foldable.foldableMaybe);\nvar traverse_3 = /* #__PURE__ */ traverse_1(Data_Map_Internal.foldableMap);\nvar discard2 = /* #__PURE__ */ discard(Effect_Aff.bindAff);\nvar parSequence_ = /* #__PURE__ */ Control_Parallel.parSequence_(Effect_Aff.parallelAff)(Effect_Aff.applicativeParAff)(Data_List_Types.foldableList);\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(Effect_Aff.monadEffectAff);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Effect.applicativeEffect);\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar pure1 = /* #__PURE__ */ Control_Applicative.pure(Effect_Aff.applicativeAff);\nvar when = /* #__PURE__ */ Control_Applicative.when(Effect.applicativeEffect);\nvar renderStateX = /* #__PURE__ */ Halogen_Aff_Driver_State.renderStateX(Effect.functorEffect);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Effect_Aff.functorAff);\nvar foreachSlot = /* #__PURE__ */ Halogen_Data_Slot.foreachSlot(Effect.applicativeEffect);\nvar renderStateX_ = /* #__PURE__ */ Halogen_Aff_Driver_State.renderStateX_(Effect.applicativeEffect);\nvar tailRecM = /* #__PURE__ */ Control_Monad_Rec_Class.tailRecM(Control_Monad_Rec_Class.monadRecEffect);\nvar voidLeft = /* #__PURE__ */ Data_Functor.voidLeft(Effect.functorEffect);\nvar bind1 = /* #__PURE__ */ Control_Bind.bind(Effect_Aff.bindAff);\nvar liftEffect1 = /* #__PURE__ */ Effect_Class.liftEffect(Effect_Class.monadEffectEffect);\nvar newLifecycleHandlers = /* #__PURE__ */ (function () {\n return Effect_Ref[\"new\"]({\n initializers: Data_List_Types.Nil.value,\n finalizers: Data_List_Types.Nil.value\n });\n})();\nvar handlePending = function (ref) {\n return function __do() {\n var queue = Effect_Ref.read(ref)();\n Effect_Ref.write(Data_Maybe.Nothing.value)(ref)();\n return for_(queue)((function () {\n var $59 = traverse_(fork);\n return function ($60) {\n return Halogen_Aff_Driver_Eval.handleAff($59(Data_List.reverse($60)));\n };\n })())();\n };\n};\nvar cleanupSubscriptionsAndForks = function (v) {\n return function __do() {\n bindFlipped(traverse_2(traverse_3(Halogen_Subscription.unsubscribe)))(Effect_Ref.read(v.subscriptions))();\n Effect_Ref.write(Data_Maybe.Nothing.value)(v.subscriptions)();\n bindFlipped(traverse_3((function () {\n var $61 = Effect_Aff.killFiber(Effect_Exception.error(\"finalized\"));\n return function ($62) {\n return Halogen_Aff_Driver_Eval.handleAff($61($62));\n };\n })()))(Effect_Ref.read(v.forks))();\n return Effect_Ref.write(Data_Map_Internal.empty)(v.forks)();\n };\n};\nvar runUI = function (renderSpec) {\n return function (component) {\n return function (i) {\n var squashChildInitializers = function (lchs) {\n return function (preInits) {\n return Halogen_Aff_Driver_State.unDriverStateX(function (st) {\n var parentInitializer = Halogen_Aff_Driver_Eval.evalM(render)(st.selfRef)(st[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Initialize(Data_Unit.unit)));\n return Effect_Ref.modify_(function (handlers) {\n return {\n initializers: new Data_List_Types.Cons(discard2(parSequence_(Data_List.reverse(handlers.initializers)))(function () {\n return discard2(parentInitializer)(function () {\n return liftEffect(function __do() {\n handlePending(st.pendingQueries)();\n return handlePending(st.pendingOuts)();\n });\n });\n }), preInits),\n finalizers: handlers.finalizers\n };\n })(lchs);\n });\n };\n };\n var runComponent = function (lchs) {\n return function (handler) {\n return function (j) {\n return Halogen_Component.unComponent(function (c) {\n return function __do() {\n var lchs$prime = newLifecycleHandlers();\n var $$var = Halogen_Aff_Driver_State.initDriverState(c)(j)(handler)(lchs$prime)();\n var pre = Effect_Ref.read(lchs)();\n Effect_Ref.write({\n initializers: Data_List_Types.Nil.value,\n finalizers: pre.finalizers\n })(lchs)();\n bindFlipped(Halogen_Aff_Driver_State.unDriverStateX((function () {\n var $63 = render(lchs);\n return function ($64) {\n return $63((function (v) {\n return v.selfRef;\n })($64));\n };\n })()))(Effect_Ref.read($$var))();\n bindFlipped(squashChildInitializers(lchs)(pre.initializers))(Effect_Ref.read($$var))();\n return $$var;\n };\n });\n };\n };\n };\n var renderChild = function (lchs) {\n return function (handler) {\n return function (childrenInRef) {\n return function (childrenOutRef) {\n return Halogen_Component.unComponentSlot(function (slot) {\n return function __do() {\n var childrenIn = map(slot.pop)(Effect_Ref.read(childrenInRef))();\n var $$var = (function () {\n if (childrenIn instanceof Data_Maybe.Just) {\n Effect_Ref.write(childrenIn.value0.value1)(childrenInRef)();\n var dsx = Effect_Ref.read(childrenIn.value0.value0)();\n Halogen_Aff_Driver_State.unDriverStateX(function (st) {\n return function __do() {\n Data_Function.flip(Effect_Ref.write)(st.handlerRef)((function () {\n var $65 = Data_Maybe.maybe(pure1(Data_Unit.unit))(handler);\n return function ($66) {\n return $65(slot.output($66));\n };\n })())();\n return Halogen_Aff_Driver_Eval.handleAff(Halogen_Aff_Driver_Eval.evalM(render)(st.selfRef)(st[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Receive(slot.input, Data_Unit.unit))))();\n };\n })(dsx)();\n return childrenIn.value0.value0;\n };\n if (childrenIn instanceof Data_Maybe.Nothing) {\n return runComponent(lchs)((function () {\n var $67 = Data_Maybe.maybe(pure1(Data_Unit.unit))(handler);\n return function ($68) {\n return $67(slot.output($68));\n };\n })())(slot.input)(slot.component)();\n };\n throw new Error(\"Failed pattern match at Halogen.Aff.Driver (line 213, column 14 - line 222, column 98): \" + [ childrenIn.constructor.name ]);\n })();\n var isDuplicate = map(function ($69) {\n return Data_Maybe.isJust(slot.get($69));\n })(Effect_Ref.read(childrenOutRef))();\n when(isDuplicate)(Effect_Console.warn(\"Halogen: Duplicate slot address was detected during rendering, unexpected results may occur\"))();\n Effect_Ref.modify_(slot.set($$var))(childrenOutRef)();\n return bind(Effect_Ref.read($$var))(renderStateX(function (v) {\n if (v instanceof Data_Maybe.Nothing) {\n return Effect_Exception[\"throw\"](\"Halogen internal error: child was not initialized in renderChild\");\n };\n if (v instanceof Data_Maybe.Just) {\n return pure(renderSpec.renderChild(v.value0));\n };\n throw new Error(\"Failed pattern match at Halogen.Aff.Driver (line 227, column 37 - line 229, column 50): \" + [ v.constructor.name ]);\n }))();\n };\n });\n };\n };\n };\n };\n var render = function (lchs) {\n return function ($$var) {\n return function __do() {\n var v = Effect_Ref.read($$var)();\n var shouldProcessHandlers = map(Data_Maybe.isNothing)(Effect_Ref.read(v.pendingHandlers))();\n when(shouldProcessHandlers)(Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(v.pendingHandlers))();\n Effect_Ref.write(Halogen_Data_Slot.empty)(v.childrenOut)();\n Effect_Ref.write(v.children)(v.childrenIn)();\n var handler = (function () {\n var $70 = Halogen_Aff_Driver_Eval.queueOrRun(v.pendingHandlers);\n var $71 = Halogen_Aff_Driver_Eval.evalF(render)(v.selfRef);\n return function ($72) {\n return $70($$void($71($72)));\n };\n })();\n var childHandler = (function () {\n var $73 = Halogen_Aff_Driver_Eval.queueOrRun(v.pendingQueries);\n return function ($74) {\n return $73(handler(Halogen_Query_Input.Action.create($74)));\n };\n })();\n var rendering = renderSpec.render(function ($75) {\n return Halogen_Aff_Driver_Eval.handleAff(handler($75));\n })(renderChild(lchs)(childHandler)(v.childrenIn)(v.childrenOut))(v.component.render(v.state))(v.rendering)();\n var children = Effect_Ref.read(v.childrenOut)();\n var childrenIn = Effect_Ref.read(v.childrenIn)();\n foreachSlot(childrenIn)(function (v1) {\n return function __do() {\n var childDS = Effect_Ref.read(v1)();\n renderStateX_(renderSpec.removeChild)(childDS)();\n return finalize(lchs)(childDS)();\n };\n })();\n Data_Function.flip(Effect_Ref.modify_)(v.selfRef)(Halogen_Aff_Driver_State.mapDriverState(function (ds$prime) {\n return {\n component: ds$prime.component,\n state: ds$prime.state,\n refs: ds$prime.refs,\n childrenIn: ds$prime.childrenIn,\n childrenOut: ds$prime.childrenOut,\n selfRef: ds$prime.selfRef,\n handlerRef: ds$prime.handlerRef,\n pendingQueries: ds$prime.pendingQueries,\n pendingOuts: ds$prime.pendingOuts,\n pendingHandlers: ds$prime.pendingHandlers,\n fresh: ds$prime.fresh,\n subscriptions: ds$prime.subscriptions,\n forks: ds$prime.forks,\n lifecycleHandlers: ds$prime.lifecycleHandlers,\n rendering: new Data_Maybe.Just(rendering),\n children: children\n };\n }))();\n return when(shouldProcessHandlers)(Data_Function.flip(tailRecM)(Data_Unit.unit)(function (v1) {\n return function __do() {\n var handlers = Effect_Ref.read(v.pendingHandlers)();\n Effect_Ref.write(new Data_Maybe.Just(Data_List_Types.Nil.value))(v.pendingHandlers)();\n traverse_2((function () {\n var $76 = traverse_(fork);\n return function ($77) {\n return Halogen_Aff_Driver_Eval.handleAff($76(Data_List.reverse($77)));\n };\n })())(handlers)();\n var mmore = Effect_Ref.read(v.pendingHandlers)();\n var $52 = Data_Maybe.maybe(false)(Data_List[\"null\"])(mmore);\n if ($52) {\n return voidLeft(Effect_Ref.write(Data_Maybe.Nothing.value)(v.pendingHandlers))(new Control_Monad_Rec_Class.Done(Data_Unit.unit))();\n };\n return new Control_Monad_Rec_Class.Loop(Data_Unit.unit);\n };\n }))();\n };\n };\n };\n var finalize = function (lchs) {\n return Halogen_Aff_Driver_State.unDriverStateX(function (st) {\n return function __do() {\n cleanupSubscriptionsAndForks(st)();\n var f = Halogen_Aff_Driver_Eval.evalM(render)(st.selfRef)(st[\"component\"][\"eval\"](new Halogen_Query_HalogenQ.Finalize(Data_Unit.unit)));\n Effect_Ref.modify_(function (handlers) {\n return {\n initializers: handlers.initializers,\n finalizers: new Data_List_Types.Cons(f, handlers.finalizers)\n };\n })(lchs)();\n return foreachSlot(st.children)(function (v) {\n return function __do() {\n var dsx = Effect_Ref.read(v)();\n return finalize(lchs)(dsx)();\n };\n })();\n };\n });\n };\n var evalDriver = function (disposed) {\n return function (ref) {\n return function (q) {\n return bind1(liftEffect(Effect_Ref.read(disposed)))(function (v) {\n if (v) {\n return pure1(Data_Maybe.Nothing.value);\n };\n return Halogen_Aff_Driver_Eval.evalQ(render)(ref)(q);\n });\n };\n };\n };\n var dispose = function (disposed) {\n return function (lchs) {\n return function (dsx) {\n return Halogen_Aff_Driver_Eval.handleLifecycle(lchs)(function __do() {\n var v = Effect_Ref.read(disposed)();\n if (v) {\n return Data_Unit.unit;\n };\n Effect_Ref.write(true)(disposed)();\n finalize(lchs)(dsx)();\n return Halogen_Aff_Driver_State.unDriverStateX(function (v1) {\n return function __do() {\n var v2 = liftEffect1(Effect_Ref.read(v1.selfRef))();\n return for_(v2.rendering)(renderSpec.dispose)();\n };\n })(dsx)();\n });\n };\n };\n };\n return bind1(liftEffect(newLifecycleHandlers))(function (lchs) {\n return bind1(liftEffect(Effect_Ref[\"new\"](false)))(function (disposed) {\n return Halogen_Aff_Driver_Eval.handleLifecycle(lchs)(function __do() {\n var sio = Halogen_Subscription.create();\n var dsx = bindFlipped(Effect_Ref.read)(runComponent(lchs)((function () {\n var $78 = Halogen_Subscription.notify(sio.listener);\n return function ($79) {\n return liftEffect($78($79));\n };\n })())(i)(component))();\n return Halogen_Aff_Driver_State.unDriverStateX(function (st) {\n return pure({\n query: evalDriver(disposed)(st.selfRef),\n messages: sio.emitter,\n dispose: dispose(disposed)(lchs)(dsx)\n });\n })(dsx)();\n });\n });\n });\n };\n };\n};\nexport {\n runUI\n};\n", "var getEffProp = function (name) {\n return function (node) {\n return function () {\n return node[name];\n };\n };\n};\n\nexport function nodeTypeIndex(node) {\n return node.nodeType;\n}\n\nexport function nodeName(node) {\n return node.nodeName;\n}\n\nexport const baseURI = getEffProp(\"baseURI\");\nexport const _ownerDocument = getEffProp(\"ownerDocument\");\nexport const _parentNode = getEffProp(\"parentNode\");\nexport const _parentElement = getEffProp(\"parentElement\");\n\nexport function hasChildNodes(node) {\n return function () {\n return node.hasChildNodes();\n };\n}\n\nexport const childNodes = getEffProp(\"childNodes\");\nexport const _firstChild = getEffProp(\"firstChild\");\nexport const _lastChild = getEffProp(\"lastChild\");\nexport const _previousSibling = getEffProp(\"previousSibling\");\nexport const _nextSibling = getEffProp(\"nextSibling\");\nexport const _nodeValue = getEffProp(\"nodeValue\");\n\nexport function setNodeValue(value) {\n return function (node) {\n return function () {\n node.nodeValue = value;\n };\n };\n}\n\nexport const textContent = getEffProp(\"textContent\");\n\nexport function setTextContent(value) {\n return function (node) {\n return function () {\n node.textContent = value;\n };\n };\n}\n\nexport function normalize(node) {\n return function () {\n node.normalize();\n };\n}\n\nexport function clone(node) {\n return function () {\n return node.cloneNode(false);\n };\n}\n\nexport function deepClone(node) {\n return function () {\n return node.cloneNode(true);\n };\n}\n\nexport function isEqualNode(node1) {\n return function (node2) {\n return function () {\n return node1.isEqualNode(node2);\n };\n };\n}\n\nexport function compareDocumentPositionBits(node1) {\n return function (node2) {\n return function () {\n return node1.compareDocumentPosition(node2);\n };\n };\n}\n\nexport function contains(node1) {\n return function (node2) {\n return function () {\n return node1.contains(node2);\n };\n };\n}\n\nexport function _lookupPrefix(prefix) {\n return function (node) {\n return function () {\n return node.lookupPrefix(prefix);\n };\n };\n}\n\nexport function _lookupNamespaceURI(ns) {\n return function (node) {\n return function () {\n return node.lookupNamespaceURI(ns);\n };\n };\n}\n\nexport function isDefaultNamespace(ns) {\n return function (node) {\n return function () {\n return node.isDefaultNamespace(ns);\n };\n };\n}\n\nexport function insertBefore(node1) {\n return function (node2) {\n return function (parent) {\n return function () {\n parent.insertBefore(node1, node2);\n };\n };\n };\n}\n\nexport function appendChild(node) {\n return function (parent) {\n return function () {\n parent.appendChild(node);\n };\n };\n}\n\nexport function replaceChild(newChild) {\n return function (oldChild) {\n return function (parent) {\n return function () {\n parent.replaceChild(newChild, oldChild);\n };\n };\n };\n}\n\nexport function removeChild(node) {\n return function (parent) {\n return function () {\n parent.removeChild(node);\n };\n };\n}\n", "// Generated by purs version 0.15.14\nimport * as $foreign from \"./foreign.js\";\nimport * as Data_Enum from \"../Data.Enum/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Nullable from \"../Data.Nullable/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Unsafe_Coerce from \"../Unsafe.Coerce/index.js\";\nimport * as Web_DOM_Internal_Types from \"../Web.DOM.Internal.Types/index.js\";\nimport * as Web_DOM_NodeType from \"../Web.DOM.NodeType/index.js\";\nimport * as Web_Internal_FFI from \"../Web.Internal.FFI/index.js\";\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar fromJust = /* #__PURE__ */ Data_Maybe.fromJust();\nvar toEnum = /* #__PURE__ */ Data_Enum.toEnum(Web_DOM_NodeType.boundedEnumNodeType);\nvar toEventTarget = Unsafe_Coerce.unsafeCoerce;\nvar previousSibling = /* #__PURE__ */ (function () {\n var $4 = map(Data_Nullable.toMaybe);\n return function ($5) {\n return $4($foreign[\"_previousSibling\"]($5));\n };\n})();\nvar parentNode = /* #__PURE__ */ (function () {\n var $6 = map(Data_Nullable.toMaybe);\n return function ($7) {\n return $6($foreign[\"_parentNode\"]($7));\n };\n})();\nvar parentElement = /* #__PURE__ */ (function () {\n var $8 = map(Data_Nullable.toMaybe);\n return function ($9) {\n return $8($foreign[\"_parentElement\"]($9));\n };\n})();\nvar ownerDocument = /* #__PURE__ */ (function () {\n var $10 = map(Data_Nullable.toMaybe);\n return function ($11) {\n return $10($foreign[\"_ownerDocument\"]($11));\n };\n})();\nvar nodeValue = /* #__PURE__ */ (function () {\n var $12 = map(Data_Nullable.toMaybe);\n return function ($13) {\n return $12($foreign[\"_nodeValue\"]($13));\n };\n})();\nvar nodeType = function () {\n return function ($14) {\n return fromJust(toEnum($foreign.nodeTypeIndex($14)));\n };\n};\nvar nextSibling = /* #__PURE__ */ (function () {\n var $15 = map(Data_Nullable.toMaybe);\n return function ($16) {\n return $15($foreign[\"_nextSibling\"]($16));\n };\n})();\nvar lookupPrefix = function (p) {\n var $17 = map(Data_Nullable.toMaybe);\n var $18 = $foreign[\"_lookupPrefix\"](p);\n return function ($19) {\n return $17($18($19));\n };\n};\nvar lookupNamespaceURI = function (ns) {\n var $20 = map(Data_Nullable.toMaybe);\n var $21 = $foreign[\"_lookupNamespaceURI\"](ns);\n return function ($22) {\n return $20($21($22));\n };\n};\nvar lastChild = /* #__PURE__ */ (function () {\n var $23 = map(Data_Nullable.toMaybe);\n return function ($24) {\n return $23($foreign[\"_lastChild\"]($24));\n };\n})();\nvar fromEventTarget = /* #__PURE__ */ Web_Internal_FFI.unsafeReadProtoTagged(\"Node\");\nvar firstChild = /* #__PURE__ */ (function () {\n var $25 = map(Data_Nullable.toMaybe);\n return function ($26) {\n return $25($foreign[\"_firstChild\"]($26));\n };\n})();\nexport {\n nodeTypeIndex,\n nodeName,\n baseURI,\n hasChildNodes,\n childNodes,\n setNodeValue,\n textContent,\n setTextContent,\n normalize,\n clone,\n deepClone,\n isEqualNode,\n compareDocumentPositionBits,\n contains,\n isDefaultNamespace,\n insertBefore,\n appendChild,\n replaceChild,\n removeChild\n} from \"./foreign.js\";\nexport {\n fromEventTarget,\n toEventTarget,\n nodeType,\n ownerDocument,\n parentNode,\n parentElement,\n firstChild,\n lastChild,\n previousSibling,\n nextSibling,\n nodeValue,\n lookupPrefix,\n lookupNamespaceURI\n};\n", "// Generated by purs version 0.15.14\nimport * as Control_Applicative from \"../Control.Applicative/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Control_Category from \"../Control.Category/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_HeytingAlgebra from \"../Data.HeytingAlgebra/index.js\";\nimport * as Data_Maybe from \"../Data.Maybe/index.js\";\nimport * as Data_Newtype from \"../Data.Newtype/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Effect_Ref from \"../Effect.Ref/index.js\";\nimport * as Halogen_Aff_Driver from \"../Halogen.Aff.Driver/index.js\";\nimport * as Halogen_Aff_Driver_State from \"../Halogen.Aff.Driver.State/index.js\";\nimport * as Halogen_Component from \"../Halogen.Component/index.js\";\nimport * as Halogen_VDom_DOM from \"../Halogen.VDom.DOM/index.js\";\nimport * as Halogen_VDom_DOM_Prop from \"../Halogen.VDom.DOM.Prop/index.js\";\nimport * as Halogen_VDom_Machine from \"../Halogen.VDom.Machine/index.js\";\nimport * as Halogen_VDom_Thunk from \"../Halogen.VDom.Thunk/index.js\";\nimport * as Unsafe_Reference from \"../Unsafe.Reference/index.js\";\nimport * as Web_DOM_Node from \"../Web.DOM.Node/index.js\";\nimport * as Web_HTML from \"../Web.HTML/index.js\";\nimport * as Web_HTML_HTMLDocument from \"../Web.HTML.HTMLDocument/index.js\";\nimport * as Web_HTML_HTMLElement from \"../Web.HTML.HTMLElement/index.js\";\nimport * as Web_HTML_Window from \"../Web.HTML.Window/index.js\";\nvar $runtime_lazy = function (name, moduleName, init) {\n var state = 0;\n var val;\n return function (lineNumber) {\n if (state === 2) return val;\n if (state === 1) throw new ReferenceError(name + \" was needed before it finished initializing (module \" + moduleName + \", line \" + lineNumber + \")\", moduleName, lineNumber);\n state = 1;\n val = init();\n state = 2;\n return val;\n };\n};\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Effect.functorEffect);\nvar pure = /* #__PURE__ */ Control_Applicative.pure(Effect.applicativeEffect);\nvar traverse_ = /* #__PURE__ */ Data_Foldable.traverse_(Effect.applicativeEffect)(Data_Foldable.foldableMaybe);\nvar unwrap = /* #__PURE__ */ Data_Newtype.unwrap();\nvar when = /* #__PURE__ */ Control_Applicative.when(Effect.applicativeEffect);\nvar not = /* #__PURE__ */ Data_HeytingAlgebra.not(/* #__PURE__ */ Data_HeytingAlgebra.heytingAlgebraFunction(/* #__PURE__ */ Data_HeytingAlgebra.heytingAlgebraFunction(Data_HeytingAlgebra.heytingAlgebraBoolean)));\nvar identity = /* #__PURE__ */ Control_Category.identity(Control_Category.categoryFn);\nvar bind1 = /* #__PURE__ */ Control_Bind.bind(Effect_Aff.bindAff);\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(Effect_Aff.monadEffectAff);\nvar map = /* #__PURE__ */ Data_Functor.map(Effect.functorEffect);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Effect.bindEffect);\nvar RenderState = function (x) {\n return x;\n};\nvar substInParent = function (v) {\n return function (v1) {\n return function (v2) {\n if (v1 instanceof Data_Maybe.Just && v2 instanceof Data_Maybe.Just) {\n return $$void(Web_DOM_Node.insertBefore(v)(v1.value0)(v2.value0));\n };\n if (v1 instanceof Data_Maybe.Nothing && v2 instanceof Data_Maybe.Just) {\n return $$void(Web_DOM_Node.appendChild(v)(v2.value0));\n };\n return pure(Data_Unit.unit);\n };\n };\n};\nvar removeChild = function (v) {\n return function __do() {\n var npn = Web_DOM_Node.parentNode(v.node)();\n return traverse_(function (pn) {\n return Web_DOM_Node.removeChild(v.node)(pn);\n })(npn)();\n };\n};\nvar mkSpec = function (handler) {\n return function (renderChildRef) {\n return function (document) {\n var getNode = Halogen_Aff_Driver_State.unRenderStateX(function (v) {\n return v.node;\n });\n var done = function (st) {\n if (st instanceof Data_Maybe.Just) {\n return Halogen_VDom_Machine.halt(st.value0);\n };\n return Data_Unit.unit;\n };\n var buildWidget = function (spec) {\n var buildThunk = Halogen_VDom_Thunk.buildThunk(unwrap)(spec);\n var $lazy_patch = $runtime_lazy(\"patch\", \"Halogen.VDom.Driver\", function () {\n return function (st, slot) {\n if (st instanceof Data_Maybe.Just) {\n if (slot instanceof Halogen_Component.ComponentSlot) {\n Halogen_VDom_Machine.halt(st.value0);\n return $lazy_renderComponentSlot(100)(slot.value0);\n };\n if (slot instanceof Halogen_Component.ThunkSlot) {\n var step$prime = Halogen_VDom_Machine.step(st.value0, slot.value0);\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(step$prime), new Data_Maybe.Just(step$prime), $lazy_patch(103), done));\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.Driver (line 97, column 22 - line 103, column 79): \" + [ slot.constructor.name ]);\n };\n return $lazy_render(104)(slot);\n };\n });\n var $lazy_render = $runtime_lazy(\"render\", \"Halogen.VDom.Driver\", function () {\n return function (slot) {\n if (slot instanceof Halogen_Component.ComponentSlot) {\n return $lazy_renderComponentSlot(86)(slot.value0);\n };\n if (slot instanceof Halogen_Component.ThunkSlot) {\n var step = buildThunk(slot.value0);\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(Halogen_VDom_Machine.extract(step), new Data_Maybe.Just(step), $lazy_patch(89), done));\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.Driver (line 84, column 7 - line 89, column 75): \" + [ slot.constructor.name ]);\n };\n });\n var $lazy_renderComponentSlot = $runtime_lazy(\"renderComponentSlot\", \"Halogen.VDom.Driver\", function () {\n return function (cs) {\n var renderChild = Effect_Ref.read(renderChildRef)();\n var rsx = renderChild(cs)();\n var node = getNode(rsx);\n return Halogen_VDom_Machine.mkStep(new Halogen_VDom_Machine.Step(node, Data_Maybe.Nothing.value, $lazy_patch(117), done));\n };\n });\n var patch = $lazy_patch(91);\n var render = $lazy_render(82);\n var renderComponentSlot = $lazy_renderComponentSlot(109);\n return render;\n };\n var buildAttributes = Halogen_VDom_DOM_Prop.buildProp(handler);\n return {\n buildWidget: buildWidget,\n buildAttributes: buildAttributes,\n document: document\n };\n };\n };\n};\nvar renderSpec = function (document) {\n return function (container) {\n var render = function (handler) {\n return function (child) {\n return function (v) {\n return function (v1) {\n if (v1 instanceof Data_Maybe.Nothing) {\n return function __do() {\n var renderChildRef = Effect_Ref[\"new\"](child)();\n var spec = mkSpec(handler)(renderChildRef)(document);\n var machine = Halogen_VDom_DOM.buildVDom(spec)(v);\n var node = Halogen_VDom_Machine.extract(machine);\n $$void(Web_DOM_Node.appendChild(node)(Web_HTML_HTMLElement.toNode(container)))();\n return {\n machine: machine,\n node: node,\n renderChildRef: renderChildRef\n };\n };\n };\n if (v1 instanceof Data_Maybe.Just) {\n return function __do() {\n Effect_Ref.write(child)(v1.value0.renderChildRef)();\n var parent = Web_DOM_Node.parentNode(v1.value0.node)();\n var nextSib = Web_DOM_Node.nextSibling(v1.value0.node)();\n var machine$prime = Halogen_VDom_Machine.step(v1.value0.machine, v);\n var newNode = Halogen_VDom_Machine.extract(machine$prime);\n when(not(Unsafe_Reference.unsafeRefEq)(v1.value0.node)(newNode))(substInParent(newNode)(nextSib)(parent))();\n return {\n machine: machine$prime,\n node: newNode,\n renderChildRef: v1.value0.renderChildRef\n };\n };\n };\n throw new Error(\"Failed pattern match at Halogen.VDom.Driver (line 157, column 5 - line 173, column 80): \" + [ v1.constructor.name ]);\n };\n };\n };\n };\n return {\n render: render,\n renderChild: identity,\n removeChild: removeChild,\n dispose: removeChild\n };\n };\n};\nvar runUI = function (component) {\n return function (i) {\n return function (element) {\n return bind1(liftEffect(map(Web_HTML_HTMLDocument.toDocument)(bindFlipped(Web_HTML_Window.document)(Web_HTML.window))))(function (document) {\n return Halogen_Aff_Driver.runUI(renderSpec(document)(element))(component)(i);\n });\n };\n };\n};\nexport {\n runUI\n};\n", "// Generated by purs version 0.15.14\nimport * as App from \"../App/index.js\";\nimport * as Component_AccountSettings from \"../Component.AccountSettings/index.js\";\nimport * as Component_Add from \"../Component.Add/index.js\";\nimport * as Component_BList from \"../Component.BList/index.js\";\nimport * as Component_NList from \"../Component.NList/index.js\";\nimport * as Component_NNote from \"../Component.NNote/index.js\";\nimport * as Component_TagCloud from \"../Component.TagCloud/index.js\";\nimport * as Control_Bind from \"../Control.Bind/index.js\";\nimport * as Data_Foldable from \"../Data.Foldable/index.js\";\nimport * as Data_Functor from \"../Data.Functor/index.js\";\nimport * as Data_Unit from \"../Data.Unit/index.js\";\nimport * as Effect from \"../Effect/index.js\";\nimport * as Effect_Aff from \"../Effect.Aff/index.js\";\nimport * as Effect_Class from \"../Effect.Class/index.js\";\nimport * as Halogen_Aff_Util from \"../Halogen.Aff.Util/index.js\";\nimport * as Halogen_VDom_Driver from \"../Halogen.VDom.Driver/index.js\";\nimport * as Model from \"../Model/index.js\";\nimport * as Web_DOM_Element from \"../Web.DOM.Element/index.js\";\nimport * as Web_Event_Event from \"../Web.Event.Event/index.js\";\nimport * as Web_HTML_HTMLElement from \"../Web.HTML.HTMLElement/index.js\";\nvar bind = /* #__PURE__ */ Control_Bind.bind(Effect_Aff.bindAff);\nvar traverse_ = /* #__PURE__ */ Data_Foldable.traverse_(Effect_Aff.applicativeAff)(Data_Foldable.foldableMaybe);\nvar liftEffect = /* #__PURE__ */ Effect_Class.liftEffect(Effect_Aff.monadEffectAff);\nvar $$void = /* #__PURE__ */ Data_Functor[\"void\"](Effect_Aff.functorAff);\nvar discard = /* #__PURE__ */ Control_Bind.discard(Control_Bind.discardUnit)(Effect_Aff.bindAff);\nvar bindFlipped = /* #__PURE__ */ Control_Bind.bindFlipped(Effect.bindEffect);\nvar void1 = /* #__PURE__ */ Data_Functor[\"void\"](Effect.functorEffect);\nvar viewRendered = /* #__PURE__ */ bind(/* #__PURE__ */ Halogen_Aff_Util.selectElement(\"#content\"))(/* #__PURE__ */ traverse_(function (el) {\n return liftEffect(Web_DOM_Element.setAttribute(\"view-rendered\")(\"\")(Web_HTML_HTMLElement.toElement(el)));\n}));\nvar renderTagCloud = function (renderElSelector) {\n return function (tagCloudMode) {\n return Halogen_Aff_Util.runHalogenAff(bind(Halogen_Aff_Util.selectElement(renderElSelector))(traverse_(function (el) {\n return $$void(Halogen_VDom_Driver.runUI(Component_TagCloud.tagcloudcomponent(Model.tagCloudModeToF(tagCloudMode)))(Data_Unit.unit)(el));\n })));\n };\n};\nvar renderNotes = function (renderElSelector) {\n return function (notes) {\n return Halogen_Aff_Util.runHalogenAff(bind(Halogen_Aff_Util.selectElement(renderElSelector))(traverse_(function (el) {\n return discard($$void(Halogen_VDom_Driver.runUI(Component_NList.nlist(notes))(Data_Unit.unit)(el)))(function () {\n return viewRendered;\n });\n })));\n };\n};\nvar renderNote = function (renderElSelector) {\n return function (note) {\n return Halogen_Aff_Util.runHalogenAff(bind(Halogen_Aff_Util.selectElement(renderElSelector))(traverse_(function (el) {\n return discard($$void(Halogen_VDom_Driver.runUI(Component_NNote.nnote(note))(Data_Unit.unit)(el)))(function () {\n return viewRendered;\n });\n })));\n };\n};\nvar renderBookmarks = function (renderElSelector) {\n return function (bmarks) {\n return Halogen_Aff_Util.runHalogenAff(bind(Halogen_Aff_Util.selectElement(renderElSelector))(traverse_(function (el) {\n return discard($$void(Halogen_VDom_Driver.runUI(Component_BList.blist(bmarks))(Data_Unit.unit)(el)))(function () {\n return viewRendered;\n });\n })));\n };\n};\nvar renderAddForm = function (renderElSelector) {\n return function (bmark) {\n return Halogen_Aff_Util.runHalogenAff(bind(Halogen_Aff_Util.selectElement(renderElSelector))(traverse_(function (el) {\n return discard($$void(Halogen_VDom_Driver.runUI(Component_Add.addbmark(bmark))(Data_Unit.unit)(el)))(function () {\n return viewRendered;\n });\n })));\n };\n};\nvar renderAccountSettings = function (renderElSelector) {\n return function (accountSettings) {\n return Halogen_Aff_Util.runHalogenAff(bind(Halogen_Aff_Util.selectElement(renderElSelector))(traverse_(function (el) {\n return discard($$void(Halogen_VDom_Driver.runUI(Component_AccountSettings.usetting(accountSettings))(Data_Unit.unit)(el)))(function () {\n return viewRendered;\n });\n })));\n };\n};\nvar logoutE = function (e) {\n return bindFlipped(function ($10) {\n return void1(Effect_Aff.launchAff(App.logout($10)));\n })(Web_Event_Event.preventDefault(e));\n};\nexport {\n logoutE,\n renderBookmarks,\n renderTagCloud,\n renderAddForm,\n renderNotes,\n renderNote,\n renderAccountSettings,\n viewRendered\n};\n"], - "mappings": "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AO,IAAI,EAE7B,OAAW,CAAC0D,GAAUC,CAAK,IAAKnE,EAAQgE,EAAM,EACxC5D,EAAyB4D,GAAQE,EAAQ,IAAMT,SAC7CtC,MAAMiD,QAAQD,CAAK,EACrBF,EAAUC,EAAQ,EAAIL,GAAWM,CAAK,EAEtCA,GACA,OAAOA,GAAU,UACjBA,EAAME,cAAgBhE,OAEtB4D,EAAUC,EAAQ,EAAIH,GAAMI,CAAK,EAEjCF,EAAUC,EAAQ,EAAIC,GAK5B,OAAOF,CACT,CASA,SAASK,GAAaN,GAAQO,EAAM,CAClC,KAAOP,KAAW,MAAM,CACtB,IAAMQ,EAAOpE,EAAyB4D,GAAQO,CAAI,EAElD,GAAIC,EAAM,CACR,GAAIA,EAAKC,IACP,OAAOvD,EAAQsD,EAAKC,GAAG,EAGzB,GAAI,OAAOD,EAAKL,OAAU,WACxB,OAAOjD,EAAQsD,EAAKL,KAAK,CAE7B,CAEAH,GAAS7D,EAAe6D,EAAM,CAChC,CAEA,SAASU,GAAcf,EAAS,CAC9BgB,eAAQC,KAAK,qBAAsBjB,CAAO,EACnC,IACT,CAEA,OAAOe,EACT,CCrLO,IAAMG,GAAOvE,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,KAAK,CACN,EAGYwE,GAAMxE,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,OAAO,CACR,EAEYyE,GAAazE,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,cAAc,CACf,EAMY0E,GAAgB1E,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,KAAK,CACN,EAEY2E,GAAS3E,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,aAAa,CACd,EAIY4E,GAAmB5E,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,MAAM,CACP,EAEY6E,GAAO7E,EAAO,CAAC,OAAO,CAAC,ECrRvBuE,GAAOvE,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,QACA,MAAM,CACP,EAEYwE,GAAMxE,EAAO,CACxB,gBACA,aACA,WACA,qBACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,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", - "names": ["require_moment", "__commonJSMin", "exports", "module", "global", "factory", "hookCallback", "hooks", "setHookCallback", "callback", "isArray", "input", "isObject", "hasOwnProp", "a", "b", "isObjectEmpty", "obj", "k", "isUndefined", "isNumber", "isDate", "map", "arr", "fn", "res", "i", "arrLen", "extend", "createUTC", "format", "locale", "strict", "createLocalOrUTC", "defaultParsingFlags", "getParsingFlags", "m", "some", "fun", "t", "len", "isValid", "flags", "parsedParts", "isNowValid", "createInvalid", "momentProperties", "updateInProgress", "copyConfig", "to", "from", "prop", "val", "momentPropertiesLen", "Moment", "config", "isMoment", "warn", "msg", "deprecate", "firstTime", "args", "arg", "key", "argLen", "deprecations", "deprecateSimple", "name", "isFunction", "set", "mergeConfigs", "parentConfig", "childConfig", "Locale", "keys", "defaultCalendar", "calendar", "mom", "now", "output", "zeroFill", "number", "targetLength", "forceSign", "absNumber", "zerosToFill", "sign", "formattingTokens", "localFormattingTokens", "formatFunctions", "formatTokenFunctions", "addFormatToken", "token", "padded", "ordinal", "func", "removeFormattingTokens", "makeFormatFunction", "array", "length", "formatMoment", "expandFormat", "replaceLongDateFormatTokens", "defaultLongDateFormat", "longDateFormat", "formatUpper", "tok", "defaultInvalidDate", "invalidDate", "defaultOrdinal", "defaultDayOfMonthOrdinalParse", "defaultRelativeTime", "relativeTime", "withoutSuffix", "string", "isFuture", "pastFuture", "diff", "aliases", "normalizeUnits", "units", "normalizeObjectUnits", "inputObject", "normalizedInput", "normalizedProp", "priorities", "getPrioritizedUnits", "unitsObj", "u", "match1", "match2", "match3", "match4", "match6", "match1to2", "match3to4", "match5to6", "match1to3", "match1to4", "match1to6", "matchUnsigned", "matchSigned", "matchOffset", "matchShortOffset", "matchTimestamp", "matchWord", "match1to2NoLeadingZero", "match1to2HasZero", "regexes", "addRegexToken", "regex", "strictRegex", "isStrict", "localeData", "getParseRegexForToken", "unescapeFormat", "s", "regexEscape", "matched", "p1", "p2", "p3", "p4", "absFloor", "toInt", "argumentForCoercion", "coercedNumber", "value", "tokens", "addParseToken", "tokenLen", "addWeekParseToken", "addTimeToArrayFromToken", "isLeapYear", "year", "YEAR", "MONTH", "DATE", "HOUR", "MINUTE", "SECOND", "MILLISECOND", "WEEK", "WEEKDAY", "y", "daysInYear", "getSetYear", "makeGetSet", "getIsLeapYear", "unit", "keepTime", "set$1", "get", "d", "isUTC", "month", "date", "stringGet", "stringSet", "prioritized", "prioritizedLen", "mod", "n", "x", "indexOf", "o", "daysInMonth", "modMonth", "defaultLocaleMonths", "defaultLocaleMonthsShort", "MONTHS_IN_FORMAT", "defaultMonthsShortRegex", "defaultMonthsRegex", "localeMonths", "localeMonthsShort", "handleStrictParse", "monthName", "ii", "llc", "localeMonthsParse", "setMonth", "getSetMonth", "getDaysInMonth", "monthsShortRegex", "computeMonthsParse", "monthsRegex", "cmpLenRev", "shortPieces", "longPieces", "mixedPieces", "shortP", "longP", "createDate", "h", "M", "ms", "createUTCDate", "firstWeekOffset", "dow", "doy", "fwd", "fwdlw", "dayOfYearFromWeeks", "week", "weekday", "localWeekday", "weekOffset", "dayOfYear", "resYear", "resDayOfYear", "weekOfYear", "resWeek", "weeksInYear", "weekOffsetNext", "localeWeek", "defaultLocaleWeek", "localeFirstDayOfWeek", "localeFirstDayOfYear", "getSetWeek", "getSetISOWeek", "parseWeekday", "parseIsoWeekday", "shiftWeekdays", "ws", "defaultLocaleWeekdays", "defaultLocaleWeekdaysShort", "defaultLocaleWeekdaysMin", "defaultWeekdaysRegex", "defaultWeekdaysShortRegex", "defaultWeekdaysMinRegex", "localeWeekdays", "weekdays", "localeWeekdaysShort", "localeWeekdaysMin", "handleStrictParse$1", "weekdayName", "localeWeekdaysParse", "getSetDayOfWeek", "day", "getSetLocaleDayOfWeek", "getSetISODayOfWeek", "weekdaysRegex", "computeWeekdaysParse", "weekdaysShortRegex", "weekdaysMinRegex", "minPieces", "minp", "shortp", "longp", "hFormat", "kFormat", "meridiem", "lowercase", "matchMeridiem", "kInput", "pos", "pos1", "pos2", "localeIsPM", "defaultLocaleMeridiemParse", "getSetHour", "localeMeridiem", "hours", "minutes", "isLower", "baseConfig", "locales", "localeFamilies", "globalLocale", "commonPrefix", "arr1", "arr2", "minl", "normalizeLocale", "chooseLocale", "names", "j", "next", "split", "loadLocale", "isLocaleNameSane", "oldLocale", "aliasedRequire", "__require", "getSetGlobalLocale", "e", "values", "data", "getLocale", "defineLocale", "updateLocale", "tmpLocale", "listLocales", "checkOverflow", "overflow", "extendedIsoRegex", "basicIsoRegex", "tzRegex", "isoDates", "isoTimes", "aspNetJsonRegex", "rfc2822", "obsOffsets", "configFromISO", "l", "match", "allowTime", "dateFormat", "timeFormat", "tzFormat", "isoDatesLen", "isoTimesLen", "configFromStringAndFormat", "extractFromRFC2822Strings", "yearStr", "monthStr", "dayStr", "hourStr", "minuteStr", "secondStr", "result", "untruncateYear", "preprocessRFC2822", "checkWeekday", "weekdayStr", "parsedInput", "weekdayProvided", "weekdayActual", "calculateOffset", "obsOffset", "militaryOffset", "numOffset", "hm", "configFromRFC2822", "parsedArray", "configFromString", "defaults", "currentDateArray", "nowValue", "configFromArray", "currentDate", "expectedWeekday", "yearToUse", "dayOfYearFromWeekInfo", "w", "weekYear", "temp", "weekdayOverflow", "curWeek", "createLocal", "skipped", "stringLength", "totalParsedInputLength", "era", "meridiemFixWrap", "hour", "isPm", "configFromStringAndArray", "tempConfig", "bestMoment", "scoreToBeat", "currentScore", "validFormatFound", "bestFormatIsValid", "configfLen", "configFromObject", "dayOrDate", "createFromConfig", "prepareConfig", "configFromInput", "c", "prototypeMin", "other", "prototypeMax", "pickBy", "moments", "min", "max", "ordering", "isDurationValid", "unitHasDecimal", "orderLen", "isValid$1", "createInvalid$1", "createDuration", "Duration", "duration", "years", "quarters", "months", "weeks", "days", "seconds", "milliseconds", "isDuration", "absRound", "compareArrays", "array1", "array2", "dontConvert", "lengthDiff", "diffs", "offset", "separator", "offsetFromString", "chunkOffset", "matcher", "matches", "chunk", "parts", "cloneWithOffset", "model", "getDateOffset", "getSetOffset", "keepLocalTime", "keepMinutes", "localAdjust", "addSubtract", "getSetZone", "setOffsetToUTC", "setOffsetToLocal", "setOffsetToParsedOffset", "tZone", "hasAlignedHourOffset", "isDaylightSavingTime", "isDaylightSavingTimeShifted", "isLocal", "isUtcOffset", "isUtc", "aspNetRegex", "isoRegex", "ret", "diffRes", "parseIso", "momentsDifference", "inp", "positiveMomentsDifference", "base", "createAdder", "direction", "period", "dur", "tmp", "isAdding", "updateOffset", "add", "subtract", "isString", "isMomentInput", "isNumberOrStringArray", "isMomentInputObject", "objectTest", "propertyTest", "properties", "property", "propertyLen", "arrayTest", "dataTypeTest", "item", "isCalendarSpec", "getCalendarFormat", "myMoment", "calendar$1", "time", "formats", "sod", "clone", "isAfter", "localInput", "isBefore", "isBetween", "inclusivity", "localFrom", "localTo", "isSame", "inputMs", "isSameOrAfter", "isSameOrBefore", "asFloat", "that", "zoneDelta", "monthDiff", "wholeMonthDiff", "anchor", "anchor2", "adjust", "toString", "toISOString", "keepOffset", "utc", "inspect", "zone", "prefix", "datetime", "suffix", "inputString", "fromNow", "toNow", "newLocaleData", "lang", "MS_PER_SECOND", "MS_PER_MINUTE", "MS_PER_HOUR", "MS_PER_400_YEARS", "mod$1", "dividend", "divisor", "localStartOfDate", "utcStartOfDate", "startOf", "startOfDate", "endOf", "valueOf", "unix", "toDate", "toArray", "toObject", "toJSON", "isValid$2", "parsingFlags", "invalidAt", "creationData", "matchEraAbbr", "matchEraName", "matchEraNarrow", "matchEraYearOrdinal", "localeEras", "eras", "localeErasParse", "eraName", "abbr", "narrow", "localeErasConvertYear", "dir", "getEraName", "getEraNarrow", "getEraAbbr", "getEraYear", "erasNameRegex", "computeErasParse", "erasAbbrRegex", "erasNarrowRegex", "abbrPieces", "namePieces", "narrowPieces", "erasName", "erasAbbr", "erasNarrow", "addWeekYearFormatToken", "getter", "getSetWeekYear", "getSetWeekYearHelper", "getSetISOWeekYear", "getISOWeeksInYear", "getISOWeeksInISOWeekYear", "getWeeksInYear", "weekInfo", "getWeeksInWeekYear", "weeksTarget", "setWeekAll", "dayOfYearData", "getSetQuarter", "getSetDayOfMonth", "getSetDayOfYear", "getSetMinute", "getSetSecond", "getSetMillisecond", "parseMs", "getZoneAbbr", "getZoneName", "proto", "createUnix", "createInZone", "preParsePostFormat", "proto$1", "get$1", "index", "field", "setter", "listMonthsImpl", "out", "listWeekdaysImpl", "localeSorted", "shift", "listMonths", "listMonthsShort", "listWeekdays", "listWeekdaysShort", "listWeekdaysMin", "mathAbs", "abs", "addSubtract$1", "add$1", "subtract$1", "absCeil", "bubble", "monthsFromDays", "monthsToDays", "daysToMonths", "as", "makeAs", "alias", "asMilliseconds", "asSeconds", "asMinutes", "asHours", "asDays", "asWeeks", "asMonths", "asQuarters", "asYears", "valueOf$1", "clone$1", "get$2", "makeGetter", "round", "thresholds", "substituteTimeAgo", "relativeTime$1", "posNegDuration", "getSetRelativeTimeRounding", "roundingFunction", "getSetRelativeTimeThreshold", "threshold", "limit", "humanize", "argWithSuffix", "argThresholds", "withSuffix", "th", "abs$1", "toISOString$1", "total", "totalSign", "ymSign", "daysSign", "hmsSign", "proto$2", "entries", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "Object", "freeze", "seal", "create", "apply", "construct", "Reflect", "x", "fun", "thisValue", "args", "Func", "arrayForEach", "unapply", "Array", "prototype", "forEach", "arrayPop", "pop", "arrayPush", "push", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "func", "thisArg", "_len", "arguments", "length", "_key", "_len2", "_key2", "addToSet", "set", "array", "transformCaseFunc", "undefined", "l", "element", "lcElement", "cleanArray", "index", "clone", "object", "newObject", "property", "value", "isArray", "constructor", "lookupGetter", "prop", "desc", "get", "fallbackValue", "console", "warn", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "_", "createDOMPurify", "DOMPurify", "root", "version", "VERSION", "removed", "document", "nodeType", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "Element", "NodeFilter", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "getNextSibling", "getChildNodes", "getParentNode", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "createHTMLDocument", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "ADD_TAGS", "ADD_ATTR", "table", "tbody", "TRUSTED_TYPES_POLICY", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "tagName", "namespaceURI", "parentTagName", "Boolean", "_forceRemove", "node", "parentNode", "removeChild", "remove", "_removeAttribute", "name", "attribute", "getAttributeNode", "from", "removeAttribute", "setAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "childNodes", "call", "_createNodeIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "_isClobbered", "elm", "nodeName", "textContent", "attributes", "hasChildNodes", "_isNode", "_executeHook", "entryPoint", "currentNode", "data", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_isBasicCustomElement", "childCount", "i", "expr", "_isValidAttribute", "lcTag", "lcName", "_sanitizeAttributes", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "attr", "forceKeepAttr", "getAttributeType", "setAttributeNS", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "nextNode", "sanitize", "importedNode", "returnNode", "appendChild", "firstChild", "nodeIterator", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "purify", "_ajax", "platformSpecificDriver", "timeoutErrorMessageIdent", "requestFailedMessageIdent", "mkHeader", "options", "errback", "callback", "xhr", "fixedUrl", "i", "header", "e", "onerror", "msgIdent", "error", "cancelErrback", "cancelCallback", "arrayMap", "f", "arr", "l", "result", "i", "semigroupoidFn", "f", "g", "x", "compose", "dict", "identity", "dict", "categoryFn", "x", "semigroupoidFn", "otherwise", "on", "f", "g", "x", "y", "flip", "b", "a", "$$const", "v", "$$Proxy", "map", "dict", "mapFlipped", "dictFunctor", "map1", "fa", "f", "$$void", "$$const", "voidLeft", "x", "functorArray", "arrayMap", "concatString", "s1", "s2", "concatArray", "xs", "ys", "reflectSymbol", "dict", "absurd", "a", "spin", "$copy_v", "$tco_result", "$tco_loop", "v", "unsafeGet", "label", "rec", "semigroupString", "concatString", "semigroupArray", "concatArray", "append", "dict", "alt", "dict", "arrayApply", "fs", "xs", "l", "k", "result", "n", "i", "f", "j", "identity", "categoryFn", "applyArray", "arrayApply", "functorArray", "apply", "dict", "applySecond", "dictApply", "apply1", "apply", "map", "b", "$$const", "identity", "lift2", "f", "a", "pure", "dict", "unless", "dictApplicative", "pure1", "v", "v1", "when", "liftA1", "apply", "f", "a", "topChar", "bottomChar", "topNumber", "bottomNumber", "unsafeCompareImpl", "lt", "eq", "gt", "x", "y", "ordIntImpl", "unsafeCompareImpl", "ordStringImpl", "unsafeCompareImpl", "ordCharImpl", "refEq", "r1", "r2", "eqIntImpl", "refEq", "eqCharImpl", "refEq", "eqStringImpl", "eqArrayImpl", "f", "xs", "ys", "i", "eqUnit", "v", "v1", "eqString", "eqStringImpl", "eqInt", "eqIntImpl", "eqChar", "eqCharImpl", "eq", "dict", "eqArray", "dictEq", "eqArrayImpl", "eq", "LT", "GT", "EQ", "eqOrdering", "v", "v1", "LT", "GT", "EQ", "intSub", "x", "y", "intAdd", "x", "y", "intMul", "semiringInt", "intAdd", "intMul", "ringInt", "intSub", "semiringInt", "ordUnit", "v", "v1", "EQ", "eqUnit", "ordString", "ordStringImpl", "LT", "GT", "eqString", "ordInt", "ordIntImpl", "LT", "EQ", "GT", "eqInt", "ordChar", "ordCharImpl", "eqChar", "compare", "dict", "comparing", "dictOrd", "compare3", "compare", "f", "x", "y", "top", "dict", "boundedChar", "topChar", "bottomChar", "ordChar", "bottom", "dict", "showIntImpl", "showNumberImpl", "str", "showStringImpl", "s", "l", "c", "i", "k", "empty", "showString", "showStringImpl", "showNumber", "showNumberImpl", "showInt", "showIntImpl", "show", "dict", "identity", "categoryFn", "Nothing", "Just", "value0", "maybe", "v", "v1", "v2", "Nothing", "Just", "isNothing", "$$const", "isJust", "functorMaybe", "v", "v1", "Just", "Nothing", "map", "fromMaybe", "a", "maybe", "identity", "fromJust", "v", "Just", "applyMaybe", "v", "v1", "Just", "map", "Nothing", "functorMaybe", "bindMaybe", "v", "v1", "Just", "Nothing", "applyMaybe", "applicativeMaybe", "Just", "applyMaybe", "applicationJSON", "applicationFormURLEncoded", "ArrayView", "value0", "Blob", "Document", "$$String", "FormData", "FormURLEncoded", "Json", "toMediaType", "v", "Just", "applicationFormURLEncoded", "applicationJSON", "Nothing", "string", "unsafeCoerce", "x", "coerce", "unsafeCoerce", "coerce", "unwrap", "coerce", "alaF", "v", "coerce", "unwrap", "Accept", "value0", "ContentType", "RequestHeader", "value1", "value", "v", "unwrap", "name", "v", "Accept", "ContentType", "RequestHeader", "identity", "categoryFn", "$$ArrayBuffer", "value0", "Blob", "Document", "Json", "$$String", "Ignore", "toResponseType", "v", "toMediaType", "Just", "applicationJSON", "Nothing", "string", "json", "ignore", "ResponseHeader", "value0", "value1", "arrayBind", "arr", "f", "result", "i", "l", "identity", "categoryFn", "discard", "dict", "bindArray", "arrayBind", "applyArray", "bind", "dict", "bindFlipped", "dictBind", "flip", "composeKleisliFlipped", "bindFlipped1", "f", "g", "a", "composeKleisli", "bind1", "discardUnit", "dictBind", "bind", "join", "dictBind", "bind1", "bind", "m", "identity", "Left", "value0", "Right", "note", "a", "maybe", "Left", "Right", "functorEither", "f", "m", "Left", "Right", "map", "either", "v", "v1", "v2", "Left", "Right", "hush", "$$const", "Nothing", "Just", "applyEither", "v", "v1", "Left", "Right", "map", "functorEither", "applicativeEither", "Right", "applyEither", "pureE", "a", "bindE", "f", "whenM", "dictMonad", "bind", "when", "mb", "m", "b", "unlessM", "unless", "ap", "dictMonad", "bind", "pure", "f", "a", "f$prime", "a$prime", "intDegree", "x", "intDiv", "y", "intMod", "yy", "commutativeRingInt", "ringInt", "mod", "dict", "euclideanRingInt", "intDegree", "intDiv", "intMod", "commutativeRingInt", "div", "dict", "monoidString", "semigroupString", "monoidArray", "semigroupArray", "mempty", "dict", "guard", "dictMonoid", "mempty1", "mempty", "v", "v1", "$runtime_lazy", "name", "moduleName", "init", "state", "val", "lineNumber", "monadEffect", "applicativeEffect", "bindEffect", "bindE", "$lazy_applyEffect", "pureE", "$lazy_functorEffect", "liftA1", "ap", "functorEffect", "applyEffect", "lift2", "semigroupEffect", "dictSemigroup", "append", "monoidEffect", "dictMonoid", "semigroupEffect1", "mempty", "error", "msg", "message", "e", "throwException", "e", "$$throw", "$4", "throwException", "error", "throwError", "dict", "catchError", "dict", "$$try", "dictMonadError", "catchError1", "catchError", "Monad0", "map", "pure", "a", "Right", "$52", "Left", "Identity", "x", "functorIdentity", "f", "m", "applyIdentity", "v", "v1", "functorIdentity", "bindIdentity", "f", "applicativeIdentity", "Identity", "monadIdentity", "_new", "val", "read", "ref", "modifyImpl", "f", "write", "val", "$$void", "functorEffect", "$$new", "_new", "modify$prime", "modifyImpl", "modify", "f", "s", "s$prime", "modify_", "bindFlipped", "bindEffect", "map", "functorEffect", "Loop", "value0", "Done", "tailRecM", "dict", "monadRecEffect", "f", "a", "fromDone", "v", "Done", "r", "bindFlipped", "$$new", "read", "Loop", "e", "write", "map", "monadEffect", "boolConj", "b1", "b2", "boolDisj", "boolNot", "b", "tt", "dict", "not", "dict", "implies", "dict", "ff", "dict", "disj", "dict", "heytingAlgebraBoolean", "a", "b", "not", "boolConj", "boolDisj", "boolNot", "conj", "dict", "heytingAlgebraFunction", "dictHeytingAlgebra", "ff1", "ff", "tt1", "tt", "implies1", "implies", "conj1", "disj1", "disj", "not1", "not", "v", "f", "g", "a", "Tuple", "value0", "value1", "uncurry", "f", "v", "snd", "v", "functorTuple", "f", "m", "Tuple", "fst", "v", "eqTuple", "dictEq", "eq", "dictEq1", "eq1", "x", "y", "ordTuple", "dictOrd", "compare", "eqTuple1", "dictOrd1", "compare1", "eqTuple2", "v", "LT", "GT", "state", "dict", "modify_", "dictMonadState", "state1", "state", "f", "s", "Tuple", "modify", "s$prime", "gets", "get", "monadEffectEffect", "identity", "categoryFn", "monadEffect", "liftEffect", "dict", "map", "functorEither", "ExceptT", "x", "runExceptT", "v", "mapExceptT", "f", "v", "functorExceptT", "dictFunctor", "map1", "map", "monadExceptT", "dictMonad", "applicativeExceptT", "bindExceptT", "bind", "pure", "v", "k", "either", "$187", "Left", "a", "v1", "applyExceptT", "functorExceptT1", "functorExceptT", "ap", "$188", "$189", "ExceptT", "Right", "monadThrowExceptT", "dictMonad", "monadExceptT1", "monadExceptT", "$198", "pure", "$199", "ExceptT", "Left", "altExceptT", "dictSemigroup", "append", "dictMonad", "Bind1", "bind", "pure", "functorExceptT1", "functorExceptT", "v", "v1", "rm", "Right", "Left", "rn", "unwrap", "runExcept", "$3", "unwrap", "runExceptT", "stringify", "j", "empty", "_lookup", "no", "yes", "k", "m", "toArrayWithKey", "f", "m", "r", "k", "keys", "replicateFill", "count", "value", "result", "replicatePolyfill", "n", "i", "replicateImpl", "length", "xs", "findIndexImpl", "just", "nothing", "f", "xs", "i", "l", "_deleteAt", "just", "nothing", "i", "l", "l1", "concat", "xss", "result", "i", "l", "xs", "j", "m", "filterImpl", "f", "sortByImpl", "mergeFromTo", "compare", "fromOrdering", "xs1", "xs2", "from", "to", "mid", "i", "j", "k", "x", "y", "c", "xs", "out", "sliceImpl", "s", "l", "unsafeIndexImpl", "xs", "n", "unsafeFreezeThawImpl", "xs", "unsafeFreezeImpl", "copyImpl", "xs", "thawImpl", "copyImpl", "pushImpl", "a", "xs", "runSTFn1", "fn", "a", "runSTFn2", "b", "unsafeFreeze", "runSTFn1", "unsafeFreezeImpl", "thaw", "runSTFn1", "thawImpl", "withArray", "f", "xs", "result", "unsafeFreeze", "push", "runSTFn2", "pushImpl", "foldrArray", "f", "init", "xs", "acc", "len", "foldlArray", "empty", "dict", "bimap", "dict", "Disj", "x", "semigroupDisj", "dictHeytingAlgebra", "disj", "v", "v1", "monoidDisj", "dictHeytingAlgebra", "semigroupDisj1", "semigroupDisj", "ff", "eq1", "eq", "eqOrdering", "alaF", "foldr", "dict", "traverse_", "dictApplicative", "applySecond", "pure", "dictFoldable", "foldr2", "foldr", "f", "$454", "for_", "traverse_1", "flip", "foldl", "dict", "intercalate", "dictFoldable", "foldl2", "foldl", "dictMonoid", "append", "mempty", "sep", "xs", "go", "v", "v1", "maximumBy", "dictFoldable", "foldl2", "foldl", "cmp", "max$prime", "v", "v1", "Nothing", "Just", "$303", "eq1", "GT", "maximum", "dictOrd", "compare", "minimumBy", "min$prime", "$307", "LT", "minimum", "foldableMaybe", "v", "v1", "v2", "Nothing", "Just", "dictMonoid", "mempty", "foldMapDefaultR", "dictFoldable", "foldr2", "foldr", "dictMonoid", "append", "mempty", "f", "x", "acc", "foldableArray", "foldrArray", "foldlArray", "foldMap", "dict", "any", "dictFoldable", "foldMap2", "foldMap", "dictHeytingAlgebra", "alaF", "Disj", "monoidDisj", "runFn2", "fn", "a", "b", "runFn3", "c", "runFn4", "d", "traverseArrayImpl", "array1", "a", "array2", "b", "array3", "c", "concat2", "xs", "ys", "apply", "map", "pure", "f", "array", "go", "bot", "top", "pivot", "identity", "categoryFn", "traverse", "dict", "sequenceDefault", "dictTraversable", "traverse2", "traverse", "dictApplicative", "identity", "traversableArray", "Apply0", "traverseArrayImpl", "apply", "map", "pure", "functorArray", "foldableArray", "unfoldrArrayImpl", "isNothing", "fromJust", "fst", "snd", "f", "b", "result", "value", "maybe", "tuple", "unfoldr1ArrayImpl", "isNothing", "fromJust", "fst", "snd", "f", "b", "result", "value", "tuple", "maybe", "fromJust", "unfoldable1Array", "unfoldr1ArrayImpl", "isNothing", "fromJust", "fst", "snd", "fromJust", "unfoldr", "dict", "unfoldableArray", "unfoldrArrayImpl", "isNothing", "fromJust", "fst", "snd", "unfoldable1Array", "intercalate1", "intercalate", "foldableArray", "map", "functorMaybe", "fromJust", "foldMap1", "foldMap", "foldableArray", "append", "semigroupArray", "unsafeIndex", "runFn2", "unsafeIndexImpl", "unsafeIndex1", "toUnfoldable", "dictUnfoldable", "unfoldr", "xs", "len", "length", "f", "Just", "Tuple", "unsafeIndex1", "otherwise", "Nothing", "sortBy", "comp", "runFn3", "sortByImpl", "v", "GT", "EQ", "LT", "snoc", "xs", "x", "withArray", "push", "slice", "runFn3", "sliceImpl", "singleton", "a", "$$null", "xs", "length", "intercalate", "dictMonoid", "intercalate1", "foldMap", "dictMonoid", "foldMap1", "findIndex", "runFn4", "findIndexImpl", "Just", "Nothing", "find", "f", "xs", "map", "unsafeIndex1", "filter", "runFn2", "filterImpl", "elemIndex", "dictEq", "eq2", "eq", "x", "findIndex", "v", "notElem", "elemIndex1", "a", "arr", "isNothing", "drop", "xs", "$173", "slice", "length", "deleteAt", "runFn4", "_deleteAt", "Just", "Nothing", "deleteBy", "v", "v1", "v2", "maybe", "i", "fromJust", "findIndex", "$$delete", "dictEq", "eq", "cons", "x", "xs", "append", "concatMap", "flip", "bind", "bindArray", "mapMaybe", "f", "$189", "maybe", "singleton", "$190", "newImpl", "values", "toArrayWithKey", "v", "v1", "toUnfoldable", "dictUnfoldable", "$89", "$90", "Tuple", "$91", "lookup", "runFn4", "_lookup", "Nothing", "Just", "jsonEmptyObject", "empty", "_jsonParser", "fail", "succ", "s", "e", "jsonParser", "j", "_jsonParser", "Left", "Right", "replaceAll", "s1", "s2", "s3", "split", "sep", "s", "toLower", "joinWith", "s", "xs", "$$null", "s", "encodeURIComponent_to_RFC3986", "input", "c", "_encodeURIComponent", "fail", "succeed", "input", "encodeURIComponent_to_RFC3986", "err", "_encodeFormURLComponent", "_decodeURIComponent", "$$encodeURIComponent", "runFn3", "_encodeURIComponent", "$$const", "Nothing", "Just", "encodeFormURLComponent", "runFn3", "_encodeFormURLComponent", "$$const", "Nothing", "Just", "$$decodeURIComponent", "_decodeURIComponent", "apply", "applyMaybe", "map", "functorMaybe", "traverse", "traversableArray", "applicativeMaybe", "toArray", "v", "encode", "encodePart", "v", "Nothing", "encodeFormURLComponent", "Just", "apply", "map", "key", "val", "$37", "joinWith", "$38", "traverse", "$39", "toArray", "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "CONNECT", "PROPFIND", "PROPPATCH", "MKCOL", "COPY", "MOVE", "LOCK", "UNLOCK", "PATCH", "unCustomMethod", "v", "showMethod", "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "CONNECT", "PROPFIND", "PROPPATCH", "MKCOL", "COPY", "MOVE", "LOCK", "UNLOCK", "PATCH", "print", "either", "show", "showMethod", "unCustomMethod", "NonEmpty", "value0", "value1", "singleton", "dictPlus", "empty", "a", "NonEmpty", "Nil", "Cons", "value0", "value1", "NonEmptyList", "x", "toList", "v", "listMap", "f", "chunkedRevMap", "$copy_v", "$copy_v1", "$tco_var_v", "$tco_done", "$tco_result", "$tco_loop", "v", "v1", "Cons", "unrolledMap", "v2", "Nil", "reverseUnrolledMap", "$copy_v2", "$copy_v3", "$tco_var_v2", "$tco_done1", "v3", "functorList", "foldableList", "f", "b", "rev", "go", "$copy_v", "$copy_v1", "$tco_var_v", "$tco_done", "$tco_result", "$tco_loop", "v1", "Nil", "Cons", "$284", "foldl", "flip", "$285", "$copy_b", "$tco_var_b", "$tco_done1", "v", "dictMonoid", "append2", "append", "mempty", "acc", "$286", "$287", "foldr", "foldableList", "semigroupList", "xs", "ys", "foldr", "Cons", "append1", "append", "semigroupNonEmptyList", "v", "as$prime", "NonEmpty", "append1", "toList", "altList", "append1", "functorList", "plusList", "Nil", "reverse", "go", "$copy_v", "$copy_v1", "$tco_var_v", "$tco_done", "$tco_result", "$tco_loop", "v", "v1", "Nil", "Cons", "$$null", "v", "Nil", "_unsafePartial", "f", "_crashWith", "msg", "crashWith", "_crashWith", "crashWith", "unsafePartial", "_unsafePartial", "unsafeCrashWith", "msg", "singleton", "$200", "plusList", "$201", "NonEmptyList", "head", "v", "cons", "y", "v", "NonEmpty", "Cons", "nullable", "a", "r", "f", "notNull", "x", "toNullable", "maybe", "notNull", "toMaybe", "nullable", "Nothing", "Just", "Aff", "EMPTY", "PURE", "THROW", "CATCH", "SYNC", "ASYNC", "BIND", "BRACKET", "FORK", "SEQ", "MAP", "APPLY", "ALT", "CONS", "RESUME", "RELEASE", "FINALIZER", "FINALIZED", "FORKED", "FIBER", "THUNK", "tag", "_1", "_2", "_3", "AffCtr", "fn", "nonCanceler", "error", "runEff", "eff", "runSync", "left", "right", "runAsync", "k", "Scheduler", "limit", "size", "ix", "queue", "draining", "drain", "thunk", "cb", "i", "tmp", "Supervisor", "util", "fibers", "fiberId", "count", "fiber", "fid", "result", "killError", "killCount", "kills", "kill", "SUSPENDED", "CONTINUE", "STEP_BIND", "STEP_RESULT", "PENDING", "RETURN", "COMPLETED", "Fiber", "supervisor", "aff", "runTick", "status", "step", "fail", "interrupt", "bhead", "btail", "attempts", "bracketCount", "joinId", "joins", "rethrow", "run", "localRunTick", "attempt", "e", "sequential", "onComplete", "join", "jid", "canceler", "runPar", "par", "killId", "early", "root", "head", "tail", "kid", "loop", "lhs", "rhs", "resolve", "cancel", "innerKills", "newKills", "killCb", "_pure", "_throwError", "_catchError", "_map", "f", "value", "_bind", "_fork", "immediate", "_liftEffect", "_parAffMap", "_parAffApply", "aff1", "aff2", "makeAff", "Aff", "generalBracket", "acquire", "options", "k", "_makeFiber", "util", "aff", "_sequential", "Aff", "profunctorFn", "a2b", "c2d", "b2c", "$18", "dimap", "dict", "sequential", "dict", "parallel", "identity", "categoryFn", "parTraverse_", "dictParallel", "sequential", "parallel", "dictApplicative", "traverse_", "dictFoldable", "traverse_1", "f", "$51", "$53", "$52", "parSequence_", "dictParallel", "parTraverse_1", "parTraverse_", "dictApplicative", "parTraverse_2", "dictFoldable", "identity", "unsafePerformEffect", "f", "$runtime_lazy", "name", "moduleName", "init", "state", "val", "lineNumber", "pure", "applicativeEffect", "$$void", "functorEffect", "map", "Canceler", "x", "suspendAff", "_fork", "functorParAff", "_parAffMap", "functorAff", "_map", "map1", "map", "forkAff", "_fork", "ffiUtil", "unsafeFromRight", "v", "Right", "Left", "unsafeCrashWith", "unsafeFromLeft", "isLeft", "makeFiber", "aff", "_makeFiber", "launchAff", "fiber", "bracket", "acquire", "completed", "generalBracket", "$$const", "applyParAff", "_parAffApply", "functorParAff", "monadAff", "applicativeAff", "bindAff", "_bind", "$lazy_applyAff", "_pure", "$runtime_lazy", "ap", "functorAff", "applyAff", "pure2", "pure", "bind1", "bind", "bindFlipped", "bindAff", "$$finally", "fin", "a", "bracket", "pure2", "$$const", "parallelAff", "unsafeCoerce", "_sequential", "applyAff", "applyParAff", "parallel", "applicativeParAff", "$76", "pure2", "parSequence_", "parallelAff", "applicativeParAff", "foldableArray", "semigroupCanceler", "v", "v1", "err", "parSequence_", "monadEffectAff", "_liftEffect", "monadAff", "liftEffect", "effectCanceler", "$77", "Canceler", "$$const", "joinFiber", "v", "makeAff", "k", "map", "functorFiber", "f", "t", "unsafePerformEffect", "makeFiber", "map1", "killFiber", "e", "v", "bind1", "liftEffect", "suspended", "$$void", "$$const", "pure", "makeAff", "k", "map", "effectCanceler", "monadThrowAff", "_throwError", "monadAff", "monadErrorAff", "_catchError", "$$try", "runAff", "k", "aff", "launchAff", "bindFlipped", "$83", "liftEffect", "$$try", "runAff_", "$$void", "monadRecAff", "k", "go", "a", "bind1", "res", "Done", "pure2", "Loop", "monadAff", "nonCanceler", "$$const", "pure2", "monoidCanceler", "semigroupCanceler", "fromEffectFnAff", "v", "makeAff", "k", "v1", "$9", "Left", "$10", "Right", "e", "k2", "$11", "$12", "nonCanceler", "typeOf", "value", "tagOf", "isArray", "value", "fromNumberImpl", "just", "nothing", "n", "toNumber", "log", "fromNumber", "fromNumberImpl", "Just", "Nothing", "singleton", "c", "length", "s", "drop", "s", "splitAt", "i", "s", "charAt", "i", "s", "stripPrefix", "v", "str", "v1", "splitAt", "length", "$20", "Just", "Nothing", "show", "showString", "show1", "showInt", "pure", "applicativeEither", "ForeignError", "value0", "TypeMismatch", "value1", "ErrorAtIndex", "ErrorAtProperty", "unsafeToForeign", "unsafeCoerce", "unsafeFromForeign", "renderForeignError", "v", "ForeignError", "ErrorAtIndex", "show1", "ErrorAtProperty", "show", "TypeMismatch", "fail", "dictMonad", "$153", "throwError", "monadThrowExceptT", "$154", "singleton", "unsafeReadTagged", "dictMonad", "pure1", "pure", "applicativeExceptT", "fail1", "fail", "tag", "value", "tagOf", "unsafeFromForeign", "otherwise", "TypeMismatch", "readBoolean", "readNumber", "readInt", "map", "readNumber1", "error", "Left", "singleton", "fromNumber", "$155", "maybe", "$156", "mapExceptT", "either", "$$const", "readString", "pure", "applicativeExceptT", "monadIdentity", "fail", "unsafeReadTagged", "alt", "altExceptT", "semigroupNonEmptyList", "composeKleisliFlipped", "bindExceptT", "map", "functorMaybe", "any", "foldableArray", "heytingAlgebraBoolean", "eq", "eqString", "bindFlipped", "bindMaybe", "map1", "functorArray", "mapFlipped", "functorAff", "$$try", "monadErrorAff", "pure1", "applicativeAff", "RequestContentError", "value0", "ResponseBodyError", "value1", "TimeoutError", "RequestFailedError", "XHROtherError", "request", "driver", "req", "parseJSON", "v", "pure", "jsonEmptyObject", "either", "$74", "fail", "ForeignError", "jsonParser", "fromResponse", "$$ArrayBuffer", "unsafeReadTagged", "Blob", "Document", "x", "alt", "Json", "composeKleisliFlipped", "$75", "$$String", "Ignore", "$$const", "extractContent", "ArrayView", "Right", "unsafeToForeign", "FormData", "FormURLEncoded", "note", "map", "encode", "stringify", "addHeader", "mh", "hs", "Just", "any", "on", "eq", "name", "snoc", "headers", "reqContent", "ContentType", "bindFlipped", "toMediaType", "Accept", "ajaxRequest", "print", "map1", "h", "value", "toResponseType", "toNullable", "fromMaybe", "v1", "send", "content", "mapFlipped", "$$try", "fromEffectFnAff", "_ajax", "ResponseHeader", "runExcept", "Left", "head", "message", "$61", "$62", "Nothing", "pure1", "printError", "renderForeignError", "defaultRequest", "GET", "ignore", "eqStatusCode", "x", "y", "driver", "url", "request", "driver", "import_moment", "_app", "_mmoment8601", "just", "nothing", "tuple", "s", "m", "moment", "s1", "s2", "error", "_closeWindow", "window", "_setFocus", "elemId", "_toLocaleDateString", "dateString", "RawHTML", "x", "toLocaleDateString", "s", "_toLocaleDateString", "setFocus", "_setFocus", "mmoment8601", "s", "_mmoment8601", "Just", "Nothing", "Tuple", "closeWindow", "win", "_closeWindow", "app$prime", "v", "_app", "_unsafeStringify", "toCharCode", "c", "fromCharCode", "bottom1", "bottom", "boundedChar", "top1", "top", "toEnum", "dict", "fromEnum", "dict", "toEnumWithDefaults", "dictBoundedEnum", "toEnum1", "toEnum", "fromEnum1", "bottom2", "bottom", "low", "high", "x", "v", "Just", "Nothing", "$140", "defaultSucc", "toEnum$prime", "fromEnum$prime", "a", "defaultPred", "charToEnum", "v", "toCharCode", "bottom1", "top1", "Just", "fromCharCode", "Nothing", "enumChar", "defaultSucc", "defaultPred", "ordChar", "boundedEnumChar", "toCharCode", "top1", "bottom1", "charToEnum", "boundedChar", "enumChar", "unsafeReadPropImpl", "f", "s", "key", "value", "unsafeReadProp", "dictMonad", "fail", "pure", "applicativeExceptT", "k", "value", "unsafeReadPropImpl", "TypeMismatch", "typeOf", "readProp", "get", "dictIsSymbol", "reflectSymbol", "l", "r", "unsafeGet", "copyRecord", "rec", "copy", "key", "unsafeInsert", "l", "a", "semigroupoidBuilder", "semigroupoidFn", "insert", "dictIsSymbol", "reflectSymbol", "l", "r1", "unsafeInsert", "categoryBuilder", "categoryFn", "build", "v", "r1", "copyRecord", "identity", "categoryBuilder", "compose1", "compose", "semigroupoidBuilder", "insert", "writeImplFields", "dict", "writeImpl", "writeJSON", "dictWriteForeign", "$191", "$192", "_unsafeStringify", "writeForeignString", "unsafeToForeign", "writeForeignNullable", "dictWriteForeign", "$195", "maybe", "unsafeToForeign", "toNullable", "Nothing", "writeImpl", "$196", "toMaybe", "writeForeignInt", "writeForeignForeign", "identity", "categoryFn", "writeForeignBoolean", "unsafeToForeign", "recordWriteForeign", "dictWriteForeignFields", "writeImplFields1", "writeImplFields", "rec", "steps", "$$Proxy", "unsafeToForeign", "build", "nilWriteForeignFields", "v", "v1", "identity", "consWriteForeignFields", "dictIsSymbol", "get", "insert1", "insert", "dictWriteForeign", "writeImpl1", "writeImpl", "dictWriteForeignFields", "writeImplFields1", "writeImplFields", "v", "rec", "rest", "$$Proxy", "value", "result", "compose1", "recordWriteForeign", "expandedIsSymbol", "modeIsSymbol", "valueIsSymbol", "createdIsSymbol", "idIsSymbol", "isMarkdownIsSymbol", "lengthIsSymbol", "sharedIsSymbol", "slugIsSymbol", "consWriteForeignFields", "writeForeignString", "textIsSymbol", "titleIsSymbol", "consWriteForeignFields1", "updatedIsSymbol", "archiveUrlIsSymbol", "bidIsSymbol", "descriptionIsSymbol", "privateIsSymbol", "selectedIsSymbol", "tagsIsSymbol", "timeIsSymbol", "toreadIsSymbol", "urlIsSymbol", "archiveDefaultIsSymbol", "privacyLockIsSymbol", "privateDefaultIsSymbol", "eq2", "eq", "eqArray", "eqString", "map", "functorExceptT", "functorIdentity", "readInt", "monadIdentity", "readString", "pure", "applicativeExceptT", "intercalate", "monoidString", "TagCloudModeTop", "value0", "value1", "TagCloudModeLowerBound", "TagCloudModeRelated", "TagCloudModeNone", "writeForeignTagCloudMode$prime", "recordWriteForeign", "consWriteForeignFields", "expandedIsSymbol", "writeForeignBoolean", "modeIsSymbol", "writeForeignString", "valueIsSymbol", "writeForeignForeign", "nilWriteForeignFields", "writeForeignNote$prime", "createdIsSymbol", "idIsSymbol", "writeForeignInt", "isMarkdownIsSymbol", "lengthIsSymbol", "sharedIsSymbol", "textIsSymbol", "consWriteForeignFields1", "updatedIsSymbol", "writeForeignBookmark$prime", "archiveUrlIsSymbol", "writeForeignNullable", "bidIsSymbol", "descriptionIsSymbol", "privateIsSymbol", "selectedIsSymbol", "tagsIsSymbol", "timeIsSymbol", "toreadIsSymbol", "urlIsSymbol", "writeForeignAccountSettin", "archiveDefaultIsSymbol", "privacyLockIsSymbol", "privateDefaultIsSymbol", "eqTagCloudModeF", "x", "y", "TagCloudModeTop", "TagCloudModeLowerBound", "TagCloudModeRelated", "eq2", "TagCloudModeNone", "tagCloudModeToF", "tagCloudMode", "fromMaybe", "hush", "runExcept", "map", "readInt", "s", "split", "readString", "pure", "tagCloudModeFromF", "v", "unsafeToForeign", "intercalate", "setExpanded", "v", "v1", "TagCloudModeTop", "TagCloudModeLowerBound", "TagCloudModeRelated", "TagCloudModeNone", "isRelated", "isExpanded", "windowImpl", "ClassName", "x", "_referrer", "doc", "toParentNode", "unsafeCoerce", "toDocument", "unsafeCoerce", "referrer", "doc", "_referrer", "_read", "nothing", "just", "value", "tag", "toNode", "unsafeCoerce", "toElement", "unsafeCoerce", "fromElement", "x", "_read", "Nothing", "Just", "setHref", "href", "location", "origin", "search", "location", "reload", "location", "document", "window", "location", "window", "discard", "discardUnit", "bindAff", "$$void", "functorAff", "liftEffect", "monadEffectAff", "bind", "bindEffect", "map", "functorMaybe", "show", "showInt", "bind1", "pure", "applicativeAff", "bind2", "bindMaybe", "pure1", "applicativeMaybe", "eq", "eqStatusCode", "Star", "UnStar", "showStar", "v", "show1", "fetchUrl", "method", "url", "headers", "content", "rt", "app", "app$prime", "request", "defaultRequest", "Left", "cons", "RequestHeader", "logout", "u", "POST", "Nothing", "ignore", "windowImpl", "location", "reload", "fetchPath", "path", "fetchUrlEnc", "ContentType", "applicationFormURLEncoded", "FormURLEncoded", "markRead", "bid", "toggleStar", "action", "fetchJson", "dictWriteForeign", "writeJSON", "applicationJSON", "$25", "string", "fetchJson1", "writeForeignTagCloudMode$prime", "fetchJson2", "writeForeignBookmark$prime", "fetchJson3", "writeForeignNote$prime", "fetchJson4", "writeForeignAccountSettin", "getTagCloud", "mode", "Just", "json", "eres", "hush", "res", "lookupTitle", "bm", "$24", "updateTagCloudMode", "editNote", "editBookmark", "editAccountSettings", "us", "destroyNote", "nid", "DELETE", "destroy", "InputButton", "InputCheckbox", "InputColor", "InputDate", "InputDatetimeLocal", "InputEmail", "InputFile", "InputHidden", "InputImage", "InputMonth", "InputNumber", "InputPassword", "InputRadio", "InputRange", "InputReset", "InputSearch", "InputSubmit", "InputTel", "InputText", "InputTime", "InputUrl", "InputWeek", "renderInputType", "v", "profunctorForget", "f", "v", "v1", "$36", "strongForget", "$37", "fst", "$38", "snd", "strongFn", "a2b", "v", "Tuple", "map", "functorTuple", "profunctorFn", "first", "dict", "unwrap", "identity", "categoryFn", "view", "l", "unwrap", "identity", "viewOn", "s", "use", "dictMonadState", "gets", "p", "v", "lens$prime", "to", "dictStrong", "dimap", "first", "pab", "v", "lens", "get", "set", "s", "Tuple", "b", "over", "l", "set", "b", "$$const", "modifying", "dictMonadState", "$$void", "modify", "p", "f", "over", "assign", "dictMonadState", "$$void", "modify", "p", "b", "set", "monadAffAff", "identity", "categoryFn", "monadEffectAff", "liftAff", "dict", "runExists", "unsafeCoerce", "mkExists", "CoyonedaF", "value0", "value1", "unCoyoneda", "f", "v", "runExists", "v1", "coyoneda", "k", "fi", "mkExists", "CoyonedaF", "functorCoyoneda", "f", "v", "runExists", "v1", "$180", "liftCoyoneda", "coyoneda", "identity", "categoryFn", "$runtime_lazy", "name", "moduleName", "init", "state", "val", "lineNumber", "map", "functorMaybe", "Leaf", "Node", "value0", "value1", "value2", "value3", "value4", "value5", "Split", "value0", "value1", "value2", "SplitLast", "unsafeNode", "k", "v", "l", "r", "Leaf", "Node", "$277", "singleton", "k", "v", "Node", "Leaf", "unsafeBalancedNode", "height", "rotateLeft", "l", "rk", "rv", "rl", "rr", "unsafeNode", "rotateRight", "lk", "lv", "ll", "lr", "r", "$lazy_unsafeSplit", "$runtime_lazy", "comp", "m", "Split", "Nothing", "LT", "v1", "GT", "EQ", "Just", "unsafeSplit", "$lazy_unsafeSplitLast", "SplitLast", "unsafeSplitLast", "unsafeJoinNodes", "v2", "pop", "dictOrd", "compare", "k", "m", "v", "unsafeSplit", "map", "a", "Tuple", "unsafeJoinNodes", "lookup", "dictOrd", "compare", "k", "go", "$copy_v", "$tco_done", "$tco_result", "$tco_loop", "v", "Leaf", "Nothing", "Node", "v1", "LT", "GT", "EQ", "Just", "insert", "dictOrd", "compare", "k", "v", "go", "v1", "Leaf", "singleton", "Node", "v2", "LT", "unsafeBalancedNode", "GT", "EQ", "foldableMap", "f", "z", "$lazy_go", "$runtime_lazy", "m$prime", "z$prime", "Leaf", "Node", "go", "m", "dictMonoid", "mempty", "append1", "append", "v", "empty", "Leaf", "$$delete", "dictOrd", "compare", "k", "go", "v", "Leaf", "Node", "v1", "LT", "unsafeBalancedNode", "GT", "EQ", "unsafeJoinNodes", "alter", "dictOrd", "compare", "f", "k", "m", "v", "unsafeSplit", "v2", "Nothing", "unsafeJoinNodes", "Just", "unsafeBalancedNode", "OrdBox", "value0", "value1", "value2", "mkOrdBox", "dictOrd", "OrdBox", "eq", "compare", "eqOrdBox", "v", "v1", "ordOrdBox", "ordTuple", "ordString", "ordOrdBox", "pop1", "pop", "ordTuple", "lookup1", "lookup", "insert1", "insert", "pop", "dictIsSymbol", "reflectSymbol", "dictOrd", "mkOrdBox", "sym", "key", "v", "pop1", "Tuple", "lookup", "lookup1", "insert", "val", "insert1", "foreachSlot", "dictApplicative", "traverse_", "foldableMap", "k", "$54", "empty", "AutocompleteOff", "AutocompleteOn", "AutocompleteName", "AutocompleteHonorificPrefix", "AutocompleteGivenName", "AutocompleteAdditionalName", "AutocompleteFamilyName", "AutocompleteHonorificSuffix", "AutocompleteNickname", "AutocompleteEmail", "AutocompleteUsername", "AutocompleteNewPassword", "AutocompleteCurrentPassword", "AutocompleteOneTimeCode", "AutocompleteOrganizationTitle", "AutocompleteOrganization", "AutocompleteStreetAddress", "AutocompleteAddressLine1", "AutocompleteAddressLine2", "AutocompleteAddressLine3", "AutocompleteAddressLevel1", "AutocompleteAddressLevel2", "AutocompleteAddressLevel3", "AutocompleteAddressLevel4", "AutocompleteCountry", "AutocompleteCountryName", "AutocompletePostalCode", "AutocompleteCreditCardName", "AutocompleteCreditCardGivenName", "AutocompleteCreditCardAdditionalName", "AutocompleteCreditCardFamilyName", "AutocompleteCreditCardNumber", "AutocompleteCreditCardExpiration", "AutocompleteCreditCardExpirationMonth", "AutocompleteCreditCardExpirationYear", "AutocompleteCreditCardSecurityCode", "AutocompleteCreditCardType", "AutocompleteTransactionCurrency", "AutocompleteTransactionAmount", "AutocompleteLanguage", "AutocompleteBirthday", "AutocompleteBirthdayDay", "AutocompleteBirthdayMonth", "AutocompleteBirthdayYear", "AutocompleteSex", "AutocompleteTelephone", "AutocompleteTelephoneCountryCode", "AutocompleteTelephoneNational", "AutocompleteTelephoneAreaCode", "AutocompleteTelephoneLocal", "AutocompleteTelephoneLocalPrefix", "AutocompleteTelephoneLocalSuffix", "AutocompleteTelephoneExtension", "AutocompleteIMPP", "AutocompleteURL", "AutocompletePhoto", "renderAutocompleteType", "v", "ButtonButton", "ButtonSubmit", "ButtonReset", "renderButtonType", "v", "RefUpdate", "value0", "value1", "Action", "Step", "value0", "value1", "value2", "value3", "unStep", "unsafeCoerce", "step", "v", "a", "mkStep", "halt", "extract", "map", "functorArray", "map1", "functorTuple", "Text", "value0", "Elem", "value1", "value2", "value3", "Keyed", "Widget", "Grafted", "Graft", "unGraft", "f", "$61", "graft", "unsafeCoerce", "bifunctorGraft", "f", "g", "unGraft", "v", "graft", "Graft", "$63", "$64", "bimap", "runGraft", "unGraft", "v", "go", "v2", "Text", "Elem", "map", "Keyed", "map1", "Widget", "Grafted", "bimap", "unsafeGetAny", "key", "obj", "unsafeHasAny", "unsafeSetAny", "val", "forE", "a", "f", "b", "i", "forEachE", "forInE", "o", "ks", "k", "diffWithIxE", "a1", "a2", "f1", "f2", "f3", "a3", "l1", "l2", "i", "strMapWithIxE", "as", "fk", "f", "o", "a", "k", "diffWithKeyAndIxE", "o1", "o2", "refEq", "b", "createTextNode", "s", "doc", "setTextContent", "n", "createElement", "ns", "name", "insertChildIx", "removeChild", "parentNode", "setAttribute", "attr", "val", "el", "removeAttribute", "hasAttribute", "addEventListener", "ev", "listener", "removeEventListener", "jsUndefined", "unsafeLookup", "unsafeGetAny", "unsafeFreeze", "unsafeCoerce", "pokeMutMap", "unsafeSetAny", "newMutMap", "newImpl", "getProp", "name", "doctype", "_namespaceURI", "_prefix", "localName", "tagName", "setAttribute", "name", "value", "element", "getEffProp", "name", "node", "children", "_firstElementChild", "_lastElementChild", "childElementCount", "_querySelector", "selector", "map", "functorEffect", "querySelector", "qs", "$2", "map", "toMaybe", "$3", "_querySelector", "$4", "toNode", "unsafeCoerce", "$runtime_lazy", "name", "moduleName", "init", "state", "val", "lineNumber", "haltWidget", "v", "halt", "$lazy_patchWidget", "$runtime_lazy", "state", "vdom", "Grafted", "runGraft", "Widget", "res", "step", "res$prime", "unStep", "mkStep", "Step", "patchWidget", "haltText", "parent", "parentNode", "removeChild", "$lazy_patchText", "Text", "otherwise", "nextState", "setTextContent", "patchText", "haltKeyed", "forInE", "v1", "s", "haltElem", "forEachE", "eqElemSpec", "ns1", "ns2", "$63", "Just", "Nothing", "$lazy_patchElem", "Elem", "length", "attrs2", "onThis", "v2", "onThese", "ix", "insertChildIx", "extract", "onThat", "children2", "diffWithIxE", "patchElem", "$lazy_patchKeyed", "Keyed", "ix$prime", "v3", "diffWithKeyAndIxE", "fst", "patchKeyed", "buildWidget", "build", "w", "buildText", "node", "createTextNode", "buildKeyed", "name1", "as1", "ch1", "el", "createElement", "toNullable", "toNode", "onChild", "children", "strMapWithIxE", "attrs", "buildElem", "child", "forE", "buildVDom", "spec", "$lazy_build", "eventListener", "fn", "event", "$runtime_lazy", "name", "moduleName", "init", "state", "val", "lineNumber", "Created", "value0", "Removed", "Attribute", "value1", "value2", "Property", "Handler", "Ref", "unsafeGetProperty", "unsafeGetAny", "setProperty", "unsafeSetAny", "removeProperty", "key", "el", "v", "hasAttribute", "removeAttribute", "v1", "typeOf", "jsUndefined", "propToStrKey", "Just", "propFromString", "unsafeCoerce", "propFromInt", "unsafeCoerce", "propFromBoolean", "buildProp", "emit", "el", "removeProp", "prevEvents", "v1", "Attribute", "removeAttribute", "toNullable", "Property", "removeProperty", "Handler", "handler", "unsafeLookup", "removeEventListener", "fst", "Ref", "mbEmit", "v", "Just", "haltProp", "state", "lookup", "Removed", "diffProp", "events", "v11", "v2", "$66", "setAttribute", "v4", "refEq", "elVal", "unsafeGetProperty", "$75", "setProperty", "write", "snd", "pokeMutMap", "applyProp", "v3", "unsafeGetAny", "unsafeHasAny", "ref", "$$new", "listener", "eventListener", "ev", "f$prime", "read", "Tuple", "addEventListener", "Created", "$lazy_patchProp", "$runtime_lazy", "ps2", "newMutMap", "onThis", "onThese", "onThat", "props", "diffWithKeyAndIxE", "propToStrKey", "nextState", "unsafeFreeze", "mkStep", "Step", "patchProp", "renderProp", "ps1", "ps1$prime", "strMapWithIxE", "HTML", "x", "widget", "$28", "Widget", "toPropValue", "dict", "text", "$29", "Text", "ref", "f", "Ref", "$30", "v", "Created", "Just", "Removed", "Nothing", "prop", "dictIsProp", "toPropValue1", "$31", "Property", "$32", "isPropString", "propFromString", "isPropInt", "propFromInt", "isPropInputType", "$45", "propFromString", "renderInputType", "isPropButtonType", "$50", "propFromString", "renderButtonType", "isPropBoolean", "propFromBoolean", "isPropAutocompleteType", "$51", "renderAutocompleteType", "handler", "Handler", "element", "ns", "name", "props", "children", "Elem", "attr", "ns", "v", "Attribute", "identity", "categoryFn", "Pure", "value0", "Lift", "Ap", "value1", "mkAp", "fba", "fb", "liftFreeAp", "goLeft", "dictApplicative", "pure", "fStack", "valStack", "nat", "func", "count", "Tuple", "Cons", "cons", "goApply", "apply", "vals", "gVal", "Nil", "Left", "gRes", "$31", "Right", "NonEmpty", "functorFreeAp", "f", "x", "foldFreeAp", "goApply1", "goLeft1", "z", "go", "$copy_v", "$tco_done", "$tco_result", "$tco_loop", "v1", "nextVals", "singleton", "retractFreeAp", "identity", "applyFreeAp", "applicativeFreeAp", "foldFreeAp1", "hoistFreeAp", "$54", "CatQueue", "value0", "value1", "uncons", "$copy_v", "$tco_done", "$tco_result", "$tco_loop", "v", "Nil", "Nothing", "CatQueue", "reverse", "Cons", "Just", "Tuple", "snoc", "a", "$$null", "v", "Nil", "empty", "CatQueue", "Nil", "CatNil", "CatCons", "value0", "value1", "link", "v", "v1", "CatNil", "CatCons", "snoc", "foldr", "k", "b", "q", "foldl", "$copy_v", "$copy_v1", "$copy_v2", "$tco_var_v", "$tco_var_v1", "$tco_done", "$tco_result", "$tco_loop", "v2", "Nil", "Cons", "go", "$copy_xs", "$copy_ys", "$tco_var_xs", "$tco_done1", "xs", "ys", "uncons", "Nothing", "x", "i", "Just", "Tuple", "$66", "$$null", "empty", "CatNil", "append", "link", "semigroupCatList", "append", "snoc", "cat", "a", "append", "CatCons", "empty", "$runtime_lazy", "name", "moduleName", "init", "state", "val", "lineNumber", "append", "semigroupCatList", "Free", "value0", "value1", "Return", "Bind", "toView", "$copy_v", "$tco_done", "$tco_result", "$tco_loop", "v", "runExpF", "v2", "concatF", "r", "append", "uncons", "Nothing", "Just", "a", "fromView", "f", "Free", "empty", "freeMonad", "freeApplicative", "freeBind", "freeFunctor", "k", "f", "bindFlipped", "$189", "pure", "$190", "v", "Free", "snoc", "$lazy_freeApply", "$191", "fromView", "Return", "$runtime_lazy", "ap", "pure", "freeApplicative", "liftF", "f", "fromView", "Bind", "$192", "pure", "foldFree", "dictMonadRec", "Monad0", "map1", "map", "pure1", "pure", "tailRecM", "k", "go", "f", "v", "toView", "Return", "Done", "Bind", "$199", "Loop", "unChildQueryBox", "unsafeCoerce", "reallyUnsafeRefEq", "a", "b", "unsafeRefEq", "reallyUnsafeRefEq", "$$void", "functorEffect", "bind", "bindEffect", "append", "semigroupArray", "traverse_", "applicativeEffect", "traverse_1", "foldableArray", "unsubscribe", "v", "subscribe", "k", "$76", "$$void", "notify", "v", "a", "create", "subscribers", "$$new", "k", "modify_", "v", "append", "deleteBy", "unsafeRefEq", "a", "bind", "read", "traverse_1", "identity", "categoryFn", "SubscriptionId", "x", "ForkId", "State", "value0", "Subscribe", "value1", "Unsubscribe", "Lift", "ChildQuery", "Raise", "Par", "Fork", "Join", "Kill", "GetRef", "HalogenM", "x", "raise", "o", "liftF", "Raise", "ordSubscriptionId", "ordInt", "ordForkId", "monadHalogenM", "freeMonad", "monadStateHalogenM", "$181", "HalogenM", "liftF", "State", "monadEffectHalogenM", "dictMonadEffect", "$186", "liftEffect", "$187", "HalogenM", "liftF", "Lift", "monadHalogenM", "monadAffHalogenM", "dictMonadAff", "monadEffectHalogenM1", "monadEffectHalogenM", "$188", "liftAff", "$189", "HalogenM", "liftF", "Lift", "getRef", "p", "liftF", "GetRef", "identity", "functorHalogenM", "freeFunctor", "bindHalogenM", "freeBind", "applicativeHalogenM", "freeApplicative", "Initialize", "value0", "Finalize", "Receive", "value1", "Action", "Query", "$runtime_lazy", "name", "moduleName", "init", "state", "val", "lineNumber", "unsafeEqThunk", "v", "v1", "refEq", "runThunk", "v", "buildThunk", "toVDom", "haltThunk", "state", "halt", "$lazy_patchThunk", "$runtime_lazy", "t2", "$48", "unsafeEqThunk", "mkStep", "Step", "extract", "vdom", "step", "runThunk", "patchThunk", "renderThunk", "spec", "t", "buildVDom", "voidLeft", "functorHalogenM", "traverse_", "applicativeHalogenM", "foldableMaybe", "map", "pure", "applicativeHalogenM", "lookup", "pop", "insert", "ComponentSlot", "value0", "ThunkSlot", "unComponentSlot", "unsafeCoerce", "unComponent", "mkEval", "args", "v", "Initialize", "voidLeft", "traverse_", "Finalize", "Receive", "Action", "Query", "unCoyoneda", "g", "$45", "map", "maybe", "$46", "mkComponentSlot", "mkComponent", "defaultEval", "$$const", "pure", "Nothing", "componentSlot", "dictIsSymbol", "lookup1", "lookup", "pop1", "pop", "insert1", "insert", "dictOrd", "lookup2", "pop2", "insert2", "label", "p", "comp", "input", "output", "mkComponentSlot", "element", "Nothing", "form", "element", "input", "props", "element", "label", "element", "p", "element", "span", "element", "table", "element", "tbody", "element", "tbody_", "td", "td_", "textarea", "es", "tr", "element", "tr_", "div", "element", "div_", "button", "element", "br", "props", "element", "br_", "a", "element", "_currentTarget", "e", "preventDefault", "e", "currentTarget", "$5", "toMaybe", "_currentTarget", "change", "click", "map", "functorMaybe", "composeKleisli", "bindMaybe", "composeKleisliFlipped", "bindExceptT", "monadIdentity", "readProp", "readString", "mouseHandler", "unsafeCoerce", "handler$prime", "et", "f", "handler", "ev", "map", "Action", "Just", "onClick", "$15", "handler", "click", "$16", "mouseHandler", "onSubmit", "handler", "addForeignPropHandler", "key", "prop", "reader", "f", "go", "a", "composeKleisliFlipped", "readProp", "unsafeToForeign", "handler$prime", "composeKleisli", "currentTarget", "e", "either", "$$const", "Nothing", "$85", "Just", "runExcept", "onChecked", "change", "readBoolean", "monadIdentity", "onValueChange", "addForeignPropHandler", "change", "readString", "unwrap", "ref", "go", "p", "mel", "Just", "RefUpdate", "$29", "prop", "dictIsProp", "prop1", "isPropBoolean", "prop2", "isPropString", "prop3", "isPropInt", "required", "prop1", "rows", "prop3", "target", "prop2", "title", "type_", "dictIsProp", "prop", "value", "name", "prop2", "id", "prop2", "href", "$$for", "prop2", "disabled", "prop1", "class_", "$36", "prop2", "$37", "unwrap", "checked", "prop1", "autofocus", "prop1", "autocomplete", "prop", "isPropAutocompleteType", "attr", "Nothing", "hasArrayFrom", "hasStringIterator", "hasFromCodePoint", "hasCodePointAt", "_singleton", "fallback", "hasFromCodePoint", "_take", "n", "hasStringIterator", "str", "accum", "iter", "o", "fromEnum", "boundedEnumChar", "div", "euclideanRingInt", "mod", "unsurrogate", "lead", "trail", "isTrail", "cu", "isLead", "uncons", "s", "v", "length", "Nothing", "Just", "fromEnum", "charAt", "cu1", "cu0", "$43", "unsurrogate", "drop", "fromCharCode", "$75", "toEnumWithDefaults", "boundedEnumChar", "bottom", "boundedChar", "top", "$76", "singleton", "singletonFallback", "v", "lead", "div", "trail", "mod", "singleton", "_singleton", "singletonFallback", "takeFallback", "v", "v1", "v2", "uncons", "Just", "take", "_take", "drop", "s", "length", "take", "getEffProp", "name", "doc", "url", "documentURI", "origin", "compatMode", "characterSet", "contentType", "_documentElement", "getEffProp", "fromJust", "bindFlipped", "bindEffect", "join", "bindMaybe", "map", "functorMaybe", "whenH", "b", "k", "text", "whenA", "b", "k", "unsafeDecode", "str", "fromJust", "$$decodeURIComponent", "ifElseH", "b", "f", "k", "ifElseA", "fromNullableStr", "$53", "fromMaybe", "$54", "toMaybe", "encodeTag", "$55", "$56", "replaceAll", "$57", "$$encodeURIComponent", "class_", "$58", "ClassName", "attr", "a", "_parseQueryString", "srh", "decode", "$59", "replaceAll", "$60", "unsafeDecode", "go", "kv", "v", "split", "Just", "Tuple", "Nothing", "qs", "srh$prime", "take", "$52", "drop", "mapMaybe", "filter", "_lookupQueryStringValue", "qs", "k", "join", "map", "snd", "find", "$62", "v", "fst", "_loc", "bindFlipped", "location", "windowImpl", "_doc", "bindFlipped", "document", "windowImpl", "_curQuerystring", "loc", "_loc", "srh", "search", "_parseQueryString", "type_", "isPropInputType", "discard", "discardUnit", "bindHalogenM", "modifying", "monadStateHalogenM", "bind", "use", "$$void", "functorHalogenM", "liftAff", "monadAffHalogenM", "monadAffAff", "EarchiveDefault", "value0", "EprivateDefault", "EprivacyLock", "UEditField", "USubmit", "_us", "dictStrong", "lens", "v", "v1", "_us1", "strongFn", "_us2", "strongForget", "usetting", "u$prime", "render", "editField", "$31", "div", "class_", "text", "input", "InputCheckbox", "id", "name", "checked", "onChecked", "label", "$$for", "mkState", "handleAction", "us", "editAccountSettings", "mkComponent", "$$const", "mkEval", "defaultEval", "log", "s", "warn", "append", "semigroupArray", "type_", "isPropButtonType", "guard", "monoidArray", "type_1", "isPropInputType", "value", "isPropString", "guard1", "monoidString", "modify_", "monadStateHalogenM", "discard", "discardUnit", "bindHalogenM", "bind", "gets", "liftAff", "monadAffHalogenM", "monadAffAff", "modifying", "pure", "applicativeHalogenM", "$$void", "functorHalogenM", "liftEffect", "monadEffectHalogenM", "monadEffectAff", "use", "assign", "bindFlipped", "bindEffect", "Eurl", "value0", "Etitle", "Edescription", "Etags", "Eprivate", "Etoread", "BEditField", "BEditSubmit", "BDeleteAsk", "BLookupTitle", "BDestroy", "_edit_bm", "dictStrong", "lens", "v", "v1", "_edit_bm1", "strongFn", "_edit_bm2", "strongForget", "_bm", "_bm1", "_apiError", "_apiError1", "addbmark", "b$prime", "render", "mmoment", "mmoment8601", "editField", "f", "$111", "display_exists", "div", "class_", "text", "span", "title", "maybe", "snd", "fst", "button", "ButtonButton", "onClick", "v2", "attr", "display_destroyed", "p", "alert_notification", "alert_text", "display_edit", "form", "onSubmit", "table", "tbody_", "tr_", "td", "td_", "whenH", "isJust", "fromMaybe", "label", "$$for", "input", "InputUrl", "id", "required", "name", "autofocus", "$$null", "onValueChange", "InputText", "disabled", "textarea", "rows", "autocomplete", "AutocompleteOff", "InputCheckbox", "checked", "onChecked", "InputSubmit", "$72", "ifElseH", "mkState", "b", "Nothing", "handleAction", "$77", "$78", "$81", "$82", "edit_bm", "lookupTitle", "mtitle", "Just", "$86", "$87", "bid", "destroy", "$89", "$90", "preventDefault", "editBookmark", "Left", "printError", "log", "Right", "_curQuerystring", "qs", "_doc", "doc", "referrer", "ref", "_loc", "loc", "origin", "org", "_lookupQueryStringValue", "closeWindow", "windowImpl", "v3", "stripPrefix", "setHref", "mkComponent", "$$const", "mkEval", "defaultEval", "unsafeSetInnerHTML", "element", "html", "bindFlipped", "bindMaybe", "getHTMLElementRef", "$24", "map", "functorHalogenM", "v", "bindFlipped", "fromElement", "$25", "getRef", "bind", "bindHalogenM", "get", "monadStateHalogenM", "discard", "discardUnit", "discard1", "for_", "applicativeHalogenM", "foldableMaybe", "liftAff", "monadAffHalogenM", "monadAffAff", "liftEffect", "monadEffectEffect", "mempty", "monoidEffect", "monoidCanceler", "pure", "modify_", "SetInnerHTML", "Receive", "value0", "mkComponent", "toRawHTML", "render", "state", "div", "ref", "handleAction", "v", "v1", "getHTMLElementRef", "mel", "el", "v2", "forkAff", "makeAff", "v3", "unsafeSetInnerHTML", "$26", "$27", "inputval", "mkEval", "defaultEval", "Just", "$30", "_getDefaults", "_defaults", "changeDefaults", "newDefaults", "escapeTest", "escapeReplace", "escapeTestNoEncode", "escapeReplaceNoEncode", "escapeReplacements", "getEscapeReplacement", "ch", "escape", "html", "encode", "unescapeTest", "unescape", "_", "n", "caret", "edit", "regex", "opt", "source", "obj", "name", "val", "valSource", "cleanUrl", "href", "noopTest", "splitCells", "tableRow", "count", "row", "match", "offset", "str", "escaped", "curr", "cells", "i", "rtrim", "c", "invert", "l", "suffLen", "currChar", "findClosingBracket", "b", "level", "outputLink", "cap", "link", "raw", "lexer", "title", "text", "token", "indentCodeCompensation", "matchIndentToCode", "indentToCode", "node", "matchIndentInNode", "indentInNode", "_Tokenizer", "options", "__publicField", "src", "trimmed", "top", "tokens", "bull", "isordered", "list", "itemRegex", "itemContents", "endsWithBlankLine", "endEarly", "line", "t", "nextLine", "indent", "blankLine", "nextBulletRegex", "hrRegex", "fencesBeginRegex", "headingBeginRegex", "rawLine", "istask", "ischecked", "spacers", "hasMultipleLineBreaks", "tag", "headers", "aligns", "rows", "item", "align", "header", "cell", "trimmedUrl", "rtrimSlash", "lastParenIndex", "linkLen", "links", "linkString", "maskedSrc", "prevChar", "lLength", "rDelim", "rLength", "delimTotal", "midDelimTotal", "endReg", "lastCharLength", "hasNonSpaceChars", "hasSpaceCharsOnBothEnds", "prevCapZero", "_b", "_a", "newline", "blockCode", "fences", "hr", "heading", "bullet", "lheading", "_paragraph", "blockText", "_blockLabel", "def", "_tag", "_comment", "paragraph", "blockquote", "blockNormal", "gfmTable", "blockGfm", "__spreadProps", "__spreadValues", "blockPedantic", "inlineCode", "br", "inlineText", "_punctuation", "punctuation", "blockSkip", "emStrongLDelim", "emStrongRDelimAst", "emStrongRDelimUnd", "anyPunctuation", "autolink", "_inlineComment", "_inlineLabel", "reflink", "nolink", "reflinkSearch", "inlineNormal", "inlinePedantic", "inlineGfm", "inlineBreaks", "block", "inline", "_Lexer", "__Lexer", "rules", "next", "leading", "tabs", "lastToken", "cutSrc", "lastParagraphClipped", "extTokenizer", "startIndex", "tempSrc", "tempStart", "getStartIndex", "errMsg", "keepPrevChar", "_Renderer", "code", "infostring", "lang", "quote", "body", "ordered", "start", "type", "startatt", "task", "checked", "content", "flags", "cleanHref", "out", "_TextRenderer", "_Parser", "__Parser", "genericToken", "ret", "headingToken", "codeToken", "tableToken", "j", "k", "blockquoteToken", "listToken", "loose", "itemBody", "checkbox", "htmlToken", "paragraphToken", "textToken", "renderer", "escapeToken", "tagToken", "linkToken", "imageToken", "strongToken", "emToken", "codespanToken", "delToken", "_Hooks", "markdown", "Marked", "args", "__privateAdd", "_parseMarkdown", "_onError", "__privateMethod", "parseMarkdown_fn", "callback", "values", "childTokens", "extensions", "pack", "opts", "ext", "prevRenderer", "extLevel", "prop", "rendererProp", "rendererFunc", "tokenizer", "tokenizerProp", "tokenizerFunc", "prevTokenizer", "hooks", "hooksProp", "hooksFunc", "prevHook", "arg", "walkTokens", "packWalktokens", "parser", "origOpt", "throwError", "onError_fn", "e", "silent", "async", "msg", "markedInstance", "marked", "setOptions", "use", "parseInline", "parser", "_Parser", "lexer", "_Lexer", "import_dompurify", "marked", "markedImpl", "str", "DOMPurify", "marked", "$1", "RawHTML", "markedImpl", "component", "mkComponent", "marked", "log", "dictMonadEffect", "$67", "liftEffect", "$68", "componentSlot", "slot", "dictIsSymbol", "componentSlot1", "componentSlot", "dictOrd", "componentSlot2", "label", "p", "component", "input", "outputQuery", "widget", "ComponentSlot", "$11", "Just", "show", "showInt", "bind", "bindHalogenM", "use", "monadStateHalogenM", "discard", "discardUnit", "liftAff", "monadAffHalogenM", "monadAffAff", "modifying", "modify_", "$$void", "functorHalogenM", "assign", "liftEffect", "monadEffectHalogenM", "monadEffectAff", "when", "applicativeEffect", "gets", "pure", "applicativeHalogenM", "log", "monadEffectEffect", "guard", "monoidString", "slot", "ordUnit", "map", "functorArray", "type_", "isPropButtonType", "guard1", "monoidArray", "type_1", "isPropInputType", "value", "isPropString", "Eurl", "value0", "Etitle", "Edescription", "Etags", "Eprivate", "Etoread", "BNotifyRemove", "BStar", "BDeleteAsk", "BLookupTitle", "BDestroy", "BEdit", "BEditField", "BEditSubmit", "BMarkRead", "_markdown", "$$Proxy", "_edit_bm", "dictStrong", "lens", "v", "v1", "_edit_bm1", "strongFn", "_edit_bm2", "strongForget", "_edit", "_edit1", "_bm", "_bm1", "_bm2", "_apiError", "_apiError1", "bmark", "b$prime", "tagid", "bm", "mkState", "b", "Nothing", "handleAction", "toggleStar", "Star", "UnStar", "$93", "$94", "destroy", "raise", "markRead", "setFocus", "$106", "$107", "edit_bm", "lookupTitle", "mtitle", "Just", "$111", "$112", "preventDefault", "edit_bm$prime", "replaceAll", "editBookmark", "Left", "printError", "Right", "app", "app$prime", "render", "star", "div", "class_", "button", "onClick", "v2", "text", "shdatetime", "take", "shdate", "toLocaleDateString", "linkToFilterTag", "tag", "fromNullableStr", "encodeTag", "linkToFilterSingle", "slug", "editField", "f", "$126", "display", "a", "href", "target", "$121", "$$null", "br_", "fromMaybe", "toMaybe", "isJust", "title", "$122", "component", "absurd", "whenA", "split", "whenH", "ButtonButton", "v3", "span", "alert_notification", "alert_text", "display_edit", "form", "onSubmit", "div_", "input", "InputUrl", "required", "name", "onValueChange", "InputText", "disabled", "textarea", "rows", "id", "autocomplete", "AutocompleteOff", "attr", "InputCheckbox", "checked", "onChecked", "label", "$$for", "InputSubmit", "InputReset", "ifElseH", "mkComponent", "$$const", "mkEval", "defaultEval", "map", "functorArray", "slot", "ordInt", "modify_", "monadStateHalogenM", "HandleBMessage", "value0", "value1", "_bookmark", "$$Proxy", "blist", "st", "render", "bms", "div_", "b", "bmark", "handleAction", "v", "filter", "mkComponent", "$$const", "mkEval", "defaultEval", "foldMap", "monoidArray", "pure", "applicativeHalogenM", "show", "showInt", "map", "functorArray", "nlist", "st$prime", "toTextarea", "input", "drop", "foldMap", "x", "br_", "text", "split", "mmoment", "note", "mmoment8601", "mkState", "notes$prime", "Nothing", "handleAction", "v", "pure", "app", "app$prime", "linkToFilterSingle", "slug", "fromNullableStr", "render", "renderNote", "div", "id", "show", "class_", "a", "href", "$11", "$$null", "take", "title", "maybe", "snd", "fst", "div_", "map", "mkComponent", "$$const", "mkEval", "defaultEval", "show", "showInt", "pure", "applicativeHalogenM", "modifying", "monadStateHalogenM", "modify_", "bind", "bindHalogenM", "use", "discard", "discardUnit", "$$void", "functorHalogenM", "liftAff", "monadAffHalogenM", "monadAffAff", "assign", "liftEffect", "monadEffectHalogenM", "monadEffectAff", "bindFlipped", "bindEffect", "whenM", "monadEffect", "pure1", "applicativeEffect", "foldMap", "monoidArray", "slot", "ordUnit", "type_", "isPropButtonType", "guard", "monoidString", "type_1", "isPropInputType", "value", "isPropString", "Etitle", "value0", "Etext", "EisMarkdown", "Eshared", "NNop", "NEditField", "NEditSubmit", "NEdit", "NDeleteAsk", "NDestroy", "_note", "dictStrong", "lens", "v", "v1", "_note1", "strongForget", "_note2", "strongFn", "_markdown", "$$Proxy", "_edit_note", "_edit_note1", "_edit_note2", "_edit", "_edit1", "_apiError", "_apiError1", "nnote", "st$prime", "notetextid", "note", "mkState", "note$prime", "Nothing", "app", "app$prime", "handleAction", "$84", "$85", "destroyNote", "$88", "$89", "_curQuerystring", "qs", "$91", "_lookupQueryStringValue", "Just", "closeWindow", "windowImpl", "setFocus", "preventDefault", "edit_note", "editNote", "Left", "printError", "log", "Right", "_doc", "doc", "referrer", "ref", "_loc", "loc", "origin", "org", "v2", "$100", "isJust", "stripPrefix", "setHref", "$102", "fromNullableStr", "render", "toTextarea", "input", "drop", "x", "br_", "text", "split", "mmoment", "n", "mmoment8601", "renderNote", "div", "id", "class_", "$108", "$$null", "component", "absurd", "span", "title", "maybe", "snd", "fst", "whenH", "button", "ButtonButton", "onClick", "v3", "editField", "f", "$114", "display_destroyed", "p", "alert_notification", "alert_text", "renderNote_edit", "form", "onSubmit", "fromMaybe", "InputText", "name", "onValueChange", "autofocus", "textarea", "rows", "InputCheckbox", "checked", "onChecked", "label", "$$for", "InputSubmit", "InputReset", "ifElseH", "$$const", "mkComponent", "mkEval", "defaultEval", "pure", "applicativeHalogenM", "bind", "bindHalogenM", "liftAff", "monadAffHalogenM", "monadAffAff", "modify_", "monadStateHalogenM", "gets", "discard", "discardUnit", "$$void", "functorHalogenM", "eq", "eqTagCloudModeF", "identity", "categoryFn", "show", "showNumber", "notElem", "eqString", "map", "functorArray", "$$delete", "comparing", "ordString", "toUnfoldable", "unfoldableArray", "append1", "append", "semigroupArray", "type_", "isPropButtonType", "guard", "monoidString", "minimum", "ordInt", "foldableArray", "maximum", "TInitialize", "TExpanded", "value0", "TChangeMode", "tagcloudcomponent", "m$prime", "rescale", "f", "n", "m", "l", "h", "$57", "mkState", "empty", "fetchTagCloud", "mode$prime", "TagCloudModeNone", "getTagCloud", "tagCloudModeFromF", "tagcloud", "s", "$59", "$60", "fromMaybe", "handleAction", "v", "v1", "mode", "$63", "$64", "setExpanded", "updateTagCloudMode", "$67", "isExpanded", "app", "app$prime", "linkToFilterTag", "rest", "fromNullableStr", "$69", "$$null", "toSizedTag", "curtags", "k", "opacity", "$79", "log", "toNumber", "k_lower", "toLower", "fontsize", "style", "attr", "a", "href", "encodeTag", "class_", "text", "whenH", "$70", "joinWith", "cons", "toArray", "$80", "uncurry", "$81", "sortBy", "$83", "fst", "$82", "concat", "render", "div", "modetop", "TagCloudModeTop", "modelb5", "TagCloudModeLowerBound", "modelb20", "modelb2", "modelb10", "modelb1", "ifElseA", "isRelated", "button", "ButtonButton", "onClick", "v2", "title", "$73", "values", "TagCloudModeRelated", "mkComponent", "$$const", "mkEval", "defaultEval", "Just", "bind", "bindAff", "liftEffect", "monadEffectAff", "bindFlipped", "bindEffect", "composeKleisliFlipped", "pure", "applicativeAff", "bindFlipped1", "bindMaybe", "pure1", "applicativeEffect", "selectElement", "query", "bind", "liftEffect", "bindFlipped", "composeKleisliFlipped", "$16", "querySelector", "$17", "toParentNode", "document", "windowImpl", "mel", "pure", "bindFlipped1", "fromElement", "runHalogenAff", "runAff_", "either", "throwException", "$$const", "pure1", "monadForkAff", "suspendAff", "forkAff", "joinFiber", "monadAff", "functorFiber", "fork", "dict", "unRenderStateX", "unsafeCoerce", "unDriverStateX", "renderStateX_", "dictApplicative", "traverse_", "foldableMaybe", "f", "st", "mkRenderStateX", "renderStateX", "dictFunctor", "mkDriverStateXRef", "mapDriverState", "v", "initDriverState", "component", "input", "handler", "lchs", "selfRef", "$$new", "childrenIn", "empty", "childrenOut", "handlerRef", "pendingQueries", "Just", "Nil", "pendingOuts", "pendingHandlers", "Nothing", "fresh", "subscriptions", "forks", "ds", "write", "traverse_", "applicativeEffect", "foldableMaybe", "bindFlipped", "bindMaybe", "lookup", "ordSubscriptionId", "bind1", "bind", "bindAff", "liftEffect", "monadEffectAff", "discard", "discardUnit", "discard1", "traverse_1", "applicativeAff", "traverse_2", "foldableList", "fork", "monadForkAff", "parSequence_", "parallelAff", "applicativeParAff", "pure", "map", "functorCoyoneda", "parallel", "map1", "functorAff", "sequential", "map2", "functorMaybe", "insert", "retractFreeAp", "$$delete", "ordForkId", "unlessM", "monadEffect", "insert1", "traverse_3", "lookup1", "lookup2", "ordString", "foldFree", "monadRecAff", "alter", "unsubscribe", "sid", "ref", "v", "read", "subs", "queueOrRun", "au", "Nothing", "Just", "write", "Cons", "handleLifecycle", "lchs", "f", "Nil", "result", "handleAff", "runAff_", "either", "throwException", "$$const", "fresh", "modify$prime", "i", "evalQ", "render", "q", "evalM", "Query", "liftCoyoneda", "initRef", "evalChildQuery", "cqb", "v1", "unChildQueryBox", "v2", "evalChild", "v3", "dsx", "unDriverStateX", "ds", "go", "State", "unsafeRefEq", "otherwise", "Subscribe", "SubscriptionId", "subscribe", "act", "evalF", "Action", "finalize", "modify_", "Unsubscribe", "Lift", "ChildQuery", "Raise", "handler", "Par", "hoistFreeAp", "$119", "$120", "Fork", "ForkId", "fid", "$$new", "doneRef", "$$finally", "fiber", "Join", "forkMap", "joinFiber", "Kill", "killFiber", "error", "GetRef", "RefUpdate", "flip", "mapDriverState", "st", "bind", "bindEffect", "discard", "discardUnit", "for_", "applicativeEffect", "foldableMaybe", "traverse_", "applicativeAff", "foldableList", "fork", "monadForkAff", "bindFlipped", "traverse_1", "traverse_2", "traverse_3", "foldableMap", "discard2", "bindAff", "parSequence_", "parallelAff", "applicativeParAff", "liftEffect", "monadEffectAff", "pure", "map", "functorEffect", "pure1", "when", "renderStateX", "$$void", "functorAff", "foreachSlot", "renderStateX_", "tailRecM", "monadRecEffect", "voidLeft", "bind1", "liftEffect1", "monadEffectEffect", "newLifecycleHandlers", "$$new", "Nil", "handlePending", "ref", "queue", "read", "write", "Nothing", "$59", "$60", "handleAff", "reverse", "cleanupSubscriptionsAndForks", "v", "unsubscribe", "$61", "killFiber", "error", "$62", "empty", "runUI", "renderSpec", "component", "i", "squashChildInitializers", "lchs", "preInits", "unDriverStateX", "st", "parentInitializer", "evalM", "render", "Initialize", "modify_", "handlers", "Cons", "runComponent", "handler", "j", "unComponent", "c", "lchs$prime", "$$var", "initDriverState", "pre", "$63", "$64", "renderChild", "childrenInRef", "childrenOutRef", "unComponentSlot", "slot", "childrenIn", "Just", "dsx", "flip", "$65", "maybe", "$66", "Receive", "$67", "$68", "isDuplicate", "$69", "isJust", "warn", "$$throw", "shouldProcessHandlers", "isNothing", "$70", "queueOrRun", "$71", "evalF", "$72", "childHandler", "$73", "$74", "Action", "rendering", "$75", "children", "v1", "childDS", "finalize", "mapDriverState", "ds$prime", "$76", "$77", "mmore", "$52", "$$null", "Done", "Loop", "f", "Finalize", "evalDriver", "disposed", "q", "evalQ", "dispose", "handleLifecycle", "v2", "sio", "create", "$78", "notify", "$79", "getEffProp", "name", "node", "baseURI", "getEffProp", "_ownerDocument", "_parentNode", "_parentElement", "childNodes", "getEffProp", "_firstChild", "_lastChild", "_previousSibling", "_nextSibling", "_nodeValue", "textContent", "getEffProp", "insertBefore", "node1", "node2", "parent", "appendChild", "node", "removeChild", "node", "parent", "map", "functorEffect", "parentNode", "$6", "map", "toMaybe", "$7", "_parentNode", "nextSibling", "$15", "map", "toMaybe", "$16", "_nextSibling", "$runtime_lazy", "name", "moduleName", "init", "state", "val", "lineNumber", "$$void", "functorEffect", "pure", "applicativeEffect", "traverse_", "foldableMaybe", "unwrap", "when", "not", "heytingAlgebraFunction", "heytingAlgebraBoolean", "identity", "categoryFn", "bind1", "bind", "bindAff", "liftEffect", "monadEffectAff", "map", "bindFlipped", "bindEffect", "substInParent", "v", "v1", "v2", "Just", "$$void", "insertBefore", "Nothing", "appendChild", "pure", "removeChild", "npn", "parentNode", "traverse_", "pn", "mkSpec", "handler", "renderChildRef", "document", "getNode", "unRenderStateX", "done", "st", "halt", "buildWidget", "spec", "buildThunk", "unwrap", "$lazy_patch", "$runtime_lazy", "slot", "ComponentSlot", "$lazy_renderComponentSlot", "ThunkSlot", "step$prime", "step", "mkStep", "Step", "extract", "$lazy_render", "cs", "renderChild", "read", "rsx", "node", "patch", "render", "renderComponentSlot", "buildAttributes", "buildProp", "renderSpec", "container", "child", "$$new", "machine", "buildVDom", "toNode", "write", "parent", "nextSib", "nextSibling", "machine$prime", "newNode", "when", "not", "unsafeRefEq", "identity", "runUI", "component", "i", "element", "bind1", "liftEffect", "map", "toDocument", "bindFlipped", "windowImpl", "bind", "bindAff", "traverse_", "applicativeAff", "foldableMaybe", "liftEffect", "monadEffectAff", "$$void", "functorAff", "discard", "discardUnit", "bindFlipped", "bindEffect", "void1", "functorEffect", "viewRendered", "selectElement", "el", "setAttribute", "toElement", "renderTagCloud", "renderElSelector", "tagCloudMode", "runHalogenAff", "runUI", "tagcloudcomponent", "tagCloudModeToF", "renderNotes", "notes", "nlist", "renderNote", "note", "nnote", "renderBookmarks", "bmarks", "blist", "renderAddForm", "bmark", "addbmark", "renderAccountSettings", "accountSettings", "usetting", "logoutE", "e", "$10", "launchAff", "logout", "preventDefault"] + "sources": ["../node_modules/moment/moment.js", "../node_modules/dompurify/src/utils.js", "../node_modules/dompurify/src/tags.js", "../node_modules/dompurify/src/attrs.js", "../node_modules/dompurify/src/regexp.js", "../node_modules/dompurify/src/purify.js", "../output/Affjax/foreign.js", "../output/Data.Functor/foreign.js", "../.spago/p/prelude-6.0.1/src/Control/Semigroupoid.purs", "../.spago/p/prelude-6.0.1/src/Control/Category.purs", "../.spago/p/prelude-6.0.1/src/Data/Boolean.purs", "../.spago/p/prelude-6.0.1/src/Data/Function.purs", "../.spago/p/prelude-6.0.1/src/Type/Proxy.purs", "../.spago/p/prelude-6.0.1/src/Data/Functor.purs", "../output/Data.Semigroup/foreign.js", "../.spago/p/prelude-6.0.1/src/Data/Symbol.purs", "../.spago/p/prelude-6.0.1/src/Data/Void.purs", "../output/Record.Unsafe/foreign.js", "../.spago/p/prelude-6.0.1/src/Data/Semigroup.purs", "../.spago/p/control-6.0.0/src/Control/Alt.purs", "../output/Control.Apply/foreign.js", "../.spago/p/prelude-6.0.1/src/Control/Apply.purs", "../.spago/p/prelude-6.0.1/src/Control/Applicative.purs", "../output/Data.Bounded/foreign.js", "../output/Data.Ord/foreign.js", "../output/Data.Eq/foreign.js", "../.spago/p/prelude-6.0.1/src/Data/Eq.purs", "../.spago/p/prelude-6.0.1/src/Data/Ordering.purs", "../output/Data.Ring/foreign.js", "../output/Data.Semiring/foreign.js", "../.spago/p/prelude-6.0.1/src/Data/Semiring.purs", "../.spago/p/prelude-6.0.1/src/Data/Ring.purs", "../.spago/p/prelude-6.0.1/src/Data/Ord.purs", "../.spago/p/prelude-6.0.1/src/Data/Bounded.purs", "../output/Data.Show/foreign.js", "../.spago/p/prelude-6.0.1/src/Data/Show.purs", "../.spago/p/maybe-6.0.0/src/Data/Maybe.purs", "../.spago/p/media-types-6.0.0/src/Data/MediaType/Common.purs", "../.spago/p/affjax-13.0.0/src/Affjax/RequestBody.purs", "../output/Unsafe.Coerce/foreign.js", "../.spago/p/safe-coerce-2.0.0/src/Safe/Coerce.purs", "../.spago/p/newtype-5.0.0/src/Data/Newtype.purs", "../.spago/p/affjax-13.0.0/src/Affjax/RequestHeader.purs", "../.spago/p/affjax-13.0.0/src/Affjax/ResponseFormat.purs", "../.spago/p/affjax-13.0.0/src/Affjax/ResponseHeader.purs", "../output/Control.Bind/foreign.js", "../.spago/p/prelude-6.0.1/src/Control/Bind.purs", "../.spago/p/either-6.1.0/src/Data/Either.purs", "../output/Effect/foreign.js", "../.spago/p/prelude-6.0.1/src/Control/Monad.purs", "../output/Data.EuclideanRing/foreign.js", "../.spago/p/prelude-6.0.1/src/Data/CommutativeRing.purs", "../.spago/p/prelude-6.0.1/src/Data/EuclideanRing.purs", "../.spago/p/prelude-6.0.1/src/Data/Monoid.purs", "../.spago/p/effect-4.0.0/src/Effect.purs", "../output/Effect.Exception/foreign.js", "../.spago/p/exceptions-6.0.0/src/Effect/Exception.purs", "../.spago/p/transformers-6.0.0/src/Control/Monad/Error/Class.purs", "../.spago/p/identity-6.0.0/src/Data/Identity.purs", "../output/Effect.Ref/foreign.js", "../.spago/p/refs-6.0.0/src/Effect/Ref.purs", "../.spago/p/tailrec-6.1.0/src/Control/Monad/Rec/Class.purs", "../output/Data.HeytingAlgebra/foreign.js", "../.spago/p/prelude-6.0.1/src/Data/HeytingAlgebra.purs", "../.spago/p/tuples-7.0.0/src/Data/Tuple.purs", "../.spago/p/transformers-6.0.0/src/Control/Monad/State/Class.purs", "../.spago/p/effect-4.0.0/src/Effect/Class.purs", "../.spago/p/transformers-6.0.0/src/Control/Monad/Except/Trans.purs", "../.spago/p/transformers-6.0.0/src/Control/Monad/Except.purs", "../output/Data.Argonaut.Core/foreign.js", "../output/Foreign.Object/foreign.js", "../output/Data.Array/foreign.js", "../output/Data.Array.ST/foreign.js", "../output/Control.Monad.ST.Uncurried/foreign.js", "../.spago/p/arrays-7.3.0/src/Data/Array/ST.purs", "../output/Data.Foldable/foreign.js", "../.spago/p/control-6.0.0/src/Control/Plus.purs", "../.spago/p/bifunctors-6.0.0/src/Data/Bifunctor.purs", "../.spago/p/prelude-6.0.1/src/Data/Monoid/Disj.purs", "../.spago/p/foldable-traversable-6.0.0/src/Data/Foldable.purs", "../output/Data.Function.Uncurried/foreign.js", "../output/Data.Traversable/foreign.js", "../.spago/p/foldable-traversable-6.0.0/src/Data/Traversable.purs", "../output/Data.Unfoldable/foreign.js", "../output/Data.Unfoldable1/foreign.js", "../.spago/p/unfoldable-6.0.0/src/Data/Unfoldable1.purs", "../.spago/p/unfoldable-6.0.0/src/Data/Unfoldable.purs", "../.spago/p/arrays-7.3.0/src/Data/Array.purs", "../output/Foreign.Object.ST/foreign.js", "../.spago/p/foreign-object-4.1.0/src/Foreign/Object.purs", "../.spago/p/argonaut-core-7.0.0/src/Data/Argonaut/Core.purs", "../output/Data.Argonaut.Parser/foreign.js", "../.spago/p/argonaut-core-7.0.0/src/Data/Argonaut/Parser.purs", "../output/Data.String.Common/foreign.js", "../.spago/p/strings-6.0.1/src/Data/String/Common.purs", "../output/JSURI/foreign.js", "../.spago/p/js-uri-3.1.0/src/JSURI.purs", "../.spago/p/form-urlencoded-7.0.0/src/Data/FormURLEncoded.purs", "../.spago/p/http-methods-6.0.0/src/Data/HTTP/Method.purs", "../.spago/p/nonempty-7.0.0/src/Data/NonEmpty.purs", "../.spago/p/lists-7.0.0/src/Data/List/Types.purs", "../.spago/p/lists-7.0.0/src/Data/List.purs", "../output/Partial.Unsafe/foreign.js", "../output/Partial/foreign.js", "../.spago/p/partial-4.0.0/src/Partial.purs", "../.spago/p/partial-4.0.0/src/Partial/Unsafe.purs", "../.spago/p/lists-7.0.0/src/Data/List/NonEmpty.purs", "../output/Data.Nullable/foreign.js", "../.spago/p/nullable-6.0.0/src/Data/Nullable.purs", "../output/Effect.Aff/foreign.js", "../.spago/p/profunctor-6.0.0/src/Data/Profunctor.purs", "../.spago/p/parallel-7.0.0/src/Control/Parallel/Class.purs", "../.spago/p/parallel-7.0.0/src/Control/Parallel.purs", "../output/Effect.Unsafe/foreign.js", "../.spago/p/aff-7.1.0/src/Effect/Aff.purs", "../.spago/p/aff-7.1.0/src/Effect/Aff/Compat.purs", "../output/Foreign/foreign.js", "../output/Data.Int/foreign.js", "../output/Data.Number/foreign.js", "../.spago/p/integers-6.0.0/src/Data/Int.purs", "../output/Data.String.CodeUnits/foreign.js", "../output/Data.String.Unsafe/foreign.js", "../.spago/p/strings-6.0.1/src/Data/String/CodeUnits.purs", "../.spago/p/foreign-7.0.0/src/Foreign.purs", "../.spago/p/affjax-13.0.0/src/Affjax.purs", "../.spago/p/affjax-13.0.0/src/Affjax/StatusCode.purs", "../output/Affjax.Web/foreign.js", "../.spago/p/affjax-web-1.0.0/src/Affjax/Web.purs", "../output/Globals/foreign.js", "../src/Globals.purs", "../output/Simple.JSON/foreign.js", "../output/Data.Enum/foreign.js", "../.spago/p/enums-6.0.1/src/Data/Enum.purs", "../output/Foreign.Index/foreign.js", "../.spago/p/foreign-7.0.0/src/Foreign/Index.purs", "../.spago/p/record-4.0.0/src/Record.purs", "../output/Record.Builder/foreign.js", "../.spago/p/record-4.0.0/src/Record/Builder.purs", "../.spago/p/simple-json-9.0.0/src/Simple/JSON.purs", "../src/Model.purs", "../output/Web.HTML/foreign.js", "../.spago/p/web-html-4.1.0/src/Web/HTML/Common.purs", "../output/Web.HTML.HTMLDocument/foreign.js", "../.spago/p/web-html-4.1.0/src/Web/HTML/HTMLDocument.purs", "../output/Web.HTML.HTMLElement/foreign.js", "../.spago/p/web-html-4.1.0/src/Web/HTML/HTMLElement.purs", "../output/Web.HTML.Location/foreign.js", "../output/Web.HTML.Window/foreign.js", "../src/App.purs", "../.spago/p/dom-indexed-12.0.0/src/DOM/HTML/Indexed/InputType.purs", "../.spago/p/profunctor-lenses-8.0.0/src/Data/Lens/Internal/Forget.purs", "../.spago/p/profunctor-6.0.0/src/Data/Profunctor/Strong.purs", "../.spago/p/profunctor-lenses-8.0.0/src/Data/Lens/Getter.purs", "../.spago/p/profunctor-lenses-8.0.0/src/Data/Lens/Lens.purs", "../.spago/p/profunctor-lenses-8.0.0/src/Data/Lens/Setter.purs", "../.spago/p/aff-7.1.0/src/Effect/Aff/Class.purs", "../.spago/p/exists-6.0.0/src/Data/Exists.purs", "../.spago/p/free-7.1.0/src/Data/Coyoneda.purs", "../.spago/p/ordered-collections-3.1.1/src/Data/Map/Internal.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Data/OrdBox.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Data/Slot.purs", "../.spago/p/dom-indexed-12.0.0/src/DOM/HTML/Indexed/AutocompleteType.purs", "../.spago/p/dom-indexed-12.0.0/src/DOM/HTML/Indexed/ButtonType.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Query/Input.purs", "../.spago/p/halogen-vdom-8.0.0/src/Halogen/VDom/Machine.purs", "../.spago/p/halogen-vdom-8.0.0/src/Halogen/VDom/Types.purs", "../output/Halogen.VDom.Util/foreign.js", "../.spago/p/halogen-vdom-8.0.0/src/Halogen/VDom/Util.purs", "../output/Web.DOM.Element/foreign.js", "../output/Web.DOM.ParentNode/foreign.js", "../.spago/p/web-dom-6.0.0/src/Web/DOM/ParentNode.purs", "../.spago/p/web-dom-6.0.0/src/Web/DOM/Element.purs", "../.spago/p/halogen-vdom-8.0.0/src/Halogen/VDom/DOM.purs", "../output/Web.Event.EventTarget/foreign.js", "../.spago/p/halogen-vdom-8.0.0/src/Halogen/VDom/DOM/Prop.purs", "../.spago/p/halogen-7.0.0/src/Halogen/HTML/Core.purs", "../.spago/p/freeap-7.0.0/src/Control/Applicative/Free.purs", "../.spago/p/catenable-lists-7.0.0/src/Data/CatQueue.purs", "../.spago/p/catenable-lists-7.0.0/src/Data/CatList.purs", "../.spago/p/free-7.1.0/src/Control/Monad/Free.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Query/ChildQuery.purs", "../output/Unsafe.Reference/foreign.js", "../.spago/p/unsafe-reference-5.0.0/src/Unsafe/Reference.purs", "../.spago/p/halogen-subscriptions-2.0.0/src/Halogen/Subscription.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Query/HalogenM.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Query/HalogenQ.purs", "../.spago/p/halogen-vdom-8.0.0/src/Halogen/VDom/Thunk.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Component.purs", "../.spago/p/halogen-7.0.0/src/Halogen/HTML/Elements.purs", "../output/Web.Event.Event/foreign.js", "../.spago/p/web-events-4.0.0/src/Web/Event/Event.purs", "../.spago/p/web-html-4.1.0/src/Web/HTML/Event/EventTypes.purs", "../.spago/p/web-uievents-5.0.0/src/Web/UIEvent/MouseEvent/EventTypes.purs", "../.spago/p/halogen-7.0.0/src/Halogen/HTML/Events.purs", "../.spago/p/halogen-7.0.0/src/Halogen/HTML/Properties.purs", "../output/Data.String.CodePoints/foreign.js", "../.spago/p/strings-6.0.1/src/Data/String/CodePoints.purs", "../output/Web.DOM.Document/foreign.js", "../src/Util.purs", "../src/Component/AccountSettings.purs", "../output/Effect.Console/foreign.js", "../src/Component/Add.purs", "../output/Component.RawHtml/foreign.js", "../.spago/p/halogen-7.0.0/src/Halogen/Query.purs", "../src/Component/RawHtml.purs", "../node_modules/marked/src/defaults.ts", "../node_modules/marked/src/helpers.ts", "../node_modules/marked/src/Tokenizer.ts", "../node_modules/marked/src/rules.ts", "../node_modules/marked/src/Lexer.ts", "../node_modules/marked/src/Renderer.ts", "../node_modules/marked/src/TextRenderer.ts", "../node_modules/marked/src/Parser.ts", "../node_modules/marked/src/Hooks.ts", "../node_modules/marked/src/Instance.ts", "../node_modules/marked/src/marked.ts", "../output/Foreign.Marked/foreign.js", "../src/Marked.purs", "../src/Component/Markdown.purs", "../.spago/p/console-6.1.0/src/Effect/Class/Console.purs", "../.spago/p/halogen-7.0.0/src/Halogen/HTML.purs", "../src/Component/BMark.purs", "../src/Component/BList.purs", "../src/Component/NList.purs", "../src/Component/NNote.purs", "../src/Component/TagCloud.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Aff/Util.purs", "../.spago/p/fork-6.0.0/src/Control/Monad/Fork/Class.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Aff/Driver/State.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Aff/Driver/Eval.purs", "../.spago/p/halogen-7.0.0/src/Halogen/Aff/Driver.purs", "../output/Web.DOM.Node/foreign.js", "../.spago/p/web-dom-6.0.0/src/Web/DOM/Node.purs", "../.spago/p/halogen-7.0.0/src/Halogen/VDom/Driver.purs", "../src/Main.purs"], + "sourcesContent": ["//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n", "const {\n entries,\n setPrototypeOf,\n isFrozen,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n} = Object;\n\nlet { freeze, seal, create } = Object; // eslint-disable-line import/no-mutable-exports\nlet { apply, construct } = typeof Reflect !== 'undefined' && Reflect;\n\nif (!freeze) {\n freeze = function (x) {\n return x;\n };\n}\n\nif (!seal) {\n seal = function (x) {\n return x;\n };\n}\n\nif (!apply) {\n apply = function (fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n}\n\nif (!construct) {\n construct = function (Func, args) {\n return new Func(...args);\n };\n}\n\nconst arrayForEach = unapply(Array.prototype.forEach);\nconst arrayIndexOf = unapply(Array.prototype.indexOf);\nconst arrayPop = unapply(Array.prototype.pop);\nconst arrayPush = unapply(Array.prototype.push);\nconst arraySlice = unapply(Array.prototype.slice);\n\nconst stringToLowerCase = unapply(String.prototype.toLowerCase);\nconst stringToString = unapply(String.prototype.toString);\nconst stringMatch = unapply(String.prototype.match);\nconst stringReplace = unapply(String.prototype.replace);\nconst stringIndexOf = unapply(String.prototype.indexOf);\nconst stringTrim = unapply(String.prototype.trim);\n\nconst regExpTest = unapply(RegExp.prototype.test);\n\nconst typeErrorCreate = unconstruct(TypeError);\n\n/**\n * Creates a new function that calls the given function with a specified thisArg and arguments.\n *\n * @param {Function} func - The function to be wrapped and called.\n * @returns {Function} A new function that calls the given function with a specified thisArg and arguments.\n */\nfunction unapply(func) {\n return (thisArg, ...args) => apply(func, thisArg, args);\n}\n\n/**\n * Creates a new function that constructs an instance of the given constructor function with the provided arguments.\n *\n * @param {Function} func - The constructor function to be wrapped and called.\n * @returns {Function} A new function that constructs an instance of the given constructor function with the provided arguments.\n */\nfunction unconstruct(func) {\n return (...args) => construct(func, args);\n}\n\n/**\n * Add properties to a lookup table\n *\n * @param {Object} set - The set to which elements will be added.\n * @param {Array} array - The array containing elements to be added to the set.\n * @param {Function} transformCaseFunc - An optional function to transform the case of each element before adding to the set.\n * @returns {Object} The modified set with added elements.\n */\nfunction addToSet(set, array, transformCaseFunc = stringToLowerCase) {\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n let l = array.length;\n while (l--) {\n let element = array[l];\n if (typeof element === 'string') {\n const lcElement = transformCaseFunc(element);\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n}\n\n/**\n * Clean up an array to harden against CSPP\n *\n * @param {Array} array - The array to be cleaned.\n * @returns {Array} The cleaned version of the array\n */\nfunction cleanArray(array) {\n for (let index = 0; index < array.length; index++) {\n if (getOwnPropertyDescriptor(array, index) === undefined) {\n array[index] = null;\n }\n }\n\n return array;\n}\n\n/**\n * Shallow clone an object\n *\n * @param {Object} object - The object to be cloned.\n * @returns {Object} A new object that copies the original.\n */\nfunction clone(object) {\n const newObject = create(null);\n\n for (const [property, value] of entries(object)) {\n if (getOwnPropertyDescriptor(object, property) !== undefined) {\n if (Array.isArray(value)) {\n newObject[property] = cleanArray(value);\n } else if (\n value &&\n typeof value === 'object' &&\n value.constructor === Object\n ) {\n newObject[property] = clone(value);\n } else {\n newObject[property] = value;\n }\n }\n }\n\n return newObject;\n}\n\n/**\n * This method automatically checks if the prop is function or getter and behaves accordingly.\n *\n * @param {Object} object - The object to look up the getter function in its prototype chain.\n * @param {String} prop - The property name for which to find the getter function.\n * @returns {Function} The getter function found in the prototype chain or a fallback function.\n */\nfunction lookupGetter(object, prop) {\n while (object !== null) {\n const desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n}\n\nexport {\n // Array\n arrayForEach,\n arrayIndexOf,\n arrayPop,\n arrayPush,\n arraySlice,\n // Object\n entries,\n freeze,\n getPrototypeOf,\n getOwnPropertyDescriptor,\n isFrozen,\n setPrototypeOf,\n seal,\n clone,\n create,\n // RegExp\n regExpTest,\n // String\n stringIndexOf,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringTrim,\n // Errors\n typeErrorCreate,\n // Other\n lookupGetter,\n addToSet,\n // Reflect\n unapply,\n unconstruct,\n};\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'a',\n 'abbr',\n 'acronym',\n 'address',\n 'area',\n 'article',\n 'aside',\n 'audio',\n 'b',\n 'bdi',\n 'bdo',\n 'big',\n 'blink',\n 'blockquote',\n 'body',\n 'br',\n 'button',\n 'canvas',\n 'caption',\n 'center',\n 'cite',\n 'code',\n 'col',\n 'colgroup',\n 'content',\n 'data',\n 'datalist',\n 'dd',\n 'decorator',\n 'del',\n 'details',\n 'dfn',\n 'dialog',\n 'dir',\n 'div',\n 'dl',\n 'dt',\n 'element',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'font',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'head',\n 'header',\n 'hgroup',\n 'hr',\n 'html',\n 'i',\n 'img',\n 'input',\n 'ins',\n 'kbd',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'map',\n 'mark',\n 'marquee',\n 'menu',\n 'menuitem',\n 'meter',\n 'nav',\n 'nobr',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'picture',\n 'pre',\n 'progress',\n 'q',\n 'rp',\n 'rt',\n 'ruby',\n 's',\n 'samp',\n 'section',\n 'select',\n 'shadow',\n 'small',\n 'source',\n 'spacer',\n 'span',\n 'strike',\n 'strong',\n 'style',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'template',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'track',\n 'tt',\n 'u',\n 'ul',\n 'var',\n 'video',\n 'wbr',\n]);\n\n// SVG\nexport const svg = freeze([\n 'svg',\n 'a',\n 'altglyph',\n 'altglyphdef',\n 'altglyphitem',\n 'animatecolor',\n 'animatemotion',\n 'animatetransform',\n 'circle',\n 'clippath',\n 'defs',\n 'desc',\n 'ellipse',\n 'filter',\n 'font',\n 'g',\n 'glyph',\n 'glyphref',\n 'hkern',\n 'image',\n 'line',\n 'lineargradient',\n 'marker',\n 'mask',\n 'metadata',\n 'mpath',\n 'path',\n 'pattern',\n 'polygon',\n 'polyline',\n 'radialgradient',\n 'rect',\n 'stop',\n 'style',\n 'switch',\n 'symbol',\n 'text',\n 'textpath',\n 'title',\n 'tref',\n 'tspan',\n 'view',\n 'vkern',\n]);\n\nexport const svgFilters = freeze([\n 'feBlend',\n 'feColorMatrix',\n 'feComponentTransfer',\n 'feComposite',\n 'feConvolveMatrix',\n 'feDiffuseLighting',\n 'feDisplacementMap',\n 'feDistantLight',\n 'feDropShadow',\n 'feFlood',\n 'feFuncA',\n 'feFuncB',\n 'feFuncG',\n 'feFuncR',\n 'feGaussianBlur',\n 'feImage',\n 'feMerge',\n 'feMergeNode',\n 'feMorphology',\n 'feOffset',\n 'fePointLight',\n 'feSpecularLighting',\n 'feSpotLight',\n 'feTile',\n 'feTurbulence',\n]);\n\n// List of SVG elements that are disallowed by default.\n// We still need to know them so that we can do namespace\n// checks properly in case one wants to add them to\n// allow-list.\nexport const svgDisallowed = freeze([\n 'animate',\n 'color-profile',\n 'cursor',\n 'discard',\n 'font-face',\n 'font-face-format',\n 'font-face-name',\n 'font-face-src',\n 'font-face-uri',\n 'foreignobject',\n 'hatch',\n 'hatchpath',\n 'mesh',\n 'meshgradient',\n 'meshpatch',\n 'meshrow',\n 'missing-glyph',\n 'script',\n 'set',\n 'solidcolor',\n 'unknown',\n 'use',\n]);\n\nexport const mathMl = freeze([\n 'math',\n 'menclose',\n 'merror',\n 'mfenced',\n 'mfrac',\n 'mglyph',\n 'mi',\n 'mlabeledtr',\n 'mmultiscripts',\n 'mn',\n 'mo',\n 'mover',\n 'mpadded',\n 'mphantom',\n 'mroot',\n 'mrow',\n 'ms',\n 'mspace',\n 'msqrt',\n 'mstyle',\n 'msub',\n 'msup',\n 'msubsup',\n 'mtable',\n 'mtd',\n 'mtext',\n 'mtr',\n 'munder',\n 'munderover',\n 'mprescripts',\n]);\n\n// Similarly to SVG, we want to know all MathML elements,\n// even those that we disallow by default.\nexport const mathMlDisallowed = freeze([\n 'maction',\n 'maligngroup',\n 'malignmark',\n 'mlongdiv',\n 'mscarries',\n 'mscarry',\n 'msgroup',\n 'mstack',\n 'msline',\n 'msrow',\n 'semantics',\n 'annotation',\n 'annotation-xml',\n 'mprescripts',\n 'none',\n]);\n\nexport const text = freeze(['#text']);\n", "import { freeze } from './utils.js';\n\nexport const html = freeze([\n 'accept',\n 'action',\n 'align',\n 'alt',\n 'autocapitalize',\n 'autocomplete',\n 'autopictureinpicture',\n 'autoplay',\n 'background',\n 'bgcolor',\n 'border',\n 'capture',\n 'cellpadding',\n 'cellspacing',\n 'checked',\n 'cite',\n 'class',\n 'clear',\n 'color',\n 'cols',\n 'colspan',\n 'controls',\n 'controlslist',\n 'coords',\n 'crossorigin',\n 'datetime',\n 'decoding',\n 'default',\n 'dir',\n 'disabled',\n 'disablepictureinpicture',\n 'disableremoteplayback',\n 'download',\n 'draggable',\n 'enctype',\n 'enterkeyhint',\n 'face',\n 'for',\n 'headers',\n 'height',\n 'hidden',\n 'high',\n 'href',\n 'hreflang',\n 'id',\n 'inputmode',\n 'integrity',\n 'ismap',\n 'kind',\n 'label',\n 'lang',\n 'list',\n 'loading',\n 'loop',\n 'low',\n 'max',\n 'maxlength',\n 'media',\n 'method',\n 'min',\n 'minlength',\n 'multiple',\n 'muted',\n 'name',\n 'nonce',\n 'noshade',\n 'novalidate',\n 'nowrap',\n 'open',\n 'optimum',\n 'pattern',\n 'placeholder',\n 'playsinline',\n 'poster',\n 'preload',\n 'pubdate',\n 'radiogroup',\n 'readonly',\n 'rel',\n 'required',\n 'rev',\n 'reversed',\n 'role',\n 'rows',\n 'rowspan',\n 'spellcheck',\n 'scope',\n 'selected',\n 'shape',\n 'size',\n 'sizes',\n 'span',\n 'srclang',\n 'start',\n 'src',\n 'srcset',\n 'step',\n 'style',\n 'summary',\n 'tabindex',\n 'title',\n 'translate',\n 'type',\n 'usemap',\n 'valign',\n 'value',\n 'width',\n 'xmlns',\n 'slot',\n]);\n\nexport const svg = freeze([\n 'accent-height',\n 'accumulate',\n 'additive',\n 'alignment-baseline',\n 'ascent',\n 'attributename',\n 'attributetype',\n 'azimuth',\n 'basefrequency',\n 'baseline-shift',\n 'begin',\n 'bias',\n 'by',\n 'class',\n 'clip',\n 'clippathunits',\n 'clip-path',\n 'clip-rule',\n 'color',\n 'color-interpolation',\n 'color-interpolation-filters',\n 'color-profile',\n 'color-rendering',\n 'cx',\n 'cy',\n 'd',\n 'dx',\n 'dy',\n 'diffuseconstant',\n 'direction',\n 'display',\n 'divisor',\n 'dur',\n 'edgemode',\n 'elevation',\n 'end',\n 'fill',\n 'fill-opacity',\n 'fill-rule',\n 'filter',\n 'filterunits',\n 'flood-color',\n 'flood-opacity',\n 'font-family',\n 'font-size',\n 'font-size-adjust',\n 'font-stretch',\n 'font-style',\n 'font-variant',\n 'font-weight',\n 'fx',\n 'fy',\n 'g1',\n 'g2',\n 'glyph-name',\n 'glyphref',\n 'gradientunits',\n 'gradienttransform',\n 'height',\n 'href',\n 'id',\n 'image-rendering',\n 'in',\n 'in2',\n 'k',\n 'k1',\n 'k2',\n 'k3',\n 'k4',\n 'kerning',\n 'keypoints',\n 'keysplines',\n 'keytimes',\n 'lang',\n 'lengthadjust',\n 'letter-spacing',\n 'kernelmatrix',\n 'kernelunitlength',\n 'lighting-color',\n 'local',\n 'marker-end',\n 'marker-mid',\n 'marker-start',\n 'markerheight',\n 'markerunits',\n 'markerwidth',\n 'maskcontentunits',\n 'maskunits',\n 'max',\n 'mask',\n 'media',\n 'method',\n 'mode',\n 'min',\n 'name',\n 'numoctaves',\n 'offset',\n 'operator',\n 'opacity',\n 'order',\n 'orient',\n 'orientation',\n 'origin',\n 'overflow',\n 'paint-order',\n 'path',\n 'pathlength',\n 'patterncontentunits',\n 'patterntransform',\n 'patternunits',\n 'points',\n 'preservealpha',\n 'preserveaspectratio',\n 'primitiveunits',\n 'r',\n 'rx',\n 'ry',\n 'radius',\n 'refx',\n 'refy',\n 'repeatcount',\n 'repeatdur',\n 'restart',\n 'result',\n 'rotate',\n 'scale',\n 'seed',\n 'shape-rendering',\n 'specularconstant',\n 'specularexponent',\n 'spreadmethod',\n 'startoffset',\n 'stddeviation',\n 'stitchtiles',\n 'stop-color',\n 'stop-opacity',\n 'stroke-dasharray',\n 'stroke-dashoffset',\n 'stroke-linecap',\n 'stroke-linejoin',\n 'stroke-miterlimit',\n 'stroke-opacity',\n 'stroke',\n 'stroke-width',\n 'style',\n 'surfacescale',\n 'systemlanguage',\n 'tabindex',\n 'targetx',\n 'targety',\n 'transform',\n 'transform-origin',\n 'text-anchor',\n 'text-decoration',\n 'text-rendering',\n 'textlength',\n 'type',\n 'u1',\n 'u2',\n 'unicode',\n 'values',\n 'viewbox',\n 'visibility',\n 'version',\n 'vert-adv-y',\n 'vert-origin-x',\n 'vert-origin-y',\n 'width',\n 'word-spacing',\n 'wrap',\n 'writing-mode',\n 'xchannelselector',\n 'ychannelselector',\n 'x',\n 'x1',\n 'x2',\n 'xmlns',\n 'y',\n 'y1',\n 'y2',\n 'z',\n 'zoomandpan',\n]);\n\nexport const mathMl = freeze([\n 'accent',\n 'accentunder',\n 'align',\n 'bevelled',\n 'close',\n 'columnsalign',\n 'columnlines',\n 'columnspan',\n 'denomalign',\n 'depth',\n 'dir',\n 'display',\n 'displaystyle',\n 'encoding',\n 'fence',\n 'frame',\n 'height',\n 'href',\n 'id',\n 'largeop',\n 'length',\n 'linethickness',\n 'lspace',\n 'lquote',\n 'mathbackground',\n 'mathcolor',\n 'mathsize',\n 'mathvariant',\n 'maxsize',\n 'minsize',\n 'movablelimits',\n 'notation',\n 'numalign',\n 'open',\n 'rowalign',\n 'rowlines',\n 'rowspacing',\n 'rowspan',\n 'rspace',\n 'rquote',\n 'scriptlevel',\n 'scriptminsize',\n 'scriptsizemultiplier',\n 'selection',\n 'separator',\n 'separators',\n 'stretchy',\n 'subscriptshift',\n 'supscriptshift',\n 'symmetric',\n 'voffset',\n 'width',\n 'xmlns',\n]);\n\nexport const xml = freeze([\n 'xlink:href',\n 'xml:id',\n 'xlink:title',\n 'xml:space',\n 'xmlns:xlink',\n]);\n", "import { seal } from './utils.js';\n\n// eslint-disable-next-line unicorn/better-regex\nexport const MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\nexport const ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\nexport const TMPLIT_EXPR = seal(/\\${[\\w\\W]*}/gm);\nexport const DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\nexport const ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\nexport const IS_ALLOWED_URI = seal(\n /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n);\nexport const IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\nexport const ATTR_WHITESPACE = seal(\n /[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n);\nexport const DOCTYPE_NAME = seal(/^html$/i);\n", "import * as TAGS from './tags.js';\nimport * as ATTRS from './attrs.js';\nimport * as EXPRESSIONS from './regexp.js';\nimport {\n addToSet,\n clone,\n entries,\n freeze,\n arrayForEach,\n arrayPop,\n arrayPush,\n stringMatch,\n stringReplace,\n stringToLowerCase,\n stringToString,\n stringIndexOf,\n stringTrim,\n regExpTest,\n typeErrorCreate,\n lookupGetter,\n create,\n} from './utils.js';\n\nconst getGlobal = function () {\n return typeof window === 'undefined' ? null : window;\n};\n\n/**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {HTMLScriptElement} purifyHostElement The Script element used to load DOMPurify (to determine policy name suffix).\n * @return {TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported or creating the policy failed).\n */\nconst _createTrustedTypesPolicy = function (trustedTypes, purifyHostElement) {\n if (\n typeof trustedTypes !== 'object' ||\n typeof trustedTypes.createPolicy !== 'function'\n ) {\n return null;\n }\n\n // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n let suffix = null;\n const ATTR_NAME = 'data-tt-policy-suffix';\n if (purifyHostElement && purifyHostElement.hasAttribute(ATTR_NAME)) {\n suffix = purifyHostElement.getAttribute(ATTR_NAME);\n }\n\n const policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML(html) {\n return html;\n },\n createScriptURL(scriptUrl) {\n return scriptUrl;\n },\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn(\n 'TrustedTypes policy ' + policyName + ' could not be created.'\n );\n return null;\n }\n};\n\nfunction createDOMPurify(window = getGlobal()) {\n const DOMPurify = (root) => createDOMPurify(root);\n\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n DOMPurify.version = VERSION;\n\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n\n return DOMPurify;\n }\n\n let { document } = window;\n\n const originalDocument = document;\n const currentScript = originalDocument.currentScript;\n const {\n DocumentFragment,\n HTMLTemplateElement,\n Node,\n Element,\n NodeFilter,\n NamedNodeMap = window.NamedNodeMap || window.MozNamedAttrMap,\n HTMLFormElement,\n DOMParser,\n trustedTypes,\n } = window;\n\n const ElementPrototype = Element.prototype;\n\n const cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n const getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n const getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n const getParentNode = lookupGetter(ElementPrototype, 'parentNode');\n\n // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n if (typeof HTMLTemplateElement === 'function') {\n const template = document.createElement('template');\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n let trustedTypesPolicy;\n let emptyHTML = '';\n\n const {\n implementation,\n createNodeIterator,\n createDocumentFragment,\n getElementsByTagName,\n } = document;\n const { importNode } = originalDocument;\n\n let hooks = {};\n\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n DOMPurify.isSupported =\n typeof entries === 'function' &&\n typeof getParentNode === 'function' &&\n implementation &&\n implementation.createHTMLDocument !== undefined;\n\n const {\n MUSTACHE_EXPR,\n ERB_EXPR,\n TMPLIT_EXPR,\n DATA_ATTR,\n ARIA_ATTR,\n IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE,\n } = EXPRESSIONS;\n\n let { IS_ALLOWED_URI } = EXPRESSIONS;\n\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n let ALLOWED_TAGS = null;\n const DEFAULT_ALLOWED_TAGS = addToSet({}, [\n ...TAGS.html,\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.mathMl,\n ...TAGS.text,\n ]);\n\n /* Allowed attribute names */\n let ALLOWED_ATTR = null;\n const DEFAULT_ALLOWED_ATTR = addToSet({}, [\n ...ATTRS.html,\n ...ATTRS.svg,\n ...ATTRS.mathMl,\n ...ATTRS.xml,\n ]);\n\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n let CUSTOM_ELEMENT_HANDLING = Object.seal(\n create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null,\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false,\n },\n })\n );\n\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n let FORBID_TAGS = null;\n\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n let FORBID_ATTR = null;\n\n /* Decide if ARIA attributes are okay */\n let ALLOW_ARIA_ATTR = true;\n\n /* Decide if custom data attributes are okay */\n let ALLOW_DATA_ATTR = true;\n\n /* Decide if unknown protocols are okay */\n let ALLOW_UNKNOWN_PROTOCOLS = false;\n\n /* Decide if self-closing tags in attributes are allowed.\n * Usually removed due to a mXSS issue in jQuery 3.0 */\n let ALLOW_SELF_CLOSE_IN_ATTR = true;\n\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n let SAFE_FOR_TEMPLATES = false;\n\n /* Decide if document with ... should be returned */\n let WHOLE_DOCUMENT = false;\n\n /* Track whether config is already set on this instance of DOMPurify. */\n let SET_CONFIG = false;\n\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n let FORCE_BODY = false;\n\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n let RETURN_DOM = false;\n\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n let RETURN_DOM_FRAGMENT = false;\n\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n let RETURN_TRUSTED_TYPE = false;\n\n /* Output should be free from DOM clobbering attacks?\n * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n */\n let SANITIZE_DOM = true;\n\n /* Achieve full DOM Clobbering protection by isolating the namespace of named\n * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n *\n * HTML/DOM spec rules that enable DOM Clobbering:\n * - Named Access on Window (§7.3.3)\n * - DOM Tree Accessors (§3.1.5)\n * - Form Element Parent-Child Relations (§4.10.3)\n * - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n * - HTMLCollection (§4.2.10.2)\n *\n * Namespace isolation is implemented by prefixing `id` and `name` attributes\n * with a constant string, i.e., `user-content-`\n */\n let SANITIZE_NAMED_PROPS = false;\n const SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n\n /* Keep element content when removing element? */\n let KEEP_CONTENT = true;\n\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n let IN_PLACE = false;\n\n /* Allow usage of profiles like html, svg and mathMl */\n let USE_PROFILES = {};\n\n /* Tags to ignore content of when KEEP_CONTENT is true */\n let FORBID_CONTENTS = null;\n const DEFAULT_FORBID_CONTENTS = addToSet({}, [\n 'annotation-xml',\n 'audio',\n 'colgroup',\n 'desc',\n 'foreignobject',\n 'head',\n 'iframe',\n 'math',\n 'mi',\n 'mn',\n 'mo',\n 'ms',\n 'mtext',\n 'noembed',\n 'noframes',\n 'noscript',\n 'plaintext',\n 'script',\n 'style',\n 'svg',\n 'template',\n 'thead',\n 'title',\n 'video',\n 'xmp',\n ]);\n\n /* Tags that are safe for data: URIs */\n let DATA_URI_TAGS = null;\n const DEFAULT_DATA_URI_TAGS = addToSet({}, [\n 'audio',\n 'video',\n 'img',\n 'source',\n 'image',\n 'track',\n ]);\n\n /* Attributes safe for values like \"javascript:\" */\n let URI_SAFE_ATTRIBUTES = null;\n const DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, [\n 'alt',\n 'class',\n 'for',\n 'id',\n 'label',\n 'name',\n 'pattern',\n 'placeholder',\n 'role',\n 'summary',\n 'title',\n 'value',\n 'style',\n 'xmlns',\n ]);\n\n const MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n const SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n const HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n let NAMESPACE = HTML_NAMESPACE;\n let IS_EMPTY_INPUT = false;\n\n /* Allowed XHTML+XML namespaces */\n let ALLOWED_NAMESPACES = null;\n const DEFAULT_ALLOWED_NAMESPACES = addToSet(\n {},\n [MATHML_NAMESPACE, SVG_NAMESPACE, HTML_NAMESPACE],\n stringToString\n );\n\n /* Parsing of strict XHTML documents */\n let PARSER_MEDIA_TYPE = null;\n const SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n const DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n let transformCaseFunc = null;\n\n /* Keep a reference to config to pass to hooks */\n let CONFIG = null;\n\n /* Ideally, do not touch anything below this line */\n /* ______________________________________________ */\n\n const formElement = document.createElement('form');\n\n const isRegexOrFunction = function (testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n const _parseConfig = function (cfg = {}) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n\n /* Shield configuration object from tampering */\n if (!cfg || typeof cfg !== 'object') {\n cfg = {};\n }\n\n /* Shield configuration object from prototype pollution */\n cfg = clone(cfg);\n\n PARSER_MEDIA_TYPE =\n // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1\n ? DEFAULT_PARSER_MEDIA_TYPE\n : cfg.PARSER_MEDIA_TYPE;\n\n // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n transformCaseFunc =\n PARSER_MEDIA_TYPE === 'application/xhtml+xml'\n ? stringToString\n : stringToLowerCase;\n\n /* Set configuration parameters */\n ALLOWED_TAGS =\n 'ALLOWED_TAGS' in cfg\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR =\n 'ALLOWED_ATTR' in cfg\n ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc)\n : DEFAULT_ALLOWED_ATTR;\n ALLOWED_NAMESPACES =\n 'ALLOWED_NAMESPACES' in cfg\n ? addToSet({}, cfg.ALLOWED_NAMESPACES, stringToString)\n : DEFAULT_ALLOWED_NAMESPACES;\n URI_SAFE_ATTRIBUTES =\n 'ADD_URI_SAFE_ATTR' in cfg\n ? addToSet(\n clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS =\n 'ADD_DATA_URI_TAGS' in cfg\n ? addToSet(\n clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS =\n 'FORBID_CONTENTS' in cfg\n ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc)\n : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS =\n 'FORBID_TAGS' in cfg\n ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc)\n : {};\n FORBID_ATTR =\n 'FORBID_ATTR' in cfg\n ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc)\n : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n ALLOW_SELF_CLOSE_IN_ATTR = cfg.ALLOW_SELF_CLOSE_IN_ATTR !== false; // Default true\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n IS_ALLOWED_URI = cfg.ALLOWED_URI_REGEXP || EXPRESSIONS.IS_ALLOWED_URI;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n CUSTOM_ELEMENT_HANDLING = cfg.CUSTOM_ELEMENT_HANDLING || {};\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)\n ) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck =\n cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (\n cfg.CUSTOM_ELEMENT_HANDLING &&\n typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements ===\n 'boolean'\n ) {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements =\n cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n\n /* Parse profile info */\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, TAGS.text);\n ALLOWED_ATTR = [];\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, TAGS.html);\n addToSet(ALLOWED_ATTR, ATTRS.html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, TAGS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, TAGS.svgFilters);\n addToSet(ALLOWED_ATTR, ATTRS.svg);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, TAGS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.mathMl);\n addToSet(ALLOWED_ATTR, ATTRS.xml);\n }\n }\n\n /* Merge configuration parameters */\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n\n /* Add #text in case KEEP_CONTENT is set to true */\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n }\n\n if (cfg.TRUSTED_TYPES_POLICY) {\n if (typeof cfg.TRUSTED_TYPES_POLICY.createHTML !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createHTML\" hook.'\n );\n }\n\n if (typeof cfg.TRUSTED_TYPES_POLICY.createScriptURL !== 'function') {\n throw typeErrorCreate(\n 'TRUSTED_TYPES_POLICY configuration option must provide a \"createScriptURL\" hook.'\n );\n }\n\n // Overwrite existing TrustedTypes policy.\n trustedTypesPolicy = cfg.TRUSTED_TYPES_POLICY;\n\n // Sign local variables required by `sanitize`.\n emptyHTML = trustedTypesPolicy.createHTML('');\n } else {\n // Uninitialized policy, attempt to initialize the internal dompurify policy.\n if (trustedTypesPolicy === undefined) {\n trustedTypesPolicy = _createTrustedTypesPolicy(\n trustedTypes,\n currentScript\n );\n }\n\n // If creating the internal policy succeeded sign internal variables.\n if (trustedTypesPolicy !== null && typeof emptyHTML === 'string') {\n emptyHTML = trustedTypesPolicy.createHTML('');\n }\n }\n\n // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n const MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, [\n 'mi',\n 'mo',\n 'mn',\n 'ms',\n 'mtext',\n ]);\n\n const HTML_INTEGRATION_POINTS = addToSet({}, [\n 'foreignobject',\n 'desc',\n 'title',\n 'annotation-xml',\n ]);\n\n // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n const COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, [\n 'title',\n 'style',\n 'font',\n 'a',\n 'script',\n ]);\n\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n const ALL_SVG_TAGS = addToSet({}, [\n ...TAGS.svg,\n ...TAGS.svgFilters,\n ...TAGS.svgDisallowed,\n ]);\n const ALL_MATHML_TAGS = addToSet({}, [\n ...TAGS.mathMl,\n ...TAGS.mathMlDisallowed,\n ]);\n\n /**\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n const _checkValidNamespace = function (element) {\n let parent = getParentNode(element);\n\n // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: NAMESPACE,\n tagName: 'template',\n };\n }\n\n const tagName = stringToLowerCase(element.tagName);\n const parentTagName = stringToLowerCase(parent.tagName);\n\n if (!ALLOWED_NAMESPACES[element.namespaceURI]) {\n return false;\n }\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n }\n\n // The only way to switch from MathML to SVG is via`\n // svg if parent is either or MathML\n // text integration points.\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return (\n tagName === 'svg' &&\n (parentTagName === 'annotation-xml' ||\n MATHML_TEXT_INTEGRATION_POINTS[parentTagName])\n );\n }\n\n // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n }\n\n // The only way to switch from SVG to MathML is via\n // and HTML integration points\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n }\n\n // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (\n parent.namespaceURI === SVG_NAMESPACE &&\n !HTML_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n if (\n parent.namespaceURI === MATHML_NAMESPACE &&\n !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]\n ) {\n return false;\n }\n\n // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n return (\n !ALL_MATHML_TAGS[tagName] &&\n (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName])\n );\n }\n\n // For XHTML and XML documents that support custom namespaces\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n ALLOWED_NAMESPACES[element.namespaceURI]\n ) {\n return true;\n }\n\n // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG, MathML or allowed via ALLOWED_NAMESPACES).\n // Return false just in case.\n return false;\n };\n\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n const _forceRemove = function (node) {\n arrayPush(DOMPurify.removed, { element: node });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n node.remove();\n }\n };\n\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n const _removeAttribute = function (name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node,\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node,\n });\n }\n\n node.removeAttribute(name);\n\n // We void attribute values for unremovable \"is\"\" attributes\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n const _initDocument = function (dirty) {\n /* Create a HTML document */\n let doc = null;\n let leadingWhitespace = null;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n const matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (\n PARSER_MEDIA_TYPE === 'application/xhtml+xml' &&\n NAMESPACE === HTML_NAMESPACE\n ) {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty =\n '' +\n dirty +\n '';\n }\n\n const dirtyPayload = trustedTypesPolicy\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n\n /* Use createHTMLDocument in case DOMParser is not available */\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT\n ? emptyHTML\n : dirtyPayload;\n } catch (_) {\n // Syntax error if dirtyPayload is invalid xml\n }\n }\n\n const body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(\n document.createTextNode(leadingWhitespace),\n body.childNodes[0] || null\n );\n }\n\n /* Work on whole document or just its body */\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(\n doc,\n WHOLE_DOCUMENT ? 'html' : 'body'\n )[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n\n /**\n * Creates a NodeIterator object that you can use to traverse filtered lists of nodes or elements in a document.\n *\n * @param {Node} root The root element or node to start traversing on.\n * @return {NodeIterator} The created NodeIterator\n */\n const _createNodeIterator = function (root) {\n return createNodeIterator.call(\n root.ownerDocument || root,\n root,\n // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT,\n null\n );\n };\n\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n const _isClobbered = function (elm) {\n return (\n elm instanceof HTMLFormElement &&\n (typeof elm.nodeName !== 'string' ||\n typeof elm.textContent !== 'string' ||\n typeof elm.removeChild !== 'function' ||\n !(elm.attributes instanceof NamedNodeMap) ||\n typeof elm.removeAttribute !== 'function' ||\n typeof elm.setAttribute !== 'function' ||\n typeof elm.namespaceURI !== 'string' ||\n typeof elm.insertBefore !== 'function' ||\n typeof elm.hasChildNodes !== 'function')\n );\n };\n\n /**\n * Checks whether the given object is a DOM node.\n *\n * @param {Node} object object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n const _isNode = function (object) {\n return typeof Node === 'function' && object instanceof Node;\n };\n\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n const _executeHook = function (entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], (hook) => {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n const _sanitizeElements = function (currentNode) {\n let content = null;\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeElements', currentNode, null);\n\n /* Check if element is clobbered or can clobber */\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Now let's check the element's type and name */\n const tagName = transformCaseFunc(currentNode.nodeName);\n\n /* Execute a hook if present */\n _executeHook('uponSanitizeElement', currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS,\n });\n\n /* Detect mXSS attempts abusing namespace confusion */\n if (\n currentNode.hasChildNodes() &&\n !_isNode(currentNode.firstElementChild) &&\n regExpTest(/<[/\\w]/g, currentNode.innerHTML) &&\n regExpTest(/<[/\\w]/g, currentNode.textContent)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Remove element if anything forbids its presence */\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n /* Check if we have a custom element to handle */\n if (!FORBID_TAGS[tagName] && _isBasicCustomElement(tagName)) {\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)\n ) {\n return false;\n }\n\n if (\n CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)\n ) {\n return false;\n }\n }\n\n /* Keep content except for bad-listed elements */\n if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n const parentNode = getParentNode(currentNode) || currentNode.parentNode;\n const childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n if (childNodes && parentNode) {\n const childCount = childNodes.length;\n\n for (let i = childCount - 1; i >= 0; --i) {\n parentNode.insertBefore(\n cloneNode(childNodes[i], true),\n getNextSibling(currentNode)\n );\n }\n }\n }\n\n _forceRemove(currentNode);\n return true;\n }\n\n /* Check whether element has a valid namespace */\n if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Make sure that older browsers don't get fallback-tag mXSS */\n if (\n (tagName === 'noscript' ||\n tagName === 'noembed' ||\n tagName === 'noframes') &&\n regExpTest(/<\\/no(script|embed|frames)/i, currentNode.innerHTML)\n ) {\n _forceRemove(currentNode);\n return true;\n }\n\n /* Sanitize element content to be template-safe */\n if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n /* Get the element's text content */\n content = currentNode.textContent;\n\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n content = stringReplace(content, expr, ' ');\n });\n\n if (currentNode.textContent !== content) {\n arrayPush(DOMPurify.removed, { element: currentNode.cloneNode() });\n currentNode.textContent = content;\n }\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeElements', currentNode, null);\n\n return false;\n };\n\n /**\n * _isValidAttribute\n *\n * @param {string} lcTag Lowercase tag name of containing element.\n * @param {string} lcName Lowercase attribute name.\n * @param {string} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid, otherwise false.\n */\n // eslint-disable-next-line complexity\n const _isValidAttribute = function (lcTag, lcName, value) {\n /* Make sure attribute cannot clobber */\n if (\n SANITIZE_DOM &&\n (lcName === 'id' || lcName === 'name') &&\n (value in document || value in formElement)\n ) {\n return false;\n }\n\n /* Allow valid data-* attributes: At least one character after \"-\"\n (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n We don't need to check the value; it's always URI safe. */\n if (\n ALLOW_DATA_ATTR &&\n !FORBID_ATTR[lcName] &&\n regExpTest(DATA_ATTR, lcName)\n ) {\n // This attribute is safe\n } else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR, lcName)) {\n // This attribute is safe\n /* Otherwise, check the name is permitted */\n } else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n if (\n // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n (_isBasicCustomElement(lcTag) &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag))) &&\n ((CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName)) ||\n (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)))) ||\n // Alternative, second condition checks if it's an `is`-attribute, AND\n // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n (lcName === 'is' &&\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements &&\n ((CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp &&\n regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value)) ||\n (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function &&\n CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))))\n ) {\n // If user has supplied a regexp or function in CUSTOM_ELEMENT_HANDLING.tagNameCheck, we need to also allow derived custom elements using the same tagName test.\n // Additionally, we need to allow attributes passing the CUSTOM_ELEMENT_HANDLING.attributeNameCheck user has configured, as custom elements can define these at their own discretion.\n } else {\n return false;\n }\n /* Check value is safe. First, is attr inert? If so, is safe */\n } else if (URI_SAFE_ATTRIBUTES[lcName]) {\n // This attribute is safe\n /* Check no script, data or unknown possibly unsafe URI\n unless we know URI values are safe for that attribute */\n } else if (\n regExpTest(IS_ALLOWED_URI, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Keep image data URIs alive if src/xlink:href is allowed */\n /* Further prevent gadget XSS for dynamically built script tags */\n } else if (\n (lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') &&\n lcTag !== 'script' &&\n stringIndexOf(value, 'data:') === 0 &&\n DATA_URI_TAGS[lcTag]\n ) {\n // This attribute is safe\n /* Allow unknown protocols: This provides support for links that\n are handled by protocol handlers which may be unknown ahead of\n time, e.g. fb:, spotify: */\n } else if (\n ALLOW_UNKNOWN_PROTOCOLS &&\n !regExpTest(IS_SCRIPT_OR_DATA, stringReplace(value, ATTR_WHITESPACE, ''))\n ) {\n // This attribute is safe\n /* Check for binary attributes */\n } else if (value) {\n return false;\n } else {\n // Binary attributes are safe at this point\n /* Anything else, presume unsafe, do not add it back */\n }\n\n return true;\n };\n\n /**\n * _isBasicCustomElement\n * checks if at least one dash is included in tagName, and it's not the first char\n * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n *\n * @param {string} tagName name of the tag of the node to sanitize\n * @returns {boolean} Returns true if the tag name meets the basic criteria for a custom element, otherwise false.\n */\n const _isBasicCustomElement = function (tagName) {\n return tagName.indexOf('-') > 0;\n };\n\n /**\n * _sanitizeAttributes\n *\n * @protect attributes\n * @protect nodeName\n * @protect removeAttribute\n * @protect setAttribute\n *\n * @param {Node} currentNode to sanitize\n */\n const _sanitizeAttributes = function (currentNode) {\n /* Execute a hook if present */\n _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n const { attributes } = currentNode;\n\n /* Check if we have attributes; if not we might have a text node */\n if (!attributes) {\n return;\n }\n\n const hookEvent = {\n attrName: '',\n attrValue: '',\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR,\n };\n let l = attributes.length;\n\n /* Go backwards over all attributes; safely remove bad ones */\n while (l--) {\n const attr = attributes[l];\n const { name, namespaceURI, value: attrValue } = attr;\n const lcName = transformCaseFunc(name);\n\n let value = name === 'value' ? attrValue : stringTrim(attrValue);\n\n /* Execute a hook if present */\n hookEvent.attrName = lcName;\n hookEvent.attrValue = value;\n hookEvent.keepAttr = true;\n hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n value = hookEvent.attrValue;\n /* Did the hooks approve of the attribute? */\n if (hookEvent.forceKeepAttr) {\n continue;\n }\n\n /* Remove attribute */\n _removeAttribute(name, currentNode);\n\n /* Did the hooks approve of the attribute? */\n if (!hookEvent.keepAttr) {\n continue;\n }\n\n /* Work around a security issue in jQuery 3.0 */\n if (!ALLOW_SELF_CLOSE_IN_ATTR && regExpTest(/\\/>/i, value)) {\n _removeAttribute(name, currentNode);\n continue;\n }\n\n /* Sanitize attribute content to be template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n value = stringReplace(value, expr, ' ');\n });\n }\n\n /* Is `value` valid for this attribute? */\n const lcTag = transformCaseFunc(currentNode.nodeName);\n if (!_isValidAttribute(lcTag, lcName, value)) {\n continue;\n }\n\n /* Full DOM Clobbering protection via namespace isolation,\n * Prefix id and name attributes with `user-content-`\n */\n if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n // Remove the attribute with this value\n _removeAttribute(name, currentNode);\n\n // Prefix the value and later re-create the attribute with the sanitized value\n value = SANITIZE_NAMED_PROPS_PREFIX + value;\n }\n\n /* Handle attributes that require Trusted Types */\n if (\n trustedTypesPolicy &&\n typeof trustedTypes === 'object' &&\n typeof trustedTypes.getAttributeType === 'function'\n ) {\n if (namespaceURI) {\n /* Namespaces are not yet supported, see https://bugs.chromium.org/p/chromium/issues/detail?id=1305293 */\n } else {\n switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n case 'TrustedHTML': {\n value = trustedTypesPolicy.createHTML(value);\n break;\n }\n\n case 'TrustedScriptURL': {\n value = trustedTypesPolicy.createScriptURL(value);\n break;\n }\n\n default: {\n break;\n }\n }\n }\n }\n\n /* Handle invalid data-* attribute set by try-catching it */\n try {\n if (namespaceURI) {\n currentNode.setAttributeNS(namespaceURI, name, value);\n } else {\n /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n currentNode.setAttribute(name, value);\n }\n\n arrayPop(DOMPurify.removed);\n } catch (_) {}\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeAttributes', currentNode, null);\n };\n\n /**\n * _sanitizeShadowDOM\n *\n * @param {DocumentFragment} fragment to iterate over recursively\n */\n const _sanitizeShadowDOM = function (fragment) {\n let shadowNode = null;\n const shadowIterator = _createNodeIterator(fragment);\n\n /* Execute a hook if present */\n _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n while ((shadowNode = shadowIterator.nextNode())) {\n /* Execute a hook if present */\n _executeHook('uponSanitizeShadowNode', shadowNode, null);\n\n /* Sanitize tags and elements */\n if (_sanitizeElements(shadowNode)) {\n continue;\n }\n\n /* Deep shadow DOM detected */\n if (shadowNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(shadowNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(shadowNode);\n }\n\n /* Execute a hook if present */\n _executeHook('afterSanitizeShadowDOM', fragment, null);\n };\n\n /**\n * Sanitize\n * Public method providing core sanitation functionality\n *\n * @param {String|Node} dirty string or DOM node\n * @param {Object} cfg object\n */\n // eslint-disable-next-line complexity\n DOMPurify.sanitize = function (dirty, cfg = {}) {\n let body = null;\n let importedNode = null;\n let currentNode = null;\n let returnNode = null;\n /* Make sure we have a string to sanitize.\n DO NOT return early, as this will return the wrong type if\n the user has requested a DOM object rather than a string */\n IS_EMPTY_INPUT = !dirty;\n if (IS_EMPTY_INPUT) {\n dirty = '';\n }\n\n /* Stringify, in case dirty is an object */\n if (typeof dirty !== 'string' && !_isNode(dirty)) {\n if (typeof dirty.toString === 'function') {\n dirty = dirty.toString();\n if (typeof dirty !== 'string') {\n throw typeErrorCreate('dirty is not a string, aborting');\n }\n } else {\n throw typeErrorCreate('toString is not a function');\n }\n }\n\n /* Return dirty HTML if DOMPurify cannot run */\n if (!DOMPurify.isSupported) {\n return dirty;\n }\n\n /* Assign config vars */\n if (!SET_CONFIG) {\n _parseConfig(cfg);\n }\n\n /* Clean up removed elements */\n DOMPurify.removed = [];\n\n /* Check if dirty is correctly typed for IN_PLACE */\n if (typeof dirty === 'string') {\n IN_PLACE = false;\n }\n\n if (IN_PLACE) {\n /* Do some early pre-sanitization to avoid unsafe root nodes */\n if (dirty.nodeName) {\n const tagName = transformCaseFunc(dirty.nodeName);\n if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n throw typeErrorCreate(\n 'root node is forbidden and cannot be sanitized in-place'\n );\n }\n }\n } else if (dirty instanceof Node) {\n /* If dirty is a DOM element, append to an empty document to avoid\n elements being stripped by the parser */\n body = _initDocument('');\n importedNode = body.ownerDocument.importNode(dirty, true);\n if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n /* Node is already a body, use as is */\n body = importedNode;\n } else if (importedNode.nodeName === 'HTML') {\n body = importedNode;\n } else {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n body.appendChild(importedNode);\n }\n } else {\n /* Exit directly if we have nothing to do */\n if (\n !RETURN_DOM &&\n !SAFE_FOR_TEMPLATES &&\n !WHOLE_DOCUMENT &&\n // eslint-disable-next-line unicorn/prefer-includes\n dirty.indexOf('<') === -1\n ) {\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(dirty)\n : dirty;\n }\n\n /* Initialize the document to work on */\n body = _initDocument(dirty);\n\n /* Check we have a DOM node from the data */\n if (!body) {\n return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n }\n }\n\n /* Remove first element node (ours) if FORCE_BODY is set */\n if (body && FORCE_BODY) {\n _forceRemove(body.firstChild);\n }\n\n /* Get node iterator */\n const nodeIterator = _createNodeIterator(IN_PLACE ? dirty : body);\n\n /* Now start iterating over the created document */\n while ((currentNode = nodeIterator.nextNode())) {\n /* Sanitize tags and elements */\n if (_sanitizeElements(currentNode)) {\n continue;\n }\n\n /* Shadow DOM detected, sanitize it */\n if (currentNode.content instanceof DocumentFragment) {\n _sanitizeShadowDOM(currentNode.content);\n }\n\n /* Check attributes, sanitize if necessary */\n _sanitizeAttributes(currentNode);\n }\n\n /* If we sanitized `dirty` in-place, return it. */\n if (IN_PLACE) {\n return dirty;\n }\n\n /* Return sanitized string or DOM */\n if (RETURN_DOM) {\n if (RETURN_DOM_FRAGMENT) {\n returnNode = createDocumentFragment.call(body.ownerDocument);\n\n while (body.firstChild) {\n // eslint-disable-next-line unicorn/prefer-dom-node-append\n returnNode.appendChild(body.firstChild);\n }\n } else {\n returnNode = body;\n }\n\n if (ALLOWED_ATTR.shadowroot || ALLOWED_ATTR.shadowrootmode) {\n /*\n AdoptNode() is not used because internal state is not reset\n (e.g. the past names map of a HTMLFormElement), this is safe\n in theory but we would rather not risk another attack vector.\n The state that is cloned by importNode() is explicitly defined\n by the specs.\n */\n returnNode = importNode.call(originalDocument, returnNode, true);\n }\n\n return returnNode;\n }\n\n let serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n\n /* Serialize doctype if allowed */\n if (\n WHOLE_DOCUMENT &&\n ALLOWED_TAGS['!doctype'] &&\n body.ownerDocument &&\n body.ownerDocument.doctype &&\n body.ownerDocument.doctype.name &&\n regExpTest(EXPRESSIONS.DOCTYPE_NAME, body.ownerDocument.doctype.name)\n ) {\n serializedHTML =\n '\\n' + serializedHTML;\n }\n\n /* Sanitize final string template-safe */\n if (SAFE_FOR_TEMPLATES) {\n arrayForEach([MUSTACHE_EXPR, ERB_EXPR, TMPLIT_EXPR], (expr) => {\n serializedHTML = stringReplace(serializedHTML, expr, ' ');\n });\n }\n\n return trustedTypesPolicy && RETURN_TRUSTED_TYPE\n ? trustedTypesPolicy.createHTML(serializedHTML)\n : serializedHTML;\n };\n\n /**\n * Public method to set the configuration once\n * setConfig\n *\n * @param {Object} cfg configuration object\n */\n DOMPurify.setConfig = function (cfg = {}) {\n _parseConfig(cfg);\n SET_CONFIG = true;\n };\n\n /**\n * Public method to remove the configuration\n * clearConfig\n *\n */\n DOMPurify.clearConfig = function () {\n CONFIG = null;\n SET_CONFIG = false;\n };\n\n /**\n * Public method to check if an attribute value is valid.\n * Uses last set config, if any. Otherwise, uses config defaults.\n * isValidAttribute\n *\n * @param {String} tag Tag name of containing element.\n * @param {String} attr Attribute name.\n * @param {String} value Attribute value.\n * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n */\n DOMPurify.isValidAttribute = function (tag, attr, value) {\n /* Initialize shared config vars if necessary. */\n if (!CONFIG) {\n _parseConfig({});\n }\n\n const lcTag = transformCaseFunc(tag);\n const lcName = transformCaseFunc(attr);\n return _isValidAttribute(lcTag, lcName, value);\n };\n\n /**\n * AddHook\n * Public method to add DOMPurify hooks\n *\n * @param {String} entryPoint entry point for the hook to add\n * @param {Function} hookFunction function to execute\n */\n DOMPurify.addHook = function (entryPoint, hookFunction) {\n if (typeof hookFunction !== 'function') {\n return;\n }\n\n hooks[entryPoint] = hooks[entryPoint] || [];\n arrayPush(hooks[entryPoint], hookFunction);\n };\n\n /**\n * RemoveHook\n * Public method to remove a DOMPurify hook at a given entryPoint\n * (pops it from the stack of hooks if more are present)\n *\n * @param {String} entryPoint entry point for the hook to remove\n * @return {Function} removed(popped) hook\n */\n DOMPurify.removeHook = function (entryPoint) {\n if (hooks[entryPoint]) {\n return arrayPop(hooks[entryPoint]);\n }\n };\n\n /**\n * RemoveHooks\n * Public method to remove all DOMPurify hooks at a given entryPoint\n *\n * @param {String} entryPoint entry point for the hooks to remove\n */\n DOMPurify.removeHooks = function (entryPoint) {\n if (hooks[entryPoint]) {\n hooks[entryPoint] = [];\n }\n };\n\n /**\n * RemoveAllHooks\n * Public method to remove all DOMPurify hooks\n */\n DOMPurify.removeAllHooks = function () {\n hooks = {};\n };\n\n return DOMPurify;\n}\n\nexport default createDOMPurify();\n", "export function _ajax(platformSpecificDriver, timeoutErrorMessageIdent, requestFailedMessageIdent, mkHeader, options) {\n return function (errback, callback) {\n var xhr = platformSpecificDriver.newXHR();\n var fixedUrl = platformSpecificDriver.fixupUrl(options.url, xhr);\n xhr.open(options.method || \"GET\", fixedUrl, true, options.username, options.password);\n if (options.headers) {\n try {\n // eslint-disable-next-line no-eq-null,eqeqeq\n for (var i = 0, header; (header = options.headers[i]) != null; i++) {\n xhr.setRequestHeader(header.field, header.value);\n }\n } catch (e) {\n errback(e);\n }\n }\n var onerror = function (msgIdent) {\n return function () {\n errback(new Error(msgIdent));\n };\n };\n xhr.onerror = onerror(requestFailedMessageIdent);\n xhr.ontimeout = onerror(timeoutErrorMessageIdent);\n xhr.onload = function () {\n callback({\n status: xhr.status,\n statusText: xhr.statusText,\n headers: xhr.getAllResponseHeaders().split(\"\\r\\n\")\n .filter(function (header) {\n return header.length > 0;\n })\n .map(function (header) {\n var i = header.indexOf(\":\");\n return mkHeader(header.substring(0, i))(header.substring(i + 2));\n }),\n body: xhr.response\n });\n };\n xhr.responseType = options.responseType;\n xhr.withCredentials = options.withCredentials;\n xhr.timeout = options.timeout;\n xhr.send(options.content);\n\n return function (error, cancelErrback, cancelCallback) {\n try {\n xhr.abort();\n } catch (e) {\n return cancelErrback(e);\n }\n return cancelCallback();\n };\n };\n}\n", "export const arrayMap = function (f) {\n return function (arr) {\n var l = arr.length;\n var result = new Array(l);\n for (var i = 0; i < l; i++) {\n result[i] = f(arr[i]);\n }\n return result;\n };\n};\n", "module Control.Semigroupoid where\n\n-- | A `Semigroupoid` is similar to a [`Category`](#category) but does not\n-- | require an identity element `identity`, just composable morphisms.\n-- |\n-- | `Semigroupoid`s must satisfy the following law:\n-- |\n-- | - Associativity: `p <<< (q <<< r) = (p <<< q) <<< r`\n-- |\n-- | One example of a `Semigroupoid` is the function type constructor `(->)`,\n-- | with `(<<<)` defined as function composition.\nclass Semigroupoid :: forall k. (k -> k -> Type) -> Constraint\nclass Semigroupoid a where\n compose :: forall b c d. a c d -> a b c -> a b d\n\ninstance semigroupoidFn :: Semigroupoid (->) where\n compose f g x = f (g x)\n\ninfixr 9 compose as <<<\n\n-- | Forwards composition, or `compose` with its arguments reversed.\ncomposeFlipped :: forall a b c d. Semigroupoid a => a b c -> a c d -> a b d\ncomposeFlipped f g = compose g f\n\ninfixr 9 composeFlipped as >>>\n", "module Control.Category\n ( class Category\n , identity\n , module Control.Semigroupoid\n ) where\n\nimport Control.Semigroupoid (class Semigroupoid, compose, (<<<), (>>>))\n\n-- | `Category`s consist of objects and composable morphisms between them, and\n-- | as such are [`Semigroupoids`](#semigroupoid), but unlike `semigroupoids`\n-- | must have an identity element.\n-- |\n-- | Instances must satisfy the following law in addition to the\n-- | `Semigroupoid` law:\n-- |\n-- | - Identity: `identity <<< p = p <<< identity = p`\nclass Category :: forall k. (k -> k -> Type) -> Constraint\nclass Semigroupoid a <= Category a where\n identity :: forall t. a t t\n\ninstance categoryFn :: Category (->) where\n identity x = x\n", "module Data.Boolean where\n\n-- | An alias for `true`, which can be useful in guard clauses:\n-- |\n-- | ```purescript\n-- | max x y | x >= y = x\n-- | | otherwise = y\n-- | ```\notherwise :: Boolean\notherwise = true\n", "module Data.Function\n ( flip\n , const\n , apply\n , ($)\n , applyFlipped\n , (#)\n , applyN\n , on\n , module Control.Category\n ) where\n\nimport Control.Category (identity, compose, (<<<), (>>>))\nimport Data.Boolean (otherwise)\nimport Data.Ord ((<=))\nimport Data.Ring ((-))\n\n-- | Given a function that takes two arguments, applies the arguments\n-- | to the function in a swapped order.\n-- |\n-- | ```purescript\n-- | flip append \"1\" \"2\" == append \"2\" \"1\" == \"21\"\n-- |\n-- | const 1 \"two\" == 1\n-- |\n-- | flip const 1 \"two\" == const \"two\" 1 == \"two\"\n-- | ```\nflip :: forall a b c. (a -> b -> c) -> b -> a -> c\nflip f b a = f a b\n\n-- | Returns its first argument and ignores its second.\n-- |\n-- | ```purescript\n-- | const 1 \"hello\" = 1\n-- | ```\n-- |\n-- | It can also be thought of as creating a function that ignores its argument:\n-- |\n-- | ```purescript\n-- | const 1 = \\_ -> 1\n-- | ```\nconst :: forall a b. a -> b -> a\nconst a _ = a\n\n-- | Applies a function to an argument. This is primarily used as the operator\n-- | `($)` which allows parentheses to be omitted in some cases, or as a\n-- | natural way to apply a chain of composed functions to a value.\napply :: forall a b. (a -> b) -> a -> b\napply f x = f x\n\n-- | Applies a function to an argument: the reverse of `(#)`.\n-- |\n-- | ```purescript\n-- | length $ groupBy productCategory $ filter isInStock $ products\n-- | ```\n-- |\n-- | is equivalent to:\n-- |\n-- | ```purescript\n-- | length (groupBy productCategory (filter isInStock products))\n-- | ```\n-- |\n-- | Or another alternative equivalent, applying chain of composed functions to\n-- | a value:\n-- |\n-- | ```purescript\n-- | length <<< groupBy productCategory <<< filter isInStock $ products\n-- | ```\ninfixr 0 apply as $\n\n-- | Applies an argument to a function. This is primarily used as the `(#)`\n-- | operator, which allows parentheses to be omitted in some cases, or as a\n-- | natural way to apply a value to a chain of composed functions.\napplyFlipped :: forall a b. a -> (a -> b) -> b\napplyFlipped x f = f x\n\n-- | Applies an argument to a function: the reverse of `($)`.\n-- |\n-- | ```purescript\n-- | products # filter isInStock # groupBy productCategory # length\n-- | ```\n-- |\n-- | is equivalent to:\n-- |\n-- | ```purescript\n-- | length (groupBy productCategory (filter isInStock products))\n-- | ```\n-- |\n-- | Or another alternative equivalent, applying a value to a chain of composed\n-- | functions:\n-- |\n-- | ```purescript\n-- | products # filter isInStock >>> groupBy productCategory >>> length\n-- | ```\ninfixl 1 applyFlipped as #\n\n-- | `applyN f n` applies the function `f` to its argument `n` times.\n-- |\n-- | If n is less than or equal to 0, the function is not applied.\n-- |\n-- | ```purescript\n-- | applyN (_ + 1) 10 0 == 10\n-- | ```\napplyN :: forall a. (a -> a) -> Int -> a -> a\napplyN f = go\n where\n go n acc\n | n <= 0 = acc\n | otherwise = go (n - 1) (f acc)\n\n-- | The `on` function is used to change the domain of a binary operator.\n-- |\n-- | For example, we can create a function which compares two records based on the values of their `x` properties:\n-- |\n-- | ```purescript\n-- | compareX :: forall r. { x :: Number | r } -> { x :: Number | r } -> Ordering\n-- | compareX = compare `on` _.x\n-- | ```\non :: forall a b c. (b -> b -> c) -> (a -> b) -> a -> a -> c\non f g x y = g x `f` g y\n", "-- | The `Proxy` type and values are for situations where type information is\n-- | required for an input to determine the type of an output, but where it is\n-- | not possible or convenient to provide a _value_ for the input.\n-- |\n-- | A hypothetical example: if you have a class that is used to handle the\n-- | result of an AJAX request, you may want to use this information to set the\n-- | expected content type of the request, so you might have a class something\n-- | like this:\n-- |\n-- | ``` purescript\n-- | class AjaxResponse a where\n-- | responseType :: a -> ResponseType\n-- | fromResponse :: Foreign -> a\n-- | ```\n-- |\n-- | The problem here is `responseType` requires a value of type `a`, but we\n-- | won't have a value of that type until the request has been completed. The\n-- | solution is to use a `Proxy` type instead:\n-- |\n-- | ``` purescript\n-- | class AjaxResponse a where\n-- | responseType :: Proxy a -> ResponseType\n-- | fromResponse :: Foreign -> a\n-- | ```\n-- |\n-- | We can now call `responseType (Proxy :: Proxy SomeContentType)` to produce\n-- | a `ResponseType` for `SomeContentType` without having to construct some\n-- | empty version of `SomeContentType` first. In situations like this where\n-- | the `Proxy` type can be statically determined, it is recommended to pull\n-- | out the definition to the top level and make a declaration like:\n-- |\n-- | ``` purescript\n-- | _SomeContentType :: Proxy SomeContentType\n-- | _SomeContentType = Proxy\n-- | ```\n-- |\n-- | That way the proxy value can be used as `responseType _SomeContentType`\n-- | for improved readability. However, this is not always possible, sometimes\n-- | the type required will be determined by a type variable. As PureScript has\n-- | scoped type variables, we can do things like this:\n-- |\n-- | ``` purescript\n-- | makeRequest :: URL -> ResponseType -> Aff _ Foreign\n-- | makeRequest = ...\n-- |\n-- | fetchData :: forall a. (AjaxResponse a) => URL -> Aff _ a\n-- | fetchData url = fromResponse <$> makeRequest url (responseType (Proxy :: Proxy a))\n-- | ```\nmodule Type.Proxy where\n\n-- | Proxy type for all `kind`s.\ndata Proxy :: forall k. k -> Type\ndata Proxy a = Proxy\n", "module Data.Functor\n ( class Functor\n , map\n , (<$>)\n , mapFlipped\n , (<#>)\n , void\n , voidRight\n , (<$)\n , voidLeft\n , ($>)\n , flap\n , (<@>)\n ) where\n\nimport Data.Function (const, compose)\nimport Data.Unit (Unit, unit)\nimport Type.Proxy (Proxy(..))\n\n-- | A `Functor` is a type constructor which supports a mapping operation\n-- | `map`.\n-- |\n-- | `map` can be used to turn functions `a -> b` into functions\n-- | `f a -> f b` whose argument and return types use the type constructor `f`\n-- | to represent some computational context.\n-- |\n-- | Instances must satisfy the following laws:\n-- |\n-- | - Identity: `map identity = identity`\n-- | - Composition: `map (f <<< g) = map f <<< map g`\nclass Functor f where\n map :: forall a b. (a -> b) -> f a -> f b\n\ninfixl 4 map as <$>\n\n-- | `mapFlipped` is `map` with its arguments reversed. For example:\n-- |\n-- | ```purescript\n-- | [1, 2, 3] <#> \\n -> n * n\n-- | ```\nmapFlipped :: forall f a b. Functor f => f a -> (a -> b) -> f b\nmapFlipped fa f = f <$> fa\n\ninfixl 1 mapFlipped as <#>\n\ninstance functorFn :: Functor ((->) r) where\n map = compose\n\ninstance functorArray :: Functor Array where\n map = arrayMap\n\ninstance functorProxy :: Functor Proxy where\n map _ _ = Proxy\n\nforeign import arrayMap :: forall a b. (a -> b) -> Array a -> Array b\n\n-- | The `void` function is used to ignore the type wrapped by a\n-- | [`Functor`](#functor), replacing it with `Unit` and keeping only the type\n-- | information provided by the type constructor itself.\n-- |\n-- | `void` is often useful when using `do` notation to change the return type\n-- | of a monadic computation:\n-- |\n-- | ```purescript\n-- | main = forE 1 10 \\n -> void do\n-- | print n\n-- | print (n * n)\n-- | ```\nvoid :: forall f a. Functor f => f a -> f Unit\nvoid = map (const unit)\n\n-- | Ignore the return value of a computation, using the specified return value\n-- | instead.\nvoidRight :: forall f a b. Functor f => a -> f b -> f a\nvoidRight x = map (const x)\n\ninfixl 4 voidRight as <$\n\n-- | A version of `voidRight` with its arguments flipped.\nvoidLeft :: forall f a b. Functor f => f a -> b -> f b\nvoidLeft f x = const x <$> f\n\ninfixl 4 voidLeft as $>\n\n-- | Apply a value in a computational context to a value in no context.\n-- |\n-- | Generalizes `flip`.\n-- |\n-- | ```purescript\n-- | longEnough :: String -> Bool\n-- | hasSymbol :: String -> Bool\n-- | hasDigit :: String -> Bool\n-- | password :: String\n-- |\n-- | validate :: String -> Array Bool\n-- | validate = flap [longEnough, hasSymbol, hasDigit]\n-- | ```\n-- |\n-- | ```purescript\n-- | flap (-) 3 4 == 1\n-- | threeve <$> Just 1 <@> 'a' <*> Just true == Just (threeve 1 'a' true)\n-- | ```\nflap :: forall f a b. Functor f => f (a -> b) -> a -> f b\nflap ff x = map (\\f -> f x) ff\n\ninfixl 4 flap as <@>\n", "export const concatString = function (s1) {\n return function (s2) {\n return s1 + s2;\n };\n};\n\nexport const concatArray = function (xs) {\n return function (ys) {\n if (xs.length === 0) return ys;\n if (ys.length === 0) return xs;\n return xs.concat(ys);\n };\n};\n", "module Data.Symbol\n ( class IsSymbol\n , reflectSymbol\n , reifySymbol\n ) where\n\nimport Type.Proxy (Proxy(..))\n\n-- | A class for known symbols\nclass IsSymbol (sym :: Symbol) where\n reflectSymbol :: Proxy sym -> String\n\n-- local definition for use in `reifySymbol`\nforeign import unsafeCoerce :: forall a b. a -> b\n\nreifySymbol :: forall r. String -> (forall sym. IsSymbol sym => Proxy sym -> r) -> r\nreifySymbol s f = coerce f { reflectSymbol: \\_ -> s } Proxy\n where\n coerce\n :: (forall sym1. IsSymbol sym1 => Proxy sym1 -> r)\n -> { reflectSymbol :: Proxy \"\" -> String }\n -> Proxy \"\"\n -> r\n coerce = unsafeCoerce\n", "module Data.Void (Void, absurd) where\n\n-- | An uninhabited data type. In other words, one can never create\n-- | a runtime value of type `Void` because no such value exists.\n-- |\n-- | `Void` is useful to eliminate the possibility of a value being created.\n-- | For example, a value of type `Either Void Boolean` can never have\n-- | a Left value created in PureScript.\n-- |\n-- | This should not be confused with the keyword `void` that commonly appears in\n-- | C-family languages, such as Java:\n-- | ```\n-- | public class Foo {\n-- | void doSomething() { System.out.println(\"hello world!\"); }\n-- | }\n-- | ```\n-- |\n-- | In PureScript, one often uses `Unit` to achieve similar effects as\n-- | the `void` of C-family languages above.\nnewtype Void = Void Void\n\n-- | Eliminator for the `Void` type.\n-- | Useful for stating that some code branch is impossible because you've\n-- | \"acquired\" a value of type `Void` (which you can't).\n-- |\n-- | ```purescript\n-- | rightOnly :: forall t . Either Void t -> t\n-- | rightOnly (Left v) = absurd v\n-- | rightOnly (Right t) = t\n-- | ```\nabsurd :: forall a. Void -> a\nabsurd a = spin a\n where\n spin (Void b) = spin b\n", "export const unsafeHas = function (label) {\n return function (rec) {\n return {}.hasOwnProperty.call(rec, label);\n };\n};\n\nexport const unsafeGet = function (label) {\n return function (rec) {\n return rec[label];\n };\n};\n\nexport const unsafeSet = function (label) {\n return function (value) {\n return function (rec) {\n var copy = {};\n for (var key in rec) {\n if ({}.hasOwnProperty.call(rec, key)) {\n copy[key] = rec[key];\n }\n }\n copy[label] = value;\n return copy;\n };\n };\n};\n\nexport const unsafeDelete = function (label) {\n return function (rec) {\n var copy = {};\n for (var key in rec) {\n if (key !== label && {}.hasOwnProperty.call(rec, key)) {\n copy[key] = rec[key];\n }\n }\n return copy;\n };\n};\n", "module Data.Semigroup\n ( class Semigroup\n , append\n , (<>)\n , class SemigroupRecord\n , appendRecord\n ) where\n\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Unit (Unit, unit)\nimport Data.Void (Void, absurd)\nimport Prim.Row as Row\nimport Prim.RowList as RL\nimport Record.Unsafe (unsafeGet, unsafeSet)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Semigroup` type class identifies an associative operation on a type.\n-- |\n-- | Instances are required to satisfy the following law:\n-- |\n-- | - Associativity: `(x <> y) <> z = x <> (y <> z)`\n-- |\n-- | One example of a `Semigroup` is `String`, with `(<>)` defined as string\n-- | concatenation. Another example is `List a`, with `(<>)` defined as\n-- | list concatenation.\n-- |\n-- | ### Newtypes for Semigroup\n-- |\n-- | There are two other ways to implement an instance for this type class\n-- | regardless of which type is used. These instances can be used by\n-- | wrapping the values in one of the two newtypes below:\n-- | 1. `First` - Use the first argument every time: `append first _ = first`.\n-- | 2. `Last` - Use the last argument every time: `append _ last = last`.\nclass Semigroup a where\n append :: a -> a -> a\n\ninfixr 5 append as <>\n\ninstance semigroupString :: Semigroup String where\n append = concatString\n\ninstance semigroupUnit :: Semigroup Unit where\n append _ _ = unit\n\ninstance semigroupVoid :: Semigroup Void where\n append _ = absurd\n\ninstance semigroupFn :: Semigroup s' => Semigroup (s -> s') where\n append f g x = f x <> g x\n\ninstance semigroupArray :: Semigroup (Array a) where\n append = concatArray\n\ninstance semigroupProxy :: Semigroup (Proxy a) where\n append _ _ = Proxy\n\ninstance semigroupRecord :: (RL.RowToList row list, SemigroupRecord list row row) => Semigroup (Record row) where\n append = appendRecord (Proxy :: Proxy list)\n\nforeign import concatString :: String -> String -> String\nforeign import concatArray :: forall a. Array a -> Array a -> Array a\n\n-- | A class for records where all fields have `Semigroup` instances, used to\n-- | implement the `Semigroup` instance for records.\nclass SemigroupRecord :: RL.RowList Type -> Row Type -> Row Type -> Constraint\nclass SemigroupRecord rowlist row subrow | rowlist -> subrow where\n appendRecord :: Proxy rowlist -> Record row -> Record row -> Record subrow\n\ninstance semigroupRecordNil :: SemigroupRecord RL.Nil row () where\n appendRecord _ _ _ = {}\n\ninstance semigroupRecordCons ::\n ( IsSymbol key\n , Row.Cons key focus subrowTail subrow\n , SemigroupRecord rowlistTail row subrowTail\n , Semigroup focus\n ) =>\n SemigroupRecord (RL.Cons key focus rowlistTail) row subrow where\n appendRecord _ ra rb = insert (get ra <> get rb) tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n get = unsafeGet key :: Record row -> focus\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = appendRecord (Proxy :: Proxy rowlistTail) ra rb\n", "module Control.Alt\n ( class Alt, alt, (<|>)\n , module Data.Functor\n ) where\n\nimport Data.Functor (class Functor, map, void, ($>), (<#>), (<$), (<$>))\nimport Data.Semigroup (append)\n\n-- | The `Alt` type class identifies an associative operation on a type\n-- | constructor. It is similar to `Semigroup`, except that it applies to\n-- | types of kind `* -> *`, like `Array` or `List`, rather than concrete types\n-- | `String` or `Number`.\n-- |\n-- | `Alt` instances are required to satisfy the following laws:\n-- |\n-- | - Associativity: `(x <|> y) <|> z == x <|> (y <|> z)`\n-- | - Distributivity: `f <$> (x <|> y) == (f <$> x) <|> (f <$> y)`\n-- |\n-- | For example, the `Array` (`[]`) type is an instance of `Alt`, where\n-- | `(<|>)` is defined to be concatenation.\n-- |\n-- | A common use case is to select the first \"valid\" item, or, if all items\n-- | are \"invalid\", the last \"invalid\" item.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | import Control.Alt ((<|>))\n-- | import Data.Maybe (Maybe(..)\n-- | import Data.Either (Either(..))\n-- |\n-- | Nothing <|> Just 1 <|> Just 2 == Just 1\n-- | Left \"err\" <|> Right 1 <|> Right 2 == Right 1\n-- | Left \"err 1\" <|> Left \"err 2\" <|> Left \"err 3\" == Left \"err 3\"\n-- | ```\nclass Functor f <= Alt f where\n alt :: forall a. f a -> f a -> f a\n\ninfixr 3 alt as <|>\n\ninstance altArray :: Alt Array where\n alt = append\n", "export const arrayApply = function (fs) {\n return function (xs) {\n var l = fs.length;\n var k = xs.length;\n var result = new Array(l*k);\n var n = 0;\n for (var i = 0; i < l; i++) {\n var f = fs[i];\n for (var j = 0; j < k; j++) {\n result[n++] = f(xs[j]);\n }\n }\n return result;\n };\n};\n", "module Control.Apply\n ( class Apply\n , apply\n , (<*>)\n , applyFirst\n , (<*)\n , applySecond\n , (*>)\n , lift2\n , lift3\n , lift4\n , lift5\n , module Data.Functor\n ) where\n\nimport Data.Functor (class Functor, map, void, ($>), (<#>), (<$), (<$>))\nimport Data.Function (const)\nimport Control.Category (identity)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Apply` class provides the `(<*>)` which is used to apply a function\n-- | to an argument under a type constructor.\n-- |\n-- | `Apply` can be used to lift functions of two or more arguments to work on\n-- | values wrapped with the type constructor `f`. It might also be understood\n-- | in terms of the `lift2` function:\n-- |\n-- | ```purescript\n-- | lift2 :: forall f a b c. Apply f => (a -> b -> c) -> f a -> f b -> f c\n-- | lift2 f a b = f <$> a <*> b\n-- | ```\n-- |\n-- | `(<*>)` is recovered from `lift2` as `lift2 ($)`. That is, `(<*>)` lifts\n-- | the function application operator `($)` to arguments wrapped with the\n-- | type constructor `f`.\n-- |\n-- | Put differently...\n-- | ```\n-- | foo =\n-- | functionTakingNArguments <$> computationProducingArg1\n-- | <*> computationProducingArg2\n-- | <*> ...\n-- | <*> computationProducingArgN\n-- | ```\n-- |\n-- | Instances must satisfy the following law in addition to the `Functor`\n-- | laws:\n-- |\n-- | - Associative composition: `(<<<) <$> f <*> g <*> h = f <*> (g <*> h)`\n-- |\n-- | Formally, `Apply` represents a strong lax semi-monoidal endofunctor.\nclass Functor f <= Apply f where\n apply :: forall a b. f (a -> b) -> f a -> f b\n\ninfixl 4 apply as <*>\n\ninstance applyFn :: Apply ((->) r) where\n apply f g x = f x (g x)\n\ninstance applyArray :: Apply Array where\n apply = arrayApply\n\nforeign import arrayApply :: forall a b. Array (a -> b) -> Array a -> Array b\n\ninstance applyProxy :: Apply Proxy where\n apply _ _ = Proxy\n\n-- | Combine two effectful actions, keeping only the result of the first.\napplyFirst :: forall a b f. Apply f => f a -> f b -> f a\napplyFirst a b = const <$> a <*> b\n\ninfixl 4 applyFirst as <*\n\n-- | Combine two effectful actions, keeping only the result of the second.\napplySecond :: forall a b f. Apply f => f a -> f b -> f b\napplySecond a b = const identity <$> a <*> b\n\ninfixl 4 applySecond as *>\n\n-- | Lift a function of two arguments to a function which accepts and returns\n-- | values wrapped with the type constructor `f`.\n-- |\n-- | ```purescript\n-- | lift2 add (Just 1) (Just 2) == Just 3\n-- | lift2 add Nothing (Just 2) == Nothing\n-- |```\n-- |\nlift2 :: forall a b c f. Apply f => (a -> b -> c) -> f a -> f b -> f c\nlift2 f a b = f <$> a <*> b\n\n-- | Lift a function of three arguments to a function which accepts and returns\n-- | values wrapped with the type constructor `f`.\nlift3 :: forall a b c d f. Apply f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d\nlift3 f a b c = f <$> a <*> b <*> c\n\n-- | Lift a function of four arguments to a function which accepts and returns\n-- | values wrapped with the type constructor `f`.\nlift4 :: forall a b c d e f. Apply f => (a -> b -> c -> d -> e) -> f a -> f b -> f c -> f d -> f e\nlift4 f a b c d = f <$> a <*> b <*> c <*> d\n\n-- | Lift a function of five arguments to a function which accepts and returns\n-- | values wrapped with the type constructor `f`.\nlift5 :: forall a b c d e f g. Apply f => (a -> b -> c -> d -> e -> g) -> f a -> f b -> f c -> f d -> f e -> f g\nlift5 f a b c d e = f <$> a <*> b <*> c <*> d <*> e\n", "module Control.Applicative\n ( class Applicative\n , pure\n , liftA1\n , unless\n , when\n , module Control.Apply\n , module Data.Functor\n ) where\n\nimport Control.Apply (class Apply, apply, (*>), (<*), (<*>))\n\nimport Data.Functor (class Functor, map, void, ($>), (<#>), (<$), (<$>))\nimport Data.Unit (Unit, unit)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Applicative` type class extends the [`Apply`](#apply) type class\n-- | with a `pure` function, which can be used to create values of type `f a`\n-- | from values of type `a`.\n-- |\n-- | Where [`Apply`](#apply) provides the ability to lift functions of two or\n-- | more arguments to functions whose arguments are wrapped using `f`, and\n-- | [`Functor`](#functor) provides the ability to lift functions of one\n-- | argument, `pure` can be seen as the function which lifts functions of\n-- | _zero_ arguments. That is, `Applicative` functors support a lifting\n-- | operation for any number of function arguments.\n-- |\n-- | Instances must satisfy the following laws in addition to the `Apply`\n-- | laws:\n-- |\n-- | - Identity: `(pure identity) <*> v = v`\n-- | - Composition: `pure (<<<) <*> f <*> g <*> h = f <*> (g <*> h)`\n-- | - Homomorphism: `(pure f) <*> (pure x) = pure (f x)`\n-- | - Interchange: `u <*> (pure y) = (pure (_ $ y)) <*> u`\nclass Apply f <= Applicative f where\n pure :: forall a. a -> f a\n\ninstance applicativeFn :: Applicative ((->) r) where\n pure x _ = x\n\ninstance applicativeArray :: Applicative Array where\n pure x = [ x ]\n\ninstance applicativeProxy :: Applicative Proxy where\n pure _ = Proxy\n\n-- | `liftA1` provides a default implementation of `(<$>)` for any\n-- | [`Applicative`](#applicative) functor, without using `(<$>)` as provided\n-- | by the [`Functor`](#functor)-[`Applicative`](#applicative) superclass\n-- | relationship.\n-- |\n-- | `liftA1` can therefore be used to write [`Functor`](#functor) instances\n-- | as follows:\n-- |\n-- | ```purescript\n-- | instance functorF :: Functor F where\n-- | map = liftA1\n-- | ```\nliftA1 :: forall f a b. Applicative f => (a -> b) -> f a -> f b\nliftA1 f a = pure f <*> a\n\n-- | Perform an applicative action when a condition is true.\nwhen :: forall m. Applicative m => Boolean -> m Unit -> m Unit\nwhen true m = m\nwhen false _ = pure unit\n\n-- | Perform an applicative action unless a condition is true.\nunless :: forall m. Applicative m => Boolean -> m Unit -> m Unit\nunless false m = m\nunless true _ = pure unit\n", "export const topInt = 2147483647;\nexport const bottomInt = -2147483648;\n\nexport const topChar = String.fromCharCode(65535);\nexport const bottomChar = String.fromCharCode(0);\n\nexport const topNumber = Number.POSITIVE_INFINITY;\nexport const bottomNumber = Number.NEGATIVE_INFINITY;\n", "var unsafeCompareImpl = function (lt) {\n return function (eq) {\n return function (gt) {\n return function (x) {\n return function (y) {\n return x < y ? lt : x === y ? eq : gt;\n };\n };\n };\n };\n};\n\nexport const ordBooleanImpl = unsafeCompareImpl;\nexport const ordIntImpl = unsafeCompareImpl;\nexport const ordNumberImpl = unsafeCompareImpl;\nexport const ordStringImpl = unsafeCompareImpl;\nexport const ordCharImpl = unsafeCompareImpl;\n\nexport const ordArrayImpl = function (f) {\n return function (xs) {\n return function (ys) {\n var i = 0;\n var xlen = xs.length;\n var ylen = ys.length;\n while (i < xlen && i < ylen) {\n var x = xs[i];\n var y = ys[i];\n var o = f(x)(y);\n if (o !== 0) {\n return o;\n }\n i++;\n }\n if (xlen === ylen) {\n return 0;\n } else if (xlen > ylen) {\n return -1;\n } else {\n return 1;\n }\n };\n };\n};\n", "var refEq = function (r1) {\n return function (r2) {\n return r1 === r2;\n };\n};\n\nexport const eqBooleanImpl = refEq;\nexport const eqIntImpl = refEq;\nexport const eqNumberImpl = refEq;\nexport const eqCharImpl = refEq;\nexport const eqStringImpl = refEq;\n\nexport const eqArrayImpl = function (f) {\n return function (xs) {\n return function (ys) {\n if (xs.length !== ys.length) return false;\n for (var i = 0; i < xs.length; i++) {\n if (!f(xs[i])(ys[i])) return false;\n }\n return true;\n };\n };\n};\n", "module Data.Eq\n ( class Eq\n , eq\n , (==)\n , notEq\n , (/=)\n , class Eq1\n , eq1\n , notEq1\n , class EqRecord\n , eqRecord\n ) where\n\nimport Data.HeytingAlgebra ((&&))\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Unit (Unit)\nimport Data.Void (Void)\nimport Prim.Row as Row\nimport Prim.RowList as RL\nimport Record.Unsafe (unsafeGet)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Eq` type class represents types which support decidable equality.\n-- |\n-- | `Eq` instances should satisfy the following laws:\n-- |\n-- | - Reflexivity: `x == x = true`\n-- | - Symmetry: `x == y = y == x`\n-- | - Transitivity: if `x == y` and `y == z` then `x == z`\n-- |\n-- | **Note:** The `Number` type is not an entirely law abiding member of this\n-- | class due to the presence of `NaN`, since `NaN /= NaN`. Additionally,\n-- | computing with `Number` can result in a loss of precision, so sometimes\n-- | values that should be equivalent are not.\nclass Eq a where\n eq :: a -> a -> Boolean\n\ninfix 4 eq as ==\n\n-- | `notEq` tests whether one value is _not equal_ to another. Shorthand for\n-- | `not (eq x y)`.\nnotEq :: forall a. Eq a => a -> a -> Boolean\nnotEq x y = (x == y) == false\n\ninfix 4 notEq as /=\n\ninstance eqBoolean :: Eq Boolean where\n eq = eqBooleanImpl\n\ninstance eqInt :: Eq Int where\n eq = eqIntImpl\n\ninstance eqNumber :: Eq Number where\n eq = eqNumberImpl\n\ninstance eqChar :: Eq Char where\n eq = eqCharImpl\n\ninstance eqString :: Eq String where\n eq = eqStringImpl\n\ninstance eqUnit :: Eq Unit where\n eq _ _ = true\n\ninstance eqVoid :: Eq Void where\n eq _ _ = true\n\ninstance eqArray :: Eq a => Eq (Array a) where\n eq = eqArrayImpl eq\n\ninstance eqRec :: (RL.RowToList row list, EqRecord list row) => Eq (Record row) where\n eq = eqRecord (Proxy :: Proxy list)\n\ninstance eqProxy :: Eq (Proxy a) where\n eq _ _ = true\n\nforeign import eqBooleanImpl :: Boolean -> Boolean -> Boolean\nforeign import eqIntImpl :: Int -> Int -> Boolean\nforeign import eqNumberImpl :: Number -> Number -> Boolean\nforeign import eqCharImpl :: Char -> Char -> Boolean\nforeign import eqStringImpl :: String -> String -> Boolean\n\nforeign import eqArrayImpl :: forall a. (a -> a -> Boolean) -> Array a -> Array a -> Boolean\n\n-- | The `Eq1` type class represents type constructors with decidable equality.\nclass Eq1 f where\n eq1 :: forall a. Eq a => f a -> f a -> Boolean\n\ninstance eq1Array :: Eq1 Array where\n eq1 = eq\n\nnotEq1 :: forall f a. Eq1 f => Eq a => f a -> f a -> Boolean\nnotEq1 x y = (x `eq1` y) == false\n\n-- | A class for records where all fields have `Eq` instances, used to implement\n-- | the `Eq` instance for records.\nclass EqRecord :: RL.RowList Type -> Row Type -> Constraint\nclass EqRecord rowlist row where\n eqRecord :: Proxy rowlist -> Record row -> Record row -> Boolean\n\ninstance eqRowNil :: EqRecord RL.Nil row where\n eqRecord _ _ _ = true\n\ninstance eqRowCons ::\n ( EqRecord rowlistTail row\n , Row.Cons key focus rowTail row\n , IsSymbol key\n , Eq focus\n ) =>\n EqRecord (RL.Cons key focus rowlistTail) row where\n eqRecord _ ra rb = (get ra == get rb) && tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n get = unsafeGet key :: Record row -> focus\n tail = eqRecord (Proxy :: Proxy rowlistTail) ra rb\n", "module Data.Ordering (Ordering(..), invert) where\n\nimport Data.Eq (class Eq)\nimport Data.Semigroup (class Semigroup)\nimport Data.Show (class Show)\n\n-- | The `Ordering` data type represents the three possible outcomes of\n-- | comparing two values:\n-- |\n-- | `LT` - The first value is _less than_ the second.\n-- | `GT` - The first value is _greater than_ the second.\n-- | `EQ` - The first value is _equal to_ the second.\ndata Ordering = LT | GT | EQ\n\ninstance eqOrdering :: Eq Ordering where\n eq LT LT = true\n eq GT GT = true\n eq EQ EQ = true\n eq _ _ = false\n\ninstance semigroupOrdering :: Semigroup Ordering where\n append LT _ = LT\n append GT _ = GT\n append EQ y = y\n\ninstance showOrdering :: Show Ordering where\n show LT = \"LT\"\n show GT = \"GT\"\n show EQ = \"EQ\"\n\n-- | Reverses an `Ordering` value, flipping greater than for less than while\n-- | preserving equality.\ninvert :: Ordering -> Ordering\ninvert GT = LT\ninvert EQ = EQ\ninvert LT = GT\n", "export const intSub = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return x - y | 0;\n };\n};\n\nexport const numSub = function (n1) {\n return function (n2) {\n return n1 - n2;\n };\n};\n", "export const intAdd = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return x + y | 0;\n };\n};\n\nexport const intMul = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return x * y | 0;\n };\n};\n\nexport const numAdd = function (n1) {\n return function (n2) {\n return n1 + n2;\n };\n};\n\nexport const numMul = function (n1) {\n return function (n2) {\n return n1 * n2;\n };\n};\n", "module Data.Semiring\n ( class Semiring\n , add\n , (+)\n , zero\n , mul\n , (*)\n , one\n , class SemiringRecord\n , addRecord\n , mulRecord\n , oneRecord\n , zeroRecord\n ) where\n\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Unit (Unit, unit)\nimport Prim.Row as Row\nimport Prim.RowList as RL\nimport Record.Unsafe (unsafeGet, unsafeSet)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Semiring` class is for types that support an addition and\n-- | multiplication operation.\n-- |\n-- | Instances must satisfy the following laws:\n-- |\n-- | - Commutative monoid under addition:\n-- | - Associativity: `(a + b) + c = a + (b + c)`\n-- | - Identity: `zero + a = a + zero = a`\n-- | - Commutative: `a + b = b + a`\n-- | - Monoid under multiplication:\n-- | - Associativity: `(a * b) * c = a * (b * c)`\n-- | - Identity: `one * a = a * one = a`\n-- | - Multiplication distributes over addition:\n-- | - Left distributivity: `a * (b + c) = (a * b) + (a * c)`\n-- | - Right distributivity: `(a + b) * c = (a * c) + (b * c)`\n-- | - Annihilation: `zero * a = a * zero = zero`\n-- |\n-- | **Note:** The `Number` and `Int` types are not fully law abiding\n-- | members of this class hierarchy due to the potential for arithmetic\n-- | overflows, and in the case of `Number`, the presence of `NaN` and\n-- | `Infinity` values. The behaviour is unspecified in these cases.\nclass Semiring a where\n add :: a -> a -> a\n zero :: a\n mul :: a -> a -> a\n one :: a\n\ninfixl 6 add as +\ninfixl 7 mul as *\n\ninstance semiringInt :: Semiring Int where\n add = intAdd\n zero = 0\n mul = intMul\n one = 1\n\ninstance semiringNumber :: Semiring Number where\n add = numAdd\n zero = 0.0\n mul = numMul\n one = 1.0\n\ninstance semiringFn :: Semiring b => Semiring (a -> b) where\n add f g x = f x + g x\n zero = \\_ -> zero\n mul f g x = f x * g x\n one = \\_ -> one\n\ninstance semiringUnit :: Semiring Unit where\n add _ _ = unit\n zero = unit\n mul _ _ = unit\n one = unit\n\ninstance semiringProxy :: Semiring (Proxy a) where\n add _ _ = Proxy\n mul _ _ = Proxy\n one = Proxy\n zero = Proxy\n\ninstance semiringRecord :: (RL.RowToList row list, SemiringRecord list row row) => Semiring (Record row) where\n add = addRecord (Proxy :: Proxy list)\n mul = mulRecord (Proxy :: Proxy list)\n one = oneRecord (Proxy :: Proxy list) (Proxy :: Proxy row)\n zero = zeroRecord (Proxy :: Proxy list) (Proxy :: Proxy row)\n\nforeign import intAdd :: Int -> Int -> Int\nforeign import intMul :: Int -> Int -> Int\nforeign import numAdd :: Number -> Number -> Number\nforeign import numMul :: Number -> Number -> Number\n\n-- | A class for records where all fields have `Semiring` instances, used to\n-- | implement the `Semiring` instance for records.\nclass SemiringRecord :: RL.RowList Type -> Row Type -> Row Type -> Constraint\nclass SemiringRecord rowlist row subrow | rowlist -> subrow where\n addRecord :: Proxy rowlist -> Record row -> Record row -> Record subrow\n mulRecord :: Proxy rowlist -> Record row -> Record row -> Record subrow\n oneRecord :: Proxy rowlist -> Proxy row -> Record subrow\n zeroRecord :: Proxy rowlist -> Proxy row -> Record subrow\n\ninstance semiringRecordNil :: SemiringRecord RL.Nil row () where\n addRecord _ _ _ = {}\n mulRecord _ _ _ = {}\n oneRecord _ _ = {}\n zeroRecord _ _ = {}\n\ninstance semiringRecordCons ::\n ( IsSymbol key\n , Row.Cons key focus subrowTail subrow\n , SemiringRecord rowlistTail row subrowTail\n , Semiring focus\n ) =>\n SemiringRecord (RL.Cons key focus rowlistTail) row subrow where\n addRecord _ ra rb = insert (get ra + get rb) tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n get = unsafeGet key :: Record row -> focus\n tail = addRecord (Proxy :: Proxy rowlistTail) ra rb\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n\n mulRecord _ ra rb = insert (get ra * get rb) tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n get = unsafeGet key :: Record row -> focus\n tail = mulRecord (Proxy :: Proxy rowlistTail) ra rb\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n\n oneRecord _ _ = insert one tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n tail = oneRecord (Proxy :: Proxy rowlistTail) (Proxy :: Proxy row)\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n\n zeroRecord _ _ = insert zero tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n tail = zeroRecord (Proxy :: Proxy rowlistTail) (Proxy :: Proxy row)\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n", "module Data.Ring\n ( class Ring\n , sub\n , negate\n , (-)\n , module Data.Semiring\n , class RingRecord\n , subRecord\n ) where\n\nimport Data.Semiring (class Semiring, class SemiringRecord, add, mul, one, zero, (*), (+))\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Unit (Unit, unit)\nimport Prim.Row as Row\nimport Prim.RowList as RL\nimport Record.Unsafe (unsafeGet, unsafeSet)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Ring` class is for types that support addition, multiplication,\n-- | and subtraction operations.\n-- |\n-- | Instances must satisfy the following laws in addition to the `Semiring`\n-- | laws:\n-- |\n-- | - Additive inverse: `a - a = zero`\n-- | - Compatibility of `sub` and `negate`: `a - b = a + (zero - b)`\nclass Semiring a <= Ring a where\n sub :: a -> a -> a\n\ninfixl 6 sub as -\n\ninstance ringInt :: Ring Int where\n sub = intSub\n\ninstance ringNumber :: Ring Number where\n sub = numSub\n\ninstance ringUnit :: Ring Unit where\n sub _ _ = unit\n\ninstance ringFn :: Ring b => Ring (a -> b) where\n sub f g x = f x - g x\n\ninstance ringProxy :: Ring (Proxy a) where\n sub _ _ = Proxy\n\ninstance ringRecord :: (RL.RowToList row list, RingRecord list row row) => Ring (Record row) where\n sub = subRecord (Proxy :: Proxy list)\n\n-- | `negate x` can be used as a shorthand for `zero - x`.\nnegate :: forall a. Ring a => a -> a\nnegate a = zero - a\n\nforeign import intSub :: Int -> Int -> Int\nforeign import numSub :: Number -> Number -> Number\n\n-- | A class for records where all fields have `Ring` instances, used to\n-- | implement the `Ring` instance for records.\nclass RingRecord :: RL.RowList Type -> Row Type -> Row Type -> Constraint\nclass SemiringRecord rowlist row subrow <= RingRecord rowlist row subrow | rowlist -> subrow where\n subRecord :: Proxy rowlist -> Record row -> Record row -> Record subrow\n\ninstance ringRecordNil :: RingRecord RL.Nil row () where\n subRecord _ _ _ = {}\n\ninstance ringRecordCons ::\n ( IsSymbol key\n , Row.Cons key focus subrowTail subrow\n , RingRecord rowlistTail row subrowTail\n , Ring focus\n ) =>\n RingRecord (RL.Cons key focus rowlistTail) row subrow where\n subRecord _ ra rb = insert (get ra - get rb) tail\n where\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n key = reflectSymbol (Proxy :: Proxy key)\n get = unsafeGet key :: Record row -> focus\n tail = subRecord (Proxy :: Proxy rowlistTail) ra rb\n", "module Data.Ord\n ( class Ord\n , compare\n , class Ord1\n , compare1\n , lessThan\n , (<)\n , lessThanOrEq\n , (<=)\n , greaterThan\n , (>)\n , greaterThanOrEq\n , (>=)\n , comparing\n , min\n , max\n , clamp\n , between\n , abs\n , signum\n , module Data.Ordering\n , class OrdRecord\n , compareRecord\n ) where\n\nimport Data.Eq (class Eq, class Eq1, class EqRecord, (/=))\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Ordering (Ordering(..))\nimport Data.Ring (class Ring, zero, one, negate)\nimport Data.Unit (Unit)\nimport Data.Void (Void)\nimport Prim.Row as Row\nimport Prim.RowList as RL\nimport Record.Unsafe (unsafeGet)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Ord` type class represents types which support comparisons with a\n-- | _total order_.\n-- |\n-- | `Ord` instances should satisfy the laws of total orderings:\n-- |\n-- | - Reflexivity: `a <= a`\n-- | - Antisymmetry: if `a <= b` and `b <= a` then `a == b`\n-- | - Transitivity: if `a <= b` and `b <= c` then `a <= c`\n-- |\n-- | **Note:** The `Number` type is not an entirely law abiding member of this\n-- | class due to the presence of `NaN`, since `NaN <= NaN` evaluates to `false`\nclass Eq a <= Ord a where\n compare :: a -> a -> Ordering\n\ninstance ordBoolean :: Ord Boolean where\n compare = ordBooleanImpl LT EQ GT\n\ninstance ordInt :: Ord Int where\n compare = ordIntImpl LT EQ GT\n\ninstance ordNumber :: Ord Number where\n compare = ordNumberImpl LT EQ GT\n\ninstance ordString :: Ord String where\n compare = ordStringImpl LT EQ GT\n\ninstance ordChar :: Ord Char where\n compare = ordCharImpl LT EQ GT\n\ninstance ordUnit :: Ord Unit where\n compare _ _ = EQ\n\ninstance ordVoid :: Ord Void where\n compare _ _ = EQ\n\ninstance ordProxy :: Ord (Proxy a) where\n compare _ _ = EQ\n\ninstance ordArray :: Ord a => Ord (Array a) where\n compare = \\xs ys -> compare 0 (ordArrayImpl toDelta xs ys)\n where\n toDelta x y =\n case compare x y of\n EQ -> 0\n LT -> 1\n GT -> -1\n\nforeign import ordBooleanImpl\n :: Ordering\n -> Ordering\n -> Ordering\n -> Boolean\n -> Boolean\n -> Ordering\n\nforeign import ordIntImpl\n :: Ordering\n -> Ordering\n -> Ordering\n -> Int\n -> Int\n -> Ordering\n\nforeign import ordNumberImpl\n :: Ordering\n -> Ordering\n -> Ordering\n -> Number\n -> Number\n -> Ordering\n\nforeign import ordStringImpl\n :: Ordering\n -> Ordering\n -> Ordering\n -> String\n -> String\n -> Ordering\n\nforeign import ordCharImpl\n :: Ordering\n -> Ordering\n -> Ordering\n -> Char\n -> Char\n -> Ordering\n\nforeign import ordArrayImpl :: forall a. (a -> a -> Int) -> Array a -> Array a -> Int\n\ninstance ordOrdering :: Ord Ordering where\n compare LT LT = EQ\n compare EQ EQ = EQ\n compare GT GT = EQ\n compare LT _ = LT\n compare EQ LT = GT\n compare EQ GT = LT\n compare GT _ = GT\n\n-- | Test whether one value is _strictly less than_ another.\nlessThan :: forall a. Ord a => a -> a -> Boolean\nlessThan a1 a2 = case a1 `compare` a2 of\n LT -> true\n _ -> false\n\n-- | Test whether one value is _strictly greater than_ another.\ngreaterThan :: forall a. Ord a => a -> a -> Boolean\ngreaterThan a1 a2 = case a1 `compare` a2 of\n GT -> true\n _ -> false\n\n-- | Test whether one value is _non-strictly less than_ another.\nlessThanOrEq :: forall a. Ord a => a -> a -> Boolean\nlessThanOrEq a1 a2 = case a1 `compare` a2 of\n GT -> false\n _ -> true\n\n-- | Test whether one value is _non-strictly greater than_ another.\ngreaterThanOrEq :: forall a. Ord a => a -> a -> Boolean\ngreaterThanOrEq a1 a2 = case a1 `compare` a2 of\n LT -> false\n _ -> true\n\ninfixl 4 lessThan as <\ninfixl 4 lessThanOrEq as <=\ninfixl 4 greaterThan as >\ninfixl 4 greaterThanOrEq as >=\n\n-- | Compares two values by mapping them to a type with an `Ord` instance.\ncomparing :: forall a b. Ord b => (a -> b) -> (a -> a -> Ordering)\ncomparing f x y = compare (f x) (f y)\n\n-- | Take the minimum of two values. If they are considered equal, the first\n-- | argument is chosen.\nmin :: forall a. Ord a => a -> a -> a\nmin x y =\n case compare x y of\n LT -> x\n EQ -> x\n GT -> y\n\n-- | Take the maximum of two values. If they are considered equal, the first\n-- | argument is chosen.\nmax :: forall a. Ord a => a -> a -> a\nmax x y =\n case compare x y of\n LT -> y\n EQ -> x\n GT -> x\n\n-- | Clamp a value between a minimum and a maximum. For example:\n-- |\n-- | ``` purescript\n-- | let f = clamp 0 10\n-- | f (-5) == 0\n-- | f 5 == 5\n-- | f 15 == 10\n-- | ```\nclamp :: forall a. Ord a => a -> a -> a -> a\nclamp low hi x = min hi (max low x)\n\n-- | Test whether a value is between a minimum and a maximum (inclusive).\n-- | For example:\n-- |\n-- | ``` purescript\n-- | let f = between 0 10\n-- | f 0 == true\n-- | f (-5) == false\n-- | f 5 == true\n-- | f 10 == true\n-- | f 15 == false\n-- | ```\nbetween :: forall a. Ord a => a -> a -> a -> Boolean\nbetween low hi x\n | x < low = false\n | x > hi = false\n | true = true\n\n-- | The absolute value function. `abs x` is defined as `if x >= zero then x\n-- | else negate x`.\nabs :: forall a. Ord a => Ring a => a -> a\nabs x = if x >= zero then x else negate x\n\n-- | The sign function; returns `one` if the argument is positive,\n-- | `negate one` if the argument is negative, or `zero` if the argument is `zero`.\n-- | For floating point numbers with signed zeroes, when called with a zero,\n-- | this function returns the argument in order to preserve the sign.\n-- | For any `x`, we should have `signum x * abs x == x`.\nsignum :: forall a. Ord a => Ring a => a -> a\nsignum x =\n if x < zero then negate one\n else if x > zero then one\n else x\n\n-- | The `Ord1` type class represents totally ordered type constructors.\nclass Eq1 f <= Ord1 f where\n compare1 :: forall a. Ord a => f a -> f a -> Ordering\n\ninstance ord1Array :: Ord1 Array where\n compare1 = compare\n\nclass OrdRecord :: RL.RowList Type -> Row Type -> Constraint\nclass EqRecord rowlist row <= OrdRecord rowlist row where\n compareRecord :: Proxy rowlist -> Record row -> Record row -> Ordering\n\ninstance ordRecordNil :: OrdRecord RL.Nil row where\n compareRecord _ _ _ = EQ\n\ninstance ordRecordCons ::\n ( OrdRecord rowlistTail row\n , Row.Cons key focus rowTail row\n , IsSymbol key\n , Ord focus\n ) =>\n OrdRecord (RL.Cons key focus rowlistTail) row where\n compareRecord _ ra rb =\n if left /= EQ then left\n else compareRecord (Proxy :: Proxy rowlistTail) ra rb\n where\n key = reflectSymbol (Proxy :: Proxy key)\n unsafeGet' = unsafeGet :: String -> Record row -> focus\n left = unsafeGet' key ra `compare` unsafeGet' key rb\n\ninstance ordRecord ::\n ( RL.RowToList row list\n , OrdRecord list row\n ) =>\n Ord (Record row) where\n compare = compareRecord (Proxy :: Proxy list)\n", "module Data.Bounded\n ( class Bounded\n , bottom\n , top\n , module Data.Ord\n , class BoundedRecord\n , bottomRecord\n , topRecord\n ) where\n\nimport Data.Ord (class Ord, class OrdRecord, Ordering(..), compare, (<), (<=), (>), (>=))\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Unit (Unit, unit)\nimport Prim.Row as Row\nimport Prim.RowList as RL\nimport Record.Unsafe (unsafeSet)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Bounded` type class represents totally ordered types that have an\n-- | upper and lower boundary.\n-- |\n-- | Instances should satisfy the following law in addition to the `Ord` laws:\n-- |\n-- | - Bounded: `bottom <= a <= top`\nclass Ord a <= Bounded a where\n top :: a\n bottom :: a\n\ninstance boundedBoolean :: Bounded Boolean where\n top = true\n bottom = false\n\n-- | The `Bounded` `Int` instance has `top :: Int` equal to 2^31 - 1,\n-- | and `bottom :: Int` equal to -2^31, since these are the largest and smallest\n-- | integers representable by twos-complement 32-bit integers, respectively.\ninstance boundedInt :: Bounded Int where\n top = topInt\n bottom = bottomInt\n\nforeign import topInt :: Int\nforeign import bottomInt :: Int\n\n-- | Characters fall within the Unicode range.\ninstance boundedChar :: Bounded Char where\n top = topChar\n bottom = bottomChar\n\nforeign import topChar :: Char\nforeign import bottomChar :: Char\n\ninstance boundedOrdering :: Bounded Ordering where\n top = GT\n bottom = LT\n\ninstance boundedUnit :: Bounded Unit where\n top = unit\n bottom = unit\n\nforeign import topNumber :: Number\nforeign import bottomNumber :: Number\n\ninstance boundedNumber :: Bounded Number where\n top = topNumber\n bottom = bottomNumber\n\ninstance boundedProxy :: Bounded (Proxy a) where\n bottom = Proxy\n top = Proxy\n\nclass BoundedRecord :: RL.RowList Type -> Row Type -> Row Type -> Constraint\nclass OrdRecord rowlist row <= BoundedRecord rowlist row subrow | rowlist -> subrow where\n topRecord :: Proxy rowlist -> Proxy row -> Record subrow\n bottomRecord :: Proxy rowlist -> Proxy row -> Record subrow\n\ninstance boundedRecordNil :: BoundedRecord RL.Nil row () where\n topRecord _ _ = {}\n bottomRecord _ _ = {}\n\ninstance boundedRecordCons ::\n ( IsSymbol key\n , Bounded focus\n , Row.Cons key focus rowTail row\n , Row.Cons key focus subrowTail subrow\n , BoundedRecord rowlistTail row subrowTail\n ) =>\n BoundedRecord (RL.Cons key focus rowlistTail) row subrow where\n topRecord _ rowProxy = insert top tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = topRecord (Proxy :: Proxy rowlistTail) rowProxy\n\n bottomRecord _ rowProxy = insert bottom tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = bottomRecord (Proxy :: Proxy rowlistTail) rowProxy\n\ninstance boundedRecord ::\n ( RL.RowToList row list\n , BoundedRecord list row row\n ) =>\n Bounded (Record row) where\n top = topRecord (Proxy :: Proxy list) (Proxy :: Proxy row)\n bottom = bottomRecord (Proxy :: Proxy list) (Proxy :: Proxy row)\n", "export const showIntImpl = function (n) {\n return n.toString();\n};\n\nexport const showNumberImpl = function (n) {\n var str = n.toString();\n return isNaN(str + \".0\") ? str : str + \".0\";\n};\n\nexport const showCharImpl = function (c) {\n var code = c.charCodeAt(0);\n if (code < 0x20 || code === 0x7F) {\n switch (c) {\n case \"\\x07\": return \"'\\\\a'\";\n case \"\\b\": return \"'\\\\b'\";\n case \"\\f\": return \"'\\\\f'\";\n case \"\\n\": return \"'\\\\n'\";\n case \"\\r\": return \"'\\\\r'\";\n case \"\\t\": return \"'\\\\t'\";\n case \"\\v\": return \"'\\\\v'\";\n }\n return \"'\\\\\" + code.toString(10) + \"'\";\n }\n return c === \"'\" || c === \"\\\\\" ? \"'\\\\\" + c + \"'\" : \"'\" + c + \"'\";\n};\n\nexport const showStringImpl = function (s) {\n var l = s.length;\n return \"\\\"\" + s.replace(\n /[\\0-\\x1F\\x7F\"\\\\]/g, // eslint-disable-line no-control-regex\n function (c, i) {\n switch (c) {\n case \"\\\"\":\n case \"\\\\\":\n return \"\\\\\" + c;\n case \"\\x07\": return \"\\\\a\";\n case \"\\b\": return \"\\\\b\";\n case \"\\f\": return \"\\\\f\";\n case \"\\n\": return \"\\\\n\";\n case \"\\r\": return \"\\\\r\";\n case \"\\t\": return \"\\\\t\";\n case \"\\v\": return \"\\\\v\";\n }\n var k = i + 1;\n var empty = k < l && s[k] >= \"0\" && s[k] <= \"9\" ? \"\\\\&\" : \"\";\n return \"\\\\\" + c.charCodeAt(0).toString(10) + empty;\n }\n ) + \"\\\"\";\n};\n\nexport const showArrayImpl = function (f) {\n return function (xs) {\n var ss = [];\n for (var i = 0, l = xs.length; i < l; i++) {\n ss[i] = f(xs[i]);\n }\n return \"[\" + ss.join(\",\") + \"]\";\n };\n};\n", "module Data.Show\n ( class Show\n , show\n , class ShowRecordFields\n , showRecordFields\n ) where\n\nimport Data.Semigroup ((<>))\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Unit (Unit)\nimport Data.Void (Void, absurd)\nimport Prim.Row (class Nub)\nimport Prim.RowList as RL\nimport Record.Unsafe (unsafeGet)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Show` type class represents those types which can be converted into\n-- | a human-readable `String` representation.\n-- |\n-- | While not required, it is recommended that for any expression `x`, the\n-- | string `show x` be executable PureScript code which evaluates to the same\n-- | value as the expression `x`.\nclass Show a where\n show :: a -> String\n\ninstance showUnit :: Show Unit where\n show _ = \"unit\"\n\ninstance showBoolean :: Show Boolean where\n show true = \"true\"\n show false = \"false\"\n\ninstance showInt :: Show Int where\n show = showIntImpl\n\ninstance showNumber :: Show Number where\n show = showNumberImpl\n\ninstance showChar :: Show Char where\n show = showCharImpl\n\ninstance showString :: Show String where\n show = showStringImpl\n\ninstance showArray :: Show a => Show (Array a) where\n show = showArrayImpl show\n\ninstance showProxy :: Show (Proxy a) where\n show _ = \"Proxy\"\n\ninstance showVoid :: Show Void where\n show = absurd\n\ninstance showRecord ::\n ( Nub rs rs\n , RL.RowToList rs ls\n , ShowRecordFields ls rs\n ) =>\n Show (Record rs) where\n show record = \"{\" <> showRecordFields (Proxy :: Proxy ls) record <> \"}\"\n\n-- | A class for records where all fields have `Show` instances, used to\n-- | implement the `Show` instance for records.\nclass ShowRecordFields :: RL.RowList Type -> Row Type -> Constraint\nclass ShowRecordFields rowlist row where\n showRecordFields :: Proxy rowlist -> Record row -> String\n\ninstance showRecordFieldsNil :: ShowRecordFields RL.Nil row where\n showRecordFields _ _ = \"\"\nelse\ninstance showRecordFieldsConsNil ::\n ( IsSymbol key\n , Show focus\n ) =>\n ShowRecordFields (RL.Cons key focus RL.Nil) row where\n showRecordFields _ record = \" \" <> key <> \": \" <> show focus <> \" \"\n where\n key = reflectSymbol (Proxy :: Proxy key)\n focus = unsafeGet key record :: focus\nelse\ninstance showRecordFieldsCons ::\n ( IsSymbol key\n , ShowRecordFields rowlistTail row\n , Show focus\n ) =>\n ShowRecordFields (RL.Cons key focus rowlistTail) row where\n showRecordFields _ record = \" \" <> key <> \": \" <> show focus <> \",\" <> tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n focus = unsafeGet key record :: focus\n tail = showRecordFields (Proxy :: Proxy rowlistTail) record\n\nforeign import showIntImpl :: Int -> String\nforeign import showNumberImpl :: Number -> String\nforeign import showCharImpl :: Char -> String\nforeign import showStringImpl :: String -> String\nforeign import showArrayImpl :: forall a. (a -> String) -> Array a -> String\n", "module Data.Maybe where\n\nimport Prelude\n\nimport Control.Alt (class Alt, (<|>))\nimport Control.Alternative (class Alternative)\nimport Control.Extend (class Extend)\nimport Control.Plus (class Plus)\n\nimport Data.Eq (class Eq1)\nimport Data.Functor.Invariant (class Invariant, imapF)\nimport Data.Generic.Rep (class Generic)\nimport Data.Ord (class Ord1)\n\n-- | The `Maybe` type is used to represent optional values and can be seen as\n-- | something like a type-safe `null`, where `Nothing` is `null` and `Just x`\n-- | is the non-null value `x`.\ndata Maybe a = Nothing | Just a\n\n-- | The `Functor` instance allows functions to transform the contents of a\n-- | `Just` with the `<$>` operator:\n-- |\n-- | ``` purescript\n-- | f <$> Just x == Just (f x)\n-- | ```\n-- |\n-- | `Nothing` values are left untouched:\n-- |\n-- | ``` purescript\n-- | f <$> Nothing == Nothing\n-- | ```\ninstance functorMaybe :: Functor Maybe where\n map fn (Just x) = Just (fn x)\n map _ _ = Nothing\n\n-- | The `Apply` instance allows functions contained within a `Just` to\n-- | transform a value contained within a `Just` using the `apply` operator:\n-- |\n-- | ``` purescript\n-- | Just f <*> Just x == Just (f x)\n-- | ```\n-- |\n-- | `Nothing` values are left untouched:\n-- |\n-- | ``` purescript\n-- | Just f <*> Nothing == Nothing\n-- | Nothing <*> Just x == Nothing\n-- | ```\n-- |\n-- | Combining `Functor`'s `<$>` with `Apply`'s `<*>` can be used transform a\n-- | pure function to take `Maybe`-typed arguments so `f :: a -> b -> c`\n-- | becomes `f :: Maybe a -> Maybe b -> Maybe c`:\n-- |\n-- | ``` purescript\n-- | f <$> Just x <*> Just y == Just (f x y)\n-- | ```\n-- |\n-- | The `Nothing`-preserving behaviour of both operators means the result of\n-- | an expression like the above but where any one of the values is `Nothing`\n-- | means the whole result becomes `Nothing` also:\n-- |\n-- | ``` purescript\n-- | f <$> Nothing <*> Just y == Nothing\n-- | f <$> Just x <*> Nothing == Nothing\n-- | f <$> Nothing <*> Nothing == Nothing\n-- | ```\ninstance applyMaybe :: Apply Maybe where\n apply (Just fn) x = fn <$> x\n apply Nothing _ = Nothing\n\n-- | The `Applicative` instance enables lifting of values into `Maybe` with the\n-- | `pure` function:\n-- |\n-- | ``` purescript\n-- | pure x :: Maybe _ == Just x\n-- | ```\n-- |\n-- | Combining `Functor`'s `<$>` with `Apply`'s `<*>` and `Applicative`'s\n-- | `pure` can be used to pass a mixture of `Maybe` and non-`Maybe` typed\n-- | values to a function that does not usually expect them, by using `pure`\n-- | for any value that is not already `Maybe` typed:\n-- |\n-- | ``` purescript\n-- | f <$> Just x <*> pure y == Just (f x y)\n-- | ```\n-- |\n-- | Even though `pure = Just` it is recommended to use `pure` in situations\n-- | like this as it allows the choice of `Applicative` to be changed later\n-- | without having to go through and replace `Just` with a new constructor.\ninstance applicativeMaybe :: Applicative Maybe where\n pure = Just\n\n-- | The `Alt` instance allows for a choice to be made between two `Maybe`\n-- | values with the `<|>` operator, where the first `Just` encountered\n-- | is taken.\n-- |\n-- | ``` purescript\n-- | Just x <|> Just y == Just x\n-- | Nothing <|> Just y == Just y\n-- | Nothing <|> Nothing == Nothing\n-- | ```\ninstance altMaybe :: Alt Maybe where\n alt Nothing r = r\n alt l _ = l\n\n-- | The `Plus` instance provides a default `Maybe` value:\n-- |\n-- | ``` purescript\n-- | empty :: Maybe _ == Nothing\n-- | ```\ninstance plusMaybe :: Plus Maybe where\n empty = Nothing\n\n-- | The `Alternative` instance guarantees that there are both `Applicative` and\n-- | `Plus` instances for `Maybe`.\ninstance alternativeMaybe :: Alternative Maybe\n\n-- | The `Bind` instance allows sequencing of `Maybe` values and functions that\n-- | return a `Maybe` by using the `>>=` operator:\n-- |\n-- | ``` purescript\n-- | Just x >>= f = f x\n-- | Nothing >>= f = Nothing\n-- | ```\ninstance bindMaybe :: Bind Maybe where\n bind (Just x) k = k x\n bind Nothing _ = Nothing\n\n-- | The `Monad` instance guarantees that there are both `Applicative` and\n-- | `Bind` instances for `Maybe`. This also enables the `do` syntactic sugar:\n-- |\n-- | ``` purescript\n-- | do\n-- | x' <- x\n-- | y' <- y\n-- | pure (f x' y')\n-- | ```\n-- |\n-- | Which is equivalent to:\n-- |\n-- | ``` purescript\n-- | x >>= (\\x' -> y >>= (\\y' -> pure (f x' y')))\n-- | ```\n-- |\n-- | Which is equivalent to:\n-- |\n-- | ``` purescript\n-- | case x of\n-- | Nothing -> Nothing\n-- | Just x' -> case y of\n-- | Nothing -> Nothing\n-- | Just y' -> Just (f x' y')\n-- | ```\ninstance monadMaybe :: Monad Maybe\n\n-- | The `Extend` instance allows sequencing of `Maybe` values and functions\n-- | that accept a `Maybe a` and return a non-`Maybe` result using the\n-- | `<<=` operator.\n-- |\n-- | ``` purescript\n-- | f <<= Nothing = Nothing\n-- | f <<= x = Just (f x)\n-- | ```\ninstance extendMaybe :: Extend Maybe where\n extend _ Nothing = Nothing\n extend f x = Just (f x)\n\ninstance invariantMaybe :: Invariant Maybe where\n imap = imapF\n\n-- | The `Semigroup` instance enables use of the operator `<>` on `Maybe` values\n-- | whenever there is a `Semigroup` instance for the type the `Maybe` contains.\n-- | The exact behaviour of `<>` depends on the \"inner\" `Semigroup` instance,\n-- | but generally captures the notion of appending or combining things.\n-- |\n-- | ``` purescript\n-- | Just x <> Just y = Just (x <> y)\n-- | Just x <> Nothing = Just x\n-- | Nothing <> Just y = Just y\n-- | Nothing <> Nothing = Nothing\n-- | ```\ninstance semigroupMaybe :: Semigroup a => Semigroup (Maybe a) where\n append Nothing y = y\n append x Nothing = x\n append (Just x) (Just y) = Just (x <> y)\n\ninstance monoidMaybe :: Semigroup a => Monoid (Maybe a) where\n mempty = Nothing\n\ninstance semiringMaybe :: Semiring a => Semiring (Maybe a) where\n zero = Nothing\n one = Just one\n\n add Nothing y = y\n add x Nothing = x\n add (Just x) (Just y) = Just (add x y)\n\n mul x y = mul <$> x <*> y\n\n-- | The `Eq` instance allows `Maybe` values to be checked for equality with\n-- | `==` and inequality with `/=` whenever there is an `Eq` instance for the\n-- | type the `Maybe` contains.\nderive instance eqMaybe :: Eq a => Eq (Maybe a)\n\ninstance eq1Maybe :: Eq1 Maybe where eq1 = eq\n\n-- | The `Ord` instance allows `Maybe` values to be compared with\n-- | `compare`, `>`, `>=`, `<` and `<=` whenever there is an `Ord` instance for\n-- | the type the `Maybe` contains.\n-- |\n-- | `Nothing` is considered to be less than any `Just` value.\nderive instance ordMaybe :: Ord a => Ord (Maybe a)\n\ninstance ord1Maybe :: Ord1 Maybe where compare1 = compare\n\ninstance boundedMaybe :: Bounded a => Bounded (Maybe a) where\n top = Just top\n bottom = Nothing\n\n-- | The `Show` instance allows `Maybe` values to be rendered as a string with\n-- | `show` whenever there is an `Show` instance for the type the `Maybe`\n-- | contains.\ninstance showMaybe :: Show a => Show (Maybe a) where\n show (Just x) = \"(Just \" <> show x <> \")\"\n show Nothing = \"Nothing\"\n\nderive instance genericMaybe :: Generic (Maybe a) _\n\n-- | Takes a default value, a function, and a `Maybe` value. If the `Maybe`\n-- | value is `Nothing` the default value is returned, otherwise the function\n-- | is applied to the value inside the `Just` and the result is returned.\n-- |\n-- | ``` purescript\n-- | maybe x f Nothing == x\n-- | maybe x f (Just y) == f y\n-- | ```\nmaybe :: forall a b. b -> (a -> b) -> Maybe a -> b\nmaybe b _ Nothing = b\nmaybe _ f (Just a) = f a\n\n-- | Similar to `maybe` but for use in cases where the default value may be\n-- | expensive to compute. As PureScript is not lazy, the standard `maybe` has\n-- | to evaluate the default value before returning the result, whereas here\n-- | the value is only computed when the `Maybe` is known to be `Nothing`.\n-- |\n-- | ``` purescript\n-- | maybe' (\\_ -> x) f Nothing == x\n-- | maybe' (\\_ -> x) f (Just y) == f y\n-- | ```\nmaybe' :: forall a b. (Unit -> b) -> (a -> b) -> Maybe a -> b\nmaybe' g _ Nothing = g unit\nmaybe' _ f (Just a) = f a\n\n-- | Takes a default value, and a `Maybe` value. If the `Maybe` value is\n-- | `Nothing` the default value is returned, otherwise the value inside the\n-- | `Just` is returned.\n-- |\n-- | ``` purescript\n-- | fromMaybe x Nothing == x\n-- | fromMaybe x (Just y) == y\n-- | ```\nfromMaybe :: forall a. a -> Maybe a -> a\nfromMaybe a = maybe a identity\n\n-- | Similar to `fromMaybe` but for use in cases where the default value may be\n-- | expensive to compute. As PureScript is not lazy, the standard `fromMaybe`\n-- | has to evaluate the default value before returning the result, whereas here\n-- | the value is only computed when the `Maybe` is known to be `Nothing`.\n-- |\n-- | ``` purescript\n-- | fromMaybe' (\\_ -> x) Nothing == x\n-- | fromMaybe' (\\_ -> x) (Just y) == y\n-- | ```\nfromMaybe' :: forall a. (Unit -> a) -> Maybe a -> a\nfromMaybe' a = maybe' a identity\n\n-- | Returns `true` when the `Maybe` value was constructed with `Just`.\nisJust :: forall a. Maybe a -> Boolean\nisJust = maybe false (const true)\n\n-- | Returns `true` when the `Maybe` value is `Nothing`.\nisNothing :: forall a. Maybe a -> Boolean\nisNothing = maybe true (const false)\n\n-- | A partial function that extracts the value from the `Just` data\n-- | constructor. Passing `Nothing` to `fromJust` will throw an error at\n-- | runtime.\nfromJust :: forall a. Partial => Maybe a -> a\nfromJust (Just x) = x\n\n-- | One or none.\n-- |\n-- | ```purescript\n-- | optional empty = pure Nothing\n-- | ```\n-- |\n-- | The behaviour of `optional (pure x)` depends on whether the `Alt` instance\n-- | satisfy the left catch law (`pure a <|> b = pure a`).\n-- |\n-- | `Either e` does:\n-- |\n-- | ```purescript\n-- | optional (Right x) = Right (Just x)\n-- | ```\n-- |\n-- | But `Array` does not:\n-- |\n-- | ```purescript\n-- | optional [x] = [Just x, Nothing]\n-- | ```\noptional :: forall f a. Alt f => Applicative f => f a -> f (Maybe a)\noptional a = map Just a <|> pure Nothing\n", "module Data.MediaType.Common where\n\nimport Data.MediaType (MediaType(..))\n\n-- | The `application/x-www-form-urlencoded` media type.\napplicationFormURLEncoded :: MediaType\napplicationFormURLEncoded = MediaType \"application/x-www-form-urlencoded\"\n\n-- | The `application/json` media type.\napplicationJSON :: MediaType\napplicationJSON = MediaType \"application/json\"\n\n-- | The `application/javascript` media type.\napplicationJavascript :: MediaType\napplicationJavascript = MediaType \"application/javascript\"\n\n-- | The `application/octet-stream` media type.\napplicationOctetStream :: MediaType\napplicationOctetStream = MediaType \"application/octet-stream\"\n\n-- | The `application/xml` media type.\napplicationXML :: MediaType\napplicationXML = MediaType \"application/xml\"\n\n-- | The `image/gif` media type.\nimageGIF :: MediaType\nimageGIF = MediaType \"image/gif\"\n\n-- | The `image/jpeg` media type.\nimageJPEG :: MediaType\nimageJPEG = MediaType \"image/jpeg\"\n\n-- | The `image/png` media type.\nimagePNG :: MediaType\nimagePNG = MediaType \"image/png\"\n\n-- | The `multipart/form-data` media type.\nmultipartFormData :: MediaType\nmultipartFormData = MediaType \"multipart/form-data\"\n\n-- | The `text/csv` media type.\ntextCSV :: MediaType\ntextCSV = MediaType \"text/csv\"\n\n-- | The `text/html` media type.\ntextHTML :: MediaType\ntextHTML = MediaType \"text/html\"\n\n-- | The `text/plain` media type.\ntextPlain :: MediaType\ntextPlain = MediaType \"text/plain\"\n\n-- | The `text/xml` media type.\ntextXML :: MediaType\ntextXML = MediaType \"text/xml\"\n\n-- | The `text/css` media type.\ntextCSS :: MediaType\ntextCSS = MediaType \"text/css\"\n", "module Affjax.RequestBody where\n\nimport Data.Argonaut.Core (Json)\nimport Data.ArrayBuffer.Types as A\nimport Data.FormURLEncoded (FormURLEncoded)\nimport Data.Maybe (Maybe(..))\nimport Data.MediaType (MediaType)\nimport Data.MediaType.Common (applicationJSON, applicationFormURLEncoded)\nimport Web.DOM.Document (Document)\nimport Web.File.Blob (Blob)\nimport Web.XHR.FormData (FormData)\n\n-- | Represents data for an HTTP request that will be included in the request\n-- | body.\ndata RequestBody\n = ArrayView (forall r. (forall a. A.ArrayView a -> r) -> r)\n | Blob Blob\n | Document Document\n | String String\n | FormData FormData\n | FormURLEncoded FormURLEncoded\n | Json Json\n\narrayView :: forall a. A.ArrayView a -> RequestBody\narrayView av = ArrayView \\f -> f av\n\nblob :: Blob -> RequestBody\nblob = Blob\n\ndocument :: Document -> RequestBody\ndocument = Document\n\nstring :: String -> RequestBody\nstring = String\n\nformData :: FormData -> RequestBody\nformData = FormData\n\nformURLEncoded :: FormURLEncoded -> RequestBody\nformURLEncoded = FormURLEncoded\n\njson :: Json -> RequestBody\njson = Json\n\ntoMediaType :: RequestBody -> Maybe MediaType\ntoMediaType = case _ of\n FormURLEncoded _ -> Just applicationFormURLEncoded\n Json _ -> Just applicationJSON\n _ -> Nothing\n", "// module Unsafe.Coerce\n\nexport const unsafeCoerce = function (x) {\n return x;\n};\n", "module Safe.Coerce\n ( module Prim.Coerce\n , coerce\n ) where\n\nimport Prim.Coerce (class Coercible)\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | Coerce a value of one type to a value of some other type, without changing\n-- | its runtime representation. This function behaves identically to\n-- | `unsafeCoerce` at runtime. Unlike `unsafeCoerce`, it is safe, because the\n-- | `Coercible` constraint prevents any use of this function from compiling\n-- | unless the compiler can prove that the two types have the same runtime\n-- | representation.\n-- |\n-- | One application for this function is to avoid doing work that you know is a\n-- | no-op because of newtypes. For example, if you have an `Array (Conj a)` and you\n-- | want an `Array (Disj a)`, you could do `Data.Array.map (un Conj >>> Disj)`, but\n-- | this performs an unnecessary traversal of the array, with O(n) cost.\n-- | `coerce` accomplishes the same with only O(1) cost:\n-- |\n-- | ```purescript\n-- | mapConjToDisj :: forall a. Array (Conj a) -> Array (Disj a)\n-- | mapConjToDisj = coerce\n-- | ```\ncoerce :: forall a b. Coercible a b => a -> b\ncoerce = unsafeCoerce\n", "module Data.Newtype where\n\nimport Data.Monoid.Additive (Additive(..))\nimport Data.Monoid.Conj (Conj(..))\nimport Data.Monoid.Disj (Disj(..))\nimport Data.Monoid.Dual (Dual(..))\nimport Data.Monoid.Endo (Endo(..))\nimport Data.Monoid.Multiplicative (Multiplicative(..))\nimport Data.Semigroup.First (First(..))\nimport Data.Semigroup.Last (Last(..))\nimport Safe.Coerce (class Coercible, coerce)\n\n-- | A type class for `newtype`s to enable convenient wrapping and unwrapping,\n-- | and the use of the other functions in this module.\n-- |\n-- | The compiler can derive instances of `Newtype` automatically:\n-- |\n-- | ``` purescript\n-- | newtype EmailAddress = EmailAddress String\n-- |\n-- | derive instance newtypeEmailAddress :: Newtype EmailAddress _\n-- | ```\n-- |\n-- | Note that deriving for `Newtype` instances requires that the type be\n-- | defined as `newtype` rather than `data` declaration (even if the `data`\n-- | structurally fits the rules of a `newtype`), and the use of a wildcard for\n-- | the wrapped type.\nclass Newtype :: Type -> Type -> Constraint\nclass Coercible t a <= Newtype t a | t -> a\n\nwrap :: forall t a. Newtype t a => a -> t\nwrap = coerce\n\nunwrap :: forall t a. Newtype t a => t -> a\nunwrap = coerce\n\ninstance newtypeAdditive :: Newtype (Additive a) a\n\ninstance newtypeMultiplicative :: Newtype (Multiplicative a) a\n\ninstance newtypeConj :: Newtype (Conj a) a\n\ninstance newtypeDisj :: Newtype (Disj a) a\n\ninstance newtypeDual :: Newtype (Dual a) a\n\ninstance newtypeEndo :: Newtype (Endo c a) (c a a)\n\ninstance newtypeFirst :: Newtype (First a) a\n\ninstance newtypeLast :: Newtype (Last a) a\n\n-- | Given a constructor for a `Newtype`, this returns the appropriate `unwrap`\n-- | function.\nun :: forall t a. Newtype t a => (a -> t) -> t -> a\nun _ = unwrap\n\n-- | This combinator unwraps the newtype, applies a monomorphic function to the \n-- | contained value and wraps the result back in the newtype\nmodify :: forall t a. Newtype t a => (a -> a) -> t -> t\nmodify fn t = wrap (fn (unwrap t))\n\n-- | This combinator is for when you have a higher order function that you want\n-- | to use in the context of some newtype - `foldMap` being a common example:\n-- |\n-- | ``` purescript\n-- | ala Additive foldMap [1,2,3,4] -- 10\n-- | ala Multiplicative foldMap [1,2,3,4] -- 24\n-- | ala Conj foldMap [true, false] -- false\n-- | ala Disj foldMap [true, false] -- true\n-- | ```\nala\n :: forall f t a s b\n . Coercible (f t) (f a)\n => Newtype t a\n => Newtype s b\n => (a -> t)\n -> ((b -> s) -> f t)\n -> f a\nala _ f = coerce (f wrap)\n\n-- | Similar to `ala` but useful for cases where you want to use an additional\n-- | projection with the higher order function:\n-- |\n-- | ``` purescript\n-- | alaF Additive foldMap String.length [\"hello\", \"world\"] -- 10\n-- | alaF Multiplicative foldMap Math.abs [1.0, -2.0, 3.0, -4.0] -- 24.0\n-- | ```\n-- |\n-- | The type admits other possibilities due to the polymorphic `Functor`\n-- | constraints, but the case described above works because ((->) a) is a\n-- | `Functor`.\nalaF\n :: forall f g t a s b\n . Coercible (f t) (f a)\n => Coercible (g s) (g b)\n => Newtype t a\n => Newtype s b\n => (a -> t)\n -> (f t -> g s)\n -> f a\n -> g b\nalaF _ = coerce\n\n-- | Lifts a function operate over newtypes. This can be used to lift a\n-- | function to manipulate the contents of a single newtype, somewhat like\n-- | `map` does for a `Functor`:\n-- |\n-- | ``` purescript\n-- | newtype Label = Label String\n-- | derive instance newtypeLabel :: Newtype Label _\n-- |\n-- | toUpperLabel :: Label -> Label\n-- | toUpperLabel = over Label String.toUpper\n-- | ```\n-- |\n-- | But the result newtype is polymorphic, meaning the result can be returned\n-- | as an alternative newtype:\n-- |\n-- | ``` purescript\n-- | newtype UppercaseLabel = UppercaseLabel String\n-- | derive instance newtypeUppercaseLabel :: Newtype UppercaseLabel _\n-- |\n-- | toUpperLabel' :: Label -> UppercaseLabel\n-- | toUpperLabel' = over Label String.toUpper\n-- | ```\nover\n :: forall t a s b\n . Newtype t a\n => Newtype s b\n => (a -> t)\n -> (a -> b)\n -> t\n -> s\nover _ = coerce\n\n-- | Much like `over`, but where the lifted function operates on values in a\n-- | `Functor`:\n-- |\n-- | ``` purescript\n-- | findLabel :: String -> Array Label -> Maybe Label\n-- | findLabel s = overF Label (Foldable.find (_ == s))\n-- | ```\n-- |\n-- | The above example also demonstrates that the functor type is polymorphic\n-- | here too, the input is an `Array` but the result is a `Maybe`.\noverF\n :: forall f g t a s b\n . Coercible (f a) (f t)\n => Coercible (g b) (g s)\n => Newtype t a\n => Newtype s b\n => (a -> t)\n -> (f a -> g b)\n -> f t\n -> g s\noverF _ = coerce\n\n-- | The opposite of `over`: lowers a function that operates on `Newtype`d\n-- | values to operate on the wrapped value instead.\n-- |\n-- | ``` purescript\n-- | newtype Degrees = Degrees Number\n-- | derive instance newtypeDegrees :: Newtype Degrees _\n-- |\n-- | newtype NormalDegrees = NormalDegrees Number\n-- | derive instance newtypeNormalDegrees :: Newtype NormalDegrees _\n-- |\n-- | normaliseDegrees :: Degrees -> NormalDegrees\n-- | normaliseDegrees (Degrees deg) = NormalDegrees (deg % 360.0)\n-- |\n-- | asNormalDegrees :: Number -> Number\n-- | asNormalDegrees = under Degrees normaliseDegrees\n-- | ```\n-- |\n-- | As with `over` the `Newtype` is polymorphic, as illustrated in the example\n-- | above - both `Degrees` and `NormalDegrees` are instances of `Newtype`,\n-- | so even though `normaliseDegrees` changes the result type we can still put\n-- | a `Number` in and get a `Number` out via `under`.\nunder\n :: forall t a s b\n . Newtype t a\n => Newtype s b\n => (a -> t)\n -> (t -> s)\n -> a\n -> b\nunder _ = coerce\n\n-- | Much like `under`, but where the lifted function operates on values in a\n-- | `Functor`:\n-- |\n-- | ``` purescript\n-- | newtype EmailAddress = EmailAddress String\n-- | derive instance newtypeEmailAddress :: Newtype EmailAddress _\n-- |\n-- | isValid :: EmailAddress -> Boolean\n-- | isValid x = false -- imagine a slightly less strict predicate here\n-- |\n-- | findValidEmailString :: Array String -> Maybe String\n-- | findValidEmailString = underF EmailAddress (Foldable.find isValid)\n-- | ```\n-- |\n-- | The above example also demonstrates that the functor type is polymorphic\n-- | here too, the input is an `Array` but the result is a `Maybe`.\nunderF\n :: forall f g t a s b\n . Coercible (f t) (f a)\n => Coercible (g s) (g b)\n => Newtype t a\n => Newtype s b\n => (a -> t)\n -> (f t -> g s)\n -> f a\n -> g b\nunderF _ = coerce\n\n-- | Lifts a binary function to operate over newtypes.\n-- |\n-- | ``` purescript\n-- | newtype Meter = Meter Int\n-- | derive newtype instance newtypeMeter :: Newtype Meter _\n-- | newtype SquareMeter = SquareMeter Int\n-- | derive newtype instance newtypeSquareMeter :: Newtype SquareMeter _\n-- |\n-- | area :: Meter -> Meter -> SquareMeter\n-- | area = over2 Meter (*)\n-- | ```\n-- |\n-- | The above example also demonstrates that the return type is polymorphic\n-- | here too.\nover2\n :: forall t a s b\n . Newtype t a\n => Newtype s b\n => (a -> t)\n -> (a -> a -> b)\n -> t\n -> t\n -> s\nover2 _ = coerce\n\n-- | Much like `over2`, but where the lifted binary function operates on\n-- | values in a `Functor`.\noverF2\n :: forall f g t a s b\n . Coercible (f a) (f t)\n => Coercible (g b) (g s)\n => Newtype t a\n => Newtype s b\n => (a -> t)\n -> (f a -> f a -> g b)\n -> f t\n -> f t\n -> g s\noverF2 _ = coerce\n\n-- | The opposite of `over2`: lowers a binary function that operates on `Newtype`d\n-- | values to operate on the wrapped value instead.\nunder2\n :: forall t a s b\n . Newtype t a\n => Newtype s b\n => (a -> t)\n -> (t -> t -> s)\n -> a\n -> a\n -> b\nunder2 _ = coerce\n\n-- | Much like `under2`, but where the lifted binary function operates on\n-- | values in a `Functor`.\nunderF2\n :: forall f g t a s b\n . Coercible (f t) (f a)\n => Coercible (g s) (g b)\n => Newtype t a\n => Newtype s b\n => (a -> t)\n -> (f t -> f t -> g s)\n -> f a\n -> f a\n -> g b\nunderF2 _ = coerce\n\n-- | Similar to the function from the `Traversable` class, but operating within\n-- | a newtype instead.\ntraverse\n :: forall f t a\n . Coercible (f a) (f t)\n => Newtype t a\n => (a -> t)\n -> (a -> f a)\n -> t\n -> f t\ntraverse _ = coerce\n\n-- | Similar to the function from the `Distributive` class, but operating within\n-- | a newtype instead.\ncollect\n :: forall f t a\n . Coercible (f a) (f t)\n => Newtype t a\n => (a -> t)\n -> (f a -> a)\n -> f t\n -> t\ncollect _ = coerce\n", "module Affjax.RequestHeader where\n\nimport Prelude\n\nimport Data.MediaType (MediaType)\nimport Data.Newtype (unwrap)\n\ndata RequestHeader\n = Accept MediaType\n | ContentType MediaType\n | RequestHeader String String\n\nderive instance eqRequestHeader :: Eq RequestHeader\nderive instance ordRequestHeader :: Ord RequestHeader\n\ninstance showRequestHeader :: Show RequestHeader where\n show (Accept m) = \"(Accept \" <> show m <> \")\"\n show (ContentType m) = \"(ContentType \" <> show m <> \")\"\n show (RequestHeader h v) = \"(RequestHeader \" <> show h <> \" \" <> show v <> \")\"\n\nname :: RequestHeader -> String\nname (Accept _) = \"Accept\"\nname (ContentType _) = \"Content-Type\"\nname (RequestHeader h _) = h\n\nvalue :: RequestHeader -> String\nvalue (Accept m) = unwrap m\nvalue (ContentType m) = unwrap m\nvalue (RequestHeader _ v) = v\n", "module Affjax.ResponseFormat where\n\nimport Prelude\n\nimport Data.Argonaut.Core (Json)\nimport Data.ArrayBuffer.Types (ArrayBuffer)\nimport Data.Maybe (Maybe(..))\nimport Data.MediaType (MediaType)\nimport Data.MediaType.Common (applicationJSON)\nimport Web.DOM.Document (Document)\nimport Web.File.Blob (Blob)\n\n-- | Used to represent how a HTTP response body should be interpreted.\ndata ResponseFormat a\n = ArrayBuffer (forall f. f ArrayBuffer -> f a)\n | Blob (forall f. f Blob -> f a)\n | Document (forall f. f Document -> f a)\n | Json (forall f. f Json -> f a)\n | String (forall f. f String -> f a)\n | Ignore (forall f. f Unit -> f a)\n\narrayBuffer :: ResponseFormat ArrayBuffer\narrayBuffer = ArrayBuffer identity\n\nblob :: ResponseFormat Blob\nblob = Blob identity\n\ndocument :: ResponseFormat Document\ndocument = Document identity\n\njson :: ResponseFormat Json\njson = Json identity\n\nstring :: ResponseFormat String\nstring = String identity\n\nignore :: ResponseFormat Unit\nignore = Ignore identity\n\n-- | Converts a `Response a` into a string representation of the response type\n-- | that it represents.\ntoResponseType :: forall a. ResponseFormat a -> String\ntoResponseType =\n case _ of\n ArrayBuffer _ -> \"arraybuffer\"\n Blob _ -> \"blob\"\n Document _ -> \"document\"\n Json _ -> \"text\" -- IE doesn't support \"json\" ResponseFormat\n String _ -> \"text\"\n Ignore _ -> \"\"\n\ntoMediaType :: forall a. ResponseFormat a -> Maybe MediaType\ntoMediaType =\n case _ of\n Json _ -> Just applicationJSON\n _ -> Nothing\n", "module Affjax.ResponseHeader where\n\nimport Prelude\n\ndata ResponseHeader = ResponseHeader String String\n\nderive instance eqResponseHeader :: Eq ResponseHeader\nderive instance ordResponseHeader :: Ord ResponseHeader\n\ninstance showResponseHeader :: Show ResponseHeader where\n show (ResponseHeader h v) = \"(ResponseHeader \" <> show h <> \" \" <> show v <> \")\"\n\nname :: ResponseHeader -> String\nname (ResponseHeader h _) = h\n\nvalue :: ResponseHeader -> String\nvalue (ResponseHeader _ v) = v\n", "export const arrayBind = function (arr) {\n return function (f) {\n var result = [];\n for (var i = 0, l = arr.length; i < l; i++) {\n Array.prototype.push.apply(result, f(arr[i]));\n }\n return result;\n };\n};\n", "module Control.Bind\n ( class Bind\n , bind\n , (>>=)\n , bindFlipped\n , (=<<)\n , class Discard\n , discard\n , join\n , composeKleisli\n , (>=>)\n , composeKleisliFlipped\n , (<=<)\n , ifM\n , module Data.Functor\n , module Control.Apply\n , module Control.Applicative\n ) where\n\nimport Control.Applicative (class Applicative, liftA1, pure, unless, when)\nimport Control.Apply (class Apply, apply, (*>), (<*), (<*>))\nimport Control.Category (identity)\n\nimport Data.Function (flip)\nimport Data.Functor (class Functor, map, void, ($>), (<#>), (<$), (<$>))\nimport Data.Unit (Unit)\nimport Type.Proxy (Proxy(..))\n\n-- | The `Bind` type class extends the [`Apply`](#apply) type class with a\n-- | \"bind\" operation `(>>=)` which composes computations in sequence, using\n-- | the return value of one computation to determine the next computation.\n-- |\n-- | The `>>=` operator can also be expressed using `do` notation, as follows:\n-- |\n-- | ```purescript\n-- | x >>= f = do y <- x\n-- | f y\n-- | ```\n-- |\n-- | where the function argument of `f` is given the name `y`.\n-- |\n-- | Instances must satisfy the following laws in addition to the `Apply`\n-- | laws:\n-- |\n-- | - Associativity: `(x >>= f) >>= g = x >>= (\\k -> f k >>= g)`\n-- | - Apply Superclass: `apply f x = f >>= \\f\u2019 -> map f\u2019 x`\n-- |\n-- | Associativity tells us that we can regroup operations which use `do`\n-- | notation so that we can unambiguously write, for example:\n-- |\n-- | ```purescript\n-- | do x <- m1\n-- | y <- m2 x\n-- | m3 x y\n-- | ```\nclass Apply m <= Bind m where\n bind :: forall a b. m a -> (a -> m b) -> m b\n\ninfixl 1 bind as >>=\n\n-- | `bindFlipped` is `bind` with its arguments reversed. For example:\n-- |\n-- | ```purescript\n-- | print =<< random\n-- | ```\nbindFlipped :: forall m a b. Bind m => (a -> m b) -> m a -> m b\nbindFlipped = flip bind\n\ninfixr 1 bindFlipped as =<<\n\ninstance bindFn :: Bind ((->) r) where\n bind m f x = f (m x) x\n\n-- | The `bind`/`>>=` function for `Array` works by applying a function to\n-- | each element in the array, and flattening the results into a single,\n-- | new array.\n-- |\n-- | Array's `bind`/`>>=` works like a nested for loop. Each `bind` adds\n-- | another level of nesting in the loop. For example:\n-- | ```\n-- | foo :: Array String\n-- | foo =\n-- | [\"a\", \"b\"] >>= \\eachElementInArray1 ->\n-- | [\"c\", \"d\"] >>= \\eachElementInArray2\n-- | pure (eachElementInArray1 <> eachElementInArray2)\n-- |\n-- | -- In other words...\n-- | foo\n-- | -- ... is the same as...\n-- | [ (\"a\" <> \"c\"), (\"a\" <> \"d\"), (\"b\" <> \"c\"), (\"b\" <> \"d\") ]\n-- | -- which simplifies to...\n-- | [ \"ac\", \"ad\", \"bc\", \"bd\" ]\n-- | ```\ninstance bindArray :: Bind Array where\n bind = arrayBind\n\nforeign import arrayBind :: forall a b. Array a -> (a -> Array b) -> Array b\n\ninstance bindProxy :: Bind Proxy where\n bind _ _ = Proxy\n\n-- | A class for types whose values can safely be discarded\n-- | in a `do` notation block.\n-- |\n-- | An example is the `Unit` type, since there is only one\n-- | possible value which can be returned.\nclass Discard a where\n discard :: forall f b. Bind f => f a -> (a -> f b) -> f b\n\ninstance discardUnit :: Discard Unit where\n discard = bind\n\ninstance discardProxy :: Discard (Proxy a) where\n discard = bind\n\n-- | Collapse two applications of a monadic type constructor into one.\njoin :: forall a m. Bind m => m (m a) -> m a\njoin m = m >>= identity\n\n-- | Forwards Kleisli composition.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | import Data.Array (head, tail)\n-- |\n-- | third = tail >=> tail >=> head\n-- | ```\ncomposeKleisli :: forall a b c m. Bind m => (a -> m b) -> (b -> m c) -> a -> m c\ncomposeKleisli f g a = f a >>= g\n\ninfixr 1 composeKleisli as >=>\n\n-- | Backwards Kleisli composition.\ncomposeKleisliFlipped :: forall a b c m. Bind m => (b -> m c) -> (a -> m b) -> a -> m c\ncomposeKleisliFlipped f g a = f =<< g a\n\ninfixr 1 composeKleisliFlipped as <=<\n\n-- | Execute a monadic action if a condition holds.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | main = ifM ((< 0.5) <$> random)\n-- | (trace \"Heads\")\n-- | (trace \"Tails\")\n-- | ```\nifM :: forall a m. Bind m => m Boolean -> m a -> m a -> m a\nifM cond t f = cond >>= \\cond' -> if cond' then t else f\n", "module Data.Either where\n\nimport Prelude\n\nimport Control.Alt (class Alt, (<|>))\nimport Control.Extend (class Extend)\nimport Data.Eq (class Eq1)\nimport Data.Functor.Invariant (class Invariant, imapF)\nimport Data.Generic.Rep (class Generic)\nimport Data.Maybe (Maybe(..), maybe, maybe')\nimport Data.Ord (class Ord1)\n\n-- | The `Either` type is used to represent a choice between two types of value.\n-- |\n-- | A common use case for `Either` is error handling, where `Left` is used to\n-- | carry an error value and `Right` is used to carry a success value.\ndata Either a b = Left a | Right b\n\n-- | The `Functor` instance allows functions to transform the contents of a\n-- | `Right` with the `<$>` operator:\n-- |\n-- | ``` purescript\n-- | f <$> Right x == Right (f x)\n-- | ```\n-- |\n-- | `Left` values are untouched:\n-- |\n-- | ``` purescript\n-- | f <$> Left y == Left y\n-- | ```\nderive instance functorEither :: Functor (Either a)\n\nderive instance genericEither :: Generic (Either a b) _\n\ninstance invariantEither :: Invariant (Either a) where\n imap = imapF\n\n-- | The `Apply` instance allows functions contained within a `Right` to\n-- | transform a value contained within a `Right` using the `(<*>)` operator:\n-- |\n-- | ``` purescript\n-- | Right f <*> Right x == Right (f x)\n-- | ```\n-- |\n-- | `Left` values are left untouched:\n-- |\n-- | ``` purescript\n-- | Left f <*> Right x == Left f\n-- | Right f <*> Left y == Left y\n-- | ```\n-- |\n-- | Combining `Functor`'s `<$>` with `Apply`'s `<*>` can be used to transform a\n-- | pure function to take `Either`-typed arguments so `f :: a -> b -> c`\n-- | becomes `f :: Either l a -> Either l b -> Either l c`:\n-- |\n-- | ``` purescript\n-- | f <$> Right x <*> Right y == Right (f x y)\n-- | ```\n-- |\n-- | The `Left`-preserving behaviour of both operators means the result of\n-- | an expression like the above but where any one of the values is `Left`\n-- | means the whole result becomes `Left` also, taking the first `Left` value\n-- | found:\n-- |\n-- | ``` purescript\n-- | f <$> Left x <*> Right y == Left x\n-- | f <$> Right x <*> Left y == Left y\n-- | f <$> Left x <*> Left y == Left x\n-- | ```\ninstance applyEither :: Apply (Either e) where\n apply (Left e) _ = Left e\n apply (Right f) r = f <$> r\n\n-- | The `Applicative` instance enables lifting of values into `Either` with the\n-- | `pure` function:\n-- |\n-- | ``` purescript\n-- | pure x :: Either _ _ == Right x\n-- | ```\n-- |\n-- | Combining `Functor`'s `<$>` with `Apply`'s `<*>` and `Applicative`'s\n-- | `pure` can be used to pass a mixture of `Either` and non-`Either` typed\n-- | values to a function that does not usually expect them, by using `pure`\n-- | for any value that is not already `Either` typed:\n-- |\n-- | ``` purescript\n-- | f <$> Right x <*> pure y == Right (f x y)\n-- | ```\n-- |\n-- | Even though `pure = Right` it is recommended to use `pure` in situations\n-- | like this as it allows the choice of `Applicative` to be changed later\n-- | without having to go through and replace `Right` with a new constructor.\ninstance applicativeEither :: Applicative (Either e) where\n pure = Right\n\n-- | The `Alt` instance allows for a choice to be made between two `Either`\n-- | values with the `<|>` operator, where the first `Right` encountered\n-- | is taken.\n-- |\n-- | ``` purescript\n-- | Right x <|> Right y == Right x\n-- | Left x <|> Right y == Right y\n-- | Left x <|> Left y == Left y\n-- | ```\ninstance altEither :: Alt (Either e) where\n alt (Left _) r = r\n alt l _ = l\n\n-- | The `Bind` instance allows sequencing of `Either` values and functions that\n-- | return an `Either` by using the `>>=` operator:\n-- |\n-- | ``` purescript\n-- | Left x >>= f = Left x\n-- | Right x >>= f = f x\n-- | ```\n-- |\n-- | `Either`'s \"do notation\" can be understood to work like this:\n-- | ``` purescript\n-- | x :: forall e a. Either e a\n-- | x = --\n-- |\n-- | y :: forall e b. Either e b\n-- | y = --\n-- |\n-- | foo :: forall e a. (a -> b -> c) -> Either e c\n-- | foo f = do\n-- | x' <- x\n-- | y' <- y\n-- | pure (f x' y')\n-- | ```\n-- |\n-- | ...which is equivalent to...\n-- |\n-- | ``` purescript\n-- | x >>= (\\x' -> y >>= (\\y' -> pure (f x' y')))\n-- | ```\n-- |\n-- | ...and is the same as writing...\n-- |\n-- | ```\n-- | foo :: forall e a. (a -> b -> c) -> Either e c\n-- | foo f = case x of\n-- | Left e ->\n-- | Left e\n-- | Right x -> case y of\n-- | Left e ->\n-- | Left e\n-- | Right y ->\n-- | Right (f x y)\n-- | ```\ninstance bindEither :: Bind (Either e) where\n bind = either (\\e _ -> Left e) (\\a f -> f a)\n\n-- | The `Monad` instance guarantees that there are both `Applicative` and\n-- | `Bind` instances for `Either`.\ninstance monadEither :: Monad (Either e)\n\n-- | The `Extend` instance allows sequencing of `Either` values and functions\n-- | that accept an `Either` and return a non-`Either` result using the\n-- | `<<=` operator.\n-- |\n-- | ``` purescript\n-- | f <<= Left x = Left x\n-- | f <<= Right x = Right (f (Right x))\n-- | ```\ninstance extendEither :: Extend (Either e) where\n extend _ (Left y) = Left y\n extend f x = Right (f x)\n\n-- | The `Show` instance allows `Either` values to be rendered as a string with\n-- | `show` whenever there is an `Show` instance for both type the `Either` can\n-- | contain.\ninstance showEither :: (Show a, Show b) => Show (Either a b) where\n show (Left x) = \"(Left \" <> show x <> \")\"\n show (Right y) = \"(Right \" <> show y <> \")\"\n\n-- | The `Eq` instance allows `Either` values to be checked for equality with\n-- | `==` and inequality with `/=` whenever there is an `Eq` instance for both\n-- | types the `Either` can contain.\nderive instance eqEither :: (Eq a, Eq b) => Eq (Either a b)\n\nderive instance eq1Either :: Eq a => Eq1 (Either a)\n\n-- | The `Ord` instance allows `Either` values to be compared with\n-- | `compare`, `>`, `>=`, `<` and `<=` whenever there is an `Ord` instance for\n-- | both types the `Either` can contain.\n-- |\n-- | Any `Left` value is considered to be less than a `Right` value.\nderive instance ordEither :: (Ord a, Ord b) => Ord (Either a b)\n\nderive instance ord1Either :: Ord a => Ord1 (Either a)\n\ninstance boundedEither :: (Bounded a, Bounded b) => Bounded (Either a b) where\n top = Right top\n bottom = Left bottom\n\ninstance semigroupEither :: (Semigroup b) => Semigroup (Either a b) where\n append x y = append <$> x <*> y\n\n-- | Takes two functions and an `Either` value, if the value is a `Left` the\n-- | inner value is applied to the first function, if the value is a `Right`\n-- | the inner value is applied to the second function.\n-- |\n-- | ``` purescript\n-- | either f g (Left x) == f x\n-- | either f g (Right y) == g y\n-- | ```\neither :: forall a b c. (a -> c) -> (b -> c) -> Either a b -> c\neither f _ (Left a) = f a\neither _ g (Right b) = g b\n\n-- | Combine two alternatives.\nchoose :: forall m a b. Alt m => m a -> m b -> m (Either a b)\nchoose a b = Left <$> a <|> Right <$> b\n\n-- | Returns `true` when the `Either` value was constructed with `Left`.\nisLeft :: forall a b. Either a b -> Boolean\nisLeft = either (const true) (const false)\n\n-- | Returns `true` when the `Either` value was constructed with `Right`.\nisRight :: forall a b. Either a b -> Boolean\nisRight = either (const false) (const true)\n\n-- | A function that extracts the value from the `Left` data constructor.\n-- | The first argument is a default value, which will be returned in the\n-- | case where a `Right` is passed to `fromLeft`.\nfromLeft :: forall a b. a -> Either a b -> a\nfromLeft _ (Left a) = a\nfromLeft default _ = default\n\n-- | Similar to `fromLeft` but for use in cases where the default value may be\n-- | expensive to compute. As PureScript is not lazy, the standard `fromLeft`\n-- | has to evaluate the default value before returning the result,\n-- | whereas here the value is only computed when the `Either` is known\n-- | to be `Right`.\nfromLeft' :: forall a b. (Unit -> a) -> Either a b -> a\nfromLeft' _ (Left a) = a\nfromLeft' default _ = default unit\n\n-- | A function that extracts the value from the `Right` data constructor.\n-- | The first argument is a default value, which will be returned in the\n-- | case where a `Left` is passed to `fromRight`.\nfromRight :: forall a b. b -> Either a b -> b\nfromRight _ (Right b) = b\nfromRight default _ = default\n\n-- | Similar to `fromRight` but for use in cases where the default value may be\n-- | expensive to compute. As PureScript is not lazy, the standard `fromRight`\n-- | has to evaluate the default value before returning the result,\n-- | whereas here the value is only computed when the `Either` is known\n-- | to be `Left`.\nfromRight' :: forall a b. (Unit -> b) -> Either a b -> b\nfromRight' _ (Right b) = b\nfromRight' default _ = default unit\n\n-- | Takes a default and a `Maybe` value, if the value is a `Just`, turn it into\n-- | a `Right`, if the value is a `Nothing` use the provided default as a `Left`\n-- |\n-- | ```purescript\n-- | note \"default\" Nothing = Left \"default\"\n-- | note \"default\" (Just 1) = Right 1\n-- | ```\nnote :: forall a b. a -> Maybe b -> Either a b\nnote a = maybe (Left a) Right\n\n-- | Similar to `note`, but for use in cases where the default value may be\n-- | expensive to compute.\n-- |\n-- | ```purescript\n-- | note' (\\_ -> \"default\") Nothing = Left \"default\"\n-- | note' (\\_ -> \"default\") (Just 1) = Right 1\n-- | ```\nnote' :: forall a b. (Unit -> a) -> Maybe b -> Either a b\nnote' f = maybe' (Left <<< f) Right\n\n-- | Turns an `Either` into a `Maybe`, by throwing potential `Left` values away and converting\n-- | them into `Nothing`. `Right` values get turned into `Just`s.\n-- |\n-- | ```purescript\n-- | hush (Left \"ParseError\") = Nothing\n-- | hush (Right 42) = Just 42\n-- | ```\nhush :: forall a b. Either a b -> Maybe b\nhush = either (const Nothing) Just\n\n-- | Turns an `Either` into a `Maybe`, by throwing potential `Right` values away and converting\n-- | them into `Nothing`. `Left` values get turned into `Just`s.\n-- |\n-- | ```purescript\n-- | blush (Left \"ParseError\") = Just \"Parse Error\"\n-- | blush (Right 42) = Nothing\n-- | ```\nblush :: forall a b. Either a b -> Maybe a\nblush = either Just (const Nothing)\n", "export const pureE = function (a) {\n return function () {\n return a;\n };\n};\n\nexport const bindE = function (a) {\n return function (f) {\n return function () {\n return f(a())();\n };\n };\n};\n\nexport const untilE = function (f) {\n return function () {\n while (!f());\n };\n};\n\nexport const whileE = function (f) {\n return function (a) {\n return function () {\n while (f()) {\n a();\n }\n };\n };\n};\n\nexport const forE = function (lo) {\n return function (hi) {\n return function (f) {\n return function () {\n for (var i = lo; i < hi; i++) {\n f(i)();\n }\n };\n };\n };\n};\n\nexport const foreachE = function (as) {\n return function (f) {\n return function () {\n for (var i = 0, l = as.length; i < l; i++) {\n f(as[i])();\n }\n };\n };\n};\n", "module Control.Monad\n ( class Monad\n , liftM1\n , whenM\n , unlessM\n , ap\n , module Data.Functor\n , module Control.Apply\n , module Control.Applicative\n , module Control.Bind\n ) where\n\nimport Control.Applicative (class Applicative, liftA1, pure, unless, when)\nimport Control.Apply (class Apply, apply, (*>), (<*), (<*>))\nimport Control.Bind (class Bind, bind, ifM, join, (<=<), (=<<), (>=>), (>>=))\n\nimport Data.Functor (class Functor, map, void, ($>), (<#>), (<$), (<$>))\nimport Data.Unit (Unit)\nimport Type.Proxy (Proxy)\n\n-- | The `Monad` type class combines the operations of the `Bind` and\n-- | `Applicative` type classes. Therefore, `Monad` instances represent type\n-- | constructors which support sequential composition, and also lifting of\n-- | functions of arbitrary arity.\n-- |\n-- | Instances must satisfy the following laws in addition to the\n-- | `Applicative` and `Bind` laws:\n-- |\n-- | - Left Identity: `pure x >>= f = f x`\n-- | - Right Identity: `x >>= pure = x`\nclass (Applicative m, Bind m) <= Monad m\n\ninstance monadFn :: Monad ((->) r)\n\ninstance monadArray :: Monad Array\n\ninstance monadProxy :: Monad Proxy\n\n-- | `liftM1` provides a default implementation of `(<$>)` for any\n-- | [`Monad`](#monad), without using `(<$>)` as provided by the\n-- | [`Functor`](#functor)-[`Monad`](#monad) superclass relationship.\n-- |\n-- | `liftM1` can therefore be used to write [`Functor`](#functor) instances\n-- | as follows:\n-- |\n-- | ```purescript\n-- | instance functorF :: Functor F where\n-- | map = liftM1\n-- | ```\nliftM1 :: forall m a b. Monad m => (a -> b) -> m a -> m b\nliftM1 f a = do\n a' <- a\n pure (f a')\n\n-- | Perform a monadic action when a condition is true, where the conditional\n-- | value is also in a monadic context.\nwhenM :: forall m. Monad m => m Boolean -> m Unit -> m Unit\nwhenM mb m = do\n b <- mb\n when b m\n\n-- | Perform a monadic action unless a condition is true, where the conditional\n-- | value is also in a monadic context.\nunlessM :: forall m. Monad m => m Boolean -> m Unit -> m Unit\nunlessM mb m = do\n b <- mb\n unless b m\n\n-- | `ap` provides a default implementation of `(<*>)` for any `Monad`, without\n-- | using `(<*>)` as provided by the `Apply`-`Monad` superclass relationship.\n-- |\n-- | `ap` can therefore be used to write `Apply` instances as follows:\n-- |\n-- | ```purescript\n-- | instance applyF :: Apply F where\n-- | apply = ap\n-- | ```\n-- Note: Only a `Bind` constraint is needed, but this can\n-- produce loops when used with other default implementations\n-- (i.e. `liftA1`).\n-- See https://github.com/purescript/purescript-prelude/issues/232\nap :: forall m a b. Monad m => m (a -> b) -> m a -> m b\nap f a = do\n f' <- f\n a' <- a\n pure (f' a')\n", "export const intDegree = function (x) {\n return Math.min(Math.abs(x), 2147483647);\n};\n\n// See the Euclidean definition in\n// https://en.m.wikipedia.org/wiki/Modulo_operation.\nexport const intDiv = function (x) {\n return function (y) {\n if (y === 0) return 0;\n return y > 0 ? Math.floor(x / y) : -Math.floor(x / -y);\n };\n};\n\nexport const intMod = function (x) {\n return function (y) {\n if (y === 0) return 0;\n var yy = Math.abs(y);\n return ((x % yy) + yy) % yy;\n };\n};\n\nexport const numDiv = function (n1) {\n return function (n2) {\n return n1 / n2;\n };\n};\n", "module Data.CommutativeRing\n ( class CommutativeRing\n , module Data.Ring\n , module Data.Semiring\n , class CommutativeRingRecord\n ) where\n\nimport Data.Ring (class Ring, class RingRecord)\nimport Data.Semiring (class Semiring, add, mul, one, zero, (*), (+))\nimport Data.Symbol (class IsSymbol)\nimport Data.Unit (Unit)\nimport Prim.Row as Row\nimport Prim.RowList as RL\nimport Type.Proxy (Proxy)\n\n-- | The `CommutativeRing` class is for rings where multiplication is\n-- | commutative.\n-- |\n-- | Instances must satisfy the following law in addition to the `Ring`\n-- | laws:\n-- |\n-- | - Commutative multiplication: `a * b = b * a`\nclass Ring a <= CommutativeRing a\n\ninstance commutativeRingInt :: CommutativeRing Int\ninstance commutativeRingNumber :: CommutativeRing Number\ninstance commutativeRingUnit :: CommutativeRing Unit\ninstance commutativeRingFn :: CommutativeRing b => CommutativeRing (a -> b)\ninstance commutativeRingRecord :: (RL.RowToList row list, CommutativeRingRecord list row row) => CommutativeRing (Record row)\ninstance commutativeRingProxy :: CommutativeRing (Proxy a)\n\n-- | A class for records where all fields have `CommutativeRing` instances, used\n-- | to implement the `CommutativeRing` instance for records.\nclass RingRecord rowlist row subrow <= CommutativeRingRecord rowlist row subrow | rowlist -> subrow\n\ninstance commutativeRingRecordNil :: CommutativeRingRecord RL.Nil row ()\n\ninstance commutativeRingRecordCons ::\n ( IsSymbol key\n , Row.Cons key focus subrowTail subrow\n , CommutativeRingRecord rowlistTail row subrowTail\n , CommutativeRing focus\n ) =>\n CommutativeRingRecord (RL.Cons key focus rowlistTail) row subrow\n", "module Data.EuclideanRing\n ( class EuclideanRing\n , degree\n , div\n , mod\n , (/)\n , gcd\n , lcm\n , module Data.CommutativeRing\n , module Data.Ring\n , module Data.Semiring\n ) where\n\nimport Data.BooleanAlgebra ((||))\nimport Data.CommutativeRing (class CommutativeRing)\nimport Data.Eq (class Eq, (==))\nimport Data.Ring (class Ring, sub, (-))\nimport Data.Semiring (class Semiring, add, mul, one, zero, (*), (+))\n\n-- | The `EuclideanRing` class is for commutative rings that support division.\n-- | The mathematical structure this class is based on is sometimes also called\n-- | a *Euclidean domain*.\n-- |\n-- | Instances must satisfy the following laws in addition to the `Ring`\n-- | laws:\n-- |\n-- | - Integral domain: `one /= zero`, and if `a` and `b` are both nonzero then\n-- | so is their product `a * b`\n-- | - Euclidean function `degree`:\n-- | - Nonnegativity: For all nonzero `a`, `degree a >= 0`\n-- | - Quotient/remainder: For all `a` and `b`, where `b` is nonzero,\n-- | let `q = a / b` and ``r = a `mod` b``; then `a = q*b + r`, and also\n-- | either `r = zero` or `degree r < degree b`\n-- | - Submultiplicative euclidean function:\n-- | - For all nonzero `a` and `b`, `degree a <= degree (a * b)`\n-- |\n-- | The behaviour of division by `zero` is unconstrained by these laws,\n-- | meaning that individual instances are free to choose how to behave in this\n-- | case. Similarly, there are no restrictions on what the result of\n-- | `degree zero` is; it doesn't make sense to ask for `degree zero` in the\n-- | same way that it doesn't make sense to divide by `zero`, so again,\n-- | individual instances may choose how to handle this case.\n-- |\n-- | For any `EuclideanRing` which is also a `Field`, one valid choice\n-- | for `degree` is simply `const 1`. In fact, unless there's a specific\n-- | reason not to, `Field` types should normally use this definition of\n-- | `degree`.\n-- |\n-- | The `EuclideanRing Int` instance is one of the most commonly used\n-- | `EuclideanRing` instances and deserves a little more discussion. In\n-- | particular, there are a few different sensible law-abiding implementations\n-- | to choose from, with slightly different behaviour in the presence of\n-- | negative dividends or divisors. The most common definitions are \"truncating\"\n-- | division, where the result of `a / b` is rounded towards 0, and \"Knuthian\"\n-- | or \"flooring\" division, where the result of `a / b` is rounded towards\n-- | negative infinity. A slightly less common, but arguably more useful, option\n-- | is \"Euclidean\" division, which is defined so as to ensure that ``a `mod` b``\n-- | is always nonnegative. With Euclidean division, `a / b` rounds towards\n-- | negative infinity if the divisor is positive, and towards positive infinity\n-- | if the divisor is negative. Note that all three definitions are identical if\n-- | we restrict our attention to nonnegative dividends and divisors.\n-- |\n-- | In versions 1.x, 2.x, and 3.x of the Prelude, the `EuclideanRing Int`\n-- | instance used truncating division. As of 4.x, the `EuclideanRing Int`\n-- | instance uses Euclidean division. Additional functions `quot` and `rem` are\n-- | supplied if truncating division is desired.\nclass CommutativeRing a <= EuclideanRing a where\n degree :: a -> Int\n div :: a -> a -> a\n mod :: a -> a -> a\n\ninfixl 7 div as /\n\ninstance euclideanRingInt :: EuclideanRing Int where\n degree = intDegree\n div = intDiv\n mod = intMod\n\ninstance euclideanRingNumber :: EuclideanRing Number where\n degree _ = 1\n div = numDiv\n mod _ _ = 0.0\n\nforeign import intDegree :: Int -> Int\nforeign import intDiv :: Int -> Int -> Int\nforeign import intMod :: Int -> Int -> Int\n\nforeign import numDiv :: Number -> Number -> Number\n\n-- | The *greatest common divisor* of two values.\ngcd :: forall a. Eq a => EuclideanRing a => a -> a -> a\ngcd a b =\n if b == zero then a\n else gcd b (a `mod` b)\n\n-- | The *least common multiple* of two values.\nlcm :: forall a. Eq a => EuclideanRing a => a -> a -> a\nlcm a b =\n if a == zero || b == zero then zero\n else a * b / gcd a b\n", "module Data.Monoid\n ( class Monoid\n , mempty\n , power\n , guard\n , module Data.Semigroup\n , class MonoidRecord\n , memptyRecord\n ) where\n\nimport Data.Boolean (otherwise)\nimport Data.Eq ((==))\nimport Data.EuclideanRing (mod, (/))\nimport Data.Ord ((<=))\nimport Data.Ordering (Ordering(..))\nimport Data.Semigroup (class Semigroup, class SemigroupRecord, (<>))\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Unit (Unit, unit)\nimport Prim.Row as Row\nimport Prim.RowList as RL\nimport Record.Unsafe (unsafeSet)\nimport Type.Proxy (Proxy(..))\n\n-- | A `Monoid` is a `Semigroup` with a value `mempty`, which is both a\n-- | left and right unit for the associative operation `<>`:\n-- |\n-- | - Left unit: `(mempty <> x) = x`\n-- | - Right unit: `(x <> mempty) = x`\n-- |\n-- | `Monoid`s are commonly used as the result of fold operations, where\n-- | `<>` is used to combine individual results, and `mempty` gives the result\n-- | of folding an empty collection of elements.\n-- |\n-- | ### Newtypes for Monoid\n-- |\n-- | Some types (e.g. `Int`, `Boolean`) can implement multiple law-abiding\n-- | instances for `Monoid`. Let's use `Int` as an example\n-- | 1. `<>` could be `+` and `mempty` could be `0`\n-- | 2. `<>` could be `*` and `mempty` could be `1`.\n-- |\n-- | To clarify these ambiguous situations, one should use the newtypes\n-- | defined in `Data.Monoid.` modules.\n-- |\n-- | In the above ambiguous situation, we could use `Additive`\n-- | for the first situation or `Multiplicative` for the second one.\nclass Semigroup m <= Monoid m where\n mempty :: m\n\ninstance monoidUnit :: Monoid Unit where\n mempty = unit\n\ninstance monoidOrdering :: Monoid Ordering where\n mempty = EQ\n\ninstance monoidFn :: Monoid b => Monoid (a -> b) where\n mempty _ = mempty\n\ninstance monoidString :: Monoid String where\n mempty = \"\"\n\ninstance monoidArray :: Monoid (Array a) where\n mempty = []\n\ninstance monoidRecord :: (RL.RowToList row list, MonoidRecord list row row) => Monoid (Record row) where\n mempty = memptyRecord (Proxy :: Proxy list)\n\n-- | Append a value to itself a certain number of times. For the\n-- | `Multiplicative` type, and for a non-negative power, this is the same as\n-- | normal number exponentiation.\n-- |\n-- | If the second argument is negative this function will return `mempty`\n-- | (*unlike* normal number exponentiation). The `Monoid` constraint alone\n-- | is not enough to write a `power` function with the property that `power x\n-- | n` cancels with `power x (-n)`, i.e. `power x n <> power x (-n) = mempty`.\n-- | For that, we would additionally need the ability to invert elements, i.e.\n-- | a Group.\n-- |\n-- | ```purescript\n-- | power [1,2] 3 == [1,2,1,2,1,2]\n-- | power [1,2] 1 == [1,2]\n-- | power [1,2] 0 == []\n-- | power [1,2] (-3) == []\n-- | ```\n-- |\npower :: forall m. Monoid m => m -> Int -> m\npower x = go\n where\n go :: Int -> m\n go p\n | p <= 0 = mempty\n | p == 1 = x\n | p `mod` 2 == 0 = let x' = go (p / 2) in x' <> x'\n | otherwise = let x' = go (p / 2) in x' <> x' <> x\n\n-- | Allow or \"truncate\" a Monoid to its `mempty` value based on a condition.\nguard :: forall m. Monoid m => Boolean -> m -> m\nguard true a = a\nguard false _ = mempty\n\n-- | A class for records where all fields have `Monoid` instances, used to\n-- | implement the `Monoid` instance for records.\nclass MonoidRecord :: RL.RowList Type -> Row Type -> Row Type -> Constraint\nclass SemigroupRecord rowlist row subrow <= MonoidRecord rowlist row subrow | rowlist -> row subrow where\n memptyRecord :: Proxy rowlist -> Record subrow\n\ninstance monoidRecordNil :: MonoidRecord RL.Nil row () where\n memptyRecord _ = {}\n\ninstance monoidRecordCons ::\n ( IsSymbol key\n , Monoid focus\n , Row.Cons key focus subrowTail subrow\n , MonoidRecord rowlistTail row subrowTail\n ) =>\n MonoidRecord (RL.Cons key focus rowlistTail) row subrow where\n memptyRecord _ = insert mempty tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = memptyRecord (Proxy :: Proxy rowlistTail)\n", "-- | This module provides the `Effect` type, which is used to represent\n-- | _native_ effects. The `Effect` type provides a typed API for effectful\n-- | computations, while at the same time generating efficient JavaScript.\nmodule Effect\n ( Effect\n , untilE, whileE, forE, foreachE\n ) where\n\nimport Prelude\n\nimport Control.Apply (lift2)\n\n-- | A native effect. The type parameter denotes the return type of running the\n-- | effect, that is, an `Effect Int` is a possibly-effectful computation which\n-- | eventually produces a value of the type `Int` when it finishes.\nforeign import data Effect :: Type -> Type\n\ntype role Effect representational\n\ninstance functorEffect :: Functor Effect where\n map = liftA1\n\ninstance applyEffect :: Apply Effect where\n apply = ap\n\ninstance applicativeEffect :: Applicative Effect where\n pure = pureE\n\nforeign import pureE :: forall a. a -> Effect a\n\ninstance bindEffect :: Bind Effect where\n bind = bindE\n\nforeign import bindE :: forall a b. Effect a -> (a -> Effect b) -> Effect b\n\ninstance monadEffect :: Monad Effect\n\n-- | The `Semigroup` instance for effects allows you to run two effects, one\n-- | after the other, and then combine their results using the result type's\n-- | `Semigroup` instance.\ninstance semigroupEffect :: Semigroup a => Semigroup (Effect a) where\n append = lift2 append\n\n-- | If you have a `Monoid a` instance, then `mempty :: Effect a` is defined as\n-- | `pure mempty`.\ninstance monoidEffect :: Monoid a => Monoid (Effect a) where\n mempty = pureE mempty\n\n-- | Loop until a condition becomes `true`.\n-- |\n-- | `untilE b` is an effectful computation which repeatedly runs the effectful\n-- | computation `b`, until its return value is `true`.\nforeign import untilE :: Effect Boolean -> Effect Unit\n\n-- | Loop while a condition is `true`.\n-- |\n-- | `whileE b m` is effectful computation which runs the effectful computation\n-- | `b`. If its result is `true`, it runs the effectful computation `m` and\n-- | loops. If not, the computation ends.\nforeign import whileE :: forall a. Effect Boolean -> Effect a -> Effect Unit\n\n-- | Loop over a consecutive collection of numbers.\n-- |\n-- | `forE lo hi f` runs the computation returned by the function `f` for each\n-- | of the inputs between `lo` (inclusive) and `hi` (exclusive).\nforeign import forE :: Int -> Int -> (Int -> Effect Unit) -> Effect Unit\n\n-- | Loop over an array of values.\n-- |\n-- | `foreachE xs f` runs the computation returned by the function `f` for each\n-- | of the inputs `xs`.\nforeign import foreachE :: forall a. Array a -> (a -> Effect Unit) -> Effect Unit\n", "export function showErrorImpl(err) {\n return err.stack || err.toString();\n}\n\nexport function error(msg) {\n return new Error(msg);\n}\n\nexport function message(e) {\n return e.message;\n}\n\nexport function name(e) {\n return e.name || \"Error\";\n}\n\nexport function stackImpl(just) {\n return function (nothing) {\n return function (e) {\n return e.stack ? just(e.stack) : nothing;\n };\n };\n}\n\nexport function throwException(e) {\n return function () {\n throw e;\n };\n}\n\nexport function catchException(c) {\n return function (t) {\n return function () {\n try {\n return t();\n } catch (e) {\n if (e instanceof Error || Object.prototype.toString.call(e) === \"[object Error]\") {\n return c(e)();\n } else {\n return c(new Error(e.toString()))();\n }\n }\n };\n };\n}\n", "-- | This module defines an effect, actions and handlers for working\n-- | with JavaScript exceptions.\n\nmodule Effect.Exception\n ( Error\n , error\n , message\n , name\n , stack\n , throwException\n , catchException\n , throw\n , try\n ) where\n\nimport Prelude\n\nimport Effect (Effect)\n\nimport Data.Either (Either(..))\nimport Data.Maybe (Maybe(..))\n\n-- | The type of JavaScript errors\nforeign import data Error :: Type\n\ninstance showError :: Show Error where\n show = showErrorImpl\n\nforeign import showErrorImpl :: Error -> String\n\n-- | Create a JavaScript error, specifying a message\nforeign import error :: String -> Error\n\n-- | Get the error message from a JavaScript error\nforeign import message :: Error -> String\n\n-- | Get the error name when defined, or fallback to 'Error'\nforeign import name :: Error -> String\n\n-- | Get the stack trace from a JavaScript error\nstack :: Error -> Maybe String\nstack = stackImpl Just Nothing\n\nforeign import stackImpl\n :: (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> Error\n -> Maybe String\n\n-- | Throw an exception\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | main = do\n-- | x <- readNumber\n-- | when (x < 0) $ throwException $\n-- | error \"Expected a non-negative number\"\n-- | ```\nforeign import throwException\n :: forall a\n . Error\n -> Effect a\n\n-- | Catch an exception by providing an exception handler.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | main = catchException Console.logShow do\n-- | Console.log \"Exceptions thrown in this block will be logged to the console\"\n-- | ```\nforeign import catchException\n :: forall a\n . (Error -> Effect a)\n -> Effect a\n -> Effect a\n\n-- | A shortcut allowing you to throw an error in one step. Defined as\n-- | `throwException <<< error`.\nthrow :: forall a. String -> Effect a\nthrow = throwException <<< error\n\n-- | Runs an Eff and returns eventual Exceptions as a `Left` value. If the\n-- | computation succeeds the result gets wrapped in a `Right`.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | main :: Effect Unit\n-- | main = do\n-- | result <- try (readTextFile UTF8 \"README.md\")\n-- | case result of\n-- | Right lines ->\n-- | Console.log (\"README: \\n\" <> lines )\n-- | Left error ->\n-- | Console.error (\"Couldn't open README.md. Error was: \" <> show error)\n-- | ```\n\ntry :: forall a. Effect a -> Effect (Either Error a)\ntry action = catchException (pure <<< Left) (Right <$> action)\n", "-- | This module defines the `MonadError` type class and its instances.\n\nmodule Control.Monad.Error.Class where\n\nimport Prelude\n\nimport Data.Either (Either(..), either)\nimport Data.Maybe (Maybe(..), maybe)\nimport Effect (Effect)\nimport Effect.Exception as Ex\n\n\n-- | The `MonadThrow` type class represents those monads which support errors via\n-- | `throwError`, where `throwError e` halts, yielding the error `e`.\n-- |\n-- | An implementation is provided for `ExceptT`, and for other monad transformers\n-- | defined in this library.\n-- |\n-- | Laws:\n-- |\n-- | - Left zero: `throwError e >>= f = throwError e`\n-- |\nclass Monad m <= MonadThrow e m | m -> e where\n throwError :: forall a. e -> m a\n\n-- | The `MonadError` type class represents those monads which support catching\n-- | errors.\n-- |\n-- | - `catchError x f` calls the error handler `f` if an error is thrown during the\n-- | evaluation of `x`.\n-- |\n-- | An implementation is provided for `ExceptT`, and for other monad transformers\n-- | defined in this library.\n-- |\n-- | Laws:\n-- |\n-- | - Catch: `catchError (throwError e) f = f e`\n-- | - Pure: `catchError (pure a) f = pure a`\n-- |\nclass MonadThrow e m <= MonadError e m | m -> e where\n catchError :: forall a. m a -> (e -> m a) -> m a\n\n-- | This function allows you to provide a predicate for selecting the\n-- | exceptions that you're interested in, and handle only those exceptons.\n-- | If the inner computation throws an exception, and the predicate returns\n-- | Nothing, then the whole computation will still fail with that exception.\ncatchJust\n :: forall e m a b\n . MonadError e m\n => (e -> Maybe b) -- ^ Predicate to select exceptions\n -> m a -- ^ Computation to run\n -> (b -> m a) -- ^ Handler\n -> m a\ncatchJust p act handler = catchError act handle\n where\n handle e =\n case p e of\n Nothing -> throwError e\n Just b -> handler b\n\n-- | Return `Right` if the given action succeeds, `Left` if it throws.\ntry\n :: forall e m a\n . MonadError e m\n => m a\n -> m (Either e a)\ntry a = (Right <$> a) `catchError` (pure <<< Left)\n\ninstance monadThrowEither :: MonadThrow e (Either e) where\n throwError = Left\n\ninstance monadErrorEither :: MonadError e (Either e) where\n catchError (Left e) h = h e\n catchError (Right x) _ = Right x\n\ninstance monadThrowMaybe :: MonadThrow Unit Maybe where\n throwError = const Nothing\n\ninstance monadErrorMaybe :: MonadError Unit Maybe where\n catchError Nothing f = f unit\n catchError (Just a) _ = Just a\n \ninstance monadThrowEffect :: MonadThrow Ex.Error Effect where\n throwError = Ex.throwException\n\ninstance monadErrorEffect :: MonadError Ex.Error Effect where\n catchError = flip Ex.catchException\n\n\n-- | Make sure that a resource is cleaned up in the event of an exception. The\n-- | release action is called regardless of whether the body action throws or\n-- | returns.\nwithResource\n :: forall e m r a\n . MonadError e m\n => m r\n -> (r -> m Unit)\n -> (r -> m a)\n -> m a\nwithResource acquire release kleisli = do\n resource <- acquire\n result <- try $ kleisli resource\n release resource\n either throwError pure result\n\n-- | Lift a `Maybe` value to a MonadThrow monad.\nliftMaybe :: forall m e a. MonadThrow e m => e -> Maybe a -> m a\nliftMaybe error = maybe (throwError error) pure\n\n-- | Lift an `Either` value to a MonadThrow monad.\nliftEither :: forall m e a. MonadThrow e m => Either e a -> m a\nliftEither = either throwError pure\n", "module Data.Identity where\n\nimport Prelude\n\nimport Control.Alt (class Alt)\nimport Control.Comonad (class Comonad)\nimport Control.Extend (class Extend)\nimport Control.Lazy (class Lazy)\nimport Data.Eq (class Eq1)\nimport Data.Functor.Invariant (class Invariant, imapF)\nimport Data.Newtype (class Newtype)\nimport Data.Ord (class Ord1)\n\nnewtype Identity a = Identity a\n\nderive instance newtypeIdentity :: Newtype (Identity a) _\n\nderive newtype instance eqIdentity :: Eq a => Eq (Identity a)\n\nderive newtype instance ordIdentity :: Ord a => Ord (Identity a)\n\nderive newtype instance boundedIdentity :: Bounded a => Bounded (Identity a)\n\nderive newtype instance heytingAlgebraIdentity :: HeytingAlgebra a => HeytingAlgebra (Identity a)\n\nderive newtype instance booleanAlgebraIdentity :: BooleanAlgebra a => BooleanAlgebra (Identity a)\n\nderive newtype instance semigroupIdentity :: Semigroup a => Semigroup (Identity a)\n\nderive newtype instance monoidIdentity :: Monoid a => Monoid (Identity a)\n\nderive newtype instance semiringIdentity :: Semiring a => Semiring (Identity a)\n\nderive newtype instance euclideanRingIdentity :: EuclideanRing a => EuclideanRing (Identity a)\n\nderive newtype instance ringIdentity :: Ring a => Ring (Identity a)\n\nderive newtype instance commutativeRingIdentity :: CommutativeRing a => CommutativeRing (Identity a)\n\nderive newtype instance lazyIdentity :: Lazy a => Lazy (Identity a)\n\ninstance showIdentity :: Show a => Show (Identity a) where\n show (Identity x) = \"(Identity \" <> show x <> \")\"\n\nderive instance eq1Identity :: Eq1 Identity\n\nderive instance ord1Identity :: Ord1 Identity\n\nderive instance functorIdentity :: Functor Identity\n\ninstance invariantIdentity :: Invariant Identity where\n imap = imapF\n\ninstance altIdentity :: Alt Identity where\n alt x _ = x\n\ninstance applyIdentity :: Apply Identity where\n apply (Identity f) (Identity x) = Identity (f x)\n\ninstance applicativeIdentity :: Applicative Identity where\n pure = Identity\n\ninstance bindIdentity :: Bind Identity where\n bind (Identity m) f = f m\n\ninstance monadIdentity :: Monad Identity\n\ninstance extendIdentity :: Extend Identity where\n extend f m = Identity (f m)\n\ninstance comonadIdentity :: Comonad Identity where\n extract (Identity x) = x\n", "export const _new = function (val) {\n return function () {\n return { value: val };\n };\n};\n\nexport const newWithSelf = function (f) {\n return function () {\n var ref = { value: null };\n ref.value = f(ref);\n return ref;\n };\n};\n\nexport const read = function (ref) {\n return function () {\n return ref.value;\n };\n};\n\nexport const modifyImpl = function (f) {\n return function (ref) {\n return function () {\n var t = f(ref.value);\n ref.value = t.state;\n return t.value;\n };\n };\n};\n\nexport const write = function (val) {\n return function (ref) {\n return function () {\n ref.value = val;\n };\n };\n};\n", "-- | This module defines the `Ref` type for mutable value references, as well\n-- | as actions for working with them.\n-- |\n-- | You'll notice that all of the functions that operate on a `Ref` (e.g.\n-- | `new`, `read`, `write`) return their result wrapped in an `Effect`.\n-- | Working with mutable references is considered effectful in PureScript\n-- | because of the principle of purity: functions should not have side\n-- | effects, and should return the same result when called with the same\n-- | arguments. If a `Ref` could be written to without using `Effect`, that\n-- | would cause a side effect (the effect of changing the result of subsequent\n-- | reads for that `Ref`). If there were a function for reading the current\n-- | value of a `Ref` without the result being wrapped in `Effect`, the result\n-- | of calling that function would change each time a new value was written to\n-- | the `Ref`. Even creating a new `Ref` is effectful: if there were a\n-- | function for creating a new `Ref` with the type `forall s. s -> Ref s`,\n-- | then calling that function twice with the same argument would not give the\n-- | same result in each case, since you'd end up with two distinct references\n-- | which could be updated independently of each other.\n-- |\n-- | _Note_: `Control.Monad.ST` provides a pure alternative to `Ref` when\n-- | mutation is restricted to a local scope.\nmodule Effect.Ref\n ( Ref\n , new\n , newWithSelf\n , read\n , modify'\n , modify\n , modify_\n , write\n ) where\n\nimport Prelude\n\nimport Effect (Effect)\n\n-- | A value of type `Ref a` represents a mutable reference\n-- | which holds a value of type `a`.\nforeign import data Ref :: Type -> Type\n\ntype role Ref representational\n\n-- | Create a new mutable reference containing the specified value.\nforeign import _new :: forall s. s -> Effect (Ref s)\n\nnew :: forall s. s -> Effect (Ref s)\nnew = _new\n\n-- | Create a new mutable reference containing a value that can refer to the\n-- | `Ref` being created.\nforeign import newWithSelf :: forall s. (Ref s -> s) -> Effect (Ref s)\n\n-- | Read the current value of a mutable reference.\nforeign import read :: forall s. Ref s -> Effect s\n\n-- | Update the value of a mutable reference by applying a function\n-- | to the current value.\nmodify' :: forall s b. (s -> { state :: s, value :: b }) -> Ref s -> Effect b\nmodify' = modifyImpl\n\nforeign import modifyImpl :: forall s b. (s -> { state :: s, value :: b }) -> Ref s -> Effect b\n\n-- | Update the value of a mutable reference by applying a function\n-- | to the current value. The updated value is returned.\nmodify :: forall s. (s -> s) -> Ref s -> Effect s\nmodify f = modify' \\s -> let s' = f s in { state: s', value: s' }\n\n-- | A version of `modify` which does not return the updated value.\nmodify_ :: forall s. (s -> s) -> Ref s -> Effect Unit\nmodify_ f s = void $ modify f s\n\n-- | Update the value of a mutable reference to the specified value.\nforeign import write :: forall s. s -> Ref s -> Effect Unit\n", "module Control.Monad.Rec.Class\n ( Step(..)\n , class MonadRec\n , tailRec\n , tailRec2\n , tailRec3\n , tailRecM\n , tailRecM2\n , tailRecM3\n , forever\n , whileJust\n , untilJust\n , loop2\n , loop3\n ) where\n\nimport Prelude\n\nimport Data.Bifunctor (class Bifunctor)\nimport Data.Either (Either(..))\nimport Data.Identity (Identity(..))\nimport Data.Maybe (Maybe(..))\nimport Effect (Effect, untilE)\nimport Effect.Ref as Ref\nimport Partial.Unsafe (unsafePartial)\n\n-- | The result of a computation: either `Loop` containing the updated\n-- | accumulator, or `Done` containing the final result of the computation.\ndata Step a b = Loop a | Done b\n\nderive instance functorStep :: Functor (Step a)\n\ninstance bifunctorStep :: Bifunctor Step where\n bimap f _ (Loop a) = Loop (f a)\n bimap _ g (Done b) = Done (g b)\n\n-- | This type class captures those monads which support tail recursion in\n-- | constant stack space.\n-- |\n-- | The `tailRecM` function takes a step function, and applies that step\n-- | function recursively until a pure value of type `b` is found.\n-- |\n-- | Instances are provided for standard monad transformers.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | loopWriter :: Int -> WriterT (Additive Int) Effect Unit\n-- | loopWriter n = tailRecM go n\n-- | where\n-- | go 0 = do\n-- | traceM \"Done!\"\n-- | pure (Done unit)\n-- | go i = do\n-- | tell $ Additive i\n-- | pure (Loop (i - 1))\n-- | ```\nclass Monad m <= MonadRec m where\n tailRecM :: forall a b. (a -> m (Step a b)) -> a -> m b\n\n-- | Create a tail-recursive function of two arguments which uses constant stack space.\n-- |\n-- | The `loop2` helper function provides a curried alternative to the `Loop`\n-- | constructor for this function.\ntailRecM2\n :: forall m a b c\n . MonadRec m\n => (a -> b -> m (Step { a :: a, b :: b } c))\n -> a\n -> b\n -> m c\ntailRecM2 f a b = tailRecM (\\o -> f o.a o.b) { a, b }\n\n-- | Create a tail-recursive function of three arguments which uses constant stack space.\n-- |\n-- | The `loop3` helper function provides a curried alternative to the `Loop`\n-- | constructor for this function.\ntailRecM3\n :: forall m a b c d\n . MonadRec m\n => (a -> b -> c -> m (Step { a :: a, b :: b, c :: c } d))\n -> a\n -> b\n -> c\n -> m d\ntailRecM3 f a b c = tailRecM (\\o -> f o.a o.b o.c) { a, b, c }\n\n-- | Create a pure tail-recursive function of one argument\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | pow :: Int -> Int -> Int\n-- | pow n p = tailRec go { accum: 1, power: p }\n-- | where\n-- | go :: _ -> Step _ Int\n-- | go { accum: acc, power: 0 } = Done acc\n-- | go { accum: acc, power: p } = Loop { accum: acc * n, power: p - 1 }\n-- | ```\ntailRec :: forall a b. (a -> Step a b) -> a -> b\ntailRec f = go <<< f\n where\n go (Loop a) = go (f a)\n go (Done b) = b\n\n-- | Create a pure tail-recursive function of two arguments\n-- |\n-- | The `loop2` helper function provides a curried alternative to the `Loop`\n-- | constructor for this function.\ntailRec2 :: forall a b c. (a -> b -> Step { a :: a, b :: b } c) -> a -> b -> c\ntailRec2 f a b = tailRec (\\o -> f o.a o.b) { a, b }\n\n-- | Create a pure tail-recursive function of three arguments\n-- |\n-- | The `loop3` helper function provides a curried alternative to the `Loop`\n-- | constructor for this function.\ntailRec3 :: forall a b c d. (a -> b -> c -> Step { a :: a, b :: b, c :: c } d) -> a -> b -> c -> d\ntailRec3 f a b c = tailRec (\\o -> f o.a o.b o.c) { a, b, c }\n\ninstance monadRecIdentity :: MonadRec Identity where\n tailRecM f = Identity <<< tailRec (runIdentity <<< f)\n where runIdentity (Identity x) = x\n\ninstance monadRecEffect :: MonadRec Effect where\n tailRecM f a = do\n r <- Ref.new =<< f a\n untilE do\n Ref.read r >>= case _ of\n Loop a' -> do\n e <- f a'\n _ <- Ref.write e r\n pure false\n Done _ -> pure true\n fromDone <$> Ref.read r\n where\n fromDone :: forall a b. Step a b -> b\n fromDone = unsafePartial \\(Done b) -> b\n\ninstance monadRecFunction :: MonadRec ((->) e) where\n tailRecM f a0 e = tailRec (\\a -> f a e) a0\n\ninstance monadRecEither :: MonadRec (Either e) where\n tailRecM f a0 =\n let\n g (Left e) = Done (Left e)\n g (Right (Loop a)) = Loop (f a)\n g (Right (Done b)) = Done (Right b)\n in tailRec g (f a0)\n\ninstance monadRecMaybe :: MonadRec Maybe where\n tailRecM f a0 =\n let\n g Nothing = Done Nothing\n g (Just (Loop a)) = Loop (f a)\n g (Just (Done b)) = Done (Just b)\n in tailRec g (f a0)\n\n-- | `forever` runs an action indefinitely, using the `MonadRec` instance to\n-- | ensure constant stack usage.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | main = forever $ trace \"Hello, World!\"\n-- | ```\nforever :: forall m a b. MonadRec m => m a -> m b\nforever ma = tailRecM (\\u -> Loop u <$ ma) unit\n\n-- | While supplied computation evaluates to `Just _`, it will be\n-- | executed repeatedly and results will be combined using monoid instance.\nwhileJust :: forall a m. Monoid a => MonadRec m => m (Maybe a) -> m a\nwhileJust m = mempty # tailRecM \\v -> m <#> case _ of\n Nothing -> Done v\n Just x -> Loop $ v <> x\n\n-- | Supplied computation will be executed repeatedly until it evaluates\n-- | to `Just value` and then that `value` will be returned.\nuntilJust :: forall a m. MonadRec m => m (Maybe a) -> m a\nuntilJust m = unit # tailRecM \\_ -> m <#> case _ of\n Nothing -> Loop unit\n Just x -> Done x\n\n-- | A curried version of the `Loop` constructor, provided as a convenience for\n-- | use with `tailRec2` and `tailRecM2`.\nloop2 :: forall a b c. a -> b -> Step { a :: a, b :: b } c\nloop2 a b = Loop { a, b }\n\n-- | A curried version of the `Loop` constructor, provided as a convenience for\n-- | use with `tailRec3` and `tailRecM3`.\nloop3 :: forall a b c d. a -> b -> c -> Step { a :: a, b :: b, c :: c } d\nloop3 a b c = Loop { a, b, c }\n", "export const boolConj = function (b1) {\n return function (b2) {\n return b1 && b2;\n };\n};\n\nexport const boolDisj = function (b1) {\n return function (b2) {\n return b1 || b2;\n };\n};\n\nexport const boolNot = function (b) {\n return !b;\n};\n", "module Data.HeytingAlgebra\n ( class HeytingAlgebra\n , tt\n , ff\n , implies\n , conj\n , disj\n , not\n , (&&)\n , (||)\n , class HeytingAlgebraRecord\n , ffRecord\n , ttRecord\n , impliesRecord\n , conjRecord\n , disjRecord\n , notRecord\n ) where\n\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Unit (Unit, unit)\nimport Prim.Row as Row\nimport Prim.RowList as RL\nimport Record.Unsafe (unsafeGet, unsafeSet)\nimport Type.Proxy (Proxy(..))\n\n-- | The `HeytingAlgebra` type class represents types that are bounded lattices with\n-- | an implication operator such that the following laws hold:\n-- |\n-- | - Associativity:\n-- | - `a || (b || c) = (a || b) || c`\n-- | - `a && (b && c) = (a && b) && c`\n-- | - Commutativity:\n-- | - `a || b = b || a`\n-- | - `a && b = b && a`\n-- | - Absorption:\n-- | - `a || (a && b) = a`\n-- | - `a && (a || b) = a`\n-- | - Idempotent:\n-- | - `a || a = a`\n-- | - `a && a = a`\n-- | - Identity:\n-- | - `a || ff = a`\n-- | - `a && tt = a`\n-- | - Implication:\n-- | - ``a `implies` a = tt``\n-- | - ``a && (a `implies` b) = a && b``\n-- | - ``b && (a `implies` b) = b``\n-- | - ``a `implies` (b && c) = (a `implies` b) && (a `implies` c)``\n-- | - Complemented:\n-- | - ``not a = a `implies` ff``\nclass HeytingAlgebra a where\n ff :: a\n tt :: a\n implies :: a -> a -> a\n conj :: a -> a -> a\n disj :: a -> a -> a\n not :: a -> a\n\ninfixr 3 conj as &&\ninfixr 2 disj as ||\n\ninstance heytingAlgebraBoolean :: HeytingAlgebra Boolean where\n ff = false\n tt = true\n implies a b = not a || b\n conj = boolConj\n disj = boolDisj\n not = boolNot\n\ninstance heytingAlgebraUnit :: HeytingAlgebra Unit where\n ff = unit\n tt = unit\n implies _ _ = unit\n conj _ _ = unit\n disj _ _ = unit\n not _ = unit\n\ninstance heytingAlgebraFunction :: HeytingAlgebra b => HeytingAlgebra (a -> b) where\n ff _ = ff\n tt _ = tt\n implies f g a = f a `implies` g a\n conj f g a = f a && g a\n disj f g a = f a || g a\n not f a = not (f a)\n\ninstance heytingAlgebraProxy :: HeytingAlgebra (Proxy a) where\n conj _ _ = Proxy\n disj _ _ = Proxy\n implies _ _ = Proxy\n ff = Proxy\n not _ = Proxy\n tt = Proxy\n\ninstance heytingAlgebraRecord :: (RL.RowToList row list, HeytingAlgebraRecord list row row) => HeytingAlgebra (Record row) where\n ff = ffRecord (Proxy :: Proxy list) (Proxy :: Proxy row)\n tt = ttRecord (Proxy :: Proxy list) (Proxy :: Proxy row)\n conj = conjRecord (Proxy :: Proxy list)\n disj = disjRecord (Proxy :: Proxy list)\n implies = impliesRecord (Proxy :: Proxy list)\n not = notRecord (Proxy :: Proxy list)\n\nforeign import boolConj :: Boolean -> Boolean -> Boolean\nforeign import boolDisj :: Boolean -> Boolean -> Boolean\nforeign import boolNot :: Boolean -> Boolean\n\n-- | A class for records where all fields have `HeytingAlgebra` instances, used\n-- | to implement the `HeytingAlgebra` instance for records.\nclass HeytingAlgebraRecord :: RL.RowList Type -> Row Type -> Row Type -> Constraint\nclass HeytingAlgebraRecord rowlist row subrow | rowlist -> subrow where\n ffRecord :: Proxy rowlist -> Proxy row -> Record subrow\n ttRecord :: Proxy rowlist -> Proxy row -> Record subrow\n impliesRecord :: Proxy rowlist -> Record row -> Record row -> Record subrow\n disjRecord :: Proxy rowlist -> Record row -> Record row -> Record subrow\n conjRecord :: Proxy rowlist -> Record row -> Record row -> Record subrow\n notRecord :: Proxy rowlist -> Record row -> Record subrow\n\ninstance heytingAlgebraRecordNil :: HeytingAlgebraRecord RL.Nil row () where\n conjRecord _ _ _ = {}\n disjRecord _ _ _ = {}\n ffRecord _ _ = {}\n impliesRecord _ _ _ = {}\n notRecord _ _ = {}\n ttRecord _ _ = {}\n\ninstance heytingAlgebraRecordCons ::\n ( IsSymbol key\n , Row.Cons key focus subrowTail subrow\n , HeytingAlgebraRecord rowlistTail row subrowTail\n , HeytingAlgebra focus\n ) =>\n HeytingAlgebraRecord (RL.Cons key focus rowlistTail) row subrow where\n conjRecord _ ra rb = insert (conj (get ra) (get rb)) tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n get = unsafeGet key :: Record row -> focus\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = conjRecord (Proxy :: Proxy rowlistTail) ra rb\n\n disjRecord _ ra rb = insert (disj (get ra) (get rb)) tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n get = unsafeGet key :: Record row -> focus\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = disjRecord (Proxy :: Proxy rowlistTail) ra rb\n\n impliesRecord _ ra rb = insert (implies (get ra) (get rb)) tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n get = unsafeGet key :: Record row -> focus\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = impliesRecord (Proxy :: Proxy rowlistTail) ra rb\n\n ffRecord _ row = insert ff tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = ffRecord (Proxy :: Proxy rowlistTail) row\n\n notRecord _ row = insert (not (get row)) tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n get = unsafeGet key :: Record row -> focus\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = notRecord (Proxy :: Proxy rowlistTail) row\n\n ttRecord _ row = insert tt tail\n where\n key = reflectSymbol (Proxy :: Proxy key)\n insert = unsafeSet key :: focus -> Record subrowTail -> Record subrow\n tail = ttRecord (Proxy :: Proxy rowlistTail) row\n", "-- | A data type and functions for working with ordered pairs.\nmodule Data.Tuple where\n\nimport Prelude\n\nimport Control.Comonad (class Comonad)\nimport Control.Extend (class Extend)\nimport Control.Lazy (class Lazy, defer)\nimport Data.Eq (class Eq1)\nimport Data.Functor.Invariant (class Invariant, imapF)\nimport Data.Generic.Rep (class Generic)\nimport Data.HeytingAlgebra (implies, ff, tt)\nimport Data.Ord (class Ord1)\n\n-- | A simple product type for wrapping a pair of component values.\ndata Tuple a b = Tuple a b\n\n-- | Allows `Tuple`s to be rendered as a string with `show` whenever there are\n-- | `Show` instances for both component types.\ninstance showTuple :: (Show a, Show b) => Show (Tuple a b) where\n show (Tuple a b) = \"(Tuple \" <> show a <> \" \" <> show b <> \")\"\n\n-- | Allows `Tuple`s to be checked for equality with `==` and `/=` whenever\n-- | there are `Eq` instances for both component types.\nderive instance eqTuple :: (Eq a, Eq b) => Eq (Tuple a b)\n\nderive instance eq1Tuple :: Eq a => Eq1 (Tuple a)\n\n-- | Allows `Tuple`s to be compared with `compare`, `>`, `>=`, `<` and `<=`\n-- | whenever there are `Ord` instances for both component types. To obtain\n-- | the result, the `fst`s are `compare`d, and if they are `EQ`ual, the\n-- | `snd`s are `compare`d.\nderive instance ordTuple :: (Ord a, Ord b) => Ord (Tuple a b)\n\nderive instance ord1Tuple :: Ord a => Ord1 (Tuple a)\n\ninstance boundedTuple :: (Bounded a, Bounded b) => Bounded (Tuple a b) where\n top = Tuple top top\n bottom = Tuple bottom bottom\n\ninstance semigroupoidTuple :: Semigroupoid Tuple where\n compose (Tuple _ c) (Tuple a _) = Tuple a c\n\n-- | The `Semigroup` instance enables use of the associative operator `<>` on\n-- | `Tuple`s whenever there are `Semigroup` instances for the component\n-- | types. The `<>` operator is applied pairwise, so:\n-- | ```purescript\n-- | (Tuple a1 b1) <> (Tuple a2 b2) = Tuple (a1 <> a2) (b1 <> b2)\n-- | ```\ninstance semigroupTuple :: (Semigroup a, Semigroup b) => Semigroup (Tuple a b) where\n append (Tuple a1 b1) (Tuple a2 b2) = Tuple (a1 <> a2) (b1 <> b2)\n\ninstance monoidTuple :: (Monoid a, Monoid b) => Monoid (Tuple a b) where\n mempty = Tuple mempty mempty\n\ninstance semiringTuple :: (Semiring a, Semiring b) => Semiring (Tuple a b) where\n add (Tuple x1 y1) (Tuple x2 y2) = Tuple (add x1 x2) (add y1 y2)\n one = Tuple one one\n mul (Tuple x1 y1) (Tuple x2 y2) = Tuple (mul x1 x2) (mul y1 y2)\n zero = Tuple zero zero\n\ninstance ringTuple :: (Ring a, Ring b) => Ring (Tuple a b) where\n sub (Tuple x1 y1) (Tuple x2 y2) = Tuple (sub x1 x2) (sub y1 y2)\n\ninstance commutativeRingTuple :: (CommutativeRing a, CommutativeRing b) => CommutativeRing (Tuple a b)\n\ninstance heytingAlgebraTuple :: (HeytingAlgebra a, HeytingAlgebra b) => HeytingAlgebra (Tuple a b) where\n tt = Tuple tt tt\n ff = Tuple ff ff\n implies (Tuple x1 y1) (Tuple x2 y2) = Tuple (x1 `implies` x2) (y1 `implies` y2)\n conj (Tuple x1 y1) (Tuple x2 y2) = Tuple (conj x1 x2) (conj y1 y2)\n disj (Tuple x1 y1) (Tuple x2 y2) = Tuple (disj x1 x2) (disj y1 y2)\n not (Tuple x y) = Tuple (not x) (not y)\n\ninstance booleanAlgebraTuple :: (BooleanAlgebra a, BooleanAlgebra b) => BooleanAlgebra (Tuple a b)\n\n-- | The `Functor` instance allows functions to transform the contents of a\n-- | `Tuple` with the `<$>` operator, applying the function to the second\n-- | component, so:\n-- | ```purescript\n-- | f <$> (Tuple x y) = Tuple x (f y)\n-- | ````\nderive instance functorTuple :: Functor (Tuple a)\n\nderive instance genericTuple :: Generic (Tuple a b) _\n\ninstance invariantTuple :: Invariant (Tuple a) where\n imap = imapF\n\n-- | The `Apply` instance allows functions to transform the contents of a\n-- | `Tuple` with the `<*>` operator whenever there is a `Semigroup` instance\n-- | for the `fst` component, so:\n-- | ```purescript\n-- | (Tuple a1 f) <*> (Tuple a2 x) == Tuple (a1 <> a2) (f x)\n-- | ```\ninstance applyTuple :: (Semigroup a) => Apply (Tuple a) where\n apply (Tuple a1 f) (Tuple a2 x) = Tuple (a1 <> a2) (f x)\n\ninstance applicativeTuple :: (Monoid a) => Applicative (Tuple a) where\n pure = Tuple mempty\n\ninstance bindTuple :: (Semigroup a) => Bind (Tuple a) where\n bind (Tuple a1 b) f = case f b of\n Tuple a2 c -> Tuple (a1 <> a2) c\n\ninstance monadTuple :: (Monoid a) => Monad (Tuple a)\n\ninstance extendTuple :: Extend (Tuple a) where\n extend f t@(Tuple a _) = Tuple a (f t)\n\ninstance comonadTuple :: Comonad (Tuple a) where\n extract = snd\n\ninstance lazyTuple :: (Lazy a, Lazy b) => Lazy (Tuple a b) where\n defer f = Tuple (defer $ \\_ -> fst (f unit)) (defer $ \\_ -> snd (f unit))\n\n-- | Returns the first component of a tuple.\nfst :: forall a b. Tuple a b -> a\nfst (Tuple a _) = a\n\n-- | Returns the second component of a tuple.\nsnd :: forall a b. Tuple a b -> b\nsnd (Tuple _ b) = b\n\n-- | Turn a function that expects a tuple into a function of two arguments.\ncurry :: forall a b c. (Tuple a b -> c) -> a -> b -> c\ncurry f a b = f (Tuple a b)\n\n-- | Turn a function of two arguments into a function that expects a tuple.\nuncurry :: forall a b c. (a -> b -> c) -> Tuple a b -> c\nuncurry f (Tuple a b) = f a b\n\n-- | Exchange the first and second components of a tuple.\nswap :: forall a b. Tuple a b -> Tuple b a\nswap (Tuple a b) = Tuple b a\n", "-- | This module defines the `MonadState` type class and its instances.\n\nmodule Control.Monad.State.Class where\n\nimport Prelude (class Monad, Unit, unit)\n\nimport Data.Tuple (Tuple(..))\n\n-- | The `MonadState s` type class represents those monads which support a single piece of mutable\n-- | state of type `s`.\n-- |\n-- | - `state f` updates the state using the function `f`.\n-- |\n-- | An implementation is provided for `StateT`, and for other monad transformers\n-- | defined in this library.\n-- |\n-- | Laws:\n-- |\n-- | - `do { get ; get } = get`\n-- | - `do { put x ; put y } = put y`\n-- | - `do { put x ; get } = put x $> x`\n-- | - `do { s <- get ; put s } = pure unit`\n-- |\nclass Monad m <= MonadState s m | m -> s where\n state :: forall a. (s -> (Tuple a s)) -> m a\n\n-- | Get the current state.\nget :: forall m s. MonadState s m => m s\nget = state \\s -> Tuple s s\n\n-- | Get a value which depends on the current state.\ngets :: forall s m a. MonadState s m => (s -> a) -> m a\ngets f = state \\s -> Tuple (f s) s\n\n-- | Set the state.\nput :: forall m s. MonadState s m => s -> m Unit\nput s = state \\_ -> Tuple unit s\n\n-- | Modify the state by applying a function to the current state. The returned\n-- | value is the new state value.\nmodify :: forall s m. MonadState s m => (s -> s) -> m s\nmodify f = state \\s -> let s' = f s in Tuple s' s'\n\nmodify_ :: forall s m. MonadState s m => (s -> s) -> m Unit\nmodify_ f = state \\s -> Tuple unit (f s)\n", "module Effect.Class where\n\nimport Control.Category (identity)\nimport Control.Monad (class Monad)\nimport Effect (Effect)\n\n-- | The `MonadEffect` class captures those monads which support native effects.\n-- |\n-- | Instances are provided for `Effect` itself, and the standard monad\n-- | transformers.\n-- |\n-- | `liftEffect` can be used in any appropriate monad transformer stack to lift an\n-- | action of type `Effect a` into the monad.\n-- |\nclass Monad m <= MonadEffect m where\n liftEffect :: forall a. Effect a -> m a\n\ninstance monadEffectEffect :: MonadEffect Effect where\n liftEffect = identity\n", "-- | This module defines the _exception monad transformer_ `ExceptT`.\n\nmodule Control.Monad.Except.Trans\n ( ExceptT(..), runExceptT, withExceptT, mapExceptT, except\n , module Control.Monad.Trans.Class\n , module Control.Monad.Error.Class\n ) where\n\nimport Prelude\n\nimport Control.Alt (class Alt)\nimport Control.Alternative (class Alternative)\nimport Control.Apply (lift2)\nimport Control.Monad.Cont.Class (class MonadCont, callCC)\nimport Control.Monad.Error.Class (class MonadThrow, class MonadError, throwError, catchError)\nimport Control.Monad.Reader.Class (class MonadAsk, class MonadReader, ask, local)\nimport Control.Monad.Rec.Class (class MonadRec, tailRecM, Step(..))\nimport Control.Monad.State.Class (class MonadState, state)\nimport Control.Monad.Trans.Class (class MonadTrans, lift)\nimport Control.Monad.Writer.Class (class MonadWriter, class MonadTell, pass, listen, tell)\nimport Control.MonadPlus (class MonadPlus)\nimport Control.Plus (class Plus)\nimport Data.Either (Either(..), either)\nimport Data.Newtype (class Newtype)\nimport Data.Tuple (Tuple(..))\nimport Effect.Class (class MonadEffect, liftEffect)\n\n-- | A monad transformer which adds exceptions to other monads, in the same way\n-- | as `Except`. As before, `e` is the type of exceptions, and `a` is the type\n-- | of successful results. The new type parameter `m` is the inner monad that\n-- | computations run in.\nnewtype ExceptT e m a = ExceptT (m (Either e a))\n\n-- | The inverse of `ExceptT`. Run a computation in the `ExceptT` monad.\nrunExceptT :: forall e m a. ExceptT e m a -> m (Either e a)\nrunExceptT (ExceptT x) = x\n\n-- | Transform any exceptions thrown by an `ExceptT` computation using the given function.\nwithExceptT :: forall e e' m a. Functor m => (e -> e') -> ExceptT e m a -> ExceptT e' m a\nwithExceptT f (ExceptT t) = ExceptT $ map (mapLeft f) t\n where\n mapLeft _ (Right x) = Right x\n mapLeft f' (Left x) = Left (f' x)\n\n-- | Transform the unwrapped computation using the given function.\nmapExceptT :: forall e e' m n a b. (m (Either e a) -> n (Either e' b)) -> ExceptT e m a -> ExceptT e' n b\nmapExceptT f (ExceptT m) = ExceptT (f m)\n\n-- | Construct a computation in the `ExceptT` transformer from an `Either` value.\nexcept :: forall e m a. Applicative m => Either e a -> ExceptT e m a\nexcept = ExceptT <<< pure\n\nderive instance newtypeExceptT :: Newtype (ExceptT e m a) _\n\ninstance functorExceptT :: Functor m => Functor (ExceptT e m) where\n map f = mapExceptT (map (map f))\n\ninstance applyExceptT :: Monad m => Apply (ExceptT e m) where\n apply = ap\n\ninstance applicativeExceptT :: Monad m => Applicative (ExceptT e m) where\n pure = ExceptT <<< pure <<< Right\n\ninstance bindExceptT :: Monad m => Bind (ExceptT e m) where\n bind (ExceptT m) k =\n ExceptT (m >>= either (pure <<< Left) (\\a -> case k a of ExceptT b -> b))\n\ninstance monadExceptT :: Monad m => Monad (ExceptT e m)\n\ninstance monadRecExceptT :: MonadRec m => MonadRec (ExceptT e m) where\n tailRecM f = ExceptT <<< tailRecM \\a ->\n case f a of\n ExceptT m -> m >>= \\m' ->\n pure case m' of\n Left e -> Done (Left e)\n Right (Loop a1) -> Loop a1\n Right (Done b) -> Done (Right b)\n\ninstance altExceptT :: (Semigroup e, Monad m) => Alt (ExceptT e m) where\n alt (ExceptT m) (ExceptT n) = ExceptT do\n rm <- m\n case rm of\n Right x -> pure (Right x)\n Left err -> do\n rn <- n\n case rn of\n Right x -> pure (Right x)\n Left err' -> pure (Left (err <> err'))\n\ninstance plusExceptT :: (Monoid e, Monad m) => Plus (ExceptT e m) where\n empty = throwError (mempty :: e)\n\ninstance alternativeExceptT :: (Monoid e, Monad m) => Alternative (ExceptT e m)\n\ninstance monadPlusExceptT :: (Monoid e, Monad m) => MonadPlus (ExceptT e m)\n\ninstance monadTransExceptT :: MonadTrans (ExceptT e) where\n lift m = ExceptT do\n a <- m\n pure $ Right a\n\ninstance monadEffectExceptT :: MonadEffect m => MonadEffect (ExceptT e m) where\n liftEffect = lift <<< liftEffect\n\ninstance monadContExceptT :: MonadCont m => MonadCont (ExceptT e m) where\n callCC f = ExceptT $ callCC \\c ->\n case f (\\a -> ExceptT $ c (Right a)) of ExceptT b -> b\n\ninstance monadThrowExceptT :: Monad m => MonadThrow e (ExceptT e m) where\n throwError = ExceptT <<< pure <<< Left\n\ninstance monadErrorExceptT :: Monad m => MonadError e (ExceptT e m) where\n catchError (ExceptT m) k =\n ExceptT (m >>= either (\\a -> case k a of ExceptT b -> b) (pure <<< Right))\n\ninstance monadAskExceptT :: MonadAsk r m => MonadAsk r (ExceptT e m) where\n ask = lift ask\n\ninstance monadReaderExceptT :: MonadReader r m => MonadReader r (ExceptT e m) where\n local f = mapExceptT (local f)\n\ninstance monadStateExceptT :: MonadState s m => MonadState s (ExceptT e m) where\n state f = lift (state f)\n\ninstance monadTellExceptT :: MonadTell w m => MonadTell w (ExceptT e m) where\n tell = lift <<< tell\n\ninstance monadWriterExceptT :: MonadWriter w m => MonadWriter w (ExceptT e m) where\n listen = mapExceptT \\m -> do\n Tuple a w <- listen m\n pure $ (\\r -> Tuple r w) <$> a\n pass = mapExceptT \\m -> pass do\n a <- m\n pure case a of\n Left e -> Tuple (Left e) identity\n Right (Tuple r f) -> Tuple (Right r) f\n\ninstance semigroupExceptT :: (Monad m, Semigroup a) => Semigroup (ExceptT e m a) where\n append = lift2 (<>)\n\ninstance monoidExceptT :: (Monad m, Monoid a) => Monoid (ExceptT e m a) where\n mempty = pure mempty\n\n", "\nmodule Control.Monad.Except\n ( Except\n , runExcept\n , mapExcept\n , withExcept\n , module Control.Monad.Error.Class\n , module Control.Monad.Except.Trans\n ) where\n\nimport Prelude\n\nimport Control.Monad.Error.Class (class MonadError, catchError, catchJust, throwError)\nimport Control.Monad.Except.Trans (class MonadTrans, ExceptT(..), except, lift, mapExceptT, runExceptT, withExceptT)\n\nimport Data.Either (Either)\nimport Data.Identity (Identity(..))\nimport Data.Newtype (unwrap)\n\n-- | A parametrizable exception monad; computations are either exceptions or\n-- | pure values. If an exception is thrown (see `throwError`), the computation\n-- | terminates with that value. Exceptions may also be caught with `catchError`,\n-- | allowing the computation to resume and exit successfully.\n-- |\n-- | The type parameter `e` is the type of exceptions, and `a` is the type\n-- | of successful results.\n-- |\n-- | A mechanism for trying many different computations until one succeeds is\n-- | provided via the `Alt` instance, specifically the `(<|>)` function.\n-- | The first computation to succeed is returned; if all fail, the exceptions\n-- | are combined using their `Semigroup` instance. The `Plus` instance goes\n-- | further and adds the possibility of a computation failing with an 'empty'\n-- | exception; naturally, this requires the stronger constraint of a `Monoid`\n-- | instance for the exception type.\ntype Except e = ExceptT e Identity\n\n-- | Run a computation in the `Except` monad. The inverse of `except`.\nrunExcept :: forall e a. Except e a -> Either e a\nrunExcept = unwrap <<< runExceptT\n\n-- | Transform the unwrapped computation using the given function.\nmapExcept :: forall e e' a b. (Either e a -> Either e' b) -> Except e a -> Except e' b\nmapExcept f = mapExceptT (Identity <<< f <<< unwrap)\n\n-- | Transform any exceptions thrown by an `Except` computation using the given function.\nwithExcept :: forall e e' a. (e -> e') -> Except e a -> Except e' a\nwithExcept = withExceptT\n", "/* eslint-disable no-eq-null, eqeqeq */\nfunction id(x) {\n return x;\n}\n\nexport {id as fromBoolean};\nexport {id as fromNumber};\nexport {id as fromString};\nexport {id as fromArray};\nexport {id as fromObject};\nexport const jsonNull = null;\n\nexport function stringify(j) {\n return JSON.stringify(j);\n}\n\nexport function stringifyWithIndent(i) {\n return function (j) {\n return JSON.stringify(j, null, i);\n };\n}\n\nfunction isArray(a) {\n return Object.prototype.toString.call(a) === \"[object Array]\";\n}\n\nexport function _caseJson(isNull, isBool, isNum, isStr, isArr, isObj, j) {\n if (j == null) return isNull();\n else if (typeof j === \"boolean\") return isBool(j);\n else if (typeof j === \"number\") return isNum(j);\n else if (typeof j === \"string\") return isStr(j);\n else if (Object.prototype.toString.call(j) === \"[object Array]\")\n return isArr(j);\n else return isObj(j);\n}\n\nexport function _compare(EQ, GT, LT, a, b) {\n if (a == null) {\n if (b == null) return EQ;\n else return LT;\n } else if (typeof a === \"boolean\") {\n if (typeof b === \"boolean\") {\n // boolean / boolean\n if (a === b) return EQ;\n else if (a === false) return LT;\n else return GT;\n } else if (b == null) return GT;\n else return LT;\n } else if (typeof a === \"number\") {\n if (typeof b === \"number\") {\n if (a === b) return EQ;\n else if (a < b) return LT;\n else return GT;\n } else if (b == null) return GT;\n else if (typeof b === \"boolean\") return GT;\n else return LT;\n } else if (typeof a === \"string\") {\n if (typeof b === \"string\") {\n if (a === b) return EQ;\n else if (a < b) return LT;\n else return GT;\n } else if (b == null) return GT;\n else if (typeof b === \"boolean\") return GT;\n else if (typeof b === \"number\") return GT;\n else return LT;\n } else if (isArray(a)) {\n if (isArray(b)) {\n for (var i = 0; i < Math.min(a.length, b.length); i++) {\n var ca = _compare(EQ, GT, LT, a[i], b[i]);\n if (ca !== EQ) return ca;\n }\n if (a.length === b.length) return EQ;\n else if (a.length < b.length) return LT;\n else return GT;\n } else if (b == null) return GT;\n else if (typeof b === \"boolean\") return GT;\n else if (typeof b === \"number\") return GT;\n else if (typeof b === \"string\") return GT;\n else return LT;\n } else {\n if (b == null) return GT;\n else if (typeof b === \"boolean\") return GT;\n else if (typeof b === \"number\") return GT;\n else if (typeof b === \"string\") return GT;\n else if (isArray(b)) return GT;\n else {\n var akeys = Object.keys(a);\n var bkeys = Object.keys(b);\n if (akeys.length < bkeys.length) return LT;\n else if (akeys.length > bkeys.length) return GT;\n var keys = akeys.concat(bkeys).sort();\n for (var j = 0; j < keys.length; j++) {\n var k = keys[j];\n if (a[k] === undefined) return LT;\n else if (b[k] === undefined) return GT;\n var ck = _compare(EQ, GT, LT, a[k], b[k]);\n if (ck !== EQ) return ck;\n }\n return EQ;\n }\n }\n}\n", "export function _copyST(m) {\n return function () {\n var r = {};\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n r[k] = m[k];\n }\n }\n return r;\n };\n}\n\nexport const empty = {};\n\nexport function runST(f) {\n return f();\n}\n\nexport function _fmapObject(m0, f) {\n var m = {};\n for (var k in m0) {\n if (hasOwnProperty.call(m0, k)) {\n m[k] = f(m0[k]);\n }\n }\n return m;\n}\n\nexport function _mapWithKey(m0, f) {\n var m = {};\n for (var k in m0) {\n if (hasOwnProperty.call(m0, k)) {\n m[k] = f(k)(m0[k]);\n }\n }\n return m;\n}\n\nexport function _foldM(bind) {\n return function (f) {\n return function (mz) {\n return function (m) {\n var acc = mz;\n function g(k) {\n return function (z) {\n return f(z)(k)(m[k]);\n };\n }\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n acc = bind(acc)(g(k));\n }\n }\n return acc;\n };\n };\n };\n}\n\nexport function _foldSCObject(m, z, f, fromMaybe) {\n var acc = z;\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n var maybeR = f(acc)(k)(m[k]);\n var r = fromMaybe(null)(maybeR);\n if (r === null) return acc;\n else acc = r;\n }\n }\n return acc;\n}\n\nexport function all(f) {\n return function (m) {\n for (var k in m) {\n if (hasOwnProperty.call(m, k) && !f(k)(m[k])) return false;\n }\n return true;\n };\n}\n\nexport function size(m) {\n var s = 0;\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n ++s;\n }\n }\n return s;\n}\n\nexport function _lookup(no, yes, k, m) {\n return k in m ? yes(m[k]) : no;\n}\n\nexport function _lookupST(no, yes, k, m) {\n return function () {\n return k in m ? yes(m[k]) : no;\n };\n}\n\nexport function toArrayWithKey(f) {\n return function (m) {\n var r = [];\n for (var k in m) {\n if (hasOwnProperty.call(m, k)) {\n r.push(f(k)(m[k]));\n }\n }\n return r;\n };\n}\n\nexport const keys = Object.keys || toArrayWithKey(function (k) {\n return function () { return k; };\n});\n", "//------------------------------------------------------------------------------\n// Array creation --------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const rangeImpl = function (start, end) {\n var step = start > end ? -1 : 1;\n var result = new Array(step * (end - start) + 1);\n var i = start, n = 0;\n while (i !== end) {\n result[n++] = i;\n i += step;\n }\n result[n] = i;\n return result;\n};\n\nvar replicateFill = function (count, value) {\n if (count < 1) {\n return [];\n }\n var result = new Array(count);\n return result.fill(value);\n};\n\nvar replicatePolyfill = function (count, value) {\n var result = [];\n var n = 0;\n for (var i = 0; i < count; i++) {\n result[n++] = value;\n }\n return result;\n};\n\n// In browsers that have Array.prototype.fill we use it, as it's faster.\nexport const replicateImpl = typeof Array.prototype.fill === \"function\" ? replicateFill : replicatePolyfill;\n\nexport const fromFoldableImpl = (function () {\n function Cons(head, tail) {\n this.head = head;\n this.tail = tail;\n }\n var emptyList = {};\n\n function curryCons(head) {\n return function (tail) {\n return new Cons(head, tail);\n };\n }\n\n function listToArray(list) {\n var result = [];\n var count = 0;\n var xs = list;\n while (xs !== emptyList) {\n result[count++] = xs.head;\n xs = xs.tail;\n }\n return result;\n }\n\n return function (foldr, xs) {\n return listToArray(foldr(curryCons)(emptyList)(xs));\n };\n})();\n\n//------------------------------------------------------------------------------\n// Array size ------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const length = function (xs) {\n return xs.length;\n};\n\n//------------------------------------------------------------------------------\n// Non-indexed reads -----------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const unconsImpl = function (empty, next, xs) {\n return xs.length === 0 ? empty({}) : next(xs[0])(xs.slice(1));\n};\n\n//------------------------------------------------------------------------------\n// Indexed operations ----------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const indexImpl = function (just, nothing, xs, i) {\n return i < 0 || i >= xs.length ? nothing : just(xs[i]);\n};\n\nexport const findMapImpl = function (nothing, isJust, f, xs) {\n for (var i = 0; i < xs.length; i++) {\n var result = f(xs[i]);\n if (isJust(result)) return result;\n }\n return nothing;\n};\n\nexport const findIndexImpl = function (just, nothing, f, xs) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (f(xs[i])) return just(i);\n }\n return nothing;\n};\n\nexport const findLastIndexImpl = function (just, nothing, f, xs) {\n for (var i = xs.length - 1; i >= 0; i--) {\n if (f(xs[i])) return just(i);\n }\n return nothing;\n};\n\nexport const _insertAt = function (just, nothing, i, a, l) {\n if (i < 0 || i > l.length) return nothing;\n var l1 = l.slice();\n l1.splice(i, 0, a);\n return just(l1);\n};\n\nexport const _deleteAt = function (just, nothing, i, l) {\n if (i < 0 || i >= l.length) return nothing;\n var l1 = l.slice();\n l1.splice(i, 1);\n return just(l1);\n};\n\nexport const _updateAt = function (just, nothing, i, a, l) {\n if (i < 0 || i >= l.length) return nothing;\n var l1 = l.slice();\n l1[i] = a;\n return just(l1);\n};\n\n//------------------------------------------------------------------------------\n// Transformations -------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const reverse = function (l) {\n return l.slice().reverse();\n};\n\nexport const concat = function (xss) {\n if (xss.length <= 10000) {\n // This method is faster, but it crashes on big arrays.\n // So we use it when can and fallback to simple variant otherwise.\n return Array.prototype.concat.apply([], xss);\n }\n\n var result = [];\n for (var i = 0, l = xss.length; i < l; i++) {\n var xs = xss[i];\n for (var j = 0, m = xs.length; j < m; j++) {\n result.push(xs[j]);\n }\n }\n return result;\n};\n\nexport const filterImpl = function (f, xs) {\n return xs.filter(f);\n};\n\nexport const partitionImpl = function (f, xs) {\n var yes = [];\n var no = [];\n for (var i = 0; i < xs.length; i++) {\n var x = xs[i];\n if (f(x))\n yes.push(x);\n else\n no.push(x);\n }\n return { yes: yes, no: no };\n};\n\nexport const scanlImpl = function (f, b, xs) {\n var len = xs.length;\n var acc = b;\n var out = new Array(len);\n for (var i = 0; i < len; i++) {\n acc = f(acc)(xs[i]);\n out[i] = acc;\n }\n return out;\n};\n\nexport const scanrImpl = function (f, b, xs) {\n var len = xs.length;\n var acc = b;\n var out = new Array(len);\n for (var i = len - 1; i >= 0; i--) {\n acc = f(xs[i])(acc);\n out[i] = acc;\n }\n return out;\n};\n\n//------------------------------------------------------------------------------\n// Sorting ---------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const sortByImpl = (function () {\n function mergeFromTo(compare, fromOrdering, xs1, xs2, from, to) {\n var mid;\n var i;\n var j;\n var k;\n var x;\n var y;\n var c;\n\n mid = from + ((to - from) >> 1);\n if (mid - from > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, from, mid);\n if (to - mid > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, mid, to);\n\n i = from;\n j = mid;\n k = from;\n while (i < mid && j < to) {\n x = xs2[i];\n y = xs2[j];\n c = fromOrdering(compare(x)(y));\n if (c > 0) {\n xs1[k++] = y;\n ++j;\n }\n else {\n xs1[k++] = x;\n ++i;\n }\n }\n while (i < mid) {\n xs1[k++] = xs2[i++];\n }\n while (j < to) {\n xs1[k++] = xs2[j++];\n }\n }\n\n return function (compare, fromOrdering, xs) {\n var out;\n\n if (xs.length < 2) return xs;\n\n out = xs.slice(0);\n mergeFromTo(compare, fromOrdering, out, xs.slice(0), 0, xs.length);\n\n return out;\n };\n})();\n\n//------------------------------------------------------------------------------\n// Subarrays -------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const sliceImpl = function (s, e, l) {\n return l.slice(s, e);\n};\n\n//------------------------------------------------------------------------------\n// Zipping ---------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const zipWithImpl = function (f, xs, ys) {\n var l = xs.length < ys.length ? xs.length : ys.length;\n var result = new Array(l);\n for (var i = 0; i < l; i++) {\n result[i] = f(xs[i])(ys[i]);\n }\n return result;\n};\n\n//------------------------------------------------------------------------------\n// Folding ---------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const anyImpl = function (p, xs) {\n var len = xs.length;\n for (var i = 0; i < len; i++) {\n if (p(xs[i])) return true;\n }\n return false;\n};\n\nexport const allImpl = function (p, xs) {\n var len = xs.length;\n for (var i = 0; i < len; i++) {\n if (!p(xs[i])) return false;\n }\n return true;\n};\n\n//------------------------------------------------------------------------------\n// Partial ---------------------------------------------------------------------\n//------------------------------------------------------------------------------\n\nexport const unsafeIndexImpl = function (xs, n) {\n return xs[n];\n};\n", "function newSTArray() {\n return [];\n}\nexport { newSTArray as new };\n\nexport const peekImpl = function (just, nothing, i, xs) {\n return i >= 0 && i < xs.length ? just(xs[i]) : nothing;\n};\n\nexport const pokeImpl = function (i, a, xs) {\n var ret = i >= 0 && i < xs.length;\n if (ret) xs[i] = a;\n return ret;\n};\n\nexport const lengthImpl = function (xs) {\n return xs.length;\n};\n\nexport const popImpl = function (just, nothing, xs) {\n return xs.length > 0 ? just(xs.pop()) : nothing;\n};\n\nexport const pushAllImpl = function (as, xs) {\n return xs.push.apply(xs, as);\n};\n\nexport const shiftImpl = function (just, nothing, xs) {\n return xs.length > 0 ? just(xs.shift()) : nothing;\n};\n\nexport const unshiftAllImpl = function (as, xs) {\n return xs.unshift.apply(xs, as);\n};\n\nexport const spliceImpl = function (i, howMany, bs, xs) {\n return xs.splice.apply(xs, [i, howMany].concat(bs));\n};\n\nfunction unsafeFreezeThawImpl(xs) {\n return xs;\n}\n\nexport const unsafeFreezeImpl = unsafeFreezeThawImpl;\n\nexport const unsafeThawImpl = unsafeFreezeThawImpl;\n\nfunction copyImpl(xs) {\n return xs.slice();\n}\n\nexport const freezeImpl = copyImpl;\n\nexport const thawImpl = copyImpl;\n\nexport const cloneImpl = copyImpl;\n\nexport const sortByImpl = (function () {\n function mergeFromTo(compare, fromOrdering, xs1, xs2, from, to) {\n var mid;\n var i;\n var j;\n var k;\n var x;\n var y;\n var c;\n\n mid = from + ((to - from) >> 1);\n if (mid - from > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, from, mid);\n if (to - mid > 1) mergeFromTo(compare, fromOrdering, xs2, xs1, mid, to);\n\n i = from;\n j = mid;\n k = from;\n while (i < mid && j < to) {\n x = xs2[i];\n y = xs2[j];\n c = fromOrdering(compare(x)(y));\n if (c > 0) {\n xs1[k++] = y;\n ++j;\n } else {\n xs1[k++] = x;\n ++i;\n }\n }\n while (i < mid) {\n xs1[k++] = xs2[i++];\n }\n while (j < to) {\n xs1[k++] = xs2[j++];\n }\n }\n\n return function (compare, fromOrdering, xs) {\n if (xs.length < 2) return xs;\n\n mergeFromTo(compare, fromOrdering, xs, xs.slice(0), 0, xs.length);\n\n return xs;\n };\n})();\n\nexport const toAssocArrayImpl = function (xs) {\n var n = xs.length;\n var as = new Array(n);\n for (var i = 0; i < n; i++) as[i] = { value: xs[i], index: i };\n return as;\n};\n\nexport const pushImpl = function (a, xs) {\n return xs.push(a);\n};\n", "export const mkSTFn1 = function mkSTFn1(fn) {\n return function(x) {\n return fn(x)();\n };\n};\n \nexport const mkSTFn2 = function mkSTFn2(fn) {\n return function(a, b) {\n return fn(a)(b)();\n };\n};\n \nexport const mkSTFn3 = function mkSTFn3(fn) {\n return function(a, b, c) {\n return fn(a)(b)(c)();\n };\n};\n \nexport const mkSTFn4 = function mkSTFn4(fn) {\n return function(a, b, c, d) {\n return fn(a)(b)(c)(d)();\n };\n};\n \nexport const mkSTFn5 = function mkSTFn5(fn) {\n return function(a, b, c, d, e) {\n return fn(a)(b)(c)(d)(e)();\n };\n};\n \nexport const mkSTFn6 = function mkSTFn6(fn) {\n return function(a, b, c, d, e, f) {\n return fn(a)(b)(c)(d)(e)(f)();\n };\n};\n \nexport const mkSTFn7 = function mkSTFn7(fn) {\n return function(a, b, c, d, e, f, g) {\n return fn(a)(b)(c)(d)(e)(f)(g)();\n };\n};\n \nexport const mkSTFn8 = function mkSTFn8(fn) {\n return function(a, b, c, d, e, f, g, h) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)();\n };\n};\n \nexport const mkSTFn9 = function mkSTFn9(fn) {\n return function(a, b, c, d, e, f, g, h, i) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)();\n };\n};\n \nexport const mkSTFn10 = function mkSTFn10(fn) {\n return function(a, b, c, d, e, f, g, h, i, j) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)();\n };\n};\n \nexport const runSTFn1 = function runSTFn1(fn) {\n return function(a) {\n return function() {\n return fn(a);\n };\n };\n};\n \nexport const runSTFn2 = function runSTFn2(fn) {\n return function(a) {\n return function(b) {\n return function() {\n return fn(a, b);\n };\n };\n };\n};\n \nexport const runSTFn3 = function runSTFn3(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function() {\n return fn(a, b, c);\n };\n };\n };\n };\n};\n \nexport const runSTFn4 = function runSTFn4(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function() {\n return fn(a, b, c, d);\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn5 = function runSTFn5(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function() {\n return fn(a, b, c, d, e);\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn6 = function runSTFn6(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function() {\n return fn(a, b, c, d, e, f);\n };\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn7 = function runSTFn7(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function(g) {\n return function() {\n return fn(a, b, c, d, e, f, g);\n };\n };\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn8 = function runSTFn8(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function(g) {\n return function(h) {\n return function() {\n return fn(a, b, c, d, e, f, g, h);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn9 = function runSTFn9(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function(g) {\n return function(h) {\n return function(i) {\n return function() {\n return fn(a, b, c, d, e, f, g, h, i);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};\n \nexport const runSTFn10 = function runSTFn10(fn) {\n return function(a) {\n return function(b) {\n return function(c) {\n return function(d) {\n return function(e) {\n return function(f) {\n return function(g) {\n return function(h) {\n return function(i) {\n return function(j) {\n return function() {\n return fn(a, b, c, d, e, f, g, h, i, j);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};", "-- | Helper functions for working with mutable arrays using the `ST` effect.\n-- |\n-- | This module can be used when performance is important and mutation is a local effect.\n\nmodule Data.Array.ST\n ( STArray(..)\n , Assoc\n , run\n , withArray\n , new\n , peek\n , poke\n , modify\n , length\n , pop\n , push\n , pushAll\n , shift\n , unshift\n , unshiftAll\n , splice\n , sort\n , sortBy\n , sortWith\n , freeze\n , thaw\n , clone\n , unsafeFreeze\n , unsafeThaw\n , toAssocArray\n ) where\n\nimport Prelude\n\nimport Control.Monad.ST (ST, Region)\nimport Control.Monad.ST as ST\nimport Control.Monad.ST.Uncurried (STFn1, STFn2, STFn3, STFn4, runSTFn1, runSTFn2, runSTFn3, runSTFn4)\nimport Data.Maybe (Maybe(..))\n\n-- | A reference to a mutable array.\n-- |\n-- | The first type parameter represents the memory region which the array belongs to.\n-- | The second type parameter defines the type of elements of the mutable array.\n-- |\n-- | The runtime representation of a value of type `STArray h a` is the same as that of `Array a`,\n-- | except that mutation is allowed.\nforeign import data STArray :: Region -> Type -> Type\n\ntype role STArray nominal representational\n\n-- | An element and its index.\ntype Assoc a = { value :: a, index :: Int }\n\n-- | A safe way to create and work with a mutable array before returning an\n-- | immutable array for later perusal. This function avoids copying the array\n-- | before returning it - it uses unsafeFreeze internally, but this wrapper is\n-- | a safe interface to that function.\nrun :: forall a. (forall h. ST h (STArray h a)) -> Array a\nrun st = ST.run (st >>= unsafeFreeze)\n\n-- | Perform an effect requiring a mutable array on a copy of an immutable array,\n-- | safely returning the result as an immutable array.\nwithArray\n :: forall h a b\n . (STArray h a -> ST h b)\n -> Array a\n -> ST h (Array a)\nwithArray f xs = do\n result <- thaw xs\n _ <- f result\n unsafeFreeze result\n\n-- | O(1). Convert a mutable array to an immutable array, without copying. The mutable\n-- | array must not be mutated afterwards.\nunsafeFreeze :: forall h a. STArray h a -> ST h (Array a)\nunsafeFreeze = runSTFn1 unsafeFreezeImpl\n\nforeign import unsafeFreezeImpl :: forall h a. STFn1 (STArray h a) h (Array a)\n\n-- | O(1) Convert an immutable array to a mutable array, without copying. The input\n-- | array must not be used afterward.\nunsafeThaw :: forall h a. Array a -> ST h (STArray h a)\nunsafeThaw = runSTFn1 unsafeThawImpl\n\nforeign import unsafeThawImpl :: forall h a. STFn1 (Array a) h (STArray h a)\n\n-- | Create a new, empty mutable array.\nforeign import new :: forall h a. ST h (STArray h a)\n\nthaw\n :: forall h a\n . Array a\n -> ST h (STArray h a)\nthaw = runSTFn1 thawImpl\n\n-- | Create a mutable copy of an immutable array.\nforeign import thawImpl :: forall h a. STFn1 (Array a) h (STArray h a)\n\n-- | Make a mutable copy of a mutable array.\nclone\n :: forall h a\n . STArray h a\n -> ST h (STArray h a)\nclone = runSTFn1 cloneImpl\n\nforeign import cloneImpl :: forall h a. STFn1 (STArray h a) h (STArray h a)\n\n-- | Sort a mutable array in place. Sorting is stable: the order of equal\n-- | elements is preserved.\nsort :: forall a h. Ord a => STArray h a -> ST h (STArray h a)\nsort = sortBy compare\n\n-- | Remove the first element from an array and return that element.\nshift :: forall h a. STArray h a -> ST h (Maybe a)\nshift = runSTFn3 shiftImpl Just Nothing\n\nforeign import shiftImpl\n :: forall h a\n . STFn3 (forall b. b -> Maybe b) (forall b. Maybe b) (STArray h a) h (Maybe a)\n\n-- | Sort a mutable array in place using a comparison function. Sorting is\n-- | stable: the order of elements is preserved if they are equal according to\n-- | the comparison function.\nsortBy\n :: forall a h\n . (a -> a -> Ordering)\n -> STArray h a\n -> ST h (STArray h a)\nsortBy comp = runSTFn3 sortByImpl comp case _ of\n GT -> 1\n EQ -> 0\n LT -> -1\n\nforeign import sortByImpl\n :: forall a h\n . STFn3 (a -> a -> Ordering) (Ordering -> Int) (STArray h a) h (STArray h a)\n\n-- | Sort a mutable array in place based on a projection. Sorting is stable: the\n-- | order of elements is preserved if they are equal according to the projection.\nsortWith\n :: forall a b h\n . Ord b\n => (a -> b)\n -> STArray h a\n -> ST h (STArray h a)\nsortWith f = sortBy (comparing f)\n\n-- | Create an immutable copy of a mutable array.\nfreeze\n :: forall h a\n . STArray h a\n -> ST h (Array a)\nfreeze = runSTFn1 freezeImpl\n\nforeign import freezeImpl :: forall h a. STFn1 (STArray h a) h (Array a)\n\n-- | Read the value at the specified index in a mutable array.\npeek\n :: forall h a\n . Int\n -> STArray h a\n -> ST h (Maybe a)\npeek = runSTFn4 peekImpl Just Nothing\n\nforeign import peekImpl :: forall h a r. STFn4 (a -> r) r Int (STArray h a) h r\n\npoke\n :: forall h a\n . Int\n -> a\n -> STArray h a\n -> ST h Boolean\npoke = runSTFn3 pokeImpl\n\n-- | Change the value at the specified index in a mutable array.\nforeign import pokeImpl :: forall h a. STFn3 Int a (STArray h a) h Boolean\n\nforeign import lengthImpl :: forall h a. STFn1 (STArray h a) h Int\n\n-- | Get the number of elements in a mutable array.\nlength :: forall h a. STArray h a -> ST h Int\nlength = runSTFn1 lengthImpl\n\n-- | Remove the last element from an array and return that element.\npop :: forall h a. STArray h a -> ST h (Maybe a)\npop = runSTFn3 popImpl Just Nothing\n\nforeign import popImpl\n :: forall h a\n . STFn3 (forall b. b -> Maybe b) (forall b. Maybe b) (STArray h a) h (Maybe a)\n\n-- | Append an element to the end of a mutable array. Returns the new length of\n-- | the array.\npush :: forall h a. a -> (STArray h a) -> ST h Int\npush = runSTFn2 pushImpl\n\nforeign import pushImpl :: forall h a. STFn2 a (STArray h a) h Int\n\n-- | Append the values in an immutable array to the end of a mutable array.\n-- | Returns the new length of the mutable array.\npushAll\n :: forall h a\n . Array a\n -> STArray h a\n -> ST h Int\npushAll = runSTFn2 pushAllImpl\n\nforeign import pushAllImpl\n :: forall h a\n . STFn2 (Array a) (STArray h a) h Int\n\n-- | Append an element to the front of a mutable array. Returns the new length of\n-- | the array.\nunshift :: forall h a. a -> STArray h a -> ST h Int\nunshift a = runSTFn2 unshiftAllImpl [ a ]\n\n-- | Append the values in an immutable array to the front of a mutable array.\n-- | Returns the new length of the mutable array.\nunshiftAll\n :: forall h a\n . Array a\n -> STArray h a\n -> ST h Int\nunshiftAll = runSTFn2 unshiftAllImpl\n\nforeign import unshiftAllImpl\n :: forall h a\n . STFn2 (Array a) (STArray h a) h Int\n\n-- | Mutate the element at the specified index using the supplied function.\nmodify :: forall h a. Int -> (a -> a) -> STArray h a -> ST h Boolean\nmodify i f xs = do\n entry <- peek i xs\n case entry of\n Just x -> poke i (f x) xs\n Nothing -> pure false\n\n-- | Remove and/or insert elements from/into a mutable array at the specified index.\nsplice\n :: forall h a\n . Int\n -> Int\n -> Array a\n -> STArray h a\n -> ST h (Array a)\nsplice = runSTFn4 spliceImpl\n\nforeign import spliceImpl\n :: forall h a\n . STFn4 Int Int (Array a) (STArray h a) h (Array a)\n\n-- | Create an immutable copy of a mutable array, where each element\n-- | is labelled with its index in the original array.\ntoAssocArray\n :: forall h a\n . STArray h a\n -> ST h (Array (Assoc a))\ntoAssocArray = runSTFn1 toAssocArrayImpl\n\nforeign import toAssocArrayImpl\n :: forall h a\n . STFn1 (STArray h a) h (Array (Assoc a))\n", "export const foldrArray = function (f) {\n return function (init) {\n return function (xs) {\n var acc = init;\n var len = xs.length;\n for (var i = len - 1; i >= 0; i--) {\n acc = f(xs[i])(acc);\n }\n return acc;\n };\n };\n};\n\nexport const foldlArray = function (f) {\n return function (init) {\n return function (xs) {\n var acc = init;\n var len = xs.length;\n for (var i = 0; i < len; i++) {\n acc = f(acc)(xs[i]);\n }\n return acc;\n };\n };\n};\n", "module Control.Plus\n ( class Plus, empty\n , module Control.Alt\n , module Data.Functor\n ) where\n\nimport Control.Alt (class Alt, alt, (<|>))\n\nimport Data.Functor (class Functor, map, void, ($>), (<#>), (<$), (<$>))\n\n-- | The `Plus` type class extends the `Alt` type class with a value that\n-- | should be the left and right identity for `(<|>)`.\n-- |\n-- | It is similar to `Monoid`, except that it applies to types of\n-- | kind `* -> *`, like `Array` or `List`, rather than concrete types like\n-- | `String` or `Number`.\n-- |\n-- | `Plus` instances should satisfy the following laws:\n-- |\n-- | - Left identity: `empty <|> x == x`\n-- | - Right identity: `x <|> empty == x`\n-- | - Annihilation: `f <$> empty == empty`\nclass Alt f <= Plus f where\n empty :: forall a. f a\n\ninstance plusArray :: Plus Array where\n empty = []\n", "module Data.Bifunctor where\n\nimport Control.Category (identity)\nimport Data.Const (Const(..))\nimport Data.Either (Either(..))\nimport Data.Tuple (Tuple(..))\n\n-- | A `Bifunctor` is a `Functor` from the pair category `(Type, Type)` to `Type`.\n-- |\n-- | A type constructor with two type arguments can be made into a `Bifunctor` if\n-- | both of its type arguments are covariant.\n-- |\n-- | The `bimap` function maps a pair of functions over the two type arguments\n-- | of the bifunctor.\n-- |\n-- | Laws:\n-- |\n-- | - Identity: `bimap identity identity == identity`\n-- | - Composition: `bimap f1 g1 <<< bimap f2 g2 == bimap (f1 <<< f2) (g1 <<< g2)`\n-- |\nclass Bifunctor f where\n bimap :: forall a b c d. (a -> b) -> (c -> d) -> f a c -> f b d\n\n-- | Map a function over the first type argument of a `Bifunctor`.\nlmap :: forall f a b c. Bifunctor f => (a -> b) -> f a c -> f b c\nlmap f = bimap f identity\n\n-- | Map a function over the second type arguments of a `Bifunctor`.\nrmap :: forall f a b c. Bifunctor f => (b -> c) -> f a b -> f a c\nrmap = bimap identity\n\ninstance bifunctorEither :: Bifunctor Either where\n bimap f _ (Left l) = Left (f l)\n bimap _ g (Right r) = Right (g r)\n\ninstance bifunctorTuple :: Bifunctor Tuple where\n bimap f g (Tuple x y) = Tuple (f x) (g y)\n\ninstance bifunctorConst :: Bifunctor Const where\n bimap f _ (Const a) = Const (f a)\n", "module Data.Monoid.Disj where\n\nimport Prelude\n\nimport Data.Eq (class Eq1)\nimport Data.HeytingAlgebra (ff, tt)\nimport Data.Ord (class Ord1)\n\n-- | Monoid and semigroup for disjunction.\n-- |\n-- | ``` purescript\n-- | Disj x <> Disj y == Disj (x || y)\n-- | (mempty :: Disj _) == Disj bottom\n-- | ```\nnewtype Disj a = Disj a\n\nderive newtype instance eqDisj :: Eq a => Eq (Disj a)\nderive instance eq1Disj :: Eq1 Disj\n\nderive newtype instance ordDisj :: Ord a => Ord (Disj a)\nderive instance ord1Disj :: Ord1 Disj\n\nderive newtype instance boundedDisj :: Bounded a => Bounded (Disj a)\n\ninstance showDisj :: Show a => Show (Disj a) where\n show (Disj a) = \"(Disj \" <> show a <> \")\"\n\nderive instance functorDisj :: Functor Disj\n\ninstance applyDisj :: Apply Disj where\n apply (Disj f) (Disj x) = Disj (f x)\n\ninstance applicativeDisj :: Applicative Disj where\n pure = Disj\n\ninstance bindDisj :: Bind Disj where\n bind (Disj x) f = f x\n\ninstance monadDisj :: Monad Disj\n\ninstance semigroupDisj :: HeytingAlgebra a => Semigroup (Disj a) where\n append (Disj a) (Disj b) = Disj (disj a b)\n\ninstance monoidDisj :: HeytingAlgebra a => Monoid (Disj a) where\n mempty = Disj ff\n\ninstance semiringDisj :: HeytingAlgebra a => Semiring (Disj a) where\n zero = Disj ff\n one = Disj tt\n add (Disj a) (Disj b) = Disj (disj a b)\n mul (Disj a) (Disj b) = Disj (conj a b)\n", "module Data.Foldable\n ( class Foldable, foldr, foldl, foldMap\n , foldrDefault, foldlDefault, foldMapDefaultL, foldMapDefaultR\n , fold\n , foldM\n , traverse_\n , for_\n , sequence_\n , oneOf\n , oneOfMap\n , intercalate\n , surroundMap\n , surround\n , and\n , or\n , all\n , any\n , sum\n , product\n , elem\n , notElem\n , indexl\n , indexr\n , find\n , findMap\n , maximum\n , maximumBy\n , minimum\n , minimumBy\n , null\n , length\n , lookup\n ) where\n\nimport Prelude\n\nimport Control.Plus (class Plus, alt, empty)\nimport Data.Const (Const)\nimport Data.Either (Either(..))\nimport Data.Functor.App (App(..))\nimport Data.Functor.Compose (Compose(..))\nimport Data.Functor.Coproduct (Coproduct, coproduct)\nimport Data.Functor.Product (Product(..))\nimport Data.Identity (Identity(..))\nimport Data.Maybe (Maybe(..))\nimport Data.Maybe.First (First(..))\nimport Data.Maybe.Last (Last(..))\nimport Data.Monoid.Additive (Additive(..))\nimport Data.Monoid.Conj (Conj(..))\nimport Data.Monoid.Disj (Disj(..))\nimport Data.Monoid.Dual (Dual(..))\nimport Data.Monoid.Endo (Endo(..))\nimport Data.Monoid.Multiplicative (Multiplicative(..))\nimport Data.Newtype (alaF, unwrap)\nimport Data.Tuple (Tuple(..))\n\n-- | `Foldable` represents data structures which can be _folded_.\n-- |\n-- | - `foldr` folds a structure from the right\n-- | - `foldl` folds a structure from the left\n-- | - `foldMap` folds a structure by accumulating values in a `Monoid`\n-- |\n-- | Default implementations are provided by the following functions:\n-- |\n-- | - `foldrDefault`\n-- | - `foldlDefault`\n-- | - `foldMapDefaultR`\n-- | - `foldMapDefaultL`\n-- |\n-- | Note: some combinations of the default implementations are unsafe to\n-- | use together - causing a non-terminating mutually recursive cycle.\n-- | These combinations are documented per function.\nclass Foldable f where\n foldr :: forall a b. (a -> b -> b) -> b -> f a -> b\n foldl :: forall a b. (b -> a -> b) -> b -> f a -> b\n foldMap :: forall a m. Monoid m => (a -> m) -> f a -> m\n\n-- | A default implementation of `foldr` using `foldMap`.\n-- |\n-- | Note: when defining a `Foldable` instance, this function is unsafe to use\n-- | in combination with `foldMapDefaultR`.\nfoldrDefault\n :: forall f a b\n . Foldable f\n => (a -> b -> b)\n -> b\n -> f a\n -> b\nfoldrDefault c u xs = unwrap (foldMap (Endo <<< c) xs) u\n\n-- | A default implementation of `foldl` using `foldMap`.\n-- |\n-- | Note: when defining a `Foldable` instance, this function is unsafe to use\n-- | in combination with `foldMapDefaultL`.\nfoldlDefault\n :: forall f a b\n . Foldable f\n => (b -> a -> b)\n -> b\n -> f a\n -> b\nfoldlDefault c u xs = unwrap (unwrap (foldMap (Dual <<< Endo <<< flip c) xs)) u\n\n-- | A default implementation of `foldMap` using `foldr`.\n-- |\n-- | Note: when defining a `Foldable` instance, this function is unsafe to use\n-- | in combination with `foldrDefault`.\nfoldMapDefaultR\n :: forall f a m\n . Foldable f\n => Monoid m\n => (a -> m)\n -> f a\n -> m\nfoldMapDefaultR f = foldr (\\x acc -> f x <> acc) mempty\n\n-- | A default implementation of `foldMap` using `foldl`.\n-- |\n-- | Note: when defining a `Foldable` instance, this function is unsafe to use\n-- | in combination with `foldlDefault`.\nfoldMapDefaultL\n :: forall f a m\n . Foldable f\n => Monoid m\n => (a -> m)\n -> f a\n -> m\nfoldMapDefaultL f = foldl (\\acc x -> acc <> f x) mempty\n\ninstance foldableArray :: Foldable Array where\n foldr = foldrArray\n foldl = foldlArray\n foldMap = foldMapDefaultR\n\nforeign import foldrArray :: forall a b. (a -> b -> b) -> b -> Array a -> b\nforeign import foldlArray :: forall a b. (b -> a -> b) -> b -> Array a -> b\n\ninstance foldableMaybe :: Foldable Maybe where\n foldr _ z Nothing = z\n foldr f z (Just x) = x `f` z\n foldl _ z Nothing = z\n foldl f z (Just x) = z `f` x\n foldMap _ Nothing = mempty\n foldMap f (Just x) = f x\n\ninstance foldableFirst :: Foldable First where\n foldr f z (First x) = foldr f z x\n foldl f z (First x) = foldl f z x\n foldMap f (First x) = foldMap f x\n\ninstance foldableLast :: Foldable Last where\n foldr f z (Last x) = foldr f z x\n foldl f z (Last x) = foldl f z x\n foldMap f (Last x) = foldMap f x\n\ninstance foldableAdditive :: Foldable Additive where\n foldr f z (Additive x) = x `f` z\n foldl f z (Additive x) = z `f` x\n foldMap f (Additive x) = f x\n\ninstance foldableDual :: Foldable Dual where\n foldr f z (Dual x) = x `f` z\n foldl f z (Dual x) = z `f` x\n foldMap f (Dual x) = f x\n\ninstance foldableDisj :: Foldable Disj where\n foldr f z (Disj x) = f x z\n foldl f z (Disj x) = f z x\n foldMap f (Disj x) = f x\n\ninstance foldableConj :: Foldable Conj where\n foldr f z (Conj x) = f x z\n foldl f z (Conj x) = f z x\n foldMap f (Conj x) = f x\n\ninstance foldableMultiplicative :: Foldable Multiplicative where\n foldr f z (Multiplicative x) = x `f` z\n foldl f z (Multiplicative x) = z `f` x\n foldMap f (Multiplicative x) = f x\n\ninstance foldableEither :: Foldable (Either a) where\n foldr _ z (Left _) = z\n foldr f z (Right x) = f x z\n foldl _ z (Left _) = z\n foldl f z (Right x) = f z x\n foldMap _ (Left _) = mempty\n foldMap f (Right x) = f x\n\ninstance foldableTuple :: Foldable (Tuple a) where\n foldr f z (Tuple _ x) = f x z\n foldl f z (Tuple _ x) = f z x\n foldMap f (Tuple _ x) = f x\n\ninstance foldableIdentity :: Foldable Identity where\n foldr f z (Identity x) = f x z\n foldl f z (Identity x) = f z x\n foldMap f (Identity x) = f x\n\ninstance foldableConst :: Foldable (Const a) where\n foldr _ z _ = z\n foldl _ z _ = z\n foldMap _ _ = mempty\n\ninstance foldableProduct :: (Foldable f, Foldable g) => Foldable (Product f g) where\n foldr f z (Product (Tuple fa ga)) = foldr f (foldr f z ga) fa\n foldl f z (Product (Tuple fa ga)) = foldl f (foldl f z fa) ga\n foldMap f (Product (Tuple fa ga)) = foldMap f fa <> foldMap f ga\n\ninstance foldableCoproduct :: (Foldable f, Foldable g) => Foldable (Coproduct f g) where\n foldr f z = coproduct (foldr f z) (foldr f z)\n foldl f z = coproduct (foldl f z) (foldl f z)\n foldMap f = coproduct (foldMap f) (foldMap f)\n\ninstance foldableCompose :: (Foldable f, Foldable g) => Foldable (Compose f g) where\n foldr f i (Compose fga) = foldr (flip (foldr f)) i fga\n foldl f i (Compose fga) = foldl (foldl f) i fga\n foldMap f (Compose fga) = foldMap (foldMap f) fga\n\ninstance foldableApp :: Foldable f => Foldable (App f) where\n foldr f i (App x) = foldr f i x\n foldl f i (App x) = foldl f i x\n foldMap f (App x) = foldMap f x\n\n-- | Fold a data structure, accumulating values in some `Monoid`.\nfold :: forall f m. Foldable f => Monoid m => f m -> m\nfold = foldMap identity\n\n-- | Similar to 'foldl', but the result is encapsulated in a monad.\n-- |\n-- | Note: this function is not generally stack-safe, e.g., for monads which\n-- | build up thunks a la `Eff`.\nfoldM :: forall f m a b. Foldable f => Monad m => (b -> a -> m b) -> b -> f a -> m b\nfoldM f b0 = foldl (\\b a -> b >>= flip f a) (pure b0)\n\n-- | Traverse a data structure, performing some effects encoded by an\n-- | `Applicative` functor at each value, ignoring the final result.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | traverse_ print [1, 2, 3]\n-- | ```\ntraverse_\n :: forall a b f m\n . Applicative m\n => Foldable f\n => (a -> m b)\n -> f a\n -> m Unit\ntraverse_ f = foldr ((*>) <<< f) (pure unit)\n\n-- | A version of `traverse_` with its arguments flipped.\n-- |\n-- | This can be useful when running an action written using do notation\n-- | for every element in a data structure:\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | for_ [1, 2, 3] \\n -> do\n-- | print n\n-- | trace \"squared is\"\n-- | print (n * n)\n-- | ```\nfor_\n :: forall a b f m\n . Applicative m\n => Foldable f\n => f a\n -> (a -> m b)\n -> m Unit\nfor_ = flip traverse_\n\n-- | Perform all of the effects in some data structure in the order\n-- | given by the `Foldable` instance, ignoring the final result.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | sequence_ [ trace \"Hello, \", trace \" world!\" ]\n-- | ```\nsequence_ :: forall a f m. Applicative m => Foldable f => f (m a) -> m Unit\nsequence_ = traverse_ identity\n\n-- | Combines a collection of elements using the `Alt` operation.\noneOf :: forall f g a. Foldable f => Plus g => f (g a) -> g a\noneOf = foldr alt empty\n\n-- | Folds a structure into some `Plus`.\noneOfMap :: forall f g a b. Foldable f => Plus g => (a -> g b) -> f a -> g b\noneOfMap f = foldr (alt <<< f) empty\n\n-- | Fold a data structure, accumulating values in some `Monoid`,\n-- | combining adjacent elements using the specified separator.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | > intercalate \", \" [\"Lorem\", \"ipsum\", \"dolor\"]\n-- | = \"Lorem, ipsum, dolor\"\n-- |\n-- | > intercalate \"*\" [\"a\", \"b\", \"c\"]\n-- | = \"a*b*c\"\n-- |\n-- | > intercalate [1] [[2, 3], [4, 5], [6, 7]]\n-- | = [2, 3, 1, 4, 5, 1, 6, 7]\n-- | ```\nintercalate :: forall f m. Foldable f => Monoid m => m -> f m -> m\nintercalate sep xs = (foldl go { init: true, acc: mempty } xs).acc\n where\n go { init: true } x = { init: false, acc: x }\n go { acc: acc } x = { init: false, acc: acc <> sep <> x }\n\n-- | `foldMap` but with each element surrounded by some fixed value.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | > surroundMap \"*\" show []\n-- | = \"*\"\n-- |\n-- | > surroundMap \"*\" show [1]\n-- | = \"*1*\"\n-- |\n-- | > surroundMap \"*\" show [1, 2]\n-- | = \"*1*2*\"\n-- |\n-- | > surroundMap \"*\" show [1, 2, 3]\n-- | = \"*1*2*3*\"\n-- | ```\nsurroundMap :: forall f a m. Foldable f => Semigroup m => m -> (a -> m) -> f a -> m\nsurroundMap d t f = unwrap (foldMap joined f) d\n where joined a = Endo \\m -> d <> t a <> m\n\n-- | `fold` but with each element surrounded by some fixed value.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | > surround \"*\" []\n-- | = \"*\"\n-- |\n-- | > surround \"*\" [\"1\"]\n-- | = \"*1*\"\n-- |\n-- | > surround \"*\" [\"1\", \"2\"]\n-- | = \"*1*2*\"\n-- |\n-- | > surround \"*\" [\"1\", \"2\", \"3\"]\n-- | = \"*1*2*3*\"\n-- | ```\nsurround :: forall f m. Foldable f => Semigroup m => m -> f m -> m\nsurround d = surroundMap d identity\n\n-- | The conjunction of all the values in a data structure. When specialized\n-- | to `Boolean`, this function will test whether all of the values in a data\n-- | structure are `true`.\nand :: forall a f. Foldable f => HeytingAlgebra a => f a -> a\nand = all identity\n\n-- | The disjunction of all the values in a data structure. When specialized\n-- | to `Boolean`, this function will test whether any of the values in a data\n-- | structure is `true`.\nor :: forall a f. Foldable f => HeytingAlgebra a => f a -> a\nor = any identity\n\n-- | `all f` is the same as `and <<< map f`; map a function over the structure,\n-- | and then get the conjunction of the results.\nall :: forall a b f. Foldable f => HeytingAlgebra b => (a -> b) -> f a -> b\nall = alaF Conj foldMap\n\n-- | `any f` is the same as `or <<< map f`; map a function over the structure,\n-- | and then get the disjunction of the results.\nany :: forall a b f. Foldable f => HeytingAlgebra b => (a -> b) -> f a -> b\nany = alaF Disj foldMap\n\n-- | Find the sum of the numeric values in a data structure.\nsum :: forall a f. Foldable f => Semiring a => f a -> a\nsum = foldl (+) zero\n\n-- | Find the product of the numeric values in a data structure.\nproduct :: forall a f. Foldable f => Semiring a => f a -> a\nproduct = foldl (*) one\n\n-- | Test whether a value is an element of a data structure.\nelem :: forall a f. Foldable f => Eq a => a -> f a -> Boolean\nelem = any <<< (==)\n\n-- | Test whether a value is not an element of a data structure.\nnotElem :: forall a f. Foldable f => Eq a => a -> f a -> Boolean\nnotElem x = not <<< elem x\n\n-- | Try to get nth element from the left in a data structure\nindexl :: forall a f. Foldable f => Int -> f a -> Maybe a\nindexl idx = _.elem <<< foldl go { elem: Nothing, pos: 0 }\n where\n go cursor a =\n case cursor.elem of\n Just _ -> cursor\n _ ->\n if cursor.pos == idx\n then { elem: Just a, pos: cursor.pos }\n else { pos: cursor.pos + 1, elem: cursor.elem }\n\n-- | Try to get nth element from the right in a data structure\nindexr :: forall a f. Foldable f => Int -> f a -> Maybe a\nindexr idx = _.elem <<< foldr go { elem: Nothing, pos: 0 }\n where\n go a cursor =\n case cursor.elem of\n Just _ -> cursor\n _ ->\n if cursor.pos == idx\n then { elem: Just a, pos: cursor.pos }\n else { pos: cursor.pos + 1, elem: cursor.elem }\n\n-- | Try to find an element in a data structure which satisfies a predicate.\nfind :: forall a f. Foldable f => (a -> Boolean) -> f a -> Maybe a\nfind p = foldl go Nothing\n where\n go Nothing x | p x = Just x\n go r _ = r\n\n-- | Try to find an element in a data structure which satisfies a predicate mapping.\nfindMap :: forall a b f. Foldable f => (a -> Maybe b) -> f a -> Maybe b\nfindMap p = foldl go Nothing\n where\n go Nothing x = p x\n go r _ = r\n\n-- | Find the largest element of a structure, according to its `Ord` instance.\nmaximum :: forall a f. Ord a => Foldable f => f a -> Maybe a\nmaximum = maximumBy compare\n\n-- | Find the largest element of a structure, according to a given comparison\n-- | function. The comparison function should represent a total ordering (see\n-- | the `Ord` type class laws); if it does not, the behaviour is undefined.\nmaximumBy :: forall a f. Foldable f => (a -> a -> Ordering) -> f a -> Maybe a\nmaximumBy cmp = foldl max' Nothing\n where\n max' Nothing x = Just x\n max' (Just x) y = Just (if cmp x y == GT then x else y)\n\n-- | Find the smallest element of a structure, according to its `Ord` instance.\nminimum :: forall a f. Ord a => Foldable f => f a -> Maybe a\nminimum = minimumBy compare\n\n-- | Find the smallest element of a structure, according to a given comparison\n-- | function. The comparison function should represent a total ordering (see\n-- | the `Ord` type class laws); if it does not, the behaviour is undefined.\nminimumBy :: forall a f. Foldable f => (a -> a -> Ordering) -> f a -> Maybe a\nminimumBy cmp = foldl min' Nothing\n where\n min' Nothing x = Just x\n min' (Just x) y = Just (if cmp x y == LT then x else y)\n\n-- | Test whether the structure is empty.\n-- | Optimized for structures that are similar to cons-lists, because there\n-- | is no general way to do better.\nnull :: forall a f. Foldable f => f a -> Boolean\nnull = foldr (\\_ _ -> false) true\n\n-- | Returns the size/length of a finite structure.\n-- | Optimized for structures that are similar to cons-lists, because there\n-- | is no general way to do better.\nlength :: forall a b f. Foldable f => Semiring b => f a -> b\nlength = foldl (\\c _ -> add one c) zero\n\n-- | Lookup a value in a data structure of `Tuple`s, generalizing association lists.\nlookup :: forall a b f. Foldable f => Eq a => a -> f (Tuple a b) -> Maybe b\nlookup a = unwrap <<< foldMap \\(Tuple a' b) -> First (if a == a' then Just b else Nothing)\n", "// module Data.Function.Uncurried\n\nexport const mkFn0 = function (fn) {\n return function () {\n return fn();\n };\n};\n\nexport const mkFn2 = function (fn) {\n /* jshint maxparams: 2 */\n return function (a, b) {\n return fn(a)(b);\n };\n};\n\nexport const mkFn3 = function (fn) {\n /* jshint maxparams: 3 */\n return function (a, b, c) {\n return fn(a)(b)(c);\n };\n};\n\nexport const mkFn4 = function (fn) {\n /* jshint maxparams: 4 */\n return function (a, b, c, d) {\n return fn(a)(b)(c)(d);\n };\n};\n\nexport const mkFn5 = function (fn) {\n /* jshint maxparams: 5 */\n return function (a, b, c, d, e) {\n return fn(a)(b)(c)(d)(e);\n };\n};\n\nexport const mkFn6 = function (fn) {\n /* jshint maxparams: 6 */\n return function (a, b, c, d, e, f) {\n return fn(a)(b)(c)(d)(e)(f);\n };\n};\n\nexport const mkFn7 = function (fn) {\n /* jshint maxparams: 7 */\n return function (a, b, c, d, e, f, g) {\n return fn(a)(b)(c)(d)(e)(f)(g);\n };\n};\n\nexport const mkFn8 = function (fn) {\n /* jshint maxparams: 8 */\n return function (a, b, c, d, e, f, g, h) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h);\n };\n};\n\nexport const mkFn9 = function (fn) {\n /* jshint maxparams: 9 */\n return function (a, b, c, d, e, f, g, h, i) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)(i);\n };\n};\n\nexport const mkFn10 = function (fn) {\n /* jshint maxparams: 10 */\n return function (a, b, c, d, e, f, g, h, i, j) {\n return fn(a)(b)(c)(d)(e)(f)(g)(h)(i)(j);\n };\n};\n\nexport const runFn0 = function (fn) {\n return fn();\n};\n\nexport const runFn2 = function (fn) {\n return function (a) {\n return function (b) {\n return fn(a, b);\n };\n };\n};\n\nexport const runFn3 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return fn(a, b, c);\n };\n };\n };\n};\n\nexport const runFn4 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return fn(a, b, c, d);\n };\n };\n };\n };\n};\n\nexport const runFn5 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return fn(a, b, c, d, e);\n };\n };\n };\n };\n };\n};\n\nexport const runFn6 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return fn(a, b, c, d, e, f);\n };\n };\n };\n };\n };\n };\n};\n\nexport const runFn7 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return function (g) {\n return fn(a, b, c, d, e, f, g);\n };\n };\n };\n };\n };\n };\n };\n};\n\nexport const runFn8 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return function (g) {\n return function (h) {\n return fn(a, b, c, d, e, f, g, h);\n };\n };\n };\n };\n };\n };\n };\n };\n};\n\nexport const runFn9 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return function (g) {\n return function (h) {\n return function (i) {\n return fn(a, b, c, d, e, f, g, h, i);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};\n\nexport const runFn10 = function (fn) {\n return function (a) {\n return function (b) {\n return function (c) {\n return function (d) {\n return function (e) {\n return function (f) {\n return function (g) {\n return function (h) {\n return function (i) {\n return function (j) {\n return fn(a, b, c, d, e, f, g, h, i, j);\n };\n };\n };\n };\n };\n };\n };\n };\n };\n };\n};\n", "// jshint maxparams: 3\n\nexport const traverseArrayImpl = (function () {\n function array1(a) {\n return [a];\n }\n\n function array2(a) {\n return function (b) {\n return [a, b];\n };\n }\n\n function array3(a) {\n return function (b) {\n return function (c) {\n return [a, b, c];\n };\n };\n }\n\n function concat2(xs) {\n return function (ys) {\n return xs.concat(ys);\n };\n }\n\n return function (apply) {\n return function (map) {\n return function (pure) {\n return function (f) {\n return function (array) {\n function go(bot, top) {\n switch (top - bot) {\n case 0: return pure([]);\n case 1: return map(array1)(f(array[bot]));\n case 2: return apply(map(array2)(f(array[bot])))(f(array[bot + 1]));\n case 3: return apply(apply(map(array3)(f(array[bot])))(f(array[bot + 1])))(f(array[bot + 2]));\n default:\n // This slightly tricky pivot selection aims to produce two\n // even-length partitions where possible.\n var pivot = bot + Math.floor((top - bot) / 4) * 2;\n return apply(map(concat2)(go(bot, pivot)))(go(pivot, top));\n }\n }\n return go(0, array.length);\n };\n };\n };\n };\n };\n})();\n", "module Data.Traversable\n ( class Traversable, traverse, sequence\n , traverseDefault, sequenceDefault\n , for\n , scanl\n , scanr\n , mapAccumL\n , mapAccumR\n , module Data.Foldable\n , module Data.Traversable.Accum\n ) where\n\nimport Prelude\n\nimport Control.Apply (lift2)\nimport Data.Const (Const(..))\nimport Data.Either (Either(..))\nimport Data.Foldable (class Foldable, all, and, any, elem, find, fold, foldMap, foldMapDefaultL, foldMapDefaultR, foldl, foldlDefault, foldr, foldrDefault, for_, intercalate, maximum, maximumBy, minimum, minimumBy, notElem, oneOf, or, sequence_, sum, traverse_)\nimport Data.Functor.App (App(..))\nimport Data.Functor.Compose (Compose(..))\nimport Data.Functor.Coproduct (Coproduct(..), coproduct)\nimport Data.Functor.Product (Product(..), product)\nimport Data.Identity (Identity(..))\nimport Data.Maybe (Maybe(..))\nimport Data.Maybe.First (First(..))\nimport Data.Maybe.Last (Last(..))\nimport Data.Monoid.Additive (Additive(..))\nimport Data.Monoid.Conj (Conj(..))\nimport Data.Monoid.Disj (Disj(..))\nimport Data.Monoid.Dual (Dual(..))\nimport Data.Monoid.Multiplicative (Multiplicative(..))\nimport Data.Traversable.Accum (Accum)\nimport Data.Traversable.Accum.Internal (StateL(..), StateR(..), stateL, stateR)\nimport Data.Tuple (Tuple(..))\n\n-- | `Traversable` represents data structures which can be _traversed_,\n-- | accumulating results and effects in some `Applicative` functor.\n-- |\n-- | - `traverse` runs an action for every element in a data structure,\n-- | and accumulates the results.\n-- | - `sequence` runs the actions _contained_ in a data structure,\n-- | and accumulates the results.\n-- |\n-- | ```purescript\n-- | import Data.Traversable\n-- | import Data.Maybe\n-- | import Data.Int (fromNumber)\n-- |\n-- | sequence [Just 1, Just 2, Just 3] == Just [1,2,3]\n-- | sequence [Nothing, Just 2, Just 3] == Nothing\n-- |\n-- | traverse fromNumber [1.0, 2.0, 3.0] == Just [1,2,3]\n-- | traverse fromNumber [1.5, 2.0, 3.0] == Nothing\n-- |\n-- | traverse logShow [1,2,3]\n-- | -- prints:\n-- | 1\n-- | 2\n-- | 3\n-- |\n-- | traverse (\\x -> [x, 0]) [1,2,3] == [[1,2,3],[1,2,0],[1,0,3],[1,0,0],[0,2,3],[0,2,0],[0,0,3],[0,0,0]]\n-- | ```\n-- |\n-- | The `traverse` and `sequence` functions should be compatible in the\n-- | following sense:\n-- |\n-- | - `traverse f xs = sequence (f <$> xs)`\n-- | - `sequence = traverse identity`\n-- |\n-- | `Traversable` instances should also be compatible with the corresponding\n-- | `Foldable` instances, in the following sense:\n-- |\n-- | - `foldMap f = runConst <<< traverse (Const <<< f)`\n-- |\n-- | Default implementations are provided by the following functions:\n-- |\n-- | - `traverseDefault`\n-- | - `sequenceDefault`\nclass (Functor t, Foldable t) <= Traversable t where\n traverse :: forall a b m. Applicative m => (a -> m b) -> t a -> m (t b)\n sequence :: forall a m. Applicative m => t (m a) -> m (t a)\n\n-- | A default implementation of `traverse` using `sequence` and `map`.\ntraverseDefault\n :: forall t a b m\n . Traversable t\n => Applicative m\n => (a -> m b)\n -> t a\n -> m (t b)\ntraverseDefault f ta = sequence (f <$> ta)\n\n-- | A default implementation of `sequence` using `traverse`.\nsequenceDefault\n :: forall t a m\n . Traversable t\n => Applicative m\n => t (m a)\n -> m (t a)\nsequenceDefault = traverse identity\n\ninstance traversableArray :: Traversable Array where\n traverse = traverseArrayImpl apply map pure\n sequence = sequenceDefault\n\nforeign import traverseArrayImpl\n :: forall m a b\n . (forall x y. m (x -> y) -> m x -> m y)\n -> (forall x y. (x -> y) -> m x -> m y)\n -> (forall x. x -> m x)\n -> (a -> m b)\n -> Array a\n -> m (Array b)\n\ninstance traversableMaybe :: Traversable Maybe where\n traverse _ Nothing = pure Nothing\n traverse f (Just x) = Just <$> f x\n sequence Nothing = pure Nothing\n sequence (Just x) = Just <$> x\n\ninstance traversableFirst :: Traversable First where\n traverse f (First x) = First <$> traverse f x\n sequence (First x) = First <$> sequence x\n\ninstance traversableLast :: Traversable Last where\n traverse f (Last x) = Last <$> traverse f x\n sequence (Last x) = Last <$> sequence x\n\ninstance traversableAdditive :: Traversable Additive where\n traverse f (Additive x) = Additive <$> f x\n sequence (Additive x) = Additive <$> x\n\ninstance traversableDual :: Traversable Dual where\n traverse f (Dual x) = Dual <$> f x\n sequence (Dual x) = Dual <$> x\n\ninstance traversableConj :: Traversable Conj where\n traverse f (Conj x) = Conj <$> f x\n sequence (Conj x) = Conj <$> x\n\ninstance traversableDisj :: Traversable Disj where\n traverse f (Disj x) = Disj <$> f x\n sequence (Disj x) = Disj <$> x\n\ninstance traversableMultiplicative :: Traversable Multiplicative where\n traverse f (Multiplicative x) = Multiplicative <$> f x\n sequence (Multiplicative x) = Multiplicative <$> x\n\ninstance traversableEither :: Traversable (Either a) where\n traverse _ (Left x) = pure (Left x)\n traverse f (Right x) = Right <$> f x\n sequence (Left x) = pure (Left x)\n sequence (Right x) = Right <$> x\n\ninstance traversableTuple :: Traversable (Tuple a) where\n traverse f (Tuple x y) = Tuple x <$> f y\n sequence (Tuple x y) = Tuple x <$> y\n\ninstance traversableIdentity :: Traversable Identity where\n traverse f (Identity x) = Identity <$> f x\n sequence (Identity x) = Identity <$> x\n\ninstance traversableConst :: Traversable (Const a) where\n traverse _ (Const x) = pure (Const x)\n sequence (Const x) = pure (Const x)\n\ninstance traversableProduct :: (Traversable f, Traversable g) => Traversable (Product f g) where\n traverse f (Product (Tuple fa ga)) = lift2 product (traverse f fa) (traverse f ga)\n sequence (Product (Tuple fa ga)) = lift2 product (sequence fa) (sequence ga)\n\ninstance traversableCoproduct :: (Traversable f, Traversable g) => Traversable (Coproduct f g) where\n traverse f = coproduct\n (map (Coproduct <<< Left) <<< traverse f)\n (map (Coproduct <<< Right) <<< traverse f)\n sequence = coproduct\n (map (Coproduct <<< Left) <<< sequence)\n (map (Coproduct <<< Right) <<< sequence)\n\ninstance traversableCompose :: (Traversable f, Traversable g) => Traversable (Compose f g) where\n traverse f (Compose fga) = map Compose $ traverse (traverse f) fga\n sequence = traverse identity\n\ninstance traversableApp :: Traversable f => Traversable (App f) where\n traverse f (App x) = App <$> traverse f x\n sequence (App x) = App <$> sequence x\n\n-- | A version of `traverse` with its arguments flipped.\n-- |\n-- |\n-- | This can be useful when running an action written using do notation\n-- | for every element in a data structure:\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | for [1, 2, 3] \\n -> do\n-- | print n\n-- | return (n * n)\n-- | ```\nfor\n :: forall a b m t\n . Applicative m\n => Traversable t\n => t a\n -> (a -> m b)\n -> m (t b)\nfor x f = traverse f x\n\n-- | Fold a data structure from the left, keeping all intermediate results\n-- | instead of only the final result. Note that the initial value does not\n-- | appear in the result (unlike Haskell's `Prelude.scanl`).\n-- |\n-- | ```purescript\n-- | scanl (+) 0 [1,2,3] = [1,3,6]\n-- | scanl (-) 10 [1,2,3] = [9,7,4]\n-- | ```\nscanl :: forall a b f. Traversable f => (b -> a -> b) -> b -> f a -> f b\nscanl f b0 xs = (mapAccumL (\\b a -> let b' = f b a in { accum: b', value: b' }) b0 xs).value\n\n-- | Fold a data structure from the left, keeping all intermediate results\n-- | instead of only the final result.\n-- |\n-- | Unlike `scanl`, `mapAccumL` allows the type of accumulator to differ\n-- | from the element type of the final data structure.\nmapAccumL\n :: forall a b s f\n . Traversable f\n => (s -> a -> Accum s b)\n -> s\n -> f a\n -> Accum s (f b)\nmapAccumL f s0 xs = stateL (traverse (\\a -> StateL \\s -> f s a) xs) s0\n\n-- | Fold a data structure from the right, keeping all intermediate results\n-- | instead of only the final result. Note that the initial value does not\n-- | appear in the result (unlike Haskell's `Prelude.scanr`).\n-- |\n-- | ```purescript\n-- | scanr (+) 0 [1,2,3] = [6,5,3]\n-- | scanr (flip (-)) 10 [1,2,3] = [4,5,7]\n-- | ```\nscanr :: forall a b f. Traversable f => (a -> b -> b) -> b -> f a -> f b\nscanr f b0 xs = (mapAccumR (\\b a -> let b' = f a b in { accum: b', value: b' }) b0 xs).value\n\n-- | Fold a data structure from the right, keeping all intermediate results\n-- | instead of only the final result.\n-- |\n-- | Unlike `scanr`, `mapAccumR` allows the type of accumulator to differ\n-- | from the element type of the final data structure.\nmapAccumR\n :: forall a b s f\n . Traversable f\n => (s -> a -> Accum s b)\n -> s\n -> f a\n -> Accum s (f b)\nmapAccumR f s0 xs = stateR (traverse (\\a -> StateR \\s -> f s a) xs) s0\n", "export const unfoldrArrayImpl = function (isNothing) {\n return function (fromJust) {\n return function (fst) {\n return function (snd) {\n return function (f) {\n return function (b) {\n var result = [];\n var value = b;\n while (true) { // eslint-disable-line no-constant-condition\n var maybe = f(value);\n if (isNothing(maybe)) return result;\n var tuple = fromJust(maybe);\n result.push(fst(tuple));\n value = snd(tuple);\n }\n };\n };\n };\n };\n };\n};\n", "export const unfoldr1ArrayImpl = function (isNothing) {\n return function (fromJust) {\n return function (fst) {\n return function (snd) {\n return function (f) {\n return function (b) {\n var result = [];\n var value = b;\n while (true) { // eslint-disable-line no-constant-condition\n var tuple = f(value);\n result.push(fst(tuple));\n var maybe = snd(tuple);\n if (isNothing(maybe)) return result;\n value = fromJust(maybe);\n }\n };\n };\n };\n };\n };\n};\n", "module Data.Unfoldable1\n ( class Unfoldable1, unfoldr1\n , replicate1\n , replicate1A\n , singleton\n , range\n , iterateN\n ) where\n\nimport Prelude\n\nimport Data.Maybe (Maybe(..), fromJust, isNothing)\nimport Data.Semigroup.Traversable (class Traversable1, sequence1)\nimport Data.Tuple (Tuple(..), fst, snd)\nimport Partial.Unsafe (unsafePartial)\n\n-- | This class identifies data structures which can be _unfolded_.\n-- |\n-- | The generating function `f` in `unfoldr1 f` corresponds to the `uncons`\n-- | operation of a non-empty list or array; it always returns a value, and\n-- | then optionally a value to continue unfolding from.\n-- |\n-- | Note that, in order to provide an `Unfoldable1 t` instance, `t` need not\n-- | be a type which is guaranteed to be non-empty. For example, the fact that\n-- | lists can be empty does not prevent us from providing an\n-- | `Unfoldable1 List` instance. However, the result of `unfoldr1` should\n-- | always be non-empty.\n-- |\n-- | Every type which has an `Unfoldable` instance can be given an\n-- | `Unfoldable1` instance (and, in fact, is required to, because\n-- | `Unfoldable1` is a superclass of `Unfoldable`). However, there are types\n-- | which have `Unfoldable1` instances but cannot have `Unfoldable` instances.\n-- | In particular, types which are guaranteed to be non-empty, such as\n-- | `NonEmptyList`, cannot be given `Unfoldable` instances.\n-- |\n-- | The utility of this class, then, is that it provides an `Unfoldable`-like\n-- | interface while still permitting instances for guaranteed-non-empty types\n-- | like `NonEmptyList`.\nclass Unfoldable1 t where\n unfoldr1 :: forall a b. (b -> Tuple a (Maybe b)) -> b -> t a\n\ninstance unfoldable1Array :: Unfoldable1 Array where\n unfoldr1 = unfoldr1ArrayImpl isNothing (unsafePartial fromJust) fst snd\n\ninstance unfoldable1Maybe :: Unfoldable1 Maybe where\n unfoldr1 f b = Just (fst (f b))\n\nforeign import unfoldr1ArrayImpl\n :: forall a b\n . (forall x. Maybe x -> Boolean)\n -> (forall x. Maybe x -> x)\n -> (forall x y. Tuple x y -> x)\n -> (forall x y. Tuple x y -> y)\n -> (b -> Tuple a (Maybe b))\n -> b\n -> Array a\n\n-- | Replicate a value `n` times. At least one value will be produced, so values\n-- | `n` less than 1 will be treated as 1.\n-- |\n-- | ``` purescript\n-- | replicate1 2 \"foo\" == (NEL.cons \"foo\" (NEL.singleton \"foo\") :: NEL.NonEmptyList String)\n-- | replicate1 0 \"foo\" == (NEL.singleton \"foo\" :: NEL.NonEmptyList String)\n-- | ```\nreplicate1 :: forall f a. Unfoldable1 f => Int -> a -> f a\nreplicate1 n v = unfoldr1 step (n - 1)\n where\n step :: Int -> Tuple a (Maybe Int)\n step i\n | i <= 0 = Tuple v Nothing\n | otherwise = Tuple v (Just (i - 1))\n\n-- | Perform an `Apply` action `n` times (at least once, so values `n` less\n-- | than 1 will be treated as 1), and accumulate the results.\n-- |\n-- | ``` purescript\n-- | > replicate1A 2 (randomInt 1 10) :: Effect (NEL.NonEmptyList Int)\n-- | (NonEmptyList (NonEmpty 8 (2 : Nil)))\n-- | > replicate1A 0 (randomInt 1 10) :: Effect (NEL.NonEmptyList Int)\n-- | (NonEmptyList (NonEmpty 4 Nil))\n-- | ```\nreplicate1A\n :: forall m f a\n . Apply m\n => Unfoldable1 f\n => Traversable1 f\n => Int\n -> m a\n -> m (f a)\nreplicate1A n m = sequence1 (replicate1 n m)\n\n-- | Contain a single value. For example:\n-- |\n-- | ``` purescript\n-- | singleton \"foo\" == (NEL.singleton \"foo\" :: NEL.NonEmptyList String)\n-- | ```\nsingleton :: forall f a. Unfoldable1 f => a -> f a\nsingleton = replicate1 1\n\n-- | Create an `Unfoldable1` containing a range of values, including both\n-- | endpoints.\n-- |\n-- | ``` purescript\n-- | range 0 0 == (NEL.singleton 0 :: NEL.NonEmptyList Int)\n-- | range 1 2 == (NEL.cons 1 (NEL.singleton 2) :: NEL.NonEmptyList Int)\n-- | range 2 0 == (NEL.cons 2 (NEL.cons 1 (NEL.singleton 0)) :: NEL.NonEmptyList Int)\n-- | ```\nrange :: forall f. Unfoldable1 f => Int -> Int -> f Int\nrange start end =\n let delta = if end >= start then 1 else -1 in unfoldr1 (go delta) start\n where\n go delta i =\n let i' = i + delta\n in Tuple i (if i == end then Nothing else Just i')\n\n-- | Create an `Unfoldable1` by repeated application of a function to a seed value.\n-- | For example:\n-- |\n-- | ``` purescript\n-- | (iterateN 5 (_ + 1) 0 :: Array Int) == [0, 1, 2, 3, 4]\n-- | (iterateN 5 (_ + 1) 0 :: NonEmptyArray Int) == NonEmptyArray [0, 1, 2, 3, 4]\n-- |\n-- | (iterateN 0 (_ + 1) 0 :: Array Int) == [0]\n-- | (iterateN 0 (_ + 1) 0 :: NonEmptyArray Int) == NonEmptyArray [0]\n-- | ```\niterateN :: forall f a. Unfoldable1 f => Int -> (a -> a) -> a -> f a\niterateN n f s = unfoldr1 go $ Tuple s (n - 1)\n where\n go (Tuple x n') = Tuple x\n if n' > 0 then Just $ Tuple (f x) $ n' - 1\n else Nothing\n", "-- | This module provides a type class for _unfoldable functors_, i.e.\n-- | functors which support an `unfoldr` operation.\n-- |\n-- | This allows us to unify various operations on arrays, lists,\n-- | sequences, etc.\n\nmodule Data.Unfoldable\n ( class Unfoldable, unfoldr\n , replicate\n , replicateA\n , none\n , fromMaybe\n , module Data.Unfoldable1\n ) where\n\nimport Prelude\n\nimport Data.Maybe (Maybe(..), isNothing, fromJust)\nimport Data.Traversable (class Traversable, sequence)\nimport Data.Tuple (Tuple(..), fst, snd)\nimport Data.Unfoldable1 (class Unfoldable1, unfoldr1, singleton, range, iterateN, replicate1, replicate1A)\nimport Partial.Unsafe (unsafePartial)\n\n-- | This class identifies (possibly empty) data structures which can be\n-- | _unfolded_.\n-- |\n-- | The generating function `f` in `unfoldr f` is understood as follows:\n-- |\n-- | - If `f b` is `Nothing`, then `unfoldr f b` should be empty.\n-- | - If `f b` is `Just (Tuple a b1)`, then `unfoldr f b` should consist of `a`\n-- | appended to the result of `unfoldr f b1`.\n-- |\n-- | Note that it is not possible to give `Unfoldable` instances to types which\n-- | represent structures which are guaranteed to be non-empty, such as\n-- | `NonEmptyArray`: consider what `unfoldr (const Nothing)` should produce.\n-- | Structures which are guaranteed to be non-empty can instead be given\n-- | `Unfoldable1` instances.\nclass Unfoldable1 t <= Unfoldable t where\n unfoldr :: forall a b. (b -> Maybe (Tuple a b)) -> b -> t a\n\ninstance unfoldableArray :: Unfoldable Array where\n unfoldr = unfoldrArrayImpl isNothing (unsafePartial fromJust) fst snd\n\ninstance unfoldableMaybe :: Unfoldable Maybe where\n unfoldr f b = fst <$> f b\n\nforeign import unfoldrArrayImpl\n :: forall a b\n . (forall x. Maybe x -> Boolean)\n -> (forall x. Maybe x -> x)\n -> (forall x y. Tuple x y -> x)\n -> (forall x y. Tuple x y -> y)\n -> (b -> Maybe (Tuple a b))\n -> b\n -> Array a\n\n-- | Replicate a value some natural number of times.\n-- | For example:\n-- |\n-- | ``` purescript\n-- | replicate 2 \"foo\" == ([\"foo\", \"foo\"] :: Array String)\n-- | ```\nreplicate :: forall f a. Unfoldable f => Int -> a -> f a\nreplicate n v = unfoldr step n\n where\n step :: Int -> Maybe (Tuple a Int)\n step i =\n if i <= 0 then Nothing\n else Just (Tuple v (i - 1))\n\n-- | Perform an Applicative action `n` times, and accumulate all the results.\n-- |\n-- | ``` purescript\n-- | > replicateA 5 (randomInt 1 10) :: Effect (Array Int)\n-- | [1,3,2,7,5]\n-- | ```\nreplicateA\n :: forall m f a\n . Applicative m\n => Unfoldable f\n => Traversable f\n => Int\n -> m a\n -> m (f a)\nreplicateA n m = sequence (replicate n m)\n\n-- | The container with no elements - unfolded with zero iterations.\n-- | For example:\n-- |\n-- | ``` purescript\n-- | none == ([] :: Array Unit)\n-- | ```\nnone :: forall f a. Unfoldable f => f a\nnone = unfoldr (const Nothing) unit\n\n-- | Convert a Maybe to any Unfoldable, such as lists or arrays.\n-- |\n-- | ``` purescript\n-- | fromMaybe (Nothing :: Maybe Int) == []\n-- | fromMaybe (Just 1) == [1]\n-- | ```\nfromMaybe :: forall f a. Unfoldable f => Maybe a -> f a\nfromMaybe = unfoldr (\\b -> flip Tuple Nothing <$> b)\n", "-- | Helper functions for working with immutable Javascript arrays.\n-- |\n-- | _Note_: Depending on your use-case, you may prefer to use `Data.List` or\n-- | `Data.Sequence` instead, which might give better performance for certain\n-- | use cases. This module is useful when integrating with JavaScript libraries\n-- | which use arrays, but immutable arrays are not a practical data structure\n-- | for many use cases due to their poor asymptotics.\n-- |\n-- | In addition to the functions in this module, Arrays have a number of\n-- | useful instances:\n-- |\n-- | * `Functor`, which provides `map :: forall a b. (a -> b) -> Array a ->\n-- | Array b`\n-- | * `Apply`, which provides `(<*>) :: forall a b. Array (a -> b) -> Array a\n-- | -> Array b`. This function works a bit like a Cartesian product; the\n-- | result array is constructed by applying each function in the first\n-- | array to each value in the second, so that the result array ends up with\n-- | a length equal to the product of the two arguments' lengths.\n-- | * `Bind`, which provides `(>>=) :: forall a b. (a -> Array b) -> Array a\n-- | -> Array b` (this is the same as `concatMap`).\n-- | * `Semigroup`, which provides `(<>) :: forall a. Array a -> Array a ->\n-- | Array a`, for concatenating arrays.\n-- | * `Foldable`, which provides a slew of functions for *folding* (also known\n-- | as *reducing*) arrays down to one value. For example,\n-- | `Data.Foldable.or` tests whether an array of `Boolean` values contains\n-- | at least one `true` value.\n-- | * `Traversable`, which provides the PureScript version of a for-loop,\n-- | allowing you to STAI.iterate over an array and accumulate effects.\n-- |\nmodule Data.Array\n ( fromFoldable\n , toUnfoldable\n , singleton\n , (..)\n , range\n , replicate\n , some\n , many\n\n , null\n , length\n\n , (:)\n , cons\n , snoc\n , insert\n , insertBy\n\n , head\n , last\n , tail\n , init\n , uncons\n , unsnoc\n\n , (!!)\n , index\n , elem\n , notElem\n , elemIndex\n , elemLastIndex\n , find\n , findMap\n , findIndex\n , findLastIndex\n , insertAt\n , deleteAt\n , updateAt\n , updateAtIndices\n , modifyAt\n , modifyAtIndices\n , alterAt\n\n , intersperse\n , reverse\n , concat\n , concatMap\n , filter\n , partition\n , splitAt\n , filterA\n , mapMaybe\n , catMaybes\n , mapWithIndex\n , foldl\n , foldr\n , foldMap\n , fold\n , intercalate\n , transpose\n , scanl\n , scanr\n\n , sort\n , sortBy\n , sortWith\n , slice\n , take\n , takeEnd\n , takeWhile\n , drop\n , dropEnd\n , dropWhile\n , span\n , group\n , groupAll\n , groupBy\n , groupAllBy\n\n , nub\n , nubEq\n , nubBy\n , nubByEq\n , union\n , unionBy\n , delete\n , deleteBy\n\n , (\\\\)\n , difference\n , intersect\n , intersectBy\n\n , zipWith\n , zipWithA\n , zip\n , unzip\n\n , any\n , all\n\n , foldM\n , foldRecM\n\n , unsafeIndex\n ) where\n\nimport Prelude\n\nimport Control.Alt ((<|>))\nimport Control.Alternative (class Alternative)\nimport Control.Lazy (class Lazy, defer)\nimport Control.Monad.Rec.Class (class MonadRec, Step(..), tailRecM2)\nimport Control.Monad.ST as ST\nimport Data.Array.NonEmpty.Internal (NonEmptyArray(..))\nimport Data.Array.ST as STA\nimport Data.Array.ST.Iterator as STAI\nimport Data.Foldable (class Foldable, traverse_)\nimport Data.Foldable as F\nimport Data.Function.Uncurried (Fn2, Fn3, Fn4, Fn5, runFn2, runFn3, runFn4, runFn5)\nimport Data.FunctorWithIndex as FWI\nimport Data.Maybe (Maybe(..), maybe, isJust, fromJust, isNothing)\nimport Data.Traversable (sequence, traverse)\nimport Data.Tuple (Tuple(..), fst, snd)\nimport Data.Unfoldable (class Unfoldable, unfoldr)\nimport Partial.Unsafe (unsafePartial)\n\n-- | Convert an `Array` into an `Unfoldable` structure.\ntoUnfoldable :: forall f. Unfoldable f => Array ~> f\ntoUnfoldable xs = unfoldr f 0\n where\n len = length xs\n f i\n | i < len = Just (Tuple (unsafePartial (unsafeIndex xs i)) (i + 1))\n | otherwise = Nothing\n\n-- | Convert a `Foldable` structure into an `Array`.\n-- |\n-- | ```purescript\n-- | fromFoldable (Just 1) = [1]\n-- | fromFoldable (Nothing) = []\n-- | ```\n-- |\nfromFoldable :: forall f. Foldable f => f ~> Array\nfromFoldable = runFn2 fromFoldableImpl F.foldr\n\nforeign import fromFoldableImpl\n :: forall f a\n . Fn2 (forall b. (a -> b -> b) -> b -> f a -> b) (f a) (Array a)\n\n-- | Create an array of one element\n-- | ```purescript\n-- | singleton 2 = [2]\n-- | ```\nsingleton :: forall a. a -> Array a\nsingleton a = [ a ]\n\n-- | Create an array containing a range of integers, including both endpoints.\n-- | ```purescript\n-- | range 2 5 = [2, 3, 4, 5]\n-- | ```\nrange :: Int -> Int -> Array Int\nrange = runFn2 rangeImpl\n\nforeign import rangeImpl :: Fn2 Int Int (Array Int)\n\n-- | Create an array containing a value repeated the specified number of times.\n-- | ```purescript\n-- | replicate 2 \"Hi\" = [\"Hi\", \"Hi\"]\n-- | ```\nreplicate :: forall a. Int -> a -> Array a\nreplicate = runFn2 replicateImpl\n\nforeign import replicateImpl :: forall a. Fn2 Int a (Array a)\n\n-- | An infix synonym for `range`.\n-- | ```purescript\n-- | 2 .. 5 = [2, 3, 4, 5]\n-- | ```\ninfix 8 range as ..\n\n-- | Attempt a computation multiple times, requiring at least one success.\n-- |\n-- | The `Lazy` constraint is used to generate the result lazily, to ensure\n-- | termination.\nsome :: forall f a. Alternative f => Lazy (f (Array a)) => f a -> f (Array a)\nsome v = (:) <$> v <*> defer (\\_ -> many v)\n\n-- | Attempt a computation multiple times, returning as many successful results\n-- | as possible (possibly zero).\n-- |\n-- | The `Lazy` constraint is used to generate the result lazily, to ensure\n-- | termination.\nmany :: forall f a. Alternative f => Lazy (f (Array a)) => f a -> f (Array a)\nmany v = some v <|> pure []\n\n--------------------------------------------------------------------------------\n-- Array size ------------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Test whether an array is empty.\n-- | ```purescript\n-- | null [] = true\n-- | null [1, 2] = false\n-- | ```\nnull :: forall a. Array a -> Boolean\nnull xs = length xs == 0\n\n-- | Get the number of elements in an array.\n-- | ```purescript\n-- | length [\"Hello\", \"World\"] = 2\n-- | ```\nforeign import length :: forall a. Array a -> Int\n\n--------------------------------------------------------------------------------\n-- Extending arrays ------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Attaches an element to the front of an array, creating a new array.\n-- |\n-- | ```purescript\n-- | cons 1 [2, 3, 4] = [1, 2, 3, 4]\n-- | ```\n-- |\n-- | Note, the running time of this function is `O(n)`.\ncons :: forall a. a -> Array a -> Array a\ncons x xs = [ x ] <> xs\n\n-- | An infix alias for `cons`.\n-- |\n-- | ```purescript\n-- | 1 : [2, 3, 4] = [1, 2, 3, 4]\n-- | ```\n-- |\n-- | Note, the running time of this function is `O(n)`.\ninfixr 6 cons as :\n\n-- | Append an element to the end of an array, creating a new array.\n-- |\n-- | ```purescript\n-- | snoc [1, 2, 3] 4 = [1, 2, 3, 4]\n-- | ```\n-- |\nsnoc :: forall a. Array a -> a -> Array a\nsnoc xs x = ST.run (STA.withArray (STA.push x) xs)\n\n-- | Insert an element into a sorted array.\n-- |\n-- | ```purescript\n-- | insert 10 [1, 2, 20, 21] = [1, 2, 10, 20, 21]\n-- | ```\n-- |\ninsert :: forall a. Ord a => a -> Array a -> Array a\ninsert = insertBy compare\n\n-- | Insert an element into a sorted array, using the specified function to\n-- | determine the ordering of elements.\n-- |\n-- | ```purescript\n-- | invertCompare a b = invert $ compare a b\n-- |\n-- | insertBy invertCompare 10 [21, 20, 2, 1] = [21, 20, 10, 2, 1]\n-- | ```\n-- |\ninsertBy :: forall a. (a -> a -> Ordering) -> a -> Array a -> Array a\ninsertBy cmp x ys =\n let\n i = maybe 0 (_ + 1) (findLastIndex (\\y -> cmp x y == GT) ys)\n in\n unsafePartial (fromJust (insertAt i x ys))\n\n--------------------------------------------------------------------------------\n-- Non-indexed reads -----------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Get the first element in an array, or `Nothing` if the array is empty\n-- |\n-- | Running time: `O(1)`.\n-- |\n-- | ```purescript\n-- | head [1, 2] = Just 1\n-- | head [] = Nothing\n-- | ```\n-- |\nhead :: forall a. Array a -> Maybe a\nhead xs = xs !! 0\n\n-- | Get the last element in an array, or `Nothing` if the array is empty\n-- |\n-- | Running time: `O(1)`.\n-- |\n-- | ```purescript\n-- | last [1, 2] = Just 2\n-- | last [] = Nothing\n-- | ```\n-- |\nlast :: forall a. Array a -> Maybe a\nlast xs = xs !! (length xs - 1)\n\n-- | Get all but the first element of an array, creating a new array, or\n-- | `Nothing` if the array is empty\n-- |\n-- | ```purescript\n-- | tail [1, 2, 3, 4] = Just [2, 3, 4]\n-- | tail [] = Nothing\n-- | ```\n-- |\n-- | Running time: `O(n)` where `n` is the length of the array\ntail :: forall a. Array a -> Maybe (Array a)\ntail = runFn3 unconsImpl (const Nothing) (\\_ xs -> Just xs)\n\n-- | Get all but the last element of an array, creating a new array, or\n-- | `Nothing` if the array is empty.\n-- |\n-- | ```purescript\n-- | init [1, 2, 3, 4] = Just [1, 2, 3]\n-- | init [] = Nothing\n-- | ```\n-- |\n-- | Running time: `O(n)` where `n` is the length of the array\ninit :: forall a. Array a -> Maybe (Array a)\ninit xs\n | null xs = Nothing\n | otherwise = Just (slice zero (length xs - one) xs)\n\n-- | Break an array into its first element and remaining elements.\n-- |\n-- | Using `uncons` provides a way of writing code that would use cons patterns\n-- | in Haskell or pre-PureScript 0.7:\n-- | ``` purescript\n-- | f (x : xs) = something\n-- | f [] = somethingElse\n-- | ```\n-- | Becomes:\n-- | ``` purescript\n-- | f arr = case uncons arr of\n-- | Just { head: x, tail: xs } -> something\n-- | Nothing -> somethingElse\n-- | ```\nuncons :: forall a. Array a -> Maybe { head :: a, tail :: Array a }\nuncons = runFn3 unconsImpl (const Nothing) \\x xs -> Just { head: x, tail: xs }\n\nforeign import unconsImpl\n :: forall a b\n . Fn3 (Unit -> b) (a -> Array a -> b) (Array a) b\n\n-- | Break an array into its last element and all preceding elements.\n-- |\n-- | ```purescript\n-- | unsnoc [1, 2, 3] = Just {init: [1, 2], last: 3}\n-- | unsnoc [] = Nothing\n-- | ```\n-- |\n-- | Running time: `O(n)` where `n` is the length of the array\nunsnoc :: forall a. Array a -> Maybe { init :: Array a, last :: a }\nunsnoc xs = { init: _, last: _ } <$> init xs <*> last xs\n\n--------------------------------------------------------------------------------\n-- Indexed operations ----------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | This function provides a safe way to read a value at a particular index\n-- | from an array.\n-- |\n-- | ```purescript\n-- | sentence = [\"Hello\", \"World\", \"!\"]\n-- |\n-- | index sentence 0 = Just \"Hello\"\n-- | index sentence 7 = Nothing\n-- | ```\n-- |\nindex :: forall a. Array a -> Int -> Maybe a\nindex = runFn4 indexImpl Just Nothing\n\nforeign import indexImpl\n :: forall a\n . Fn4 (forall r. r -> Maybe r) (forall r. Maybe r) (Array a) Int (Maybe a)\n\n-- | An infix version of `index`.\n-- |\n-- | ```purescript\n-- | sentence = [\"Hello\", \"World\", \"!\"]\n-- |\n-- | sentence !! 0 = Just \"Hello\"\n-- | sentence !! 7 = Nothing\n-- | ```\n-- |\ninfixl 8 index as !!\n\n-- | Returns true if the array has the given element.\nelem :: forall a. Eq a => a -> Array a -> Boolean\nelem a arr = isJust $ elemIndex a arr\n\n-- | Returns true if the array does not have the given element.\nnotElem :: forall a. Eq a => a -> Array a -> Boolean\nnotElem a arr = isNothing $ elemIndex a arr\n\n-- | Find the index of the first element equal to the specified element.\n-- |\n-- | ```purescript\n-- | elemIndex \"a\" [\"a\", \"b\", \"a\", \"c\"] = Just 0\n-- | elemIndex \"Earth\" [\"Hello\", \"World\", \"!\"] = Nothing\n-- | ```\n-- |\nelemIndex :: forall a. Eq a => a -> Array a -> Maybe Int\nelemIndex x = findIndex (_ == x)\n\n-- | Find the index of the last element equal to the specified element.\n-- |\n-- | ```purescript\n-- | elemLastIndex \"a\" [\"a\", \"b\", \"a\", \"c\"] = Just 2\n-- | elemLastIndex \"Earth\" [\"Hello\", \"World\", \"!\"] = Nothing\n-- | ```\n-- |\nelemLastIndex :: forall a. Eq a => a -> Array a -> Maybe Int\nelemLastIndex x = findLastIndex (_ == x)\n\n-- | Find the first element for which a predicate holds.\n-- |\n-- | ```purescript\n-- | find (contains $ Pattern \"b\") [\"a\", \"bb\", \"b\", \"d\"] = Just \"bb\"\n-- | find (contains $ Pattern \"x\") [\"a\", \"bb\", \"b\", \"d\"] = Nothing\n-- | ```\nfind :: forall a. (a -> Boolean) -> Array a -> Maybe a\nfind f xs = unsafePartial (unsafeIndex xs) <$> findIndex f xs\n\n-- | Find the first element in a data structure which satisfies\n-- | a predicate mapping.\nfindMap :: forall a b. (a -> Maybe b) -> Array a -> Maybe b\nfindMap = runFn4 findMapImpl Nothing isJust\n\nforeign import findMapImpl\n :: forall a b\n . Fn4\n (forall c. Maybe c)\n (forall c. Maybe c -> Boolean)\n (a -> Maybe b)\n (Array a)\n (Maybe b)\n\n-- | Find the first index for which a predicate holds.\n-- |\n-- | ```purescript\n-- | findIndex (contains $ Pattern \"b\") [\"a\", \"bb\", \"b\", \"d\"] = Just 1\n-- | findIndex (contains $ Pattern \"x\") [\"a\", \"bb\", \"b\", \"d\"] = Nothing\n-- | ```\n-- |\nfindIndex :: forall a. (a -> Boolean) -> Array a -> Maybe Int\nfindIndex = runFn4 findIndexImpl Just Nothing\n\nforeign import findIndexImpl\n :: forall a\n . Fn4\n (forall b. b -> Maybe b)\n (forall b. Maybe b)\n (a -> Boolean)\n (Array a)\n (Maybe Int)\n\n-- | Find the last index for which a predicate holds.\n-- |\n-- | ```purescript\n-- | findLastIndex (contains $ Pattern \"b\") [\"a\", \"bb\", \"b\", \"d\"] = Just 2\n-- | findLastIndex (contains $ Pattern \"x\") [\"a\", \"bb\", \"b\", \"d\"] = Nothing\n-- | ```\n-- |\nfindLastIndex :: forall a. (a -> Boolean) -> Array a -> Maybe Int\nfindLastIndex = runFn4 findLastIndexImpl Just Nothing\n\nforeign import findLastIndexImpl\n :: forall a\n . Fn4\n (forall b. b -> Maybe b)\n (forall b. Maybe b)\n (a -> Boolean)\n (Array a)\n (Maybe Int)\n\n-- | Insert an element at the specified index, creating a new array, or\n-- | returning `Nothing` if the index is out of bounds.\n-- |\n-- | ```purescript\n-- | insertAt 2 \"!\" [\"Hello\", \"World\"] = Just [\"Hello\", \"World\", \"!\"]\n-- | insertAt 10 \"!\" [\"Hello\"] = Nothing\n-- | ```\n-- |\ninsertAt :: forall a. Int -> a -> Array a -> Maybe (Array a)\ninsertAt = runFn5 _insertAt Just Nothing\n\nforeign import _insertAt\n :: forall a\n . Fn5\n (forall b. b -> Maybe b)\n (forall b. Maybe b)\n Int\n a\n (Array a)\n (Maybe (Array a))\n\n-- | Delete the element at the specified index, creating a new array, or\n-- | returning `Nothing` if the index is out of bounds.\n-- |\n-- | ```purescript\n-- | deleteAt 0 [\"Hello\", \"World\"] = Just [\"World\"]\n-- | deleteAt 10 [\"Hello\", \"World\"] = Nothing\n-- | ```\n-- |\ndeleteAt :: forall a. Int -> Array a -> Maybe (Array a)\ndeleteAt = runFn4 _deleteAt Just Nothing\n\nforeign import _deleteAt\n :: forall a\n . Fn4\n (forall b. b -> Maybe b)\n (forall b. Maybe b)\n Int\n (Array a)\n (Maybe (Array a))\n\n-- | Change the element at the specified index, creating a new array, or\n-- | returning `Nothing` if the index is out of bounds.\n-- |\n-- | ```purescript\n-- | updateAt 1 \"World\" [\"Hello\", \"Earth\"] = Just [\"Hello\", \"World\"]\n-- | updateAt 10 \"World\" [\"Hello\", \"Earth\"] = Nothing\n-- | ```\n-- |\nupdateAt :: forall a. Int -> a -> Array a -> Maybe (Array a)\nupdateAt = runFn5 _updateAt Just Nothing\n\nforeign import _updateAt\n :: forall a\n . Fn5\n (forall b. b -> Maybe b)\n (forall b. Maybe b)\n Int\n a\n (Array a)\n (Maybe (Array a))\n\n-- | Apply a function to the element at the specified index, creating a new\n-- | array, or returning `Nothing` if the index is out of bounds.\n-- |\n-- | ```purescript\n-- | modifyAt 1 toUpper [\"Hello\", \"World\"] = Just [\"Hello\", \"WORLD\"]\n-- | modifyAt 10 toUpper [\"Hello\", \"World\"] = Nothing\n-- | ```\n-- |\nmodifyAt :: forall a. Int -> (a -> a) -> Array a -> Maybe (Array a)\nmodifyAt i f xs = maybe Nothing go (xs !! i)\n where\n go x = updateAt i (f x) xs\n\n-- | Update or delete the element at the specified index by applying a\n-- | function to the current value, returning a new array or `Nothing` if the\n-- | index is out-of-bounds.\n-- |\n-- | ```purescript\n-- | alterAt 1 (stripSuffix $ Pattern \"!\") [\"Hello\", \"World!\"]\n-- | = Just [\"Hello\", \"World\"]\n-- |\n-- | alterAt 1 (stripSuffix $ Pattern \"!!!!!\") [\"Hello\", \"World!\"]\n-- | = Just [\"Hello\"]\n-- |\n-- | alterAt 10 (stripSuffix $ Pattern \"!\") [\"Hello\", \"World!\"] = Nothing\n-- | ```\n-- |\nalterAt :: forall a. Int -> (a -> Maybe a) -> Array a -> Maybe (Array a)\nalterAt i f xs = maybe Nothing go (xs !! i)\n where\n go x = case f x of\n Nothing -> deleteAt i xs\n Just x' -> updateAt i x' xs\n\n--------------------------------------------------------------------------------\n-- Transformations -------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Inserts the given element in between each element in the array. The array\n-- | must have two or more elements for this operation to take effect.\n-- |\n-- | ```purescript\n-- | intersperse \" \" [ \"a\", \"b\" ] == [ \"a\", \" \", \"b\" ]\n-- | intersperse 0 [ 1, 2, 3, 4, 5 ] == [ 1, 0, 2, 0, 3, 0, 4, 0, 5 ]\n-- | ```\n-- |\n-- | If the array has less than two elements, the input array is returned.\n-- | ```purescript\n-- | intersperse \" \" [] == []\n-- | intersperse \" \" [\"a\"] == [\"a\"]\n-- | ```\nintersperse :: forall a. a -> Array a -> Array a\nintersperse a arr = case length arr of\n len\n | len < 2 -> arr\n | otherwise -> STA.run do\n let unsafeGetElem idx = unsafePartial (unsafeIndex arr idx)\n out <- STA.new\n _ <- STA.push (unsafeGetElem 0) out\n ST.for 1 len \\idx -> do\n _ <- STA.push a out\n void (STA.push (unsafeGetElem idx) out)\n pure out\n\n-- | Reverse an array, creating a new array.\n-- |\n-- | ```purescript\n-- | reverse [] = []\n-- | reverse [1, 2, 3] = [3, 2, 1]\n-- | ```\n-- |\nforeign import reverse :: forall a. Array a -> Array a\n\n-- | Flatten an array of arrays, creating a new array.\n-- |\n-- | ```purescript\n-- | concat [[1, 2, 3], [], [4, 5, 6]] = [1, 2, 3, 4, 5, 6]\n-- | ```\n-- |\nforeign import concat :: forall a. Array (Array a) -> Array a\n\n-- | Apply a function to each element in an array, and flatten the results\n-- | into a single, new array.\n-- |\n-- | ```purescript\n-- | concatMap (split $ Pattern \" \") [\"Hello World\", \"other thing\"]\n-- | = [\"Hello\", \"World\", \"other\", \"thing\"]\n-- | ```\n-- |\nconcatMap :: forall a b. (a -> Array b) -> Array a -> Array b\nconcatMap = flip bind\n\n-- | Filter an array, keeping the elements which satisfy a predicate function,\n-- | creating a new array.\n-- |\n-- | ```purescript\n-- | filter (_ > 0) [-1, 4, -5, 7] = [4, 7]\n-- | ```\n-- |\nfilter :: forall a. (a -> Boolean) -> Array a -> Array a\nfilter = runFn2 filterImpl\n\nforeign import filterImpl\n :: forall a\n . Fn2 (a -> Boolean) (Array a) (Array a)\n\n-- | Partition an array using a predicate function, creating a set of\n-- | new arrays. One for the values satisfying the predicate function\n-- | and one for values that don't.\n-- |\n-- | ```purescript\n-- | partition (_ > 0) [-1, 4, -5, 7] = { yes: [4, 7], no: [-1, -5] }\n-- | ```\n-- |\npartition\n :: forall a\n . (a -> Boolean)\n -> Array a\n -> { yes :: Array a, no :: Array a }\npartition = runFn2 partitionImpl\n\nforeign import partitionImpl\n :: forall a\n . Fn2 (a -> Boolean) (Array a) { yes :: Array a, no :: Array a }\n\n-- | Splits an array into two subarrays, where `before` contains the elements\n-- | up to (but not including) the given index, and `after` contains the rest\n-- | of the elements, from that index on.\n-- |\n-- | ```purescript\n-- | >>> splitAt 3 [1, 2, 3, 4, 5]\n-- | { before: [1, 2, 3], after: [4, 5] }\n-- | ```\n-- |\n-- | Thus, the length of `(splitAt i arr).before` will equal either `i` or\n-- | `length arr`, if that is shorter. (Or if `i` is negative the length will\n-- | be 0.)\n-- |\n-- | ```purescript\n-- | splitAt 2 ([] :: Array Int) == { before: [], after: [] }\n-- | splitAt 3 [1, 2, 3, 4, 5] == { before: [1, 2, 3], after: [4, 5] }\n-- | ```\nsplitAt :: forall a. Int -> Array a -> { before :: Array a, after :: Array a }\nsplitAt i xs | i <= 0 = { before: [], after: xs }\nsplitAt i xs = { before: slice 0 i xs, after: slice i (length xs) xs }\n\n-- | Filter where the predicate returns a `Boolean` in some `Applicative`.\n-- |\n-- | ```purescript\n-- | powerSet :: forall a. Array a -> Array (Array a)\n-- | powerSet = filterA (const [true, false])\n-- | ```\nfilterA :: forall a f. Applicative f => (a -> f Boolean) -> Array a -> f (Array a)\nfilterA p =\n traverse (\\x -> Tuple x <$> p x)\n >>> map (mapMaybe (\\(Tuple x b) -> if b then Just x else Nothing))\n\n-- | Apply a function to each element in an array, keeping only the results\n-- | which contain a value, creating a new array.\n-- |\n-- | ```purescript\n-- | parseEmail :: String -> Maybe Email\n-- | parseEmail = ...\n-- |\n-- | mapMaybe parseEmail [\"a.com\", \"hello@example.com\", \"--\"]\n-- | = [Email {user: \"hello\", domain: \"example.com\"}]\n-- | ```\n-- |\nmapMaybe :: forall a b. (a -> Maybe b) -> Array a -> Array b\nmapMaybe f = concatMap (maybe [] singleton <<< f)\n\n-- | Filter an array of optional values, keeping only the elements which contain\n-- | a value, creating a new array.\n-- |\n-- | ```purescript\n-- | catMaybes [Nothing, Just 2, Nothing, Just 4] = [2, 4]\n-- | ```\n-- |\ncatMaybes :: forall a. Array (Maybe a) -> Array a\ncatMaybes = mapMaybe identity\n\n-- | Apply a function to each element in an array, supplying a generated\n-- | zero-based index integer along with the element, creating an array\n-- | with the new elements.\n-- |\n-- | ```purescript\n-- | prefixIndex index element = show index <> element\n-- |\n-- | mapWithIndex prefixIndex [\"Hello\", \"World\"] = [\"0Hello\", \"1World\"]\n-- | ```\n-- |\nmapWithIndex :: forall a b. (Int -> a -> b) -> Array a -> Array b\nmapWithIndex = FWI.mapWithIndex\n\n-- | Change the elements at the specified indices in index/value pairs.\n-- | Out-of-bounds indices will have no effect.\n-- |\n-- | ```purescript\n-- | updates = [Tuple 0 \"Hi\", Tuple 2 \".\" , Tuple 10 \"foobar\"]\n-- |\n-- | updateAtIndices updates [\"Hello\", \"World\", \"!\"] = [\"Hi\", \"World\", \".\"]\n-- | ```\n-- |\nupdateAtIndices :: forall t a. Foldable t => t (Tuple Int a) -> Array a -> Array a\nupdateAtIndices us xs =\n ST.run (STA.withArray (\\res -> traverse_ (\\(Tuple i a) -> STA.poke i a res) us) xs)\n\n-- | Apply a function to the element at the specified indices,\n-- | creating a new array. Out-of-bounds indices will have no effect.\n-- |\n-- | ```purescript\n-- | indices = [1, 3]\n-- | modifyAtIndices indices toUpper [\"Hello\", \"World\", \"and\", \"others\"]\n-- | = [\"Hello\", \"WORLD\", \"and\", \"OTHERS\"]\n-- | ```\n-- |\nmodifyAtIndices :: forall t a. Foldable t => t Int -> (a -> a) -> Array a -> Array a\nmodifyAtIndices is f xs =\n ST.run (STA.withArray (\\res -> traverse_ (\\i -> STA.modify i f res) is) xs)\n\nfoldl :: forall a b. (b -> a -> b) -> b -> Array a -> b\nfoldl = F.foldl\n\nfoldr :: forall a b. (a -> b -> b) -> b -> Array a -> b\nfoldr = F.foldr\n\nfoldMap :: forall a m. Monoid m => (a -> m) -> Array a -> m\nfoldMap = F.foldMap\n\nfold :: forall m. Monoid m => Array m -> m\nfold = F.fold\n\nintercalate :: forall a. Monoid a => a -> Array a -> a\nintercalate = F.intercalate\n\n-- | The 'transpose' function transposes the rows and columns of its argument.\n-- | For example,\n-- |\n-- | ```purescript\n-- | transpose \n-- | [ [1, 2, 3]\n-- | , [4, 5, 6]\n-- | ] == \n-- | [ [1, 4]\n-- | , [2, 5]\n-- | , [3, 6]\n-- | ]\n-- | ```\n-- |\n-- | If some of the rows are shorter than the following rows, their elements are skipped:\n-- |\n-- | ```purescript\n-- | transpose \n-- | [ [10, 11]\n-- | , [20]\n-- | , [30, 31, 32]\n-- | ] == \n-- | [ [10, 20, 30]\n-- | , [11, 31]\n-- | , [32]\n-- | ]\n-- | ```\ntranspose :: forall a. Array (Array a) -> Array (Array a)\ntranspose xs = go 0 []\n where\n go :: Int -> Array (Array a) -> Array (Array a)\n go idx allArrays = case buildNext idx of\n Nothing -> allArrays\n Just next -> go (idx + 1) (snoc allArrays next)\n\n buildNext :: Int -> Maybe (Array a)\n buildNext idx = do\n xs # flip foldl Nothing \\acc nextArr -> do\n maybe acc (\\el -> Just $ maybe [ el ] (flip snoc el) acc) $ index nextArr idx\n\n-- | Fold a data structure from the left, keeping all intermediate results\n-- | instead of only the final result. Note that the initial value does not\n-- | appear in the result (unlike Haskell's `Prelude.scanl`).\n-- |\n-- | ```\n-- | scanl (+) 0 [1,2,3] = [1,3,6]\n-- | scanl (-) 10 [1,2,3] = [9,7,4]\n-- | ```\nscanl :: forall a b. (b -> a -> b) -> b -> Array a -> Array b\nscanl = runFn3 scanlImpl\n\nforeign import scanlImpl :: forall a b. Fn3 (b -> a -> b) b (Array a) (Array b)\n\n-- | Fold a data structure from the right, keeping all intermediate results\n-- | instead of only the final result. Note that the initial value does not\n-- | appear in the result (unlike Haskell's `Prelude.scanr`).\n-- |\n-- | ```\n-- | scanr (+) 0 [1,2,3] = [6,5,3]\n-- | scanr (flip (-)) 10 [1,2,3] = [4,5,7]\n-- | ```\nscanr :: forall a b. (a -> b -> b) -> b -> Array a -> Array b\nscanr = runFn3 scanrImpl\n\nforeign import scanrImpl :: forall a b. Fn3 (a -> b -> b) b (Array a) (Array b)\n\n--------------------------------------------------------------------------------\n-- Sorting ---------------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Sort the elements of an array in increasing order, creating a new array.\n-- | Sorting is stable: the order of equal elements is preserved.\n-- |\n-- | ```purescript\n-- | sort [2, -3, 1] = [-3, 1, 2]\n-- | ```\n-- |\nsort :: forall a. Ord a => Array a -> Array a\nsort xs = sortBy compare xs\n\n-- | Sort the elements of an array in increasing order, where elements are\n-- | compared using the specified partial ordering, creating a new array.\n-- | Sorting is stable: the order of elements is preserved if they are equal\n-- | according to the specified partial ordering.\n-- |\n-- | ```purescript\n-- | compareLength a b = compare (length a) (length b)\n-- | sortBy compareLength [[1, 2, 3], [7, 9], [-2]] = [[-2],[7,9],[1,2,3]]\n-- | ```\n-- |\nsortBy :: forall a. (a -> a -> Ordering) -> Array a -> Array a\nsortBy comp = runFn3 sortByImpl comp case _ of\n GT -> 1\n EQ -> 0\n LT -> -1\n\n-- | Sort the elements of an array in increasing order, where elements are\n-- | sorted based on a projection. Sorting is stable: the order of elements is\n-- | preserved if they are equal according to the projection.\n-- |\n-- | ```purescript\n-- | sortWith (_.age) [{name: \"Alice\", age: 42}, {name: \"Bob\", age: 21}]\n-- | = [{name: \"Bob\", age: 21}, {name: \"Alice\", age: 42}]\n-- | ```\n-- |\nsortWith :: forall a b. Ord b => (a -> b) -> Array a -> Array a\nsortWith f = sortBy (comparing f)\n\nforeign import sortByImpl :: forall a. Fn3 (a -> a -> Ordering) (Ordering -> Int) (Array a) (Array a)\n\n--------------------------------------------------------------------------------\n-- Subarrays -------------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Extract a subarray by a start and end index.\n-- |\n-- | ```purescript\n-- | letters = [\"a\", \"b\", \"c\"]\n-- | slice 1 3 letters = [\"b\", \"c\"]\n-- | slice 5 7 letters = []\n-- | slice 4 1 letters = []\n-- | ```\n-- |\nslice :: forall a. Int -> Int -> Array a -> Array a\nslice = runFn3 sliceImpl\n\nforeign import sliceImpl :: forall a. Fn3 Int Int (Array a) (Array a)\n\n-- | Keep only a number of elements from the start of an array, creating a new\n-- | array.\n-- |\n-- | ```purescript\n-- | letters = [\"a\", \"b\", \"c\"]\n-- |\n-- | take 2 letters = [\"a\", \"b\"]\n-- | take 100 letters = [\"a\", \"b\", \"c\"]\n-- | ```\n-- |\ntake :: forall a. Int -> Array a -> Array a\ntake n xs = if n < 1 then [] else slice 0 n xs\n\n-- | Keep only a number of elements from the end of an array, creating a new\n-- | array.\n-- |\n-- | ```purescript\n-- | letters = [\"a\", \"b\", \"c\"]\n-- |\n-- | takeEnd 2 letters = [\"b\", \"c\"]\n-- | takeEnd 100 letters = [\"a\", \"b\", \"c\"]\n-- | ```\n-- |\ntakeEnd :: forall a. Int -> Array a -> Array a\ntakeEnd n xs = drop (length xs - n) xs\n\n-- | Calculate the longest initial subarray for which all element satisfy the\n-- | specified predicate, creating a new array.\n-- |\n-- | ```purescript\n-- | takeWhile (_ > 0) [4, 1, 0, -4, 5] = [4, 1]\n-- | takeWhile (_ > 0) [-1, 4] = []\n-- | ```\n-- |\ntakeWhile :: forall a. (a -> Boolean) -> Array a -> Array a\ntakeWhile p xs = (span p xs).init\n\n-- | Drop a number of elements from the start of an array, creating a new array.\n-- |\n-- | ```purescript\n-- | letters = [\"a\", \"b\", \"c\", \"d\"]\n-- |\n-- | drop 2 letters = [\"c\", \"d\"]\n-- | drop 10 letters = []\n-- | ```\n-- |\ndrop :: forall a. Int -> Array a -> Array a\ndrop n xs = if n < 1 then xs else slice n (length xs) xs\n\n-- | Drop a number of elements from the end of an array, creating a new array.\n-- |\n-- | ```purescript\n-- | letters = [\"a\", \"b\", \"c\", \"d\"]\n-- |\n-- | dropEnd 2 letters = [\"a\", \"b\"]\n-- | dropEnd 10 letters = []\n-- | ```\n-- |\ndropEnd :: forall a. Int -> Array a -> Array a\ndropEnd n xs = take (length xs - n) xs\n\n-- | Remove the longest initial subarray for which all element satisfy the\n-- | specified predicate, creating a new array.\n-- |\n-- | ```purescript\n-- | dropWhile (_ < 0) [-3, -1, 0, 4, -6] = [0, 4, -6]\n-- | ```\n-- |\ndropWhile :: forall a. (a -> Boolean) -> Array a -> Array a\ndropWhile p xs = (span p xs).rest\n\n-- | Split an array into two parts:\n-- |\n-- | 1. the longest initial subarray for which all elements satisfy the\n-- | specified predicate\n-- | 2. the remaining elements\n-- |\n-- | ```purescript\n-- | span (\\n -> n % 2 == 1) [1,3,2,4,5] == { init: [1,3], rest: [2,4,5] }\n-- | ```\n-- |\n-- | Running time: `O(n)`.\nspan\n :: forall a\n . (a -> Boolean)\n -> Array a\n -> { init :: Array a, rest :: Array a }\nspan p arr =\n case breakIndex of\n Just 0 ->\n { init: [], rest: arr }\n Just i ->\n { init: slice 0 i arr, rest: slice i (length arr) arr }\n Nothing ->\n { init: arr, rest: [] }\n where\n breakIndex = go 0\n go i =\n -- This looks like a good opportunity to use the Monad Maybe instance,\n -- but it's important to write out an explicit case expression here in\n -- order to ensure that TCO is triggered.\n case index arr i of\n Just x -> if p x then go (i + 1) else Just i\n Nothing -> Nothing\n\n-- | Group equal, consecutive elements of an array into arrays.\n-- |\n-- | ```purescript\n-- | group [1, 1, 2, 2, 1] == [NonEmptyArray [1, 1], NonEmptyArray [2, 2], NonEmptyArray [1]]\n-- | ```\ngroup :: forall a. Eq a => Array a -> Array (NonEmptyArray a)\ngroup xs = groupBy eq xs\n\n-- | Group equal elements of an array into arrays.\n-- |\n-- | ```purescript\n-- | groupAll [1, 1, 2, 2, 1] == [NonEmptyArray [1, 1, 1], NonEmptyArray [2, 2]]\n-- | ```\ngroupAll :: forall a. Ord a => Array a -> Array (NonEmptyArray a)\ngroupAll = groupAllBy compare\n\n-- | Group equal, consecutive elements of an array into arrays, using the\n-- | specified equivalence relation to determine equality.\n-- |\n-- | ```purescript\n-- | groupBy (\\a b -> odd a && odd b) [1, 3, 2, 4, 3, 3]\n-- | = [NonEmptyArray [1, 3], NonEmptyArray [2], NonEmptyArray [4], NonEmptyArray [3, 3]]\n-- | ```\n-- |\ngroupBy :: forall a. (a -> a -> Boolean) -> Array a -> Array (NonEmptyArray a)\ngroupBy op xs =\n ST.run do\n result <- STA.new\n iter <- STAI.iterator (xs !! _)\n STAI.iterate iter \\x -> void do\n sub <- STA.new\n _ <- STA.push x sub\n STAI.pushWhile (op x) iter sub\n grp <- STA.unsafeFreeze sub\n STA.push (NonEmptyArray grp) result\n STA.unsafeFreeze result\n\n-- | Group equal elements of an array into arrays, using the specified\n-- | comparison function to determine equality.\n-- |\n-- | ```purescript\n-- | groupAllBy (comparing Down) [1, 3, 2, 4, 3, 3]\n-- | = [NonEmptyArray [4], NonEmptyArray [3, 3, 3], NonEmptyArray [2], NonEmptyArray [1]]\n-- | ```\n-- |\ngroupAllBy :: forall a. (a -> a -> Ordering) -> Array a -> Array (NonEmptyArray a)\ngroupAllBy cmp = groupBy (\\x y -> cmp x y == EQ) <<< sortBy cmp\n\n-- | Remove the duplicates from an array, creating a new array.\n-- |\n-- | ```purescript\n-- | nub [1, 2, 1, 3, 3] = [1, 2, 3]\n-- | ```\n-- |\nnub :: forall a. Ord a => Array a -> Array a\nnub = nubBy compare\n\n-- | Remove the duplicates from an array, creating a new array.\n-- |\n-- | This less efficient version of `nub` only requires an `Eq` instance.\n-- |\n-- | ```purescript\n-- | nubEq [1, 2, 1, 3, 3] = [1, 2, 3]\n-- | ```\n-- |\nnubEq :: forall a. Eq a => Array a -> Array a\nnubEq = nubByEq eq\n\n-- | Remove the duplicates from an array, where element equality is determined\n-- | by the specified ordering, creating a new array.\n-- |\n-- | ```purescript\n-- | nubBy compare [1, 3, 4, 2, 2, 1] == [1, 3, 4, 2]\n-- | ```\n-- |\nnubBy :: forall a. (a -> a -> Ordering) -> Array a -> Array a\nnubBy comp xs = case head indexedAndSorted of\n Nothing -> []\n Just x -> map snd $ sortWith fst $ ST.run do\n -- TODO: use NonEmptyArrays here to avoid partial functions\n result <- STA.unsafeThaw $ singleton x\n ST.foreach indexedAndSorted \\pair@(Tuple _ x') -> do\n lst <- snd <<< unsafePartial (fromJust <<< last) <$> STA.unsafeFreeze result\n when (comp lst x' /= EQ) $ void $ STA.push pair result\n STA.unsafeFreeze result\n where\n indexedAndSorted :: Array (Tuple Int a)\n indexedAndSorted = sortBy (\\x y -> comp (snd x) (snd y))\n (mapWithIndex Tuple xs)\n\n-- | Remove the duplicates from an array, where element equality is determined\n-- | by the specified equivalence relation, creating a new array.\n-- |\n-- | This less efficient version of `nubBy` only requires an equivalence\n-- | relation.\n-- |\n-- | ```purescript\n-- | mod3eq a b = a `mod` 3 == b `mod` 3\n-- | nubByEq mod3eq [1, 3, 4, 5, 6] = [1, 3, 5]\n-- | ```\n-- |\nnubByEq :: forall a. (a -> a -> Boolean) -> Array a -> Array a\nnubByEq eq xs = ST.run do\n arr <- STA.new\n ST.foreach xs \\x -> do\n e <- not <<< any (_ `eq` x) <$> (STA.unsafeFreeze arr)\n when e $ void $ STA.push x arr\n STA.unsafeFreeze arr\n\n-- | Calculate the union of two arrays. Note that duplicates in the first array\n-- | are preserved while duplicates in the second array are removed.\n-- |\n-- | Running time: `O(n^2)`\n-- |\n-- | ```purescript\n-- | union [1, 2, 1, 1] [3, 3, 3, 4] = [1, 2, 1, 1, 3, 4]\n-- | ```\n-- |\nunion :: forall a. Eq a => Array a -> Array a -> Array a\nunion = unionBy (==)\n\n-- | Calculate the union of two arrays, using the specified function to\n-- | determine equality of elements. Note that duplicates in the first array\n-- | are preserved while duplicates in the second array are removed.\n-- |\n-- | ```purescript\n-- | mod3eq a b = a `mod` 3 == b `mod` 3\n-- | unionBy mod3eq [1, 5, 1, 2] [3, 4, 3, 3] = [1, 5, 1, 2, 3]\n-- | ```\n-- |\nunionBy :: forall a. (a -> a -> Boolean) -> Array a -> Array a -> Array a\nunionBy eq xs ys = xs <> foldl (flip (deleteBy eq)) (nubByEq eq ys) xs\n\n-- | Delete the first element of an array which is equal to the specified value,\n-- | creating a new array.\n-- |\n-- | ```purescript\n-- | delete 7 [1, 7, 3, 7] = [1, 3, 7]\n-- | delete 7 [1, 2, 3] = [1, 2, 3]\n-- | ```\n-- |\n-- | Running time: `O(n)`\ndelete :: forall a. Eq a => a -> Array a -> Array a\ndelete = deleteBy eq\n\n-- | Delete the first element of an array which matches the specified value,\n-- | under the equivalence relation provided in the first argument, creating a\n-- | new array.\n-- |\n-- | ```purescript\n-- | mod3eq a b = a `mod` 3 == b `mod` 3\n-- | deleteBy mod3eq 6 [1, 3, 4, 3] = [1, 4, 3]\n-- | ```\n-- |\ndeleteBy :: forall a. (a -> a -> Boolean) -> a -> Array a -> Array a\ndeleteBy _ _ [] = []\ndeleteBy eq x ys = maybe ys (\\i -> unsafePartial $ fromJust (deleteAt i ys)) (findIndex (eq x) ys)\n\n-- | Delete the first occurrence of each element in the second array from the\n-- | first array, creating a new array.\n-- |\n-- | ```purescript\n-- | difference [2, 1] [2, 3] = [1]\n-- | ```\n-- |\n-- | Running time: `O(n*m)`, where n is the length of the first array, and m is\n-- | the length of the second.\ndifference :: forall a. Eq a => Array a -> Array a -> Array a\ndifference = foldr delete\n\ninfix 5 difference as \\\\\n\n-- | Calculate the intersection of two arrays, creating a new array. Note that\n-- | duplicates in the first array are preserved while duplicates in the second\n-- | array are removed.\n-- |\n-- | ```purescript\n-- | intersect [1, 1, 2] [2, 2, 1] = [1, 1, 2]\n-- | ```\n-- |\nintersect :: forall a. Eq a => Array a -> Array a -> Array a\nintersect = intersectBy eq\n\n-- | Calculate the intersection of two arrays, using the specified equivalence\n-- | relation to compare elements, creating a new array. Note that duplicates\n-- | in the first array are preserved while duplicates in the second array are\n-- | removed.\n-- |\n-- | ```purescript\n-- | mod3eq a b = a `mod` 3 == b `mod` 3\n-- | intersectBy mod3eq [1, 2, 3] [4, 6, 7] = [1, 3]\n-- | ```\n-- |\nintersectBy :: forall a. (a -> a -> Boolean) -> Array a -> Array a -> Array a\nintersectBy eq xs ys = filter (\\x -> isJust (findIndex (eq x) ys)) xs\n\n-- | Apply a function to pairs of elements at the same index in two arrays,\n-- | collecting the results in a new array.\n-- |\n-- | If one array is longer, elements will be discarded from the longer array.\n-- |\n-- | For example\n-- |\n-- | ```purescript\n-- | zipWith (*) [1, 2, 3] [4, 5, 6, 7] == [4, 10, 18]\n-- | ```\nzipWith\n :: forall a b c\n . (a -> b -> c)\n -> Array a\n -> Array b\n -> Array c\nzipWith = runFn3 zipWithImpl\n\nforeign import zipWithImpl\n :: forall a b c\n . Fn3\n (a -> b -> c)\n (Array a)\n (Array b)\n (Array c)\n\n-- | A generalization of `zipWith` which accumulates results in some\n-- | `Applicative` functor.\n-- |\n-- | ```purescript\n-- | sndChars = zipWithA (\\a b -> charAt 2 (a <> b))\n-- | sndChars [\"a\", \"b\"] [\"A\", \"B\"] = Nothing -- since \"aA\" has no 3rd char\n-- | sndChars [\"aa\", \"b\"] [\"AA\", \"BBB\"] = Just ['A', 'B']\n-- | ```\n-- |\nzipWithA\n :: forall m a b c\n . Applicative m\n => (a -> b -> m c)\n -> Array a\n -> Array b\n -> m (Array c)\nzipWithA f xs ys = sequence (zipWith f xs ys)\n\n-- | Takes two arrays and returns an array of corresponding pairs.\n-- | If one input array is short, excess elements of the longer array are\n-- | discarded.\n-- |\n-- | ```purescript\n-- | zip [1, 2, 3] [\"a\", \"b\"] = [Tuple 1 \"a\", Tuple 2 \"b\"]\n-- | ```\n-- |\nzip :: forall a b. Array a -> Array b -> Array (Tuple a b)\nzip = zipWith Tuple\n\n-- | Transforms an array of pairs into an array of first components and an\n-- | array of second components.\n-- |\n-- | ```purescript\n-- | unzip [Tuple 1 \"a\", Tuple 2 \"b\"] = Tuple [1, 2] [\"a\", \"b\"]\n-- | ```\n-- |\nunzip :: forall a b. Array (Tuple a b) -> Tuple (Array a) (Array b)\nunzip xs =\n ST.run do\n fsts <- STA.new\n snds <- STA.new\n iter <- STAI.iterator (xs !! _)\n STAI.iterate iter \\(Tuple fst snd) -> do\n void $ STA.push fst fsts\n void $ STA.push snd snds\n fsts' <- STA.unsafeFreeze fsts\n snds' <- STA.unsafeFreeze snds\n pure $ Tuple fsts' snds'\n\n-- | Returns true if at least one array element satisfies the given predicate,\n-- | iterating the array only as necessary and stopping as soon as the predicate\n-- | yields true.\n-- |\n-- | ```purescript\n-- | any (_ > 0) [] = False\n-- | any (_ > 0) [-1, 0, 1] = True\n-- | any (_ > 0) [-1, -2, -3] = False\n-- | ```\nany :: forall a. (a -> Boolean) -> Array a -> Boolean\nany = runFn2 anyImpl\n\nforeign import anyImpl :: forall a. Fn2 (a -> Boolean) (Array a) Boolean\n\n-- | Returns true if all the array elements satisfy the given predicate.\n-- | iterating the array only as necessary and stopping as soon as the predicate\n-- | yields false.\n-- |\n-- | ```purescript\n-- | all (_ > 0) [] = True\n-- | all (_ > 0) [1, 2, 3] = True\n-- | all (_ > 0) [-1, -2, -3] = False\n-- | ```\nall :: forall a. (a -> Boolean) -> Array a -> Boolean\nall = runFn2 allImpl\n\nforeign import allImpl :: forall a. Fn2 (a -> Boolean) (Array a) Boolean\n\n-- | Perform a fold using a monadic step function.\n-- |\n-- | ```purescript\n-- | foldM (\\x y -> Just (x + y)) 0 [1, 4] = Just 5\n-- | ```\nfoldM :: forall m a b. Monad m => (b -> a -> m b) -> b -> Array a -> m b\nfoldM f b = runFn3 unconsImpl (\\_ -> pure b) (\\a as -> f b a >>= \\b' -> foldM f b' as)\n\nfoldRecM :: forall m a b. MonadRec m => (b -> a -> m b) -> b -> Array a -> m b\nfoldRecM f b array = tailRecM2 go b 0\n where\n go res i\n | i >= length array = pure (Done res)\n | otherwise = do\n res' <- f res (unsafePartial (unsafeIndex array i))\n pure (Loop { a: res', b: i + 1 })\n\n-- | Find the element of an array at the specified index.\n-- |\n-- | ```purescript\n-- | unsafePartial $ unsafeIndex [\"a\", \"b\", \"c\"] 1 = \"b\"\n-- | ```\n-- |\n-- | Using `unsafeIndex` with an out-of-range index will not immediately raise a runtime error.\n-- | Instead, the result will be undefined. Most attempts to subsequently use the result will\n-- | cause a runtime error, of course, but this is not guaranteed, and is dependent on the backend;\n-- | some programs will continue to run as if nothing is wrong. For example, in the JavaScript backend,\n-- | the expression `unsafePartial (unsafeIndex [true] 1)` has type `Boolean`;\n-- | since this expression evaluates to `undefined`, attempting to use it in an `if` statement will cause\n-- | the else branch to be taken.\nunsafeIndex :: forall a. Partial => Array a -> Int -> a\nunsafeIndex = runFn2 unsafeIndexImpl\n\nforeign import unsafeIndexImpl :: forall a. Fn2 (Array a) Int a\n", "const newImpl = function () {\n return {};\n};\nexport { newImpl as new };\n\nexport function peekImpl(just) {\n return function (nothing) {\n return function (k) {\n return function (m) {\n return function () {\n return {}.hasOwnProperty.call(m, k) ? just(m[k]) : nothing;\n };\n };\n };\n };\n}\n\nexport function poke(k) {\n return function (v) {\n return function (m) {\n return function () {\n m[k] = v;\n return m;\n };\n };\n };\n}\n\nconst deleteImpl = function (k) {\n return function (m) {\n return function () {\n delete m[k];\n return m;\n };\n };\n};\nexport { deleteImpl as delete };\n", "-- | This module defines a type of native homogeneous Javascript Objects.\n-- |\n-- | To maximize performance, Javascript objects are not wrapped,\n-- | and some native code is used even when it's not necessary.\n\nmodule Foreign.Object\n ( Object\n , empty\n , isEmpty\n , size\n , singleton\n , insert\n , lookup\n , toUnfoldable\n , toAscUnfoldable\n , fromFoldable\n , fromFoldableWith\n , fromFoldableWithIndex\n , fromHomogeneous\n , delete\n , pop\n , member\n , alter\n , update\n , mapWithKey\n , filterWithKey\n , filterKeys\n , filter\n , keys\n , values\n , union\n , unionWith\n , unions\n , isSubmap\n , fold\n , foldMap\n , foldM\n , foldMaybe\n , all\n , thawST\n , freezeST\n , runST\n , toArrayWithKey\n ) where\n\nimport Prelude\n\nimport Control.Monad.ST (ST)\nimport Control.Monad.ST as ST\nimport Data.Array as A\nimport Data.Eq (class Eq1)\nimport Data.Foldable (class Foldable, foldl, foldr, for_)\nimport Data.FoldableWithIndex (class FoldableWithIndex, forWithIndex_)\nimport Data.Function.Uncurried (Fn2, runFn2, Fn4, runFn4)\nimport Data.FunctorWithIndex (class FunctorWithIndex)\nimport Data.Maybe (Maybe(..), maybe, fromMaybe)\nimport Data.Traversable (class Traversable, traverse)\nimport Data.TraversableWithIndex (class TraversableWithIndex, traverseWithIndex)\nimport Data.Tuple (Tuple(..), fst, uncurry)\nimport Data.Unfoldable (class Unfoldable)\nimport Foreign.Object.ST (STObject)\nimport Foreign.Object.ST as OST\nimport Type.Row.Homogeneous (class Homogeneous)\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | `Object a` represents a homogeneous JS Object with values of type `a`.\nforeign import data Object :: Type -> Type\n\ntype role Object representational\n\nforeign import _copyST :: forall a b r. a -> ST r b\n\n-- | Convert an immutable Object into a mutable Object\nthawST :: forall a r. Object a -> ST r (STObject r a)\nthawST = _copyST\n\n-- | Convert a mutable Object into an immutable Object\nfreezeST :: forall a r. STObject r a -> ST r (Object a)\nfreezeST = _copyST\n\n-- | Freeze a mutable Object, creating an immutable Object. Use this function as you would use\n-- | `Control.Monad.ST.run` (from the `purescript-st` package) to freeze a mutable reference.\n-- |\n-- | The rank-2 type prevents the Object from escaping the scope of `runST`.\nforeign import runST :: forall a. (forall r. ST r (STObject r a)) -> Object a\n\nmutate :: forall a b. (forall r. STObject r a -> ST r b) -> Object a -> Object a\nmutate f m = runST do\n s <- thawST m\n _ <- f s\n pure s\n\nforeign import _fmapObject :: forall a b. Fn2 (Object a) (a -> b) (Object b)\n\ninstance functorObject :: Functor Object where\n map f m = runFn2 _fmapObject m f\n\ninstance functorWithIndexObject :: FunctorWithIndex String Object where\n mapWithIndex = mapWithKey\n\nforeign import _foldM :: forall a m z. (m -> (z -> m) -> m) -> (z -> String -> a -> m) -> m -> Object a -> m\n\n-- | Fold the keys and values of an object\nfold :: forall a z. (z -> String -> a -> z) -> z -> Object a -> z\nfold = _foldM ((#))\n\n-- | Fold the keys and values of an object, accumulating values using some\n-- | `Monoid`.\nfoldMap :: forall a m. Monoid m => (String -> a -> m) -> Object a -> m\nfoldMap f = fold (\\acc k v -> acc <> f k v) mempty\n\n-- | Fold the keys and values of an object, accumulating values and effects in\n-- | some `Monad`.\nfoldM :: forall a m z. Monad m => (z -> String -> a -> m z) -> z -> Object a -> m z\nfoldM f z = _foldM bind f (pure z)\n\ninstance foldableObject :: Foldable Object where\n foldl f = fold (\\z _ -> f z)\n foldr f z m = foldr f z (values m)\n foldMap f = foldMap (const f)\n\ninstance foldableWithIndexObject :: FoldableWithIndex String Object where\n foldlWithIndex f = fold (flip f)\n foldrWithIndex f z m = foldr (uncurry f) z (toArrayWithKey Tuple m)\n foldMapWithIndex = foldMap\n\ninstance traversableObject :: Traversable Object where\n traverse = traverseWithIndex <<< const\n sequence = traverse identity\n\ninstance traversableWithIndexObject :: TraversableWithIndex String Object where\n traverseWithIndex f ms =\n fold (\\acc k v -> flip (insert k) <$> acc <*> f k v) (pure empty) ms\n\n-- Unfortunately the above are not short-circuitable (consider using purescript-machines)\n-- so we need special cases:\n\nforeign import _foldSCObject :: forall a z. Fn4 (Object a) z (z -> String -> a -> Maybe z) (forall b. b -> Maybe b -> b) z\n\n-- | Fold the keys and values of a map.\n-- |\n-- | This function allows the folding function to terminate the fold early,\n-- | using `Maybe`.\nfoldMaybe :: forall a z. (z -> String -> a -> Maybe z) -> z -> Object a -> z\nfoldMaybe f z m = runFn4 _foldSCObject m z f fromMaybe\n\n-- | Test whether all key/value pairs in a `Object` satisfy a predicate.\nforeign import all :: forall a. (String -> a -> Boolean) -> Object a -> Boolean\n\ninstance eqObject :: Eq a => Eq (Object a) where\n eq m1 m2 = (isSubmap m1 m2) && (isSubmap m2 m1)\n\ninstance eq1Object :: Eq1 Object where\n eq1 = eq\n\n-- Internal use\ntoAscArray :: forall v. Object v -> Array (Tuple String v)\ntoAscArray = toAscUnfoldable\n\ninstance ordObject :: Ord a => Ord (Object a) where\n compare m1 m2 = compare (toAscArray m1) (toAscArray m2)\n\ninstance showObject :: Show a => Show (Object a) where\n show m = \"(fromFoldable \" <> show (toArray m) <> \")\"\n\n-- | An empty map\nforeign import empty :: forall a. Object a\n\n-- | Test whether one map contains all of the keys and values contained in another map\nisSubmap :: forall a. Eq a => Object a -> Object a -> Boolean\nisSubmap m1 m2 = all f m1 where\n f k v = runFn4 _lookup false ((==) v) k m2\n\n-- | Test whether a map is empty\nisEmpty :: forall a. Object a -> Boolean\nisEmpty = all (\\_ _ -> false)\n\n-- | Calculate the number of key/value pairs in a map\nforeign import size :: forall a. Object a -> Int\n\n-- | Create an `Object a` with one key/value pair\nsingleton :: forall a. String -> a -> Object a\nsingleton k v = runST (OST.poke k v =<< OST.new)\n\nforeign import _lookup :: forall a z. Fn4 z (a -> z) String (Object a) z\n\n-- | Lookup the value for a key in a map\nlookup :: forall a. String -> Object a -> Maybe a\nlookup = runFn4 _lookup Nothing Just\n\n-- | Test whether a `String` appears as a key in a map\nmember :: forall a. String -> Object a -> Boolean\nmember = runFn4 _lookup false (const true)\n\n-- | Insert or replace a key/value pair in a map\ninsert :: forall a. String -> a -> Object a -> Object a\ninsert k v = mutate (OST.poke k v)\n\n-- | Delete a key and value from a map\ndelete :: forall a. String -> Object a -> Object a\ndelete k = mutate (OST.delete k)\n\n-- | Delete a key and value from a map, returning the value\n-- | as well as the subsequent map\npop :: forall a. String -> Object a -> Maybe (Tuple a (Object a))\npop k m = lookup k m <#> \\a -> Tuple a (delete k m)\n\n-- | Insert, remove or update a value for a key in a map\nalter :: forall a. (Maybe a -> Maybe a) -> String -> Object a -> Object a\nalter f k m = case f (k `lookup` m) of\n Nothing -> delete k m\n Just v -> insert k v m\n\n-- | Remove or update a value for a key in a map\nupdate :: forall a. (a -> Maybe a) -> String -> Object a -> Object a\nupdate f k m = alter (maybe Nothing f) k m\n\n-- | Create an `Object a` from a foldable collection of key/value pairs\nfromFoldable :: forall f a. Foldable f => f (Tuple String a) -> Object a\nfromFoldable l = runST do\n s <- OST.new\n ST.foreach (A.fromFoldable l) \\(Tuple k v) -> void $ OST.poke k v s\n pure s\n\n-- | Create an `Object a` from a `String`-indexed foldable collection\nfromFoldableWithIndex :: forall f a. FoldableWithIndex String f => f a -> Object a\nfromFoldableWithIndex l = runST do\n s <- OST.new\n forWithIndex_ l \\k v -> OST.poke k v s\n pure s\n\nforeign import _lookupST :: forall a r z. Fn4 z (a -> z) String (STObject r a) (ST r z)\n\n-- | Create an `Object a` from a foldable collection of key/value pairs, using the\n-- | specified function to combine values for duplicate keys.\nfromFoldableWith :: forall f a. Foldable f => (a -> a -> a) -> f (Tuple String a) -> Object a\nfromFoldableWith f l = runST (do\n s <- OST.new\n for_ l (\\(Tuple k v) -> runFn4 _lookupST v (f v) k s >>= \\v' -> OST.poke k v' s)\n pure s)\n\n-- | Create an `Object a` from a homogeneous record, i.e. all of the record\n-- | fields are of the same type.\nfromHomogeneous :: forall r a. Homogeneous r a => { | r } -> Object a\nfromHomogeneous = unsafeCoerce\n\nforeign import toArrayWithKey :: forall a b . (String -> a -> b) -> Object a -> Array b\n\n-- | Unfolds a map into a list of key/value pairs\ntoUnfoldable :: forall f a. Unfoldable f => Object a -> f (Tuple String a)\ntoUnfoldable = A.toUnfoldable <<< toArrayWithKey Tuple\n\n-- | Unfolds a map into a list of key/value pairs which is guaranteed to be\n-- | sorted by key\ntoAscUnfoldable :: forall f a. Unfoldable f => Object a -> f (Tuple String a)\ntoAscUnfoldable = A.toUnfoldable <<< A.sortWith fst <<< toArrayWithKey Tuple\n\n-- Internal\ntoArray :: forall a. Object a -> Array (Tuple String a)\ntoArray = toArrayWithKey Tuple\n\n-- | Get an array of the keys in a map\nforeign import keys :: forall a. Object a -> Array String\n\n-- | Get a list of the values in a map\nvalues :: forall a. Object a -> Array a\nvalues = toArrayWithKey (\\_ v -> v)\n\n-- | Compute the union of two maps, preferring the first map in the case of\n-- | duplicate keys.\nunion :: forall a. Object a -> Object a -> Object a\nunion m = mutate (\\s -> foldM (\\s' k v -> OST.poke k v s') s m)\n\n-- | Compute the union of two maps, using the specified function\n-- | to combine values for duplicate keys.\nunionWith :: forall a. (a -> a -> a) -> Object a -> Object a -> Object a\nunionWith f m1 m2 =\n mutate (\\s1 -> foldM (\\s2 k v1 -> OST.poke k (runFn4 _lookup v1 (\\v2 -> f v1 v2) k m2) s2) s1 m1) m2\n\n-- | Compute the union of a collection of maps\nunions :: forall f a. Foldable f => f (Object a) -> Object a\nunions = foldl union empty\n\nforeign import _mapWithKey :: forall a b. Fn2 (Object a) (String -> a -> b) (Object b)\n\n-- | Apply a function of two arguments to each key/value pair, producing a new map\nmapWithKey :: forall a b. (String -> a -> b) -> Object a -> Object b\nmapWithKey f m = runFn2 _mapWithKey m f\n\ninstance semigroupObject :: (Semigroup a) => Semigroup (Object a) where\n append = unionWith (<>)\n\ninstance monoidObject :: (Semigroup a) => Monoid (Object a) where\n mempty = empty\n\n-- | Filter out those key/value pairs of a map for which a predicate\n-- | fails to hold.\nfilterWithKey :: forall a. (String -> a -> Boolean) -> Object a -> Object a\nfilterWithKey predicate m = runST go\n where\n go :: forall r. ST r (STObject r a)\n go = do\n m' <- OST.new\n foldM step m' m\n where\n step acc k v = if predicate k v then OST.poke k v acc else pure acc\n\n-- | Filter out those key/value pairs of a map for which a predicate\n-- | on the key fails to hold.\nfilterKeys :: (String -> Boolean) -> Object ~> Object\nfilterKeys predicate = filterWithKey $ const <<< predicate\n\n-- | Filter out those key/value pairs of a map for which a predicate\n-- | on the value fails to hold.\nfilter :: forall a. (a -> Boolean) -> Object a -> Object a\nfilter predicate = filterWithKey $ const predicate\n", "-- | This module defines a data type and various functions for creating and\n-- | manipulating JSON values. The README contains additional documentation\n-- | for this module.\nmodule Data.Argonaut.Core\n ( Json\n , caseJson\n , caseJsonNull\n , caseJsonBoolean\n , caseJsonNumber\n , caseJsonString\n , caseJsonArray\n , caseJsonObject\n , isNull\n , isBoolean\n , isNumber\n , isString\n , isArray\n , isObject\n , fromBoolean\n , fromNumber\n , fromString\n , fromArray\n , fromObject\n , toNull\n , toBoolean\n , toNumber\n , toString\n , toArray\n , toObject\n , jsonNull\n , jsonTrue\n , jsonFalse\n , jsonZero\n , jsonEmptyString\n , jsonEmptyArray\n , jsonSingletonArray\n , jsonEmptyObject\n , jsonSingletonObject\n , stringify\n , stringifyWithIndent\n ) where\n\nimport Prelude\n\nimport Data.Function.Uncurried (Fn5, runFn5, Fn7, runFn7)\nimport Data.Maybe (Maybe(..))\nimport Foreign.Object (Object)\nimport Foreign.Object as Obj\n\n-- | The type of JSON data. The underlying representation is the same as what\n-- | would be returned from JavaScript's `JSON.parse` function; that is,\n-- | ordinary JavaScript booleans, strings, arrays, objects, etc.\nforeign import data Json :: Type\n\ninstance eqJson :: Eq Json where\n eq j1 j2 = compare j1 j2 == EQ\n\ninstance ordJson :: Ord Json where\n compare a b = runFn5 _compare EQ GT LT a b\n\n-- | The type of null values inside JSON data. There is exactly one value of\n-- | this type: in JavaScript, it is written `null`. This module exports this\n-- | value as `jsonNull`.\nforeign import data JNull :: Type\n\ninstance eqJNull :: Eq JNull where\n eq _ _ = true\n\ninstance ordJNull :: Ord JNull where\n compare _ _ = EQ\n\n-- | Case analysis for `Json` values. See the README for more information.\ncaseJson\n :: forall a\n . (Unit -> a)\n -> (Boolean -> a)\n -> (Number -> a)\n -> (String -> a)\n -> (Array Json -> a)\n -> (Object Json -> a)\n -> Json\n -> a\ncaseJson a b c d e f json = runFn7 _caseJson a b c d e f json\n\n-- | A simpler version of `caseJson` which accepts a callback for when the\n-- | `Json` argument was null, and a default value for all other cases.\ncaseJsonNull :: forall a. a -> (Unit -> a) -> Json -> a\ncaseJsonNull d f j = runFn7 _caseJson f (const d) (const d) (const d) (const d) (const d) j\n\n-- | A simpler version of `caseJson` which accepts a callback for when the\n-- | `Json` argument was a `Boolean`, and a default value for all other cases.\ncaseJsonBoolean :: forall a. a -> (Boolean -> a) -> Json -> a\ncaseJsonBoolean d f j = runFn7 _caseJson (const d) f (const d) (const d) (const d) (const d) j\n\n-- | A simpler version of `caseJson` which accepts a callback for when the\n-- | `Json` argument was a `Number`, and a default value for all other cases.\ncaseJsonNumber :: forall a. a -> (Number -> a) -> Json -> a\ncaseJsonNumber d f j = runFn7 _caseJson (const d) (const d) f (const d) (const d) (const d) j\n\n-- | A simpler version of `caseJson` which accepts a callback for when the\n-- | `Json` argument was a `String`, and a default value for all other cases.\ncaseJsonString :: forall a. a -> (String -> a) -> Json -> a\ncaseJsonString d f j = runFn7 _caseJson (const d) (const d) (const d) f (const d) (const d) j\n\n-- | A simpler version of `caseJson` which accepts a callback for when the\n-- | `Json` argument was a `Array Json`, and a default value for all other cases.\ncaseJsonArray :: forall a. a -> (Array Json -> a) -> Json -> a\ncaseJsonArray d f j = runFn7 _caseJson (const d) (const d) (const d) (const d) f (const d) j\n\n-- | A simpler version of `caseJson` which accepts a callback for when the\n-- | `Json` argument was an `Object`, and a default value for all other cases.\ncaseJsonObject :: forall a. a -> (Object Json -> a) -> Json -> a\ncaseJsonObject d f j = runFn7 _caseJson (const d) (const d) (const d) (const d) (const d) f j\n\nverbJsonType :: forall a b. b -> (a -> b) -> (b -> (a -> b) -> Json -> b) -> Json -> b\nverbJsonType def f g = g def f\n\n-- Tests\n\nisJsonType :: forall a. (Boolean -> (a -> Boolean) -> Json -> Boolean) -> Json -> Boolean\nisJsonType = verbJsonType false (const true)\n\n-- | Check if the provided `Json` is the `null` value\nisNull :: Json -> Boolean\nisNull = isJsonType caseJsonNull\n\n-- | Check if the provided `Json` is a `Boolean`\nisBoolean :: Json -> Boolean\nisBoolean = isJsonType caseJsonBoolean\n\n-- | Check if the provided `Json` is a `Number`\nisNumber :: Json -> Boolean\nisNumber = isJsonType caseJsonNumber\n\n-- | Check if the provided `Json` is a `String`\nisString :: Json -> Boolean\nisString = isJsonType caseJsonString\n\n-- | Check if the provided `Json` is an `Array`\nisArray :: Json -> Boolean\nisArray = isJsonType caseJsonArray\n\n-- | Check if the provided `Json` is an `Object`\nisObject :: Json -> Boolean\nisObject = isJsonType caseJsonObject\n\n-- Decoding\n\ntoJsonType\n :: forall a\n . (Maybe a -> (a -> Maybe a) -> Json -> Maybe a)\n -> Json\n -> Maybe a\ntoJsonType = verbJsonType Nothing Just\n\n-- | Convert `Json` to the `Unit` value if the `Json` is the null value\ntoNull :: Json -> Maybe Unit\ntoNull = toJsonType caseJsonNull\n\n-- | Convert `Json` to a `Boolean` value, if the `Json` is a boolean.\ntoBoolean :: Json -> Maybe Boolean\ntoBoolean = toJsonType caseJsonBoolean\n\n-- | Convert `Json` to a `Number` value, if the `Json` is a number.\ntoNumber :: Json -> Maybe Number\ntoNumber = toJsonType caseJsonNumber\n\n-- | Convert `Json` to a `String` value, if the `Json` is a string. To write a\n-- | `Json` value to a JSON string, see `stringify`.\ntoString :: Json -> Maybe String\ntoString = toJsonType caseJsonString\n\n-- | Convert `Json` to an `Array` of `Json` values, if the `Json` is an array.\ntoArray :: Json -> Maybe (Array Json)\ntoArray = toJsonType caseJsonArray\n\n-- | Convert `Json` to an `Object` of `Json` values, if the `Json` is an object.\ntoObject :: Json -> Maybe (Object Json)\ntoObject = toJsonType caseJsonObject\n\n-- Encoding\n\n-- | Construct `Json` from a `Boolean` value\nforeign import fromBoolean :: Boolean -> Json\n\n-- | Construct `Json` from a `Number` value\nforeign import fromNumber :: Number -> Json\n\n-- | Construct the `Json` representation of a `String` value.\n-- | Note that this function only produces `Json` containing a single piece of `String`\n-- | data (similar to `fromBoolean`, `fromNumber`, etc.).\n-- | This function does NOT convert the `String` encoding of a JSON value to `Json` - For that\n-- | purpose, you'll need to use `jsonParser`.\nforeign import fromString :: String -> Json\n\n-- | Construct `Json` from an array of `Json` values\nforeign import fromArray :: Array Json -> Json\n\n-- | Construct `Json` from an object with `Json` values\nforeign import fromObject :: Object Json -> Json\n\n-- Defaults\n\n-- | The JSON null value represented as `Json`\nforeign import jsonNull :: Json\n\n-- | The true boolean value represented as `Json`\njsonTrue :: Json\njsonTrue = fromBoolean true\n\n-- | The false boolean value represented as `Json`\njsonFalse :: Json\njsonFalse = fromBoolean false\n\n-- | The number zero represented as `Json`\njsonZero :: Json\njsonZero = fromNumber 0.0\n\n-- | An empty string represented as `Json`\njsonEmptyString :: Json\njsonEmptyString = fromString \"\"\n\n-- | An empty array represented as `Json`\njsonEmptyArray :: Json\njsonEmptyArray = fromArray []\n\n-- | An empty object represented as `Json`\njsonEmptyObject :: Json\njsonEmptyObject = fromObject Obj.empty\n\n-- | Constructs a `Json` array value containing only the provided value\njsonSingletonArray :: Json -> Json\njsonSingletonArray j = fromArray [ j ]\n\n-- | Constructs a `Json` object value containing only the provided key and value\njsonSingletonObject :: String -> Json -> Json\njsonSingletonObject key val = fromObject (Obj.singleton key val)\n\n-- | Converts a `Json` value to a JSON string. To retrieve a string from a `Json`\n-- | string value, see `fromString`.\nforeign import stringify :: Json -> String\n\n-- | Converts a `Json` value to a JSON string.\n-- | The first `Int` argument specifies the amount of white space characters to use as indentation.\n-- | This number is capped at 10 (if it is greater, the value is just 10). Values less than 1 indicate that no space should be used.\nforeign import stringifyWithIndent :: Int -> Json -> String\n\nforeign import _caseJson\n :: forall z\n . Fn7\n (Unit -> z)\n (Boolean -> z)\n (Number -> z)\n (String -> z)\n (Array Json -> z)\n (Object Json -> z)\n Json\n z\n\nforeign import _compare :: Fn5 Ordering Ordering Ordering Json Json Ordering\n", "export function _jsonParser(fail, succ, s) {\n try {\n return succ(JSON.parse(s));\n }\n catch (e) {\n return fail(e.message);\n }\n}\n", "module Data.Argonaut.Parser (jsonParser) where\n\nimport Data.Argonaut.Core (Json)\nimport Data.Either (Either(..))\nimport Data.Function.Uncurried (Fn3, runFn3)\n\nforeign import _jsonParser :: forall a. Fn3 (String -> a) (Json -> a) String a\n\n-- | Parse a JSON string, constructing the `Json` value described by the string.\n-- | To convert a string into a `Json` string, see `fromString`.\njsonParser :: String -> Either String Json\njsonParser j = runFn3 _jsonParser Left Right j\n", "export const _localeCompare = function (lt) {\n return function (eq) {\n return function (gt) {\n return function (s1) {\n return function (s2) {\n var result = s1.localeCompare(s2);\n return result < 0 ? lt : result > 0 ? gt : eq;\n };\n };\n };\n };\n};\n\nexport const replace = function (s1) {\n return function (s2) {\n return function (s3) {\n return s3.replace(s1, s2);\n };\n };\n};\n\nexport const replaceAll = function (s1) {\n return function (s2) {\n return function (s3) {\n return s3.replace(new RegExp(s1.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, \"\\\\$&\"), \"g\"), s2); // eslint-disable-line no-useless-escape\n };\n };\n};\n\nexport const split = function (sep) {\n return function (s) {\n return s.split(sep);\n };\n};\n\nexport const toLower = function (s) {\n return s.toLowerCase();\n};\n\nexport const toUpper = function (s) {\n return s.toUpperCase();\n};\n\nexport const trim = function (s) {\n return s.trim();\n};\n\nexport const joinWith = function (s) {\n return function (xs) {\n return xs.join(s);\n };\n};\n", "module Data.String.Common\n ( null\n , localeCompare\n , replace\n , replaceAll\n , split\n , toLower\n , toUpper\n , trim\n , joinWith\n ) where\n\nimport Prelude\n\nimport Data.String.Pattern (Pattern, Replacement)\n\n-- | Returns `true` if the given string is empty.\n-- |\n-- | ```purescript\n-- | null \"\" == true\n-- | null \"Hi\" == false\n-- | ```\nnull :: String -> Boolean\nnull s = s == \"\"\n\n-- | Compare two strings in a locale-aware fashion. This is in contrast to\n-- | the `Ord` instance on `String` which treats strings as arrays of code\n-- | units:\n-- |\n-- | ```purescript\n-- | \"\u00E4\" `localeCompare` \"b\" == LT\n-- | \"\u00E4\" `compare` \"b\" == GT\n-- | ```\nlocaleCompare :: String -> String -> Ordering\nlocaleCompare = _localeCompare LT EQ GT\n\nforeign import _localeCompare\n :: Ordering\n -> Ordering\n -> Ordering\n -> String\n -> String\n -> Ordering\n\n-- | Replaces the first occurence of the pattern with the replacement string.\n-- |\n-- | ```purescript\n-- | replace (Pattern \"<=\") (Replacement \"\u2264\") \"a <= b <= c\" == \"a \u2264 b <= c\"\n-- | ```\nforeign import replace :: Pattern -> Replacement -> String -> String\n\n-- | Replaces all occurences of the pattern with the replacement string.\n-- |\n-- | ```purescript\n-- | replaceAll (Pattern \"<=\") (Replacement \"\u2264\") \"a <= b <= c\" == \"a \u2264 b \u2264 c\"\n-- | ```\nforeign import replaceAll :: Pattern -> Replacement -> String -> String\n\n-- | Returns the substrings of the second string separated along occurences\n-- | of the first string.\n-- |\n-- | ```purescript\n-- | split (Pattern \" \") \"hello world\" == [\"hello\", \"world\"]\n-- | ```\nforeign import split :: Pattern -> String -> Array String\n\n-- | Returns the argument converted to lowercase.\n-- |\n-- | ```purescript\n-- | toLower \"hElLo\" == \"hello\"\n-- | ```\nforeign import toLower :: String -> String\n\n-- | Returns the argument converted to uppercase.\n-- |\n-- | ```purescript\n-- | toUpper \"Hello\" == \"HELLO\"\n-- | ```\nforeign import toUpper :: String -> String\n\n-- | Removes whitespace from the beginning and end of a string, including\n-- | [whitespace characters](http://www.ecma-international.org/ecma-262/5.1/#sec-7.2)\n-- | and [line terminators](http://www.ecma-international.org/ecma-262/5.1/#sec-7.3).\n-- |\n-- | ```purescript\n-- | trim \" Hello \\n World\\n\\t \" == \"Hello \\n World\"\n-- | ```\nforeign import trim :: String -> String\n\n-- | Joins the strings in the array together, inserting the first argument\n-- | as separator between them.\n-- |\n-- | ```purescript\n-- | joinWith \", \" [\"apple\", \"banana\", \"orange\"] == \"apple, banana, orange\"\n-- | ```\nforeign import joinWith :: String -> Array String -> String\n", "// A helper which transforms the result of encodeURIComponent to be compliant\n// with RFC3986, as described in the MDN documentation here:\n//\n// https://web.archive.org/web/20201206001047/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\nfunction encodeURIComponent_to_RFC3986(input) {\n return input.replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16);\n });\n}\n\n// A helper which transforms the result of encodeURI to be compliant\n// with RFC3986, as described in the MDN documentation here:\n//\n// https://web.archive.org/web/20210117175449/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI#encoding_for_ipv6\nfunction encodeURI_to_RFC3986(input) {\n return input.replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n}\n\nexport function _encodeURIComponent(fail, succeed, input) {\n try {\n return succeed(encodeURIComponent_to_RFC3986(encodeURIComponent(input)));\n } catch (err) {\n return fail(err);\n }\n}\n\nexport function _encodeFormURLComponent(fail, succeed, input) {\n try {\n return succeed(encodeURIComponent_to_RFC3986(encodeURIComponent(input)).replace(/%20/g, \"+\"));\n } catch (err) {\n return fail(err);\n }\n}\n\nexport function _decodeURIComponent(fail, succeed, input) {\n try {\n return succeed(decodeURIComponent(input));\n } catch (err) {\n return fail(err);\n }\n}\n\nexport function _decodeFormURLComponent(fail, succeed, input) {\n return _decodeURIComponent(fail, succeed, input.replace(/\\+/g, \" \"));\n}\n\nexport function _encodeURI(fail, succeed, input) {\n try {\n return succeed(encodeURI_to_RFC3986(encodeURI(input)));\n } catch (err) {\n return fail(err);\n }\n}\n\nexport function _decodeURI(fail, succeed, input) {\n try {\n return succeed(decodeURI(input));\n } catch (err) {\n return fail(err);\n }\n}\n", "module JSURI\n ( encodeURIComponent\n , encodeFormURLComponent\n , encodeURI\n , decodeURIComponent\n , decodeFormURLComponent\n , decodeURI\n ) where\n\nimport Prelude\n\nimport Data.Function.Uncurried (Fn3, runFn3)\nimport Data.Maybe (Maybe(..))\n\nforeign import _encodeURIComponent :: Fn3 (String -> Maybe String) (String -> Maybe String) String (Maybe String)\n\n-- | URI-encode a string according to RFC3896. Implemented using JavaScript's\n-- | `encodeURIComponent`.\n-- |\n-- | ```purs\n-- | > encodeURIComponent \"https://purescript.org\"\n-- | Just \"https%3A%2F%2Fpurescript.org\"\n-- | ```\n-- |\n-- | Encoding a URI can fail with a `URIError` if the string contains malformed\n-- | characters. If you are confident you are encoding a well-formed string then\n-- | you can run this function unsafely:\n-- |\n-- | ```purs\n-- | import Partial.Unsafe (unsafePartial)\n-- | import Data.Maybe (fromJust)\n-- |\n-- | unsafeEncode :: String -> String\n-- | unsafeEncode str = unsafePartial $ fromJust $ encodeURIComponent str\n-- | ```\nencodeURIComponent :: String -> Maybe String\nencodeURIComponent = runFn3 _encodeURIComponent (const Nothing) Just\n\nforeign import _encodeFormURLComponent :: Fn3 (String -> Maybe String) (String -> Maybe String) String (Maybe String)\n\n-- | URI-encode a string according to RFC3896, except with spaces encoded using\n-- | '+' instead of '%20' to comply with application/x-www-form-urlencoded.\n-- |\n-- | ```purs\n-- | > encodeURIComponent \"abc ABC\"\n-- | Just \"abc%20ABC\"\n-- |\n-- | > encodeFormURLComponent \"abc ABC\"\n-- | Just \"abc+ABC\"\n-- | ```\nencodeFormURLComponent :: String -> Maybe String\nencodeFormURLComponent = runFn3 _encodeFormURLComponent (const Nothing) Just\n\nforeign import _decodeURIComponent :: Fn3 (String -> Maybe String) (String -> Maybe String) String (Maybe String)\n\n-- | Decode a URI string according to RFC3896. Implemented using JavaScript's\n-- | `decodeURIComponent`.\n-- |\n-- | ```purs\n-- | > decodeURIComponent \"https%3A%2F%2Fpurescript.org\"\n-- | Just \"https://purescript.org\"\n-- | ```\n-- |\n-- | Decoding a URI can fail with a `URIError` if the string contains malformed\n-- | characters. If you are confident you are encoding a well-formed string then\n-- | you can run this function unsafely:\n-- |\n-- | ```purs\n-- | import Partial.Unsafe (unsafePartial)\n-- | import Data.Maybe (fromJust)\n-- |\n-- | unsafeDecode :: String -> String\n-- | unsafeDecode str = unsafePartial $ fromJust $ decodeURIComponent str\n-- | ```\ndecodeURIComponent :: String -> Maybe String\ndecodeURIComponent = runFn3 _decodeURIComponent (const Nothing) Just\n\nforeign import _decodeFormURLComponent :: Fn3 (String -> Maybe String) (String -> Maybe String) String (Maybe String)\n\n-- | Decode a URI according to application/x-www-form-urlencoded (for example,\n-- | a string containing '+' for spaces or query parameters).\n-- |\n-- | ```purs\n-- | > decodeURIComponent \"https%3A%2F%2Fpurescript.org?search+query\"\n-- | Just \"https://purescript.org?search+query\"\n-- |\n-- | > decodeFormURLComponent \"https%3A%2F%2Fpurescript.org?search+query\"\n-- | Just \"https://purescript.org?search query\"\n-- | ```\ndecodeFormURLComponent :: String -> Maybe String\ndecodeFormURLComponent = runFn3 _decodeFormURLComponent (const Nothing) Just\n\nforeign import _encodeURI :: Fn3 (String -> Maybe String) (String -> Maybe String) String (Maybe String)\n\nencodeURI :: String -> Maybe String\nencodeURI = runFn3 _encodeURI (const Nothing) Just\n\nforeign import _decodeURI :: Fn3 (String -> Maybe String) (String -> Maybe String) String (Maybe String)\n\ndecodeURI :: String -> Maybe String\ndecodeURI = runFn3 _decodeURI (const Nothing) Just\n", "module Data.FormURLEncoded where\n\nimport Prelude\n\nimport Data.Maybe (Maybe(..))\nimport Data.Newtype (class Newtype)\nimport Data.String (joinWith, split) as String\nimport Data.String.Pattern (Pattern(..))\nimport Data.Traversable (traverse)\nimport Data.Tuple (Tuple(..))\nimport JSURI (decodeFormURLComponent, encodeFormURLComponent)\n\n-- | `FormURLEncoded` is an ordered list of key-value pairs with possible duplicates.\nnewtype FormURLEncoded = FormURLEncoded (Array (Tuple String (Maybe String)))\n\n-- | Construct `FormURLEncoded` from an `Array` of key-value pairs.\nfromArray :: Array (Tuple String (Maybe String)) -> FormURLEncoded\nfromArray = FormURLEncoded\n\n-- | View `FormURLEncoded` as an `Array` of key-value pairs.\ntoArray :: FormURLEncoded -> Array (Tuple String (Maybe String))\ntoArray (FormURLEncoded a) = a\n\nderive instance newtypeFormUrlEncoded :: Newtype FormURLEncoded _\nderive newtype instance eqFormUrlEncoded :: Eq FormURLEncoded\nderive newtype instance ordFormUrlEncoded :: Ord FormURLEncoded\nderive newtype instance semigroupFormUrlEncoded :: Semigroup FormURLEncoded\nderive newtype instance monoidFormUrlEncoded :: Monoid FormURLEncoded\n\ninstance showFormUrlEncoded :: Show FormURLEncoded where\n show (FormURLEncoded kvs) = \"(FormURLEncoded \" <> show kvs <> \")\"\n\n-- | Encode `FormURLEncoded` as `application/x-www-form-urlencoded`.\nencode :: FormURLEncoded -> Maybe String\nencode = map (String.joinWith \"&\") <<< traverse encodePart <<< toArray\n where\n encodePart = case _ of\n Tuple k Nothing -> encodeFormURLComponent k\n Tuple k (Just v) -> (\\key val -> key <> \"=\" <> val) <$> encodeFormURLComponent k <*> encodeFormURLComponent v\n\n-- | Decode `FormURLEncoded` from `application/x-www-form-urlencoded`.\ndecode :: String -> Maybe FormURLEncoded\ndecode = map FormURLEncoded <<< traverse decodePart <<< String.split (Pattern \"&\")\n where\n decodePart = String.split (Pattern \"=\") >>> case _ of\n [ k, v ] -> (\\key val -> Tuple key $ Just val) <$> decodeFormURLComponent k <*> decodeFormURLComponent v\n [ k ] -> Tuple <$> decodeFormURLComponent k <*> pure Nothing\n _ -> Nothing\n", "module Data.HTTP.Method\n ( Method(..)\n , CustomMethod\n , unCustomMethod\n , fromString\n , print\n ) where\n\nimport Prelude\n\nimport Data.Either (Either(..), either)\nimport Data.String as Str\n\n-- | The definition of the type is based on HTTP/1.1 with\n-- | [RFC 2518](https://tools.ietf.org/html/rfc2518) and\n-- | [RFC 5789](https://tools.ietf.org/html/rfc5789).\ndata Method\n -- HTTP/1.1\n = OPTIONS\n | GET\n | HEAD\n | POST\n | PUT\n | DELETE\n | TRACE\n | CONNECT\n\n -- RFC 2518\n | PROPFIND\n | PROPPATCH\n | MKCOL\n | COPY\n | MOVE\n | LOCK\n | UNLOCK\n\n -- RFC5789\n | PATCH\n\nderive instance eqMethod :: Eq Method\nderive instance ordMethod :: Ord Method\n\ninstance showMethod :: Show Method where\n show OPTIONS = \"OPTIONS\"\n show GET = \"GET\"\n show HEAD = \"HEAD\"\n show POST = \"POST\"\n show PUT = \"PUT\"\n show DELETE = \"DELETE\"\n show TRACE = \"TRACE\"\n show CONNECT = \"CONNECT\"\n show PROPFIND = \"PROPFIND\"\n show PROPPATCH = \"PROPPATCH\"\n show MKCOL = \"MKCOL\"\n show COPY = \"COPY\"\n show MOVE = \"MOVE\"\n show LOCK = \"LOCK\"\n show UNLOCK = \"UNLOCK\"\n show PATCH = \"PATCH\"\n\nnewtype CustomMethod = CustomMethod String\n\nunCustomMethod :: CustomMethod -> String\nunCustomMethod (CustomMethod m) = m\n\nderive instance eqCustomMethod :: Eq CustomMethod\nderive instance ordCustomMethod :: Ord CustomMethod\n\ninstance showCustomMethod :: Show CustomMethod where\n show (CustomMethod m) = \"(CustomMethod \" <> show m <> \")\"\n\n-- | Parses a `String` into a `Method` and pass the result into the first\n-- | handler. If the string does not match a known method,\n-- | passes itself into the second handler.\nparse :: forall c. (Method -> c) -> (String -> c) -> String -> c\nparse handleMethod handleUnknown s =\n case Str.toUpper s of\n \"OPTIONS\" -> handleMethod OPTIONS\n \"GET\" -> handleMethod GET\n \"HEAD\" -> handleMethod HEAD\n \"POST\" -> handleMethod POST\n \"PUT\" -> handleMethod PUT\n \"DELETE\" -> handleMethod DELETE\n \"TRACE\" -> handleMethod TRACE\n \"CONNECT\" -> handleMethod CONNECT\n \"PROPFIND\" -> handleMethod PROPFIND\n \"PROPPATCH\" -> handleMethod PROPPATCH\n \"MKCOL\" -> handleMethod MKCOL\n \"COPY\" -> handleMethod COPY\n \"MOVE\" -> handleMethod MOVE\n \"LOCK\" -> handleMethod LOCK\n \"UNLOCK\" -> handleMethod UNLOCK\n \"PATCH\" -> handleMethod PATCH\n m -> handleUnknown m\n\nfromString :: String -> Either Method CustomMethod\nfromString = parse Left (Right <<< CustomMethod)\n\nprint :: Either Method CustomMethod -> String\nprint = either show unCustomMethod\n", "-- | This module defines a generic non-empty data structure, which adds an\n-- | additional element to any container type.\nmodule Data.NonEmpty\n ( NonEmpty(..)\n , singleton\n , (:|)\n , foldl1\n , fromNonEmpty\n , oneOf\n , head\n , tail\n ) where\n\nimport Prelude\n\nimport Control.Alt ((<|>))\nimport Control.Alternative (class Alternative)\nimport Control.Plus (class Plus, empty)\nimport Data.Eq (class Eq1)\nimport Data.Foldable (class Foldable, foldl, foldr, foldMap)\nimport Data.FoldableWithIndex (class FoldableWithIndex, foldMapWithIndex, foldlWithIndex, foldrWithIndex)\nimport Data.FunctorWithIndex (class FunctorWithIndex, mapWithIndex)\nimport Data.Maybe (Maybe(..), maybe)\nimport Data.Ord (class Ord1)\nimport Data.Semigroup.Foldable (class Foldable1)\nimport Data.Semigroup.Foldable (foldl1) as Foldable1\nimport Data.Traversable (class Traversable, traverse, sequence)\nimport Data.TraversableWithIndex (class TraversableWithIndex, traverseWithIndex)\nimport Data.Tuple (uncurry)\nimport Data.Unfoldable (class Unfoldable, unfoldr)\nimport Data.Unfoldable1 (class Unfoldable1)\n\n-- | A non-empty container of elements of type a.\n-- |\n-- | ```purescript\n-- | import Data.NonEmpty\n-- |\n-- | nonEmptyArray :: NonEmpty Array Int\n-- | nonEmptyArray = NonEmpty 1 [2,3]\n-- |\n-- | import Data.List(List(..), (:))\n-- |\n-- | nonEmptyList :: NonEmpty List Int\n-- | nonEmptyList = NonEmpty 1 (2 : 3 : Nil)\n-- | ```\ndata NonEmpty f a = NonEmpty a (f a)\n\n-- | An infix synonym for `NonEmpty`.\n-- |\n-- | ```purescript\n-- | nonEmptyArray :: NonEmpty Array Int\n-- | nonEmptyArray = 1 :| [2,3]\n-- |\n-- | nonEmptyList :: NonEmpty List Int\n-- | nonEmptyList = 1 :| 2 : 3 : Nil\n-- | ```\ninfixr 5 NonEmpty as :|\n\n-- | Create a non-empty structure with a single value.\n-- |\n-- | ```purescript\n-- | import Prelude\n-- |\n-- | singleton 1 == 1 :| []\n-- | singleton 1 == 1 :| Nil\n-- | ```\nsingleton :: forall f a. Plus f => a -> NonEmpty f a\nsingleton a = a :| empty\n\n-- | Fold a non-empty structure, collecting results using a binary operation.\n-- |\n-- | ```purescript\n-- | foldl1 (+) (1 :| [2, 3]) == 6\n-- | ```\nfoldl1 :: forall f a. Foldable f => (a -> a -> a) -> NonEmpty f a -> a\nfoldl1 = Foldable1.foldl1\n\n-- | Apply a function that takes the `first` element and remaining elements\n-- | as arguments to a non-empty container.\n-- |\n-- | For example, return the remaining elements multiplied by the first element:\n-- |\n-- | ```purescript\n-- | fromNonEmpty (\\x xs -> map (_ * x) xs) (3 :| [2, 1]) == [6, 3]\n-- | ```\nfromNonEmpty :: forall f a r. (a -> f a -> r) -> NonEmpty f a -> r\nfromNonEmpty f (a :| fa) = a `f` fa\n\n-- | Returns the `alt` (`<|>`) result of:\n-- | - The first element lifted to the container of the remaining elements.\n-- | - The remaining elements.\n-- |\n-- | ```purescript\n-- | import Data.Maybe(Maybe(..))\n-- |\n-- | oneOf (1 :| Nothing) == Just 1\n-- | oneOf (1 :| Just 2) == Just 1\n-- |\n-- | oneOf (1 :| [2, 3]) == [1,2,3]\n-- | ```\noneOf :: forall f a. Alternative f => NonEmpty f a -> f a\noneOf (a :| fa) = pure a <|> fa\n\n-- | Get the 'first' element of a non-empty container.\n-- |\n-- | ```purescript\n-- | head (1 :| [2, 3]) == 1\n-- | ```\nhead :: forall f a. NonEmpty f a -> a\nhead (x :| _) = x\n\n-- | Get everything but the 'first' element of a non-empty container.\n-- |\n-- | ```purescript\n-- | tail (1 :| [2, 3]) == [2, 3]\n-- | ```\ntail :: forall f a. NonEmpty f a -> f a\ntail (_ :| xs) = xs\n\ninstance showNonEmpty :: (Show a, Show (f a)) => Show (NonEmpty f a) where\n show (a :| fa) = \"(NonEmpty \" <> show a <> \" \" <> show fa <> \")\"\n\nderive instance eqNonEmpty :: (Eq1 f, Eq a) => Eq (NonEmpty f a)\n\nderive instance eq1NonEmpty :: Eq1 f => Eq1 (NonEmpty f)\n\nderive instance ordNonEmpty :: (Ord1 f, Ord a) => Ord (NonEmpty f a)\n\nderive instance ord1NonEmpty :: Ord1 f => Ord1 (NonEmpty f)\n\nderive instance functorNonEmpty :: Functor f => Functor (NonEmpty f)\n\ninstance functorWithIndex\n :: FunctorWithIndex i f\n => FunctorWithIndex (Maybe i) (NonEmpty f) where\n mapWithIndex f (a :| fa) = f Nothing a :| mapWithIndex (f <<< Just) fa\n\ninstance foldableNonEmpty :: Foldable f => Foldable (NonEmpty f) where\n foldMap f (a :| fa) = f a <> foldMap f fa\n foldl f b (a :| fa) = foldl f (f b a) fa\n foldr f b (a :| fa) = f a (foldr f b fa)\n\ninstance foldableWithIndexNonEmpty\n :: (FoldableWithIndex i f)\n => FoldableWithIndex (Maybe i) (NonEmpty f) where\n foldMapWithIndex f (a :| fa) = f Nothing a <> foldMapWithIndex (f <<< Just) fa\n foldlWithIndex f b (a :| fa) = foldlWithIndex (f <<< Just) (f Nothing b a) fa\n foldrWithIndex f b (a :| fa) = f Nothing a (foldrWithIndex (f <<< Just) b fa)\n\ninstance traversableNonEmpty :: Traversable f => Traversable (NonEmpty f) where\n sequence (a :| fa) = NonEmpty <$> a <*> sequence fa\n traverse f (a :| fa) = NonEmpty <$> f a <*> traverse f fa\n\ninstance traversableWithIndexNonEmpty\n :: (TraversableWithIndex i f)\n => TraversableWithIndex (Maybe i) (NonEmpty f) where\n traverseWithIndex f (a :| fa) =\n NonEmpty <$> f Nothing a <*> traverseWithIndex (f <<< Just) fa\n\ninstance foldable1NonEmpty :: Foldable f => Foldable1 (NonEmpty f) where\n foldMap1 f (a :| fa) = foldl (\\s a1 -> s <> f a1) (f a) fa\n foldr1 f (a :| fa) = maybe a (f a) $ foldr (\\a1 -> Just <<< maybe a1 (f a1)) Nothing fa\n foldl1 f (a :| fa) = foldl f a fa\n\ninstance unfoldable1NonEmpty :: Unfoldable f => Unfoldable1 (NonEmpty f) where\n unfoldr1 f b = uncurry (:|) $ unfoldr (map f) <$> f b\n\n-- | This is a lawful `Semigroup` instance that will behave sensibly for common nonempty\n-- | containers like lists and arrays. However, it's not guaranteed that `pure` will behave\n-- | sensibly alongside `<>` for all types, as we don't have any laws which govern their behavior.\ninstance semigroupNonEmpty\n :: (Applicative f, Semigroup (f a))\n => Semigroup (NonEmpty f a) where\n append (a1 :| f1) (a2 :| f2) = a1 :| (f1 <> pure a2 <> f2)\n", "module Data.List.Types\n ( List(..)\n , (:)\n , NonEmptyList(..)\n , toList\n , nelCons\n ) where\n\nimport Prelude\n\nimport Control.Alt (class Alt)\nimport Control.Alternative (class Alternative)\nimport Control.Apply (lift2)\nimport Control.Comonad (class Comonad)\nimport Control.Extend (class Extend)\nimport Control.MonadPlus (class MonadPlus)\nimport Control.Plus (class Plus)\nimport Data.Eq (class Eq1, eq1)\nimport Data.Foldable (class Foldable, foldl, foldr, intercalate)\nimport Data.FoldableWithIndex (class FoldableWithIndex, foldlWithIndex, foldrWithIndex, foldMapWithIndex)\nimport Data.FunctorWithIndex (class FunctorWithIndex, mapWithIndex)\nimport Data.Maybe (Maybe(..), maybe)\nimport Data.Newtype (class Newtype)\nimport Data.NonEmpty (NonEmpty, (:|))\nimport Data.NonEmpty as NE\nimport Data.Ord (class Ord1, compare1)\nimport Data.Semigroup.Foldable (class Foldable1)\nimport Data.Semigroup.Traversable (class Traversable1, traverse1)\nimport Data.Traversable (class Traversable, traverse)\nimport Data.TraversableWithIndex (class TraversableWithIndex, traverseWithIndex)\nimport Data.Tuple (Tuple(..), snd)\nimport Data.Unfoldable (class Unfoldable)\nimport Data.Unfoldable1 (class Unfoldable1)\n\ndata List a = Nil | Cons a (List a)\n\ninfixr 6 Cons as :\n\ninstance showList :: Show a => Show (List a) where\n show Nil = \"Nil\"\n show xs = \"(\" <> intercalate \" : \" (show <$> xs) <> \" : Nil)\"\n\ninstance eqList :: Eq a => Eq (List a) where\n eq = eq1\n\ninstance eq1List :: Eq1 List where\n eq1 xs ys = go xs ys true\n where\n go _ _ false = false\n go Nil Nil acc = acc\n go (x : xs') (y : ys') acc = go xs' ys' $ acc && (y == x)\n go _ _ _ = false\n\ninstance ordList :: Ord a => Ord (List a) where\n compare = compare1\n\ninstance ord1List :: Ord1 List where\n compare1 xs ys = go xs ys\n where\n go Nil Nil = EQ\n go Nil _ = LT\n go _ Nil = GT\n go (x : xs') (y : ys') =\n case compare x y of\n EQ -> go xs' ys'\n other -> other\n\ninstance semigroupList :: Semigroup (List a) where\n append xs ys = foldr (:) ys xs\n\ninstance monoidList :: Monoid (List a) where\n mempty = Nil\n\ninstance functorList :: Functor List where\n map = listMap\n\n-- chunked list Functor inspired by OCaml\n-- https://discuss.ocaml.org/t/a-new-list-map-that-is-both-stack-safe-and-fast/865\n-- chunk sizes determined through experimentation\nlistMap :: forall a b. (a -> b) -> List a -> List b\nlistMap f = chunkedRevMap Nil\n where\n chunkedRevMap :: List (List a) -> List a -> List b\n chunkedRevMap chunksAcc chunk@(_ : _ : _ : xs) =\n chunkedRevMap (chunk : chunksAcc) xs\n chunkedRevMap chunksAcc xs =\n reverseUnrolledMap chunksAcc $ unrolledMap xs\n where\n unrolledMap :: List a -> List b\n unrolledMap (x1 : x2 : Nil) = f x1 : f x2 : Nil\n unrolledMap (x1 : Nil) = f x1 : Nil\n unrolledMap _ = Nil\n\n reverseUnrolledMap :: List (List a) -> List b -> List b\n reverseUnrolledMap ((x1 : x2 : x3 : _) : cs) acc =\n reverseUnrolledMap cs (f x1 : f x2 : f x3 : acc)\n reverseUnrolledMap _ acc = acc\n\ninstance functorWithIndexList :: FunctorWithIndex Int List where\n mapWithIndex f = foldrWithIndex (\\i x acc -> f i x : acc) Nil\n\ninstance foldableList :: Foldable List where\n foldr f b = foldl (flip f) b <<< rev\n where\n rev = go Nil\n where\n go acc Nil = acc\n go acc (x : xs) = go (x : acc) xs\n foldl f = go\n where\n go b = case _ of\n Nil -> b\n a : as -> go (f b a) as\n foldMap f = foldl (\\acc -> append acc <<< f) mempty\n\ninstance foldableWithIndexList :: FoldableWithIndex Int List where\n foldrWithIndex f b xs =\n -- as we climb the reversed list, we decrement the index\n snd $ foldl\n (\\(Tuple i b') a -> Tuple (i - 1) (f (i - 1) a b'))\n (Tuple len b)\n revList\n where\n Tuple len revList = rev (Tuple 0 Nil) xs\n where\n -- As we create our reversed list, we count elements.\n rev = foldl (\\(Tuple i acc) a -> Tuple (i + 1) (a : acc))\n foldlWithIndex f acc =\n snd <<< foldl (\\(Tuple i b) a -> Tuple (i + 1) (f i b a)) (Tuple 0 acc)\n foldMapWithIndex f = foldlWithIndex (\\i acc -> append acc <<< f i) mempty\n\ninstance unfoldable1List :: Unfoldable1 List where\n unfoldr1 f b = go b Nil\n where\n go source memo = case f source of\n Tuple one (Just rest) -> go rest (one : memo)\n Tuple one Nothing -> foldl (flip (:)) Nil (one : memo)\n\ninstance unfoldableList :: Unfoldable List where\n unfoldr f b = go b Nil\n where\n go source memo = case f source of\n Nothing -> (foldl (flip (:)) Nil memo)\n Just (Tuple one rest) -> go rest (one : memo)\n\ninstance traversableList :: Traversable List where\n traverse f = map (foldl (flip (:)) Nil) <<< foldl (\\acc -> lift2 (flip (:)) acc <<< f) (pure Nil)\n sequence = traverse identity\n\ninstance traversableWithIndexList :: TraversableWithIndex Int List where\n traverseWithIndex f =\n map rev\n <<< foldlWithIndex (\\i acc -> lift2 (flip (:)) acc <<< f i) (pure Nil)\n where\n rev = foldl (flip Cons) Nil\n\ninstance applyList :: Apply List where\n apply Nil _ = Nil\n apply (f : fs) xs = (f <$> xs) <> (fs <*> xs)\n\ninstance applicativeList :: Applicative List where\n pure a = a : Nil\n\ninstance bindList :: Bind List where\n bind Nil _ = Nil\n bind (x : xs) f = f x <> bind xs f\n\ninstance monadList :: Monad List\n\ninstance altList :: Alt List where\n alt = append\n\ninstance plusList :: Plus List where\n empty = Nil\n\ninstance alternativeList :: Alternative List\n\ninstance monadPlusList :: MonadPlus List\n\ninstance extendList :: Extend List where\n extend _ Nil = Nil\n extend f l@(_ : as) =\n f l : (foldr go { val: Nil, acc: Nil } as).val\n where\n go a' { val, acc } =\n let acc' = a' : acc\n in { val: f acc' : val, acc: acc' }\n\nnewtype NonEmptyList a = NonEmptyList (NonEmpty List a)\n\ntoList :: NonEmptyList ~> List\ntoList (NonEmptyList (x :| xs)) = x : xs\n\nnelCons :: forall a. a -> NonEmptyList a -> NonEmptyList a\nnelCons a (NonEmptyList (b :| bs)) = NonEmptyList (a :| b : bs)\n\nderive instance newtypeNonEmptyList :: Newtype (NonEmptyList a) _\n\nderive newtype instance eqNonEmptyList :: Eq a => Eq (NonEmptyList a)\nderive newtype instance ordNonEmptyList :: Ord a => Ord (NonEmptyList a)\n\nderive newtype instance eq1NonEmptyList :: Eq1 NonEmptyList\nderive newtype instance ord1NonEmptyList :: Ord1 NonEmptyList\n\ninstance showNonEmptyList :: Show a => Show (NonEmptyList a) where\n show (NonEmptyList nel) = \"(NonEmptyList \" <> show nel <> \")\"\n\nderive newtype instance functorNonEmptyList :: Functor NonEmptyList\n\ninstance applyNonEmptyList :: Apply NonEmptyList where\n apply (NonEmptyList (f :| fs)) (NonEmptyList (a :| as)) =\n NonEmptyList (f a :| (fs <*> a : Nil) <> ((f : fs) <*> as))\n\ninstance applicativeNonEmptyList :: Applicative NonEmptyList where\n pure = NonEmptyList <<< NE.singleton\n\ninstance bindNonEmptyList :: Bind NonEmptyList where\n bind (NonEmptyList (a :| as)) f =\n case f a of\n NonEmptyList (b :| bs) ->\n NonEmptyList (b :| bs <> bind as (toList <<< f))\n\ninstance monadNonEmptyList :: Monad NonEmptyList\n\ninstance altNonEmptyList :: Alt NonEmptyList where\n alt = append\n\ninstance extendNonEmptyList :: Extend NonEmptyList where\n extend f w@(NonEmptyList (_ :| as)) =\n NonEmptyList (f w :| (foldr go { val: Nil, acc: Nil } as).val)\n where\n go a { val, acc } = { val: f (NonEmptyList (a :| acc)) : val, acc: a : acc }\n\ninstance comonadNonEmptyList :: Comonad NonEmptyList where\n extract (NonEmptyList (a :| _)) = a\n\ninstance semigroupNonEmptyList :: Semigroup (NonEmptyList a) where\n append (NonEmptyList (a :| as)) as' =\n NonEmptyList (a :| as <> toList as')\n\nderive newtype instance foldableNonEmptyList :: Foldable NonEmptyList\n\nderive newtype instance traversableNonEmptyList :: Traversable NonEmptyList\n\nderive newtype instance foldable1NonEmptyList :: Foldable1 NonEmptyList\n\nderive newtype instance unfoldable1NonEmptyList :: Unfoldable1 NonEmptyList\n\ninstance functorWithIndexNonEmptyList :: FunctorWithIndex Int NonEmptyList where\n mapWithIndex fn (NonEmptyList ne) = NonEmptyList $ mapWithIndex (fn <<< maybe 0 (add 1)) ne\n\ninstance foldableWithIndexNonEmptyList :: FoldableWithIndex Int NonEmptyList where\n foldMapWithIndex f (NonEmptyList ne) = foldMapWithIndex (f <<< maybe 0 (add 1)) ne\n foldlWithIndex f b (NonEmptyList ne) = foldlWithIndex (f <<< maybe 0 (add 1)) b ne\n foldrWithIndex f b (NonEmptyList ne) = foldrWithIndex (f <<< maybe 0 (add 1)) b ne\n\ninstance traversableWithIndexNonEmptyList :: TraversableWithIndex Int NonEmptyList where\n traverseWithIndex f (NonEmptyList ne) = NonEmptyList <$> traverseWithIndex (f <<< maybe 0 (add 1)) ne\n\ninstance traversable1NonEmptyList :: Traversable1 NonEmptyList where\n traverse1 f (NonEmptyList (a :| as)) =\n foldl (\\acc -> lift2 (flip nelCons) acc <<< f) (pure <$> f a) as\n <#> case _ of NonEmptyList (x :| xs) \u2192 foldl (flip nelCons) (pure x) xs\n sequence1 = traverse1 identity\n", "-- | This module defines a type of _strict_ linked lists, and associated helper\n-- | functions and type class instances.\n-- |\n-- | _Note_: Depending on your use-case, you may prefer to use\n-- | `Data.Sequence` instead, which might give better performance for certain\n-- | use cases. This module is an improvement over `Data.Array` when working with\n-- | immutable lists of data in a purely-functional setting, but does not have\n-- | good random-access performance.\n\nmodule Data.List\n ( module Data.List.Types\n , toUnfoldable\n , fromFoldable\n\n , singleton\n , (..), range\n , some\n , someRec\n , many\n , manyRec\n\n , null\n , length\n\n , snoc\n , insert\n , insertBy\n\n , head\n , last\n , tail\n , init\n , uncons\n , unsnoc\n\n , (!!), index\n , elemIndex\n , elemLastIndex\n , findIndex\n , findLastIndex\n , insertAt\n , deleteAt\n , updateAt\n , modifyAt\n , alterAt\n\n , reverse\n , concat\n , concatMap\n , filter\n , filterM\n , mapMaybe\n , catMaybes\n\n , sort\n , sortBy\n\n , Pattern(..)\n , stripPrefix\n , slice\n , take\n , takeEnd\n , takeWhile\n , drop\n , dropEnd\n , dropWhile\n , span\n , group\n , groupAll\n , groupBy\n , groupAllBy\n , partition\n\n , nub\n , nubBy\n , nubEq\n , nubByEq\n , union\n , unionBy\n , delete\n , deleteBy\n , (\\\\), difference\n , intersect\n , intersectBy\n\n , zipWith\n , zipWithA\n , zip\n , unzip\n\n , transpose\n\n , foldM\n\n , module Exports\n ) where\n\nimport Prelude\n\nimport Control.Alt ((<|>))\nimport Control.Alternative (class Alternative)\nimport Control.Lazy (class Lazy, defer)\nimport Control.Monad.Rec.Class (class MonadRec, Step(..), tailRecM, tailRecM2)\nimport Data.Bifunctor (bimap)\nimport Data.Foldable (class Foldable, foldr, any, foldl)\nimport Data.Foldable (foldl, foldr, foldMap, fold, intercalate, elem, notElem, find, findMap, any, all) as Exports\nimport Data.List.Internal (emptySet, insertAndLookupBy)\nimport Data.List.Types (List(..), (:))\nimport Data.List.Types (NonEmptyList(..)) as NEL\nimport Data.Maybe (Maybe(..))\nimport Data.Newtype (class Newtype)\nimport Data.NonEmpty ((:|))\nimport Data.Traversable (scanl, scanr) as Exports\nimport Data.Traversable (sequence)\nimport Data.Tuple (Tuple(..))\nimport Data.Unfoldable (class Unfoldable, unfoldr)\n\n-- | Convert a list into any unfoldable structure.\n-- |\n-- | Running time: `O(n)`\ntoUnfoldable :: forall f. Unfoldable f => List ~> f\ntoUnfoldable = unfoldr (\\xs -> (\\rec -> Tuple rec.head rec.tail) <$> uncons xs)\n\n-- | Construct a list from a foldable structure.\n-- |\n-- | Running time: `O(n)`\nfromFoldable :: forall f. Foldable f => f ~> List\nfromFoldable = foldr Cons Nil\n\n--------------------------------------------------------------------------------\n-- List creation ---------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Create a list with a single element.\n-- |\n-- | Running time: `O(1)`\nsingleton :: forall a. a -> List a\nsingleton a = a : Nil\n\n-- | An infix synonym for `range`.\ninfix 8 range as ..\n\n-- | Create a list containing a range of integers, including both endpoints.\nrange :: Int -> Int -> List Int\nrange start end | start == end = singleton start\n | otherwise = go end start (if start > end then 1 else -1) Nil\n where\n go s e step rest | s == e = s : rest\n | otherwise = go (s + step) e step (s : rest)\n\n-- | Attempt a computation multiple times, requiring at least one success.\n-- |\n-- | The `Lazy` constraint is used to generate the result lazily, to ensure\n-- | termination.\nsome :: forall f a. Alternative f => Lazy (f (List a)) => f a -> f (List a)\nsome v = Cons <$> v <*> defer (\\_ -> many v)\n\n-- | A stack-safe version of `some`, at the cost of a `MonadRec` constraint.\nsomeRec :: forall f a. MonadRec f => Alternative f => f a -> f (List a)\nsomeRec v = Cons <$> v <*> manyRec v\n\n-- | Attempt a computation multiple times, returning as many successful results\n-- | as possible (possibly zero).\n-- |\n-- | The `Lazy` constraint is used to generate the result lazily, to ensure\n-- | termination.\nmany :: forall f a. Alternative f => Lazy (f (List a)) => f a -> f (List a)\nmany v = some v <|> pure Nil\n\n-- | A stack-safe version of `many`, at the cost of a `MonadRec` constraint.\nmanyRec :: forall f a. MonadRec f => Alternative f => f a -> f (List a)\nmanyRec p = tailRecM go Nil\n where\n go :: List a -> f (Step (List a) (List a))\n go acc = do\n aa <- (Loop <$> p) <|> pure (Done unit)\n pure $ bimap (_ : acc) (\\_ -> reverse acc) aa\n\n--------------------------------------------------------------------------------\n-- List size -------------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Test whether a list is empty.\n-- |\n-- | Running time: `O(1)`\nnull :: forall a. List a -> Boolean\nnull Nil = true\nnull _ = false\n\n-- | Get the length of a list\n-- |\n-- | Running time: `O(n)`\nlength :: forall a. List a -> Int\nlength = foldl (\\acc _ -> acc + 1) 0\n\n--------------------------------------------------------------------------------\n-- Extending lists -------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Append an element to the end of a list, creating a new list.\n-- |\n-- | Running time: `O(n)`\nsnoc :: forall a. List a -> a -> List a\nsnoc xs x = foldr (:) (x : Nil) xs\n\n-- | Insert an element into a sorted list.\n-- |\n-- | Running time: `O(n)`\ninsert :: forall a. Ord a => a -> List a -> List a\ninsert = insertBy compare\n\n-- | Insert an element into a sorted list, using the specified function to\n-- | determine the ordering of elements.\n-- |\n-- | Running time: `O(n)`\ninsertBy :: forall a. (a -> a -> Ordering) -> a -> List a -> List a\ninsertBy _ x Nil = singleton x\ninsertBy cmp x ys@(y : ys') =\n case cmp x y of\n GT -> y : (insertBy cmp x ys')\n _ -> x : ys\n\n--------------------------------------------------------------------------------\n-- Non-indexed reads -----------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Get the first element in a list, or `Nothing` if the list is empty.\n-- |\n-- | Running time: `O(1)`.\nhead :: List ~> Maybe\nhead Nil = Nothing\nhead (x : _) = Just x\n\n-- | Get the last element in a list, or `Nothing` if the list is empty.\n-- |\n-- | Running time: `O(n)`.\nlast :: List ~> Maybe\nlast (x : Nil) = Just x\nlast (_ : xs) = last xs\nlast _ = Nothing\n\n-- | Get all but the first element of a list, or `Nothing` if the list is empty.\n-- |\n-- | Running time: `O(1)`\ntail :: forall a. List a -> Maybe (List a)\ntail Nil = Nothing\ntail (_ : xs) = Just xs\n\n-- | Get all but the last element of a list, or `Nothing` if the list is empty.\n-- |\n-- | Running time: `O(n)`\ninit :: forall a. List a -> Maybe (List a)\ninit lst = _.init <$> unsnoc lst\n\n-- | Break a list into its first element, and the remaining elements,\n-- | or `Nothing` if the list is empty.\n-- |\n-- | Running time: `O(1)`\nuncons :: forall a. List a -> Maybe { head :: a, tail :: List a }\nuncons Nil = Nothing\nuncons (x : xs) = Just { head: x, tail: xs }\n\n-- | Break a list into its last element, and the preceding elements,\n-- | or `Nothing` if the list is empty.\n-- |\n-- | Running time: `O(n)`\nunsnoc :: forall a. List a -> Maybe { init :: List a, last :: a }\nunsnoc lst = (\\h -> { init: reverse h.revInit, last: h.last }) <$> go lst Nil\n where\n go Nil _ = Nothing\n go (x : Nil) acc = Just { revInit: acc, last: x }\n go (x : xs) acc = go xs (x : acc)\n\n--------------------------------------------------------------------------------\n-- Indexed operations ----------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Get the element at the specified index, or `Nothing` if the index is out-of-bounds.\n-- |\n-- | Running time: `O(n)` where `n` is the required index.\nindex :: forall a. List a -> Int -> Maybe a\nindex Nil _ = Nothing\nindex (a : _) 0 = Just a\nindex (_ : as) i = index as (i - 1)\n\n-- | An infix synonym for `index`.\ninfixl 8 index as !!\n\n-- | Find the index of the first element equal to the specified element.\nelemIndex :: forall a. Eq a => a -> List a -> Maybe Int\nelemIndex x = findIndex (_ == x)\n\n-- | Find the index of the last element equal to the specified element.\nelemLastIndex :: forall a. Eq a => a -> List a -> Maybe Int\nelemLastIndex x = findLastIndex (_ == x)\n\n-- | Find the first index for which a predicate holds.\nfindIndex :: forall a. (a -> Boolean) -> List a -> Maybe Int\nfindIndex fn = go 0\n where\n go :: Int -> List a -> Maybe Int\n go n (x : xs) | fn x = Just n\n | otherwise = go (n + 1) xs\n go _ Nil = Nothing\n\n-- | Find the last index for which a predicate holds.\nfindLastIndex :: forall a. (a -> Boolean) -> List a -> Maybe Int\nfindLastIndex fn xs = ((length xs - 1) - _) <$> findIndex fn (reverse xs)\n\n-- | Insert an element into a list at the specified index, returning a new\n-- | list or `Nothing` if the index is out-of-bounds.\n-- |\n-- | Running time: `O(n)`\ninsertAt :: forall a. Int -> a -> List a -> Maybe (List a)\ninsertAt 0 x xs = Just (x : xs)\ninsertAt n x (y : ys) = (y : _) <$> insertAt (n - 1) x ys\ninsertAt _ _ _ = Nothing\n\n-- | Delete an element from a list at the specified index, returning a new\n-- | list or `Nothing` if the index is out-of-bounds.\n-- |\n-- | Running time: `O(n)`\ndeleteAt :: forall a. Int -> List a -> Maybe (List a)\ndeleteAt 0 (_ : ys) = Just ys\ndeleteAt n (y : ys) = (y : _) <$> deleteAt (n - 1) ys\ndeleteAt _ _ = Nothing\n\n-- | Update the element at the specified index, returning a new\n-- | list or `Nothing` if the index is out-of-bounds.\n-- |\n-- | Running time: `O(n)`\nupdateAt :: forall a. Int -> a -> List a -> Maybe (List a)\nupdateAt 0 x ( _ : xs) = Just (x : xs)\nupdateAt n x (x1 : xs) = (x1 : _) <$> updateAt (n - 1) x xs\nupdateAt _ _ _ = Nothing\n\n-- | Update the element at the specified index by applying a function to\n-- | the current value, returning a new list or `Nothing` if the index is\n-- | out-of-bounds.\n-- |\n-- | Running time: `O(n)`\nmodifyAt :: forall a. Int -> (a -> a) -> List a -> Maybe (List a)\nmodifyAt n f = alterAt n (Just <<< f)\n\n-- | Update or delete the element at the specified index by applying a\n-- | function to the current value, returning a new list or `Nothing` if the\n-- | index is out-of-bounds.\n-- |\n-- | Running time: `O(n)`\nalterAt :: forall a. Int -> (a -> Maybe a) -> List a -> Maybe (List a)\nalterAt 0 f (y : ys) = Just $\n case f y of\n Nothing -> ys\n Just y' -> y' : ys\nalterAt n f (y : ys) = (y : _) <$> alterAt (n - 1) f ys\nalterAt _ _ _ = Nothing\n\n--------------------------------------------------------------------------------\n-- Transformations -------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Reverse a list.\n-- |\n-- | Running time: `O(n)`\nreverse :: List ~> List\nreverse = go Nil\n where\n go acc Nil = acc\n go acc (x : xs) = go (x : acc) xs\n\n-- | Flatten a list of lists.\n-- |\n-- | Running time: `O(n)`, where `n` is the total number of elements.\nconcat :: forall a. List (List a) -> List a\nconcat = (_ >>= identity)\n\n-- | Apply a function to each element in a list, and flatten the results\n-- | into a single, new list.\n-- |\n-- | Running time: `O(n)`, where `n` is the total number of elements.\nconcatMap :: forall a b. (a -> List b) -> List a -> List b\nconcatMap = flip bind\n\n-- | Filter a list, keeping the elements which satisfy a predicate function.\n-- |\n-- | Running time: `O(n)`\nfilter :: forall a. (a -> Boolean) -> List a -> List a\nfilter p = go Nil\n where\n go acc Nil = reverse acc\n go acc (x : xs)\n | p x = go (x : acc) xs\n | otherwise = go acc xs\n\n-- | Filter where the predicate returns a monadic `Boolean`.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | powerSet :: forall a. [a] -> [[a]]\n-- | powerSet = filterM (const [true, false])\n-- | ```\nfilterM :: forall a m. Monad m => (a -> m Boolean) -> List a -> m (List a)\nfilterM _ Nil = pure Nil\nfilterM p (x : xs) = do\n b <- p x\n xs' <- filterM p xs\n pure if b then x : xs' else xs'\n\n-- | Apply a function to each element in a list, keeping only the results which\n-- | contain a value.\n-- |\n-- | Running time: `O(n)`\nmapMaybe :: forall a b. (a -> Maybe b) -> List a -> List b\nmapMaybe f = go Nil\n where\n go acc Nil = reverse acc\n go acc (x : xs) =\n case f x of\n Nothing -> go acc xs\n Just y -> go (y : acc) xs\n\n-- | Filter a list of optional values, keeping only the elements which contain\n-- | a value.\ncatMaybes :: forall a. List (Maybe a) -> List a\ncatMaybes = mapMaybe identity\n\n--------------------------------------------------------------------------------\n-- Sorting ---------------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Sort the elements of an list in increasing order.\nsort :: forall a. Ord a => List a -> List a\nsort xs = sortBy compare xs\n\n-- | Sort the elements of a list in increasing order, where elements are\n-- | compared using the specified ordering.\nsortBy :: forall a. (a -> a -> Ordering) -> List a -> List a\nsortBy cmp = mergeAll <<< sequences\n -- implementation lifted from http://hackage.haskell.org/package/base-4.8.0.0/docs/src/Data-OldList.html#sort\n where\n sequences :: List a -> List (List a)\n sequences (a : b : xs)\n | a `cmp` b == GT = descending b (singleton a) xs\n | otherwise = ascending b (a : _) xs\n sequences xs = singleton xs\n\n descending :: a -> List a -> List a -> List (List a)\n descending a as (b : bs)\n | a `cmp` b == GT = descending b (a : as) bs\n descending a as bs = (a : as) : sequences bs\n\n ascending :: a -> (List a -> List a) -> List a -> List (List a)\n ascending a as (b : bs)\n | a `cmp` b /= GT = ascending b (\\ys -> as (a : ys)) bs\n ascending a as bs = ((as $ singleton a) : sequences bs)\n\n mergeAll :: List (List a) -> List a\n mergeAll (x : Nil) = x\n mergeAll xs = mergeAll (mergePairs xs)\n\n mergePairs :: List (List a) -> List (List a)\n mergePairs (a : b : xs) = merge a b : mergePairs xs\n mergePairs xs = xs\n\n merge :: List a -> List a -> List a\n merge as@(a : as') bs@(b : bs')\n | a `cmp` b == GT = b : merge as bs'\n | otherwise = a : merge as' bs\n merge Nil bs = bs\n merge as Nil = as\n\n--------------------------------------------------------------------------------\n-- Sublists --------------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | A newtype used in cases where there is a list to be matched.\nnewtype Pattern a = Pattern (List a)\n\nderive instance eqPattern :: Eq a => Eq (Pattern a)\nderive instance ordPattern :: Ord a => Ord (Pattern a)\nderive instance newtypePattern :: Newtype (Pattern a) _\n\ninstance showPattern :: Show a => Show (Pattern a) where\n show (Pattern s) = \"(Pattern \" <> show s <> \")\"\n\n\n-- | If the list starts with the given prefix, return the portion of the\n-- | list left after removing it, as a Just value. Otherwise, return Nothing.\n-- | * `stripPrefix (Pattern (1:Nil)) (1:2:Nil) == Just (2:Nil)`\n-- | * `stripPrefix (Pattern Nil) (1:Nil) == Just (1:Nil)`\n-- | * `stripPrefix (Pattern (2:Nil)) (1:Nil) == Nothing`\n-- |\n-- | Running time: `O(n)` where `n` is the number of elements to strip.\nstripPrefix :: forall a. Eq a => Pattern a -> List a -> Maybe (List a)\nstripPrefix (Pattern p') s = tailRecM2 go p' s\n where\n go prefix input = case prefix, input of\n Cons p ps, Cons i is | p == i -> Just $ Loop { a: ps, b: is }\n Nil, is -> Just $ Done is\n _, _ -> Nothing\n\n-- | Extract a sublist by a start and end index.\nslice :: Int -> Int -> List ~> List\nslice start end xs = take (end - start) (drop start xs)\n\n-- | Take the specified number of elements from the front of a list.\n-- |\n-- | Running time: `O(n)` where `n` is the number of elements to take.\ntake :: forall a. Int -> List a -> List a\ntake = go Nil\n where\n go acc n _ | n < 1 = reverse acc\n go acc _ Nil = reverse acc\n go acc n (x : xs) = go (x : acc) (n - 1) xs\n\n-- | Take the specified number of elements from the end of a list.\n-- |\n-- | Running time: `O(2n - m)` where `n` is the number of elements in list\n-- | and `m` is number of elements to take.\ntakeEnd :: forall a. Int -> List a -> List a\ntakeEnd n xs = drop (length xs - n) xs\n\n-- | Take those elements from the front of a list which match a predicate.\n-- |\n-- | Running time (worst case): `O(n)`\ntakeWhile :: forall a. (a -> Boolean) -> List a -> List a\ntakeWhile p = go Nil\n where\n go acc (x : xs) | p x = go (x : acc) xs\n go acc _ = reverse acc\n\n-- | Drop the specified number of elements from the front of a list.\n-- |\n-- | Running time: `O(n)` where `n` is the number of elements to drop.\ndrop :: forall a. Int -> List a -> List a\ndrop n xs | n < 1 = xs\ndrop _ Nil = Nil\ndrop n (_ : xs) = drop (n - 1) xs\n\n-- | Drop the specified number of elements from the end of a list.\n-- |\n-- | Running time: `O(2n - m)` where `n` is the number of elements in list\n-- | and `m` is number of elements to drop.\ndropEnd :: forall a. Int -> List a -> List a\ndropEnd n xs = take (length xs - n) xs\n\n-- | Drop those elements from the front of a list which match a predicate.\n-- |\n-- | Running time (worst case): `O(n)`\ndropWhile :: forall a. (a -> Boolean) -> List a -> List a\ndropWhile p = go\n where\n go (x : xs) | p x = go xs\n go xs = xs\n\n-- | Split a list into two parts:\n-- |\n-- | 1. the longest initial segment for which all elements satisfy the specified predicate\n-- | 2. the remaining elements\n-- |\n-- | For example,\n-- |\n-- | ```purescript\n-- | span (\\n -> n % 2 == 1) (1 : 3 : 2 : 4 : 5 : Nil) == { init: (1 : 3 : Nil), rest: (2 : 4 : 5 : Nil) }\n-- | ```\n-- |\n-- | Running time: `O(n)`\nspan :: forall a. (a -> Boolean) -> List a -> { init :: List a, rest :: List a }\nspan p (x : xs') | p x = case span p xs' of\n { init: ys, rest: zs } -> { init: x : ys, rest: zs }\nspan _ xs = { init: Nil, rest: xs }\n\n-- | Group equal, consecutive elements of a list into lists.\n-- |\n-- | For example,\n-- |\n-- | ```purescript\n-- | group (1 : 1 : 2 : 2 : 1 : Nil) ==\n-- | (NonEmptyList (NonEmpty 1 (1 : Nil))) : (NonEmptyList (NonEmpty 2 (2 : Nil))) : (NonEmptyList (NonEmpty 1 Nil)) : Nil\n-- | ```\n-- |\n-- | Running time: `O(n)`\ngroup :: forall a. Eq a => List a -> List (NEL.NonEmptyList a)\ngroup = groupBy (==)\n\n-- | Group equal elements of a list into lists.\n-- |\n-- | For example,\n-- |\n-- | ```purescript\n-- | groupAll (1 : 1 : 2 : 2 : 1 : Nil) ==\n-- | (NonEmptyList (NonEmpty 1 (1 : 1 : Nil))) : (NonEmptyList (NonEmpty 2 (2 : Nil))) : Nil\n-- | ```\ngroupAll :: forall a. Ord a => List a -> List (NEL.NonEmptyList a)\ngroupAll = group <<< sort\n\n-- | Group equal, consecutive elements of a list into lists, using the specified\n-- | equivalence relation to determine equality.\n-- |\n-- | For example,\n-- |\n-- | ```purescript\n-- | groupBy (\\a b -> odd a && odd b) (1 : 3 : 2 : 4 : 3 : 3 : Nil) ==\n-- | (NonEmptyList (NonEmpty 1 (3 : Nil))) : (NonEmptyList (NonEmpty 2 Nil)) : (NonEmptyList (NonEmpty 4 Nil)) : (NonEmptyList (NonEmpty 3 (3 : Nil))) : Nil\n-- | ```\n-- |\n-- | Running time: `O(n)`\ngroupBy :: forall a. (a -> a -> Boolean) -> List a -> List (NEL.NonEmptyList a)\ngroupBy _ Nil = Nil\ngroupBy eq (x : xs) = case span (eq x) xs of\n { init: ys, rest: zs } -> NEL.NonEmptyList (x :| ys) : groupBy eq zs\n\n-- | Sort, then group equal elements of a list into lists, using the provided comparison function.\n-- |\n-- | ```purescript\n-- | groupAllBy (compare `on` (_ `div` 10)) (32 : 31 : 21 : 22 : 11 : 33 : Nil) ==\n-- | NonEmptyList (11 :| Nil) : NonEmptyList (21 :| 22 : Nil) : NonEmptyList (32 :| 31 : 33) : Nil\n-- | ```\n-- |\n-- | Running time: `O(n log n)`\ngroupAllBy :: forall a. (a -> a -> Ordering) -> List a -> List (NEL.NonEmptyList a)\ngroupAllBy p = groupBy (\\x y -> p x y == EQ) <<< sortBy p\n\n-- | Returns a lists of elements which do and do not satisfy a predicate.\n-- |\n-- | Running time: `O(n)`\npartition :: forall a. (a -> Boolean) -> List a -> { yes :: List a, no :: List a }\npartition p xs = foldr select { no: Nil, yes: Nil } xs\n where\n select x { no, yes } = if p x\n then { no, yes: x : yes }\n else { no: x : no, yes }\n\n-- | Returns all final segments of the argument, longest first. For example,\n-- |\n-- | ```purescript\n-- | tails (1 : 2 : 3 : Nil) == ((1 : 2 : 3 : Nil) : (2 : 3 : Nil) : (3 : Nil) : (Nil) : Nil)\n-- | ```\n-- | Running time: `O(n)`\ntails :: forall a. List a -> List (List a)\ntails Nil = singleton Nil\ntails list@(Cons _ tl)= list : tails tl\n\n--------------------------------------------------------------------------------\n-- Set-like operations ---------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Remove duplicate elements from a list.\n-- | Keeps the first occurrence of each element in the input list,\n-- | in the same order they appear in the input list.\n-- |\n-- | ```purescript\n-- | nub 1:2:1:3:3:Nil == 1:2:3:Nil\n-- | ```\n-- |\n-- | Running time: `O(n log n)`\nnub :: forall a. Ord a => List a -> List a\nnub = nubBy compare\n\n-- | Remove duplicate elements from a list based on the provided comparison function.\n-- | Keeps the first occurrence of each element in the input list,\n-- | in the same order they appear in the input list.\n-- |\n-- | ```purescript\n-- | nubBy (compare `on` Array.length) ([1]:[2]:[3,4]:Nil) == [1]:[3,4]:Nil\n-- | ```\n-- |\n-- | Running time: `O(n log n)`\nnubBy :: forall a. (a -> a -> Ordering) -> List a -> List a\nnubBy p = reverse <<< go emptySet Nil\n where\n go _ acc Nil = acc\n go s acc (a : as) =\n let { found, result: s' } = insertAndLookupBy p a s\n in if found\n then go s' acc as\n else go s' (a : acc) as\n\n-- | Remove duplicate elements from a list.\n-- | Keeps the first occurrence of each element in the input list,\n-- | in the same order they appear in the input list.\n-- | This less efficient version of `nub` only requires an `Eq` instance.\n-- |\n-- | ```purescript\n-- | nubEq 1:2:1:3:3:Nil == 1:2:3:Nil\n-- | ```\n-- |\n-- | Running time: `O(n^2)`\nnubEq :: forall a. Eq a => List a -> List a\nnubEq = nubByEq eq\n\n-- | Remove duplicate elements from a list, using the provided equivalence function.\n-- | Keeps the first occurrence of each element in the input list,\n-- | in the same order they appear in the input list.\n-- | This less efficient version of `nubBy` only requires an equivalence\n-- | function, rather than an ordering function.\n-- |\n-- | ```purescript\n-- | mod3eq = eq `on` \\n -> mod n 3\n-- | nubByEq mod3eq 1:3:4:5:6:Nil == 1:3:5:Nil\n-- | ```\n-- |\n-- | Running time: `O(n^2)`\nnubByEq :: forall a. (a -> a -> Boolean) -> List a -> List a\nnubByEq _ Nil = Nil\nnubByEq eq' (x : xs) = x : nubByEq eq' (filter (\\y -> not (eq' x y)) xs)\n\n-- | Calculate the union of two lists.\n-- |\n-- | Running time: `O(n^2)`\nunion :: forall a. Eq a => List a -> List a -> List a\nunion = unionBy (==)\n\n-- | Calculate the union of two lists, using the specified\n-- | function to determine equality of elements.\n-- |\n-- | Running time: `O(n^2)`\nunionBy :: forall a. (a -> a -> Boolean) -> List a -> List a -> List a\nunionBy eq xs ys = xs <> foldl (flip (deleteBy eq)) (nubByEq eq ys) xs\n\n-- | Delete the first occurrence of an element from a list.\n-- |\n-- | Running time: `O(n)`\ndelete :: forall a. Eq a => a -> List a -> List a\ndelete = deleteBy (==)\n\n-- | Delete the first occurrence of an element from a list, using the specified\n-- | function to determine equality of elements.\n-- |\n-- | Running time: `O(n)`\ndeleteBy :: forall a. (a -> a -> Boolean) -> a -> List a -> List a\ndeleteBy _ _ Nil = Nil\ndeleteBy eq' x (y : ys) | eq' x y = ys\ndeleteBy eq' x (y : ys) = y : deleteBy eq' x ys\n\ninfix 5 difference as \\\\\n\n-- | Delete the first occurrence of each element in the second list from the first list.\n-- |\n-- | Running time: `O(n^2)`\ndifference :: forall a. Eq a => List a -> List a -> List a\ndifference = foldl (flip delete)\n\n-- | Calculate the intersection of two lists.\n-- |\n-- | Running time: `O(n^2)`\nintersect :: forall a. Eq a => List a -> List a -> List a\nintersect = intersectBy (==)\n\n-- | Calculate the intersection of two lists, using the specified\n-- | function to determine equality of elements.\n-- |\n-- | Running time: `O(n^2)`\nintersectBy :: forall a. (a -> a -> Boolean) -> List a -> List a -> List a\nintersectBy _ Nil _ = Nil\nintersectBy _ _ Nil = Nil\nintersectBy eq xs ys = filter (\\x -> any (eq x) ys) xs\n\n--------------------------------------------------------------------------------\n-- Zipping ---------------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Apply a function to pairs of elements at the same positions in two lists,\n-- | collecting the results in a new list.\n-- |\n-- | If one list is longer, elements will be discarded from the longer list.\n-- |\n-- | For example\n-- |\n-- | ```purescript\n-- | zipWith (*) (1 : 2 : 3 : Nil) (4 : 5 : 6 : 7 Nil) == 4 : 10 : 18 : Nil\n-- | ```\n-- |\n-- | Running time: `O(min(m, n))`\nzipWith :: forall a b c. (a -> b -> c) -> List a -> List b -> List c\nzipWith f xs ys = reverse $ go xs ys Nil\n where\n go Nil _ acc = acc\n go _ Nil acc = acc\n go (a : as) (b : bs) acc = go as bs $ f a b : acc\n\n-- | A generalization of `zipWith` which accumulates results in some `Applicative`\n-- | functor.\nzipWithA :: forall m a b c. Applicative m => (a -> b -> m c) -> List a -> List b -> m (List c)\nzipWithA f xs ys = sequence (zipWith f xs ys)\n\n-- | Collect pairs of elements at the same positions in two lists.\n-- |\n-- | Running time: `O(min(m, n))`\nzip :: forall a b. List a -> List b -> List (Tuple a b)\nzip = zipWith Tuple\n\n-- | Transforms a list of pairs into a list of first components and a list of\n-- | second components.\nunzip :: forall a b. List (Tuple a b) -> Tuple (List a) (List b)\nunzip = foldr (\\(Tuple a b) (Tuple as bs) -> Tuple (a : as) (b : bs)) (Tuple Nil Nil)\n\n--------------------------------------------------------------------------------\n-- Transpose -------------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | The 'transpose' function transposes the rows and columns of its argument.\n-- | For example,\n-- |\n-- | transpose ((1:2:3:Nil) : (4:5:6:Nil) : Nil) ==\n-- | ((1:4:Nil) : (2:5:Nil) : (3:6:Nil) : Nil)\n-- |\n-- | If some of the rows are shorter than the following rows, their elements are skipped:\n-- |\n-- | transpose ((10:11:Nil) : (20:Nil) : Nil : (30:31:32:Nil) : Nil) ==\n-- | ((10:20:30:Nil) : (11:31:Nil) : (32:Nil) : Nil)\ntranspose :: forall a. List (List a) -> List (List a)\ntranspose Nil = Nil\ntranspose (Nil : xss) = transpose xss\ntranspose ((x : xs) : xss) =\n (x : mapMaybe head xss) : transpose (xs : mapMaybe tail xss)\n\n--------------------------------------------------------------------------------\n-- Folding ---------------------------------------------------------------------\n--------------------------------------------------------------------------------\n\n-- | Perform a fold using a monadic step function.\nfoldM :: forall m a b. Monad m => (b -> a -> m b) -> b -> List a -> m b\nfoldM _ b Nil = pure b\nfoldM f b (a : as) = f b a >>= \\b' -> foldM f b' as\n", "// module Partial.Unsafe\n\nexport const _unsafePartial = function (f) {\n return f();\n};\n", "// module Partial\n\nexport const _crashWith = function (msg) {\n throw new Error(msg);\n};\n", "-- | Some partial helper functions. See the README for more documentation.\nmodule Partial\n ( crash\n , crashWith\n ) where\n\n-- | A partial function which crashes on any input with a default message.\ncrash :: forall a. Partial => a\ncrash = crashWith \"Partial.crash: partial function\"\n\n-- | A partial function which crashes on any input with the specified message.\ncrashWith :: forall a. Partial => String -> a\ncrashWith = _crashWith\n\nforeign import _crashWith :: forall a. String -> a\n", "-- | Utilities for working with partial functions.\n-- | See the README for more documentation.\nmodule Partial.Unsafe\n ( unsafePartial\n , unsafeCrashWith\n ) where\n\nimport Partial (crashWith)\n\n-- Note: this function's type signature is more like\n-- `(Unit -> a) -> a`. However, we would need to use\n-- `unsafeCoerce` to make this compile, incurring\n-- either a dependency or reimplementing it here.\n-- Rather than doing that, we'll use a type signature\n-- of `a -> b` instead.\nforeign import _unsafePartial :: forall a b. a -> b\n\n-- | Discharge a partiality constraint, unsafely.\nunsafePartial :: forall a. (Partial => a) -> a\nunsafePartial = _unsafePartial\n\n-- | A function which crashes with the specified error message.\nunsafeCrashWith :: forall a. String -> a\nunsafeCrashWith msg = unsafePartial (crashWith msg)\n", "module Data.List.NonEmpty\n ( module Data.List.Types\n , toUnfoldable\n , fromFoldable\n , fromList\n , toList\n , singleton\n , length\n , cons\n , cons'\n , snoc\n , snoc'\n , head\n , last\n , tail\n , init\n , uncons\n , unsnoc\n , (!!), index\n , elemIndex\n , elemLastIndex\n , findIndex\n , findLastIndex\n , insertAt\n , updateAt\n , modifyAt\n , reverse\n , concat\n , concatMap\n , filter\n , filterM\n , mapMaybe\n , catMaybes\n , appendFoldable\n , sort\n , sortBy\n , take\n , takeWhile\n , drop\n , dropWhile\n , span\n , group\n , groupAll\n , groupBy\n , groupAllBy\n , partition\n , nub\n , nubBy\n , nubEq\n , nubByEq\n , union\n , unionBy\n , intersect\n , intersectBy\n , zipWith\n , zipWithA\n , zip\n , unzip\n , foldM\n , module Exports\n ) where\n\nimport Prelude\n\nimport Data.Foldable (class Foldable)\nimport Data.List ((:))\nimport Data.List as L\nimport Data.List.Types (NonEmptyList(..))\nimport Data.Maybe (Maybe(..), fromMaybe, maybe)\nimport Data.NonEmpty ((:|))\nimport Data.NonEmpty as NE\nimport Data.Semigroup.Traversable (sequence1)\nimport Data.Tuple (Tuple(..), fst, snd)\nimport Data.Unfoldable (class Unfoldable, unfoldr)\nimport Partial.Unsafe (unsafeCrashWith)\n\nimport Data.Foldable (foldl, foldr, foldMap, fold, intercalate, elem, notElem, find, findMap, any, all) as Exports\nimport Data.Semigroup.Foldable (fold1, foldMap1, for1_, sequence1_, traverse1_) as Exports\nimport Data.Semigroup.Traversable (sequence1, traverse1, traverse1Default) as Exports\nimport Data.Traversable (scanl, scanr) as Exports\n\n-- | Internal function: any operation on a list that is guaranteed not to delete\n-- | all elements also applies to a NEL, this function is a helper for defining\n-- | those cases.\nwrappedOperation\n :: forall a b\n . String\n -> (L.List a -> L.List b)\n -> NonEmptyList a\n -> NonEmptyList b\nwrappedOperation name f (NonEmptyList (x :| xs)) =\n case f (x : xs) of\n x' : xs' -> NonEmptyList (x' :| xs')\n L.Nil -> unsafeCrashWith (\"Impossible: empty list in NonEmptyList \" <> name)\n\n-- | Like `wrappedOperation`, but for functions that operate on 2 lists.\nwrappedOperation2\n :: forall a b c\n . String\n -> (L.List a -> L.List b -> L.List c)\n -> NonEmptyList a\n -> NonEmptyList b\n -> NonEmptyList c\nwrappedOperation2 name f (NonEmptyList (x :| xs)) (NonEmptyList (y :| ys)) =\n case f (x : xs) (y : ys) of\n x' : xs' -> NonEmptyList (x' :| xs')\n L.Nil -> unsafeCrashWith (\"Impossible: empty list in NonEmptyList \" <> name)\n\n-- | Lifts a function that operates on a list to work on a NEL. This does not\n-- | preserve the non-empty status of the result.\nlift :: forall a b. (L.List a -> b) -> NonEmptyList a -> b\nlift f (NonEmptyList (x :| xs)) = f (x : xs)\n\ntoUnfoldable :: forall f. Unfoldable f => NonEmptyList ~> f\ntoUnfoldable =\n unfoldr (\\xs -> (\\rec -> Tuple rec.head rec.tail) <$> L.uncons xs) <<< toList\n\nfromFoldable :: forall f a. Foldable f => f a -> Maybe (NonEmptyList a)\nfromFoldable = fromList <<< L.fromFoldable\n\nfromList :: forall a. L.List a -> Maybe (NonEmptyList a)\nfromList L.Nil = Nothing\nfromList (x : xs) = Just (NonEmptyList (x :| xs))\n\ntoList :: NonEmptyList ~> L.List\ntoList (NonEmptyList (x :| xs)) = x : xs\n\nsingleton :: forall a. a -> NonEmptyList a\nsingleton = NonEmptyList <<< NE.singleton\n\ncons :: forall a. a -> NonEmptyList a -> NonEmptyList a\ncons y (NonEmptyList (x :| xs)) = NonEmptyList (y :| x : xs)\n\ncons' :: forall a. a -> L.List a -> NonEmptyList a\ncons' x xs = NonEmptyList (x :| xs)\n\nsnoc :: forall a. NonEmptyList a -> a -> NonEmptyList a\nsnoc (NonEmptyList (x :| xs)) y = NonEmptyList (x :| L.snoc xs y)\n\nsnoc' :: forall a. L.List a -> a -> NonEmptyList a\nsnoc' (x : xs) y = NonEmptyList (x :| L.snoc xs y)\nsnoc' L.Nil y = singleton y\n\nhead :: forall a. NonEmptyList a -> a\nhead (NonEmptyList (x :| _)) = x\n\nlast :: forall a. NonEmptyList a -> a\nlast (NonEmptyList (x :| xs)) = fromMaybe x (L.last xs)\n\ntail :: NonEmptyList ~> L.List\ntail (NonEmptyList (_ :| xs)) = xs\n\ninit :: NonEmptyList ~> L.List\ninit (NonEmptyList (x :| xs)) = maybe L.Nil (x : _) (L.init xs)\n\nuncons :: forall a. NonEmptyList a -> { head :: a, tail :: L.List a }\nuncons (NonEmptyList (x :| xs)) = { head: x, tail: xs }\n\nunsnoc :: forall a. NonEmptyList a -> { init :: L.List a, last :: a }\nunsnoc (NonEmptyList (x :| xs)) = case L.unsnoc xs of\n Nothing -> { init: L.Nil, last: x }\n Just un -> { init: x : un.init, last: un.last }\n\nlength :: forall a. NonEmptyList a -> Int\nlength (NonEmptyList (_ :| xs)) = 1 + L.length xs\n\nindex :: forall a. NonEmptyList a -> Int -> Maybe a\nindex (NonEmptyList (x :| xs)) i\n | i == 0 = Just x\n | otherwise = L.index xs (i - 1)\n\ninfixl 8 index as !!\n\nelemIndex :: forall a. Eq a => a -> NonEmptyList a -> Maybe Int\nelemIndex x = findIndex (_ == x)\n\nelemLastIndex :: forall a. Eq a => a -> NonEmptyList a -> Maybe Int\nelemLastIndex x = findLastIndex (_ == x)\n\nfindIndex :: forall a. (a -> Boolean) -> NonEmptyList a -> Maybe Int\nfindIndex f (NonEmptyList (x :| xs))\n | f x = Just 0\n | otherwise = (_ + 1) <$> L.findIndex f xs\n\nfindLastIndex :: forall a. (a -> Boolean) -> NonEmptyList a -> Maybe Int\nfindLastIndex f (NonEmptyList (x :| xs)) =\n case L.findLastIndex f xs of\n Just i -> Just (i + 1)\n Nothing\n | f x -> Just 0\n | otherwise -> Nothing\n\ninsertAt :: forall a. Int -> a -> NonEmptyList a -> Maybe (NonEmptyList a)\ninsertAt i a (NonEmptyList (x :| xs))\n | i == 0 = Just (NonEmptyList (a :| x : xs))\n | otherwise = NonEmptyList <<< (x :| _) <$> L.insertAt (i - 1) a xs\n\nupdateAt :: forall a. Int -> a -> NonEmptyList a -> Maybe (NonEmptyList a)\nupdateAt i a (NonEmptyList (x :| xs))\n | i == 0 = Just (NonEmptyList (a :| xs))\n | otherwise = NonEmptyList <<< (x :| _) <$> L.updateAt (i - 1) a xs\n\nmodifyAt :: forall a. Int -> (a -> a) -> NonEmptyList a -> Maybe (NonEmptyList a)\nmodifyAt i f (NonEmptyList (x :| xs))\n | i == 0 = Just (NonEmptyList (f x :| xs))\n | otherwise = NonEmptyList <<< (x :| _) <$> L.modifyAt (i - 1) f xs\n\nreverse :: forall a. NonEmptyList a -> NonEmptyList a\nreverse = wrappedOperation \"reverse\" L.reverse\n\nfilter :: forall a. (a -> Boolean) -> NonEmptyList a -> L.List a\nfilter = lift <<< L.filter\n\nfilterM :: forall m a. Monad m => (a -> m Boolean) -> NonEmptyList a -> m (L.List a)\nfilterM = lift <<< L.filterM\n\nmapMaybe :: forall a b. (a -> Maybe b) -> NonEmptyList a -> L.List b\nmapMaybe = lift <<< L.mapMaybe\n\ncatMaybes :: forall a. NonEmptyList (Maybe a) -> L.List a\ncatMaybes = lift L.catMaybes\n\nconcat :: forall a. NonEmptyList (NonEmptyList a) -> NonEmptyList a\nconcat = (_ >>= identity)\n\nconcatMap :: forall a b. (a -> NonEmptyList b) -> NonEmptyList a -> NonEmptyList b\nconcatMap = flip bind\n\nappendFoldable :: forall t a. Foldable t => NonEmptyList a -> t a -> NonEmptyList a\nappendFoldable (NonEmptyList (x :| xs)) ys =\n NonEmptyList (x :| (xs <> L.fromFoldable ys))\n\nsort :: forall a. Ord a => NonEmptyList a -> NonEmptyList a\nsort xs = sortBy compare xs\n\nsortBy :: forall a. (a -> a -> Ordering) -> NonEmptyList a -> NonEmptyList a\nsortBy = wrappedOperation \"sortBy\" <<< L.sortBy\n\ntake :: forall a. Int -> NonEmptyList a -> L.List a\ntake = lift <<< L.take\n\ntakeWhile :: forall a. (a -> Boolean) -> NonEmptyList a -> L.List a\ntakeWhile = lift <<< L.takeWhile\n\ndrop :: forall a. Int -> NonEmptyList a -> L.List a\ndrop = lift <<< L.drop\n\ndropWhile :: forall a. (a -> Boolean) -> NonEmptyList a -> L.List a\ndropWhile = lift <<< L.dropWhile\n\nspan :: forall a. (a -> Boolean) -> NonEmptyList a -> { init :: L.List a, rest :: L.List a }\nspan = lift <<< L.span\n\ngroup :: forall a. Eq a => NonEmptyList a -> NonEmptyList (NonEmptyList a)\ngroup = wrappedOperation \"group\" L.group\n\ngroupAll :: forall a. Ord a => NonEmptyList a -> NonEmptyList (NonEmptyList a)\ngroupAll = wrappedOperation \"groupAll\" L.groupAll\n\ngroupBy :: forall a. (a -> a -> Boolean) -> NonEmptyList a -> NonEmptyList (NonEmptyList a)\ngroupBy = wrappedOperation \"groupBy\" <<< L.groupBy\n\ngroupAllBy :: forall a. (a -> a -> Ordering) -> NonEmptyList a -> NonEmptyList (NonEmptyList a)\ngroupAllBy = wrappedOperation \"groupAllBy\" <<< L.groupAllBy\n\npartition :: forall a. (a -> Boolean) -> NonEmptyList a -> { yes :: L.List a, no :: L.List a }\npartition = lift <<< L.partition\n\nnub :: forall a. Ord a => NonEmptyList a -> NonEmptyList a\nnub = wrappedOperation \"nub\" L.nub\n\nnubBy :: forall a. (a -> a -> Ordering) -> NonEmptyList a -> NonEmptyList a\nnubBy = wrappedOperation \"nubBy\" <<< L.nubBy\n\nnubEq :: forall a. Eq a => NonEmptyList a -> NonEmptyList a\nnubEq = wrappedOperation \"nubEq\" L.nubEq\n\nnubByEq :: forall a. (a -> a -> Boolean) -> NonEmptyList a -> NonEmptyList a\nnubByEq = wrappedOperation \"nubByEq\" <<< L.nubByEq\n\nunion :: forall a. Eq a => NonEmptyList a -> NonEmptyList a -> NonEmptyList a\nunion = wrappedOperation2 \"union\" L.union\n\nunionBy :: forall a. (a -> a -> Boolean) -> NonEmptyList a -> NonEmptyList a -> NonEmptyList a\nunionBy = wrappedOperation2 \"unionBy\" <<< L.unionBy\n\nintersect :: forall a. Eq a => NonEmptyList a -> NonEmptyList a -> NonEmptyList a\nintersect = wrappedOperation2 \"intersect\" L.intersect\n\nintersectBy :: forall a. (a -> a -> Boolean) -> NonEmptyList a -> NonEmptyList a -> NonEmptyList a\nintersectBy = wrappedOperation2 \"intersectBy\" <<< L.intersectBy\n\nzipWith :: forall a b c. (a -> b -> c) -> NonEmptyList a -> NonEmptyList b -> NonEmptyList c\nzipWith f (NonEmptyList (x :| xs)) (NonEmptyList (y :| ys)) =\n NonEmptyList (f x y :| L.zipWith f xs ys)\n\nzipWithA :: forall m a b c. Applicative m => (a -> b -> m c) -> NonEmptyList a -> NonEmptyList b -> m (NonEmptyList c)\nzipWithA f xs ys = sequence1 (zipWith f xs ys)\n\nzip :: forall a b. NonEmptyList a -> NonEmptyList b -> NonEmptyList (Tuple a b)\nzip = zipWith Tuple\n\nunzip :: forall a b. NonEmptyList (Tuple a b) -> Tuple (NonEmptyList a) (NonEmptyList b)\nunzip ts = Tuple (map fst ts) (map snd ts)\n\nfoldM :: forall m a b. Monad m => (b -> a -> m b) -> b -> NonEmptyList a -> m b\nfoldM f b (NonEmptyList (a :| as)) = f b a >>= \\b' -> L.foldM f b' as\n", "/* eslint-disable no-eq-null, eqeqeq */\n\nconst nullImpl = null;\nexport { nullImpl as null };\n\nexport function nullable(a, r, f) {\n return a == null ? r : f(a);\n}\n\nexport function notNull(x) {\n return x;\n}\n", "-- | This module defines types and functions for working with nullable types\n-- | using the FFI.\n\nmodule Data.Nullable\n ( Nullable\n , null\n , notNull\n , toMaybe\n , toNullable\n ) where\n\nimport Prelude\n\nimport Data.Eq (class Eq1)\nimport Data.Function (on)\nimport Data.Function.Uncurried (Fn3, runFn3)\nimport Data.Maybe (Maybe(..), maybe)\nimport Data.Ord (class Ord1)\n\n-- | A nullable type. This type constructor is intended to be used for\n-- | interoperating with JavaScript functions which accept or return null\n-- | values.\n-- |\n-- | The runtime representation of `Nullable T` is the same as that of `T`,\n-- | except that it may also be `null`. For example, the JavaScript values\n-- | `null`, `[]`, and `[1,2,3]` may all be given the type\n-- | `Nullable (Array Int)`. Similarly, the JavaScript values `[]`, `[null]`,\n-- | and `[1,2,null,3]` may all be given the type `Array (Nullable Int)`.\n-- |\n-- | There is one pitfall with `Nullable`, which is that values of the type\n-- | `Nullable T` will not function as you might expect if the type `T` happens\n-- | to itself permit `null` as a valid runtime representation.\n-- |\n-- | In particular, values of the type `Nullable (Nullable T)` will \u2018collapse\u2019,\n-- | in the sense that the PureScript expressions `notNull null` and `null`\n-- | will both leave you with a value whose runtime representation is just\n-- | `null`. Therefore it is important to avoid using `Nullable T` in\n-- | situations where `T` itself can take `null` as a runtime representation.\n-- | If in doubt, use `Maybe` instead.\n-- |\n-- | `Nullable` does not permit lawful `Functor`, `Applicative`, or `Monad`\n-- | instances as a result of this pitfall, which is why these instances are\n-- | not provided.\nforeign import data Nullable :: Type -> Type\n\ntype role Nullable representational\n\n-- | The null value.\nforeign import null :: forall a. Nullable a\n\nforeign import nullable :: forall a r. Fn3 (Nullable a) r (a -> r) r\n\n-- | Wrap a non-null value.\nforeign import notNull :: forall a. a -> Nullable a\n\n-- | Takes `Nothing` to `null`, and `Just a` to `a`.\ntoNullable :: forall a. Maybe a -> Nullable a\ntoNullable = maybe null notNull\n\n-- | Represent `null` using `Maybe a` as `Nothing`. Note that this function\n-- | can violate parametricity, as it inspects the runtime representation of\n-- | its argument (see the warning about the pitfall of `Nullable` above).\ntoMaybe :: forall a. Nullable a -> Maybe a\ntoMaybe n = runFn3 nullable n Nothing Just\n\ninstance showNullable :: Show a => Show (Nullable a) where\n show = maybe \"null\" show <<< toMaybe\n\ninstance eqNullable :: Eq a => Eq (Nullable a) where\n eq = eq `on` toMaybe\n\ninstance eq1Nullable :: Eq1 Nullable where\n eq1 = eq\n\ninstance ordNullable :: Ord a => Ord (Nullable a) where\n compare = compare `on` toMaybe\n\ninstance ord1Nullable :: Ord1 Nullable where\n compare1 = compare\n", "/* globals setImmediate, clearImmediate, setTimeout, clearTimeout */\n/* eslint-disable no-unused-vars, no-prototype-builtins, no-use-before-define, no-unused-labels, no-param-reassign */\nvar Aff = function () {\n // A unique value for empty.\n var EMPTY = {};\n\n /*\n\n An awkward approximation. We elide evidence we would otherwise need in PS for\n efficiency sake.\n\n data Aff eff a\n = Pure a\n | Throw Error\n | Catch (Aff eff a) (Error -> Aff eff a)\n | Sync (Eff eff a)\n | Async ((Either Error a -> Eff eff Unit) -> Eff eff (Canceler eff))\n | forall b. Bind (Aff eff b) (b -> Aff eff a)\n | forall b. Bracket (Aff eff b) (BracketConditions eff b) (b -> Aff eff a)\n | forall b. Fork Boolean (Aff eff b) ?(Fiber eff b -> a)\n | Sequential (ParAff aff a)\n\n */\n var PURE = \"Pure\";\n var THROW = \"Throw\";\n var CATCH = \"Catch\";\n var SYNC = \"Sync\";\n var ASYNC = \"Async\";\n var BIND = \"Bind\";\n var BRACKET = \"Bracket\";\n var FORK = \"Fork\";\n var SEQ = \"Sequential\";\n\n /*\n\n data ParAff eff a\n = forall b. Map (b -> a) (ParAff eff b)\n | forall b. Apply (ParAff eff (b -> a)) (ParAff eff b)\n | Alt (ParAff eff a) (ParAff eff a)\n | ?Par (Aff eff a)\n\n */\n var MAP = \"Map\";\n var APPLY = \"Apply\";\n var ALT = \"Alt\";\n\n // Various constructors used in interpretation\n var CONS = \"Cons\"; // Cons-list, for stacks\n var RESUME = \"Resume\"; // Continue indiscriminately\n var RELEASE = \"Release\"; // Continue with bracket finalizers\n var FINALIZER = \"Finalizer\"; // A non-interruptible effect\n var FINALIZED = \"Finalized\"; // Marker for finalization\n var FORKED = \"Forked\"; // Reference to a forked fiber, with resumption stack\n var FIBER = \"Fiber\"; // Actual fiber reference\n var THUNK = \"Thunk\"; // Primed effect, ready to invoke\n\n function Aff(tag, _1, _2, _3) {\n this.tag = tag;\n this._1 = _1;\n this._2 = _2;\n this._3 = _3;\n }\n\n function AffCtr(tag) {\n var fn = function (_1, _2, _3) {\n return new Aff(tag, _1, _2, _3);\n };\n fn.tag = tag;\n return fn;\n }\n\n function nonCanceler(error) {\n return new Aff(PURE, void 0);\n }\n\n function runEff(eff) {\n try {\n eff();\n } catch (error) {\n setTimeout(function () {\n throw error;\n }, 0);\n }\n }\n\n function runSync(left, right, eff) {\n try {\n return right(eff());\n } catch (error) {\n return left(error);\n }\n }\n\n function runAsync(left, eff, k) {\n try {\n return eff(k)();\n } catch (error) {\n k(left(error))();\n return nonCanceler;\n }\n }\n\n var Scheduler = function () {\n var limit = 1024;\n var size = 0;\n var ix = 0;\n var queue = new Array(limit);\n var draining = false;\n\n function drain() {\n var thunk;\n draining = true;\n while (size !== 0) {\n size--;\n thunk = queue[ix];\n queue[ix] = void 0;\n ix = (ix + 1) % limit;\n thunk();\n }\n draining = false;\n }\n\n return {\n isDraining: function () {\n return draining;\n },\n enqueue: function (cb) {\n var i, tmp;\n if (size === limit) {\n tmp = draining;\n drain();\n draining = tmp;\n }\n\n queue[(ix + size) % limit] = cb;\n size++;\n\n if (!draining) {\n drain();\n }\n }\n };\n }();\n\n function Supervisor(util) {\n var fibers = {};\n var fiberId = 0;\n var count = 0;\n\n return {\n register: function (fiber) {\n var fid = fiberId++;\n fiber.onComplete({\n rethrow: true,\n handler: function (result) {\n return function () {\n count--;\n delete fibers[fid];\n };\n }\n })();\n fibers[fid] = fiber;\n count++;\n },\n isEmpty: function () {\n return count === 0;\n },\n killAll: function (killError, cb) {\n return function () {\n if (count === 0) {\n return cb();\n }\n\n var killCount = 0;\n var kills = {};\n\n function kill(fid) {\n kills[fid] = fibers[fid].kill(killError, function (result) {\n return function () {\n delete kills[fid];\n killCount--;\n if (util.isLeft(result) && util.fromLeft(result)) {\n setTimeout(function () {\n throw util.fromLeft(result);\n }, 0);\n }\n if (killCount === 0) {\n cb();\n }\n };\n })();\n }\n\n for (var k in fibers) {\n if (fibers.hasOwnProperty(k)) {\n killCount++;\n kill(k);\n }\n }\n\n fibers = {};\n fiberId = 0;\n count = 0;\n\n return function (error) {\n return new Aff(SYNC, function () {\n for (var k in kills) {\n if (kills.hasOwnProperty(k)) {\n kills[k]();\n }\n }\n });\n };\n };\n }\n };\n }\n\n // Fiber state machine\n var SUSPENDED = 0; // Suspended, pending a join.\n var CONTINUE = 1; // Interpret the next instruction.\n var STEP_BIND = 2; // Apply the next bind.\n var STEP_RESULT = 3; // Handle potential failure from a result.\n var PENDING = 4; // An async effect is running.\n var RETURN = 5; // The current stack has returned.\n var COMPLETED = 6; // The entire fiber has completed.\n\n function Fiber(util, supervisor, aff) {\n // Monotonically increasing tick, increased on each asynchronous turn.\n var runTick = 0;\n\n // The current branch of the state machine.\n var status = SUSPENDED;\n\n // The current point of interest for the state machine branch.\n var step = aff; // Successful step\n var fail = null; // Failure step\n var interrupt = null; // Asynchronous interrupt\n\n // Stack of continuations for the current fiber.\n var bhead = null;\n var btail = null;\n\n // Stack of attempts and finalizers for error recovery. Every `Cons` is also\n // tagged with current `interrupt` state. We use this to track which items\n // should be ignored or evaluated as a result of a kill.\n var attempts = null;\n\n // A special state is needed for Bracket, because it cannot be killed. When\n // we enter a bracket acquisition or finalizer, we increment the counter,\n // and then decrement once complete.\n var bracketCount = 0;\n\n // Each join gets a new id so they can be revoked.\n var joinId = 0;\n var joins = null;\n var rethrow = true;\n\n // Each invocation of `run` requires a tick. When an asynchronous effect is\n // resolved, we must check that the local tick coincides with the fiber\n // tick before resuming. This prevents multiple async continuations from\n // accidentally resuming the same fiber. A common example may be invoking\n // the provided callback in `makeAff` more than once, but it may also be an\n // async effect resuming after the fiber was already cancelled.\n function run(localRunTick) {\n var tmp, result, attempt;\n while (true) {\n tmp = null;\n result = null;\n attempt = null;\n\n switch (status) {\n case STEP_BIND:\n status = CONTINUE;\n try {\n step = bhead(step);\n if (btail === null) {\n bhead = null;\n } else {\n bhead = btail._1;\n btail = btail._2;\n }\n } catch (e) {\n status = RETURN;\n fail = util.left(e);\n step = null;\n }\n break;\n\n case STEP_RESULT:\n if (util.isLeft(step)) {\n status = RETURN;\n fail = step;\n step = null;\n } else if (bhead === null) {\n status = RETURN;\n } else {\n status = STEP_BIND;\n step = util.fromRight(step);\n }\n break;\n\n case CONTINUE:\n switch (step.tag) {\n case BIND:\n if (bhead) {\n btail = new Aff(CONS, bhead, btail);\n }\n bhead = step._2;\n status = CONTINUE;\n step = step._1;\n break;\n\n case PURE:\n if (bhead === null) {\n status = RETURN;\n step = util.right(step._1);\n } else {\n status = STEP_BIND;\n step = step._1;\n }\n break;\n\n case SYNC:\n status = STEP_RESULT;\n step = runSync(util.left, util.right, step._1);\n break;\n\n case ASYNC:\n status = PENDING;\n step = runAsync(util.left, step._1, function (result) {\n return function () {\n if (runTick !== localRunTick) {\n return;\n }\n runTick++;\n Scheduler.enqueue(function () {\n // It's possible to interrupt the fiber between enqueuing and\n // resuming, so we need to check that the runTick is still\n // valid.\n if (runTick !== localRunTick + 1) {\n return;\n }\n status = STEP_RESULT;\n step = result;\n run(runTick);\n });\n };\n });\n return;\n\n case THROW:\n status = RETURN;\n fail = util.left(step._1);\n step = null;\n break;\n\n // Enqueue the Catch so that we can call the error handler later on\n // in case of an exception.\n case CATCH:\n if (bhead === null) {\n attempts = new Aff(CONS, step, attempts, interrupt);\n } else {\n attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);\n }\n bhead = null;\n btail = null;\n status = CONTINUE;\n step = step._1;\n break;\n\n // Enqueue the Bracket so that we can call the appropriate handlers\n // after resource acquisition.\n case BRACKET:\n bracketCount++;\n if (bhead === null) {\n attempts = new Aff(CONS, step, attempts, interrupt);\n } else {\n attempts = new Aff(CONS, step, new Aff(CONS, new Aff(RESUME, bhead, btail), attempts, interrupt), interrupt);\n }\n bhead = null;\n btail = null;\n status = CONTINUE;\n step = step._1;\n break;\n\n case FORK:\n status = STEP_RESULT;\n tmp = Fiber(util, supervisor, step._2);\n if (supervisor) {\n supervisor.register(tmp);\n }\n if (step._1) {\n tmp.run();\n }\n step = util.right(tmp);\n break;\n\n case SEQ:\n status = CONTINUE;\n step = sequential(util, supervisor, step._1);\n break;\n }\n break;\n\n case RETURN:\n bhead = null;\n btail = null;\n // If the current stack has returned, and we have no other stacks to\n // resume or finalizers to run, the fiber has halted and we can\n // invoke all join callbacks. Otherwise we need to resume.\n if (attempts === null) {\n status = COMPLETED;\n step = interrupt || fail || step;\n } else {\n // The interrupt status for the enqueued item.\n tmp = attempts._3;\n attempt = attempts._1;\n attempts = attempts._2;\n\n switch (attempt.tag) {\n // We cannot recover from an unmasked interrupt. Otherwise we should\n // continue stepping, or run the exception handler if an exception\n // was raised.\n case CATCH:\n // We should compare the interrupt status as well because we\n // only want it to apply if there has been an interrupt since\n // enqueuing the catch.\n if (interrupt && interrupt !== tmp && bracketCount === 0) {\n status = RETURN;\n } else if (fail) {\n status = CONTINUE;\n step = attempt._2(util.fromLeft(fail));\n fail = null;\n }\n break;\n\n // We cannot resume from an unmasked interrupt or exception.\n case RESUME:\n // As with Catch, we only want to ignore in the case of an\n // interrupt since enqueing the item.\n if (interrupt && interrupt !== tmp && bracketCount === 0 || fail) {\n status = RETURN;\n } else {\n bhead = attempt._1;\n btail = attempt._2;\n status = STEP_BIND;\n step = util.fromRight(step);\n }\n break;\n\n // If we have a bracket, we should enqueue the handlers,\n // and continue with the success branch only if the fiber has\n // not been interrupted. If the bracket acquisition failed, we\n // should not run either.\n case BRACKET:\n bracketCount--;\n if (fail === null) {\n result = util.fromRight(step);\n // We need to enqueue the Release with the same interrupt\n // status as the Bracket that is initiating it.\n attempts = new Aff(CONS, new Aff(RELEASE, attempt._2, result), attempts, tmp);\n // We should only coninue as long as the interrupt status has not changed or\n // we are currently within a non-interruptable finalizer.\n if (interrupt === tmp || bracketCount > 0) {\n status = CONTINUE;\n step = attempt._3(result);\n }\n }\n break;\n\n // Enqueue the appropriate handler. We increase the bracket count\n // because it should not be cancelled.\n case RELEASE:\n attempts = new Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt);\n status = CONTINUE;\n // It has only been killed if the interrupt status has changed\n // since we enqueued the item, and the bracket count is 0. If the\n // bracket count is non-zero then we are in a masked state so it's\n // impossible to be killed.\n if (interrupt && interrupt !== tmp && bracketCount === 0) {\n step = attempt._1.killed(util.fromLeft(interrupt))(attempt._2);\n } else if (fail) {\n step = attempt._1.failed(util.fromLeft(fail))(attempt._2);\n } else {\n step = attempt._1.completed(util.fromRight(step))(attempt._2);\n }\n fail = null;\n bracketCount++;\n break;\n\n case FINALIZER:\n bracketCount++;\n attempts = new Aff(CONS, new Aff(FINALIZED, step, fail), attempts, interrupt);\n status = CONTINUE;\n step = attempt._1;\n break;\n\n case FINALIZED:\n bracketCount--;\n status = RETURN;\n step = attempt._1;\n fail = attempt._2;\n break;\n }\n }\n break;\n\n case COMPLETED:\n for (var k in joins) {\n if (joins.hasOwnProperty(k)) {\n rethrow = rethrow && joins[k].rethrow;\n runEff(joins[k].handler(step));\n }\n }\n joins = null;\n // If we have an interrupt and a fail, then the thread threw while\n // running finalizers. This should always rethrow in a fresh stack.\n if (interrupt && fail) {\n setTimeout(function () {\n throw util.fromLeft(fail);\n }, 0);\n // If we have an unhandled exception, and no other fiber has joined\n // then we need to throw the exception in a fresh stack.\n } else if (util.isLeft(step) && rethrow) {\n setTimeout(function () {\n // Guard on reathrow because a completely synchronous fiber can\n // still have an observer which was added after-the-fact.\n if (rethrow) {\n throw util.fromLeft(step);\n }\n }, 0);\n }\n return;\n case SUSPENDED:\n status = CONTINUE;\n break;\n case PENDING: return;\n }\n }\n }\n\n function onComplete(join) {\n return function () {\n if (status === COMPLETED) {\n rethrow = rethrow && join.rethrow;\n join.handler(step)();\n return function () {};\n }\n\n var jid = joinId++;\n joins = joins || {};\n joins[jid] = join;\n\n return function() {\n if (joins !== null) {\n delete joins[jid];\n }\n };\n };\n }\n\n function kill(error, cb) {\n return function () {\n if (status === COMPLETED) {\n cb(util.right(void 0))();\n return function () {};\n }\n\n var canceler = onComplete({\n rethrow: false,\n handler: function (/* unused */) {\n return cb(util.right(void 0));\n }\n })();\n\n switch (status) {\n case SUSPENDED:\n interrupt = util.left(error);\n status = COMPLETED;\n step = interrupt;\n run(runTick);\n break;\n case PENDING:\n if (interrupt === null) {\n interrupt = util.left(error);\n }\n if (bracketCount === 0) {\n if (status === PENDING) {\n attempts = new Aff(CONS, new Aff(FINALIZER, step(error)), attempts, interrupt);\n }\n status = RETURN;\n step = null;\n fail = null;\n run(++runTick);\n }\n break;\n default:\n if (interrupt === null) {\n interrupt = util.left(error);\n }\n if (bracketCount === 0) {\n status = RETURN;\n step = null;\n fail = null;\n }\n }\n\n return canceler;\n };\n }\n\n function join(cb) {\n return function () {\n var canceler = onComplete({\n rethrow: false,\n handler: cb\n })();\n if (status === SUSPENDED) {\n run(runTick);\n }\n return canceler;\n };\n }\n\n return {\n kill: kill,\n join: join,\n onComplete: onComplete,\n isSuspended: function () {\n return status === SUSPENDED;\n },\n run: function () {\n if (status === SUSPENDED) {\n if (!Scheduler.isDraining()) {\n Scheduler.enqueue(function () {\n run(runTick);\n });\n } else {\n run(runTick);\n }\n }\n }\n };\n }\n\n function runPar(util, supervisor, par, cb) {\n // Table of all forked fibers.\n var fiberId = 0;\n var fibers = {};\n\n // Table of currently running cancelers, as a product of `Alt` behavior.\n var killId = 0;\n var kills = {};\n\n // Error used for early cancelation on Alt branches.\n var early = new Error(\"[ParAff] Early exit\");\n\n // Error used to kill the entire tree.\n var interrupt = null;\n\n // The root pointer of the tree.\n var root = EMPTY;\n\n // Walks a tree, invoking all the cancelers. Returns the table of pending\n // cancellation fibers.\n function kill(error, par, cb) {\n var step = par;\n var head = null;\n var tail = null;\n var count = 0;\n var kills = {};\n var tmp, kid;\n\n loop: while (true) {\n tmp = null;\n\n switch (step.tag) {\n case FORKED:\n if (step._3 === EMPTY) {\n tmp = fibers[step._1];\n kills[count++] = tmp.kill(error, function (result) {\n return function () {\n count--;\n if (count === 0) {\n cb(result)();\n }\n };\n });\n }\n // Terminal case.\n if (head === null) {\n break loop;\n }\n // Go down the right side of the tree.\n step = head._2;\n if (tail === null) {\n head = null;\n } else {\n head = tail._1;\n tail = tail._2;\n }\n break;\n case MAP:\n step = step._2;\n break;\n case APPLY:\n case ALT:\n if (head) {\n tail = new Aff(CONS, head, tail);\n }\n head = step;\n step = step._1;\n break;\n }\n }\n\n if (count === 0) {\n cb(util.right(void 0))();\n } else {\n // Run the cancelation effects. We alias `count` because it's mutable.\n kid = 0;\n tmp = count;\n for (; kid < tmp; kid++) {\n kills[kid] = kills[kid]();\n }\n }\n\n return kills;\n }\n\n // When a fiber resolves, we need to bubble back up the tree with the\n // result, computing the applicative nodes.\n function join(result, head, tail) {\n var fail, step, lhs, rhs, tmp, kid;\n\n if (util.isLeft(result)) {\n fail = result;\n step = null;\n } else {\n step = result;\n fail = null;\n }\n\n loop: while (true) {\n lhs = null;\n rhs = null;\n tmp = null;\n kid = null;\n\n // We should never continue if the entire tree has been interrupted.\n if (interrupt !== null) {\n return;\n }\n\n // We've made it all the way to the root of the tree, which means\n // the tree has fully evaluated.\n if (head === null) {\n cb(fail || step)();\n return;\n }\n\n // The tree has already been computed, so we shouldn't try to do it\n // again. This should never happen.\n // TODO: Remove this?\n if (head._3 !== EMPTY) {\n return;\n }\n\n switch (head.tag) {\n case MAP:\n if (fail === null) {\n head._3 = util.right(head._1(util.fromRight(step)));\n step = head._3;\n } else {\n head._3 = fail;\n }\n break;\n case APPLY:\n lhs = head._1._3;\n rhs = head._2._3;\n // If we have a failure we should kill the other side because we\n // can't possible yield a result anymore.\n if (fail) {\n head._3 = fail;\n tmp = true;\n kid = killId++;\n\n kills[kid] = kill(early, fail === lhs ? head._2 : head._1, function (/* unused */) {\n return function () {\n delete kills[kid];\n if (tmp) {\n tmp = false;\n } else if (tail === null) {\n join(fail, null, null);\n } else {\n join(fail, tail._1, tail._2);\n }\n };\n });\n\n if (tmp) {\n tmp = false;\n return;\n }\n } else if (lhs === EMPTY || rhs === EMPTY) {\n // We can only proceed if both sides have resolved.\n return;\n } else {\n step = util.right(util.fromRight(lhs)(util.fromRight(rhs)));\n head._3 = step;\n }\n break;\n case ALT:\n lhs = head._1._3;\n rhs = head._2._3;\n // We can only proceed if both have resolved or we have a success\n if (lhs === EMPTY && util.isLeft(rhs) || rhs === EMPTY && util.isLeft(lhs)) {\n return;\n }\n // If both sides resolve with an error, we should continue with the\n // first error\n if (lhs !== EMPTY && util.isLeft(lhs) && rhs !== EMPTY && util.isLeft(rhs)) {\n fail = step === lhs ? rhs : lhs;\n step = null;\n head._3 = fail;\n } else {\n head._3 = step;\n tmp = true;\n kid = killId++;\n // Once a side has resolved, we need to cancel the side that is still\n // pending before we can continue.\n kills[kid] = kill(early, step === lhs ? head._2 : head._1, function (/* unused */) {\n return function () {\n delete kills[kid];\n if (tmp) {\n tmp = false;\n } else if (tail === null) {\n join(step, null, null);\n } else {\n join(step, tail._1, tail._2);\n }\n };\n });\n\n if (tmp) {\n tmp = false;\n return;\n }\n }\n break;\n }\n\n if (tail === null) {\n head = null;\n } else {\n head = tail._1;\n tail = tail._2;\n }\n }\n }\n\n function resolve(fiber) {\n return function (result) {\n return function () {\n delete fibers[fiber._1];\n fiber._3 = result;\n join(result, fiber._2._1, fiber._2._2);\n };\n };\n }\n\n // Walks the applicative tree, substituting non-applicative nodes with\n // `FORKED` nodes. In this tree, all applicative nodes use the `_3` slot\n // as a mutable slot for memoization. In an unresolved state, the `_3`\n // slot is `EMPTY`. In the cases of `ALT` and `APPLY`, we always walk\n // the left side first, because both operations are left-associative. As\n // we `RETURN` from those branches, we then walk the right side.\n function run() {\n var status = CONTINUE;\n var step = par;\n var head = null;\n var tail = null;\n var tmp, fid;\n\n loop: while (true) {\n tmp = null;\n fid = null;\n\n switch (status) {\n case CONTINUE:\n switch (step.tag) {\n case MAP:\n if (head) {\n tail = new Aff(CONS, head, tail);\n }\n head = new Aff(MAP, step._1, EMPTY, EMPTY);\n step = step._2;\n break;\n case APPLY:\n if (head) {\n tail = new Aff(CONS, head, tail);\n }\n head = new Aff(APPLY, EMPTY, step._2, EMPTY);\n step = step._1;\n break;\n case ALT:\n if (head) {\n tail = new Aff(CONS, head, tail);\n }\n head = new Aff(ALT, EMPTY, step._2, EMPTY);\n step = step._1;\n break;\n default:\n // When we hit a leaf value, we suspend the stack in the `FORKED`.\n // When the fiber resolves, it can bubble back up the tree.\n fid = fiberId++;\n status = RETURN;\n tmp = step;\n step = new Aff(FORKED, fid, new Aff(CONS, head, tail), EMPTY);\n tmp = Fiber(util, supervisor, tmp);\n tmp.onComplete({\n rethrow: false,\n handler: resolve(step)\n })();\n fibers[fid] = tmp;\n if (supervisor) {\n supervisor.register(tmp);\n }\n }\n break;\n case RETURN:\n // Terminal case, we are back at the root.\n if (head === null) {\n break loop;\n }\n // If we are done with the right side, we need to continue down the\n // left. Otherwise we should continue up the stack.\n if (head._1 === EMPTY) {\n head._1 = step;\n status = CONTINUE;\n step = head._2;\n head._2 = EMPTY;\n } else {\n head._2 = step;\n step = head;\n if (tail === null) {\n head = null;\n } else {\n head = tail._1;\n tail = tail._2;\n }\n }\n }\n }\n\n // Keep a reference to the tree root so it can be cancelled.\n root = step;\n\n for (fid = 0; fid < fiberId; fid++) {\n fibers[fid].run();\n }\n }\n\n // Cancels the entire tree. If there are already subtrees being canceled,\n // we need to first cancel those joins. We will then add fresh joins for\n // all pending branches including those that were in the process of being\n // canceled.\n function cancel(error, cb) {\n interrupt = util.left(error);\n var innerKills;\n for (var kid in kills) {\n if (kills.hasOwnProperty(kid)) {\n innerKills = kills[kid];\n for (kid in innerKills) {\n if (innerKills.hasOwnProperty(kid)) {\n innerKills[kid]();\n }\n }\n }\n }\n\n kills = null;\n var newKills = kill(error, root, cb);\n\n return function (killError) {\n return new Aff(ASYNC, function (killCb) {\n return function () {\n for (var kid in newKills) {\n if (newKills.hasOwnProperty(kid)) {\n newKills[kid]();\n }\n }\n return nonCanceler;\n };\n });\n };\n }\n\n run();\n\n return function (killError) {\n return new Aff(ASYNC, function (killCb) {\n return function () {\n return cancel(killError, killCb);\n };\n });\n };\n }\n\n function sequential(util, supervisor, par) {\n return new Aff(ASYNC, function (cb) {\n return function () {\n return runPar(util, supervisor, par, cb);\n };\n });\n }\n\n Aff.EMPTY = EMPTY;\n Aff.Pure = AffCtr(PURE);\n Aff.Throw = AffCtr(THROW);\n Aff.Catch = AffCtr(CATCH);\n Aff.Sync = AffCtr(SYNC);\n Aff.Async = AffCtr(ASYNC);\n Aff.Bind = AffCtr(BIND);\n Aff.Bracket = AffCtr(BRACKET);\n Aff.Fork = AffCtr(FORK);\n Aff.Seq = AffCtr(SEQ);\n Aff.ParMap = AffCtr(MAP);\n Aff.ParApply = AffCtr(APPLY);\n Aff.ParAlt = AffCtr(ALT);\n Aff.Fiber = Fiber;\n Aff.Supervisor = Supervisor;\n Aff.Scheduler = Scheduler;\n Aff.nonCanceler = nonCanceler;\n\n return Aff;\n}();\n\nexport const _pure = Aff.Pure;\nexport const _throwError = Aff.Throw;\n\nexport function _catchError(aff) {\n return function (k) {\n return Aff.Catch(aff, k);\n };\n}\n\nexport function _map(f) {\n return function (aff) {\n if (aff.tag === Aff.Pure.tag) {\n return Aff.Pure(f(aff._1));\n } else {\n return Aff.Bind(aff, function (value) {\n return Aff.Pure(f(value));\n });\n }\n };\n}\n\nexport function _bind(aff) {\n return function (k) {\n return Aff.Bind(aff, k);\n };\n}\n\nexport function _fork(immediate) {\n return function (aff) {\n return Aff.Fork(immediate, aff);\n };\n}\n\nexport const _liftEffect = Aff.Sync;\n\nexport function _parAffMap(f) {\n return function (aff) {\n return Aff.ParMap(f, aff);\n };\n}\n\nexport function _parAffApply(aff1) {\n return function (aff2) {\n return Aff.ParApply(aff1, aff2);\n };\n}\n\nexport function _parAffAlt(aff1) {\n return function (aff2) {\n return Aff.ParAlt(aff1, aff2);\n };\n}\n\nexport const makeAff = Aff.Async;\n\nexport function generalBracket(acquire) {\n return function (options) {\n return function (k) {\n return Aff.Bracket(acquire, options, k);\n };\n };\n}\n\nexport function _makeFiber(util, aff) {\n return function () {\n return Aff.Fiber(util, null, aff);\n };\n}\n\nexport function _makeSupervisedFiber(util, aff) {\n return function () {\n var supervisor = Aff.Supervisor(util);\n return {\n fiber: Aff.Fiber(util, supervisor, aff),\n supervisor: supervisor\n };\n };\n}\n\nexport function _killAll(error, supervisor, cb) {\n return supervisor.killAll(error, cb);\n}\n\nexport const _delay = function () {\n function setDelay(n, k) {\n if (n === 0 && typeof setImmediate !== \"undefined\") {\n return setImmediate(k);\n } else {\n return setTimeout(k, n);\n }\n }\n\n function clearDelay(n, t) {\n if (n === 0 && typeof clearImmediate !== \"undefined\") {\n return clearImmediate(t);\n } else {\n return clearTimeout(t);\n }\n }\n\n return function (right, ms) {\n return Aff.Async(function (cb) {\n return function () {\n var timer = setDelay(ms, cb(right()));\n return function () {\n return Aff.Sync(function () {\n return right(clearDelay(ms, timer));\n });\n };\n };\n });\n };\n}();\n\nexport const _sequential = Aff.Seq;\n", "module Data.Profunctor where\n\nimport Prelude\nimport Data.Newtype (class Newtype, wrap, unwrap)\n\n-- | A `Profunctor` is a `Functor` from the pair category `(Type^op, Type)`\n-- | to `Type`.\n-- |\n-- | In other words, a `Profunctor` is a type constructor of two type\n-- | arguments, which is contravariant in its first argument and covariant\n-- | in its second argument.\n-- |\n-- | The `dimap` function can be used to map functions over both arguments\n-- | simultaneously.\n-- |\n-- | A straightforward example of a profunctor is the function arrow `(->)`.\n-- |\n-- | Laws:\n-- |\n-- | - Identity: `dimap identity identity = identity`\n-- | - Composition: `dimap f1 g1 <<< dimap f2 g2 = dimap (f1 >>> f2) (g1 <<< g2)`\nclass Profunctor p where\n dimap :: forall a b c d. (a -> b) -> (c -> d) -> p b c -> p a d\n\n-- | Map a function over the (contravariant) first type argument only.\nlcmap :: forall a b c p. Profunctor p => (a -> b) -> p b c -> p a c\nlcmap a2b = dimap a2b identity\n\n-- | Map a function over the (covariant) second type argument only.\nrmap :: forall a b c p. Profunctor p => (b -> c) -> p a b -> p a c\nrmap b2c = dimap identity b2c\n\n-- | Lift a pure function into any `Profunctor` which is also a `Category`.\narr :: forall a b p. Category p => Profunctor p => (a -> b) -> p a b\narr f = rmap f identity\n\nunwrapIso :: forall p t a. Profunctor p => Newtype t a => p t t -> p a a\nunwrapIso = dimap wrap unwrap\n\nwrapIso :: forall p t a. Profunctor p => Newtype t a => (a -> t) -> p a a -> p t t\nwrapIso _ = dimap unwrap wrap\n\ninstance profunctorFn :: Profunctor (->) where\n dimap a2b c2d b2c = a2b >>> b2c >>> c2d\n", "module Control.Parallel.Class where\n\nimport Prelude\n\nimport Control.Alt (class Alt)\nimport Control.Alternative (class Alternative)\nimport Control.Monad.Cont.Trans (ContT(..), runContT)\nimport Control.Monad.Except.Trans (ExceptT(..))\nimport Control.Monad.Maybe.Trans (MaybeT(..))\nimport Control.Monad.Reader.Trans (mapReaderT, ReaderT)\nimport Control.Monad.Writer.Trans (mapWriterT, WriterT)\nimport Control.Plus (class Plus)\nimport Data.Either (Either)\nimport Data.Functor.Compose (Compose(..))\nimport Data.Functor.Costar (Costar(..))\nimport Data.Maybe (Maybe(..))\nimport Data.Newtype (class Newtype)\nimport Data.Profunctor.Star (Star(..))\nimport Effect.Class (class MonadEffect, liftEffect)\nimport Effect.Ref as Ref\n\n-- | The `Parallel` class abstracts over pairs of `Apply`s where one of them\n-- | (`m`) composes sequentially, and the other (`f`) composes in parallel.\n-- | `m` is usually a `Monad`, which enforces the sequential nature of its\n-- | composition, but it doesn't need to be.\nclass (Apply m, Apply f) <= Parallel f m | m -> f, f -> m where\n parallel :: m ~> f\n sequential :: f ~> m\n\ninstance monadParExceptT :: (Parallel f m, Monad m) => Parallel (Compose f (Either e)) (ExceptT e m) where\n parallel (ExceptT ma) = Compose (parallel ma)\n sequential (Compose fa) = ExceptT (sequential fa)\n\ninstance monadParReaderT :: Parallel f m => Parallel (ReaderT e f) (ReaderT e m) where\n parallel = mapReaderT parallel\n sequential = mapReaderT sequential\n\ninstance monadParWriterT :: (Monoid w, Parallel f m) => Parallel (WriterT w f) (WriterT w m) where\n parallel = mapWriterT parallel\n sequential = mapWriterT sequential\n\ninstance monadParMaybeT :: (Parallel f m, Monad m) => Parallel (Compose f Maybe) (MaybeT m) where\n parallel (MaybeT ma) = Compose (parallel ma)\n sequential (Compose fa) = MaybeT (sequential fa)\n\ninstance monadParStar :: Parallel f m => Parallel (Star f a) (Star m a) where\n parallel (Star f) = (Star $ parallel <<< f)\n sequential (Star f) = (Star $ sequential <<< f)\n\ninstance monadParCostar :: Parallel f m => Parallel (Costar f a) (Costar m a) where\n parallel (Costar f) = (Costar $ sequential >>> f)\n sequential (Costar f) = (Costar $ parallel >>> f)\n\n-- | The `ParCont` type constructor provides an `Applicative` instance\n-- | based on `ContT Unit m`, which waits for multiple continuations to be\n-- | resumed simultaneously.\n-- |\n-- | ParCont sections of code can be embedded in sequential code by using\n-- | the `parallel` and `sequential` functions:\n-- |\n-- | ```purescript\n-- | loadModel :: ContT Unit (Eff (ajax :: AJAX)) Model\n-- | loadModel = do\n-- | token <- authenticate\n-- | sequential $\n-- | Model <$> parallel (get \"/products/popular/\" token)\n-- | <*> parallel (get \"/categories/all\" token)\n-- | ```\nnewtype ParCont m a = ParCont (ContT Unit m a)\n\nderive instance newtypeParCont :: Newtype (ParCont m a) _\n\ninstance functorParCont :: MonadEffect m => Functor (ParCont m) where\n map f = parallel <<< map f <<< sequential\n\ninstance applyParCont :: MonadEffect m => Apply (ParCont m) where\n apply (ParCont ca) (ParCont cb) = ParCont $ ContT \\k -> do\n ra <- liftEffect (Ref.new Nothing)\n rb <- liftEffect (Ref.new Nothing)\n\n runContT ca \\a -> do\n mb <- liftEffect (Ref.read rb)\n case mb of\n Nothing -> liftEffect (Ref.write (Just a) ra)\n Just b -> k (a b)\n\n runContT cb \\b -> do\n ma <- liftEffect (Ref.read ra)\n case ma of\n Nothing -> liftEffect (Ref.write (Just b) rb)\n Just a -> k (a b)\n\ninstance applicativeParCont :: MonadEffect m => Applicative (ParCont m) where\n pure = parallel <<< pure\n\ninstance altParCont :: MonadEffect m => Alt (ParCont m) where\n alt (ParCont c1) (ParCont c2) = ParCont $ ContT \\k -> do\n done <- liftEffect (Ref.new false)\n\n runContT c1 \\a -> do\n b <- liftEffect (Ref.read done)\n if b\n then pure unit\n else do\n liftEffect (Ref.write true done)\n k a\n\n runContT c2 \\a -> do\n b <- liftEffect (Ref.read done)\n if b\n then pure unit\n else do\n liftEffect (Ref.write true done)\n k a\n\ninstance plusParCont :: MonadEffect m => Plus (ParCont m) where\n empty = ParCont $ ContT \\_ -> pure unit\n\ninstance alternativeParCont :: MonadEffect m => Alternative (ParCont m)\n\ninstance monadParParCont :: MonadEffect m => Parallel (ParCont m) (ContT Unit m) where\n parallel = ParCont\n sequential (ParCont ma) = ma\n", "module Control.Parallel\n ( parApply\n , parTraverse\n , parTraverse_\n , parSequence\n , parSequence_\n , parOneOf\n , parOneOfMap\n , module Control.Parallel.Class\n ) where\n\nimport Prelude\n\nimport Control.Alternative (class Alternative)\nimport Control.Parallel.Class (class Parallel, parallel, sequential, ParCont(..))\n\nimport Data.Foldable (class Foldable, traverse_, oneOfMap)\nimport Data.Traversable (class Traversable, traverse)\n\n-- | Apply a function to an argument under a type constructor in parallel.\nparApply\n :: forall f m a b\n . Parallel f m\n => m (a -> b)\n -> m a\n -> m b\nparApply mf ma = sequential(apply (parallel mf) (parallel ma))\n\n-- | Traverse a collection in parallel.\nparTraverse\n :: forall f m t a b\n . Parallel f m\n => Applicative f\n => Traversable t\n => (a -> m b)\n -> t a\n -> m (t b)\nparTraverse f = sequential <<< traverse (parallel <<< f)\n\n-- | Traverse a collection in parallel, discarding any results.\nparTraverse_\n :: forall f m t a b\n . Parallel f m\n => Applicative f\n => Foldable t\n => (a -> m b)\n -> t a\n -> m Unit\nparTraverse_ f = sequential <<< traverse_ (parallel <<< f)\n\nparSequence\n :: forall a t m f\n . Parallel f m\n => Applicative f\n => Traversable t\n => t (m a)\n -> m (t a)\nparSequence = parTraverse identity\n\nparSequence_\n :: forall a t m f\n . Parallel f m\n => Applicative f\n => Foldable t\n => t (m a)\n -> m Unit\nparSequence_ = parTraverse_ identity\n\n-- | Race a collection in parallel.\nparOneOf\n :: forall a t m f\n . Parallel f m\n => Alternative f\n => Foldable t\n => Functor t\n => t (m a)\n -> m a\nparOneOf = sequential <<< oneOfMap parallel\n\n-- | Race a collection in parallel while mapping to some effect.\nparOneOfMap\n :: forall a b t m f\n . Parallel f m\n => Alternative f\n => Foldable t\n => Functor t\n => (a -> m b)\n -> t a\n -> m b\nparOneOfMap f = sequential <<< oneOfMap (parallel <<< f)\n", "export const unsafePerformEffect = function (f) {\n return f();\n};\n", "module Effect.Aff\n ( Aff\n , Fiber\n , ParAff(..)\n , Canceler(..)\n , makeAff\n , launchAff\n , launchAff_\n , launchSuspendedAff\n , runAff\n , runAff_\n , runSuspendedAff\n , forkAff\n , suspendAff\n , supervise\n , attempt\n , apathize\n , delay\n , never\n , finally\n , invincible\n , killFiber\n , joinFiber\n , cancelWith\n , bracket\n , BracketConditions\n , generalBracket\n , nonCanceler\n , effectCanceler\n , fiberCanceler\n , module Exports\n ) where\n\nimport Prelude\n\nimport Control.Alt (class Alt)\nimport Control.Alternative (class Alternative)\nimport Control.Apply (lift2)\nimport Control.Lazy (class Lazy)\nimport Control.Monad.Error.Class (class MonadError, class MonadThrow, throwError, catchError, try)\nimport Control.Monad.Error.Class (try, throwError, catchError) as Exports\nimport Control.Monad.Rec.Class (class MonadRec, Step(..))\nimport Control.Monad.ST.Class (class MonadST, liftST)\nimport Control.Monad.ST.Global (Global)\nimport Control.Parallel (parSequence_, parallel)\nimport Control.Parallel.Class (class Parallel)\nimport Control.Parallel.Class (sequential, parallel) as Exports\nimport Control.Plus (class Plus, empty)\nimport Data.Either (Either(..))\nimport Data.Function.Uncurried as Fn\nimport Data.Newtype (class Newtype)\nimport Data.Time.Duration (Milliseconds(..))\nimport Data.Time.Duration (Milliseconds(..)) as Exports\nimport Effect (Effect)\nimport Effect.Class (class MonadEffect, liftEffect)\nimport Effect.Exception (Error, error)\nimport Effect.Exception (Error, error, message) as Exports\nimport Effect.Unsafe (unsafePerformEffect)\nimport Partial.Unsafe (unsafeCrashWith)\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | An `Aff a` is an asynchronous computation with effects. The\n-- | computation may either error with an exception, or produce a result of\n-- | type `a`. `Aff` effects are assembled from primitive `Effect` effects using\n-- | `makeAff` or `liftEffect`.\nforeign import data Aff :: Type -> Type\n\ntype role Aff representational\n\ninstance functorAff :: Functor Aff where\n map = _map\n\ninstance applyAff :: Apply Aff where\n apply = ap\n\ninstance applicativeAff :: Applicative Aff where\n pure = _pure\n\ninstance bindAff :: Bind Aff where\n bind = _bind\n\ninstance monadAff :: Monad Aff\n\ninstance semigroupAff :: Semigroup a => Semigroup (Aff a) where\n append = lift2 append\n\ninstance monoidAff :: Monoid a => Monoid (Aff a) where\n mempty = pure mempty\n\ninstance altAff :: Alt Aff where\n alt a1 a2 = catchError a1 (const a2)\n\ninstance plusAff :: Plus Aff where\n empty = throwError (error \"Always fails\")\n\n-- | This instance is provided for compatibility. `Aff` is always stack-safe\n-- | within a given fiber. This instance will just result in unnecessary\n-- | bind overhead.\ninstance monadRecAff :: MonadRec Aff where\n tailRecM k = go\n where\n go a = do\n res <- k a\n case res of\n Done r -> pure r\n Loop b -> go b\n\ninstance monadThrowAff :: MonadThrow Error Aff where\n throwError = _throwError\n\ninstance monadErrorAff :: MonadError Error Aff where\n catchError = _catchError\n\ninstance monadEffectAff :: MonadEffect Aff where\n liftEffect = _liftEffect\n\ninstance lazyAff :: Lazy (Aff a) where\n defer f = pure unit >>= f\n\ninstance monadSTAff :: MonadST Global Aff where\n liftST = liftST >>> liftEffect\n\n-- | Applicative for running parallel effects. Any `Aff` can be coerced to a\n-- | `ParAff` and back using the `Parallel` class.\nforeign import data ParAff :: Type -> Type\n\ntype role ParAff representational\n\ninstance functorParAff :: Functor ParAff where\n map = _parAffMap\n\n-- | Runs effects in parallel, combining their results.\ninstance applyParAff :: Apply ParAff where\n apply = _parAffApply\n\ninstance applicativeParAff :: Applicative ParAff where\n pure = parallel <<< pure\n\ninstance semigroupParAff :: Semigroup a => Semigroup (ParAff a) where\n append = lift2 append\n\ninstance monoidParAff :: Monoid a => Monoid (ParAff a) where\n mempty = pure mempty\n\n-- | Races effects in parallel. Returns the first successful result or the\n-- | first error if all fail with an exception. Losing branches will be\n-- | cancelled.\ninstance altParAff :: Alt ParAff where\n alt = _parAffAlt\n\ninstance plusParAff :: Plus ParAff where\n empty = parallel empty\n\ninstance alternativeParAff :: Alternative ParAff\n\ninstance parallelAff :: Parallel ParAff Aff where\n parallel = (unsafeCoerce :: forall a. Aff a -> ParAff a)\n sequential = _sequential\n\ntype OnComplete a =\n { rethrow :: Boolean\n , handler :: (Either Error a -> Effect Unit) -> Effect Unit\n }\n\n-- | Represents a forked computation by way of `forkAff`. `Fiber`s are\n-- | memoized, so their results are only computed once.\nnewtype Fiber a = Fiber\n { run :: Effect Unit\n , kill :: Fn.Fn2 Error (Either Error Unit -> Effect Unit) (Effect (Effect Unit))\n , join :: (Either Error a -> Effect Unit) -> Effect (Effect Unit)\n , onComplete :: OnComplete a -> Effect (Effect Unit)\n , isSuspended :: Effect Boolean\n }\n\ninstance functorFiber :: Functor Fiber where\n map f t = unsafePerformEffect (makeFiber (f <$> joinFiber t))\n\ninstance applyFiber :: Apply Fiber where\n apply t1 t2 = unsafePerformEffect (makeFiber (joinFiber t1 <*> joinFiber t2))\n\ninstance applicativeFiber :: Applicative Fiber where\n pure a = unsafePerformEffect (makeFiber (pure a))\n\n-- | Invokes pending cancelers in a fiber and runs cleanup effects. Blocks\n-- | until the fiber has fully exited.\nkillFiber :: forall a. Error -> Fiber a -> Aff Unit\nkillFiber e (Fiber t) = do\n suspended <- liftEffect t.isSuspended\n if suspended then\n liftEffect $ void $ Fn.runFn2 t.kill e (const (pure unit))\n else\n makeAff \\k -> effectCanceler <$> Fn.runFn2 t.kill e k\n\n-- | Blocks until the fiber completes, yielding the result. If the fiber\n-- | throws an exception, it is rethrown in the current fiber.\njoinFiber :: Fiber ~> Aff\njoinFiber (Fiber t) = makeAff \\k -> effectCanceler <$> t.join k\n\n-- | A cancellation effect for actions run via `makeAff`. If a `Fiber` is\n-- | killed, and an async action is pending, the canceler will be called to\n-- | clean it up.\nnewtype Canceler = Canceler (Error -> Aff Unit)\n\nderive instance newtypeCanceler :: Newtype Canceler _\n\ninstance semigroupCanceler :: Semigroup Canceler where\n append (Canceler c1) (Canceler c2) =\n Canceler \\err -> parSequence_ [ c1 err, c2 err ]\n\n-- | A no-op `Canceler` can be constructed with `mempty`.\ninstance monoidCanceler :: Monoid Canceler where\n mempty = nonCanceler\n\n-- | A canceler which does not cancel anything.\nnonCanceler :: Canceler\nnonCanceler = Canceler (const (pure unit))\n\n-- | A canceler from an Effect action.\neffectCanceler :: Effect Unit -> Canceler\neffectCanceler = Canceler <<< const <<< liftEffect\n\n-- | A canceler from a Fiber.\nfiberCanceler :: forall a. Fiber a -> Canceler\nfiberCanceler = Canceler <<< flip killFiber\n\n-- | Forks an `Aff` from an `Effect` context, returning the `Fiber`.\nlaunchAff :: forall a. Aff a -> Effect (Fiber a)\nlaunchAff aff = do\n fiber <- makeFiber aff\n case fiber of Fiber f -> f.run\n pure fiber\n\n-- | Forks an `Aff` from an `Effect` context, discarding the `Fiber`.\nlaunchAff_ :: Aff Unit -> Effect Unit\nlaunchAff_ = void <<< launchAff\n\n-- | Suspends an `Aff` from an `Effect` context, returning the `Fiber`.\nlaunchSuspendedAff :: forall a. Aff a -> Effect (Fiber a)\nlaunchSuspendedAff = makeFiber\n\n-- | Forks an `Aff` from an `Effect` context and also takes a callback to run when\n-- | it completes. Returns the pending `Fiber`.\nrunAff :: forall a. (Either Error a -> Effect Unit) -> Aff a -> Effect (Fiber Unit)\nrunAff k aff = launchAff $ liftEffect <<< k =<< try aff\n\n-- | Forks an `Aff` from an `Effect` context and also takes a callback to run when\n-- | it completes, discarding the `Fiber`.\nrunAff_ :: forall a. (Either Error a -> Effect Unit) -> Aff a -> Effect Unit\nrunAff_ k aff = void $ runAff k aff\n\n-- | Suspends an `Aff` from an `Effect` context and also takes a callback to run\n-- | when it completes. Returns the suspended `Fiber`.\nrunSuspendedAff :: forall a. (Either Error a -> Effect Unit) -> Aff a -> Effect (Fiber Unit)\nrunSuspendedAff k aff = launchSuspendedAff $ liftEffect <<< k =<< try aff\n\n-- | Forks an `Aff` from within a parent `Aff` context, returning the `Fiber`.\nforkAff :: forall a. Aff a -> Aff (Fiber a)\nforkAff = _fork true\n\n-- | Suspends an `Aff` from within a parent `Aff` context, returning the `Fiber`.\n-- | A suspended `Aff` is not executed until a consumer observes the result\n-- | with `joinFiber`.\nsuspendAff :: forall a. Aff a -> Aff (Fiber a)\nsuspendAff = _fork false\n\n-- | Pauses the running fiber.\ndelay :: Milliseconds -> Aff Unit\ndelay (Milliseconds n) = Fn.runFn2 _delay Right n\n\n-- | An async computation which does not resolve.\nnever :: forall a. Aff a\nnever = makeAff \\_ -> pure mempty\n\n-- | A monomorphic version of `try`. Catches thrown errors and lifts them\n-- | into an `Either`.\nattempt :: forall a. Aff a -> Aff (Either Error a)\nattempt = try\n\n-- | Ignores any errors.\napathize :: forall a. Aff a -> Aff Unit\napathize = attempt >>> map (const unit)\n\n-- | Runs the first effect after the second, regardless of whether it completed\n-- | successfully or the fiber was cancelled.\nfinally :: forall a. Aff Unit -> Aff a -> Aff a\nfinally fin a = bracket (pure unit) (const fin) (const a)\n\n-- | Runs an effect such that it cannot be killed.\ninvincible :: forall a. Aff a -> Aff a\ninvincible a = bracket a (const (pure unit)) pure\n\n-- | Attaches a custom `Canceler` to an action. If the computation is canceled,\n-- | then the custom `Canceler` will be run afterwards.\ncancelWith :: forall a. Aff a -> Canceler -> Aff a\ncancelWith aff (Canceler cancel) =\n generalBracket (pure unit)\n { killed: \\e _ -> cancel e\n , failed: const pure\n , completed: const pure\n }\n (const aff)\n\n-- | Guarantees resource acquisition and cleanup. The first effect may acquire\n-- | some resource, while the second will dispose of it. The third effect makes\n-- | use of the resource. Disposal is always run last, regardless. Neither\n-- | acquisition nor disposal may be cancelled and are guaranteed to run until\n-- | they complete.\nbracket :: forall a b. Aff a -> (a -> Aff Unit) -> (a -> Aff b) -> Aff b\nbracket acquire completed =\n generalBracket acquire\n { killed: const completed\n , failed: const completed\n , completed: const completed\n }\n\ntype Supervised a =\n { fiber :: Fiber a\n , supervisor :: Supervisor\n }\n\n-- | Creates a new supervision context for some `Aff`, guaranteeing fiber\n-- | cleanup when the parent completes. Any pending fibers forked within\n-- | the context will be killed and have their cancelers run.\nsupervise :: forall a. Aff a -> Aff a\nsupervise aff =\n generalBracket (liftEffect acquire)\n { killed: \\err sup -> parSequence_ [ killFiber err sup.fiber, killAll err sup ]\n , failed: const (killAll killError)\n , completed: const (killAll killError)\n }\n (joinFiber <<< _.fiber)\n where\n killError :: Error\n killError =\n error \"[Aff] Child fiber outlived parent\"\n\n killAll :: Error -> Supervised a -> Aff Unit\n killAll err sup = makeAff \\k ->\n Fn.runFn3 _killAll err sup.supervisor (k (pure unit))\n\n acquire :: Effect (Supervised a)\n acquire = do\n sup <- Fn.runFn2 _makeSupervisedFiber ffiUtil aff\n case sup.fiber of Fiber f -> f.run\n pure sup\n\nforeign import data Supervisor :: Type\nforeign import _pure :: forall a. a -> Aff a\nforeign import _throwError :: forall a. Error -> Aff a\nforeign import _catchError :: forall a. Aff a -> (Error -> Aff a) -> Aff a\nforeign import _fork :: forall a. Boolean -> Aff a -> Aff (Fiber a)\nforeign import _map :: forall a b. (a -> b) -> Aff a -> Aff b\nforeign import _bind :: forall a b. Aff a -> (a -> Aff b) -> Aff b\nforeign import _delay :: forall a. Fn.Fn2 (Unit -> Either a Unit) Number (Aff Unit)\nforeign import _liftEffect :: forall a. Effect a -> Aff a\nforeign import _parAffMap :: forall a b. (a -> b) -> ParAff a -> ParAff b\nforeign import _parAffApply :: forall a b. ParAff (a -> b) -> ParAff a -> ParAff b\nforeign import _parAffAlt :: forall a. ParAff a -> ParAff a -> ParAff a\nforeign import _makeFiber :: forall a. Fn.Fn2 FFIUtil (Aff a) (Effect (Fiber a))\nforeign import _makeSupervisedFiber :: forall a. Fn.Fn2 FFIUtil (Aff a) (Effect (Supervised a))\nforeign import _killAll :: Fn.Fn3 Error Supervisor (Effect Unit) (Effect Canceler)\nforeign import _sequential :: ParAff ~> Aff\n\ntype BracketConditions a b =\n { killed :: Error -> a -> Aff Unit\n , failed :: Error -> a -> Aff Unit\n , completed :: b -> a -> Aff Unit\n }\n\n-- | A general purpose bracket which lets you observe the status of the\n-- | bracketed action. The bracketed action may have been killed with an\n-- | exception, thrown an exception, or completed successfully.\nforeign import generalBracket :: forall a b. Aff a -> BracketConditions a b -> (a -> Aff b) -> Aff b\n\n-- | Constructs an `Aff` from low-level `Effect` effects using a callback. A\n-- | `Canceler` effect should be returned to cancel the pending action. The\n-- | supplied callback may be invoked only once. Subsequent invocation are\n-- | ignored.\nforeign import makeAff :: forall a. ((Either Error a -> Effect Unit) -> Effect Canceler) -> Aff a\n\nmakeFiber :: forall a. Aff a -> Effect (Fiber a)\nmakeFiber aff = Fn.runFn2 _makeFiber ffiUtil aff\n\nnewtype FFIUtil = FFIUtil\n { isLeft :: forall a b. Either a b -> Boolean\n , fromLeft :: forall a b. Either a b -> a\n , fromRight :: forall a b. Either a b -> b\n , left :: forall a b. a -> Either a b\n , right :: forall a b. b -> Either a b\n }\n\nffiUtil :: FFIUtil\nffiUtil = FFIUtil\n { isLeft\n , fromLeft: unsafeFromLeft\n , fromRight: unsafeFromRight\n , left: Left\n , right: Right\n }\n where\n isLeft :: forall a b. Either a b -> Boolean\n isLeft = case _ of\n Left _ -> true\n Right _ -> false\n\n unsafeFromLeft :: forall a b. Either a b -> a\n unsafeFromLeft = case _ of\n Left a -> a\n Right _ -> unsafeCrashWith \"unsafeFromLeft: Right\"\n\n unsafeFromRight :: forall a b. Either a b -> b\n unsafeFromRight = case _ of\n Right a -> a\n Left _ -> unsafeCrashWith \"unsafeFromRight: Left\"\n", "-- | This module provides compatability functions for constructing `Aff`s which\n-- | are defined via the FFI.\nmodule Effect.Aff.Compat\n ( EffectFnAff(..)\n , EffectFnCanceler(..)\n , EffectFnCb\n , fromEffectFnAff\n , module Effect.Uncurried\n ) where\n\nimport Prelude\nimport Data.Either (Either(..))\nimport Effect.Aff (Aff, Canceler(..), makeAff, nonCanceler)\nimport Effect.Exception (Error)\nimport Effect.Uncurried (EffectFn1, EffectFn2, EffectFn3, mkEffectFn1, mkEffectFn2, mkEffectFn3, runEffectFn1, runEffectFn2, runEffectFn3)\n\ntype EffectFnCb a = EffectFn1 a Unit\n\nnewtype EffectFnAff a = EffectFnAff (EffectFn2 (EffectFnCb Error) (EffectFnCb a) EffectFnCanceler)\n\nnewtype EffectFnCanceler = EffectFnCanceler (EffectFn3 Error (EffectFnCb Error) (EffectFnCb Unit) Unit)\n\n-- | Lift a FFI definition into an `Aff`. `EffectFnAff` makes use of `EffectFn` so\n-- | `Effect` thunks are unnecessary. A definition might follow this example:\n-- |\n-- | ```javascript\n-- | exports._myAff = function (onError, onSuccess) {\n-- | var cancel = doSomethingAsync(function (err, res) {\n-- | if (err) {\n-- | onError(err);\n-- | } else {\n-- | onSuccess(res);\n-- | }\n-- | });\n-- | return function (cancelError, onCancelerError, onCancelerSuccess) {\n-- | cancel();\n-- | onCancelerSuccess();\n-- | };\n-- | };\n-- | ```\n-- |\n-- | ```purescript\n-- | foreign import _myAff :: EffectFnAff String\n-- |\n-- | myAff :: Aff String\n-- | myAff = fromEffectFnAff _myAff\n-- | ````\nfromEffectFnAff :: EffectFnAff ~> Aff\nfromEffectFnAff (EffectFnAff eff) = makeAff \\k -> do\n EffectFnCanceler canceler <- runEffectFn2 eff (mkEffectFn1 (k <<< Left)) (mkEffectFn1 (k <<< Right))\n pure $ Canceler \\e -> makeAff \\k2 -> do\n runEffectFn3 canceler e (mkEffectFn1 (k2 <<< Left)) (mkEffectFn1 (k2 <<< Right))\n pure nonCanceler\n", "export function typeOf(value) {\n return typeof value;\n}\n\nexport function tagOf(value) {\n return Object.prototype.toString.call(value).slice(8, -1);\n}\n\nexport function isNull(value) {\n return value === null;\n}\n\nexport function isUndefined(value) {\n return value === undefined;\n}\n\nexport const isArray = Array.isArray || function (value) {\n return Object.prototype.toString.call(value) === \"[object Array]\";\n};\n", "export const fromNumberImpl = function (just) {\n return function (nothing) {\n return function (n) {\n /* jshint bitwise: false */\n return (n | 0) === n ? just(n) : nothing;\n };\n };\n};\n\nexport const toNumber = function (n) {\n return n;\n};\n\nexport const fromStringAsImpl = function (just) {\n return function (nothing) {\n return function (radix) {\n var digits;\n if (radix < 11) {\n digits = \"[0-\" + (radix - 1).toString() + \"]\";\n } else if (radix === 11) {\n digits = \"[0-9a]\";\n } else {\n digits = \"[0-9a-\" + String.fromCharCode(86 + radix) + \"]\";\n }\n var pattern = new RegExp(\"^[\\\\+\\\\-]?\" + digits + \"+$\", \"i\");\n\n return function (s) {\n /* jshint bitwise: false */\n if (pattern.test(s)) {\n var i = parseInt(s, radix);\n return (i | 0) === i ? just(i) : nothing;\n } else {\n return nothing;\n }\n };\n };\n };\n};\n\nexport const toStringAs = function (radix) {\n return function (i) {\n return i.toString(radix);\n };\n};\n\n\nexport const quot = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return x / y | 0;\n };\n};\n\nexport const rem = function (x) {\n return function (y) {\n return x % y;\n };\n};\n\nexport const pow = function (x) {\n return function (y) {\n /* jshint bitwise: false */\n return Math.pow(x,y) | 0;\n };\n};\n", "/* globals exports */\nexport const nan = NaN;\nconst isNaNImpl = isNaN;\nexport { isNaNImpl as isNaN };\nexport const infinity = Infinity;\nconst isFiniteImpl = isFinite;\nexport { isFiniteImpl as isFinite };\n\nexport function fromStringImpl(str, isFinite, just, nothing) {\n var num = parseFloat(str);\n if (isFinite(num)) {\n return just(num);\n } else {\n return nothing;\n }\n}\n\nexport const abs = Math.abs;\n\nexport const acos = Math.acos;\n\nexport const asin = Math.asin;\n\nexport const atan = Math.atan;\n\nexport const atan2 = function (y) {\n return function (x) {\n return Math.atan2(y, x);\n };\n};\n\nexport const ceil = Math.ceil;\n\nexport const cos = Math.cos;\n\nexport const exp = Math.exp;\n\nexport const floor = Math.floor;\n\nexport const log = Math.log;\n\nexport const max = function (n1) {\n return function (n2) {\n return Math.max(n1, n2);\n };\n};\n\nexport const min = function (n1) {\n return function (n2) {\n return Math.min(n1, n2);\n };\n};\n\nexport const pow = function (n) {\n return function (p) {\n return Math.pow(n, p);\n };\n};\n\nexport const remainder = function (n) {\n return function (m) {\n return n % m;\n };\n};\n\nexport const round = Math.round;\n\nexport const sign = Math.sign ? Math.sign : function(x) {\n return x === 0 || x !== x ? x : (x < 0 ? -1 : 1);\n};\n\nexport const sin = Math.sin;\n\nexport const sqrt = Math.sqrt;\n\nexport const tan = Math.tan;\n\nexport const trunc = Math.trunc ? Math.trunc : function(x) {\n return x < 0 ? Math.ceil(x) : Math.floor(x);\n}\n", "module Data.Int\n ( fromNumber\n , ceil\n , floor\n , trunc\n , round\n , toNumber\n , fromString\n , Radix\n , radix\n , binary\n , octal\n , decimal\n , hexadecimal\n , base36\n , fromStringAs\n , toStringAs\n , Parity(..)\n , parity\n , even\n , odd\n , quot\n , rem\n , pow\n ) where\n\nimport Prelude\n\nimport Data.Int.Bits ((.&.))\nimport Data.Maybe (Maybe(..), fromMaybe)\nimport Data.Number (isFinite)\nimport Data.Number as Number\n\n-- | Creates an `Int` from a `Number` value. The number must already be an\n-- | integer and fall within the valid range of values for the `Int` type\n-- | otherwise `Nothing` is returned.\nfromNumber :: Number -> Maybe Int\nfromNumber = fromNumberImpl Just Nothing\n\nforeign import fromNumberImpl\n :: (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> Number\n -> Maybe Int\n\n-- | Convert a `Number` to an `Int`, by taking the closest integer equal to or\n-- | less than the argument. Values outside the `Int` range are clamped, `NaN`\n-- | and `Infinity` values return 0.\nfloor :: Number -> Int\nfloor = unsafeClamp <<< Number.floor\n\n-- | Convert a `Number` to an `Int`, by taking the closest integer equal to or\n-- | greater than the argument. Values outside the `Int` range are clamped,\n-- | `NaN` and `Infinity` values return 0.\nceil :: Number -> Int\nceil = unsafeClamp <<< Number.ceil\n\n-- | Convert a `Number` to an `Int`, by dropping the decimal.\n-- | Values outside the `Int` range are clamped, `NaN` and `Infinity`\n-- | values return 0.\ntrunc :: Number -> Int\ntrunc = unsafeClamp <<< Number.trunc\n\n-- | Convert a `Number` to an `Int`, by taking the nearest integer to the\n-- | argument. Values outside the `Int` range are clamped, `NaN` and `Infinity`\n-- | values return 0.\nround :: Number -> Int\nround = unsafeClamp <<< Number.round\n\n-- | Convert an integral `Number` to an `Int`, by clamping to the `Int` range.\n-- | This function will return 0 if the input is `NaN` or an `Infinity`.\nunsafeClamp :: Number -> Int\nunsafeClamp x\n | not (isFinite x) = 0\n | x >= toNumber top = top\n | x <= toNumber bottom = bottom\n | otherwise = fromMaybe 0 (fromNumber x)\n\n-- | Converts an `Int` value back into a `Number`. Any `Int` is a valid `Number`\n-- | so there is no loss of precision with this function.\nforeign import toNumber :: Int -> Number\n\n-- | Reads an `Int` from a `String` value. The number must parse as an integer\n-- | and fall within the valid range of values for the `Int` type, otherwise\n-- | `Nothing` is returned.\nfromString :: String -> Maybe Int\nfromString = fromStringAs (Radix 10)\n\n-- | A type for describing whether an integer is even or odd.\n-- |\n-- | The `Ord` instance considers `Even` to be less than `Odd`.\n-- |\n-- | The `Semiring` instance allows you to ask about the parity of the results\n-- | of arithmetical operations, given only the parities of the inputs. For\n-- | example, the sum of an odd number and an even number is odd, so\n-- | `Odd + Even == Odd`. This also works for multiplication, eg. the product\n-- | of two odd numbers is odd, and therefore `Odd * Odd == Odd`.\n-- |\n-- | More generally, we have that\n-- |\n-- | ```purescript\n-- | parity x + parity y == parity (x + y)\n-- | parity x * parity y == parity (x * y)\n-- | ```\n-- |\n-- | for any integers `x`, `y`. (A mathematician would say that `parity` is a\n-- | *ring homomorphism*.)\n-- |\n-- | After defining addition and multiplication on `Parity` in this way, the\n-- | `Semiring` laws now force us to choose `zero = Even` and `one = Odd`.\n-- | This `Semiring` instance actually turns out to be a `Field`.\ndata Parity = Even | Odd\n\nderive instance eqParity :: Eq Parity\nderive instance ordParity :: Ord Parity\n\ninstance showParity :: Show Parity where\n show Even = \"Even\"\n show Odd = \"Odd\"\n\ninstance boundedParity :: Bounded Parity where\n bottom = Even\n top = Odd\n\ninstance semiringParity :: Semiring Parity where\n zero = Even\n add x y = if x == y then Even else Odd\n one = Odd\n mul Odd Odd = Odd\n mul _ _ = Even\n\ninstance ringParity :: Ring Parity where\n sub = add\n\ninstance commutativeRingParity :: CommutativeRing Parity\n\ninstance euclideanRingParity :: EuclideanRing Parity where\n degree Even = 0\n degree Odd = 1\n div x _ = x\n mod _ _ = Even\n\ninstance divisionRingParity :: DivisionRing Parity where\n recip = identity\n\n-- | Returns whether an `Int` is `Even` or `Odd`.\n-- |\n-- | ``` purescript\n-- | parity 0 == Even\n-- | parity 1 == Odd\n-- | ```\nparity :: Int -> Parity\nparity n = if even n then Even else Odd\n\n-- | Returns whether an `Int` is an even number.\n-- |\n-- | ``` purescript\n-- | even 0 == true\n-- | even 1 == false\n-- | ```\neven :: Int -> Boolean\neven x = x .&. 1 == 0\n\n-- | The negation of `even`.\n-- |\n-- | ``` purescript\n-- | odd 0 == false\n-- | odd 1 == true\n-- | ```\nodd :: Int -> Boolean\nodd x = x .&. 1 /= 0\n\n-- | The number of unique digits (including zero) used to represent integers in\n-- | a specific base.\nnewtype Radix = Radix Int\n\n-- | The base-2 system.\nbinary :: Radix\nbinary = Radix 2\n\n-- | The base-8 system.\noctal :: Radix\noctal = Radix 8\n\n-- | The base-10 system.\ndecimal :: Radix\ndecimal = Radix 10\n\n-- | The base-16 system.\nhexadecimal :: Radix\nhexadecimal = Radix 16\n\n-- | The base-36 system.\nbase36 :: Radix\nbase36 = Radix 36\n\n-- | Create a `Radix` from a number between 2 and 36.\nradix :: Int -> Maybe Radix\nradix n | n >= 2 && n <= 36 = Just (Radix n)\n | otherwise = Nothing\n\n-- | Like `fromString`, but the integer can be specified in a different base.\n-- |\n-- | Example:\n-- | ``` purs\n-- | fromStringAs binary \"100\" == Just 4\n-- | fromStringAs hexadecimal \"ff\" == Just 255\n-- | ```\nfromStringAs :: Radix -> String -> Maybe Int\nfromStringAs = fromStringAsImpl Just Nothing\n\n-- | The `quot` function provides _truncating_ integer division (see the\n-- | documentation for the `EuclideanRing` class). It is identical to `div` in\n-- | the `EuclideanRing Int` instance if the dividend is positive, but will be\n-- | slightly different if the dividend is negative. For example:\n-- |\n-- | ```purescript\n-- | div 2 3 == 0\n-- | quot 2 3 == 0\n-- |\n-- | div (-2) 3 == (-1)\n-- | quot (-2) 3 == 0\n-- |\n-- | div 2 (-3) == 0\n-- | quot 2 (-3) == 0\n-- | ```\nforeign import quot :: Int -> Int -> Int\n\n-- | The `rem` function provides the remainder after _truncating_ integer\n-- | division (see the documentation for the `EuclideanRing` class). It is\n-- | identical to `mod` in the `EuclideanRing Int` instance if the dividend is\n-- | positive, but will be slightly different if the dividend is negative. For\n-- | example:\n-- |\n-- | ```purescript\n-- | mod 2 3 == 2\n-- | rem 2 3 == 2\n-- |\n-- | mod (-2) 3 == 1\n-- | rem (-2) 3 == (-2)\n-- |\n-- | mod 2 (-3) == 2\n-- | rem 2 (-3) == 2\n-- | ```\nforeign import rem :: Int -> Int -> Int\n\n-- | Raise an Int to the power of another Int.\nforeign import pow :: Int -> Int -> Int\n\nforeign import fromStringAsImpl\n :: (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> Radix\n -> String\n -> Maybe Int\n\nforeign import toStringAs :: Radix -> Int -> String\n", "export const fromCharArray = function (a) {\n return a.join(\"\");\n};\n\nexport const toCharArray = function (s) {\n return s.split(\"\");\n};\n\nexport const singleton = function (c) {\n return c;\n};\n\nexport const _charAt = function (just) {\n return function (nothing) {\n return function (i) {\n return function (s) {\n return i >= 0 && i < s.length ? just(s.charAt(i)) : nothing;\n };\n };\n };\n};\n\nexport const _toChar = function (just) {\n return function (nothing) {\n return function (s) {\n return s.length === 1 ? just(s) : nothing;\n };\n };\n};\n\nexport const length = function (s) {\n return s.length;\n};\n\nexport const countPrefix = function (p) {\n return function (s) {\n var i = 0;\n while (i < s.length && p(s.charAt(i))) i++;\n return i;\n };\n};\n\nexport const _indexOf = function (just) {\n return function (nothing) {\n return function (x) {\n return function (s) {\n var i = s.indexOf(x);\n return i === -1 ? nothing : just(i);\n };\n };\n };\n};\n\nexport const _indexOfStartingAt = function (just) {\n return function (nothing) {\n return function (x) {\n return function (startAt) {\n return function (s) {\n if (startAt < 0 || startAt > s.length) return nothing;\n var i = s.indexOf(x, startAt);\n return i === -1 ? nothing : just(i);\n };\n };\n };\n };\n};\n\nexport const _lastIndexOf = function (just) {\n return function (nothing) {\n return function (x) {\n return function (s) {\n var i = s.lastIndexOf(x);\n return i === -1 ? nothing : just(i);\n };\n };\n };\n};\n\nexport const _lastIndexOfStartingAt = function (just) {\n return function (nothing) {\n return function (x) {\n return function (startAt) {\n return function (s) {\n var i = s.lastIndexOf(x, startAt);\n return i === -1 ? nothing : just(i);\n };\n };\n };\n };\n};\n\nexport const take = function (n) {\n return function (s) {\n return s.substr(0, n);\n };\n};\n\nexport const drop = function (n) {\n return function (s) {\n return s.substring(n);\n };\n};\n\nexport const slice = function (b) {\n return function (e) {\n return function (s) {\n return s.slice(b,e);\n };\n };\n};\n\nexport const splitAt = function (i) {\n return function (s) {\n return { before: s.substring(0, i), after: s.substring(i) };\n };\n};\n", "export const charAt = function (i) {\n return function (s) {\n if (i >= 0 && i < s.length) return s.charAt(i);\n throw new Error(\"Data.String.Unsafe.charAt: Invalid index.\");\n };\n};\n\nexport const char = function (s) {\n if (s.length === 1) return s.charAt(0);\n throw new Error(\"Data.String.Unsafe.char: Expected string of length 1.\");\n};\n", "module Data.String.CodeUnits\n ( stripPrefix\n , stripSuffix\n , contains\n , singleton\n , fromCharArray\n , toCharArray\n , charAt\n , toChar\n , uncons\n , length\n , countPrefix\n , indexOf\n , indexOf'\n , lastIndexOf\n , lastIndexOf'\n , take\n , takeRight\n , takeWhile\n , drop\n , dropRight\n , dropWhile\n , slice\n , splitAt\n ) where\n\nimport Prelude\n\nimport Data.Maybe (Maybe(..), isJust)\nimport Data.String.Pattern (Pattern(..))\nimport Data.String.Unsafe as U\n\n-------------------------------------------------------------------------------\n-- `stripPrefix`, `stripSuffix`, and `contains` are CodeUnit/CodePoint agnostic\n-- as they are based on patterns rather than lengths/indices, but they need to\n-- be defined in here to avoid a circular module dependency\n-------------------------------------------------------------------------------\n\n-- | If the string starts with the given prefix, return the portion of the\n-- | string left after removing it, as a `Just` value. Otherwise, return `Nothing`.\n-- |\n-- | ```purescript\n-- | stripPrefix (Pattern \"http:\") \"http://purescript.org\" == Just \"//purescript.org\"\n-- | stripPrefix (Pattern \"http:\") \"https://purescript.org\" == Nothing\n-- | ```\nstripPrefix :: Pattern -> String -> Maybe String\nstripPrefix (Pattern prefix) str =\n let { before, after } = splitAt (length prefix) str in\n if before == prefix then Just after else Nothing\n\n-- | If the string ends with the given suffix, return the portion of the\n-- | string left after removing it, as a `Just` value. Otherwise, return\n-- | `Nothing`.\n-- |\n-- | ```purescript\n-- | stripSuffix (Pattern \".exe\") \"psc.exe\" == Just \"psc\"\n-- | stripSuffix (Pattern \".exe\") \"psc\" == Nothing\n-- | ```\nstripSuffix :: Pattern -> String -> Maybe String\nstripSuffix (Pattern suffix) str =\n let { before, after } = splitAt (length str - length suffix) str in\n if after == suffix then Just before else Nothing\n\n-- | Checks whether the pattern appears in the given string.\n-- |\n-- | ```purescript\n-- | contains (Pattern \"needle\") \"haystack with needle\" == true\n-- | contains (Pattern \"needle\") \"haystack\" == false\n-- | ```\ncontains :: Pattern -> String -> Boolean\ncontains pat = isJust <<< indexOf pat\n\n-------------------------------------------------------------------------------\n-- all functions past this point are CodeUnit specific\n-------------------------------------------------------------------------------\n\n-- | Returns a string of length `1` containing the given character.\n-- |\n-- | ```purescript\n-- | singleton 'l' == \"l\"\n-- | ```\n-- |\nforeign import singleton :: Char -> String\n\n-- | Converts an array of characters into a string.\n-- |\n-- | ```purescript\n-- | fromCharArray ['H', 'e', 'l', 'l', 'o'] == \"Hello\"\n-- | ```\nforeign import fromCharArray :: Array Char -> String\n\n-- | Converts the string into an array of characters.\n-- |\n-- | ```purescript\n-- | toCharArray \"Hello\u263A\\n\" == ['H','e','l','l','o','\u263A','\\n']\n-- | ```\nforeign import toCharArray :: String -> Array Char\n\n-- | Returns the character at the given index, if the index is within bounds.\n-- |\n-- | ```purescript\n-- | charAt 2 \"Hello\" == Just 'l'\n-- | charAt 10 \"Hello\" == Nothing\n-- | ```\n-- |\ncharAt :: Int -> String -> Maybe Char\ncharAt = _charAt Just Nothing\n\nforeign import _charAt\n :: (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> Int\n -> String\n -> Maybe Char\n\n-- | Converts the string to a character, if the length of the string is\n-- | exactly `1`.\n-- |\n-- | ```purescript\n-- | toChar \"l\" == Just 'l'\n-- | toChar \"Hi\" == Nothing -- since length is not 1\n-- | ```\ntoChar :: String -> Maybe Char\ntoChar = _toChar Just Nothing\n\nforeign import _toChar\n :: (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> String\n -> Maybe Char\n\n-- | Returns the first character and the rest of the string,\n-- | if the string is not empty.\n-- |\n-- | ```purescript\n-- | uncons \"\" == Nothing\n-- | uncons \"Hello World\" == Just { head: 'H', tail: \"ello World\" }\n-- | ```\n-- |\nuncons :: String -> Maybe { head :: Char, tail :: String }\nuncons \"\" = Nothing\nuncons s = Just { head: U.charAt zero s, tail: drop one s }\n\n-- | Returns the number of characters the string is composed of.\n-- |\n-- | ```purescript\n-- | length \"Hello World\" == 11\n-- | ```\n-- |\nforeign import length :: String -> Int\n\n-- | Returns the number of contiguous characters at the beginning\n-- | of the string for which the predicate holds.\n-- |\n-- | ```purescript\n-- | countPrefix (_ /= ' ') \"Hello World\" == 5 -- since length \"Hello\" == 5\n-- | ```\n-- |\nforeign import countPrefix :: (Char -> Boolean) -> String -> Int\n\n-- | Returns the index of the first occurrence of the pattern in the\n-- | given string. Returns `Nothing` if there is no match.\n-- |\n-- | ```purescript\n-- | indexOf (Pattern \"c\") \"abcdc\" == Just 2\n-- | indexOf (Pattern \"c\") \"aaa\" == Nothing\n-- | ```\n-- |\nindexOf :: Pattern -> String -> Maybe Int\nindexOf = _indexOf Just Nothing\n\nforeign import _indexOf\n :: (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> Pattern\n -> String\n -> Maybe Int\n\n-- | Returns the index of the first occurrence of the pattern in the\n-- | given string, starting at the specified index. Returns `Nothing` if there is\n-- | no match.\n-- |\n-- | ```purescript\n-- | indexOf' (Pattern \"a\") 2 \"ababa\" == Just 2\n-- | indexOf' (Pattern \"a\") 3 \"ababa\" == Just 4\n-- | ```\n-- |\nindexOf' :: Pattern -> Int -> String -> Maybe Int\nindexOf' = _indexOfStartingAt Just Nothing\n\nforeign import _indexOfStartingAt\n :: (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> Pattern\n -> Int\n -> String\n -> Maybe Int\n\n-- | Returns the index of the last occurrence of the pattern in the\n-- | given string. Returns `Nothing` if there is no match.\n-- |\n-- | ```purescript\n-- | lastIndexOf (Pattern \"c\") \"abcdc\" == Just 4\n-- | lastIndexOf (Pattern \"c\") \"aaa\" == Nothing\n-- | ```\n-- |\nlastIndexOf :: Pattern -> String -> Maybe Int\nlastIndexOf = _lastIndexOf Just Nothing\n\nforeign import _lastIndexOf\n :: (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> Pattern\n -> String\n -> Maybe Int\n\n-- | Returns the index of the last occurrence of the pattern in the\n-- | given string, starting at the specified index and searching\n-- | backwards towards the beginning of the string.\n-- |\n-- | Starting at a negative index is equivalent to starting at 0 and\n-- | starting at an index greater than the string length is equivalent\n-- | to searching in the whole string.\n-- |\n-- | Returns `Nothing` if there is no match.\n-- |\n-- | ```purescript\n-- | lastIndexOf' (Pattern \"a\") (-1) \"ababa\" == Just 0\n-- | lastIndexOf' (Pattern \"a\") 1 \"ababa\" == Just 0\n-- | lastIndexOf' (Pattern \"a\") 3 \"ababa\" == Just 2\n-- | lastIndexOf' (Pattern \"a\") 4 \"ababa\" == Just 4\n-- | lastIndexOf' (Pattern \"a\") 5 \"ababa\" == Just 4\n-- | ```\n-- |\nlastIndexOf' :: Pattern -> Int -> String -> Maybe Int\nlastIndexOf' = _lastIndexOfStartingAt Just Nothing\n\nforeign import _lastIndexOfStartingAt\n :: (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> Pattern\n -> Int\n -> String\n -> Maybe Int\n\n-- | Returns the first `n` characters of the string.\n-- |\n-- | ```purescript\n-- | take 5 \"Hello World\" == \"Hello\"\n-- | ```\n-- |\nforeign import take :: Int -> String -> String\n\n-- | Returns the last `n` characters of the string.\n-- |\n-- | ```purescript\n-- | takeRight 5 \"Hello World\" == \"World\"\n-- | ```\n-- |\ntakeRight :: Int -> String -> String\ntakeRight i s = drop (length s - i) s\n\n-- | Returns the longest prefix (possibly empty) of characters that satisfy\n-- | the predicate.\n-- |\n-- | ```purescript\n-- | takeWhile (_ /= ':') \"http://purescript.org\" == \"http\"\n-- | ```\n-- |\ntakeWhile :: (Char -> Boolean) -> String -> String\ntakeWhile p s = take (countPrefix p s) s\n\n-- | Returns the string without the first `n` characters.\n-- |\n-- | ```purescript\n-- | drop 6 \"Hello World\" == \"World\"\n-- | ```\n-- |\nforeign import drop :: Int -> String -> String\n\n-- | Returns the string without the last `n` characters.\n-- |\n-- | ```purescript\n-- | dropRight 6 \"Hello World\" == \"Hello\"\n-- | ```\n-- |\ndropRight :: Int -> String -> String\ndropRight i s = take (length s - i) s\n\n-- | Returns the suffix remaining after `takeWhile`.\n-- |\n-- | ```purescript\n-- | dropWhile (_ /= '.') \"Test.purs\" == \".purs\"\n-- | ```\n-- |\ndropWhile :: (Char -> Boolean) -> String -> String\ndropWhile p s = drop (countPrefix p s) s\n\n-- | Returns the substring at indices `[begin, end)`.\n-- | If either index is negative, it is normalised to `length s - index`,\n-- | where `s` is the input string. `\"\"` is returned if either\n-- | index is out of bounds or if `begin > end` after normalisation.\n-- |\n-- | ```purescript\n-- | slice 0 0 \"purescript\" == \"\"\n-- | slice 0 1 \"purescript\" == \"p\"\n-- | slice 3 6 \"purescript\" == \"esc\"\n-- | slice (-4) (-1) \"purescript\" == \"rip\"\n-- | slice (-4) 3 \"purescript\" == \"\"\n-- | ```\nforeign import slice :: Int -> Int -> String -> String\n\n-- | Splits a string into two substrings, where `before` contains the\n-- | characters up to (but not including) the given index, and `after` contains\n-- | the rest of the string, from that index on.\n-- |\n-- | ```purescript\n-- | splitAt 2 \"Hello World\" == { before: \"He\", after: \"llo World\"}\n-- | splitAt 10 \"Hi\" == { before: \"Hi\", after: \"\"}\n-- | ```\n-- |\n-- | Thus the length of `(splitAt i s).before` will equal either `i` or\n-- | `length s`, if that is shorter. (Or if `i` is negative the length will be\n-- | 0.)\n-- |\n-- | In code:\n-- | ```purescript\n-- | length (splitAt i s).before == min (max i 0) (length s)\n-- | (splitAt i s).before <> (splitAt i s).after == s\n-- | splitAt i s == {before: take i s, after: drop i s}\n-- | ```\nforeign import splitAt :: Int -> String -> { before :: String, after :: String }\n", "-- | This module defines types and functions for working with _foreign_\n-- | data.\n-- |\n-- | `ExceptT (NonEmptyList ForeignError) m` is used in this library\n-- | to encode possible failures when dealing with foreign data.\n-- |\n-- | The `Alt` instance for `ExceptT` allows us to accumulate errors,\n-- | unlike `Either`, which preserves only the last error.\nmodule Foreign\n ( Foreign\n , ForeignError(..)\n , MultipleErrors(..)\n , F\n , FT\n , renderForeignError\n , unsafeToForeign\n , unsafeFromForeign\n , unsafeReadTagged\n , typeOf\n , tagOf\n , isNull\n , isUndefined\n , isArray\n , readString\n , readChar\n , readBoolean\n , readNumber\n , readInt\n , readArray\n , readNull\n , readUndefined\n , readNullOrUndefined\n , fail\n ) where\n\nimport Prelude\n\nimport Control.Monad.Except (Except, ExceptT, mapExceptT, throwError)\nimport Data.Either (Either(..), either)\nimport Data.Int as Int\nimport Data.List.NonEmpty (NonEmptyList)\nimport Data.List.NonEmpty as NEL\nimport Data.Maybe (Maybe(..), maybe)\nimport Data.String.CodeUnits (toChar)\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | A type for _foreign data_.\n-- |\n-- | Foreign data is data from any external _unknown_ or _unreliable_\n-- | source, for which it cannot be guaranteed that the runtime representation\n-- | conforms to that of any particular type.\n-- |\n-- | Suitable applications of `Foreign` are\n-- |\n-- | - To represent responses from web services\n-- | - To integrate with external JavaScript libraries.\nforeign import data Foreign :: Type\n\n-- | A type for foreign type errors\ndata ForeignError\n = ForeignError String\n | TypeMismatch String String\n | ErrorAtIndex Int ForeignError\n | ErrorAtProperty String ForeignError\n\nderive instance eqForeignError :: Eq ForeignError\nderive instance ordForeignError :: Ord ForeignError\n\ninstance showForeignError :: Show ForeignError where\n show (ForeignError msg) = \"(ForeignError \" <> show msg <> \")\"\n show (ErrorAtIndex i e) = \"(ErrorAtIndex \" <> show i <> \" \" <> show e <> \")\"\n show (ErrorAtProperty prop e) = \"(ErrorAtProperty \" <> show prop <> \" \" <> show e <> \")\"\n show (TypeMismatch exps act) = \"(TypeMismatch \" <> show exps <> \" \" <> show act <> \")\"\n\n-- | A type for accumulating multiple `ForeignError`s.\ntype MultipleErrors = NonEmptyList ForeignError\n\nrenderForeignError :: ForeignError -> String\nrenderForeignError (ForeignError msg) = msg\nrenderForeignError (ErrorAtIndex i e) = \"Error at array index \" <> show i <> \": \" <> renderForeignError e\nrenderForeignError (ErrorAtProperty prop e) = \"Error at property \" <> show prop <> \": \" <> renderForeignError e\nrenderForeignError (TypeMismatch exp act) = \"Type mismatch: expected \" <> exp <> \", found \" <> act\n\n-- | While this alias is not deprecated, it is recommended\n-- | that one use `Except (NonEmptyList ForeignError)` directly\n-- | for all future usages rather than this type alias.\n-- |\n-- | An error monad, used in this library to encode possible failures when\n-- | dealing with foreign data.\n-- |\n-- | The `Alt` instance for `Except` allows us to accumulate errors,\n-- | unlike `Either`, which preserves only the last error.\ntype F = Except MultipleErrors\n\n-- | While this alias is not deprecated, it is recommended\n-- | that one use `ExceptT (NonEmptyList ForeignError)` directly\n-- | for all future usages rather than this type alias.\ntype FT = ExceptT MultipleErrors\n\n-- | Coerce any value to the a `Foreign` value.\n-- |\n-- | This is considered unsafe as it's only intended to be used on primitive\n-- | JavaScript types, rather than PureScript types. Exporting PureScript values\n-- | via the FFI can be dangerous as they can be mutated by code outside the\n-- | PureScript program, resulting in difficult to diagnose problems elsewhere.\nunsafeToForeign :: forall a. a -> Foreign\nunsafeToForeign = unsafeCoerce\n\n-- | Unsafely coerce a `Foreign` value.\nunsafeFromForeign :: forall a. Foreign -> a\nunsafeFromForeign = unsafeCoerce\n\n-- | Read the Javascript _type_ of a value\nforeign import typeOf :: Foreign -> String\n\n-- | Read the Javascript _tag_ of a value.\n-- |\n-- | This function wraps the `Object.toString` method.\nforeign import tagOf :: Foreign -> String\n\n-- | Unsafely coerce a `Foreign` value when the value has a particular `tagOf`\n-- | value.\nunsafeReadTagged :: forall m a. Monad m => String -> Foreign -> ExceptT (NonEmptyList ForeignError) m a\nunsafeReadTagged tag value\n | tagOf value == tag = pure (unsafeFromForeign value)\n | otherwise = fail $ TypeMismatch tag (tagOf value)\n\n-- | Test whether a foreign value is null\nforeign import isNull :: Foreign -> Boolean\n\n-- | Test whether a foreign value is undefined\nforeign import isUndefined :: Foreign -> Boolean\n\n-- | Test whether a foreign value is an array\nforeign import isArray :: Foreign -> Boolean\n\n-- | Attempt to coerce a foreign value to a `String`.\nreadString :: forall m. Monad m => Foreign -> ExceptT (NonEmptyList ForeignError) m String\nreadString = unsafeReadTagged \"String\"\n\n-- | Attempt to coerce a foreign value to a `Char`.\nreadChar :: forall m. Monad m => Foreign -> ExceptT (NonEmptyList ForeignError) m Char\nreadChar value = mapExceptT (map $ either (const error) fromString) (readString value)\n where\n fromString = maybe error pure <<< toChar\n error = Left $ NEL.singleton $ TypeMismatch \"Char\" (tagOf value)\n\n-- | Attempt to coerce a foreign value to a `Boolean`.\nreadBoolean :: forall m. Monad m => Foreign -> ExceptT (NonEmptyList ForeignError) m Boolean\nreadBoolean = unsafeReadTagged \"Boolean\"\n\n-- | Attempt to coerce a foreign value to a `Number`.\nreadNumber :: forall m. Monad m => Foreign -> ExceptT (NonEmptyList ForeignError) m Number\nreadNumber = unsafeReadTagged \"Number\"\n\n-- | Attempt to coerce a foreign value to an `Int`.\nreadInt :: forall m. Monad m => Foreign -> ExceptT (NonEmptyList ForeignError) m Int\nreadInt value = mapExceptT (map $ either (const error) fromNumber) (readNumber value)\n where\n fromNumber = maybe error pure <<< Int.fromNumber\n error = Left $ NEL.singleton $ TypeMismatch \"Int\" (tagOf value)\n\n-- | Attempt to coerce a foreign value to an array.\nreadArray :: forall m. Monad m => Foreign -> ExceptT (NonEmptyList ForeignError) m (Array Foreign)\nreadArray value\n | isArray value = pure $ unsafeFromForeign value\n | otherwise = fail $ TypeMismatch \"array\" (tagOf value)\n\nreadNull :: forall m. Monad m => Foreign -> ExceptT (NonEmptyList ForeignError) m (Maybe Foreign)\nreadNull value\n | isNull value = pure Nothing\n | otherwise = pure (Just value)\n\nreadUndefined :: forall m. Monad m => Foreign -> ExceptT (NonEmptyList ForeignError) m (Maybe Foreign)\nreadUndefined value\n | isUndefined value = pure Nothing\n | otherwise = pure (Just value)\n\nreadNullOrUndefined :: forall m. Monad m => Foreign -> ExceptT (NonEmptyList ForeignError) m (Maybe Foreign)\nreadNullOrUndefined value\n | isNull value || isUndefined value = pure Nothing\n | otherwise = pure (Just value)\n\n-- | Throws a failure error in `ExceptT (NonEmptyList ForeignError) m`.\nfail :: forall m a. Monad m => ForeignError -> ExceptT (NonEmptyList ForeignError) m a\nfail = throwError <<< NEL.singleton\n", "-- | Note: this module is not intended to be used by end-users.\n-- | Rather, use the environment-specific library instead:\n-- | - [`purescript-affjax-node`](https://github.com/purescript-contrib/purescript-affjax-node)\n-- | - [`purescript-affjax-web`](https://github.com/purescript-contrib/purescript-affjax-web)\n-- |\n-- | You should use this module if you are writing a driver for a specific environment.\n-- | See this module's source code for more details.\n-- If you want to write a driver for an environment, see the comments\n-- for the `AffjaxDriver` type and look at the `node` and `web` libraries\n-- (linked above) as examples.\nmodule Affjax\n ( Request\n , defaultRequest\n , Response\n , Error(..)\n , printError\n , URL\n , AffjaxDriver\n , request\n , get\n , post\n , post_\n , put\n , put_\n , delete\n , delete_\n , patch\n , patch_\n ) where\n\nimport Prelude\n\nimport Affjax.RequestBody as RequestBody\nimport Affjax.RequestHeader (RequestHeader(..))\nimport Affjax.RequestHeader as RequestHeader\nimport Affjax.ResponseFormat as ResponseFormat\nimport Affjax.ResponseHeader (ResponseHeader(..))\nimport Affjax.StatusCode (StatusCode)\nimport Control.Alt ((<|>))\nimport Control.Monad.Except (Except, runExcept)\nimport Data.Argonaut.Core (Json)\nimport Data.Argonaut.Core as J\nimport Data.Argonaut.Parser (jsonParser)\nimport Data.Array as Arr\nimport Data.ArrayBuffer.Types (ArrayView)\nimport Data.Either (Either(..), either, note)\nimport Data.Foldable (any)\nimport Data.FormURLEncoded as FormURLEncoded\nimport Data.Function (on)\nimport Data.Function.Uncurried (Fn5, runFn5)\nimport Data.HTTP.Method (Method(..), CustomMethod)\nimport Data.HTTP.Method as Method\nimport Data.List.NonEmpty as NEL\nimport Data.Maybe (Maybe(..), fromMaybe)\nimport Data.Nullable (Nullable, toNullable)\nimport Data.Time.Duration (Milliseconds(..))\nimport Effect.Aff (Aff, try)\nimport Effect.Aff.Compat as AC\nimport Effect.Exception as Exn\nimport Foreign (Foreign, ForeignError(..), fail, renderForeignError, unsafeReadTagged, unsafeToForeign)\nimport Web.DOM (Document)\nimport Web.File.Blob (Blob)\nimport Web.XHR.FormData (FormData)\n\n-- | A record that contains all the information to perform an HTTP request.\n-- | Instead of constructing the record from scratch it is often easier to build\n-- | one based on `defaultRequest`.\ntype Request a =\n { method :: Either Method CustomMethod\n , url :: URL\n , headers :: Array RequestHeader\n , content :: Maybe RequestBody.RequestBody\n , username :: Maybe String\n , password :: Maybe String\n , withCredentials :: Boolean\n , responseFormat :: ResponseFormat.ResponseFormat a\n , timeout :: Maybe Milliseconds\n }\n\n-- | A record of the type `Request` that has all fields set to default\n-- | values. This record can be used as the foundation for constructing\n-- | custom requests.\n-- |\n-- | As an example:\n-- |\n-- | ```purescript\n-- | defaultRequest { url = \"/api/user\", method = Left POST }\n-- | ```\n-- |\n-- | Would represents a POST request to the URL `/api/user`.\ndefaultRequest :: Request Unit\ndefaultRequest =\n { method: Left GET\n , url: \"/\"\n , headers: []\n , content: Nothing\n , username: Nothing\n , password: Nothing\n , withCredentials: false\n , responseFormat: ResponseFormat.ignore\n , timeout: Nothing\n }\n\n-- | The possible errors that can occur when making an Affjax request.\ndata Error\n = RequestContentError String\n | ResponseBodyError ForeignError (Response Foreign)\n | TimeoutError\n | RequestFailedError\n | XHROtherError Exn.Error\n\nprintError :: Error -> String\nprintError = case _ of\n RequestContentError err ->\n \"There was a problem with the request content: \" <> err\n ResponseBodyError err _ ->\n \"There was a problem with the response body: \" <> renderForeignError err\n TimeoutError ->\n \"There was a problem making the request: timeout\"\n RequestFailedError ->\n \"There was a problem making the request: request failed\"\n XHROtherError err ->\n \"There was a problem making the request: \" <> Exn.message err\n\n-- | The type of records that represents a received HTTP response.\ntype Response a =\n { status :: StatusCode\n , statusText :: String\n , headers :: Array ResponseHeader\n , body :: a\n }\n\n-- | Type alias for URL strings to aid readability of types.\ntype URL = String\n\n-- | Makes a `GET` request to the specified URL.\nget :: forall a. AffjaxDriver -> ResponseFormat.ResponseFormat a -> URL -> Aff (Either Error (Response a))\nget driver rf u = request driver (defaultRequest { url = u, responseFormat = rf })\n\n-- | Makes a `POST` request to the specified URL with the option to send data.\npost :: forall a. AffjaxDriver -> ResponseFormat.ResponseFormat a -> URL -> Maybe RequestBody.RequestBody -> Aff (Either Error (Response a))\npost driver rf u c = request driver (defaultRequest { method = Left POST, url = u, content = c, responseFormat = rf })\n\n-- | Makes a `POST` request to the specified URL with the option to send data\n-- | and ignores the response body.\npost_ :: AffjaxDriver -> URL -> Maybe RequestBody.RequestBody -> Aff (Either Error Unit)\npost_ driver url = map void <<< post driver ResponseFormat.ignore url\n\n-- | Makes a `PUT` request to the specified URL with the option to send data.\nput :: forall a. AffjaxDriver -> ResponseFormat.ResponseFormat a -> URL -> Maybe RequestBody.RequestBody -> Aff (Either Error (Response a))\nput driver rf u c = request driver (defaultRequest { method = Left PUT, url = u, content = c, responseFormat = rf })\n\n-- | Makes a `PUT` request to the specified URL with the option to send data\n-- | and ignores the response body.\nput_ :: AffjaxDriver -> URL -> Maybe RequestBody.RequestBody -> Aff (Either Error Unit)\nput_ driver url = map void <<< put driver ResponseFormat.ignore url\n\n-- | Makes a `DELETE` request to the specified URL.\ndelete :: forall a. AffjaxDriver -> ResponseFormat.ResponseFormat a -> URL -> Aff (Either Error (Response a))\ndelete driver rf u = request driver (defaultRequest { method = Left DELETE, url = u, responseFormat = rf })\n\n-- | Makes a `DELETE` request to the specified URL and ignores the response\n-- | body.\ndelete_ :: AffjaxDriver -> URL -> Aff (Either Error Unit)\ndelete_ driver = map void <<< delete driver ResponseFormat.ignore\n\n-- | Makes a `PATCH` request to the specified URL with the option to send data.\npatch :: forall a. AffjaxDriver -> ResponseFormat.ResponseFormat a -> URL -> RequestBody.RequestBody -> Aff (Either Error (Response a))\npatch driver rf u c = request driver (defaultRequest { method = Left PATCH, url = u, content = Just c, responseFormat = rf })\n\n-- | Makes a `PATCH` request to the specified URL with the option to send data\n-- | and ignores the response body.\npatch_ :: AffjaxDriver -> URL -> RequestBody.RequestBody -> Aff (Either Error Unit)\npatch_ driver url = map void <<< patch driver ResponseFormat.ignore url\n\n-- | Makes an HTTP request.\n-- |\n-- | The example below performs a `GET` request to the URL `/resource` and\n-- | interprets the response body as JSON.\n-- |\n-- | ```purescript\n-- | import Affjax.ResponseFormat (json)\n-- | ...\n-- | request (defaultRequest { url = \"/resource\", method = Left GET, responseFormat = json})\n-- | ```\n-- |\n-- | For common cases helper functions can often be used instead of `request` .\n-- | For instance, the above example is equivalent to the following.\n-- |\n-- | ```purescript\n-- | get json \"/resource\"\n-- | ```\nrequest :: forall a. AffjaxDriver -> Request a -> Aff (Either Error (Response a))\nrequest driver req =\n case req.content of\n Nothing ->\n send (toNullable Nothing)\n Just content ->\n case extractContent content of\n Right c ->\n send (toNullable (Just c))\n Left err ->\n pure $ Left (RequestContentError err)\n where\n send :: Nullable Foreign -> Aff (Either Error (Response a))\n send content =\n try (AC.fromEffectFnAff (runFn5 _ajax driver timeoutErrorMessageIdent requestFailedMessageIdent ResponseHeader (ajaxRequest content))) <#> case _ of\n Right res ->\n case runExcept (fromResponse res.body) of\n Left err -> Left (ResponseBodyError (NEL.head err) res)\n Right body -> Right (res { body = body })\n Left err -> Left do\n let message = Exn.message err\n if message == timeoutErrorMessageIdent then\n TimeoutError\n else if message == requestFailedMessageIdent then\n RequestFailedError\n else\n XHROtherError err\n\n ajaxRequest :: Nullable Foreign -> AjaxRequest a\n ajaxRequest =\n { method: Method.print req.method\n , url: req.url\n , headers: (\\h -> { field: RequestHeader.name h, value: RequestHeader.value h }) <$> headers req.content\n , content: _\n , responseType: ResponseFormat.toResponseType req.responseFormat\n , username: toNullable req.username\n , password: toNullable req.password\n , withCredentials: req.withCredentials\n , timeout: fromMaybe 0.0 $ (\\(Milliseconds x) -> x) <$> req.timeout\n }\n\n extractContent :: RequestBody.RequestBody -> Either String Foreign\n extractContent = case _ of\n RequestBody.ArrayView f ->\n Right $ f (unsafeToForeign :: forall b. ArrayView b -> Foreign)\n RequestBody.Blob x ->\n Right $ (unsafeToForeign :: Blob -> Foreign) x\n RequestBody.Document x ->\n Right $ (unsafeToForeign :: Document -> Foreign) x\n RequestBody.String x ->\n Right $ (unsafeToForeign :: String -> Foreign) x\n RequestBody.FormData x ->\n Right $ (unsafeToForeign :: FormData -> Foreign) x\n RequestBody.FormURLEncoded x -> do\n note \"Body contains values that cannot be encoded as application/x-www-form-urlencoded\"\n $ (unsafeToForeign :: String -> Foreign) <$> FormURLEncoded.encode x\n RequestBody.Json x ->\n Right $ (unsafeToForeign :: String -> Foreign) (J.stringify x)\n\n headers :: Maybe RequestBody.RequestBody -> Array RequestHeader\n headers reqContent =\n addHeader (ContentType <$> (RequestBody.toMediaType =<< reqContent))\n $ addHeader (Accept <$> ResponseFormat.toMediaType req.responseFormat) req.headers\n\n timeoutErrorMessageIdent :: String\n timeoutErrorMessageIdent = \"AffjaxTimeoutErrorMessageIdent\"\n\n requestFailedMessageIdent :: String\n requestFailedMessageIdent = \"AffjaxRequestFailedMessageIdent\"\n\n addHeader :: Maybe RequestHeader -> Array RequestHeader -> Array RequestHeader\n addHeader mh hs = case mh of\n Just h | not $ any (on eq RequestHeader.name h) hs -> hs `Arr.snoc` h\n _ -> hs\n\n parseJSON :: String -> Except (NEL.NonEmptyList ForeignError) Json\n parseJSON = case _ of\n \"\" -> pure J.jsonEmptyObject\n str -> either (fail <<< ForeignError) pure (jsonParser str)\n\n fromResponse :: Foreign -> Except (NEL.NonEmptyList ForeignError) a\n fromResponse = case req.responseFormat of\n ResponseFormat.ArrayBuffer _ -> unsafeReadTagged \"ArrayBuffer\"\n ResponseFormat.Blob _ -> unsafeReadTagged \"Blob\"\n ResponseFormat.Document _ -> \\x ->\n unsafeReadTagged \"Document\" x\n <|> unsafeReadTagged \"XMLDocument\" x\n <|> unsafeReadTagged \"HTMLDocument\" x\n ResponseFormat.Json coe -> coe <<< parseJSON <=< unsafeReadTagged \"String\"\n ResponseFormat.String _ -> unsafeReadTagged \"String\"\n ResponseFormat.Ignore coe -> const $ coe (pure unit)\n\ntype AjaxRequest :: Type -> Type\ntype AjaxRequest a =\n { method :: String\n , url :: URL\n , headers :: Array { field :: String, value :: String }\n , content :: Nullable Foreign\n , responseType :: String\n , username :: Nullable String\n , password :: Nullable String\n , withCredentials :: Boolean\n , timeout :: Number\n }\n\n-- Drivers should have the following 'shape':\n-- ```\n-- { newXHR :: Effect Xhr\n-- , fixupUrl :: Fn2 Xhr String String\n-- }\n-- ```\n-- If you're adding a new environment (e.g. Electron),\n-- be sure to re-export all the types and functions\n-- in the `Affjax` module, so people can easily\n-- update their code by changing the imported module\nforeign import data AffjaxDriver :: Type\n\nforeign import _ajax\n :: forall a\n . Fn5\n AffjaxDriver\n String\n String\n (String -> String -> ResponseHeader)\n (AjaxRequest a)\n (AC.EffectFnAff (Response Foreign))\n", "module Affjax.StatusCode where\n\nimport Prelude\nimport Data.Newtype (class Newtype)\n\nnewtype StatusCode = StatusCode Int\n\nderive instance eqStatusCode :: Eq StatusCode\nderive instance ordStatusCode :: Ord StatusCode\nderive instance newtypeStatusCode :: Newtype StatusCode _\n\ninstance showStatusCode :: Show StatusCode where\n show (StatusCode code) = \"(StatusCode \" <> show code <> \")\"\n", "export const driver = {\n newXHR: function () {\n return new XMLHttpRequest();\n },\n fixupUrl: function (url) {\n return url || \"/\";\n }\n};\n", "module Affjax.Web\n ( driver\n , request\n , get\n , post\n , post_\n , put\n , put_\n , delete\n , delete_\n , patch\n , patch_\n , module Exports\n ) where\n\nimport Prelude\n\nimport Affjax (Request, defaultRequest, Response, Error(..), printError, URL) as Exports\nimport Affjax as AX\nimport Affjax (Error, Request, Response, URL, AffjaxDriver)\nimport Affjax.RequestBody as RequestBody\nimport Affjax.ResponseFormat as ResponseFormat\nimport Data.Either (Either)\nimport Data.Maybe (Maybe)\nimport Effect.Aff (Aff)\n\n-- | Provides an Affjax driver that only works in the browser.\n-- | Using this with NodeJS will cause errors.\nforeign import driver :: AffjaxDriver\n\n-- | Makes a `GET` request to the specified URL.\nget :: forall a. ResponseFormat.ResponseFormat a -> URL -> Aff (Either Error (Response a))\nget = AX.get driver\n\n-- | Makes a `POST` request to the specified URL with the option to send data.\npost :: forall a. ResponseFormat.ResponseFormat a -> URL -> Maybe RequestBody.RequestBody -> Aff (Either Error (Response a))\npost = AX.post driver\n\n-- | Makes a `POST` request to the specified URL with the option to send data\n-- | and ignores the response body.\npost_ :: URL -> Maybe RequestBody.RequestBody -> Aff (Either Error Unit)\npost_ = AX.post_ driver\n\n-- | Makes a `PUT` request to the specified URL with the option to send data.\nput :: forall a. ResponseFormat.ResponseFormat a -> URL -> Maybe RequestBody.RequestBody -> Aff (Either Error (Response a))\nput = AX.put driver\n\n-- | Makes a `PUT` request to the specified URL with the option to send data\n-- | and ignores the response body.\nput_ :: URL -> Maybe RequestBody.RequestBody -> Aff (Either Error Unit)\nput_ = AX.put_ driver\n\n-- | Makes a `DELETE` request to the specified URL.\ndelete :: forall a. ResponseFormat.ResponseFormat a -> URL -> Aff (Either Error (Response a))\ndelete = AX.delete driver\n\n-- | Makes a `DELETE` request to the specified URL and ignores the response\n-- | body.\ndelete_ :: URL -> Aff (Either Error Unit)\ndelete_ = AX.delete_ driver\n\n-- | Makes a `PATCH` request to the specified URL with the option to send data.\npatch :: forall a. ResponseFormat.ResponseFormat a -> URL -> RequestBody.RequestBody -> Aff (Either Error (Response a))\npatch = AX.patch driver\n\n-- | Makes a `PATCH` request to the specified URL with the option to send data\n-- | and ignores the response body.\npatch_ :: URL -> RequestBody.RequestBody -> Aff (Either Error Unit)\npatch_ = AX.patch_ driver\n\n-- | Makes an HTTP request.\n-- |\n-- | The example below performs a `GET` request to the URL `/resource` and\n-- | interprets the response body as JSON.\n-- |\n-- | ```purescript\n-- | import Affjax.ResponseFormat (json)\n-- | ...\n-- | request (defaultRequest { url = \"/resource\", method = Left GET, responseFormat = json})\n-- | ```\n-- |\n-- | For common cases helper functions can often be used instead of `request` .\n-- | For instance, the above example is equivalent to the following.\n-- |\n-- | ```purescript\n-- | get json \"/resource\"\n-- | ```\nrequest :: forall a. Request a -> Aff (Either Error (Response a))\nrequest = AX.request driver\n", "\"use strict\";\n\nimport moment from 'moment'\n\nexport const _app = function() {\n return app;\n}\n\nexport const _closest = function(just, nothing, selector, el) {\n var node = el.closest(selector);\n if(node) {\n return just(node);\n } else {\n return nothing;\n }\n}\n\nexport const _createFormData = function(formElement) {\n return new FormData(formElement);\n}\n\nexport const _createFormString = function(formElement) {\n return new URLSearchParams(new FormData(formElement)).toString()\n}\n\nexport const _createFormArray = function(formElement) {\n return Array.from(new FormData(formElement));\n}\n\nexport const _moment8601 = function(tuple, s) {\n var m = moment(s, moment.ISO_8601);\n var s1 = m.fromNow();\n var s2 = m.format('MMMM D YYYY, h:mm a') + \" (\" + m.format() + \") \";\n return tuple(s1)(s2);\n}\n\nexport const _mmoment8601 = function(just, nothing, tuple, s) {\n try {\n var m = moment(s, moment.ISO_8601);\n var s1 = m.fromNow();\n var s2 = m.format('MMMM D YYYY, h:mm a') + \" (\" + m.format() + \") \";\n return just(tuple(s1)(s2));\n } catch (error) {\n return nothing\n }\n}\n\nexport const _closeWindow = function (window) {\n window.close();\n};\n\nexport const _setFocus = function(elemId) {\n document.getElementById(elemId).focus();\n};\n\n\nexport const _toLocaleDateString = function(dateString) {\n return new Date(dateString).toLocaleDateString(undefined, {dateStyle: 'medium'}) \n}\n", "module Globals where\n\nimport Data.Maybe (Maybe(..))\nimport Data.Newtype (class Newtype)\nimport Data.Nullable (Nullable)\nimport Data.Tuple (Tuple(..))\nimport Effect (Effect)\nimport Data.Function.Uncurried (Fn0, Fn1, Fn4, runFn0, runFn1, runFn4)\nimport Effect.Uncurried (EffectFn1, EffectFn2, EffectFn4, runEffectFn1, runEffectFn2, runEffectFn4)\nimport Model (Bookmark)\nimport Prelude (Unit)\nimport Web.DOM (Node)\nimport Web.HTML (HTMLFormElement, Window)\nimport Web.XHR.FormData (FormData)\n\ntype App =\n { csrfHeaderName :: String\n , csrfCookieName :: String\n , csrfParamName :: String\n , csrfToken :: String\n , homeR :: String\n , authRlogoutR :: String\n , userR :: Nullable String\n , noteR :: Nullable String\n , dat :: AppData\n }\n\ntype AppData =\n { bmarks :: Array Bookmark\n , bmark :: Bookmark\n , isowner :: Boolean\n }\n\nforeign import _app :: Fn0 App\n\napp' :: Unit -> App\napp' _ = runFn0 _app\n\nforeign import _closest :: forall a. EffectFn4 (a -> Maybe a) (Maybe a) String Node (Maybe Node)\n\nclosest :: String -> Node -> Effect (Maybe Node)\nclosest selector node = runEffectFn4 _closest Just Nothing selector node \n\nforeign import _moment8601 :: EffectFn2 (String -> String -> Tuple String String) String (Tuple String String)\n\nmoment8601 :: String -> Effect (Tuple String String)\nmoment8601 s = runEffectFn2 _moment8601 Tuple s\n\nforeign import _mmoment8601 :: forall a. Fn4 (a -> Maybe a) (Maybe a) (String -> String -> Tuple String String) String (Maybe (Tuple String String))\n\nmmoment8601 :: String -> Maybe (Tuple String String)\nmmoment8601 s = runFn4 _mmoment8601 Just Nothing Tuple s\n\nforeign import _createFormData :: Fn1 HTMLFormElement FormData\n\ncreateFormData :: HTMLFormElement -> FormData\ncreateFormData f = runFn1 _createFormData f\n\nforeign import _createFormString :: Fn1 HTMLFormElement String\n\ncreateFormString :: HTMLFormElement -> String\ncreateFormString f = runFn1 _createFormString f\n\n\nforeign import _createFormArray :: Fn1 HTMLFormElement (Array (Array String))\n\ncreateFormArray :: HTMLFormElement -> (Array (Array String))\ncreateFormArray f = runFn1 _createFormArray f\n\nforeign import _closeWindow :: EffectFn1 Window Unit\n\ncloseWindow :: Window -> Effect Unit\ncloseWindow win = runEffectFn1 _closeWindow win\n\nnewtype RawHTML = RawHTML String\n\nderive instance newtypeRawHTML :: Newtype RawHTML _\n\nforeign import _setFocus :: EffectFn1 String Unit\n\nsetFocus :: String -> Effect Unit\nsetFocus s = runEffectFn1 _setFocus s\n\nforeign import _toLocaleDateString :: Fn1 String String\n\ntoLocaleDateString :: String -> String\ntoLocaleDateString s = runFn1 _toLocaleDateString s\n", "export const _parseJSON = JSON.parse;\n\nexport const _undefined = undefined;\n\nexport const _unsafeStringify = JSON.stringify;\n", "export function toCharCode(c) {\n return c.charCodeAt(0);\n}\n\nexport function fromCharCode(c) {\n return String.fromCharCode(c);\n}\n", "module Data.Enum\n ( class Enum, succ, pred\n , class BoundedEnum, cardinality, toEnum, fromEnum\n , toEnumWithDefaults\n , Cardinality(..)\n , enumFromTo\n , enumFromThenTo\n , upFrom\n , upFromIncluding\n , downFrom\n , downFromIncluding\n , defaultSucc\n , defaultPred\n , defaultCardinality\n , defaultToEnum\n , defaultFromEnum\n ) where\n\nimport Prelude\n\nimport Control.MonadPlus (guard)\nimport Data.Either (Either(..))\nimport Data.Maybe (Maybe(..), maybe, fromJust)\nimport Data.Newtype (class Newtype)\nimport Data.Tuple (Tuple(..))\nimport Data.Unfoldable (class Unfoldable, singleton, unfoldr)\nimport Data.Unfoldable1 (class Unfoldable1, unfoldr1)\nimport Partial.Unsafe (unsafePartial)\n\n-- | Type class for enumerations.\n-- |\n-- | Laws:\n-- | - Successor: `all (a < _) (succ a)`\n-- | - Predecessor: `all (_ < a) (pred a)`\n-- | - Succ retracts pred: `pred >=> succ >=> pred = pred`\n-- | - Pred retracts succ: `succ >=> pred >=> succ = succ`\n-- | - Non-skipping succ: `b <= a || any (_ <= b) (succ a)`\n-- | - Non-skipping pred: `a <= b || any (b <= _) (pred a)`\n-- |\n-- | The retraction laws can intuitively be understood as saying that `succ` is\n-- | the opposite of `pred`; if you apply `succ` and then `pred` to something,\n-- | you should end up with what you started with (although of course this\n-- | doesn't apply if you tried to `succ` the last value in an enumeration and\n-- | therefore got `Nothing` out).\n-- |\n-- | The non-skipping laws can intuitively be understood as saying that `succ`\n-- | shouldn't skip over any elements of your type. For example, _without_ the\n-- | non-skipping laws, it would be permissible to write an `Enum Int` instance\n-- | where `succ x = Just (x+2)`, and similarly `pred x = Just (x-2)`.\nclass Ord a <= Enum a where\n succ :: a -> Maybe a\n pred :: a -> Maybe a\n\ninstance enumBoolean :: Enum Boolean where\n succ false = Just true\n succ _ = Nothing\n pred true = Just false\n pred _= Nothing\n\ninstance enumInt :: Enum Int where\n succ n = if n < top then Just (n + 1) else Nothing\n pred n = if n > bottom then Just (n - 1) else Nothing\n\ninstance enumChar :: Enum Char where\n succ = defaultSucc charToEnum toCharCode\n pred = defaultPred charToEnum toCharCode\n\ninstance enumUnit :: Enum Unit where\n succ = const Nothing\n pred = const Nothing\n\ninstance enumOrdering :: Enum Ordering where\n succ LT = Just EQ\n succ EQ = Just GT\n succ GT = Nothing\n pred LT = Nothing\n pred EQ = Just LT\n pred GT = Just EQ\n\ninstance enumMaybe :: BoundedEnum a => Enum (Maybe a) where\n succ Nothing = Just (Just bottom)\n succ (Just a) = Just <$> succ a\n pred Nothing = Nothing\n pred (Just a) = Just (pred a)\n\ninstance enumEither :: (BoundedEnum a, BoundedEnum b) => Enum (Either a b) where\n succ (Left a) = maybe (Just (Right bottom)) (Just <<< Left) (succ a)\n succ (Right b) = maybe Nothing (Just <<< Right) (succ b)\n pred (Left a) = maybe Nothing (Just <<< Left) (pred a)\n pred (Right b) = maybe (Just (Left top)) (Just <<< Right) (pred b)\n\ninstance enumTuple :: (Enum a, BoundedEnum b) => Enum (Tuple a b) where\n succ (Tuple a b) = maybe (flip Tuple bottom <$> succ a) (Just <<< Tuple a) (succ b)\n pred (Tuple a b) = maybe (flip Tuple top <$> pred a) (Just <<< Tuple a) (pred b)\n\n-- | Type class for finite enumerations.\n-- |\n-- | This should not be considered a part of a numeric hierarchy, as in Haskell.\n-- | Rather, this is a type class for small, ordered sum types with\n-- | statically-determined cardinality and the ability to easily compute\n-- | successor and predecessor elements like `DayOfWeek`.\n-- |\n-- | Laws:\n-- |\n-- | - ```succ bottom >>= succ >>= succ ... succ [cardinality - 1 times] == top```\n-- | - ```pred top >>= pred >>= pred ... pred [cardinality - 1 times] == bottom```\n-- | - ```forall a > bottom: pred a >>= succ == Just a```\n-- | - ```forall a < top: succ a >>= pred == Just a```\n-- | - ```forall a > bottom: fromEnum <$> pred a = pred (fromEnum a)```\n-- | - ```forall a < top: fromEnum <$> succ a = succ (fromEnum a)```\n-- | - ```e1 `compare` e2 == fromEnum e1 `compare` fromEnum e2```\n-- | - ```toEnum (fromEnum a) = Just a```\nclass (Bounded a, Enum a) <= BoundedEnum a where\n cardinality :: Cardinality a\n toEnum :: Int -> Maybe a\n fromEnum :: a -> Int\n\ninstance boundedEnumBoolean :: BoundedEnum Boolean where\n cardinality = Cardinality 2\n toEnum 0 = Just false\n toEnum 1 = Just true\n toEnum _ = Nothing\n fromEnum false = 0\n fromEnum true = 1\n\ninstance boundedEnumChar :: BoundedEnum Char where\n cardinality = Cardinality (toCharCode top - toCharCode bottom)\n toEnum = charToEnum\n fromEnum = toCharCode\n\ninstance boundedEnumUnit :: BoundedEnum Unit where\n cardinality = Cardinality 1\n toEnum 0 = Just unit\n toEnum _ = Nothing\n fromEnum = const 0\n\ninstance boundedEnumOrdering :: BoundedEnum Ordering where\n cardinality = Cardinality 3\n toEnum 0 = Just LT\n toEnum 1 = Just EQ\n toEnum 2 = Just GT\n toEnum _ = Nothing\n fromEnum LT = 0\n fromEnum EQ = 1\n fromEnum GT = 2\n\n-- | Like `toEnum` but returns the first argument if `x` is less than\n-- | `fromEnum bottom` and the second argument if `x` is greater than\n-- | `fromEnum top`.\n-- |\n-- | ``` purescript\n-- | toEnumWithDefaults False True (-1) -- False\n-- | toEnumWithDefaults False True 0 -- False\n-- | toEnumWithDefaults False True 1 -- True\n-- | toEnumWithDefaults False True 2 -- True\n-- | ```\ntoEnumWithDefaults :: forall a. BoundedEnum a => a -> a -> Int -> a\ntoEnumWithDefaults low high x = case toEnum x of\n Just enum -> enum\n Nothing -> if x < fromEnum (bottom :: a) then low else high\n\n-- | A type for the size of finite enumerations.\nnewtype Cardinality :: forall k. k -> Type\nnewtype Cardinality a = Cardinality Int\n\ntype role Cardinality representational\n\nderive instance newtypeCardinality :: Newtype (Cardinality a) _\nderive newtype instance eqCardinality :: Eq (Cardinality a)\nderive newtype instance ordCardinality :: Ord (Cardinality a)\n\ninstance showCardinality :: Show (Cardinality a) where\n show (Cardinality n) = \"(Cardinality \" <> show n <> \")\"\n\n-- | Returns a contiguous sequence of elements from the first value to the\n-- | second value (inclusive).\n-- |\n-- | ``` purescript\n-- | enumFromTo 0 3 = [0, 1, 2, 3]\n-- | enumFromTo 'c' 'a' = ['c', 'b', 'a']\n-- | ```\n-- |\n-- | The example shows `Array` return values, but the result can be any type\n-- | with an `Unfoldable1` instance.\nenumFromTo :: forall a u. Enum a => Unfoldable1 u => a -> a -> u a\nenumFromTo = case _, _ of\n from, to\n | from == to -> singleton from\n | from < to -> unfoldr1 (go succ (<=) to) from\n | otherwise -> unfoldr1 (go pred (>=) to) from\n where\n go step op to a = Tuple a (step a >>= \\a' -> guard (a' `op` to) $> a')\n\n-- | Returns a sequence of elements from the first value, taking steps\n-- | according to the difference between the first and second value, up to\n-- | (but not exceeding) the third value.\n-- |\n-- | ``` purescript\n-- | enumFromThenTo 0 2 6 = [0, 2, 4, 6]\n-- | enumFromThenTo 0 3 5 = [0, 3]\n-- | ```\n-- |\n-- | Note that there is no `BoundedEnum` instance for integers, they're just\n-- | being used here for illustrative purposes to help clarify the behaviour.\n-- |\n-- | The example shows `Array` return values, but the result can be any type\n-- | with an `Unfoldable1` instance.\nenumFromThenTo :: forall f a. Unfoldable f => Functor f => BoundedEnum a => a -> a -> a -> f a\nenumFromThenTo = unsafePartial \\a b c ->\n let\n a' = fromEnum a\n b' = fromEnum b\n c' = fromEnum c\n in\n (toEnum >>> fromJust) <$> unfoldr (go (b' - a') c') a'\n where\n go step to e\n | e <= to = Just (Tuple e (e + step))\n | otherwise = Nothing\n\n-- | Produces all successors of an `Enum` value, excluding the start value.\nupFrom :: forall a u. Enum a => Unfoldable u => a -> u a\nupFrom = unfoldr (map diag <<< succ)\n\n-- | Produces all successors of an `Enum` value, including the start value.\n-- |\n-- | `upFromIncluding bottom` will return all values in an `Enum`.\nupFromIncluding :: \u2200 a u. Enum a => Unfoldable1 u => a -> u a\nupFromIncluding = unfoldr1 (Tuple <*> succ)\n\n-- | Produces all predecessors of an `Enum` value, excluding the start value.\ndownFrom :: forall a u. Enum a => Unfoldable u => a -> u a\ndownFrom = unfoldr (map diag <<< pred)\n\n-- | Produces all predecessors of an `Enum` value, including the start value.\n-- |\n-- | `downFromIncluding top` will return all values in an `Enum`, in reverse\n-- | order.\ndownFromIncluding :: forall a u. Enum a => Unfoldable1 u => a -> u a\ndownFromIncluding = unfoldr1 (Tuple <*> pred)\n\n-- | Provides a default implementation for `succ`, given a function that maps\n-- | integers to values in the `Enum`, and a function that maps values in the\n-- | `Enum` back to integers. The integer mapping must agree in both directions\n-- | for this to implement a law-abiding `succ`.\n-- |\n-- | If a `BoundedEnum` instance exists for `a`, the `toEnum` and `fromEnum`\n-- | functions can be used here:\n-- |\n-- | ``` purescript\n-- | succ = defaultSucc toEnum fromEnum\n-- | ```\ndefaultSucc :: forall a. (Int -> Maybe a) -> (a -> Int) -> a -> Maybe a\ndefaultSucc toEnum' fromEnum' a = toEnum' (fromEnum' a + 1)\n\n-- | Provides a default implementation for `pred`, given a function that maps\n-- | integers to values in the `Enum`, and a function that maps values in the\n-- | `Enum` back to integers. The integer mapping must agree in both directions\n-- | for this to implement a law-abiding `pred`.\n-- |\n-- | If a `BoundedEnum` instance exists for `a`, the `toEnum` and `fromEnum`\n-- | functions can be used here:\n-- |\n-- | ``` purescript\n-- | pred = defaultPred toEnum fromEnum\n-- | ```\ndefaultPred :: forall a. (Int -> Maybe a) -> (a -> Int) -> a -> Maybe a\ndefaultPred toEnum' fromEnum' a = toEnum' (fromEnum' a - 1)\n\n-- | Provides a default implementation for `cardinality`.\n-- |\n-- | Runs in `O(n)` where `n` is `fromEnum top`\ndefaultCardinality :: forall a. Bounded a => Enum a => Cardinality a\ndefaultCardinality = Cardinality $ go 1 (bottom :: a) where\n go i x =\n case succ x of\n Just x' -> go (i + 1) x'\n Nothing -> i\n\n-- | Provides a default implementation for `toEnum`.\n-- |\n-- | - Assumes `fromEnum bottom = 0`.\n-- | - Cannot be used in conjuction with `defaultSucc`.\n-- |\n-- | Runs in `O(n)` where `n` is `fromEnum a`.\ndefaultToEnum :: forall a. Bounded a => Enum a => Int -> Maybe a\ndefaultToEnum i' =\n if i' < 0\n then Nothing\n else go i' bottom\n where\n go i x =\n if i == 0\n then Just x\n -- We avoid using >>= here because it foils tail-call optimization\n else case succ x of\n Just x' -> go (i - 1) x'\n Nothing -> Nothing\n\n-- | Provides a default implementation for `fromEnum`.\n-- |\n-- | - Assumes `toEnum 0 = Just bottom`.\n-- | - Cannot be used in conjuction with `defaultPred`.\n-- |\n-- | Runs in `O(n)` where `n` is `fromEnum a`.\ndefaultFromEnum :: forall a. Enum a => a -> Int\ndefaultFromEnum = go 0 where\n go i x =\n case pred x of\n Just x' -> go (i + 1) x'\n Nothing -> i\n\ndiag :: forall a. a -> Tuple a a\ndiag a = Tuple a a\n\ncharToEnum :: Int -> Maybe Char\ncharToEnum n | n >= toCharCode bottom && n <= toCharCode top = Just (fromCharCode n)\ncharToEnum _ = Nothing\n\nforeign import toCharCode :: Char -> Int\nforeign import fromCharCode :: Int -> Char\n", "export function unsafeReadPropImpl(f, s, key, value) {\n return value == null ? f : s(value[key]);\n}\n\nexport function unsafeHasOwnProperty(prop, value) {\n return Object.prototype.hasOwnProperty.call(value, prop);\n}\n\nexport function unsafeHasProperty(prop, value) {\n return prop in value;\n}\n", "-- | This module defines a type class for types which act like\n-- | _property indices_.\n\nmodule Foreign.Index\n ( class Index\n , class Indexable\n , readProp\n , readIndex\n , ix, (!)\n , index\n , hasProperty\n , hasOwnProperty\n , errorAt\n ) where\n\nimport Prelude\n\nimport Control.Monad.Except.Trans (ExceptT)\n\nimport Foreign (Foreign, ForeignError(..), typeOf, isUndefined, isNull, fail)\nimport Data.Function.Uncurried (Fn2, runFn2, Fn4, runFn4)\nimport Data.List.NonEmpty (NonEmptyList)\n\n-- | This type class identifies types that act like _property indices_.\n-- |\n-- | The canonical instances are for `String`s and `Int`s.\nclass Index i m | i -> m where\n index :: Foreign -> i -> ExceptT (NonEmptyList ForeignError) m Foreign\n hasProperty :: i -> Foreign -> Boolean\n hasOwnProperty :: i -> Foreign -> Boolean\n errorAt :: i -> ForeignError -> ForeignError\n\nclass Indexable a m | a -> m where\n ix :: forall i. Index i m => a -> i -> ExceptT (NonEmptyList ForeignError) m Foreign\n\ninfixl 9 ix as !\n\nforeign import unsafeReadPropImpl :: forall r k. Fn4 r (Foreign -> r) k Foreign r\n\nunsafeReadProp :: forall k m. Monad m => k -> Foreign -> ExceptT (NonEmptyList ForeignError) m Foreign\nunsafeReadProp k value =\n runFn4 unsafeReadPropImpl (fail (TypeMismatch \"object\" (typeOf value))) pure k value\n\n-- | Attempt to read a value from a foreign value property\nreadProp :: forall m. Monad m => String -> Foreign -> ExceptT (NonEmptyList ForeignError) m Foreign\nreadProp = unsafeReadProp\n\n-- | Attempt to read a value from a foreign value at the specified numeric index\nreadIndex :: forall m. Monad m => Int -> Foreign -> ExceptT (NonEmptyList ForeignError) m Foreign\nreadIndex = unsafeReadProp\n\nforeign import unsafeHasOwnProperty :: forall k. Fn2 k Foreign Boolean\n\nhasOwnPropertyImpl :: forall k. k -> Foreign -> Boolean\nhasOwnPropertyImpl _ value | isNull value = false\nhasOwnPropertyImpl _ value | isUndefined value = false\nhasOwnPropertyImpl p value | typeOf value == \"object\" || typeOf value == \"function\" = runFn2 unsafeHasOwnProperty p value\nhasOwnPropertyImpl _ _ = false\n\nforeign import unsafeHasProperty :: forall k. Fn2 k Foreign Boolean\n\nhasPropertyImpl :: forall k. k -> Foreign -> Boolean\nhasPropertyImpl _ value | isNull value = false\nhasPropertyImpl _ value | isUndefined value = false\nhasPropertyImpl p value | typeOf value == \"object\" || typeOf value == \"function\" = runFn2 unsafeHasProperty p value\nhasPropertyImpl _ _ = false\n\ninstance indexString :: Monad m => Index String m where\n index = flip readProp\n hasProperty = hasPropertyImpl\n hasOwnProperty = hasOwnPropertyImpl\n errorAt = ErrorAtProperty\n\ninstance indexInt :: Monad m => Index Int m where\n index = flip readIndex\n hasProperty = hasPropertyImpl\n hasOwnProperty = hasOwnPropertyImpl\n errorAt = ErrorAtIndex\n\ninstance indexableForeign :: Monad m => Indexable Foreign m where\n ix = index\n\ninstance indexableExceptT :: Monad m => Indexable (ExceptT (NonEmptyList ForeignError) m Foreign) m where\n ix f i = flip index i =<< f\n", "module Record\n ( get\n , set\n , modify\n , insert\n , delete\n , rename\n , equal\n , merge\n , union\n , disjointUnion\n , nub\n , class EqualFields\n , equalFields\n ) where\n\nimport Prelude\n\nimport Data.Function.Uncurried (runFn2)\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Prim.Row (class Lacks, class Cons, class Nub, class Union)\nimport Prim.RowList (class RowToList, RowList, Cons, Nil)\nimport Record.Unsafe (unsafeGet, unsafeSet, unsafeDelete)\nimport Record.Unsafe.Union (unsafeUnionFn)\nimport Type.Proxy (Proxy(..))\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | Get a property for a label which is specified using a value-level proxy for\n-- | a type-level string.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | get (Proxy :: Proxy \"x\") :: forall r a. { x :: a | r } -> a\n-- | ```\nget\n :: forall r r' l a\n . IsSymbol l\n => Cons l a r' r\n => Proxy l\n -> Record r\n -> a\nget l r = unsafeGet (reflectSymbol l) r\n\n-- | Set a property for a label which is specified using a value-level proxy for\n-- | a type-level string.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | set (Proxy :: Proxy \"x\")\n-- | :: forall r a b. a -> { x :: b | r } -> { x :: a | r }\n-- | ```\nset\n :: forall r1 r2 r l a b\n . IsSymbol l\n => Cons l a r r1\n => Cons l b r r2\n => Proxy l\n -> b\n -> Record r1\n -> Record r2\nset l b r = unsafeSet (reflectSymbol l) b r\n\n-- | Modify a property for a label which is specified using a value-level proxy for\n-- | a type-level string.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | modify (Proxy :: Proxy \"x\")\n-- | :: forall r a b. (a -> b) -> { x :: a | r } -> { x :: b | r }\n-- | ```\nmodify\n :: forall r1 r2 r l a b\n . IsSymbol l\n => Cons l a r r1\n => Cons l b r r2\n => Proxy l\n -> (a -> b)\n -> Record r1\n -> Record r2\nmodify l f r = set l (f (get l r)) r\n\n-- | Insert a new property for a label which is specified using a value-level proxy for\n-- | a type-level string.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | insert (Proxy :: Proxy \"x\")\n-- | :: forall r a. Lacks \"x\" r => a -> { | r } -> { x :: a | r }\n-- | ```\ninsert\n :: forall r1 r2 l a\n . IsSymbol l\n => Lacks l r1\n => Cons l a r1 r2\n => Proxy l\n -> a\n -> Record r1\n -> Record r2\ninsert l a r = unsafeSet (reflectSymbol l) a r\n\n-- | Delete a property for a label which is specified using a value-level proxy for\n-- | a type-level string.\n-- |\n-- | Note that the type of the resulting row must _lack_ the specified property.\n-- | Since duplicate labels are allowed, this is checked with a type class constraint.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | delete (Proxy :: Proxy \"x\")\n-- | :: forall r a. Lacks \"x\" r => { x :: a | r } -> { | r }\n-- | ```\ndelete\n :: forall r1 r2 l a\n . IsSymbol l\n => Lacks l r1\n => Cons l a r1 r2\n => Proxy l\n -> Record r2\n -> Record r1\ndelete l r = unsafeDelete (reflectSymbol l) r\n\n-- | Rename a property for a label which is specified using a value-level proxy for\n-- | a type-level string.\n-- |\n-- | Note that the type of the resulting row must _lack_ the specified property.\n-- | Since duplicate labels are allowed, this is checked with a type class constraint.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | rename (Proxy :: Proxy \"x\") (Proxy :: Proxy \"y\")\n-- | :: forall a r. Lacks \"x\" r => Lacks \"y\" r => { x :: a | r} -> { y :: a | r}\n-- | ```\nrename :: forall prev next ty input inter output\n . IsSymbol prev\n => IsSymbol next\n => Cons prev ty inter input\n => Lacks prev inter\n => Cons next ty inter output\n => Lacks next inter\n => Proxy prev\n -> Proxy next\n -> Record input\n -> Record output\nrename prev next record =\n insert next (get prev record) (delete prev record :: Record inter)\n\n-- | Merges two records with the first record's labels taking precedence in the\n-- | case of overlaps.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | merge { x: 1, y: \"y\" } { y: 2, z: true }\n-- | :: { x :: Int, y :: String, z :: Boolean }\n-- | ```\nmerge\n :: forall r1 r2 r3 r4\n . Union r1 r2 r3\n => Nub r3 r4\n => Record r1\n -> Record r2\n -> Record r4\nmerge l r = runFn2 unsafeUnionFn l r\n\n-- | Merges two records with the first record's labels taking precedence in the\n-- | case of overlaps. Unlike `merge`, this does not remove duplicate labels\n-- | from the resulting record type. This can result in better inference for\n-- | some pipelines, deferring the need for a `Nub` constraint.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | union { x: 1, y: \"y\" } { y: 2, z: true }\n-- | :: { x :: Int, y :: String, y :: Int, z :: Boolean }\n-- | ```\nunion\n :: forall r1 r2 r3\n . Union r1 r2 r3\n => Record r1\n -> Record r2\n -> Record r3\nunion l r = runFn2 unsafeUnionFn l r\n\n-- | Merges two records where no labels overlap. This restriction exhibits\n-- | better inference than `merge` when the resulting record type is known,\n-- | but one argument is not.\n-- |\n-- | For example, hole `?help` is inferred to have type `{ b :: Int }` here:\n-- |\n-- | ```purescript\n-- | disjointUnion { a: 5 } ?help :: { a :: Int, b :: Int }\n-- | ```\ndisjointUnion\n :: forall r1 r2 r3\n . Union r1 r2 r3\n => Nub r3 r3\n => Record r1\n -> Record r2\n -> Record r3\ndisjointUnion l r = runFn2 unsafeUnionFn l r\n\n-- | A coercion which removes duplicate labels from a record's type.\nnub\n :: forall r1 r2\n . Nub r1 r2\n => Record r1\n -> Record r2\nnub = unsafeCoerce\n\n-- | Check two records of the same type for equality.\nequal\n :: forall r rs\n . RowToList r rs\n => EqualFields rs r\n => Record r\n -> Record r\n -> Boolean\nequal a b = equalFields (Proxy :: Proxy rs) a b\n\nclass EqualFields (rs :: RowList Type) (row :: Row Type) | rs -> row where\n equalFields :: Proxy rs -> Record row -> Record row -> Boolean\n\ninstance equalFieldsCons\n ::\n ( IsSymbol name\n , Eq ty\n , Cons name ty tailRow row\n , EqualFields tail row\n ) => EqualFields (Cons name ty tail) row where\n equalFields _ a b = get' a == get' b && equalRest a b\n where\n get' = get (Proxy :: Proxy name)\n equalRest = equalFields (Proxy :: Proxy tail)\n\ninstance equalFieldsNil :: EqualFields Nil row where\n equalFields _ _ _ = true\n", "export function copyRecord(rec) {\n var copy = {};\n for (var key in rec) {\n if ({}.hasOwnProperty.call(rec, key)) {\n copy[key] = rec[key];\n }\n }\n return copy;\n}\n\nexport function unsafeInsert(l) {\n return function(a) {\n return function(rec) {\n rec[l] = a;\n return rec;\n };\n };\n}\n\nexport function unsafeModify(l) {\n return function (f) {\n return function(rec) {\n rec[l] = f(rec[l]);\n return rec;\n };\n };\n}\n\nexport function unsafeDelete(l) {\n return function(rec) {\n delete rec[l];\n return rec;\n };\n}\n\nexport function unsafeRename(l1) {\n return function (l2) {\n return function (rec) {\n rec[l2] = rec[l1];\n delete rec[l1];\n return rec;\n };\n };\n}\n", "module Record.Builder\n ( Builder\n , build\n , buildFromScratch\n , flip\n , insert\n , modify\n , delete\n , rename\n , merge\n , union\n , disjointUnion\n , nub\n ) where\n\nimport Prelude hiding (flip)\n\nimport Data.Function (flip) as Function\nimport Data.Function.Uncurried (runFn2)\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Prim.Row as Row\nimport Record.Unsafe.Union (unsafeUnionFn)\nimport Type.Proxy (Proxy)\nimport Unsafe.Coerce (unsafeCoerce)\n\nforeign import copyRecord :: forall r1. Record r1 -> Record r1\nforeign import unsafeInsert :: forall a r1 r2. String -> a -> Record r1 -> Record r2\nforeign import unsafeModify :: forall a b r1 r2. String -> (a -> b) -> Record r1 -> Record r2\nforeign import unsafeDelete :: forall r1 r2. String -> Record r1 -> Record r2\nforeign import unsafeRename :: forall r1 r2. String -> String -> Record r1 -> Record r2\n\n-- | A `Builder` can be used to `build` a record by incrementally adding\n-- | fields in-place, instead of using `insert` and repeatedly generating new\n-- | immutable records which need to be garbage collected.\n-- |\n-- | The mutations accumulated in a `Builder` are safe because intermediate states can't be\n-- | observed. These mutations, then, are performed all-at-once in the `build` function.\n-- |\n-- | The `Category` instance for `Builder` can be used to compose builders.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | build (insert x 42 >>> insert y \"testing\") {} :: { x :: Int, y :: String }\n-- | ```\nnewtype Builder a b = Builder (a -> b)\n\n-- | Build a record, starting from some other record.\nbuild :: forall r1 r2. Builder (Record r1) (Record r2) -> Record r1 -> Record r2\nbuild (Builder b) r1 = b (copyRecord r1)\n\n-- | Build a record from scratch.\nbuildFromScratch :: forall r. Builder (Record ()) (Record r) -> Record r\nbuildFromScratch = Function.flip build {}\n\n-- | Flip a function of one argument returning a builder.\nflip :: forall r1 r2 r3. (Record r1 -> Builder (Record r2) (Record r3)) -> Record r2 -> Builder (Record r1) (Record r3)\nflip f b = Builder \\a -> build (f a) b\n\nderive newtype instance semigroupoidBuilder :: Semigroupoid Builder\nderive newtype instance categoryBuilder :: Category Builder\n\n-- | Build by inserting a new field.\ninsert\n :: forall l a r1 r2\n . Row.Cons l a r1 r2\n => Row.Lacks l r1\n => IsSymbol l\n => Proxy l\n -> a\n -> Builder (Record r1) (Record r2)\ninsert l a = Builder \\r1 -> unsafeInsert (reflectSymbol l) a r1\n\n-- | Build by modifying an existing field.\nmodify\n :: forall l a b r r1 r2\n . Row.Cons l a r r1\n => Row.Cons l b r r2\n => IsSymbol l\n => Proxy l\n -> (a -> b)\n -> Builder (Record r1) (Record r2)\nmodify l f = Builder \\r1 -> unsafeModify (reflectSymbol l) f r1\n\n-- | Build by deleting an existing field.\ndelete\n :: forall l a r1 r2\n . IsSymbol l\n => Row.Lacks l r1\n => Row.Cons l a r1 r2\n => Proxy l\n -> Builder (Record r2) (Record r1)\ndelete l = Builder \\r2 -> unsafeDelete (reflectSymbol l) r2\n\n-- | Build by renaming an existing field.\nrename :: forall l1 l2 a r1 r2 r3\n . IsSymbol l1\n => IsSymbol l2\n => Row.Cons l1 a r2 r1\n => Row.Lacks l1 r2\n => Row.Cons l2 a r2 r3\n => Row.Lacks l2 r2\n => Proxy l1\n -> Proxy l2\n -> Builder (Record r1) (Record r3)\nrename l1 l2 = Builder \\r1 -> unsafeRename (reflectSymbol l1) (reflectSymbol l2) r1\n\n-- | Build by merging existing fields from another record, taking precedence\n-- | in the case of overlaps.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | build (merge { x: 1, y: \"y\" }) { y: 2, z: true }\n-- | :: { x :: Int, y :: String, z :: Boolean }\n-- | ```\nmerge\n :: forall r1 r2 r3 r4\n . Row.Union r1 r2 r3\n => Row.Nub r3 r4\n => Record r1\n -> Builder (Record r2) (Record r4)\nmerge r1 = Builder \\r2 -> runFn2 unsafeUnionFn r1 r2\n\n-- | Build by merging existing fields from another record, taking precedence\n-- | in the case of overlaps. Unlike `merge`, this does not remove duplicate\n-- | labels from the resulting record type. This can result in better inference\n-- | for some pipelines, deferring the need for a `Nub` constraint.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | build (union { x: 1, y: \"y\" }) { y: 2, z: true }\n-- | :: { x :: Int, y :: String, y :: Int, z :: Boolean }\n-- | ```\nunion\n :: forall r1 r2 r3\n . Row.Union r1 r2 r3\n => Record r1\n -> Builder (Record r2) (Record r3)\nunion r1 = Builder \\r2 -> runFn2 unsafeUnionFn r1 r2\n\n-- | Build by merging some disjoint set of fields from another record.\ndisjointUnion\n :: forall r1 r2 r3\n . Row.Union r1 r2 r3\n => Row.Nub r3 r3\n => Record r1\n -> Builder (Record r2) (Record r3)\ndisjointUnion r1 = Builder \\r2 -> runFn2 unsafeUnionFn r1 r2\n\n-- | A coercion which removes duplicate labels from a record's type.\nnub\n :: forall r1 r2\n . Row.Nub r1 r2\n => Builder (Record r1) (Record r2)\nnub = Builder unsafeCoerce\n", "module Simple.JSON\n( E\n, readJSON\n, readJSON'\n, readJSON_\n, writeJSON\n, write\n, read\n, read'\n, read_\n, readAsForeign\n, parseJSON\n, undefined\n, unsafeStringify\n\n, class ReadForeign\n, readImpl\n, class ReadForeignFields\n, getFields\n, class ReadForeignVariant\n, readVariantImpl\n\n, class WriteForeign\n, writeImpl\n, class WriteForeignFields\n, writeImplFields\n, class WriteForeignVariant\n, writeVariantImpl\n\n) where\n\nimport Prelude\n\nimport Control.Alt ((<|>))\nimport Control.Monad.Except (ExceptT(..), except, runExcept, runExceptT, withExcept)\nimport Data.Array.NonEmpty (NonEmptyArray, fromArray, toArray)\nimport Data.Bifunctor (lmap)\nimport Data.Either (Either(..), hush, note)\nimport Data.Identity (Identity(..))\nimport Data.List.NonEmpty (singleton)\nimport Data.Maybe (Maybe(..), maybe)\nimport Data.Nullable (Nullable, toMaybe, toNullable)\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Traversable (sequence, traverse)\nimport Data.TraversableWithIndex (traverseWithIndex)\nimport Data.Variant (Variant, inj, on)\nimport Effect.Exception (message, try)\nimport Effect.Uncurried as EU\nimport Effect.Unsafe (unsafePerformEffect)\nimport Foreign (F, Foreign, ForeignError(..), MultipleErrors, fail, isNull, isUndefined, readArray, readBoolean, readChar, readInt, readNull, readNumber, readString, tagOf, unsafeFromForeign, unsafeToForeign)\nimport Foreign.Index (readProp)\nimport Foreign.Object (Object)\nimport Foreign.Object as Object\nimport Partial.Unsafe (unsafeCrashWith)\nimport Prim.Row as Row\nimport Prim.RowList (class RowToList, Cons, Nil, RowList)\nimport Record (get)\nimport Record.Builder (Builder)\nimport Record.Builder as Builder\nimport Type.Proxy (Proxy(..))\n\n-- | An alias for the Either result of decoding\ntype E a = Either MultipleErrors a\n\n-- | Read a JSON string to a type `a` while returning a `MultipleErrors` if the\n-- | parsing failed.\nreadJSON :: forall a\n . ReadForeign a\n => String\n -> E a\nreadJSON = runExcept <<< (readImpl <=< parseJSON)\n\n-- | Read a JSON string to a type `a` using `F a`. Useful with record types.\nreadJSON' :: forall a\n . ReadForeign a\n => String\n -> F a\nreadJSON' = readImpl <=< parseJSON\n\n-- | Read a JSON string to a type `a` while returning `Nothing` if the parsing\n-- | failed.\nreadJSON_ :: forall a\n . ReadForeign a\n => String\n -> Maybe a\nreadJSON_ = hush <<< readJSON\n\n-- | JSON.stringify\nforeign import _unsafeStringify :: forall a. a -> String\n\nunsafeStringify :: forall a. a -> String\nunsafeStringify = _unsafeStringify\n\n-- | Write a JSON string from a type `a`.\nwriteJSON :: forall a\n . WriteForeign a\n => a\n -> String\nwriteJSON = _unsafeStringify <<< writeImpl\n\nwrite :: forall a\n . WriteForeign a\n => a\n -> Foreign\nwrite = writeImpl\n\n-- | Read a Foreign value to a type\nread :: forall a\n . ReadForeign a\n => Foreign\n -> E a\nread = runExcept <<< readImpl\n\n-- | Read a value of any type as Foreign to a type\nreadAsForeign :: forall a b\n . ReadForeign a\n => b\n -> E a\nreadAsForeign = read <<< unsafeToForeign\n\nread' :: forall a\n . ReadForeign a\n => Foreign\n -> F a\nread' = readImpl\n\n-- | Read a Foreign value to a type, as a Maybe of type\nread_ :: forall a\n . ReadForeign a\n => Foreign\n -> Maybe a\nread_ = hush <<< read\n\nforeign import _parseJSON :: EU.EffectFn1 String Foreign\n\nparseJSON :: String -> F Foreign\nparseJSON\n = ExceptT\n <<< Identity\n <<< lmap (pure <<< ForeignError <<< message)\n <<< runPure\n <<< try\n <<< EU.runEffectFn1 _parseJSON\n where\n -- Nate Faubion: \"It uses unsafePerformEffect because that\u2019s the only way to catch exceptions and still use the builtin json decoder\"\n runPure = unsafePerformEffect\n\nforeign import _undefined :: Foreign\n\nundefined :: Foreign\nundefined = _undefined\n\n-- | A class for reading foreign values to a type\nclass ReadForeign a where\n readImpl :: Foreign -> F a\n\ninstance readForeign :: ReadForeign Foreign where\n readImpl = pure\n\ninstance readChar :: ReadForeign Char where\n readImpl = readChar\n\ninstance readNumber :: ReadForeign Number where\n readImpl = readNumber\n\ninstance readInt :: ReadForeign Int where\n readImpl = readInt\n\ninstance readString :: ReadForeign String where\n readImpl = readString\n\ninstance readBoolean :: ReadForeign Boolean where\n readImpl = readBoolean\n\ninstance readArray :: ReadForeign a => ReadForeign (Array a) where\n readImpl = traverseWithIndex readAtIdx <=< readArray\n where\n readAtIdx i f = withExcept (map (ErrorAtIndex i)) (readImpl f)\n\ninstance readMaybe :: ReadForeign a => ReadForeign (Maybe a) where\n readImpl = readNullOrUndefined readImpl\n where\n readNullOrUndefined _ value | isNull value || isUndefined value = pure Nothing\n readNullOrUndefined f value = Just <$> f value\n\ninstance readNullable :: ReadForeign a => ReadForeign (Nullable a) where\n readImpl o = withExcept (map reformat) $\n map toNullable <$> traverse readImpl =<< readNull o\n where\n reformat error = case error of\n TypeMismatch inner other -> TypeMismatch (\"Nullable \" <> inner) other\n _ -> error\n\ninstance readObject :: ReadForeign a => ReadForeign (Object.Object a) where\n readImpl = sequence <<< Object.mapWithKey (const readImpl) <=< readObject'\n where\n readObject' :: Foreign -> F (Object Foreign)\n readObject' value\n | tagOf value == \"Object\" = pure $ unsafeFromForeign value\n | otherwise = fail $ TypeMismatch \"Object\" (tagOf value)\n\n\ninstance readRecord ::\n ( RowToList fields fieldList\n , ReadForeignFields fieldList () fields\n ) => ReadForeign (Record fields) where\n readImpl o = flip Builder.build {} <$> getFields fieldListP o\n where\n fieldListP = Proxy :: Proxy fieldList\n\n-- | A class for reading foreign values from properties\nclass ReadForeignFields (xs :: RowList Type) (from :: Row Type) (to :: Row Type)\n | xs -> from to where\n getFields :: Proxy xs\n -> Foreign\n -> F (Builder (Record from) (Record to))\n\ninstance readFieldsCons ::\n ( IsSymbol name\n , ReadForeign ty\n , ReadForeignFields tail from from'\n , Row.Lacks name from'\n , Row.Cons name ty from' to\n ) => ReadForeignFields (Cons name ty tail) from to where\n getFields _ obj = (compose <$> first) `exceptTApply` rest\n where\n first = do\n value <- withExcept' (readImpl =<< readProp name obj)\n pure $ Builder.insert nameP value\n rest = getFields tailP obj\n nameP = Proxy :: Proxy name\n tailP = Proxy :: Proxy tail\n name = reflectSymbol nameP\n withExcept' = withExcept <<< map $ ErrorAtProperty name\n\nexceptTApply :: forall a b e m. Semigroup e => Applicative m => ExceptT e m (a -> b) -> ExceptT e m a -> ExceptT e m b\nexceptTApply fun a = ExceptT $ applyEither\n <$> runExceptT fun\n <*> runExceptT a\n\napplyEither :: forall e a b. Semigroup e => Either e (a -> b) -> Either e a -> Either e b\napplyEither (Left e) (Right _) = Left e\napplyEither (Left e1) (Left e2) = Left (e1 <> e2)\napplyEither (Right _) (Left e) = Left e\napplyEither (Right fun) (Right a) = Right (fun a)\n\ninstance readFieldsNil ::\n ReadForeignFields Nil () () where\n getFields _ _ =\n pure identity\n\ninstance readForeignVariant ::\n ( RowToList variants rl\n , ReadForeignVariant rl variants\n ) => ReadForeign (Variant variants) where\n readImpl o = readVariantImpl (Proxy :: Proxy rl) o\n\nclass ReadForeignVariant (xs :: RowList Type) (row :: Row Type)\n | xs -> row where\n readVariantImpl :: Proxy xs\n -> Foreign\n -> F (Variant row)\n\ninstance readVariantNil ::\n ReadForeignVariant Nil trash where\n readVariantImpl _ _ = fail $ ForeignError \"Unable to match any variant member.\"\n\ninstance readVariantCons ::\n ( IsSymbol name\n , ReadForeign ty\n , Row.Cons name ty trash row\n , ReadForeignVariant tail row\n ) => ReadForeignVariant (Cons name ty tail) row where\n readVariantImpl _ o = do\n obj :: { type :: String, value :: Foreign } <- readImpl o\n if obj.type == name\n then do\n value :: ty <- readImpl obj.value\n pure $ inj namep value\n else\n (fail <<< ForeignError $ \"Did not match variant tag \" <> name)\n <|> readVariantImpl (Proxy :: Proxy tail) o\n where\n namep = Proxy :: Proxy name\n name = reflectSymbol namep\n\n-- -- | A class for writing a value into JSON\n-- -- | need to do this intelligently using Foreign probably, because of null and undefined whatever\nclass WriteForeign a where\n writeImpl :: a -> Foreign\n\ninstance writeForeignForeign :: WriteForeign Foreign where\n writeImpl = identity\n\ninstance writeForeignString :: WriteForeign String where\n writeImpl = unsafeToForeign\n\ninstance writeForeignInt :: WriteForeign Int where\n writeImpl = unsafeToForeign\n\ninstance writeForeignChar :: WriteForeign Char where\n writeImpl = unsafeToForeign\n\ninstance writeForeignNumber :: WriteForeign Number where\n writeImpl = unsafeToForeign\n\ninstance writeForeignBoolean :: WriteForeign Boolean where\n writeImpl = unsafeToForeign\n\ninstance writeForeignArray :: WriteForeign a => WriteForeign (Array a) where\n writeImpl xs = unsafeToForeign $ writeImpl <$> xs\n\ninstance writeForeignMaybe :: WriteForeign a => WriteForeign (Maybe a) where\n writeImpl = maybe undefined writeImpl\n\ninstance writeForeignNullable :: WriteForeign a => WriteForeign (Nullable a) where\n writeImpl = maybe (unsafeToForeign $ toNullable Nothing) writeImpl <<< toMaybe\n\ninstance writeForeignObject :: WriteForeign a => WriteForeign (Object.Object a) where\n writeImpl = unsafeToForeign <<< Object.mapWithKey (const writeImpl)\n\ninstance recordWriteForeign ::\n ( RowToList row rl\n , WriteForeignFields rl row () to\n ) => WriteForeign (Record row) where\n writeImpl rec = unsafeToForeign $ Builder.build steps {}\n where\n rlp = Proxy :: Proxy rl\n steps = writeImplFields rlp rec\n\nclass WriteForeignFields (rl :: RowList Type) row (from :: Row Type) (to :: Row Type)\n | rl -> row from to where\n writeImplFields :: forall g. g rl -> Record row -> Builder (Record from) (Record to)\n\ninstance consWriteForeignFields ::\n ( IsSymbol name\n , WriteForeign ty\n , WriteForeignFields tail row from from'\n , Row.Cons name ty whatever row\n , Row.Lacks name from'\n , Row.Cons name Foreign from' to\n ) => WriteForeignFields (Cons name ty tail) row from to where\n writeImplFields _ rec = result\n where\n namep = Proxy :: Proxy name\n value = writeImpl $ get namep rec\n tailp = Proxy :: Proxy tail\n rest = writeImplFields tailp rec\n result = Builder.insert namep value <<< rest\ninstance nilWriteForeignFields ::\n WriteForeignFields Nil row () () where\n writeImplFields _ _ = identity\n\ninstance writeForeignVariant ::\n ( RowToList row rl\n , WriteForeignVariant rl row\n ) => WriteForeign (Variant row) where\n writeImpl variant = writeVariantImpl (Proxy :: Proxy rl) variant\n\nclass WriteForeignVariant (rl :: RowList Type) (row :: Row Type)\n | rl -> row where\n writeVariantImpl :: forall g. g rl -> Variant row -> Foreign\n\ninstance nilWriteForeignVariant ::\n WriteForeignVariant Nil () where\n writeVariantImpl _ _ =\n -- a PureScript-defined variant cannot reach this path, but a JavaScript FFI one could.\n unsafeCrashWith \"Variant was not able to be writen row WriteForeign.\"\n\ninstance consWriteForeignVariant ::\n ( IsSymbol name\n , WriteForeign ty\n , Row.Cons name ty subRow row\n , WriteForeignVariant tail subRow\n ) => WriteForeignVariant (Cons name ty tail) row where\n writeVariantImpl _ variant =\n on\n namep\n writeVariant\n (writeVariantImpl (Proxy :: Proxy tail))\n variant\n where\n namep = Proxy :: Proxy name\n writeVariant value = unsafeToForeign\n { type: reflectSymbol namep\n , value: writeImpl value\n }\n\ninstance readForeignNEArray :: ReadForeign a => ReadForeign (NonEmptyArray a) where\n readImpl f = do\n raw :: Array a <- readImpl f\n except $ note (singleton $ ForeignError \"Nonempty array expected, got empty array\") $ fromArray raw\n\ninstance writeForeignNEArray :: WriteForeign a => WriteForeign (NonEmptyArray a) where\n writeImpl a = writeImpl <<< toArray $ a\n", "module Model where\n\nimport Control.Monad.Except (runExcept)\nimport Data.Array (intercalate)\nimport Data.Either (hush)\nimport Data.Maybe (fromMaybe)\nimport Data.Nullable (Nullable)\nimport Data.String (Pattern(..), split)\nimport Foreign (Foreign, readInt, readString, unsafeToForeign)\nimport Foreign.Object (Object)\nimport Prelude (class Eq, pure, ($), (<$>))\nimport Simple.JSON as J\n\ntype BookmarkId = Int\ntype TagId = Int\n\ntype Bookmark =\n { url :: String\n , title :: String\n , description :: String\n , tags :: String\n , private :: Boolean\n , toread :: Boolean\n , bid :: BookmarkId\n , slug :: String\n , selected :: Boolean\n , time :: String\n , archiveUrl :: Nullable String\n }\n\nnewtype Bookmark' = Bookmark' Bookmark\nderive newtype instance J.ReadForeign Bookmark'\nderive newtype instance J.WriteForeign Bookmark'\n\ntype NoteId = Int\ntype NoteSlug = String\n\ntype Note =\n { id :: NoteId\n , slug :: NoteSlug\n , title :: String\n , text :: String\n , length :: Int\n , isMarkdown :: Boolean\n , shared :: Boolean\n , created :: String\n , updated :: String\n }\n\nnewtype Note' = Note' Note\nderive newtype instance J.ReadForeign Note'\nderive newtype instance J.WriteForeign Note'\n\ntype AccountSettings =\n { archiveDefault :: Boolean\n , privateDefault :: Boolean\n , privacyLock :: Boolean\n }\n\nnewtype AccountSettings' = AccountSettings' AccountSettings\nderive newtype instance J.ReadForeign AccountSettings'\nderive newtype instance J.WriteForeign AccountSettings'\n\ntype TagCloudMode =\n { mode :: String\n , value :: Foreign\n , expanded :: Boolean\n }\nnewtype TagCloudMode' = TagCloudMode' TagCloudMode\nderive newtype instance J.ReadForeign TagCloudMode'\nderive newtype instance J.WriteForeign TagCloudMode'\n\ntype TagCloud = Object Int\n\ndata TagCloudModeF\n = TagCloudModeTop Boolean Int \n | TagCloudModeLowerBound Boolean Int \n | TagCloudModeRelated Boolean (Array String) \n | TagCloudModeNone\n\nderive instance Eq TagCloudModeF\n\ntagCloudModeToF :: TagCloudMode -> TagCloudModeF\ntagCloudModeToF tagCloudMode =\n fromMaybe TagCloudModeNone $ hush $ runExcept $\n case tagCloudMode.mode of\n \"top\" -> TagCloudModeTop tagCloudMode.expanded <$> readInt tagCloudMode.value\n \"lowerBound\" -> TagCloudModeLowerBound tagCloudMode.expanded <$> readInt tagCloudMode.value\n \"related\" -> (\\s -> TagCloudModeRelated tagCloudMode.expanded (split (Pattern \" \") s)) <$> readString tagCloudMode.value\n _ -> pure TagCloudModeNone\n\ntagCloudModeFromF :: TagCloudModeF -> TagCloudMode\ntagCloudModeFromF (TagCloudModeTop e i) =\n { mode: \"top\" , value: unsafeToForeign i, expanded: e }\ntagCloudModeFromF (TagCloudModeLowerBound e i) =\n { mode: \"lowerBound\" , value: unsafeToForeign i, expanded: e }\ntagCloudModeFromF (TagCloudModeRelated e tags) =\n { mode: \"related\" , value: unsafeToForeign (intercalate \" \" tags), expanded: e }\ntagCloudModeFromF TagCloudModeNone =\n { mode: \"none\" , value: unsafeToForeign \"\", expanded: false }\n \nisExpanded :: TagCloudModeF -> Boolean\nisExpanded (TagCloudModeTop e _) = e\nisExpanded (TagCloudModeLowerBound e _) = e\nisExpanded (TagCloudModeRelated e _) = e\nisExpanded TagCloudModeNone = false\n\nisRelated :: TagCloudModeF -> Boolean\nisRelated (TagCloudModeRelated _ _) = true\nisRelated _ = false\n\nsetExpanded :: TagCloudModeF -> Boolean -> TagCloudModeF\nsetExpanded (TagCloudModeTop _ i) e' = TagCloudModeTop e' i\nsetExpanded (TagCloudModeLowerBound _ i) e' = TagCloudModeLowerBound e' i\nsetExpanded (TagCloudModeRelated _ i) e' = TagCloudModeRelated e' i\nsetExpanded TagCloudModeNone _ = TagCloudModeNone\n\nshowMode :: TagCloudModeF -> String\nshowMode (TagCloudModeTop _ _) = \"top\"\nshowMode (TagCloudModeLowerBound _ _) = \"lowerBound\"\nshowMode (TagCloudModeRelated _ _) = \"related\"\nshowMode TagCloudModeNone = \"\"\n\n-- isSameMode :: TagCloudModeF -> TagCloudModeF -> Boolean\n-- isSameMode (TagCloudModeTop _ _) (TagCloudModeTop _ _) = true\n-- isSameMode (TagCloudModeLowerBound _ _) (TagCloudModeLowerBound _ _) = true\n-- isSameMode (TagCloudModeRelated _ _) (TagCloudModeRelated _ _) = true\n-- isSameMode TagCloudModeNone TagCloudModeNone = true\n-- isSameMode _ _ = false\n", "const windowImpl = function () {\n return window;\n};\nexport { windowImpl as window };\n", "module Web.HTML.Common where\n\nimport Prelude\n\nimport Data.Newtype (class Newtype)\n\n-- | A wrapper for property names.\n-- |\n-- | The phantom type `value` describes the type of value which this property\n-- | requires.\nnewtype PropName :: Type -> Type\nnewtype PropName value = PropName String\n\nderive instance newtypePropName :: Newtype (PropName value) _\nderive newtype instance eqPropName :: Eq (PropName value)\nderive newtype instance ordPropName :: Ord (PropName value)\n\n-- | A wrapper for attribute names.\nnewtype AttrName = AttrName String\n\nderive instance newtypeAttrName :: Newtype AttrName _\nderive newtype instance eqAttrName :: Eq AttrName\nderive newtype instance ordAttrName :: Ord AttrName\n\n-- | A wrapper for strings which are used as CSS classes.\nnewtype ClassName = ClassName String\n\nderive instance newtypeClassName :: Newtype ClassName _\nderive newtype instance eqClassName :: Eq ClassName\nderive newtype instance ordClassName :: Ord ClassName\n", "export function _documentElement(doc) {\n return doc.documentElement;\n}\n\nexport function _head(doc) {\n return doc.head;\n}\n\nexport function _body(doc) {\n return doc.body;\n}\n\nexport function _readyState(doc) {\n return doc.readyState;\n}\n\nexport function _visibilityState(doc) {\n return doc.readyState;\n}\n\nexport function _activeElement(doc) {\n return doc.activeElement;\n}\n\nexport function _currentScript(doc) {\n return doc.currentScript;\n}\n\nexport function _referrer(doc) {\n return doc.referrer;\n}\n\nexport function _title(doc) {\n return doc.title;\n}\n\nexport function _setTitle(title, doc) {\n doc.title = title;\n}\n", "module Web.HTML.HTMLDocument\n ( HTMLDocument\n , fromDocument\n , fromNode\n , fromParentNode\n , fromNonElementParentNode\n , fromEventTarget\n , toDocument\n , toNode\n , toParentNode\n , toNonElementParentNode\n , toEventTarget\n , documentElement\n , head\n , body\n , readyState\n , visibilityState\n , activeElement\n , currentScript\n , referrer\n , title\n , setTitle\n ) where\n\nimport Prelude\n\nimport Data.Maybe (Maybe, fromMaybe)\nimport Data.Nullable (Nullable, toMaybe)\nimport Effect (Effect)\nimport Effect.Uncurried (EffectFn1, EffectFn2, runEffectFn1, runEffectFn2)\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM.Document (Document)\nimport Web.DOM.Internal.Types (Node)\nimport Web.DOM.NonElementParentNode (NonElementParentNode)\nimport Web.DOM.ParentNode (ParentNode)\nimport Web.Event.EventTarget (EventTarget)\nimport Web.HTML.HTMLDocument.ReadyState (ReadyState)\nimport Web.HTML.HTMLDocument.ReadyState as ReadyState\nimport Web.HTML.HTMLDocument.VisibilityState (VisibilityState)\nimport Web.HTML.HTMLDocument.VisibilityState as VisibilityState\nimport Web.HTML.HTMLElement (HTMLElement)\nimport Web.HTML.HTMLHtmlElement (HTMLHtmlElement)\nimport Web.HTML.HTMLScriptElement (HTMLScriptElement)\nimport Web.Internal.FFI (unsafeReadProtoTagged)\n\nforeign import data HTMLDocument :: Type\n\nfromDocument :: Document -> Maybe HTMLDocument\nfromDocument = unsafeReadProtoTagged \"HTMLDocument\"\n\nfromNode :: Node -> Maybe HTMLDocument\nfromNode = unsafeReadProtoTagged \"HTMLDocument\"\n\nfromParentNode :: ParentNode -> Maybe HTMLDocument\nfromParentNode = unsafeReadProtoTagged \"HTMLDocument\"\n\nfromNonElementParentNode :: NonElementParentNode -> Maybe HTMLDocument\nfromNonElementParentNode = unsafeReadProtoTagged \"HTMLDocument\"\n\nfromEventTarget :: EventTarget -> Maybe HTMLDocument\nfromEventTarget = unsafeReadProtoTagged \"HTMLDocument\"\n\ntoDocument :: HTMLDocument -> Document\ntoDocument = unsafeCoerce\n\ntoNode :: HTMLDocument -> Node\ntoNode = unsafeCoerce\n\ntoParentNode :: HTMLDocument -> ParentNode\ntoParentNode = unsafeCoerce\n\ntoNonElementParentNode :: HTMLDocument -> NonElementParentNode\ntoNonElementParentNode = unsafeCoerce\n\ntoEventTarget :: HTMLDocument -> EventTarget\ntoEventTarget = unsafeCoerce\n\nforeign import _documentElement :: EffectFn1 HTMLDocument (Nullable HTMLHtmlElement)\n\ndocumentElement :: HTMLDocument -> Effect (Maybe HTMLHtmlElement)\ndocumentElement doc = toMaybe <$> runEffectFn1 _documentElement doc\n\nforeign import _head :: EffectFn1 HTMLDocument (Nullable HTMLElement)\n\nhead :: HTMLDocument -> Effect (Maybe HTMLElement)\nhead doc = toMaybe <$> runEffectFn1 _head doc\n\nforeign import _body :: EffectFn1 HTMLDocument (Nullable HTMLElement)\n\nbody :: HTMLDocument -> Effect (Maybe HTMLElement)\nbody doc = toMaybe <$> runEffectFn1 _body doc\n\nforeign import _readyState :: EffectFn1 HTMLDocument String\n\nreadyState :: HTMLDocument -> Effect ReadyState\nreadyState doc = (fromMaybe ReadyState.Loading <<< ReadyState.parse) <$> (runEffectFn1 _readyState doc)\n\nforeign import _visibilityState :: EffectFn1 HTMLDocument String\n\nvisibilityState :: HTMLDocument -> Effect VisibilityState\nvisibilityState doc = (fromMaybe VisibilityState.Visible <<< VisibilityState.parse) <$> (runEffectFn1 _visibilityState doc)\n\nforeign import _activeElement :: EffectFn1 HTMLDocument (Nullable HTMLElement)\n\nactiveElement :: HTMLDocument -> Effect (Maybe HTMLElement)\nactiveElement doc = toMaybe <$> (runEffectFn1 _activeElement doc)\n\nforeign import _currentScript :: EffectFn1 HTMLDocument (Nullable HTMLScriptElement)\n\ncurrentScript :: HTMLDocument -> Effect (Maybe HTMLScriptElement)\ncurrentScript doc = toMaybe <$> (runEffectFn1 _currentScript doc)\n\nforeign import _referrer :: EffectFn1 HTMLDocument String\n\nreferrer :: HTMLDocument -> Effect String\nreferrer doc = runEffectFn1 _referrer doc\n\nforeign import _title :: EffectFn1 HTMLDocument String\n\ntitle :: HTMLDocument -> Effect String\ntitle doc = runEffectFn1 _title doc\n\nforeign import _setTitle :: EffectFn2 String HTMLDocument Unit\n\nsetTitle :: String -> HTMLDocument -> Effect Unit\nsetTitle newTitle doc = runEffectFn2 _setTitle newTitle doc\n", "export function _read(nothing, just, value) {\n var tag = Object.prototype.toString.call(value);\n if (tag.indexOf(\"[object HTML\") === 0 && tag.indexOf(\"Element]\") === tag.length - 8) {\n return just(value);\n } else {\n return nothing;\n }\n}\n\n// ----------------------------------------------------------------------------\n\nexport function title(elt) {\n return function () {\n return elt.title;\n };\n}\n\nexport function setTitle(title) {\n return function (elt) {\n return function () {\n elt.title = title;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function lang(elt) {\n return function () {\n return elt.lang;\n };\n}\n\nexport function setLang(lang) {\n return function (elt) {\n return function () {\n elt.lang = lang;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function dir(elt) {\n return function () {\n return elt.dir;\n };\n}\n\nexport function setDir(dir) {\n return function (elt) {\n return function () {\n elt.dir = dir;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function hidden(elt) {\n return function () {\n return elt.hidden;\n };\n}\n\nexport function setHidden(hidden) {\n return function (elt) {\n return function () {\n elt.hidden = hidden;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function tabIndex(elt) {\n return function () {\n return elt.tabIndex;\n };\n}\n\nexport function setTabIndex(tabIndex) {\n return function (elt) {\n return function () {\n elt.tabIndex = tabIndex;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function draggable(elt) {\n return function () {\n return elt.draggable;\n };\n}\n\nexport function setDraggable(draggable) {\n return function (elt) {\n return function () {\n elt.draggable = draggable;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function contentEditable(elt) {\n return function () {\n return elt.contentEditable;\n };\n}\n\nexport function setContentEditable(contentEditable) {\n return function (elt) {\n return function () {\n elt.contentEditable = contentEditable;\n };\n };\n}\n\nexport function isContentEditable(elt) {\n return function () {\n return elt.isContentEditable;\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function spellcheck(elt) {\n return function () {\n return elt.spellcheck;\n };\n}\n\nexport function setSpellcheck(spellcheck) {\n return function (elt) {\n return function () {\n elt.spellcheck = spellcheck;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function click(elt) {\n return function () {\n return elt.click();\n };\n}\n\nexport function focus(elt) {\n return function () {\n return elt.focus();\n };\n}\n\nexport function blur(elt) {\n return function () {\n return elt.blur();\n };\n}\n\n// - CSSOM ---------------------------------------------------------------------\n\nexport function _offsetParent(el) {\n return function () {\n return el.offsetParent;\n };\n}\n\nexport function offsetTop(el) {\n return function () {\n return el.offsetTop;\n };\n}\n\nexport function offsetLeft(el) {\n return function () {\n return el.offsetLeft;\n };\n}\n\nexport function offsetWidth(el) {\n return function () {\n return el.offsetWidth;\n };\n}\n\nexport function offsetHeight(el) {\n return function () {\n return el.offsetHeight;\n };\n}\n", "module Web.HTML.HTMLElement\n ( HTMLElement\n , fromElement\n , fromNode\n , fromChildNode\n , fromNonDocumentTypeChildNode\n , fromParentNode\n , fromEventTarget\n , toElement\n , toNode\n , toChildNode\n , toNonDocumentTypeChildNode\n , toParentNode\n , toEventTarget\n , title\n , setTitle\n , lang\n , setLang\n , dir\n , setDir\n , hidden\n , setHidden\n , tabIndex\n , setTabIndex\n , draggable\n , setDraggable\n , contentEditable\n , setContentEditable\n , isContentEditable\n , spellcheck\n , setSpellcheck\n , click\n , focus\n , blur\n , offsetParent\n , offsetTop\n , offsetLeft\n , offsetWidth\n , offsetHeight\n ) where\n\nimport Prelude\n\nimport Data.Function.Uncurried (Fn3, runFn3)\nimport Data.Maybe (Maybe(..))\nimport Data.Nullable (Nullable, toMaybe)\nimport Effect (Effect)\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM (ChildNode)\nimport Web.DOM.Element (Element)\nimport Web.DOM.Internal.Types (Node)\nimport Web.DOM.NonDocumentTypeChildNode (NonDocumentTypeChildNode)\nimport Web.DOM.ParentNode (ParentNode)\nimport Web.Event.EventTarget (EventTarget)\n\nforeign import data HTMLElement :: Type\n\nforeign import _read :: forall a. Fn3 (forall x. Maybe x) (forall x. x -> Maybe x) a (Maybe HTMLElement)\n\nfromElement :: Element -> Maybe HTMLElement\nfromElement x = runFn3 _read Nothing Just x\n\nfromNode :: Node -> Maybe HTMLElement\nfromNode x = runFn3 _read Nothing Just x\n\nfromChildNode :: ChildNode -> Maybe HTMLElement\nfromChildNode x = runFn3 _read Nothing Just x\n\nfromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe HTMLElement\nfromNonDocumentTypeChildNode x = runFn3 _read Nothing Just x\n\nfromParentNode :: ParentNode -> Maybe HTMLElement\nfromParentNode x = runFn3 _read Nothing Just x\n\nfromEventTarget :: EventTarget -> Maybe HTMLElement\nfromEventTarget x = runFn3 _read Nothing Just x\n\ntoElement :: HTMLElement -> Element\ntoElement = unsafeCoerce\n\ntoNode :: HTMLElement -> Node\ntoNode = unsafeCoerce\n\ntoChildNode :: HTMLElement -> ChildNode\ntoChildNode = unsafeCoerce\n\ntoNonDocumentTypeChildNode :: HTMLElement -> NonDocumentTypeChildNode\ntoNonDocumentTypeChildNode = unsafeCoerce\n\ntoParentNode :: HTMLElement -> ParentNode\ntoParentNode = unsafeCoerce\n\ntoEventTarget :: HTMLElement -> EventTarget\ntoEventTarget = unsafeCoerce\n\nforeign import title :: HTMLElement -> Effect String\nforeign import setTitle :: String -> HTMLElement -> Effect Unit\n\nforeign import lang :: HTMLElement -> Effect String\nforeign import setLang :: String -> HTMLElement -> Effect Unit\n\nforeign import dir :: HTMLElement -> Effect String\nforeign import setDir :: String -> HTMLElement -> Effect Unit\n\nforeign import hidden :: HTMLElement -> Effect Boolean\nforeign import setHidden :: Boolean -> HTMLElement -> Effect Unit\n\nforeign import tabIndex :: HTMLElement -> Effect Int\nforeign import setTabIndex :: Int -> HTMLElement -> Effect Unit\n\nforeign import draggable :: HTMLElement -> Effect Boolean\nforeign import setDraggable :: Boolean -> HTMLElement -> Effect Unit\n\nforeign import contentEditable :: HTMLElement -> Effect String\nforeign import setContentEditable :: String -> HTMLElement -> Effect Unit\nforeign import isContentEditable :: HTMLElement -> Effect Boolean\n\nforeign import spellcheck :: HTMLElement -> Effect Boolean\nforeign import setSpellcheck :: Boolean -> HTMLElement -> Effect Unit\n\nforeign import click :: HTMLElement -> Effect Unit\nforeign import focus :: HTMLElement -> Effect Unit\nforeign import blur :: HTMLElement -> Effect Unit\n\nforeign import _offsetParent :: HTMLElement -> Effect (Nullable Element)\n\noffsetParent :: HTMLElement -> Effect (Maybe Element)\noffsetParent = map toMaybe <<< _offsetParent\n\nforeign import offsetTop :: HTMLElement -> Effect Number\nforeign import offsetLeft :: HTMLElement -> Effect Number\nforeign import offsetWidth :: HTMLElement -> Effect Number\nforeign import offsetHeight :: HTMLElement -> Effect Number\n", "export function hash(location) {\n return function () {\n return location.hash;\n };\n}\n\nexport function setHash(hash) {\n return function (location) {\n return function () {\n location.hash = hash;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function host(location) {\n return function () {\n return location.host;\n };\n}\n\nexport function setHost(host) {\n return function (location) {\n return function () {\n location.host = host;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function hostname(location) {\n return function () {\n return location.hostname;\n };\n}\n\nexport function setHostname(hostname) {\n return function (location) {\n return function () {\n location.hostname = hostname;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function href(location) {\n return function () {\n return location.href;\n };\n}\n\nexport function setHref(href) {\n return function (location) {\n return function () {\n location.href = href;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function origin(location) {\n return function () {\n return location.origin;\n };\n}\n\nexport function setOrigin(origin) {\n return function (location) {\n return function () {\n location.origin = origin;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function pathname(location) {\n return function () {\n return location.pathname;\n };\n}\n\nexport function setPathname(pathname) {\n return function (location) {\n return function () {\n location.pathname = pathname;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function port(location) {\n return function () {\n return location.port;\n };\n}\n\nexport function setPort(port) {\n return function (location) {\n return function () {\n location.port = port;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function protocol(location) {\n return function () {\n return location.protocol;\n };\n}\n\nexport function setProtocol(protocol) {\n return function (location) {\n return function () {\n location.protocol = protocol;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function search(location) {\n return function () {\n return location.search;\n };\n}\n\nexport function setSearch(search) {\n return function (location) {\n return function () {\n location.search = search;\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function assign(url) {\n return function (location) {\n return function () {\n location.assign(url);\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function replace(url) {\n return function (location) {\n return function () {\n location.replace(url);\n };\n };\n}\n\n// ----------------------------------------------------------------------------\n\nexport function reload(location) {\n return function () {\n location.reload();\n };\n}\n", "export function document(window) {\n return function () {\n return window.document;\n };\n}\n\nexport function navigator(window) {\n return function () {\n return window.navigator;\n };\n}\n\nexport function location(window) {\n return function () {\n return window.location;\n };\n}\n\nexport function history(window) {\n return function() {\n return window.history;\n };\n}\n\nexport function innerWidth(window) {\n return function () {\n return window.innerWidth;\n };\n}\n\nexport function innerHeight(window) {\n return function () {\n return window.innerHeight;\n };\n}\n\nexport function alert(str) {\n return function (window) {\n return function () {\n window.alert(str);\n };\n };\n}\n\nexport function confirm(str) {\n return function (window) {\n return function () {\n return window.confirm(str);\n };\n };\n}\n\nexport function moveBy(xDelta) {\n return function (yDelta) {\n return function (window) {\n return function () {\n window.moveBy(xDelta, yDelta);\n };\n };\n };\n}\n\nexport function moveTo(width) {\n return function (height) {\n return function (window) {\n return function () {\n window.moveTo(width, height);\n };\n };\n };\n}\n\nexport function _open(url) {\n return function (name) {\n return function (features) {\n return function (window) {\n return function () {\n return window.open(url, name, features);\n };\n };\n };\n };\n}\n\nexport function close(window) {\n return function () {\n return window.close();\n };\n}\n\nexport function outerHeight(window) {\n return function () {\n return window.outerHeight;\n };\n}\n\nexport function outerWidth(window) {\n return function () {\n return window.outerWidth;\n };\n}\n\nexport function print(window) {\n return function () {\n window.print();\n };\n}\n\nexport function _prompt(str) {\n return function (defaultText) {\n return function (window) {\n return function () {\n return window.prompt(str, defaultText);\n };\n };\n };\n}\n\nexport function resizeBy(xDelta) {\n return function (yDelta) {\n return function (window) {\n return function () {\n window.resizeBy(xDelta, yDelta);\n };\n };\n };\n}\n\nexport function resizeTo(width) {\n return function (height) {\n return function (window) {\n return function () {\n window.resizeTo(width, height);\n };\n };\n };\n}\n\nexport function screenX(window) {\n return function () {\n return window.screenX;\n };\n}\n\nexport function screenY(window) {\n return function () {\n return window.screenY;\n };\n}\n\nexport function scroll(xCoord) {\n return function (yCoord) {\n return function (window) {\n return function () {\n window.scroll(xCoord, yCoord);\n };\n };\n };\n}\n\nexport function scrollBy(xCoord) {\n return function (yCoord) {\n return function (window) {\n return function () {\n window.scrollBy(xCoord, yCoord);\n };\n };\n };\n}\n\nexport function scrollX(window) {\n return function () {\n return window.scrollX;\n };\n}\n\nexport function scrollY(window) {\n return function () {\n return window.scrollY;\n };\n}\n\nexport function localStorage(window) {\n return function () {\n return window.localStorage;\n };\n}\n\nexport function sessionStorage(window) {\n return function () {\n return window.sessionStorage;\n };\n}\n\nexport function requestAnimationFrame(fn) {\n return function(window) {\n return function() {\n return window.requestAnimationFrame(fn);\n };\n };\n}\n\nexport function cancelAnimationFrame(id) {\n return function(window) {\n return function() {\n return window.cancelAnimationFrame(id);\n };\n };\n}\n\nexport function requestIdleCallback(opts) {\n return function(fn) {\n return function(window) {\n return function() {\n return window.requestIdleCallback(fn, opts);\n };\n };\n };\n}\n\nexport function cancelIdleCallback(id) {\n return function(window) {\n return function() {\n return window.cancelIdleCallback(id);\n };\n };\n}\n\nexport function parent(window) {\n return function() {\n return window.parent;\n };\n}\n\nexport function _opener(window) {\n return function() {\n return window.opener;\n };\n}\n", "module App where\n\nimport Prelude\n\nimport Affjax.RequestBody as AXReq\nimport Affjax.RequestHeader (RequestHeader(..))\nimport Affjax.ResponseFormat as AXRes\nimport Affjax.StatusCode (StatusCode(..))\nimport Affjax.Web (Response, Error)\nimport Affjax.Web (defaultRequest) as AX\nimport Affjax.Web as Ax\nimport Data.Array ((:))\nimport Data.Either (Either(..), hush)\nimport Data.FormURLEncoded (FormURLEncoded)\nimport Data.HTTP.Method (Method(..))\nimport Data.Maybe (Maybe(..))\nimport Data.MediaType.Common (applicationFormURLEncoded, applicationJSON)\nimport Effect.Aff (Aff)\nimport Effect.Class (liftEffect)\nimport Globals (app')\nimport Model (Bookmark, Bookmark'(..), Note, Note'(..), AccountSettings, AccountSettings'(..), TagCloudMode, TagCloudMode'(..), TagCloud)\nimport Simple.JSON as J\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.HTML (window)\nimport Web.HTML.Location (reload)\nimport Web.HTML.Window (location)\n\ndata StarAction = Star | UnStar\ninstance showStar :: Show StarAction where\n show Star = \"star\"\n show UnStar = \"unstar\"\n\ntoggleStar :: Int -> StarAction -> Aff Unit\ntoggleStar bid action = do\n let path = \"bm/\" <> show bid <> \"/\" <> show action\n void (fetchUrlEnc POST path Nothing AXRes.ignore)\n\ndestroy :: Int -> Aff (Either Error (Response Unit))\ndestroy bid =\n fetchUrlEnc DELETE (\"bm/\" <> show bid) Nothing AXRes.ignore\n\nmarkRead :: Int -> Aff (Either Error (Response Unit))\nmarkRead bid = do\n let path = \"bm/\" <> show bid <> \"/read\"\n fetchUrlEnc POST path Nothing AXRes.ignore\n\neditBookmark :: Bookmark -> Aff (Either Error (Response String))\neditBookmark bm = do\n fetchJson POST \"api/add\" (Just (Bookmark' bm)) AXRes.string\n\neditNote :: Note -> Aff (Either Error (Response String))\neditNote bm = do\n fetchJson POST \"api/note/add\" (Just (Note' bm)) AXRes.string\n\nlookupTitle :: Bookmark -> Aff (Maybe String)\nlookupTitle bm = do\n eres <- fetchJson POST \"api/lookuptitle\" (Just (Bookmark' bm)) AXRes.string\n pure $ hush eres >>= \\res ->\n if (res.status == StatusCode 200)\n then Just res.body\n else Nothing\n \ngetTagCloud :: TagCloudMode -> Aff (Maybe TagCloud)\ngetTagCloud mode = do\n eres <- fetchJson POST \"api/tagcloud\" (Just (TagCloudMode' mode)) AXRes.json\n pure $ hush eres >>= \\res ->\n pure (unsafeCoerce res.body)\n\nupdateTagCloudMode :: TagCloudMode -> Aff (Either Error (Response Unit))\nupdateTagCloudMode mode = do\n fetchJson POST \"api/tagcloudmode\" (Just (TagCloudMode' mode)) AXRes.ignore\n \ndestroyNote :: Int -> Aff (Either Error (Response Unit))\ndestroyNote nid = do\n fetchUrlEnc DELETE (\"api/note/\" <> show nid) Nothing AXRes.ignore\n\neditAccountSettings :: AccountSettings -> Aff (Either Error (Response Unit))\neditAccountSettings us = do\n fetchJson POST \"api/accountSettings\" (Just (AccountSettings' us)) AXRes.ignore\n\nlogout :: Unit -> Aff Unit\nlogout u = do\n void (fetchUrl POST app.authRlogoutR [] Nothing AXRes.ignore)\n liftEffect (window >>= location >>= reload)\n where\n app = app' u\n\nfetchJson\n :: forall a b.\n J.WriteForeign b\n => Method\n -> String\n -> Maybe b\n -> AXRes.ResponseFormat a\n -> Aff (Either Error (Response a))\nfetchJson method path content rt =\n fetchPath method path [ContentType applicationJSON] (AXReq.string <<< J.writeJSON <$> content) rt\n\nfetchUrlEnc\n :: forall a.\n Method\n -> String\n -> Maybe FormURLEncoded\n -> AXRes.ResponseFormat a\n -> Aff (Either Error (Response a))\nfetchUrlEnc method path content rt =\n fetchPath method path [ContentType applicationFormURLEncoded] (AXReq.FormURLEncoded <$> content) rt\n\nfetchPath\n :: forall a.\n Method\n -> String\n -> Array RequestHeader\n -> Maybe AXReq.RequestBody\n -> AXRes.ResponseFormat a\n -> Aff (Either Error (Response a))\nfetchPath method path headers content rt =\n fetchUrl method ((app' unit).homeR <> path) headers content rt\n\nfetchUrl\n :: forall a.\n Method\n -> String\n -> Array RequestHeader\n -> Maybe AXReq.RequestBody\n -> AXRes.ResponseFormat a\n -> Aff (Either Error (Response a))\nfetchUrl method url headers content rt =\n Ax.request\n AX.defaultRequest\n { url = url\n , method = Left method\n , headers = RequestHeader app.csrfHeaderName app.csrfToken : headers\n , content = content\n , responseFormat = rt\n }\n where\n app = app' unit\n", "module DOM.HTML.Indexed.InputType where\n\nimport Prelude\n\ndata InputType\n = InputButton\n | InputCheckbox\n | InputColor\n | InputDate\n | InputDatetimeLocal\n | InputEmail\n | InputFile\n | InputHidden\n | InputImage\n | InputMonth\n | InputNumber\n | InputPassword\n | InputRadio\n | InputRange\n | InputReset\n | InputSearch\n | InputSubmit\n | InputTel\n | InputText\n | InputTime\n | InputUrl\n | InputWeek\n\nderive instance eqInputType :: Eq InputType\nderive instance ordInputType :: Ord InputType\n\nrenderInputType :: InputType -> String\nrenderInputType = case _ of\n InputButton -> \"button\"\n InputCheckbox -> \"checkbox\"\n InputColor -> \"color\"\n InputDate -> \"date\"\n InputDatetimeLocal -> \"datetime-local\"\n InputEmail -> \"email\"\n InputFile -> \"file\"\n InputHidden -> \"hidden\"\n InputImage -> \"image\"\n InputMonth -> \"month\"\n InputNumber -> \"number\"\n InputPassword -> \"password\"\n InputRadio -> \"radio\"\n InputRange -> \"range\"\n InputReset -> \"reset\"\n InputSearch -> \"search\"\n InputSubmit -> \"submit\"\n InputTel -> \"tel\"\n InputText -> \"text\"\n InputTime -> \"time\"\n InputUrl -> \"url\"\n InputWeek -> \"week\"\n", "module Data.Lens.Internal.Forget where\n\nimport Prelude\n\nimport Data.Const (Const(..))\nimport Data.Either (Either(..), either)\nimport Data.Lens.Internal.Wander (class Wander)\nimport Data.Newtype (class Newtype, alaF)\nimport Data.Profunctor (class Profunctor)\nimport Data.Profunctor.Choice (class Choice)\nimport Data.Profunctor.Cochoice (class Cochoice)\nimport Data.Profunctor.Strong (class Strong)\nimport Data.Tuple (fst, snd)\n\n-- | Profunctor that forgets the `b` value and returns (and accumulates) a\n-- | value of type `r`.\n-- |\n-- | `Forget r` is isomorphic to `Star (Const r)`, but can be given a `Cochoice`\n-- | instance.\nnewtype Forget :: forall k. Type -> Type -> k -> Type\nnewtype Forget r a b = Forget (a -> r)\n\nderive instance newtypeForget :: Newtype (Forget r a b) _\n\nderive newtype instance semigroupForget :: Semigroup r => Semigroup (Forget r a b)\n\nderive newtype instance monoidForget :: Monoid r => Monoid (Forget r a b)\n\ninstance profunctorForget :: Profunctor (Forget r) where\n dimap f _ (Forget z) = Forget (z <<< f)\n\ninstance choiceForget :: Monoid r => Choice (Forget r) where\n left (Forget z) = Forget (either z mempty)\n right (Forget z) = Forget (either mempty z)\n\ninstance strongForget :: Strong (Forget r) where\n first (Forget z) = Forget (z <<< fst)\n second (Forget z) = Forget (z <<< snd)\n\ninstance cochoiceForget :: Cochoice (Forget r) where\n unleft (Forget z) = Forget (z <<< Left)\n unright (Forget z) = Forget (z <<< Right)\n\ninstance wanderForget :: Monoid r => Wander (Forget r) where\n wander f (Forget r) = Forget (alaF Const f r)\n", "module Data.Profunctor.Strong where\n\nimport Prelude\n\nimport Data.Profunctor (class Profunctor, dimap)\nimport Data.Tuple (Tuple(..))\n\n-- | The `Strong` class extends `Profunctor` with combinators for working with\n-- | product types.\n-- |\n-- | `first` and `second` lift values in a `Profunctor` to act on the first and\n-- | second components of a `Tuple`, respectively.\n-- |\n-- | Another way to think about Strong is to piggyback on the intuition of\n-- | inputs and outputs. Rewriting the type signature in this light then yields:\n-- | ```\n-- | first :: forall input output a. p input output -> p (Tuple input a) (Tuple output a)\n-- | second :: forall input output a. p input output -> p (Tuple a input) (Tuple a output)\n-- | ```\n-- | If we specialize the profunctor p to the function arrow, we get the following type\n-- | signatures, which may look a bit more familiar:\n-- | ```\n-- | first :: forall input output a. (input -> output) -> (Tuple input a) -> (Tuple output a)\n-- | second :: forall input output a. (input -> output) -> (Tuple a input) -> (Tuple a output)\n-- | ```\n-- | So, when the `profunctor` is `Function` application, `first` essentially applies your function\n-- | to the first element of a `Tuple`, and `second` applies it to the second element (same as `map` would do).\nclass Profunctor p <= Strong p where\n first :: forall a b c. p a b -> p (Tuple a c) (Tuple b c)\n second :: forall a b c. p b c -> p (Tuple a b) (Tuple a c)\n\ninstance strongFn :: Strong (->) where\n first a2b (Tuple a c) = Tuple (a2b a) c\n second = (<$>)\n\n-- | Compose a value acting on a `Tuple` from two values, each acting on one of\n-- | the components of the `Tuple`.\n-- |\n-- | Specializing `(***)` to function application would look like this:\n-- | ```\n-- | (***) :: forall a b c d. (a -> b) -> (c -> d) -> (Tuple a c) -> (Tuple b d)\n-- | ```\n-- | We take two functions, `f` and `g`, and we transform them into a single function which\n-- | takes a `Tuple` and maps `f` over the first element and `g` over the second. Just like `bi-map`\n-- | would do for the `bi-functor` instance of `Tuple`.\nsplitStrong\n :: forall p a b c d\n . Category p\n => Strong p\n => p a b\n -> p c d\n -> p (Tuple a c) (Tuple b d)\nsplitStrong l r = first l >>> second r\n\ninfixr 3 splitStrong as ***\n\n-- | Compose a value which introduces a `Tuple` from two values, each introducing\n-- | one side of the `Tuple`.\n-- |\n-- | This combinator is useful when assembling values from smaller components,\n-- | because it provides a way to support two different types of output.\n-- |\n-- | Specializing `(&&&)` to function application would look like this:\n-- | ```\n-- | (&&&) :: forall a b c. (a -> b) -> (a -> c) -> (a -> (Tuple b c))\n-- | ```\n-- | We take two functions, `f` and `g`, with the same parameter type and we transform them into a\n-- | single function which takes one parameter and returns a `Tuple` of the results of running\n-- | `f` and `g` on the parameter, respectively. This allows us to run two parallel computations\n-- | on the same input and return both results in a `Tuple`.\nfanout\n :: forall p a b c\n . Category p\n => Strong p\n => p a b\n -> p a c\n -> p a (Tuple b c)\nfanout l r = split >>> (l *** r)\n where\n split :: p a (Tuple a a)\n split = dimap identity (\\a -> Tuple a a) identity\n\ninfixr 3 fanout as &&&\n", "-- | This module defines functions for working with getters.\nmodule Data.Lens.Getter\n ( (^.)\n , viewOn\n , view\n , to\n , takeBoth\n , use\n , iview\n , iuse\n , cloneGetter\n , module Data.Lens.Types\n ) where\n\nimport Prelude\n\nimport Control.Monad.State.Class (class MonadState, gets)\nimport Data.Lens.Internal.Forget (Forget(..))\nimport Data.Lens.Types (AGetter, Fold, Getter, Indexed(..), IndexedFold, IndexedGetter, Optic)\nimport Data.Newtype (unwrap)\nimport Data.Profunctor.Strong ((&&&))\nimport Data.Tuple (Tuple)\n\ninfixl 8 viewOn as ^.\n\n-- | View the focus of a `Getter`.\nview :: forall s t a b. AGetter s t a b -> s -> a\nview l = unwrap (l (Forget identity))\n\n-- | View the focus of a `Getter` and its index.\niview :: forall i s t a b. IndexedFold (Tuple i a) i s t a b -> s -> Tuple i a\niview l = unwrap (l (Indexed $ Forget identity))\n\n-- | Synonym for `view`, flipped.\nviewOn :: forall s t a b. s -> AGetter s t a b -> a\nviewOn s l = view l s\n\n-- | Convert a function into a getter.\nto :: forall s t a b. (s -> a) -> Getter s t a b\nto f p = Forget (unwrap p <<< f)\n\ncloneGetter :: forall s t a b. AGetter s t a b -> Getter s t a b\ncloneGetter g = to (view g)\n\n-- | Combine two getters.\ntakeBoth :: forall s t a b c d. AGetter s t a b -> AGetter s t c d -> Getter s t (Tuple a c) (Tuple b d)\ntakeBoth l r = to (view l &&& view r)\n\n-- | View the focus of a `Getter` in the state of a monad.\nuse :: forall s t a b m. MonadState s m => Getter s t a b -> m a\nuse p = gets (_ ^. p)\n\n-- | View the focus of a `Getter` and its index in the state of a monad.\niuse\n :: forall i s t a b m\n . MonadState s m\n => IndexedFold (Tuple i a) i s t a b\n -> m (Tuple i a)\niuse p = gets (iview p)\n", "-- | This module defines functions for working with lenses.\nmodule Data.Lens.Lens\n ( lens\n , lens'\n , withLens\n , cloneLens\n , ilens\n , ilens'\n , withIndexedLens\n , cloneIndexedLens\n , lensStore\n , module Data.Lens.Types\n ) where\n\nimport Prelude\n\nimport Control.Apply (lift2)\nimport Data.Lens.Internal.Indexed (Indexed(..))\nimport Data.Lens.Internal.Shop (Shop(..))\nimport Data.Lens.Types\n ( ALens\n , ALens'\n , AnIndexedLens\n , AnIndexedLens'\n , IndexedLens\n , IndexedLens'\n , Lens\n , Lens'\n )\nimport Data.Newtype (un)\nimport Data.Profunctor (dimap)\nimport Data.Profunctor.Strong (first)\nimport Data.Tuple (Tuple(..))\n\n-- | Create a `Lens` from a getter/setter pair.\n-- |\n-- | ```purescript\n-- | > species = lens _.species $ _ {species = _}\n-- | > view species {species : \"bovine\"}\n-- | \"bovine\"\n-- |\n-- | > _2 = lens Tuple.snd $ \\(Tuple keep _) new -> Tuple keep new\n-- | ```\n-- |\n-- | Note: `_2` is predefined in `Data.Lens.Tuple`.\n\nlens :: forall s t a b. (s -> a) -> (s -> b -> t) -> Lens s t a b\nlens get set = lens' \\s -> Tuple (get s) \\b -> set s b\n\nlens' :: forall s t a b. (s -> Tuple a (b -> t)) -> Lens s t a b\nlens' to pab = dimap to (\\(Tuple b f) -> f b) (first pab)\n\nwithLens :: forall s t a b r. ALens s t a b -> ((s -> a) -> (s -> b -> t) -> r) -> r\nwithLens l f = case l (Shop identity \\_ b -> b) of Shop x y -> f x y\n\ncloneLens :: forall s t a b. ALens s t a b -> Lens s t a b\ncloneLens l = withLens l \\x y p -> lens x y p\n\nilens'\n :: forall i s t a b\n . (s -> Tuple (Tuple i a) (b -> t))\n -> IndexedLens i s t a b\nilens' to pab = dimap to (\\(Tuple b f) -> f b) (first ((un Indexed) pab))\n\n-- create an `IndexedLens` from a getter/setter pair.\nilens\n :: forall i s t a b\n . (s -> Tuple i a)\n -> (s -> b -> t)\n -> IndexedLens i s t a b\nilens get set = ilens' \\s -> Tuple (get s) \\b -> set s b\n\nwithIndexedLens\n :: forall i s t a b r\n . (AnIndexedLens i s t a b)\n -> ((s -> (Tuple i a)) -> (s -> b -> t) -> r)\n -> r\nwithIndexedLens l f = case l (Indexed (Shop identity \\_ b -> b)) of Shop x y -> f x y\n\ncloneIndexedLens :: forall i s t a b. AnIndexedLens i s t a b -> IndexedLens i s t a b\ncloneIndexedLens l = withIndexedLens l \\x y p -> ilens x y p\n\n-- | Converts a lens into the form that `lens'` accepts.\n-- |\n-- | Can be useful when defining a lens where the focus appears under multiple\n-- | constructors of an algebraic data type. This function would be called for\n-- | each case of the data type.\n-- |\n-- | For example:\n-- |\n-- | ```\n-- | data LensStoreExample = LensStoreA Int | LensStoreB (Tuple Boolean Int)\n-- |\n-- | lensStoreExampleInt :: Lens' LensStoreExample Int\n-- | lensStoreExampleInt = lens' case _ of\n-- | LensStoreA i -> map LensStoreA <$> lensStore identity i\n-- | LensStoreB i -> map LensStoreB <$> lensStore _2 i\n-- | ```\nlensStore :: forall s t a b. ALens s t a b -> s -> Tuple a (b -> t)\nlensStore l = withLens l (lift2 Tuple)\n\n", "-- | This module defines functions for working with setters.\nmodule Data.Lens.Setter\n ( (%~)\n , over\n , iover\n , (.~)\n , set\n , (+~)\n , addOver\n , (-~)\n , subOver\n , (*~)\n , mulOver\n , (//~)\n , divOver\n , (||~)\n , disjOver\n , (&&~)\n , conjOver\n , (<>~)\n , appendOver\n , (?~)\n , setJust\n , (.=)\n , assign\n , (%=)\n , modifying\n , (+=)\n , addModifying\n , (*=)\n , mulModifying\n , (-=)\n , subModifying\n , (//=)\n , divModifying\n , (||=)\n , disjModifying\n , (&&=)\n , conjModifying\n , (<>=)\n , appendModifying\n , (?=)\n , assignJust\n , module Data.Lens.Types\n ) where\n\nimport Prelude\n\nimport Control.Monad.State.Class (class MonadState, modify)\nimport Data.Lens.Types (Indexed(..), IndexedSetter, Setter, Setter')\nimport Data.Maybe (Maybe(..))\nimport Data.Tuple (uncurry)\n\ninfixr 4 over as %~\ninfixr 4 set as .~\ninfixr 4 addOver as +~\ninfixr 4 subOver as -~\ninfixr 4 mulOver as *~\ninfixr 4 divOver as //~\ninfixr 4 disjOver as ||~\ninfixr 4 conjOver as &&~\ninfixr 4 appendOver as <>~\ninfixr 4 setJust as ?~\n\ninfix 4 assign as .=\ninfix 4 modifying as %=\ninfix 4 addModifying as +=\ninfix 4 mulModifying as *=\ninfix 4 subModifying as -=\ninfix 4 divModifying as //=\ninfix 4 disjModifying as ||=\ninfix 4 conjModifying as &&=\ninfix 4 appendModifying as <>=\ninfix 4 assignJust as ?=\n\n-- | Apply a function to the foci of a `Setter`.\nover :: forall s t a b. Setter s t a b -> (a -> b) -> s -> t\nover l = l\n\n-- | Apply a function to the foci of a `Setter` that may vary with the index.\niover :: forall i s t a b. IndexedSetter i s t a b -> (i -> a -> b) -> s -> t\niover l f = l (Indexed $ uncurry f)\n\n-- | Set the foci of a `Setter` to a constant value.\nset :: forall s t a b. Setter s t a b -> b -> s -> t\nset l b = over l (const b)\n\naddOver :: forall s t a. Semiring a => Setter s t a a -> a -> s -> t\naddOver p = over p <<< add\n\nmulOver :: forall s t a. Semiring a => Setter s t a a -> a -> s -> t\nmulOver p = over p <<< flip mul\n\nsubOver :: forall s t a. Ring a => Setter s t a a -> a -> s -> t\nsubOver p = over p <<< flip sub\n\ndivOver :: forall s t a. EuclideanRing a => Setter s t a a -> a -> s -> t\ndivOver p = over p <<< flip div\n\ndisjOver :: forall s t a. HeytingAlgebra a => Setter s t a a -> a -> s -> t\ndisjOver p = over p <<< flip disj\n\nconjOver :: forall s t a. HeytingAlgebra a => Setter s t a a -> a -> s -> t\nconjOver p = over p <<< flip conj\n\nappendOver :: forall s t a. Semigroup a => Setter s t a a -> a -> s -> t\nappendOver p = over p <<< flip append\n\nsetJust :: forall s t a b. Setter s t a (Maybe b) -> b -> s -> t\nsetJust p = set p <<< Just\n\n-- Stateful\n\n-- | Set the foci of a `Setter` in a monadic state to a constant value.\nassign :: forall s a b m. MonadState s m => Setter s s a b -> b -> m Unit\nassign p b = void (modify (set p b))\n\n-- | Modify the foci of a `Setter` in a monadic state.\nmodifying :: forall s a b m. MonadState s m => Setter s s a b -> (a -> b) -> m Unit\nmodifying p f = void (modify (over p f))\n\naddModifying :: forall s a m. MonadState s m => Semiring a => Setter' s a -> a -> m Unit\naddModifying p = modifying p <<< add\n\nmulModifying :: forall s a m. MonadState s m => Semiring a => Setter' s a -> a -> m Unit\nmulModifying p = modifying p <<< flip mul\n\nsubModifying :: forall s a m. MonadState s m => Ring a => Setter' s a -> a -> m Unit\nsubModifying p = modifying p <<< flip sub\n\ndivModifying :: forall s a m. MonadState s m => EuclideanRing a => Setter' s a -> a -> m Unit\ndivModifying p = modifying p <<< flip div\n\ndisjModifying :: forall s a m. MonadState s m => HeytingAlgebra a => Setter' s a -> a -> m Unit\ndisjModifying p = modifying p <<< flip disj\n\nconjModifying :: forall s a m. MonadState s m => HeytingAlgebra a => Setter' s a -> a -> m Unit\nconjModifying p = modifying p <<< flip conj\n\nappendModifying :: forall s a m. MonadState s m => Semigroup a => Setter' s a -> a -> m Unit\nappendModifying p = modifying p <<< flip append\n\nassignJust :: forall s a b m. MonadState s m => Setter s s a (Maybe b) -> b -> m Unit\nassignJust p = assign p <<< Just\n", "module Effect.Aff.Class where\n\nimport Prelude\nimport Control.Monad.Cont.Trans (ContT)\nimport Control.Monad.Except.Trans (ExceptT)\nimport Control.Monad.List.Trans (ListT)\nimport Control.Monad.Maybe.Trans (MaybeT)\nimport Control.Monad.Reader.Trans (ReaderT)\nimport Control.Monad.RWS.Trans (RWST)\nimport Control.Monad.State.Trans (StateT)\nimport Control.Monad.Trans.Class (lift)\nimport Control.Monad.Writer.Trans (WriterT)\nimport Effect.Aff (Aff)\nimport Effect.Class (class MonadEffect)\n\nclass MonadEffect m <= MonadAff m where\n liftAff :: Aff ~> m\n\ninstance monadAffAff :: MonadAff Aff where\n liftAff = identity\n\ninstance monadAffContT :: MonadAff m => MonadAff (ContT r m) where\n liftAff = lift <<< liftAff\n\ninstance monadAffExceptT :: MonadAff m => MonadAff (ExceptT e m) where\n liftAff = lift <<< liftAff\n\ninstance monadAffListT :: MonadAff m => MonadAff (ListT m) where\n liftAff = lift <<< liftAff\n\ninstance monadAffMaybe :: MonadAff m => MonadAff (MaybeT m) where\n liftAff = lift <<< liftAff\n\ninstance monadAffReader :: MonadAff m => MonadAff (ReaderT r m) where\n liftAff = lift <<< liftAff\n\ninstance monadAffRWS :: (MonadAff m, Monoid w) => MonadAff (RWST r w s m) where\n liftAff = lift <<< liftAff\n\ninstance monadAffState :: MonadAff m => MonadAff (StateT s m) where\n liftAff = lift <<< liftAff\n\ninstance monadAffWriter :: (MonadAff m, Monoid w) => MonadAff (WriterT w m) where\n liftAff = lift <<< liftAff\n", "module Data.Exists where\n\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | This type constructor can be used to existentially quantify over a type.\n-- |\n-- | Specifically, the type `Exists f` is isomorphic to the existential type `exists a. f a`.\n-- |\n-- | Existential types can be encoded using universal types (`forall`) for endofunctors in more general\n-- | categories. The benefit of this library is that, by using the FFI, we can create an efficient\n-- | representation of the existential by simply hiding type information.\n-- |\n-- | For example, consider the type `exists s. Tuple s (s -> Tuple s a)` which represents infinite streams\n-- | of elements of type `a`.\n-- |\n-- | This type can be constructed by creating a type constructor `StreamF` as follows:\n-- |\n-- | ```purescript\n-- | data StreamF a s = StreamF s (s -> Tuple s a)\n-- | ```\n-- |\n-- | We can then define the type of streams using `Exists`:\n-- |\n-- | ```purescript\n-- | type Stream a = Exists (StreamF a)\n-- | ```\nforeign import data Exists :: forall k. (k -> Type) -> Type\n\ntype role Exists representational\n\n-- | The `mkExists` function is used to introduce a value of type `Exists f`, by providing a value of\n-- | type `f a`, for some type `a` which will be hidden in the existentially-quantified type.\n-- |\n-- | For example, to create a value of type `Stream Number`, we might use `mkExists` as follows:\n-- |\n-- | ```purescript\n-- | nats :: Stream Number\n-- | nats = mkExists $ StreamF 0 (\\n -> Tuple (n + 1) n)\n-- | ```\nmkExists :: forall f a. f a -> Exists f\nmkExists = unsafeCoerce\n\n-- | The `runExists` function is used to eliminate a value of type `Exists f`. The rank 2 type ensures\n-- | that the existentially-quantified type does not escape its scope. Since the function is required\n-- | to work for _any_ type `a`, it will work for the existentially-quantified type.\n-- |\n-- | For example, we can write a function to obtain the head of a stream by using `runExists` as follows:\n-- |\n-- | ```purescript\n-- | head :: forall a. Stream a -> a\n-- | head = runExists head'\n-- | where\n-- | head' :: forall s. StreamF a s -> a\n-- | head' (StreamF s f) = snd (f s)\n-- | ```\nrunExists :: forall f r. (forall a. f a -> r) -> Exists f -> r\nrunExists = unsafeCoerce\n", "module Data.Coyoneda\n ( Coyoneda(..)\n , CoyonedaF\n , coyoneda\n , unCoyoneda\n , liftCoyoneda\n , lowerCoyoneda\n , hoistCoyoneda\n ) where\n\nimport Prelude\n\nimport Control.Alt (class Alt, alt)\nimport Control.Alternative (class Alternative, class Plus, empty)\nimport Control.Comonad (class Comonad, extract)\nimport Control.Extend (class Extend, (<<=))\nimport Control.Monad.Trans.Class (class MonadTrans)\nimport Control.MonadPlus (class MonadPlus)\nimport Data.Distributive (class Distributive, collect)\nimport Data.Eq (class Eq1, eq1)\nimport Data.Exists (Exists, runExists, mkExists)\nimport Data.Foldable (class Foldable, foldMap, foldl, foldr)\nimport Data.Functor.Invariant (class Invariant, imapF)\nimport Data.Ord (class Ord1, compare1)\nimport Data.Semigroup.Foldable (class Foldable1, foldMap1, foldr1Default, foldl1Default)\nimport Data.Semigroup.Traversable (class Traversable1, sequence1, traverse1)\nimport Data.Traversable (class Traversable, traverse)\n\n-- | `Coyoneda` is encoded as an existential type using `Data.Exists`.\n-- |\n-- | This type constructor encodes the contents of the existential package.\ndata CoyonedaF f a i = CoyonedaF (i -> a) (f i)\n\n-- | The `Coyoneda` `Functor`.\n-- |\n-- | `Coyoneda f` is a `Functor` for any type constructor `f`. In fact,\n-- | it is the _free_ `Functor` for `f`, i.e. any natural transformation\n-- | `nat :: f ~> g`, can be factor through `liftCoyoneda`. The natural\n-- | transformation from `Coyoneda f ~> g` is given by `lowerCoyoneda <<<\n-- | hoistCoyoneda nat`:\n-- | ```purescript\n-- | lowerCoyoneda <<< hoistCoyoneda nat <<< liftCoyoneda $ fi\n-- | = lowerCoyoneda (hoistCoyoneda nat (Coyoneda $ mkExists $ CoyonedaF identity fi)) (by definition of liftCoyoneda)\n-- | = lowerCoyoneda (coyoneda identity (nat fi)) (by definition of hoistCoyoneda)\n-- | = unCoyoneda map (coyoneda identity (nat fi)) (by definition of lowerCoyoneda)\n-- | = unCoyoneda map (Coyoneda $ mkExists $ CoyonedaF identity (nat fi)) (by definition of coyoneda)\n-- | = map identity (nat fi) (by definition of unCoyoneda)\n-- | = nat fi (since g is a Functor)\n-- | ```\nnewtype Coyoneda f a = Coyoneda (Exists (CoyonedaF f a))\n\ninstance eqCoyoneda :: (Functor f, Eq1 f, Eq a) => Eq (Coyoneda f a) where\n eq x y = lowerCoyoneda x `eq1` lowerCoyoneda y\n\ninstance eq1Coyoneda :: (Functor f, Eq1 f) => Eq1 (Coyoneda f) where\n eq1 = eq\n\ninstance ordCoyoneda :: (Functor f, Ord1 f, Ord a) => Ord (Coyoneda f a) where\n compare x y = lowerCoyoneda x `compare1` lowerCoyoneda y\n\ninstance ord1Coyoneda :: (Functor f, Ord1 f) => Ord1 (Coyoneda f) where\n compare1 = compare\n\ninstance functorCoyoneda :: Functor (Coyoneda f) where\n map f (Coyoneda e) = runExists (\\(CoyonedaF k fi) -> coyoneda (f <<< k) fi) e\n\ninstance invatiantCoyoneda :: Invariant (Coyoneda f) where\n imap = imapF\n\ninstance applyCoyoneda :: Apply f => Apply (Coyoneda f) where\n apply f g = liftCoyoneda $ lowerCoyoneda f <*> lowerCoyoneda g\n\ninstance applicativeCoyoneda :: Applicative f => Applicative (Coyoneda f) where\n pure = liftCoyoneda <<< pure\n\ninstance altCoyoneda :: Alt f => Alt (Coyoneda f) where\n alt x y = liftCoyoneda $ alt (lowerCoyoneda x) (lowerCoyoneda y)\n\ninstance plusCoyoneda :: Plus f => Plus (Coyoneda f) where\n empty = liftCoyoneda empty\n\ninstance alternativeCoyoneda :: Alternative f => Alternative (Coyoneda f)\n\ninstance bindCoyoneda :: Bind f => Bind (Coyoneda f) where\n bind (Coyoneda e) f =\n liftCoyoneda $\n runExists (\\(CoyonedaF k fi) -> lowerCoyoneda <<< f <<< k =<< fi) e\n\n-- | When `f` is a Monad then it is a functor as well. In this case\n-- | `liftCoyoneda` is not only a functor isomorphism but also a monad\n-- | isomorphism, i.e. the following law holds\n-- | ```purescript\n-- | liftCoyoneda fa >>= liftCoyoneda <<< g = liftCoyoneda $ fa >>= g\n-- | ```\ninstance monadCoyoneda :: Monad f => Monad (Coyoneda f)\n\ninstance monadTransCoyoneda :: MonadTrans Coyoneda where\n lift = liftCoyoneda\n\ninstance monadPlusCoyoneda :: MonadPlus f => MonadPlus (Coyoneda f)\n\ninstance extendCoyoneda :: Extend w => Extend (Coyoneda w) where\n extend f (Coyoneda e) =\n runExists (\\(CoyonedaF k fi) -> liftCoyoneda $ f <<< coyoneda k <<= fi) e\n\n-- | As in the monad case: if `w` is a comonad, then it is a functor, thus\n-- | `liftCoyoneda` is an iso of functors, but moreover it is an iso of\n-- | comonads, i.e. the following law holds:\n-- | ```purescript\n-- | g <<= liftCoyoneda w = liftCoyoneda $ g <<< liftCoyoneda <<= w\n-- | ```\ninstance comonadCoyoneda :: Comonad w => Comonad (Coyoneda w) where\n extract (Coyoneda e) = runExists (\\(CoyonedaF k fi) -> k $ extract fi) e\n\ninstance foldableCoyoneda :: Foldable f => Foldable (Coyoneda f) where\n foldr f z = unCoyoneda \\k -> foldr (f <<< k) z\n foldl f z = unCoyoneda \\k -> foldl (\\x -> f x <<< k) z\n foldMap f = unCoyoneda \\k -> foldMap (f <<< k)\n\ninstance traversableCoyoneda :: Traversable f => Traversable (Coyoneda f) where\n traverse f = unCoyoneda \\k -> map liftCoyoneda <<< traverse (f <<< k)\n sequence = unCoyoneda \\k -> map liftCoyoneda <<< traverse k\n\ninstance foldable1Coyoneda :: Foldable1 f => Foldable1 (Coyoneda f) where\n foldMap1 f = unCoyoneda \\k -> foldMap1 (f <<< k)\n foldr1 = foldr1Default\n foldl1 = foldl1Default\n\ninstance traversable1Coyoneda :: Traversable1 f => Traversable1 (Coyoneda f) where\n traverse1 f = unCoyoneda \\k -> map liftCoyoneda <<< traverse1 (f <<< k)\n sequence1 = unCoyoneda \\k -> map liftCoyoneda <<< sequence1 <<< map k\n\ninstance distributiveCoyoneda :: Distributive f => Distributive (Coyoneda f) where\n collect f = liftCoyoneda <<< collect (lowerCoyoneda <<< f)\n distribute = liftCoyoneda <<< collect lowerCoyoneda\n\n-- | Construct a value of type `Coyoneda f b` from a mapping function and a\n-- | value of type `f a`.\ncoyoneda :: forall f a b. (a -> b) -> f a -> Coyoneda f b\ncoyoneda k fi = Coyoneda $ mkExists $ CoyonedaF k fi\n\n-- | Deconstruct a value of `Coyoneda a` to retrieve the mapping function and\n-- | original value.\nunCoyoneda :: forall f a r. (forall b. (b -> a) -> f b -> r) -> Coyoneda f a -> r\nunCoyoneda f (Coyoneda e) = runExists (\\(CoyonedaF k fi) -> f k fi) e\n\n-- | Lift a value described by the type constructor `f` to `Coyoneda f`.\n-- |\n-- | Note that for any functor `f` `liftCoyoneda` has a right inverse\n-- | `lowerCoyoneda`:\n-- | ```purescript\n-- | liftCoyoneda <<< lowerCoyoneda $ (Coyoneda e)\n-- | = liftCoyoneda <<< unCoyoneda map $ (Coyoneda e)\n-- | = liftCoyonead (runExists (\\(CoyonedaF k fi) -> map k fi) e)\n-- | = liftCoyonead (Coyoneda e)\n-- | = coyoneda identity (Coyoneda e)\n-- | = Coyoneda e\n-- | ```\n-- | Moreover if `f` is a `Functor` then `liftCoyoneda` is an isomorphism of\n-- | functors with inverse `lowerCoyoneda`: we already showed that\n-- | `lowerCoyoneda <<< hoistCoyoneda identity = lowerCoyoneda` is its left inverse\n-- | whenever `f` is a functor.\nliftCoyoneda :: forall f. f ~> Coyoneda f\nliftCoyoneda = coyoneda identity\n\n-- | Lower a value of type `Coyoneda f a` to the `Functor` `f`.\nlowerCoyoneda :: forall f. Functor f => Coyoneda f ~> f\nlowerCoyoneda = unCoyoneda map\n\n-- | Use a natural transformation to change the generating type constructor of a\n-- | `Coyoneda`.\nhoistCoyoneda :: forall f g. (f ~> g) -> Coyoneda f ~> Coyoneda g\nhoistCoyoneda nat (Coyoneda e) =\n runExists (\\(CoyonedaF k fi) -> coyoneda k (nat fi)) e\n", "-- | This module defines a type of maps as height-balanced (AVL) binary trees.\n-- | Efficient set operations are implemented in terms of\n-- | \n\nmodule Data.Map.Internal\n ( Map(..)\n , showTree\n , empty\n , isEmpty\n , singleton\n , checkValid\n , insert\n , insertWith\n , lookup\n , lookupLE\n , lookupLT\n , lookupGE\n , lookupGT\n , findMin\n , findMax\n , foldSubmap\n , submap\n , fromFoldable\n , fromFoldableWith\n , fromFoldableWithIndex\n , toUnfoldable\n , toUnfoldableUnordered\n , delete\n , pop\n , member\n , alter\n , update\n , keys\n , values\n , union\n , unionWith\n , unions\n , intersection\n , intersectionWith\n , difference\n , isSubmap\n , size\n , filterWithKey\n , filterKeys\n , filter\n , mapMaybeWithKey\n , mapMaybe\n , catMaybes\n , MapIter\n , MapIterStep(..)\n , toMapIter\n , stepAsc\n , stepAscCps\n , stepDesc\n , stepDescCps\n , stepUnordered\n , stepUnorderedCps\n , unsafeNode\n , unsafeBalancedNode\n , unsafeJoinNodes\n , unsafeSplit\n , Split(..)\n ) where\n\nimport Prelude\n\nimport Control.Alt (class Alt)\nimport Control.Plus (class Plus)\nimport Data.Eq (class Eq1)\nimport Data.Foldable (class Foldable, foldl, foldr)\nimport Data.FoldableWithIndex (class FoldableWithIndex, foldlWithIndex, foldrWithIndex)\nimport Data.Function.Uncurried (Fn2, Fn3, Fn4, Fn7, mkFn2, mkFn3, mkFn4, mkFn7, runFn2, runFn3, runFn4, runFn7)\nimport Data.FunctorWithIndex (class FunctorWithIndex)\nimport Data.List (List(..), (:))\nimport Data.Maybe (Maybe(..))\nimport Data.Ord (class Ord1, abs)\nimport Data.Traversable (traverse, class Traversable)\nimport Data.TraversableWithIndex (class TraversableWithIndex)\nimport Data.Tuple (Tuple(Tuple))\nimport Data.Unfoldable (class Unfoldable, unfoldr)\nimport Prim.TypeError (class Warn, Text)\n\n-- | `Map k v` represents maps from keys of type `k` to values of type `v`.\ndata Map k v = Leaf | Node Int Int k v (Map k v) (Map k v)\n\ntype role Map nominal representational\n\ninstance eq1Map :: Eq k => Eq1 (Map k) where\n eq1 = eq\n\ninstance eqMap :: (Eq k, Eq v) => Eq (Map k v) where\n eq xs ys = case xs of\n Leaf ->\n case ys of\n Leaf -> true\n _ -> false\n Node _ s1 _ _ _ _ ->\n case ys of\n Node _ s2 _ _ _ _\n | s1 == s2 ->\n toMapIter xs == toMapIter ys\n _ ->\n false\n\ninstance ord1Map :: Ord k => Ord1 (Map k) where\n compare1 = compare\n\ninstance ordMap :: (Ord k, Ord v) => Ord (Map k v) where\n compare xs ys = case xs of\n Leaf ->\n case ys of\n Leaf -> EQ\n _ -> LT\n _ ->\n case ys of\n Leaf -> GT\n _ -> compare (toMapIter xs) (toMapIter ys)\n\ninstance showMap :: (Show k, Show v) => Show (Map k v) where\n show as = \"(fromFoldable \" <> show (toUnfoldable as :: Array _) <> \")\"\n\ninstance semigroupMap ::\n ( Warn (Text \"Data.Map's `Semigroup` instance is now unbiased and differs from the left-biased instance defined in PureScript releases <= 0.13.x.\")\n , Ord k\n , Semigroup v\n ) => Semigroup (Map k v) where\n append = unionWith append\n\ninstance monoidSemigroupMap ::\n ( Warn (Text \"Data.Map's `Semigroup` instance is now unbiased and differs from the left-biased instance defined in PureScript releases <= 0.13.x.\")\n , Ord k\n , Semigroup v\n ) => Monoid (Map k v) where\n mempty = empty\n\ninstance altMap :: Ord k => Alt (Map k) where\n alt = union\n\ninstance plusMap :: Ord k => Plus (Map k) where\n empty = empty\n\ninstance functorMap :: Functor (Map k) where\n map f = go\n where\n go = case _ of\n Leaf -> Leaf\n Node h s k v l r ->\n Node h s k (f v) (go l) (go r)\n\ninstance functorWithIndexMap :: FunctorWithIndex k (Map k) where\n mapWithIndex f = go\n where\n go = case _ of\n Leaf -> Leaf\n Node h s k v l r ->\n Node h s k (f k v) (go l) (go r)\n\ninstance applyMap :: Ord k => Apply (Map k) where\n apply = intersectionWith identity\n\ninstance bindMap :: Ord k => Bind (Map k) where\n bind m f = mapMaybeWithKey (\\k -> lookup k <<< f) m\n\ninstance foldableMap :: Foldable (Map k) where\n foldr f z = \\m -> runFn2 go m z\n where\n go = mkFn2 \\m' z' -> case m' of\n Leaf -> z'\n Node _ _ _ v l r ->\n runFn2 go l (f v (runFn2 go r z'))\n foldl f z = \\m -> runFn2 go z m\n where\n go = mkFn2 \\z' m' -> case m' of\n Leaf -> z'\n Node _ _ _ v l r ->\n runFn2 go (f (runFn2 go z' l) v) r\n foldMap f = go\n where\n go = case _ of\n Leaf -> mempty\n Node _ _ _ v l r ->\n go l <> f v <> go r\n\ninstance foldableWithIndexMap :: FoldableWithIndex k (Map k) where\n foldrWithIndex f z = \\m -> runFn2 go m z\n where\n go = mkFn2 \\m' z' -> case m' of\n Leaf -> z'\n Node _ _ k v l r ->\n runFn2 go l (f k v (runFn2 go r z'))\n foldlWithIndex f z = \\m -> runFn2 go z m\n where\n go = mkFn2 \\z' m' -> case m' of\n Leaf -> z'\n Node _ _ k v l r ->\n runFn2 go (f k (runFn2 go z' l) v) r\n foldMapWithIndex f = go\n where\n go = case _ of\n Leaf -> mempty\n Node _ _ k v l r ->\n go l <> f k v <> go r\n\ninstance traversableMap :: Traversable (Map k) where\n traverse f = go\n where\n go = case _ of\n Leaf -> pure Leaf\n Node h s k v l r ->\n (\\l' v' r' -> Node h s k v' l' r')\n <$> go l\n <*> f v\n <*> go r\n sequence = traverse identity\n\ninstance traversableWithIndexMap :: TraversableWithIndex k (Map k) where\n traverseWithIndex f = go\n where\n go = case _ of\n Leaf -> pure Leaf\n Node h s k v l r ->\n (\\l' v' r' -> Node h s k v' l' r')\n <$> go l\n <*> f k v\n <*> go r\n\n-- | Render a `Map` as a `String`\nshowTree :: forall k v. Show k => Show v => Map k v -> String\nshowTree = go \"\"\n where\n go ind = case _ of\n Leaf -> ind <> \"Leaf\"\n Node h _ k v l r ->\n (ind <> \"[\" <> show h <> \"] \" <> show k <> \" => \" <> show v <> \"\\n\")\n <> (go (ind <> \" \") l <> \"\\n\")\n <> (go (ind <> \" \") r)\n\n-- | An empty map\nempty :: forall k v. Map k v\nempty = Leaf\n\n-- | Test if a map is empty\nisEmpty :: forall k v. Map k v -> Boolean\nisEmpty Leaf = true\nisEmpty _ = false\n\n-- | Create a map with one key/value pair\nsingleton :: forall k v. k -> v -> Map k v\nsingleton k v = Node 1 1 k v Leaf Leaf\n\n-- | Check whether the underlying tree satisfies the height, size, and ordering invariants.\n-- |\n-- | This function is provided for internal use.\ncheckValid :: forall k v. Ord k => Map k v -> Boolean\ncheckValid = go\n where\n go = case _ of\n Leaf -> true\n Node h s k _ l r ->\n case l of\n Leaf ->\n case r of\n Leaf ->\n true\n Node rh rs rk _ _ _ ->\n h == 2 && rh == 1 && s > rs && rk > k && go r\n Node lh ls lk _ _ _ ->\n case r of\n Leaf ->\n h == 2 && lh == 1 && s > ls && lk < k && go l\n Node rh rs rk _ _ _ ->\n h > rh && rk > k && h > lh && lk < k && abs (rh - lh) < 2 && rs + ls + 1 == s && go l && go r\n\n-- | Look up a value for the specified key\nlookup :: forall k v. Ord k => k -> Map k v -> Maybe v\nlookup k = go\n where\n go = case _ of\n Leaf -> Nothing\n Node _ _ mk mv ml mr ->\n case compare k mk of\n LT -> go ml\n GT -> go mr\n EQ -> Just mv\n\n-- | Look up a value for the specified key, or the greatest one less than it\nlookupLE :: forall k v. Ord k => k -> Map k v -> Maybe { key :: k, value :: v }\nlookupLE k = go\n where\n go = case _ of\n Leaf -> Nothing\n Node _ _ mk mv ml mr ->\n case compare k mk of\n LT -> go ml\n GT ->\n case go mr of\n Nothing -> Just { key: mk, value: mv }\n other -> other\n EQ ->\n Just { key: mk, value: mv }\n\n-- | Look up a value for the greatest key less than the specified key\nlookupLT :: forall k v. Ord k => k -> Map k v -> Maybe { key :: k, value :: v }\nlookupLT k = go\n where\n go = case _ of\n Leaf -> Nothing\n Node _ _ mk mv ml mr ->\n case compare k mk of\n LT -> go ml\n GT ->\n case go mr of\n Nothing -> Just { key: mk, value: mv }\n other -> other\n EQ ->\n findMax ml\n\n-- | Look up a value for the specified key, or the least one greater than it\nlookupGE :: forall k v. Ord k => k -> Map k v -> Maybe { key :: k, value :: v }\nlookupGE k = go\n where\n go = case _ of\n Leaf -> Nothing\n Node _ _ mk mv ml mr ->\n case compare k mk of\n LT ->\n case go ml of\n Nothing -> Just { key: mk, value: mv }\n other -> other\n GT -> go mr\n EQ -> Just { key: mk, value: mv }\n\n-- | Look up a value for the least key greater than the specified key\nlookupGT :: forall k v. Ord k => k -> Map k v -> Maybe { key :: k, value :: v }\nlookupGT k = go\n where\n go = case _ of\n Leaf -> Nothing\n Node _ _ mk mv ml mr ->\n case compare k mk of\n LT ->\n case go ml of\n Nothing -> Just { key: mk, value: mv }\n other -> other\n GT -> go mr\n EQ -> findMin mr\n\n-- | Returns the pair with the greatest key\nfindMax :: forall k v. Map k v -> Maybe { key :: k, value :: v }\nfindMax = case _ of\n Leaf -> Nothing\n Node _ _ k v _ r ->\n case r of\n Leaf -> Just { key: k, value: v }\n _ -> findMax r\n\n-- | Returns the pair with the least key\nfindMin :: forall k v. Map k v -> Maybe { key :: k, value :: v }\nfindMin = case _ of\n Leaf -> Nothing\n Node _ _ k v l _ ->\n case l of\n Leaf -> Just { key: k, value: v }\n _ -> findMin l\n\n-- | Fold over the entries of a given map where the key is between a lower and\n-- | an upper bound. Passing `Nothing` as either the lower or upper bound\n-- | argument means that the fold has no lower or upper bound, i.e. the fold\n-- | starts from (or ends with) the smallest (or largest) key in the map.\n-- |\n-- | ```purescript\n-- | foldSubmap (Just 1) (Just 2) (\\_ v -> [v])\n-- | (fromFoldable [Tuple 0 \"zero\", Tuple 1 \"one\", Tuple 2 \"two\", Tuple 3 \"three\"])\n-- | == [\"one\", \"two\"]\n-- |\n-- | foldSubmap Nothing (Just 2) (\\_ v -> [v])\n-- | (fromFoldable [Tuple 0 \"zero\", Tuple 1 \"one\", Tuple 2 \"two\", Tuple 3 \"three\"])\n-- | == [\"zero\", \"one\", \"two\"]\n-- | ```\nfoldSubmap :: forall k v m. Ord k => Monoid m => Maybe k -> Maybe k -> (k -> v -> m) -> Map k v -> m\nfoldSubmap = foldSubmapBy (<>) mempty\n\nfoldSubmapBy :: forall k v m. Ord k => (m -> m -> m) -> m -> Maybe k -> Maybe k -> (k -> v -> m) -> Map k v -> m\nfoldSubmapBy appendFn memptyValue kmin kmax f =\n let\n tooSmall =\n case kmin of\n Just kmin' ->\n \\k -> k < kmin'\n Nothing ->\n const false\n\n tooLarge =\n case kmax of\n Just kmax' ->\n \\k -> k > kmax'\n Nothing ->\n const false\n\n inBounds =\n case kmin, kmax of\n Just kmin', Just kmax' ->\n \\k -> kmin' <= k && k <= kmax'\n Just kmin', Nothing ->\n \\k -> kmin' <= k\n Nothing, Just kmax' ->\n \\k -> k <= kmax'\n Nothing, Nothing ->\n const true\n\n go = case _ of\n Leaf ->\n memptyValue\n Node _ _ k v left right ->\n (if tooSmall k then memptyValue else go left)\n `appendFn` (if inBounds k then f k v else memptyValue)\n `appendFn` (if tooLarge k then memptyValue else go right)\n in\n go\n\n-- | Returns a new map containing all entries of the given map which lie\n-- | between a given lower and upper bound, treating `Nothing` as no bound i.e.\n-- | including the smallest (or largest) key in the map, no matter how small\n-- | (or large) it is. For example:\n-- |\n-- | ```purescript\n-- | submap (Just 1) (Just 2)\n-- | (fromFoldable [Tuple 0 \"zero\", Tuple 1 \"one\", Tuple 2 \"two\", Tuple 3 \"three\"])\n-- | == fromFoldable [Tuple 1 \"one\", Tuple 2 \"two\"]\n-- |\n-- | submap Nothing (Just 2)\n-- | (fromFoldable [Tuple 0 \"zero\", Tuple 1 \"one\", Tuple 2 \"two\", Tuple 3 \"three\"])\n-- | == fromFoldable [Tuple 0 \"zero\", Tuple 1 \"one\", Tuple 2 \"two\"]\n-- | ```\n-- |\n-- | The function is entirely specified by the following\n-- | property:\n-- |\n-- | ```purescript\n-- | Given any m :: Map k v, mmin :: Maybe k, mmax :: Maybe k, key :: k,\n-- | let m' = submap mmin mmax m in\n-- | if (maybe true (\\min -> min <= key) mmin &&\n-- | maybe true (\\max -> max >= key) mmax)\n-- | then lookup key m == lookup key m'\n-- | else not (member key m')\n-- | ```\nsubmap :: forall k v. Ord k => Maybe k -> Maybe k -> Map k v -> Map k v\nsubmap kmin kmax = foldSubmapBy union empty kmin kmax singleton\n\n-- | Test if a key is a member of a map\nmember :: forall k v. Ord k => k -> Map k v -> Boolean\nmember k = go\n where\n go = case _ of\n Leaf -> false\n Node _ _ mk _ ml mr ->\n case compare k mk of\n LT -> go ml\n GT -> go mr\n EQ -> true\n\n-- | Insert or replace a key/value pair in a map\ninsert :: forall k v. Ord k => k -> v -> Map k v -> Map k v\ninsert k v = go\n where\n go = case _ of\n Leaf -> singleton k v\n Node mh ms mk mv ml mr ->\n case compare k mk of\n LT -> runFn4 unsafeBalancedNode mk mv (go ml) mr\n GT -> runFn4 unsafeBalancedNode mk mv ml (go mr)\n EQ -> Node mh ms k v ml mr\n\n-- | Inserts or updates a value with the given function.\n-- |\n-- | The combining function is called with the existing value as the first\n-- | argument and the new value as the second argument.\ninsertWith :: forall k v. Ord k => (v -> v -> v) -> k -> v -> Map k v -> Map k v\ninsertWith app k v = go\n where\n go = case _ of\n Leaf -> singleton k v\n Node mh ms mk mv ml mr ->\n case compare k mk of\n LT -> runFn4 unsafeBalancedNode mk mv (go ml) mr\n GT -> runFn4 unsafeBalancedNode mk mv ml (go mr)\n EQ -> Node mh ms k (app mv v) ml mr\n\n-- | Delete a key and its corresponding value from a map.\ndelete :: forall k v. Ord k => k -> Map k v -> Map k v\ndelete k = go\n where\n go = case _ of\n Leaf -> Leaf\n Node _ _ mk mv ml mr ->\n case compare k mk of\n LT -> runFn4 unsafeBalancedNode mk mv (go ml) mr\n GT -> runFn4 unsafeBalancedNode mk mv ml (go mr)\n EQ -> runFn2 unsafeJoinNodes ml mr\n\n-- | Delete a key and its corresponding value from a map, returning the value\n-- | as well as the subsequent map.\npop :: forall k v. Ord k => k -> Map k v -> Maybe (Tuple v (Map k v))\npop k m = do\n let (Split x l r) = runFn3 unsafeSplit compare k m\n map (\\a -> Tuple a (runFn2 unsafeJoinNodes l r)) x\n\n-- | Insert the value, delete a value, or update a value for a key in a map\nalter :: forall k v. Ord k => (Maybe v -> Maybe v) -> k -> Map k v -> Map k v\nalter f k m = do\n let Split v l r = runFn3 unsafeSplit compare k m\n case f v of\n Nothing ->\n runFn2 unsafeJoinNodes l r\n Just v' ->\n runFn4 unsafeBalancedNode k v' l r\n\n-- | Update or delete the value for a key in a map\nupdate :: forall k v. Ord k => (v -> Maybe v) -> k -> Map k v -> Map k v\nupdate f k = go\n where\n go = case _ of\n Leaf -> Leaf\n Node mh ms mk mv ml mr ->\n case compare k mk of\n LT -> runFn4 unsafeBalancedNode mk mv (go ml) mr\n GT -> runFn4 unsafeBalancedNode mk mv ml (go mr)\n EQ ->\n case f mv of\n Nothing ->\n runFn2 unsafeJoinNodes ml mr\n Just mv' ->\n Node mh ms mk mv' ml mr\n\n-- | Convert any foldable collection of key/value pairs to a map.\n-- | On key collision, later values take precedence over earlier ones.\nfromFoldable :: forall f k v. Ord k => Foldable f => f (Tuple k v) -> Map k v\nfromFoldable = foldl (\\m (Tuple k v) -> insert k v m) empty\n\n-- | Convert any foldable collection of key/value pairs to a map.\n-- | On key collision, the values are configurably combined.\nfromFoldableWith :: forall f k v. Ord k => Foldable f => (v -> v -> v) -> f (Tuple k v) -> Map k v\nfromFoldableWith f = foldl (\\m (Tuple k v) -> f' k v m) empty\n where\n f' = insertWith (flip f)\n\n-- | Convert any indexed foldable collection into a map.\nfromFoldableWithIndex :: forall f k v. Ord k => FoldableWithIndex k f => f v -> Map k v\nfromFoldableWithIndex = foldlWithIndex (\\k m v -> insert k v m) empty\n\n-- | Convert a map to an unfoldable structure of key/value pairs where the keys are in ascending order\ntoUnfoldable :: forall f k v. Unfoldable f => Map k v -> f (Tuple k v)\ntoUnfoldable = unfoldr stepUnfoldr <<< toMapIter\n\n-- | Convert a map to an unfoldable structure of key/value pairs\n-- |\n-- | While this traversal is up to 10% faster in benchmarks than `toUnfoldable`,\n-- | it leaks the underlying map stucture, making it only suitable for applications\n-- | where order is irrelevant.\n-- |\n-- | If you are unsure, use `toUnfoldable`\ntoUnfoldableUnordered :: forall f k v. Unfoldable f => Map k v -> f (Tuple k v)\ntoUnfoldableUnordered = unfoldr stepUnfoldrUnordered <<< toMapIter\n\n-- | Get a list of the keys contained in a map\nkeys :: forall k v. Map k v -> List k\nkeys = foldrWithIndex (\\k _ acc -> k : acc) Nil\n\n-- | Get a list of the values contained in a map\nvalues :: forall k v. Map k v -> List v\nvalues = foldr Cons Nil\n\n-- | Compute the union of two maps, using the specified function\n-- | to combine values for duplicate keys.\nunionWith :: forall k v. Ord k => (v -> v -> v) -> Map k v -> Map k v -> Map k v\nunionWith app m1 m2 = runFn4 unsafeUnionWith compare app m1 m2\n\n-- | Compute the union of two maps, preferring values from the first map in the case\n-- | of duplicate keys\nunion :: forall k v. Ord k => Map k v -> Map k v -> Map k v\nunion = unionWith const\n\n-- | Compute the union of a collection of maps\nunions :: forall k v f. Ord k => Foldable f => f (Map k v) -> Map k v\nunions = foldl union empty\n\n-- | Compute the intersection of two maps, using the specified function\n-- | to combine values for duplicate keys.\nintersectionWith :: forall k a b c. Ord k => (a -> b -> c) -> Map k a -> Map k b -> Map k c\nintersectionWith app m1 m2 = runFn4 unsafeIntersectionWith compare app m1 m2\n\n-- | Compute the intersection of two maps, preferring values from the first map in the case\n-- | of duplicate keys.\nintersection :: forall k a b. Ord k => Map k a -> Map k b -> Map k a\nintersection = intersectionWith const\n\n-- | Difference of two maps. Return elements of the first map where\n-- | the keys do not exist in the second map.\ndifference :: forall k v w. Ord k => Map k v -> Map k w -> Map k v\ndifference m1 m2 = runFn3 unsafeDifference compare m1 m2\n\n-- | Test whether one map contains all of the keys and values contained in another map\nisSubmap :: forall k v. Ord k => Eq v => Map k v -> Map k v -> Boolean\nisSubmap = go\n where\n go m1 m2 = case m1 of\n Leaf -> true\n Node _ _ k v l r ->\n case lookup k m2 of\n Nothing -> false\n Just v' ->\n v == v' && go l m2 && go r m2\n\n-- | Calculate the number of key/value pairs in a map\nsize :: forall k v. Map k v -> Int\nsize = case _ of\n Leaf -> 0\n Node _ s _ _ _ _ -> s\n\n-- | Filter out those key/value pairs of a map for which a predicate\n-- | fails to hold.\nfilterWithKey :: forall k v. Ord k => (k -> v -> Boolean) -> Map k v -> Map k v\nfilterWithKey f = go\n where\n go = case _ of\n Leaf -> Leaf\n Node _ _ k v l r\n | f k v ->\n runFn4 unsafeBalancedNode k v (go l) (go r)\n | otherwise ->\n runFn2 unsafeJoinNodes (go l) (go r)\n\n-- | Filter out those key/value pairs of a map for which a predicate\n-- | on the key fails to hold.\nfilterKeys :: forall k. Ord k => (k -> Boolean) -> Map k ~> Map k\nfilterKeys f = go\n where\n go = case _ of\n Leaf -> Leaf\n Node _ _ k v l r\n | f k ->\n runFn4 unsafeBalancedNode k v (go l) (go r)\n | otherwise ->\n runFn2 unsafeJoinNodes (go l) (go r)\n\n-- | Filter out those key/value pairs of a map for which a predicate\n-- | on the value fails to hold.\nfilter :: forall k v. Ord k => (v -> Boolean) -> Map k v -> Map k v\nfilter = filterWithKey <<< const\n\n-- | Applies a function to each key/value pair in a map, discarding entries\n-- | where the function returns `Nothing`.\nmapMaybeWithKey :: forall k a b. Ord k => (k -> a -> Maybe b) -> Map k a -> Map k b\nmapMaybeWithKey f = go\n where\n go = case _ of\n Leaf -> Leaf\n Node _ _ k v l r ->\n case f k v of\n Just v' ->\n runFn4 unsafeBalancedNode k v' (go l) (go r)\n Nothing ->\n runFn2 unsafeJoinNodes (go l) (go r)\n\n-- | Applies a function to each value in a map, discarding entries where the\n-- | function returns `Nothing`.\nmapMaybe :: forall k a b. Ord k => (a -> Maybe b) -> Map k a -> Map k b\nmapMaybe = mapMaybeWithKey <<< const\n\n-- | Filter a map of optional values, keeping only the key/value pairs which\n-- | contain a value, creating a new map.\ncatMaybes :: forall k v. Ord k => Map k (Maybe v) -> Map k v\ncatMaybes = mapMaybe identity\n\n-- | Low-level Node constructor which maintains the height and size invariants\n-- | This is unsafe because it assumes the child Maps are ordered and balanced.\nunsafeNode :: forall k v. Fn4 k v (Map k v) (Map k v) (Map k v)\nunsafeNode = mkFn4 \\k v l r -> case l of\n Leaf ->\n case r of\n Leaf ->\n Node 1 1 k v l r\n Node h2 s2 _ _ _ _ ->\n Node (1 + h2) (1 + s2) k v l r\n Node h1 s1 _ _ _ _ ->\n case r of\n Leaf ->\n Node (1 + h1) (1 + s1) k v l r\n Node h2 s2 _ _ _ _ ->\n Node (1 + if h1 > h2 then h1 else h2) (1 + s1 + s2) k v l r\n\n-- | Low-level Node constructor which maintains the balance invariants.\n-- | This is unsafe because it assumes the child Maps are ordered.\nunsafeBalancedNode :: forall k v. Fn4 k v (Map k v) (Map k v) (Map k v)\nunsafeBalancedNode = mkFn4 \\k v l r -> case l of\n Leaf ->\n case r of\n Leaf ->\n singleton k v\n Node rh _ rk rv rl rr\n | rh > 1 ->\n runFn7 rotateLeft k v l rk rv rl rr\n _ ->\n runFn4 unsafeNode k v l r\n Node lh _ lk lv ll lr ->\n case r of\n Node rh _ rk rv rl rr\n | rh > lh + 1 ->\n runFn7 rotateLeft k v l rk rv rl rr\n | lh > rh + 1 ->\n runFn7 rotateRight k v lk lv ll lr r\n Leaf\n | lh > 1 ->\n runFn7 rotateRight k v lk lv ll lr r\n _ ->\n runFn4 unsafeNode k v l r\n where\n rotateLeft :: Fn7 k v (Map k v) k v (Map k v) (Map k v) (Map k v)\n rotateLeft = mkFn7 \\k v l rk rv rl rr -> case rl of\n Node lh _ lk lv ll lr\n | lh > height rr ->\n runFn4 unsafeNode lk lv (runFn4 unsafeNode k v l ll) (runFn4 unsafeNode rk rv lr rr)\n _ ->\n runFn4 unsafeNode rk rv (runFn4 unsafeNode k v l rl) rr\n\n rotateRight :: Fn7 k v k v (Map k v) (Map k v) (Map k v) (Map k v)\n rotateRight = mkFn7 \\k v lk lv ll lr r -> case lr of\n Node rh _ rk rv rl rr\n | height ll <= rh ->\n runFn4 unsafeNode rk rv (runFn4 unsafeNode lk lv ll rl) (runFn4 unsafeNode k v rr r)\n _ ->\n runFn4 unsafeNode lk lv ll (runFn4 unsafeNode k v lr r)\n\n height :: Map k v -> Int\n height = case _ of\n Leaf -> 0\n Node h _ _ _ _ _ -> h\n\n-- | Low-level Node constructor from two Maps.\n-- | This is unsafe because it assumes the child Maps are ordered.\nunsafeJoinNodes :: forall k v. Fn2 (Map k v) (Map k v) (Map k v)\nunsafeJoinNodes = mkFn2 case _, _ of\n Leaf, b -> b\n Node _ _ lk lv ll lr, r -> do\n let (SplitLast k v l) = runFn4 unsafeSplitLast lk lv ll lr\n runFn4 unsafeBalancedNode k v l r\n\ndata SplitLast k v = SplitLast k v (Map k v)\n\n-- | Reassociates a node by moving the last node to the top.\n-- | This is unsafe because it assumes the key and child Maps are from\n-- | a balanced node.\nunsafeSplitLast :: forall k v. Fn4 k v (Map k v) (Map k v) (SplitLast k v)\nunsafeSplitLast = mkFn4 \\k v l r -> case r of\n Leaf -> SplitLast k v l\n Node _ _ rk rv rl rr -> do\n let (SplitLast k' v' t') = runFn4 unsafeSplitLast rk rv rl rr\n SplitLast k' v' (runFn4 unsafeBalancedNode k v l t')\n\ndata Split k v = Split (Maybe v) (Map k v) (Map k v)\n\n-- | Reassocates a Map so the given key is at the top.\n-- | This is unsafe because it assumes the ordering function is appropriate.\nunsafeSplit :: forall k v. Fn3 (k -> k -> Ordering) k (Map k v) (Split k v)\nunsafeSplit = mkFn3 \\comp k m -> case m of\n Leaf ->\n Split Nothing Leaf Leaf\n Node _ _ mk mv ml mr ->\n case comp k mk of\n LT -> do\n let (Split b ll lr) = runFn3 unsafeSplit comp k ml\n Split b ll (runFn4 unsafeBalancedNode mk mv lr mr)\n GT -> do\n let (Split b rl rr) = runFn3 unsafeSplit comp k mr\n Split b (runFn4 unsafeBalancedNode mk mv ml rl) rr\n EQ ->\n Split (Just mv) ml mr\n\n-- | Low-level unionWith implementation.\n-- | This is unsafe because it assumes the ordering function is appropriate.\nunsafeUnionWith :: forall k v. Fn4 (k -> k -> Ordering) (v -> v -> v) (Map k v) (Map k v) (Map k v)\nunsafeUnionWith = mkFn4 \\comp app l r -> case l, r of\n Leaf, _ -> r\n _, Leaf -> l\n _, Node _ _ rk rv rl rr -> do\n let (Split lv ll lr) = runFn3 unsafeSplit comp rk l\n let l' = runFn4 unsafeUnionWith comp app ll rl\n let r' = runFn4 unsafeUnionWith comp app lr rr\n case lv of\n Just lv' ->\n runFn4 unsafeBalancedNode rk (app lv' rv) l' r'\n Nothing ->\n runFn4 unsafeBalancedNode rk rv l' r'\n\n-- | Low-level intersectionWith implementation.\n-- | This is unsafe because it assumes the ordering function is appropriate.\nunsafeIntersectionWith :: forall k a b c. Fn4 (k -> k -> Ordering) (a -> b -> c) (Map k a) (Map k b) (Map k c)\nunsafeIntersectionWith = mkFn4 \\comp app l r -> case l, r of\n Leaf, _ -> Leaf\n _, Leaf -> Leaf\n _, Node _ _ rk rv rl rr -> do\n let (Split lv ll lr) = runFn3 unsafeSplit comp rk l\n let l' = runFn4 unsafeIntersectionWith comp app ll rl\n let r' = runFn4 unsafeIntersectionWith comp app lr rr\n case lv of\n Just lv' ->\n runFn4 unsafeBalancedNode rk (app lv' rv) l' r'\n Nothing ->\n runFn2 unsafeJoinNodes l' r'\n\n-- | Low-level difference implementation.\n-- | This is unsafe because it assumes the ordering function is appropriate.\nunsafeDifference :: forall k v w. Fn3 (k -> k -> Ordering) (Map k v) (Map k w) (Map k v)\nunsafeDifference = mkFn3 \\comp l r -> case l, r of\n Leaf, _ -> Leaf\n _, Leaf -> l\n _, Node _ _ rk _ rl rr -> do\n let (Split _ ll lr) = runFn3 unsafeSplit comp rk l\n let l' = runFn3 unsafeDifference comp ll rl\n let r' = runFn3 unsafeDifference comp lr rr\n runFn2 unsafeJoinNodes l' r'\n\ndata MapIterStep k v\n = IterDone\n | IterNext k v (MapIter k v)\n\n-- | Low-level iteration state for a `Map`. Must be consumed using\n-- | an appropriate stepper.\ndata MapIter k v\n = IterLeaf\n | IterEmit k v (MapIter k v)\n | IterNode (Map k v) (MapIter k v)\n\ninstance (Eq k, Eq v) => Eq (MapIter k v) where\n eq = go\n where\n go a b = case stepAsc a of\n IterNext k1 v1 a' ->\n case stepAsc b of\n IterNext k2 v2 b'\n | k1 == k2 && v1 == v2 ->\n go a' b'\n _ ->\n false\n IterDone ->\n true\n\ninstance (Ord k, Ord v) => Ord (MapIter k v) where\n compare = go\n where\n go a b = case stepAsc a, stepAsc b of\n IterNext k1 v1 a', IterNext k2 v2 b' ->\n case compare k1 k2 of\n EQ ->\n case compare v1 v2 of\n EQ ->\n go a' b'\n other ->\n other\n other ->\n other\n IterDone, b'->\n case b' of\n IterDone ->\n EQ\n _ ->\n LT\n _, IterDone ->\n GT\n\n-- | Converts a Map to a MapIter for iteration using a MapStepper.\ntoMapIter :: forall k v. Map k v -> MapIter k v\ntoMapIter = flip IterNode IterLeaf\n\ntype MapStepper k v = MapIter k v -> MapIterStep k v\n\ntype MapStepperCps k v = forall r. (Fn3 k v (MapIter k v) r) -> (Unit -> r) -> MapIter k v -> r\n\n-- | Steps a `MapIter` in ascending order.\nstepAsc :: forall k v. MapStepper k v\nstepAsc = stepAscCps (mkFn3 \\k v next -> IterNext k v next) (const IterDone)\n\n-- | Steps a `MapIter` in descending order.\nstepDesc :: forall k v. MapStepper k v\nstepDesc = stepDescCps (mkFn3 \\k v next -> IterNext k v next) (const IterDone)\n\n-- | Steps a `MapIter` in arbitrary order.\nstepUnordered :: forall k v. MapStepper k v\nstepUnordered = stepUnorderedCps (mkFn3 \\k v next -> IterNext k v next) (const IterDone)\n\n-- | Steps a `MapIter` in ascending order with a CPS encoding.\nstepAscCps :: forall k v. MapStepperCps k v\nstepAscCps = stepWith iterMapL\n\n-- | Steps a `MapIter` in descending order with a CPS encoding.\nstepDescCps :: forall k v. MapStepperCps k v\nstepDescCps = stepWith iterMapR\n\n-- | Steps a `MapIter` in arbitrary order with a CPS encoding.\nstepUnorderedCps :: forall k v. MapStepperCps k v\nstepUnorderedCps = stepWith iterMapU\n\nstepUnfoldr :: forall k v. MapIter k v -> Maybe (Tuple (Tuple k v) (MapIter k v))\nstepUnfoldr = stepAscCps step (\\_ -> Nothing)\n where\n step = mkFn3 \\k v next ->\n Just (Tuple (Tuple k v) next)\n\nstepUnfoldrUnordered :: forall k v. MapIter k v -> Maybe (Tuple (Tuple k v) (MapIter k v))\nstepUnfoldrUnordered = stepUnorderedCps step (\\_ -> Nothing)\n where\n step = mkFn3 \\k v next ->\n Just (Tuple (Tuple k v) next)\n\nstepWith :: forall k v r. (MapIter k v -> Map k v -> MapIter k v) -> (Fn3 k v (MapIter k v) r) -> (Unit -> r) -> MapIter k v -> r\nstepWith f next done = go\n where\n go = case _ of\n IterLeaf ->\n done unit\n IterEmit k v iter ->\n runFn3 next k v iter\n IterNode m iter ->\n go (f iter m)\n\niterMapL :: forall k v. MapIter k v -> Map k v -> MapIter k v\niterMapL = go\n where\n go iter = case _ of\n Leaf -> iter\n Node _ _ k v l r ->\n case r of\n Leaf ->\n go (IterEmit k v iter) l\n _ ->\n go (IterEmit k v (IterNode r iter)) l\n\niterMapR :: forall k v. MapIter k v -> Map k v -> MapIter k v\niterMapR = go\n where\n go iter = case _ of\n Leaf -> iter\n Node _ _ k v l r ->\n case r of\n Leaf ->\n go (IterEmit k v iter) l\n _ ->\n go (IterEmit k v (IterNode l iter)) r\n\niterMapU :: forall k v. MapIter k v -> Map k v -> MapIter k v\niterMapU iter = case _ of\n Leaf -> iter\n Node _ _ k v l r ->\n case l of\n Leaf ->\n case r of\n Leaf ->\n IterEmit k v iter\n _ ->\n IterEmit k v (IterNode r iter)\n _ ->\n case r of\n Leaf ->\n IterEmit k v (IterNode l iter)\n _ ->\n IterEmit k v (IterNode l (IterNode r iter))\n", "module Halogen.Data.OrdBox\n ( OrdBox\n , mkOrdBox\n , unOrdBox\n ) where\n\nimport Prelude\n\n-- | A value carrying its `Ord` instance so it can be used at a later date\n-- | without the need for evidence of the instance.\ndata OrdBox a = OrdBox (a -> a -> Boolean) (a -> a -> Ordering) a\n\ninstance eqOrdBox :: Eq (OrdBox a) where\n eq (OrdBox e _ x) (OrdBox _ _ y) = e x y\n\ninstance ordOrdBox :: Ord (OrdBox a) where\n compare (OrdBox _ c x) (OrdBox _ _ y) = c x y\n\nmkOrdBox :: forall a. Ord a => a -> OrdBox a\nmkOrdBox = OrdBox eq compare\n\nunOrdBox :: forall a. OrdBox a -> a\nunOrdBox (OrdBox _ _ a) = a\n", "module Halogen.Data.Slot\n ( Slot\n , SlotStorage\n , empty\n , lookup\n , insert\n , pop\n , slots\n , foreachSlot\n ) where\n\nimport Prelude\n\nimport Data.Foldable (traverse_)\nimport Data.Map (Map)\nimport Data.Map as Map\nimport Data.Maybe (Maybe(..))\nimport Data.Monoid.Alternate (Alternate(..))\nimport Data.Newtype (un)\nimport Data.Symbol (class IsSymbol, reflectSymbol)\nimport Data.Tuple (Tuple(..))\nimport Halogen.Data.OrdBox (OrdBox, mkOrdBox, unOrdBox)\nimport Prim.Row as Row\nimport Type.Proxy (Proxy)\nimport Unsafe.Coerce (unsafeCoerce)\n\nforeign import data Any :: Type\n\n-- | A type which records the queries, output messages, and slot identifier for\n-- | a particular slot (ie. a location in HTML where a component is rendered).\n-- | For example:\n-- |\n-- | ```purescript\n-- | type ButtonSlot slot = Slot Button.Query Button.Output slot\n-- |\n-- | -- A component using this slot type can have one type of child component,\n-- | -- which supports `Button.Query` queries, `Button.Output` outputs, and\n-- | -- which can be uniquely identified by an integer.\n-- | type Slots = ( button :: ButtonSlot Int )\n-- | ```\n-- |\n-- | - `query` represents the requests that can be made of this component\n-- | - `output` represents the output messages that can be raised by this component\n-- | - `slot` represents the unique identifier for this component\ndata Slot :: (Type -> Type) -> Type -> Type -> Type\ndata Slot (query :: Type -> Type) output slot\n\nnewtype SlotStorage (slots :: Row Type) (slot :: (Type -> Type) -> Type -> Type) =\n SlotStorage (Map (Tuple String (OrdBox Any)) Any)\n\nempty :: forall slots slot. SlotStorage slots slot\nempty = SlotStorage Map.empty\n\nlookup\n :: forall sym px slots slot query output s\n . Row.Cons sym (Slot query output s) px slots\n => IsSymbol sym\n => Ord s\n => Proxy sym\n -> s\n -> SlotStorage slots slot\n -> Maybe (slot query output)\nlookup sym key (SlotStorage m) =\n coerceSlot (Map.lookup (Tuple (reflectSymbol sym) (coerceBox (mkOrdBox key))) m)\n where\n coerceSlot :: Maybe Any -> Maybe (slot query output)\n coerceSlot = unsafeCoerce\n\n coerceBox :: OrdBox s -> OrdBox Any\n coerceBox = unsafeCoerce\n\npop\n :: forall sym px slots slot query output s\n . Row.Cons sym (Slot query output s) px slots\n => IsSymbol sym\n => Ord s\n => Proxy sym\n -> s\n -> SlotStorage slots slot\n -> Maybe (Tuple (slot query output) (SlotStorage slots slot))\npop sym key (SlotStorage m) =\n coercePop (Map.pop (Tuple (reflectSymbol sym) (coerceBox (mkOrdBox key))) m)\n where\n coercePop :: Maybe (Tuple Any (Map (Tuple String (OrdBox Any)) Any)) -> Maybe (Tuple (slot query output) (SlotStorage slots slot))\n coercePop = unsafeCoerce\n\n coerceBox :: OrdBox s -> OrdBox Any\n coerceBox = unsafeCoerce\n\ninsert\n :: forall sym px slots slot query output s\n . Row.Cons sym (Slot query output s) px slots\n => IsSymbol sym\n => Ord s\n => Proxy sym\n -> s\n -> slot query output\n -> SlotStorage slots slot\n -> SlotStorage slots slot\ninsert sym key val (SlotStorage m) =\n SlotStorage (Map.insert (Tuple (reflectSymbol sym) (coerceBox (mkOrdBox key))) (coerceVal val) m)\n where\n coerceBox :: OrdBox s -> OrdBox Any\n coerceBox = unsafeCoerce\n\n coerceVal :: slot query output -> Any\n coerceVal = unsafeCoerce\n\nslots\n :: forall sym px slots slot query output s\n . Row.Cons sym (Slot query output s) px slots\n => IsSymbol sym\n => Ord s\n => Proxy sym\n -> SlotStorage slots slot\n -> Map s (slot query output)\nslots sym (SlotStorage m) = un Alternate $ Map.foldSubmap Nothing Nothing go m\n where\n key = reflectSymbol sym\n\n go (Tuple key' ob) val\n | key == key' = Alternate $ Map.singleton (unOrdBox (coerceBox ob)) (coerceVal val)\n | otherwise = Alternate Map.empty\n\n coerceBox :: OrdBox Any -> OrdBox s\n coerceBox = unsafeCoerce\n\n coerceVal :: Any -> slot query output\n coerceVal = unsafeCoerce\n\nforeachSlot\n :: forall m slots slot\n . Applicative m\n => SlotStorage slots slot\n -> (forall query output. slot query output -> m Unit)\n -> m Unit\nforeachSlot (SlotStorage m) k = traverse_ (k <<< coerceVal) m\n where\n coerceVal :: forall query output. Any -> slot query output\n coerceVal = unsafeCoerce\n", "module DOM.HTML.Indexed.AutocompleteType where\n\nimport Prelude\n\ndata AutocompleteType\n = AutocompleteOff\n | AutocompleteOn\n | AutocompleteName\n | AutocompleteHonorificPrefix\n | AutocompleteGivenName\n | AutocompleteAdditionalName\n | AutocompleteFamilyName\n | AutocompleteHonorificSuffix\n | AutocompleteNickname\n | AutocompleteEmail\n | AutocompleteUsername\n | AutocompleteNewPassword\n | AutocompleteCurrentPassword\n | AutocompleteOneTimeCode\n | AutocompleteOrganizationTitle\n | AutocompleteOrganization\n | AutocompleteStreetAddress\n | AutocompleteAddressLine1\n | AutocompleteAddressLine2\n | AutocompleteAddressLine3\n | AutocompleteAddressLevel1\n | AutocompleteAddressLevel2\n | AutocompleteAddressLevel3\n | AutocompleteAddressLevel4\n | AutocompleteCountry\n | AutocompleteCountryName\n | AutocompletePostalCode\n | AutocompleteCreditCardName\n | AutocompleteCreditCardGivenName\n | AutocompleteCreditCardAdditionalName\n | AutocompleteCreditCardFamilyName\n | AutocompleteCreditCardNumber\n | AutocompleteCreditCardExpiration\n | AutocompleteCreditCardExpirationMonth\n | AutocompleteCreditCardExpirationYear\n | AutocompleteCreditCardSecurityCode\n | AutocompleteCreditCardType\n | AutocompleteTransactionCurrency\n | AutocompleteTransactionAmount\n | AutocompleteLanguage\n | AutocompleteBirthday\n | AutocompleteBirthdayDay\n | AutocompleteBirthdayMonth\n | AutocompleteBirthdayYear\n | AutocompleteSex\n | AutocompleteTelephone\n | AutocompleteTelephoneCountryCode\n | AutocompleteTelephoneNational\n | AutocompleteTelephoneAreaCode\n | AutocompleteTelephoneLocal\n | AutocompleteTelephoneLocalPrefix\n | AutocompleteTelephoneLocalSuffix\n | AutocompleteTelephoneExtension\n | AutocompleteIMPP\n | AutocompleteURL\n | AutocompletePhoto\n\nderive instance eqAutocompleteType :: Eq AutocompleteType\nderive instance ordAutocompleteType :: Ord AutocompleteType\n\nrenderAutocompleteType :: AutocompleteType -> String\nrenderAutocompleteType = case _ of\n AutocompleteOff -> \"off\"\n AutocompleteOn -> \"on\"\n AutocompleteName -> \"name\"\n AutocompleteHonorificPrefix -> \"honorific-prefix\"\n AutocompleteGivenName -> \"given-name\"\n AutocompleteAdditionalName -> \"additional-name\"\n AutocompleteFamilyName -> \"family-name\"\n AutocompleteHonorificSuffix -> \"honorific-suffix\"\n AutocompleteNickname -> \"nickname\"\n AutocompleteEmail -> \"email\"\n AutocompleteUsername -> \"username\"\n AutocompleteNewPassword -> \"new-password\"\n AutocompleteCurrentPassword -> \"current-password\"\n AutocompleteOneTimeCode -> \"one-time-code\"\n AutocompleteOrganizationTitle -> \"organization-title\"\n AutocompleteOrganization -> \"organization\"\n AutocompleteStreetAddress -> \"street-address\"\n AutocompleteAddressLine1 -> \"address-line1\"\n AutocompleteAddressLine2 -> \"address-line2\"\n AutocompleteAddressLine3 -> \"address-line3\"\n AutocompleteAddressLevel1 -> \"address-level1\"\n AutocompleteAddressLevel2 -> \"address-level2\"\n AutocompleteAddressLevel3 -> \"address-level3\"\n AutocompleteAddressLevel4 -> \"address-level4\"\n AutocompleteCountry -> \"country\"\n AutocompleteCountryName -> \"country-name\"\n AutocompletePostalCode -> \"postal-code\"\n AutocompleteCreditCardName -> \"cc-name\"\n AutocompleteCreditCardGivenName -> \"cc-given-name\"\n AutocompleteCreditCardAdditionalName -> \"cc-additional-name\"\n AutocompleteCreditCardFamilyName -> \"cc-family-name\"\n AutocompleteCreditCardNumber -> \"cc-number\"\n AutocompleteCreditCardExpiration -> \"cc-exp\"\n AutocompleteCreditCardExpirationMonth -> \"cc-exp-month\"\n AutocompleteCreditCardExpirationYear -> \"cc-exp-year\"\n AutocompleteCreditCardSecurityCode -> \"cc-csc\"\n AutocompleteCreditCardType -> \"cc-type\"\n AutocompleteTransactionCurrency -> \"transaction-currency\"\n AutocompleteTransactionAmount -> \"transaction-amount\"\n AutocompleteLanguage -> \"language\"\n AutocompleteBirthday -> \"bday\"\n AutocompleteBirthdayDay -> \"bday-day\"\n AutocompleteBirthdayMonth -> \"bday-month\"\n AutocompleteBirthdayYear -> \"bday-year\"\n AutocompleteSex -> \"sex\"\n AutocompleteTelephone -> \"tel\"\n AutocompleteTelephoneCountryCode -> \"tel-country-code\"\n AutocompleteTelephoneNational -> \"tel-national\"\n AutocompleteTelephoneAreaCode -> \"telarea-code\"\n AutocompleteTelephoneLocal -> \"tel-local\"\n AutocompleteTelephoneLocalPrefix -> \"tel-local-prefix\"\n AutocompleteTelephoneLocalSuffix -> \"tel-local-suffix\"\n AutocompleteTelephoneExtension -> \"tel-extension\"\n AutocompleteIMPP -> \"impp\"\n AutocompleteURL -> \"url\"\n AutocompletePhoto -> \"photo\"\n", "module DOM.HTML.Indexed.ButtonType where\n\nimport Prelude\n\ndata ButtonType\n = ButtonButton\n | ButtonSubmit\n | ButtonReset\n\nderive instance eqButtonType :: Eq ButtonType\nderive instance ordButtonType :: Ord ButtonType\n\nrenderButtonType :: ButtonType -> String\nrenderButtonType = case _ of\n ButtonButton -> \"button\"\n ButtonSubmit -> \"submit\"\n ButtonReset -> \"reset\"\n", "module Halogen.Query.Input where\n\nimport Prelude\n\nimport Data.Maybe (Maybe)\nimport Data.Newtype (class Newtype)\nimport Web.DOM (Element)\n\nnewtype RefLabel = RefLabel String\n\nderive instance newtypeRefLabel :: Newtype RefLabel _\nderive newtype instance eqRefLabel :: Eq RefLabel\nderive newtype instance ordRefLabel :: Ord RefLabel\n\ndata Input action\n = RefUpdate RefLabel (Maybe Element)\n | Action action\n\nderive instance functorInput :: Functor Input\n", "module Halogen.VDom.Machine\n ( Machine\n , Step'(..)\n , Step\n , mkStep\n , unStep\n , extract\n , step\n , halt\n ) where\n\nimport Prelude\n\nimport Effect.Uncurried (EffectFn1, EffectFn2, mkEffectFn1, mkEffectFn2, runEffectFn1, runEffectFn2)\nimport Unsafe.Coerce (unsafeCoerce)\n\ntype Machine a b = EffectFn1 a (Step a b)\n\ndata Step' a b s = Step b s (EffectFn2 s a (Step a b)) (EffectFn1 s Unit)\n\nforeign import data Step \u2237 Type \u2192 Type \u2192 Type\n\nmkStep \u2237 \u2200 a b s. Step' a b s \u2192 Step a b\nmkStep = unsafeCoerce\n\nunStep :: \u2200 a b r. (\u2200 s. Step' a b s \u2192 r) \u2192 Step a b \u2192 r\nunStep = unsafeCoerce\n\n-- | Returns the output value of a `Step`.\nextract \u2237 \u2200 a b. Step a b \u2192 b\nextract = unStep \\(Step x _ _ _) \u2192 x\n\n-- | Runs the next step.\nstep \u2237 \u2200 a b. EffectFn2 (Step a b) a (Step a b)\nstep = coerce $ mkEffectFn2 \\(Step _ s k _) a \u2192 runEffectFn2 k s a\n where\n coerce \u2237 \u2200 s. EffectFn2 (Step' a b s) a (Step a b) \u2192 EffectFn2 (Step a b) a (Step a b)\n coerce = unsafeCoerce\n\n-- | Runs the finalizer associated with a `Step`\nhalt \u2237 \u2200 a b. EffectFn1 (Step a b) Unit\nhalt = coerce $ mkEffectFn1 \\(Step _ s _ k) \u2192 runEffectFn1 k s\n where\n coerce \u2237 \u2200 s. EffectFn1 (Step' a b s) Unit \u2192 EffectFn1 (Step a b) Unit\n coerce = unsafeCoerce\n", "module Halogen.VDom.Types\n ( VDom(..)\n , renderWidget\n , Graft\n , GraftX(..)\n , graft\n , unGraft\n , runGraft\n , ElemName(..)\n , Namespace(..)\n ) where\n\nimport Prelude\nimport Data.Bifunctor (class Bifunctor, bimap)\nimport Data.Maybe (Maybe)\nimport Data.Newtype (class Newtype)\nimport Data.Tuple (Tuple)\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | The core virtual-dom tree type, where `a` is the type of attributes,\n-- | and `w` is the type of \"widgets\". Widgets are machines that have complete\n-- | control over the lifecycle of some `DOM.Node`.\n-- |\n-- | The `Grafted` constructor and associated machinery enables `bimap`\n-- | fusion using a Coyoneda-like encoding.\ndata VDom a w\n = Text String\n | Elem (Maybe Namespace) ElemName a (Array (VDom a w))\n | Keyed (Maybe Namespace) ElemName a (Array (Tuple String (VDom a w)))\n | Widget w\n | Grafted (Graft a w)\n\ninstance functorVDom \u2237 Functor (VDom a) where\n map _ (Text a) = Text a\n map g (Grafted a) = Grafted (map g a)\n map g a = Grafted (graft (Graft identity g a))\n\ninstance bifunctorVDom \u2237 Bifunctor VDom where\n bimap _ _ (Text a) = Text a\n bimap f g (Grafted a) = Grafted (bimap f g a)\n bimap f g a = Grafted (graft (Graft f g a))\n\n-- | Replaces \"widgets\" in the `VDom` with the ability to turn them into other\n-- | `VDom` nodes.\n-- |\n-- | Using this function will fuse any `Graft`s present in the `VDom`.\nrenderWidget \u2237 \u2200 a b w x. (a \u2192 b) \u2192 (w \u2192 VDom b x) \u2192 VDom a w \u2192 VDom b x\nrenderWidget f g = case _ of\n Text a \u2192 Text a\n Elem ns n a ch \u2192 Elem ns n (f a) (map (renderWidget f g) ch)\n Keyed ns n a ch \u2192 Keyed ns n (f a) (map (map (renderWidget f g)) ch)\n Widget w \u2192 g w\n Grafted gaw \u2192 renderWidget f g (runGraft gaw)\n\nforeign import data Graft \u2237 Type \u2192 Type \u2192 Type\n\ninstance functorGraft \u2237 Functor (Graft a) where\n map g = unGraft \\(Graft f' g' a) \u2192 graft (Graft f' (g <<< g') a)\n\ninstance bifunctorGraft \u2237 Bifunctor Graft where\n bimap f g = unGraft \\(Graft f' g' a) \u2192 graft (Graft (f <<< f') (g <<< g') a)\n\ndata GraftX a a' w w' =\n Graft (a \u2192 a') (w \u2192 w') (VDom a w)\n\ngraft\n \u2237 \u2200 a a' w w'\n . GraftX a a' w w'\n \u2192 Graft a' w'\ngraft = unsafeCoerce\n\nunGraft\n \u2237 \u2200 a' w' r\n . (\u2200 a w. GraftX a a' w w' \u2192 r)\n \u2192 Graft a' w'\n \u2192 r\nunGraft f = f <<< unsafeCoerce\n\nrunGraft\n \u2237 \u2200 a' w'\n . Graft a' w'\n \u2192 VDom a' w'\nrunGraft =\n unGraft \\(Graft fa fw v) \u2192\n let\n go (Text s) = Text s\n go (Elem ns n a ch) = Elem ns n (fa a) (map go ch)\n go (Keyed ns n a ch) = Keyed ns n (fa a) (map (map go) ch)\n go (Widget w) = Widget (fw w)\n go (Grafted g) = Grafted (bimap fa fw g)\n in\n go v\n\nnewtype ElemName = ElemName String\n\nderive instance newtypeElemName \u2237 Newtype ElemName _\nderive newtype instance eqElemName \u2237 Eq ElemName\nderive newtype instance ordElemName \u2237 Ord ElemName\n\nnewtype Namespace = Namespace String\n\nderive instance newtypeNamespace \u2237 Newtype Namespace _\nderive newtype instance eqNamespace \u2237 Eq Namespace\nderive newtype instance ordNamespace \u2237 Ord Namespace\n", "\"use strict\";\n\nexport function unsafeGetAny(key, obj) {\n return obj[key];\n}\n\nexport function unsafeHasAny(key, obj) {\n return obj.hasOwnProperty(key);\n}\n\nexport function unsafeSetAny(key, val, obj) {\n obj[key] = val;\n}\n\nexport function unsafeDeleteAny(key, obj) {\n delete obj[key];\n}\n\nexport function forE(a, f) {\n var b = [];\n for (var i = 0; i < a.length; i++) {\n b.push(f(i, a[i]));\n }\n return b;\n}\n\nexport function forEachE(a, f) {\n for (var i = 0; i < a.length; i++) {\n f(a[i]);\n }\n}\n\nexport function forInE(o, f) {\n var ks = Object.keys(o);\n for (var i = 0; i < ks.length; i++) {\n var k = ks[i];\n f(k, o[k]);\n }\n}\n\nexport function replicateE(n, f) {\n for (var i = 0; i < n; i++) {\n f();\n }\n}\n\nexport function diffWithIxE(a1, a2, f1, f2, f3) {\n var a3 = [];\n var l1 = a1.length;\n var l2 = a2.length;\n var i = 0;\n while (1) {\n if (i < l1) {\n if (i < l2) {\n a3.push(f1(i, a1[i], a2[i]));\n } else {\n f2(i, a1[i]);\n }\n } else if (i < l2) {\n a3.push(f3(i, a2[i]));\n } else {\n break;\n }\n i++;\n }\n return a3;\n}\n\nexport function strMapWithIxE(as, fk, f) {\n var o = {};\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n var k = fk(a);\n o[k] = f(k, i, a);\n }\n return o;\n}\n\nexport function diffWithKeyAndIxE(o1, as, fk, f1, f2, f3) {\n var o2 = {};\n for (var i = 0; i < as.length; i++) {\n var a = as[i];\n var k = fk(a);\n if (o1.hasOwnProperty(k)) {\n o2[k] = f1(k, i, o1[k], a);\n } else {\n o2[k] = f3(k, i, a);\n }\n }\n for (var k in o1) {\n if (k in o2) {\n continue;\n }\n f2(k, o1[k]);\n }\n return o2;\n}\n\nexport function refEq(a, b) {\n return a === b;\n}\n\nexport function createTextNode(s, doc) {\n return doc.createTextNode(s);\n}\n\nexport function setTextContent(s, n) {\n n.textContent = s;\n}\n\nexport function createElement(ns, name, doc) {\n if (ns != null) {\n return doc.createElementNS(ns, name);\n } else {\n return doc.createElement(name)\n }\n}\n\nexport function insertChildIx(i, a, b) {\n var n = b.childNodes.item(i) || null;\n if (n !== a) {\n b.insertBefore(a, n);\n }\n}\n\nexport function removeChild(a, b) {\n if (b && a.parentNode === b) {\n b.removeChild(a);\n }\n}\n\nexport function parentNode(a) {\n return a.parentNode;\n}\n\nexport function setAttribute(ns, attr, val, el) {\n if (ns != null) {\n el.setAttributeNS(ns, attr, val);\n } else {\n el.setAttribute(attr, val);\n }\n}\n\nexport function removeAttribute(ns, attr, el) {\n if (ns != null) {\n el.removeAttributeNS(ns, attr);\n } else {\n el.removeAttribute(attr);\n }\n}\n\nexport function hasAttribute(ns, attr, el) {\n if (ns != null) {\n return el.hasAttributeNS(ns, attr);\n } else {\n return el.hasAttribute(attr);\n }\n}\n\nexport function addEventListener(ev, listener, el) {\n el.addEventListener(ev, listener, false);\n}\n\nexport function removeEventListener(ev, listener, el) {\n el.removeEventListener(ev, listener, false);\n}\n\nexport var jsUndefined = void 0;\n", "module Halogen.VDom.Util\n ( newMutMap\n , pokeMutMap\n , deleteMutMap\n , unsafeFreeze\n , unsafeLookup\n , unsafeGetAny\n , unsafeHasAny\n , unsafeSetAny\n , unsafeDeleteAny\n , forE\n , forEachE\n , forInE\n , replicateE\n , diffWithIxE\n , diffWithKeyAndIxE\n , strMapWithIxE\n , refEq\n , createTextNode\n , setTextContent\n , createElement\n , insertChildIx\n , removeChild\n , parentNode\n , setAttribute\n , removeAttribute\n , hasAttribute\n , addEventListener\n , removeEventListener\n , JsUndefined\n , jsUndefined\n ) where\n\nimport Prelude\n\nimport Data.Function.Uncurried as Fn\nimport Data.Nullable (Nullable)\nimport Effect (Effect)\nimport Effect.Uncurried as EFn\nimport Foreign.Object (Object)\nimport Foreign.Object as Object\nimport Foreign.Object.ST (STObject)\nimport Foreign.Object.ST as STObject\nimport Halogen.VDom.Types (Namespace, ElemName)\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM.Document (Document) as DOM\nimport Web.DOM.Element (Element) as DOM\nimport Web.DOM.Node (Node) as DOM\nimport Web.Event.EventTarget (EventListener) as DOM\n\nnewMutMap \u2237 \u2200 r a. Effect (STObject r a)\nnewMutMap = unsafeCoerce STObject.new\n\npokeMutMap \u2237 \u2200 r a. EFn.EffectFn3 String a (STObject r a) Unit\npokeMutMap = unsafeSetAny\n\ndeleteMutMap \u2237 \u2200 r a. EFn.EffectFn2 String (STObject r a) Unit\ndeleteMutMap = unsafeDeleteAny\n\nunsafeFreeze \u2237 \u2200 r a. STObject r a \u2192 Object a\nunsafeFreeze = unsafeCoerce\n\nunsafeLookup \u2237 \u2200 a. Fn.Fn2 String (Object a) a\nunsafeLookup = unsafeGetAny\n\nforeign import unsafeGetAny\n \u2237 \u2200 a b. Fn.Fn2 String a b\n\nforeign import unsafeHasAny\n \u2237 \u2200 a. Fn.Fn2 String a Boolean\n\nforeign import unsafeSetAny \u2237 \u2200 a b. EFn.EffectFn3 String a b Unit\n\nforeign import unsafeDeleteAny\n \u2237 \u2200 a. EFn.EffectFn2 String a Unit\n\nforeign import forE\n \u2237 \u2200 a b\n . EFn.EffectFn2\n (Array a)\n (EFn.EffectFn2 Int a b)\n (Array b)\n\nforeign import forEachE\n \u2237 \u2200 a\n . EFn.EffectFn2\n (Array a)\n (EFn.EffectFn1 a Unit)\n Unit\n\nforeign import forInE\n \u2237 \u2200 a\n . EFn.EffectFn2\n (Object.Object a)\n (EFn.EffectFn2 String a Unit)\n Unit\n\nforeign import replicateE\n \u2237 \u2200 a\n . EFn.EffectFn2\n Int\n (Effect a)\n Unit\n\nforeign import diffWithIxE\n \u2237 \u2200 b c d\n . EFn.EffectFn5\n (Array b)\n (Array c)\n (EFn.EffectFn3 Int b c d)\n (EFn.EffectFn2 Int b Unit)\n (EFn.EffectFn2 Int c d)\n (Array d)\n\nforeign import diffWithKeyAndIxE\n \u2237 \u2200 a b c d\n . EFn.EffectFn6\n (Object.Object a)\n (Array b)\n (b \u2192 String)\n (EFn.EffectFn4 String Int a b c)\n (EFn.EffectFn2 String a d)\n (EFn.EffectFn3 String Int b c)\n (Object.Object c)\n\nforeign import strMapWithIxE\n \u2237 \u2200 a b\n . EFn.EffectFn3\n (Array a)\n (a \u2192 String)\n (EFn.EffectFn3 String Int a b)\n (Object.Object b)\n\nforeign import refEq\n \u2237 \u2200 a b. Fn.Fn2 a b Boolean\n\nforeign import createTextNode\n \u2237 EFn.EffectFn2 String DOM.Document DOM.Node\n\nforeign import setTextContent\n \u2237 EFn.EffectFn2 String DOM.Node Unit\n\nforeign import createElement\n \u2237 EFn.EffectFn3 (Nullable Namespace) ElemName DOM.Document DOM.Element\n\nforeign import insertChildIx\n \u2237 EFn.EffectFn3 Int DOM.Node DOM.Node Unit\n\nforeign import removeChild\n \u2237 EFn.EffectFn2 DOM.Node DOM.Node Unit\n\nforeign import parentNode\n \u2237 EFn.EffectFn1 DOM.Node DOM.Node\n\nforeign import setAttribute\n \u2237 EFn.EffectFn4 (Nullable Namespace) String String DOM.Element Unit\n\nforeign import removeAttribute\n \u2237 EFn.EffectFn3 (Nullable Namespace) String DOM.Element Unit\n\nforeign import hasAttribute\n \u2237 EFn.EffectFn3 (Nullable Namespace) String DOM.Element Boolean\n\nforeign import addEventListener\n \u2237 EFn.EffectFn3 String DOM.EventListener DOM.Element Unit\n\nforeign import removeEventListener\n \u2237 EFn.EffectFn3 String DOM.EventListener DOM.Element Unit\n\nforeign import data JsUndefined \u2237 Type\n\nforeign import jsUndefined \u2237 JsUndefined\n", "var getProp = function (name) {\n return function (doctype) {\n return doctype[name];\n };\n};\n\nexport const _namespaceURI = getProp(\"namespaceURI\");\nexport const _prefix = getProp(\"prefix\");\nexport const localName = getProp(\"localName\");\nexport const tagName = getProp(\"tagName\");\n\nexport function id(node) {\n return function () {\n return node.id;\n };\n}\n\nexport function setId(id) {\n return function (node) {\n return function () {\n node.id = id;\n };\n };\n}\n\nexport function className(node) {\n return function () {\n return node.className;\n };\n}\n\nexport function classList(element) {\n return function () {\n return element.classList;\n };\n}\n\nexport function setClassName(className) {\n return function (node) {\n return function () {\n node.className = className;\n };\n };\n}\n\nexport function getElementsByTagName(localName) {\n return function (doc) {\n return function () {\n return doc.getElementsByTagName(localName);\n };\n };\n}\n\nexport function _getElementsByTagNameNS(ns) {\n return function (localName) {\n return function (doc) {\n return function () {\n return doc.getElementsByTagNameNS(ns, localName);\n };\n };\n };\n}\n\nexport function getElementsByClassName(classNames) {\n return function (doc) {\n return function () {\n return doc.getElementsByClassName(classNames);\n };\n };\n}\n\nexport function setAttribute(name) {\n return function (value) {\n return function (element) {\n return function () {\n element.setAttribute(name, value);\n };\n };\n };\n}\n\nexport function _getAttribute(name) {\n return function (element) {\n return function () {\n return element.getAttribute(name);\n };\n };\n}\n\nexport function hasAttribute(name) {\n return function (element) {\n return function () {\n return element.hasAttribute(name);\n };\n };\n}\n\nexport function removeAttribute(name) {\n return function (element) {\n return function () {\n element.removeAttribute(name);\n };\n };\n}\n\nexport function matches(selector) {\n return function(element) {\n return function () {\n return element.matches(selector);\n };\n };\n}\n\nexport function _closest(selector) {\n return function(element) {\n return function () {\n return element.closest(selector);\n };\n };\n}\n\n// - CSSOM ---------------------------------------------------------------------\n\nexport function scrollTop(node) {\n return function () {\n return node.scrollTop;\n };\n}\n\nexport function setScrollTop(scrollTop) {\n return function (node) {\n return function () {\n node.scrollTop = scrollTop;\n };\n };\n}\n\nexport function scrollLeft(node) {\n return function () {\n return node.scrollLeft;\n };\n}\n\nexport function setScrollLeft(scrollLeft) {\n return function (node) {\n return function () {\n node.scrollLeft = scrollLeft;\n };\n };\n}\n\nexport function scrollWidth(el) {\n return function () {\n return el.scrollWidth;\n };\n}\n\nexport function scrollHeight(el) {\n return function () {\n return el.scrollHeight;\n };\n}\n\nexport function clientTop(el) {\n return function () {\n return el.clientTop;\n };\n}\n\nexport function clientLeft(el) {\n return function () {\n return el.clientLeft;\n };\n}\n\nexport function clientWidth(el) {\n return function () {\n return el.clientWidth;\n };\n}\n\nexport function clientHeight(el) {\n return function () {\n return el.clientHeight;\n };\n}\n\nexport function getBoundingClientRect(el) {\n return function () {\n var rect = el.getBoundingClientRect();\n return {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.width,\n height: rect.height,\n x: rect.x,\n y: rect.y\n };\n };\n}\n\nexport function _attachShadow(props) {\n return function (el) {\n return function() {\n return el.attachShadow(props);\n };\n };\n}\n", "var getEffProp = function (name) {\n return function (node) {\n return function () {\n return node[name];\n };\n };\n};\n\nexport const children = getEffProp(\"children\");\nexport const _firstElementChild = getEffProp(\"firstElementChild\");\nexport const _lastElementChild = getEffProp(\"lastElementChild\");\nexport const childElementCount = getEffProp(\"childElementCount\");\n\nexport function _querySelector(selector) {\n return function (node) {\n return function () {\n return node.querySelector(selector);\n };\n };\n}\n\nexport function querySelectorAll(selector) {\n return function (node) {\n return function () {\n return node.querySelectorAll(selector);\n };\n };\n}\n", "module Web.DOM.ParentNode\n ( ParentNode\n , children\n , firstElementChild\n , lastElementChild\n , childElementCount\n , QuerySelector(..)\n , querySelector\n , querySelectorAll\n ) where\n\nimport Prelude\n\nimport Data.Maybe (Maybe)\nimport Data.Newtype (class Newtype)\nimport Data.Nullable (Nullable, toMaybe)\nimport Effect (Effect)\nimport Web.DOM.Internal.Types (Element)\nimport Web.DOM.HTMLCollection (HTMLCollection)\nimport Web.DOM.NodeList (NodeList)\n\nforeign import data ParentNode :: Type\n\n-- | The child elements for the node.\nforeign import children :: ParentNode -> Effect HTMLCollection\n\n-- | The first child that is an element, or Nothing if no such element exists.\nfirstElementChild :: ParentNode -> Effect (Maybe Element)\nfirstElementChild = map toMaybe <<< _firstElementChild\n\nforeign import _firstElementChild :: ParentNode -> Effect (Nullable Element)\n\n-- | The last child that is an element, or Nothing if no such element exists.\nlastElementChild :: ParentNode -> Effect (Maybe Element)\nlastElementChild = map toMaybe <<< _lastElementChild\n\nforeign import _lastElementChild :: ParentNode -> Effect (Nullable Element)\n\n-- | The number of child elements.\nforeign import childElementCount :: ParentNode -> Effect Int\n\nnewtype QuerySelector = QuerySelector String\n\nderive newtype instance eqQuerySelector :: Eq QuerySelector\nderive newtype instance ordQuerySelector :: Ord QuerySelector\nderive instance newtypeQuerySelector :: Newtype QuerySelector _\n\n-- | Finds the first child that is an element that matches the selector(s), or\n-- | Nothing if no such element exists.\nquerySelector :: QuerySelector -> ParentNode -> Effect (Maybe Element)\nquerySelector qs = map toMaybe <<< _querySelector qs\n\nforeign import _querySelector :: QuerySelector -> ParentNode -> Effect (Nullable Element)\n\n-- | Finds all the child elements that matches the selector(s).\nforeign import querySelectorAll :: QuerySelector -> ParentNode -> Effect NodeList\n", "module Web.DOM.Element\n ( module Exports\n , fromNode\n , fromChildNode\n , fromNonDocumentTypeChildNode\n , fromParentNode\n , fromEventTarget\n , toNode\n , toChildNode\n , toNonDocumentTypeChildNode\n , toParentNode\n , toEventTarget\n , namespaceURI\n , prefix\n , localName\n , tagName\n , id\n , setId\n , className\n , classList\n , setClassName\n , getElementsByTagName\n , getElementsByTagNameNS\n , getElementsByClassName\n , setAttribute\n , getAttribute\n , hasAttribute\n , removeAttribute\n , matches\n , closest\n , scrollTop\n , setScrollTop\n , scrollLeft\n , setScrollLeft\n , scrollWidth\n , scrollHeight\n , clientTop\n , clientLeft\n , clientWidth\n , clientHeight\n , getBoundingClientRect\n , DOMRect\n , ShadowRootInit\n , attachShadow\n ) where\n\nimport Prelude\n\nimport Data.Maybe (Maybe)\nimport Data.Nullable (Nullable, toMaybe, toNullable)\nimport Effect (Effect)\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM.ChildNode (ChildNode)\nimport Web.DOM.DOMTokenList (DOMTokenList)\nimport Web.DOM.Internal.Types (Element) as Exports\nimport Web.DOM.Internal.Types (Element, HTMLCollection, Node)\nimport Web.DOM.NonDocumentTypeChildNode (NonDocumentTypeChildNode)\nimport Web.DOM.ParentNode (QuerySelector) as Exports\nimport Web.DOM.ParentNode (ParentNode, QuerySelector)\nimport Web.DOM.ShadowRoot (ShadowRoot, ShadowRootMode)\nimport Web.Event.EventTarget (EventTarget)\nimport Web.Internal.FFI (unsafeReadProtoTagged)\n\nfromNode :: Node -> Maybe Element\nfromNode = unsafeReadProtoTagged \"Element\"\n\nfromChildNode :: ChildNode -> Maybe Element\nfromChildNode = unsafeReadProtoTagged \"Element\"\n\nfromNonDocumentTypeChildNode :: NonDocumentTypeChildNode -> Maybe Element\nfromNonDocumentTypeChildNode = unsafeReadProtoTagged \"Element\"\n\nfromParentNode :: ParentNode -> Maybe Element\nfromParentNode = unsafeReadProtoTagged \"Element\"\n\nfromEventTarget :: EventTarget -> Maybe Element\nfromEventTarget = unsafeReadProtoTagged \"Element\"\n\ntoNode :: Element -> Node\ntoNode = unsafeCoerce\n\ntoChildNode :: Element -> ChildNode\ntoChildNode = unsafeCoerce\n\ntoNonDocumentTypeChildNode :: Element -> NonDocumentTypeChildNode\ntoNonDocumentTypeChildNode = unsafeCoerce\n\ntoParentNode :: Element -> ParentNode\ntoParentNode = unsafeCoerce\n\ntoEventTarget :: Element -> EventTarget\ntoEventTarget = unsafeCoerce\n\nnamespaceURI :: Element -> Maybe String\nnamespaceURI = toMaybe <<< _namespaceURI\n\nprefix :: Element -> Maybe String\nprefix = toMaybe <<< _prefix\n\nforeign import _namespaceURI :: Element -> Nullable String\nforeign import _prefix :: Element -> Nullable String\nforeign import localName :: Element -> String\nforeign import tagName :: Element -> String\n\nforeign import id :: Element -> Effect String\nforeign import setId :: String -> Element -> Effect Unit\nforeign import className :: Element -> Effect String\nforeign import classList :: Element -> Effect DOMTokenList\nforeign import setClassName :: String -> Element -> Effect Unit\n\nforeign import getElementsByTagName :: String -> Element -> Effect HTMLCollection\n\ngetElementsByTagNameNS :: Maybe String -> String -> Element -> Effect HTMLCollection\ngetElementsByTagNameNS = _getElementsByTagNameNS <<< toNullable\n\nforeign import _getElementsByTagNameNS :: Nullable String -> String -> Element -> Effect HTMLCollection\n\nforeign import getElementsByClassName :: String -> Element -> Effect HTMLCollection\n\nforeign import setAttribute :: String -> String -> Element -> Effect Unit\n\ngetAttribute :: String -> Element -> Effect (Maybe String)\ngetAttribute attr = map toMaybe <<< _getAttribute attr\n\nforeign import _getAttribute :: String -> Element -> Effect (Nullable String)\nforeign import hasAttribute :: String -> Element -> Effect Boolean\nforeign import removeAttribute :: String -> Element -> Effect Unit\n\nforeign import matches :: QuerySelector -> Element -> Effect Boolean\n\nclosest :: QuerySelector -> Element -> Effect (Maybe Element)\nclosest qs = map toMaybe <<< _closest qs\n\nforeign import _closest :: QuerySelector -> Element -> Effect (Nullable Element)\n\nforeign import scrollTop :: Element -> Effect Number\nforeign import setScrollTop :: Number -> Element -> Effect Unit\n\nforeign import scrollLeft :: Element -> Effect Number\nforeign import setScrollLeft :: Number -> Element -> Effect Unit\n\nforeign import scrollWidth :: Element -> Effect Number\nforeign import scrollHeight :: Element -> Effect Number\nforeign import clientTop :: Element -> Effect Number\nforeign import clientLeft :: Element -> Effect Number\nforeign import clientWidth :: Element -> Effect Number\nforeign import clientHeight :: Element -> Effect Number\n\ntype DOMRect =\n { top :: Number\n , right :: Number\n , bottom :: Number\n , left :: Number\n , width :: Number\n , height :: Number\n , x :: Number\n , y :: Number\n }\n\nforeign import getBoundingClientRect :: Element -> Effect DOMRect\n\ntype ShadowRootInit = {\n mode :: ShadowRootMode,\n delegatesFocus :: Boolean\n}\n\nattachShadow :: ShadowRootInit -> Element -> Effect ShadowRoot\nattachShadow = _attachShadow <<< initToProps\n\ntype ShadowRootProps = {\n mode :: String,\n delegatesFocus :: Boolean\n}\n\ninitToProps :: ShadowRootInit -> ShadowRootProps\ninitToProps init = {\n mode: show init.mode,\n delegatesFocus: init.delegatesFocus\n}\n\nforeign import _attachShadow :: ShadowRootProps -> Element -> Effect ShadowRoot\n", "module Halogen.VDom.DOM\n ( VDomSpec(..)\n , buildVDom\n , buildText\n , buildElem\n , buildKeyed\n , buildWidget\n ) where\n\nimport Prelude\n\nimport Data.Array as Array\nimport Data.Function.Uncurried as Fn\nimport Data.Maybe (Maybe(..))\nimport Data.Nullable (toNullable)\nimport Data.Tuple (Tuple(..), fst)\nimport Effect.Uncurried as EFn\nimport Foreign.Object as Object\nimport Halogen.VDom.Machine (Machine, Step, Step'(..), extract, halt, mkStep, step, unStep)\nimport Halogen.VDom.Machine as Machine\nimport Halogen.VDom.Types (ElemName(..), Namespace(..), VDom(..), runGraft)\nimport Halogen.VDom.Util as Util\nimport Web.DOM.Document (Document) as DOM\nimport Web.DOM.Element (Element) as DOM\nimport Web.DOM.Element as DOMElement\nimport Web.DOM.Node (Node) as DOM\n\ntype VDomMachine a w = Machine (VDom a w) DOM.Node\n\ntype VDomStep a w = Step (VDom a w) DOM.Node\n\ntype VDomInit i a w = EFn.EffectFn1 i (VDomStep a w)\n\ntype VDomBuilder i a w = EFn.EffectFn3 (VDomSpec a w) (VDomMachine a w) i (VDomStep a w)\n\ntype VDomBuilder4 i j k l a w = EFn.EffectFn6 (VDomSpec a w) (VDomMachine a w) i j k l (VDomStep a w)\n\n-- | Widget machines recursively reference the configured spec to potentially\n-- | enable recursive trees of Widgets.\nnewtype VDomSpec a w = VDomSpec\n { buildWidget \u2237 VDomSpec a w \u2192 Machine w DOM.Node\n , buildAttributes \u2237 DOM.Element \u2192 Machine a Unit\n , document \u2237 DOM.Document\n }\n\n-- | Starts an initial `VDom` machine by providing a `VDomSpec`.\n-- |\n-- | ```purescript\n-- | main = do\n-- | machine1 \u2190 buildVDom spec vdomTree1\n-- | machine2 \u2190 Machine.step machine1 vdomTree2\n-- | machine3 \u2190 Machine.step machine2 vdomTree3\n-- | ...\n-- | ````\nbuildVDom \u2237 \u2200 a w. VDomSpec a w \u2192 VDomMachine a w\nbuildVDom spec = build\n where\n build = EFn.mkEffectFn1 case _ of\n Text s \u2192 EFn.runEffectFn3 buildText spec build s\n Elem ns n a ch \u2192 EFn.runEffectFn6 buildElem spec build ns n a ch\n Keyed ns n a ch \u2192 EFn.runEffectFn6 buildKeyed spec build ns n a ch\n Widget w \u2192 EFn.runEffectFn3 buildWidget spec build w\n Grafted g \u2192 EFn.runEffectFn1 build (runGraft g)\n\ntype TextState a w =\n { build \u2237 VDomMachine a w\n , node \u2237 DOM.Node\n , value \u2237 String\n }\n\nbuildText \u2237 \u2200 a w. VDomBuilder String a w\nbuildText = EFn.mkEffectFn3 \\(VDomSpec spec) build s \u2192 do\n node \u2190 EFn.runEffectFn2 Util.createTextNode s spec.document\n let state = { build, node, value: s }\n pure $ mkStep $ Step node state patchText haltText\n\npatchText \u2237 \u2200 a w. EFn.EffectFn2 (TextState a w) (VDom a w) (VDomStep a w)\npatchText = EFn.mkEffectFn2 \\state vdom \u2192 do\n let { build, node, value: value1 } = state\n case vdom of\n Grafted g \u2192\n EFn.runEffectFn2 patchText state (runGraft g)\n Text value2\n | value1 == value2 \u2192\n pure $ mkStep $ Step node state patchText haltText\n | otherwise \u2192 do\n let nextState = { build, node, value: value2 }\n EFn.runEffectFn2 Util.setTextContent value2 node\n pure $ mkStep $ Step node nextState patchText haltText\n _ \u2192 do\n EFn.runEffectFn1 haltText state\n EFn.runEffectFn1 build vdom\n\nhaltText \u2237 \u2200 a w. EFn.EffectFn1 (TextState a w) Unit\nhaltText = EFn.mkEffectFn1 \\{ node } \u2192 do\n parent \u2190 EFn.runEffectFn1 Util.parentNode node\n EFn.runEffectFn2 Util.removeChild node parent\n\ntype ElemState a w =\n { build \u2237 VDomMachine a w\n , node \u2237 DOM.Node\n , attrs \u2237 Step a Unit\n , ns \u2237 Maybe Namespace\n , name \u2237 ElemName\n , children \u2237 Array (VDomStep a w)\n }\n\nbuildElem \u2237 \u2200 a w. VDomBuilder4 (Maybe Namespace) ElemName a (Array (VDom a w)) a w\nbuildElem = EFn.mkEffectFn6 \\(VDomSpec spec) build ns1 name1 as1 ch1 \u2192 do\n el \u2190 EFn.runEffectFn3 Util.createElement (toNullable ns1) name1 spec.document\n let\n node = DOMElement.toNode el\n onChild = EFn.mkEffectFn2 \\ix child \u2192 do\n res \u2190 EFn.runEffectFn1 build child\n EFn.runEffectFn3 Util.insertChildIx ix (extract res) node\n pure res\n children \u2190 EFn.runEffectFn2 Util.forE ch1 onChild\n attrs \u2190 EFn.runEffectFn1 (spec.buildAttributes el) as1\n let\n state =\n { build\n , node\n , attrs\n , ns: ns1\n , name: name1\n , children\n }\n pure $ mkStep $ Step node state patchElem haltElem\n\npatchElem \u2237 \u2200 a w. EFn.EffectFn2 (ElemState a w) (VDom a w) (VDomStep a w)\npatchElem = EFn.mkEffectFn2 \\state vdom \u2192 do\n let { build, node, attrs, ns: ns1, name: name1, children: ch1 } = state\n case vdom of\n Grafted g \u2192\n EFn.runEffectFn2 patchElem state (runGraft g)\n Elem ns2 name2 as2 ch2 | Fn.runFn4 eqElemSpec ns1 name1 ns2 name2 \u2192 do\n case Array.length ch1, Array.length ch2 of\n 0, 0 \u2192 do\n attrs2 \u2190 EFn.runEffectFn2 step attrs as2\n let\n nextState =\n { build\n , node\n , attrs: attrs2\n , ns: ns2\n , name: name2\n , children: ch1\n }\n pure $ mkStep $ Step node nextState patchElem haltElem\n _, _ \u2192 do\n let\n onThese = EFn.mkEffectFn3 \\ix s v \u2192 do\n res \u2190 EFn.runEffectFn2 step s v\n EFn.runEffectFn3 Util.insertChildIx ix (extract res) node\n pure res\n onThis = EFn.mkEffectFn2 \\_ s \u2192 EFn.runEffectFn1 halt s\n onThat = EFn.mkEffectFn2 \\ix v \u2192 do\n res \u2190 EFn.runEffectFn1 build v\n EFn.runEffectFn3 Util.insertChildIx ix (extract res) node\n pure res\n children2 \u2190 EFn.runEffectFn5 Util.diffWithIxE ch1 ch2 onThese onThis onThat\n attrs2 \u2190 EFn.runEffectFn2 step attrs as2\n let\n nextState =\n { build\n , node\n , attrs: attrs2\n , ns: ns2\n , name: name2\n , children: children2\n }\n pure $ mkStep $ Step node nextState patchElem haltElem\n _ \u2192 do\n EFn.runEffectFn1 haltElem state\n EFn.runEffectFn1 build vdom\n\nhaltElem \u2237 \u2200 a w. EFn.EffectFn1 (ElemState a w) Unit\nhaltElem = EFn.mkEffectFn1 \\{ node, attrs, children } \u2192 do\n parent \u2190 EFn.runEffectFn1 Util.parentNode node\n EFn.runEffectFn2 Util.removeChild node parent\n EFn.runEffectFn2 Util.forEachE children halt\n EFn.runEffectFn1 halt attrs\n\ntype KeyedState a w =\n { build \u2237 VDomMachine a w\n , node \u2237 DOM.Node\n , attrs \u2237 Step a Unit\n , ns \u2237 Maybe Namespace\n , name \u2237 ElemName\n , children \u2237 Object.Object (VDomStep a w)\n , length \u2237 Int\n }\n\nbuildKeyed \u2237 \u2200 a w. VDomBuilder4 (Maybe Namespace) ElemName a (Array (Tuple String (VDom a w))) a w\nbuildKeyed = EFn.mkEffectFn6 \\(VDomSpec spec) build ns1 name1 as1 ch1 \u2192 do\n el \u2190 EFn.runEffectFn3 Util.createElement (toNullable ns1) name1 spec.document\n let\n node = DOMElement.toNode el\n onChild = EFn.mkEffectFn3 \\_ ix (Tuple _ vdom) \u2192 do\n res \u2190 EFn.runEffectFn1 build vdom\n EFn.runEffectFn3 Util.insertChildIx ix (extract res) node\n pure res\n children \u2190 EFn.runEffectFn3 Util.strMapWithIxE ch1 fst onChild\n attrs \u2190 EFn.runEffectFn1 (spec.buildAttributes el) as1\n let\n state =\n { build\n , node\n , attrs\n , ns: ns1\n , name: name1\n , children\n , length: Array.length ch1\n }\n pure $ mkStep $ Step node state patchKeyed haltKeyed\n\npatchKeyed \u2237 \u2200 a w. EFn.EffectFn2 (KeyedState a w) (VDom a w) (VDomStep a w)\npatchKeyed = EFn.mkEffectFn2 \\state vdom \u2192 do\n let { build, node, attrs, ns: ns1, name: name1, children: ch1, length: len1 } = state\n case vdom of\n Grafted g \u2192\n EFn.runEffectFn2 patchKeyed state (runGraft g)\n Keyed ns2 name2 as2 ch2 | Fn.runFn4 eqElemSpec ns1 name1 ns2 name2 \u2192\n case len1, Array.length ch2 of\n 0, 0 \u2192 do\n attrs2 \u2190 EFn.runEffectFn2 Machine.step attrs as2\n let\n nextState =\n { build\n , node\n , attrs: attrs2\n , ns: ns2\n , name: name2\n , children: ch1\n , length: 0\n }\n pure $ mkStep $ Step node nextState patchKeyed haltKeyed\n _, len2 \u2192 do\n let\n onThese = EFn.mkEffectFn4 \\_ ix' s (Tuple _ v) \u2192 do\n res \u2190 EFn.runEffectFn2 step s v\n EFn.runEffectFn3 Util.insertChildIx ix' (extract res) node\n pure res\n onThis = EFn.mkEffectFn2 \\_ s \u2192 EFn.runEffectFn1 halt s\n onThat = EFn.mkEffectFn3 \\_ ix (Tuple _ v) \u2192 do\n res \u2190 EFn.runEffectFn1 build v\n EFn.runEffectFn3 Util.insertChildIx ix (extract res) node\n pure res\n children2 \u2190 EFn.runEffectFn6 Util.diffWithKeyAndIxE ch1 ch2 fst onThese onThis onThat\n attrs2 \u2190 EFn.runEffectFn2 step attrs as2\n let\n nextState =\n { build\n , node\n , attrs: attrs2\n , ns: ns2\n , name: name2\n , children: children2\n , length: len2\n }\n pure $ mkStep $ Step node nextState patchKeyed haltKeyed\n _ \u2192 do\n EFn.runEffectFn1 haltKeyed state\n EFn.runEffectFn1 build vdom\n\nhaltKeyed \u2237 \u2200 a w. EFn.EffectFn1 (KeyedState a w) Unit\nhaltKeyed = EFn.mkEffectFn1 \\{ node, attrs, children } \u2192 do\n parent \u2190 EFn.runEffectFn1 Util.parentNode node\n EFn.runEffectFn2 Util.removeChild node parent\n EFn.runEffectFn2 Util.forInE children (EFn.mkEffectFn2 \\_ s \u2192 EFn.runEffectFn1 halt s)\n EFn.runEffectFn1 halt attrs\n\ntype WidgetState a w =\n { build \u2237 VDomMachine a w\n , widget \u2237 Step w DOM.Node\n }\n\nbuildWidget \u2237 \u2200 a w. VDomBuilder w a w\nbuildWidget = EFn.mkEffectFn3 \\(VDomSpec spec) build w \u2192 do\n res \u2190 EFn.runEffectFn1 (spec.buildWidget (VDomSpec spec)) w\n let\n res' = res # unStep \\(Step n _ _ _) \u2192\n mkStep $ Step n { build, widget: res } patchWidget haltWidget\n pure res'\n\npatchWidget \u2237 \u2200 a w. EFn.EffectFn2 (WidgetState a w) (VDom a w) (VDomStep a w)\npatchWidget = EFn.mkEffectFn2 \\state vdom \u2192 do\n let { build, widget } = state\n case vdom of\n Grafted g \u2192\n EFn.runEffectFn2 patchWidget state (runGraft g)\n Widget w \u2192 do\n res \u2190 EFn.runEffectFn2 step widget w\n let\n res' = res # unStep \\(Step n _ _ _) \u2192\n mkStep $ Step n { build, widget: res } patchWidget haltWidget\n pure res'\n _ \u2192 do\n EFn.runEffectFn1 haltWidget state\n EFn.runEffectFn1 build vdom\n\nhaltWidget \u2237 forall a w. EFn.EffectFn1 (WidgetState a w) Unit\nhaltWidget = EFn.mkEffectFn1 \\{ widget } \u2192 do\n EFn.runEffectFn1 halt widget\n\neqElemSpec \u2237 Fn.Fn4 (Maybe Namespace) ElemName (Maybe Namespace) ElemName Boolean\neqElemSpec = Fn.mkFn4 \\ns1 (ElemName name1) ns2 (ElemName name2) \u2192\n if name1 == name2\n then case ns1, ns2 of\n Just (Namespace ns1'), Just (Namespace ns2') | ns1' == ns2' \u2192 true\n Nothing, Nothing \u2192 true\n _, _ \u2192 false\n else false\n", "export function eventListener(fn) {\n return function () {\n return function (event) {\n return fn(event)();\n };\n };\n}\n\nexport function addEventListenerWithOptions(type) {\n return function (listener) {\n return function (options) {\n return function (target) {\n return function () {\n return target.addEventListener(type, listener, options);\n };\n };\n };\n };\n}\n\nexport function addEventListener(type) {\n return function (listener) {\n return function (useCapture) {\n return function (target) {\n return function () {\n return target.addEventListener(type, listener, useCapture);\n };\n };\n };\n };\n}\n\nexport function removeEventListener(type) {\n return function (listener) {\n return function (useCapture) {\n return function (target) {\n return function () {\n return target.removeEventListener(type, listener, useCapture);\n };\n };\n };\n };\n}\n\nexport function dispatchEvent(event) {\n return function (target) {\n return function () {\n return target.dispatchEvent(event);\n };\n };\n}\n", "module Halogen.VDom.DOM.Prop\n ( Prop(..)\n , ElemRef(..)\n , PropValue\n , propFromString\n , propFromBoolean\n , propFromInt\n , propFromNumber\n , buildProp\n ) where\n\nimport Prelude\n\nimport Data.Function.Uncurried as Fn\nimport Data.Maybe (Maybe(..))\nimport Data.Nullable (null, toNullable)\nimport Data.Tuple (Tuple(..), fst, snd)\nimport Effect (Effect)\nimport Effect.Ref as Ref\nimport Effect.Uncurried as EFn\nimport Foreign (typeOf)\nimport Foreign.Object as Object\nimport Halogen.VDom as V\nimport Halogen.VDom.Machine (Step'(..), mkStep)\nimport Halogen.VDom.Types (Namespace(..))\nimport Halogen.VDom.Util as Util\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM.Element (Element) as DOM\nimport Web.Event.Event (EventType(..), Event) as DOM\nimport Web.Event.EventTarget (eventListener) as DOM\n\n-- | Attributes, properties, event handlers, and element lifecycles.\n-- | Parameterized by the type of handlers outputs.\ndata Prop a\n = Attribute (Maybe Namespace) String String\n | Property String PropValue\n | Handler DOM.EventType (DOM.Event \u2192 Maybe a)\n | Ref (ElemRef DOM.Element \u2192 Maybe a)\n\ninstance functorProp \u2237 Functor Prop where\n map f (Handler ty g) = Handler ty (map f <$> g)\n map f (Ref g) = Ref (map f <$> g)\n map _ p = unsafeCoerce p\n\ndata ElemRef a\n = Created a\n | Removed a\n\ninstance functorElemRef \u2237 Functor ElemRef where\n map f (Created a) = Created (f a)\n map f (Removed a) = Removed (f a)\n\nforeign import data PropValue \u2237 Type\n\npropFromString \u2237 String \u2192 PropValue\npropFromString = unsafeCoerce\n\npropFromBoolean \u2237 Boolean \u2192 PropValue\npropFromBoolean = unsafeCoerce\n\npropFromInt \u2237 Int \u2192 PropValue\npropFromInt = unsafeCoerce\n\npropFromNumber \u2237 Number \u2192 PropValue\npropFromNumber = unsafeCoerce\n\n-- | A `Machine`` for applying attributes, properties, and event handlers.\n-- | An emitter effect must be provided to respond to events. For example,\n-- | to allow arbitrary effects in event handlers, one could use `id`.\nbuildProp\n \u2237 \u2200 a\n . (a \u2192 Effect Unit)\n \u2192 DOM.Element\n \u2192 V.Machine (Array (Prop a)) Unit\nbuildProp emit el = renderProp\n where\n renderProp = EFn.mkEffectFn1 \\ps1 \u2192 do\n events \u2190 Util.newMutMap\n ps1' \u2190 EFn.runEffectFn3 Util.strMapWithIxE ps1 propToStrKey (applyProp events)\n let\n state =\n { events: Util.unsafeFreeze events\n , props: ps1'\n }\n pure $ mkStep $ Step unit state patchProp haltProp\n\n patchProp = EFn.mkEffectFn2 \\state ps2 \u2192 do\n events \u2190 Util.newMutMap\n let\n { events: prevEvents, props: ps1 } = state\n onThese = Fn.runFn2 diffProp prevEvents events\n onThis = removeProp prevEvents\n onThat = applyProp events\n props \u2190 EFn.runEffectFn6 Util.diffWithKeyAndIxE ps1 ps2 propToStrKey onThese onThis onThat\n let\n nextState =\n { events: Util.unsafeFreeze events\n , props\n }\n pure $ mkStep $ Step unit nextState patchProp haltProp\n\n haltProp = EFn.mkEffectFn1 \\state \u2192 do\n case Object.lookup \"ref\" state.props of\n Just (Ref f) \u2192\n EFn.runEffectFn1 mbEmit (f (Removed el))\n _ \u2192 pure unit\n\n mbEmit = EFn.mkEffectFn1 case _ of\n Just a \u2192 emit a\n _ \u2192 pure unit\n\n applyProp events = EFn.mkEffectFn3 \\_ _ v \u2192\n case v of\n Attribute ns attr val \u2192 do\n EFn.runEffectFn4 Util.setAttribute (toNullable ns) attr val el\n pure v\n Property prop val \u2192 do\n EFn.runEffectFn3 setProperty prop val el\n pure v\n Handler (DOM.EventType ty) f \u2192 do\n case Fn.runFn2 Util.unsafeGetAny ty events of\n handler | Fn.runFn2 Util.unsafeHasAny ty events \u2192 do\n Ref.write f (snd handler)\n pure v\n _ \u2192 do\n ref \u2190 Ref.new f\n listener \u2190 DOM.eventListener \\ev \u2192 do\n f' \u2190 Ref.read ref\n EFn.runEffectFn1 mbEmit (f' ev)\n EFn.runEffectFn3 Util.pokeMutMap ty (Tuple listener ref) events\n EFn.runEffectFn3 Util.addEventListener ty listener el\n pure v\n Ref f \u2192 do\n EFn.runEffectFn1 mbEmit (f (Created el))\n pure v\n\n diffProp = Fn.mkFn2 \\prevEvents events \u2192 EFn.mkEffectFn4 \\_ _ v1 v2 \u2192\n case v1, v2 of\n Attribute _ _ val1, Attribute ns2 attr2 val2 \u2192\n if val1 == val2\n then pure v2\n else do\n EFn.runEffectFn4 Util.setAttribute (toNullable ns2) attr2 val2 el\n pure v2\n Property _ val1, Property prop2 val2 \u2192\n case Fn.runFn2 Util.refEq val1 val2, prop2 of\n true, _ \u2192\n pure v2\n _, \"value\" \u2192 do\n let elVal = Fn.runFn2 unsafeGetProperty \"value\" el\n if Fn.runFn2 Util.refEq elVal val2\n then pure v2\n else do\n EFn.runEffectFn3 setProperty prop2 val2 el\n pure v2\n _, _ \u2192 do\n EFn.runEffectFn3 setProperty prop2 val2 el\n pure v2\n Handler _ _, Handler (DOM.EventType ty) f \u2192 do\n let\n handler = Fn.runFn2 Util.unsafeLookup ty prevEvents\n Ref.write f (snd handler)\n EFn.runEffectFn3 Util.pokeMutMap ty handler events\n pure v2\n _, _ \u2192\n pure v2\n\n removeProp prevEvents = EFn.mkEffectFn2 \\_ v \u2192\n case v of\n Attribute ns attr _ \u2192\n EFn.runEffectFn3 Util.removeAttribute (toNullable ns) attr el\n Property prop _ \u2192\n EFn.runEffectFn2 removeProperty prop el\n Handler (DOM.EventType ty) _ \u2192 do\n let\n handler = Fn.runFn2 Util.unsafeLookup ty prevEvents\n EFn.runEffectFn3 Util.removeEventListener ty (fst handler) el\n Ref _ \u2192\n pure unit\n\npropToStrKey \u2237 \u2200 i. Prop i \u2192 String\npropToStrKey = case _ of\n Attribute (Just (Namespace ns)) attr _ \u2192 \"attr/\" <> ns <> \":\" <> attr\n Attribute _ attr _ \u2192 \"attr/:\" <> attr\n Property prop _ \u2192 \"prop/\" <> prop\n Handler (DOM.EventType ty) _ \u2192 \"handler/\" <> ty\n Ref _ \u2192 \"ref\"\n\nsetProperty \u2237 EFn.EffectFn3 String PropValue DOM.Element Unit\nsetProperty = Util.unsafeSetAny\n\nunsafeGetProperty \u2237 Fn.Fn2 String DOM.Element PropValue\nunsafeGetProperty = Util.unsafeGetAny\n\nremoveProperty \u2237 EFn.EffectFn2 String DOM.Element Unit\nremoveProperty = EFn.mkEffectFn2 \\key el \u2192\n EFn.runEffectFn3 Util.hasAttribute null key el >>= if _\n then EFn.runEffectFn3 Util.removeAttribute null key el\n else case typeOf (Fn.runFn2 Util.unsafeGetAny key el) of\n \"string\" \u2192 EFn.runEffectFn3 Util.unsafeSetAny key \"\" el\n _ \u2192 case key of\n \"rowSpan\" \u2192 EFn.runEffectFn3 Util.unsafeSetAny key 1 el\n \"colSpan\" \u2192 EFn.runEffectFn3 Util.unsafeSetAny key 1 el\n _ \u2192 EFn.runEffectFn3 Util.unsafeSetAny key Util.jsUndefined el\n", "module Halogen.HTML.Core\n ( HTML(..)\n , renderWidget\n , widget\n , text\n , element\n , keyed\n , prop\n , attr\n , handler\n , ref\n , class IsProp\n , toPropValue\n , module Exports\n ) where\n\nimport Prelude\n\nimport DOM.HTML.Indexed.AutocompleteType (AutocompleteType, renderAutocompleteType)\nimport DOM.HTML.Indexed.ButtonType (ButtonType, renderButtonType)\nimport DOM.HTML.Indexed.CrossOriginValue (CrossOriginValue, renderCrossOriginValue)\nimport DOM.HTML.Indexed.DirValue (DirValue, renderDirValue)\nimport DOM.HTML.Indexed.FormMethod (FormMethod, renderFormMethod)\nimport DOM.HTML.Indexed.InputAcceptType (InputAcceptType, renderInputAcceptType)\nimport DOM.HTML.Indexed.InputType (InputType, renderInputType)\nimport DOM.HTML.Indexed.KindValue (KindValue, renderKindValue)\nimport DOM.HTML.Indexed.MenuType (MenuType, renderMenuType)\nimport DOM.HTML.Indexed.MenuitemType (MenuitemType, renderMenuitemType)\nimport DOM.HTML.Indexed.OrderedListType (OrderedListType, renderOrderedListType)\nimport DOM.HTML.Indexed.PreloadValue (PreloadValue, renderPreloadValue)\nimport DOM.HTML.Indexed.ScopeValue (ScopeValue, renderScopeValue)\nimport DOM.HTML.Indexed.StepValue (StepValue, renderStepValue)\nimport DOM.HTML.Indexed.WrapValue (WrapValue, renderWrapValue)\nimport Data.Bifunctor (class Bifunctor, bimap, rmap)\nimport Data.Maybe (Maybe(..))\nimport Data.MediaType (MediaType)\nimport Data.Newtype (class Newtype, un, unwrap)\nimport Data.Tuple (Tuple)\nimport Halogen.Query.Input (Input)\nimport Halogen.VDom (ElemName(..), Namespace(..)) as Exports\nimport Halogen.VDom.DOM.Prop (ElemRef(..), Prop(..), PropValue, propFromBoolean, propFromInt, propFromNumber, propFromString)\nimport Halogen.VDom.DOM.Prop (Prop(..), PropValue) as Exports\nimport Halogen.VDom.Types as VDom\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM.Element (Element)\nimport Web.Event.Event (Event, EventType)\nimport Web.HTML.Common (AttrName(..), ClassName(..), PropName(..)) as Exports\nimport Web.HTML.Common (AttrName(..), PropName(..))\n\nnewtype HTML w i = HTML (VDom.VDom (Array (Prop (Input i))) w)\n\nderive instance newtypeHTML :: Newtype (HTML w i) _\n\ninstance bifunctorHTML :: Bifunctor HTML where\n bimap f g (HTML vdom) = HTML (bimap (map (map (map g))) f vdom)\n\ninstance functorHTML :: Functor (HTML p) where\n map = rmap\n\nrenderWidget :: forall w x i j. (i -> j) -> (w -> HTML x j) -> HTML w i -> HTML x j\nrenderWidget f g (HTML vdom) =\n HTML (VDom.renderWidget (map (map (map f))) (un HTML <<< g) vdom)\n\nwidget :: forall p q. p -> HTML p q\nwidget = HTML <<< VDom.Widget\n\n-- | Constructs a text node `HTML` value.\ntext :: forall w i. String -> HTML w i\ntext = HTML <<< VDom.Text\n\n-- | A smart constructor for HTML elements.\nelement :: forall w i. Maybe VDom.Namespace -> VDom.ElemName -> Array (Prop i) -> Array (HTML w i) -> HTML w i\nelement ns =\n coe (\\name props children -> VDom.Elem ns name props children)\n where\n coe\n :: (VDom.ElemName -> Array (Prop i) -> Array (VDom.VDom (Array (Prop i)) w) -> VDom.VDom (Array (Prop i)) w)\n -> VDom.ElemName\n -> Array (Prop i)\n -> Array (HTML w i)\n -> HTML w i\n coe = unsafeCoerce\n\n-- | A smart constructor for HTML elements with keyed children.\nkeyed :: forall w i. Maybe VDom.Namespace -> VDom.ElemName -> Array (Prop i) -> Array (Tuple String (HTML w i)) -> HTML w i\nkeyed ns = coe (\\name props children -> VDom.Keyed ns name props children)\n where\n coe\n :: (VDom.ElemName -> Array (Prop i) -> Array (Tuple String (VDom.VDom (Array (Prop i)) w)) -> VDom.VDom (Array (Prop i)) w)\n -> VDom.ElemName\n -> Array (Prop i)\n -> Array (Tuple String (HTML w i))\n -> HTML w i\n coe = unsafeCoerce\n\n-- | Create a HTML property.\nprop :: forall value i. IsProp value => PropName value -> value -> Prop i\nprop (PropName name) = Property name <<< toPropValue\n\n-- | Create a HTML attribute.\nattr :: forall i. Maybe VDom.Namespace -> AttrName -> String -> Prop i\nattr ns (AttrName name) = Attribute ns name\n\n-- | Create an event handler.\nhandler :: forall i. EventType -> (Event -> Maybe i) -> Prop i\nhandler = Handler\n\nref :: forall i. (Maybe Element -> Maybe i) -> Prop i\nref f = Ref $ f <<< case _ of\n Created x -> Just x\n Removed _ -> Nothing\n\nclass IsProp a where\n toPropValue :: a -> PropValue\n\ninstance isPropString :: IsProp String where\n toPropValue = propFromString\n\ninstance isPropInt :: IsProp Int where\n toPropValue = propFromInt\n\ninstance isPropNumber :: IsProp Number where\n toPropValue = propFromNumber\n\ninstance isPropBoolean :: IsProp Boolean where\n toPropValue = propFromBoolean\n\ninstance isPropMediaType :: IsProp MediaType where\n toPropValue = propFromString <<< unwrap\n\ninstance isPropButtonType :: IsProp ButtonType where\n toPropValue = propFromString <<< renderButtonType\n\ninstance isPropCrossOriginValue :: IsProp CrossOriginValue where\n toPropValue = propFromString <<< renderCrossOriginValue\n\ninstance isPropDirValue :: IsProp DirValue where\n toPropValue = propFromString <<< renderDirValue\n\ninstance isPropFormMethod :: IsProp FormMethod where\n toPropValue = propFromString <<< renderFormMethod\n\ninstance isPropInputType :: IsProp InputType where\n toPropValue = propFromString <<< renderInputType\n\ninstance isPropKindValue :: IsProp KindValue where\n toPropValue = propFromString <<< renderKindValue\n\ninstance isPropMenuitemType :: IsProp MenuitemType where\n toPropValue = propFromString <<< renderMenuitemType\n\ninstance isPropMenuType :: IsProp MenuType where\n toPropValue = propFromString <<< renderMenuType\n\ninstance isPropAutocompleteType :: IsProp AutocompleteType where\n toPropValue = propFromString <<< renderAutocompleteType\n\ninstance isPropOrderedListType :: IsProp OrderedListType where\n toPropValue = propFromString <<< renderOrderedListType\n\ninstance isPropPreloadValue :: IsProp PreloadValue where\n toPropValue = propFromString <<< renderPreloadValue\n\ninstance isPropScopeValue :: IsProp ScopeValue where\n toPropValue = propFromString <<< renderScopeValue\n\ninstance isPropStepValue :: IsProp StepValue where\n toPropValue = propFromString <<< renderStepValue\n\ninstance isPropWrapValue :: IsProp WrapValue where\n toPropValue = propFromString <<< renderWrapValue\n\ninstance isPropInputAcceptType :: IsProp InputAcceptType where\n toPropValue = propFromString <<< renderInputAcceptType\n", "module Control.Applicative.Free\n ( FreeAp\n , liftFreeAp\n , retractFreeAp\n , foldFreeAp\n , hoistFreeAp\n , analyzeFreeAp\n ) where\n\nimport Prelude\n\nimport Data.Const (Const(..))\nimport Data.Either (Either(..))\nimport Data.List (List(..))\nimport Data.List.NonEmpty as NEL\nimport Data.Newtype (unwrap)\nimport Data.NonEmpty ((:|))\nimport Data.Tuple (Tuple(..))\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | The free applicative functor for a type constructor `f`.\ndata FreeAp f a\n = Pure a\n | Lift (f a)\n | Ap (FreeAp f (Val -> a)) (FreeAp f Val)\n\ndata Val\n\n-- | Lift a value described by the type constructor `f` into\n-- | the free applicative functor.\nliftFreeAp :: forall f a. f a -> FreeAp f a\nliftFreeAp = Lift\n\ntype ApFunc g = { func :: g (Val -> Val), count :: Int }\ntype FuncStack g = List (ApFunc g)\ntype ValStack f = NEL.NonEmptyList (FreeAp f Val)\ntype Stack f g = Tuple (FuncStack g) (ValStack f)\n\n-- | Run a free applicative functor with a natural transformation from\n-- | the type constructor `f` to the applicative functor `g`.\nfoldFreeAp :: forall f g a. Applicative g => (f ~> g) -> FreeAp f a -> g a\nfoldFreeAp nat z =\n unsafeToG $ go $ Tuple Nil (NEL.singleton $ unsafeToFVal z)\n where\n unsafeToG :: g Val -> g a\n unsafeToG = unsafeCoerce\n\n unsafeToFVal :: forall f' a'. FreeAp f' a' -> FreeAp f' Val\n unsafeToFVal = unsafeCoerce\n\n go :: Stack f g -> g Val\n go (Tuple fStack (NEL.NonEmptyList (val :| vals))) =\n case val of\n Pure a -> case goApply fStack vals (pure a) of\n Left x -> x\n Right s -> go s\n Lift a -> case goApply fStack vals (nat a) of\n Left x -> x\n Right s -> go s\n Ap l r ->\n let nextVals = NEL.NonEmptyList (r :| vals)\n in go $ goLeft fStack nextVals nat l 1\n\ngoApply\n :: forall f g\n . Applicative g\n => FuncStack g\n -> List (FreeAp f Val)\n -> g Val\n -> Either (g Val) (Stack f g)\ngoApply fStack vals gVal =\n case fStack of\n Nil -> Left gVal\n Cons f fs ->\n let gRes = f.func <*> gVal\n in if f.count == 1 then\n case fs of\n Nil ->\n -- here vals must be empty\n Left gRes\n _ -> goApply fs vals gRes\n else\n case vals of\n Nil -> Left gRes\n Cons val vals' ->\n Right $ Tuple\n (Cons { func: unsafeToGFunc gRes, count: f.count - 1 } fs)\n (NEL.NonEmptyList (val :| vals'))\n where\n unsafeToGFunc :: g Val -> g (Val -> Val)\n unsafeToGFunc = unsafeCoerce\n\ngoLeft\n :: forall f g\n . Applicative g\n => FuncStack g\n -> ValStack f\n -> (f ~> g)\n -> FreeAp f (Val -> Val)\n -> Int\n -> Stack f g\ngoLeft fStack valStack nat func count = case func of\n Pure a -> Tuple (Cons { func: pure a, count } fStack) valStack\n Lift a -> Tuple (Cons { func: nat a, count } fStack) valStack\n Ap l r -> goLeft fStack (NEL.cons r valStack) nat (unsafeToFunc l) (count + 1)\n where\n unsafeToFunc :: FreeAp f (Val -> Val -> Val) -> FreeAp f (Val -> Val)\n unsafeToFunc = unsafeCoerce\n\n-- | Run a free applicative functor using the applicative instance for\n-- | the type constructor `f`.\nretractFreeAp :: forall f a. Applicative f => FreeAp f a -> f a\nretractFreeAp = foldFreeAp identity\n\n-- | Natural transformation from `FreeAp f a` to `FreeAp g a` given a\n-- | natural transformation from `f` to `g`.\nhoistFreeAp :: forall f g a. (f ~> g) -> FreeAp f a -> FreeAp g a\nhoistFreeAp f = foldFreeAp (f >>> liftFreeAp)\n\n-- | Perform monoidal analysis over the free applicative functor `f`.\nanalyzeFreeAp :: forall f m a. Monoid m => (forall b. f b -> m) -> FreeAp f a -> m\nanalyzeFreeAp k = unwrap <<< foldFreeAp (Const <<< k)\n\nmkAp :: forall f a b. FreeAp f (b -> a) -> FreeAp f b -> FreeAp f a\nmkAp fba fb = Ap (coerceFunc fba) (coerceValue fb)\n where\n coerceFunc :: FreeAp f (b -> a) -> FreeAp f (Val -> a)\n coerceFunc = unsafeCoerce\n\n coerceValue :: FreeAp f b -> FreeAp f Val\n coerceValue = unsafeCoerce\n\ninstance functorFreeAp :: Functor (FreeAp f) where\n map f x = mkAp (Pure f) x\n\ninstance applyFreeAp :: Apply (FreeAp f) where\n apply fba fb = mkAp fba fb\n\ninstance applicativeFreeAp :: Applicative (FreeAp f) where\n pure = Pure\n", "-- | This module defines a strict double-ended queue.\n-- |\n-- | The queue implementation is based on a pair of lists where all\n-- | operations require `O(1)` amortized time.\n-- |\n-- | However, any single `uncons` operation may run in `O(n)` time.\n-- |\n-- | See [Simple and Efficient Purely Functional Queues and Dequeues](http://www.westpoint.edu/eecs/SiteAssets/SitePages/Faculty%20Publication%20Documents/Okasaki/jfp95queue.pdf) (Okasaki 1995)\nmodule Data.CatQueue\n ( CatQueue(..)\n , empty\n , null\n , singleton\n , length\n , cons\n , snoc\n , uncons\n , unsnoc\n , fromFoldable\n ) where\n\nimport Prelude\n\nimport Control.Alt (class Alt)\nimport Control.Alternative (class Alternative)\nimport Control.Apply (lift2)\nimport Control.MonadPlus (class MonadPlus)\nimport Control.Plus (class Plus)\nimport Data.Foldable (class Foldable, foldMap, foldMapDefaultL, foldl, foldrDefault)\nimport Data.List (List(..), reverse)\nimport Data.List as L\nimport Data.Maybe (Maybe(..))\nimport Data.Traversable (class Traversable, sequenceDefault)\nimport Data.Tuple (Tuple(..))\nimport Data.Unfoldable (class Unfoldable, class Unfoldable1)\n\n-- | A strict double-ended queue (dequeue) representated using a pair of lists.\ndata CatQueue a = CatQueue (List a) (List a)\n\n-- | Create an empty queue.\n-- |\n-- | Running time: `O(1)`\nempty :: forall a. CatQueue a\nempty = CatQueue Nil Nil\n\n-- | Test whether a queue is empty.\n-- |\n-- | Running time: `O(1)`\nnull :: forall a. CatQueue a -> Boolean\nnull (CatQueue Nil Nil) = true\nnull _ = false\n\n-- | Create a queue containing a single element.\n-- |\n-- | Running time: `O(1)`\nsingleton :: forall a. a -> CatQueue a\nsingleton = snoc empty\n\n-- | Number of elements in queue.\n-- |\n-- | Running time: `O(n)` in length of queue.\nlength :: forall a. CatQueue a -> Int\nlength (CatQueue l r) = L.length l + L.length r\n\n-- | Append an element to the beginning of the queue, creating a new queue.\n-- |\n-- | Running time: `O(1)`\ncons :: forall a. a -> CatQueue a -> CatQueue a\ncons a (CatQueue l r) = CatQueue (Cons a l) r\n\n-- | Append an element to the end of the queue, creating a new queue.\n-- |\n-- | Running time: `O(1)`\nsnoc :: forall a. CatQueue a -> a -> CatQueue a\nsnoc (CatQueue l r) a = CatQueue l (Cons a r)\n\n-- | Decompose a queue into a `Tuple` of the first element and the rest of the queue.\n-- |\n-- | Running time: `O(1)`\n-- |\n-- | Note that any single operation may run in `O(n)`.\nuncons :: forall a. CatQueue a -> Maybe (Tuple a (CatQueue a))\nuncons (CatQueue Nil Nil) = Nothing\nuncons (CatQueue Nil r) = uncons (CatQueue (reverse r) Nil)\nuncons (CatQueue (Cons a as) r) = Just (Tuple a (CatQueue as r))\n\n-- | Decompose a queue into a `Tuple` of the last element and the rest of the queue.\n-- |\n-- | Running time: `O(1)`\n-- |\n-- | Note that any single operation may run in `O(n)`.\nunsnoc :: forall a. CatQueue a -> Maybe (Tuple a (CatQueue a))\nunsnoc (CatQueue l (Cons a as)) = Just (Tuple a (CatQueue l as))\nunsnoc (CatQueue Nil Nil) = Nothing\nunsnoc (CatQueue l Nil) = unsnoc (CatQueue Nil (reverse l))\n\n-- | Convert any `Foldable` into a `CatQueue`.\n-- |\n-- | Running time: `O(n)`\nfromFoldable :: forall f a. Foldable f => f a -> CatQueue a\nfromFoldable f = foldMap singleton f\n\ncqEq :: forall a. Eq a => CatQueue a -> CatQueue a -> Boolean\ncqEq = go\n where\n elemEq = eq :: (a -> a -> Boolean)\n go xs ys = case uncons xs, uncons ys of\n Just (Tuple x xs'), Just (Tuple y ys')\n | x `elemEq` y -> go xs' ys'\n Nothing, Nothing -> true\n _ , _ -> false\n\ncqCompare :: forall a. Ord a => CatQueue a -> CatQueue a -> Ordering\ncqCompare = go\n where\n elemCompare = compare :: (a -> a -> Ordering)\n go xs ys = case uncons xs, uncons ys of\n Just (Tuple x xs'), Just (Tuple y ys') ->\n case elemCompare x y of\n EQ -> go xs' ys'\n ordering -> ordering\n Just _, Nothing -> GT\n Nothing, Just _ -> LT\n Nothing, Nothing -> EQ\n\ninstance eqCatQueue :: Eq a => Eq (CatQueue a) where\n eq = cqEq\n\ninstance ordCatQueue :: Ord a => Ord (CatQueue a) where\n compare = cqCompare\n\n-- | Running time: `O(n) in the length of the second queue`\ninstance semigroupCatQueue :: Semigroup (CatQueue a) where\n append = foldl snoc\n\ninstance monoidCatQueue :: Monoid (CatQueue a) where\n mempty = empty\n\ninstance showCatQueue :: Show a => Show (CatQueue a) where\n show (CatQueue l r) = \"(CatQueue \" <> show l <> \" \" <> show r <> \")\"\n\ninstance foldableCatQueue :: Foldable CatQueue where\n foldMap = foldMapDefaultL\n foldr f = foldrDefault f\n foldl f = go\n where\n go acc q = case uncons q of\n Just (Tuple x xs) -> go (f acc x) xs\n Nothing -> acc\n\ninstance unfoldable1CatQueue :: Unfoldable1 CatQueue where\n unfoldr1 f b = go b empty\n where\n go source memo = case f source of\n Tuple one Nothing -> snoc memo one\n Tuple one (Just rest) -> go rest (snoc memo one)\n\ninstance unfoldableCatQueue :: Unfoldable CatQueue where\n unfoldr f b = go b empty\n where\n go source memo = case f source of\n Nothing -> memo\n Just (Tuple one rest) -> go rest (snoc memo one)\n\ninstance traversableCatQueue :: Traversable CatQueue where\n traverse f =\n map (foldl snoc empty)\n <<< foldl (\\acc -> lift2 snoc acc <<< f) (pure empty)\n sequence = sequenceDefault\n\ninstance functorCatQueue :: Functor CatQueue where\n map f (CatQueue l r) = CatQueue (map f l) (map f r)\n\ninstance applyCatQueue :: Apply CatQueue where\n apply = ap\n\ninstance applicativeCatQueue :: Applicative CatQueue where\n pure = singleton\n\ninstance bindCatQueue :: Bind CatQueue where\n bind = flip foldMap\n\ninstance monadCatQueue :: Monad CatQueue\n\ninstance altCatQueue :: Alt CatQueue where\n alt = append\n\ninstance plusCatQueue :: Plus CatQueue where\n empty = empty\n\ninstance alternativeCatQueue :: Alternative CatQueue\n\ninstance monadPlusCatQueue :: MonadPlus CatQueue\n", "-- | This module defines a strict catenable list.\n-- |\n-- | The implementation is based on a queue where all operations require\n-- | `O(1)` amortized time.\n-- |\n-- | However, any single `uncons` operation may run in `O(n)` time.\n-- |\n-- | See [Purely Functional Data Structures](http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf) (Okasaki 1996)\nmodule Data.CatList\n ( CatList(..)\n , empty\n , null\n , singleton\n , length\n , append\n , cons\n , snoc\n , uncons\n , fromFoldable\n ) where\n\nimport Prelude hiding (append)\n\nimport Control.Alt (class Alt)\nimport Control.Alternative (class Alternative)\nimport Control.MonadPlus (class MonadPlus)\nimport Control.Plus (class Plus)\nimport Data.CatQueue as Q\nimport Data.Foldable (class Foldable, foldMapDefaultL)\nimport Data.Foldable as Foldable\nimport Data.List as L\nimport Data.Maybe (Maybe(..))\nimport Data.Traversable (sequence, traverse, class Traversable)\nimport Data.Tuple (Tuple(..))\nimport Data.Unfoldable (class Unfoldable)\nimport Data.Unfoldable1 (class Unfoldable1)\n\n-- | A strict catenable list.\n-- |\n-- | `CatList` may be empty, represented by `CatNil`.\n-- |\n-- | `CatList` may be non-empty, represented by `CatCons`. The `CatCons`\n-- | data constructor takes the first element of the list and a queue of\n-- | `CatList`.\ndata CatList a = CatNil | CatCons a (Q.CatQueue (CatList a))\n\n-- | Create an empty catenable list.\n-- |\n-- | Running time: `O(1)`\nempty :: forall a. CatList a\nempty = CatNil\n\n-- | Test whether a catenable list is empty.\n-- |\n-- | Running time: `O(1)`\nnull :: forall a. CatList a -> Boolean\nnull CatNil = true\nnull _ = false\n\n-- | Number of elements in queue.\n-- |\n-- | Running time: `O(n)` in length of queue.\nlength :: forall a. CatList a -> Int\nlength = Foldable.length\n\n-- | Append all elements of a catenable list to the end of another\n-- | catenable list, create a new catenable list.\n-- |\n-- | Running time: `O(1)`\nappend :: forall a. CatList a -> CatList a -> CatList a\nappend = link\n\n-- | Append an element to the beginning of the catenable list, creating a new\n-- | catenable list.\n-- |\n-- | Running time: `O(1)`\ncons :: forall a. a -> CatList a -> CatList a\ncons a cat = append (CatCons a Q.empty) cat\n\n-- | Create a catenable list with a single item.\n-- |\n-- | Running time: `O(1)`\nsingleton :: forall a. a -> CatList a\nsingleton a = cons a CatNil\n\n-- | Append an element to the end of the catenable list, creating a new\n-- | catenable list.\n-- |\n-- | Running time: `O(1)`\nsnoc :: forall a. CatList a -> a -> CatList a\nsnoc cat a = append cat (CatCons a Q.empty)\n\n-- | Decompose a catenable list into a `Tuple` of the first element and\n-- | the rest of the catenable list.\n-- |\n-- | Running time: `O(1)`\n-- |\n-- | Note that any single operation may run in `O(n)`.\nuncons :: forall a. CatList a -> Maybe (Tuple a (CatList a))\nuncons CatNil = Nothing\nuncons (CatCons a q) = Just (Tuple a (if Q.null q then CatNil else (foldr link CatNil q)))\n\n-- | Links two catenable lists by making appending the queue in the\n-- | first catenable list to the second catenable list. This operation\n-- | creates a new catenable list.\n-- |\n-- | Running time: `O(1)`\nlink :: forall a. CatList a -> CatList a -> CatList a\nlink CatNil cat = cat\nlink cat CatNil = cat\nlink (CatCons a q) cat = CatCons a (Q.snoc q cat)\n\n-- | Tail recursive version of foldr on `CatList`.\n-- |\n-- | Ensures foldl on `List` is tail-recursive.\nfoldr :: forall a. (CatList a -> CatList a -> CatList a) -> CatList a -> Q.CatQueue (CatList a) -> CatList a\nfoldr k b q = go q L.Nil\n where\n go :: Q.CatQueue (CatList a) -> L.List (CatList a -> CatList a) -> CatList a\n go xs ys = case Q.uncons xs of\n Nothing -> foldl (\\x i -> i x) b ys\n Just (Tuple a rest) -> go rest (L.Cons (k a) ys)\n\n foldl :: forall b c. (c -> b -> c) -> c -> L.List b -> c\n foldl _ c L.Nil = c\n foldl k' c (L.Cons b' as) = foldl k' (k' c b') as\n\n-- | Convert any `Foldable` into a `CatList`.\n-- |\n-- | Running time: `O(n)`\nfromFoldable :: forall f. Foldable f => f ~> CatList\nfromFoldable f = Foldable.foldMap singleton f\n\nfoldMap :: forall a m. Monoid m => (a -> m) -> CatList a -> m\nfoldMap _ CatNil = mempty\nfoldMap f (CatCons a q) =\n let d = if Q.null q then CatNil else (foldr link CatNil q)\n in f a <> foldMap f d\n\n-- | Running time: `O(1)`\ninstance semigroupCatList :: Semigroup (CatList a) where\n append = append\n\ninstance monoidCatList :: Monoid (CatList a) where\n mempty = CatNil\n\ninstance showCatList :: Show a => Show (CatList a) where\n show CatNil = \"CatNil\"\n show (CatCons a as) = \"(CatList \" <> show a <> \" \" <> show as <> \")\"\n\ninstance foldableCatList :: Foldable CatList where\n foldMap = foldMapDefaultL\n foldr f s l = Foldable.foldrDefault f s l\n foldl f = go\n where\n go acc q = case uncons q of\n Just (Tuple x xs) -> go (f acc x) xs\n Nothing -> acc\n\ninstance unfoldableCatList :: Unfoldable CatList where\n unfoldr f b = go b CatNil\n where\n go source memo = case f source of\n Nothing -> memo\n Just (Tuple one rest) -> go rest (snoc memo one)\n\ninstance unfoldable1CatList :: Unfoldable1 CatList where\n unfoldr1 f b = go b CatNil\n where\n go source memo = case f source of\n Tuple one Nothing -> snoc memo one\n Tuple one (Just rest) -> go rest (snoc memo one)\n\ninstance traversableCatList :: Traversable CatList where\n traverse _ CatNil = pure CatNil\n traverse f (CatCons a q) =\n let d = if Q.null q then CatNil else (foldr link CatNil q)\n in cons <$> f a <*> traverse f d\n sequence CatNil = pure CatNil\n sequence (CatCons a q) =\n let d = if Q.null q then CatNil else (foldr link CatNil q)\n in cons <$> a <*> sequence d\n\ninstance functorCatList :: Functor CatList where\n map _ CatNil = CatNil\n map f (CatCons a q) =\n let d = if Q.null q then CatNil else (foldr link CatNil q)\n in f a `cons` map f d\n\ninstance applyCatList :: Apply CatList where\n apply = ap\n\ninstance applicativeCatList :: Applicative CatList where\n pure = singleton\n\ninstance bindCatList :: Bind CatList where\n bind = flip foldMap\n\ninstance monadCatList :: Monad CatList\n\ninstance altCatList :: Alt CatList where\n alt = append\n\ninstance plusCatList :: Plus CatList where\n empty = empty\n\ninstance alternativeCatList :: Alternative CatList\n\ninstance monadPlusCatList :: MonadPlus CatList\n", "module Control.Monad.Free\n ( Free\n , suspendF\n , wrap\n , liftF\n , hoistFree\n , foldFree\n , substFree\n , runFree\n , runFreeM\n , resume\n , resume'\n ) where\n\nimport Prelude\n\nimport Control.Apply (lift2)\nimport Control.Monad.Rec.Class (class MonadRec, Step(..), tailRecM)\nimport Control.Monad.Trans.Class (class MonadTrans)\n\nimport Data.CatList (CatList, empty, snoc, uncons)\nimport Data.Either (Either(..))\nimport Data.Eq (class Eq1, eq1)\nimport Data.Foldable (class Foldable, foldMap, foldl, foldr)\nimport Data.Maybe (Maybe(..))\nimport Data.Ord (class Ord1, compare1)\nimport Data.Traversable (class Traversable, traverse)\nimport Data.Tuple (Tuple(..))\n\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | The free monad for a type constructor `f`.\n-- |\n-- | Implemented in the spirit of [Reflection without Remorse](http://okmij.org/ftp/Haskell/zseq.pdf),\n-- | the free monad is represented using a sequential data structure in\n-- | order to overcome the quadratic complexity of left-associated binds\n-- | and traversal through the free monad structure.\ndata Free f a = Free (FreeView f Val Val) (CatList (ExpF f))\n\nnewtype ExpF f = ExpF (Val -> Free f Val)\n\ndata FreeView f a b = Return a | Bind (f b) (b -> Free f a)\n\ndata Val\n\ninstance eqFree :: (Functor f, Eq1 f, Eq a) => Eq (Free f a) where\n eq x y = case resume x, resume y of\n Left fa, Left fb -> eq1 fa fb\n Right a, Right b -> a == b\n _, _ -> false\n\ninstance eq1Free :: (Functor f, Eq1 f) => Eq1 (Free f) where\n eq1 = eq\n\ninstance ordFree :: (Functor f, Ord1 f, Ord a) => Ord (Free f a) where\n compare x y = case resume x, resume y of\n Left fa, Left fb -> compare1 fa fb\n Left _, _ -> LT\n _, Left _ -> GT\n Right a, Right b -> compare a b\n\ninstance ord1Free :: (Functor f, Ord1 f) => Ord1 (Free f) where\n compare1 = compare\n\ninstance freeFunctor :: Functor (Free f) where\n map k f = pure <<< k =<< f\n\ninstance freeBind :: Bind (Free f) where\n bind (Free v s) k = Free v (snoc s (ExpF (unsafeCoerceBind k)))\n where\n unsafeCoerceBind :: forall a b. (a -> Free f b) -> Val -> Free f Val\n unsafeCoerceBind = unsafeCoerce\n\ninstance freeApplicative :: Applicative (Free f) where\n pure = fromView <<< Return\n\ninstance freeApply :: Apply (Free f) where\n apply = ap\n\ninstance freeMonad :: Monad (Free f)\n\ninstance freeMonadTrans :: MonadTrans Free where\n lift = liftF\n\ninstance freeMonadRec :: MonadRec (Free f) where\n tailRecM k a = k a >>= case _ of\n Loop b -> tailRecM k b\n Done r -> pure r\n\ninstance foldableFree :: (Functor f, Foldable f) => Foldable (Free f) where\n foldMap f = go\n where\n go = resume >>> case _ of\n Left fa -> foldMap go fa\n Right a -> f a\n foldl f = go\n where\n go r = resume >>> case _ of\n Left fa -> foldl go r fa\n Right a -> f r a\n foldr f = go\n where\n go r = resume >>> case _ of\n Left fa -> foldr (flip go) r fa\n Right a -> f a r\n\ninstance traversableFree :: Traversable f => Traversable (Free f) where\n traverse f = go\n where\n go = resume >>> case _ of\n Left fa -> join <<< liftF <$> traverse go fa\n Right a -> pure <$> f a\n sequence tma = traverse identity tma\n\ninstance semigroupFree :: Semigroup a => Semigroup (Free f a) where\n append = lift2 append\n\ninstance monoidFree :: Monoid a => Monoid (Free f a) where\n mempty = pure mempty\n \n-- | Lift an impure value described by the generating type constructor `f` into\n-- | the free monad.\nliftF :: forall f. f ~> Free f\nliftF f = fromView (Bind (unsafeCoerceF f) (pure <<< unsafeCoerceVal))\n where\n unsafeCoerceF :: forall a. f a -> f Val\n unsafeCoerceF = unsafeCoerce\n\n unsafeCoerceVal :: forall a. Val -> a\n unsafeCoerceVal = unsafeCoerce\n\n-- | Add a layer.\nwrap :: forall f a. f (Free f a) -> Free f a\nwrap f = fromView (Bind (unsafeCoerceF f) unsafeCoerceVal)\n where\n unsafeCoerceF :: forall b. f (Free f b) -> f Val\n unsafeCoerceF = unsafeCoerce\n\n unsafeCoerceVal :: forall b. Val -> Free f b\n unsafeCoerceVal = unsafeCoerce\n\n-- | Suspend a value given the applicative functor `f` into the free monad.\nsuspendF :: forall f. Applicative f => Free f ~> Free f\nsuspendF f = wrap (pure f)\n\n-- | Use a natural transformation to change the generating type constructor of a\n-- | free monad.\nhoistFree :: forall f g. (f ~> g) -> Free f ~> Free g\nhoistFree k = substFree (liftF <<< k)\n\n-- | Run a free monad with a natural transformation from the type constructor `f`\n-- | to the tail-recursive monad `m`. See the `MonadRec` type class for more\n-- | details.\nfoldFree :: forall f m. MonadRec m => (f ~> m) -> Free f ~> m\nfoldFree k = tailRecM go\n where\n go :: forall a. Free f a -> m (Step (Free f a) a)\n go f = case toView f of\n Return a -> Done <$> pure a\n Bind g i -> (Loop <<< i) <$> k g\n\n-- | Like `foldFree`, but for folding into some other Free monad without the\n-- | overhead that `MonadRec` incurs.\nsubstFree :: forall f g. (f ~> Free g) -> Free f ~> Free g\nsubstFree k = go\n where\n go :: Free f ~> Free g\n go f = case toView f of\n Return a -> pure a\n Bind g i -> k g >>= go <$> i\n\n-- | Run a free monad with a function that unwraps a single layer of the functor\n-- | `f` at a time.\nrunFree :: forall f a. Functor f => (f (Free f a) -> Free f a) -> Free f a -> a\nrunFree k = go\n where\n go :: Free f a -> a\n go f = case toView f of\n Return a -> a\n Bind g i -> go (k (i <$> g))\n\n-- | Run a free monad with a function mapping a functor `f` to a tail-recursive\n-- | monad `m`. See the `MonadRec` type class for more details.\nrunFreeM\n :: forall f m a\n . Functor f\n => MonadRec m\n => (f (Free f a) -> m (Free f a))\n -> Free f a\n -> m a\nrunFreeM k = tailRecM go\n where\n go :: Free f a -> m (Step (Free f a) a)\n go f = case toView f of\n Return a -> Done <$> pure a\n Bind g i -> Loop <$> k (i <$> g)\n\n-- | Unwraps a single layer of the functor `f`.\nresume\n :: forall f a\n . Functor f\n => Free f a\n -> Either (f (Free f a)) a\nresume = resume' (\\g i -> Left (i <$> g)) Right\n\n-- | Unwraps a single layer of `f`, providing the continuation.\nresume'\n :: forall f a r\n . (forall b. f b -> (b -> Free f a) -> r)\n -> (a -> r)\n -> Free f a\n -> r\nresume' k j f = case toView f of\n Return a -> j a\n Bind g i -> k g i\n\nfromView :: forall f a. FreeView f a Val -> Free f a\nfromView f = Free (unsafeCoerceFreeView f) empty\n where\n unsafeCoerceFreeView :: FreeView f a Val -> FreeView f Val Val\n unsafeCoerceFreeView = unsafeCoerce\n\ntoView :: forall f a. Free f a -> FreeView f a Val\ntoView (Free v s) =\n case v of\n Return a ->\n case uncons s of\n Nothing ->\n Return (unsafeCoerceVal a)\n Just (Tuple h t) ->\n toView (unsafeCoerceFree (concatF ((runExpF h) a) t))\n Bind f k ->\n Bind f (\\a -> unsafeCoerceFree (concatF (k a) s))\n where\n concatF :: Free f Val -> CatList (ExpF f) -> Free f Val\n concatF (Free v' l) r = Free v' (l <> r)\n\n runExpF :: ExpF f -> (Val -> Free f Val)\n runExpF (ExpF k) = k\n\n unsafeCoerceFree :: Free f Val -> Free f a\n unsafeCoerceFree = unsafeCoerce\n\n unsafeCoerceVal :: Val -> a\n unsafeCoerceVal = unsafeCoerce\n", "module Halogen.Query.ChildQuery where\n\nimport Prelude\n\nimport Data.Maybe (Maybe)\nimport Halogen.Data.Slot (SlotStorage)\nimport Unsafe.Coerce (unsafeCoerce)\n\ndata ChildQueryBox :: Row Type -> Type -> Type\ndata ChildQueryBox (ps :: Row Type) a\n\ndata ChildQuery ps g o a f b =\n ChildQuery\n (forall slot m. Applicative m => (slot g o -> m (Maybe b)) -> SlotStorage ps slot -> m (f b))\n (g b)\n (f b -> a)\n\ninstance functorChildQuery :: Functor (ChildQueryBox ps) where\n map f = unChildQueryBox \\(ChildQuery u q k) ->\n mkChildQueryBox (ChildQuery u q (f <<< k))\n\nmkChildQueryBox\n :: forall ps g o a f b\n . ChildQuery ps g o a f b\n -> ChildQueryBox ps a\nmkChildQueryBox = unsafeCoerce\n\nunChildQueryBox\n :: forall ps a r\n . (forall g o f b. ChildQuery ps g o a f b -> r)\n -> ChildQueryBox ps a\n -> r\nunChildQueryBox = unsafeCoerce\n", "export function reallyUnsafeRefEq(a) {\n return function (b) {\n return a === b;\n };\n}\n", "module Unsafe.Reference\n ( unsafeRefEq\n , reallyUnsafeRefEq\n , UnsafeRefEq(..)\n , UnsafeRefEqFallback(..)\n ) where\n\nimport Prelude\n\n-- | Compares two values of the same type using strict (`===`) equality.\nunsafeRefEq :: forall a. a -> a -> Boolean\nunsafeRefEq = reallyUnsafeRefEq\n\n-- | Compares two values of different types using strict (`===`) equality.\nforeign import reallyUnsafeRefEq :: forall a b. a -> b -> Boolean\n\n-- | The `Eq` instance is defined by `unsafeRefEq`.\nnewtype UnsafeRefEq a = UnsafeRefEq a\n\ninstance eqUnsafeRefEq :: Eq (UnsafeRefEq a) where\n eq (UnsafeRefEq l) (UnsafeRefEq r) = unsafeRefEq l r\n\n-- | The `Eq` instance first checks `unsafeRefEq`, if `false` falls back to\n-- | the underlying `Eq` instance.\nnewtype UnsafeRefEqFallback a = UnsafeRefEqFallback a\n\ninstance eqUnsafeRefEqFallback ::\n Eq a =>\n Eq (UnsafeRefEqFallback a) where\n eq (UnsafeRefEqFallback l) (UnsafeRefEqFallback r) =\n unsafeRefEq l r || l == r\n\n", "module Halogen.Subscription\n ( SubscribeIO(..)\n , create\n , Listener\n , notify\n , Emitter\n , makeEmitter\n , Subscription\n , subscribe\n , unsubscribe\n , fold\n , filter\n , fix\n ) where\n\nimport Prelude\n\nimport Control.Alt (class Alt)\nimport Control.Alternative (class Alternative)\nimport Control.Apply (lift2)\nimport Control.Plus (class Plus)\nimport Data.Array (deleteBy)\nimport Data.Foldable (traverse_)\nimport Data.Functor.Contravariant (class Contravariant)\nimport Data.Maybe (Maybe(..))\nimport Effect (Effect)\nimport Effect.Ref as Ref\nimport Effect.Unsafe (unsafePerformEffect)\nimport Safe.Coerce (coerce)\nimport Unsafe.Reference (unsafeRefEq)\n\n-- | A paired `Listener` and `Emitter` produced with the `create` function.\ntype SubscribeIO a =\n { listener :: Listener a\n , emitter :: Emitter a\n }\n\n-- | Create a paired `Listener` and `Emitter`, where you can push values to\n-- | the listener and subscribe to values from the emitter.\n-- |\n-- | ```purs\n-- | { emitter, listener } <- create\n-- |\n-- | -- Push values into the listener:\n-- | notify listener \"hello\"\n-- |\n-- | -- Subscribe to outputs from the emitter with a callback:\n-- | subscription <- subscribe emitter \\value ->\n-- | Console.log value\n-- |\n-- | -- Unsubscribe at any time:\n-- | unsubscribe subscription\n-- | ```\ncreate :: forall a. Effect (SubscribeIO a)\ncreate = do\n subscribers <- Ref.new []\n pure\n { emitter: Emitter \\k -> do\n Ref.modify_ (_ <> [k]) subscribers\n pure $ Subscription do\n Ref.modify_ (deleteBy unsafeRefEq k) subscribers\n , listener: Listener \\a -> do\n Ref.read subscribers >>= traverse_ \\k -> k a\n }\n\n-- | An `Emitter` represents a collection of discrete occurrences of an event;\n-- | conceptually, an emitter is a possibly-infinite list of values.\n-- |\n-- | Emitters are created from real events like timers or mouse clicks and can\n-- | be combined or transformed with the functions and instances in this module.\n-- |\n-- | Emitters are consumed by providing a callback via the `subscribe` function.\nnewtype Emitter a = Emitter ((a -> Effect Unit) -> Effect Subscription)\n\ninstance functorEmitter :: Functor Emitter where\n map f (Emitter e) = Emitter \\k -> e (k <<< f)\n\ninstance applyEmitter :: Apply Emitter where\n apply (Emitter e1) (Emitter e2) = Emitter \\k -> do\n latestA <- Ref.new Nothing\n latestB <- Ref.new Nothing\n Subscription c1 <- e1 \\a -> do\n Ref.write (Just a) latestA\n Ref.read latestB >>= traverse_ (k <<< a)\n Subscription c2 <- e2 \\b -> do\n Ref.write (Just b) latestB\n Ref.read latestA >>= traverse_ (k <<< (_ $ b))\n pure (Subscription (c1 *> c2))\n\ninstance applicativeEmitter :: Applicative Emitter where\n pure a = Emitter \\k -> do\n k a\n pure (Subscription (pure unit))\n\ninstance altEmitter :: Alt Emitter where\n alt (Emitter f) (Emitter g) = Emitter \\k -> do\n Subscription c1 <- f k\n Subscription c2 <- g k\n pure (Subscription (c1 *> c2))\n\ninstance plusEmitter :: Plus Emitter where\n empty = Emitter \\_ -> pure (Subscription (pure unit))\n\ninstance alternativeEmitter :: Alternative Emitter\n\ninstance semigroupEmitter :: Semigroup a => Semigroup (Emitter a) where\n append = lift2 append\n\ninstance monoidEmitter :: Monoid a => Monoid (Emitter a) where\n mempty = Emitter mempty\n\n-- | Make an `Emitter` from a function which accepts a callback and returns an\n-- | unsubscription function.\n-- |\n-- | Note: You should use `create` unless you need explicit control over\n-- | unsubscription.\nmakeEmitter\n :: forall a\n . ((a -> Effect Unit) -> Effect (Effect Unit))\n -> Emitter a\nmakeEmitter = coerce\n\n-- | Conceptually, a `Listener` represents an input source to an `Emitter`. You\n-- | can push a value to its paired emitter with the `notify` function.\nnewtype Listener a = Listener (a -> Effect Unit)\n\ninstance contravariantListener :: Contravariant Listener where\n cmap f (Listener g) = coerce (g <<< f)\n\n-- | Push a value to the `Emitter` paired with the provided `Listener` argument.\n-- |\n-- | ```purs\n-- | -- Create an emitter and listener with `create`:\n-- | { emitter, listener } <- create\n-- |\n-- | -- Then, push values to the emitter via the listener with `notify`:\n-- | notify listener \"hello\"\n-- | ```\nnotify :: forall a. Listener a -> a -> Effect Unit\nnotify (Listener f) a = f a\n\n-- | A `Subscription` results from subscribing to an `Emitter` with `subscribe`;\n-- | the subscription can be ended at any time with `unsubscribe`.\nnewtype Subscription = Subscription (Effect Unit)\n\nderive newtype instance semigroupSubscription :: Semigroup Subscription\nderive newtype instance monoidSubscription :: Monoid Subscription\n\n-- | Subscribe to an `Emitter` by providing a callback to run on values produced\n-- | by the emitter:\n-- |\n-- | ```purs\n-- | -- Produce an emitter / listener pair with `create`:\n-- | { emitter, listener } <- create\n-- |\n-- | -- Then, subscribe to the emitter by providing a callback:\n-- | subscription <- subscribe emitter \\emitted ->\n-- | doSomethingWith emitted\n-- |\n-- | -- End the subscription at any time with `unsubscribe`:\n-- | unsubscribe subscription\n-- | ```\nsubscribe\n :: forall r a\n . Emitter a\n -> (a -> Effect r)\n -> Effect Subscription\nsubscribe (Emitter e) k = e (void <<< k)\n\n-- | End a subscription to an `Emitter`.\nunsubscribe :: Subscription -> Effect Unit\nunsubscribe (Subscription unsub) = unsub\n\n-- | Fold over values received from some `Emitter`, creating a new `Emitter`.\nfold :: forall a b. (a -> b -> b) -> Emitter a -> b -> Emitter b\nfold f (Emitter e) b = Emitter \\k -> do\n result <- Ref.new b\n e \\a -> Ref.modify (f a) result >>= k\n\n-- | Create an `Emitter` which only fires when a predicate holds.\nfilter :: forall a. (a -> Boolean) -> Emitter a -> Emitter a\nfilter p (Emitter e) = Emitter \\k -> e \\a -> if p a then k a else pure unit\n\n-- | Compute a fixed point.\nfix :: forall i o. (Emitter i -> { input :: Emitter i, output :: Emitter o }) -> Emitter o\nfix f = Emitter \\k -> do\n Subscription c1 <- subscribe input (notify listener)\n Subscription c2 <- subscribe output k\n pure (Subscription (c1 *> c2))\n where\n { emitter, listener } = unsafePerformEffect create\n { input, output } = f emitter\n", "module Halogen.Query.HalogenM where\n\nimport Prelude\n\nimport Control.Applicative.Free (FreeAp, liftFreeAp, hoistFreeAp)\nimport Control.Monad.Error.Class (class MonadThrow, throwError)\nimport Control.Monad.Free (Free, hoistFree, liftF)\nimport Control.Monad.Reader.Class (class MonadAsk, ask)\nimport Control.Monad.Rec.Class (class MonadRec, tailRecM, Step(..))\nimport Control.Monad.State.Class (class MonadState)\nimport Control.Monad.Trans.Class (class MonadTrans)\nimport Control.Monad.Writer.Class (class MonadTell, tell)\nimport Control.Parallel.Class (class Parallel)\nimport Data.Bifunctor (lmap)\nimport Data.FoldableWithIndex (foldrWithIndex)\nimport Data.Map (Map)\nimport Data.Map as Map\nimport Data.Maybe (Maybe(..), maybe)\nimport Data.Newtype (class Newtype, over)\nimport Data.Symbol (class IsSymbol)\nimport Data.Traversable (traverse)\nimport Data.Tuple (Tuple)\nimport Effect.Aff.Class (class MonadAff, liftAff)\nimport Effect.Class (class MonadEffect, liftEffect)\nimport Halogen.Data.Slot (Slot)\nimport Halogen.Data.Slot as Slot\nimport Halogen.Query.ChildQuery as CQ\nimport Halogen.Query.Input (RefLabel)\nimport Halogen.Subscription as HS\nimport Prim.Row as Row\nimport Type.Proxy (Proxy)\nimport Web.DOM (Element)\n\n-- | The Halogen component eval algebra.\n-- |\n-- | - `state` is the component's state\n-- | - `action` is the type of actions; events internal to the component that\n-- | can be evaluated\n-- | - `slots` is the set of slots for addressing child components\n-- | - `output` is the type of output messages the component can raise\n-- | - `m` is the monad used during evaluation\n-- | - `a` is the result of the HalogenF expression (see HalogenM for an example).\ndata HalogenF state action slots output m a\n = State (state -> Tuple a state)\n | Subscribe (SubscriptionId -> HS.Emitter action) (SubscriptionId -> a)\n | Unsubscribe SubscriptionId a\n | Lift (m a)\n | ChildQuery (CQ.ChildQueryBox slots a)\n | Raise output a\n | Par (HalogenAp state action slots output m a)\n | Fork (HalogenM state action slots output m Unit) (ForkId -> a)\n | Join ForkId a\n | Kill ForkId a\n | GetRef RefLabel (Maybe Element -> a)\n\ninstance functorHalogenF :: Functor m => Functor (HalogenF state action slots output m) where\n map f = case _ of\n State k -> State (lmap f <<< k)\n Subscribe fes k -> Subscribe fes (f <<< k)\n Unsubscribe sid a -> Unsubscribe sid (f a)\n Lift q -> Lift (map f q)\n ChildQuery cq -> ChildQuery (map f cq)\n Raise o a -> Raise o (f a)\n Par pa -> Par (map f pa)\n Fork hmu k -> Fork hmu (f <<< k)\n Join fid a -> Join fid (f a)\n Kill fid a -> Kill fid (f a)\n GetRef p k -> GetRef p (f <<< k)\n\n-- | The Halogen component eval effect monad.\n-- |\n-- | - `state` is the component's state\n-- | - `action` is the type of actions; events internal to the component that\n-- | can be evaluated\n-- | - `slots` is the set of slots for addressing child components\n-- | - `output` is the type of output messages the component can raise\n-- | - `m` is the monad used during evaluation\n-- | - `a` is the result of the HalogenM expression. Use the following pattern:\n-- | `handleAction :: Action -> H.HalogenM State Action Slots Output m Unit`\n-- | `handleQuery :: forall a. Query a -> H.HalogenM State Action Slots Output m (Maybe a)`\nnewtype HalogenM state action slots output m a = HalogenM (Free (HalogenF state action slots output m) a)\n\nderive newtype instance functorHalogenM :: Functor (HalogenM state action slots output m)\nderive newtype instance applyHalogenM :: Apply (HalogenM state action slots output m)\nderive newtype instance applicativeHalogenM :: Applicative (HalogenM state action slots output m)\nderive newtype instance bindHalogenM :: Bind (HalogenM state action slots output m)\nderive newtype instance monadHalogenM :: Monad (HalogenM state action slots output m)\nderive newtype instance semigroupHalogenM :: Semigroup a => Semigroup (HalogenM state action slots output m a)\nderive newtype instance monoidHalogenM :: Monoid a => Monoid (HalogenM state action slots output m a)\n\ninstance monadEffectHalogenM :: MonadEffect m => MonadEffect (HalogenM state action slots output m) where\n liftEffect = HalogenM <<< liftF <<< Lift <<< liftEffect\n\ninstance monadAffHalogenM :: MonadAff m => MonadAff (HalogenM state action slots output m) where\n liftAff = HalogenM <<< liftF <<< Lift <<< liftAff\n\ninstance parallelHalogenM :: Parallel (HalogenAp state action slots output m) (HalogenM state action slots output m) where\n parallel = HalogenAp <<< liftFreeAp\n sequential = HalogenM <<< liftF <<< Par\n\ninstance monadTransHalogenM :: MonadTrans (HalogenM state action slots o) where\n lift = HalogenM <<< liftF <<< Lift\n\ninstance monadRecHalogenM :: MonadRec (HalogenM state action slots output m) where\n tailRecM k a = k a >>= case _ of\n Loop x -> tailRecM k x\n Done y -> pure y\n\ninstance monadStateHalogenM :: MonadState state (HalogenM state action slots output m) where\n state = HalogenM <<< liftF <<< State\n\ninstance monadAskHalogenM :: MonadAsk r m => MonadAsk r (HalogenM state action slots output m) where\n ask = HalogenM $ liftF $ Lift ask\n\ninstance monadTellHalogenM :: MonadTell w m => MonadTell w (HalogenM state action slots output m) where\n tell = HalogenM <<< liftF <<< Lift <<< tell\n\ninstance monadThrowHalogenM :: MonadThrow e m => MonadThrow e (HalogenM state action slots output m) where\n throwError = HalogenM <<< liftF <<< Lift <<< throwError\n\n-- | An applicative-only version of `HalogenM` to allow for parallel evaluation.\nnewtype HalogenAp state action slots output m a = HalogenAp (FreeAp (HalogenM state action slots output m) a)\n\nderive instance newtypeHalogenAp :: Newtype (HalogenAp state query slots output m a) _\nderive newtype instance functorHalogenAp :: Functor (HalogenAp state query slots output m)\nderive newtype instance applyHalogenAp :: Apply (HalogenAp state query slots output m)\nderive newtype instance applicativeHalogenAp :: Applicative (HalogenAp state query slots output m)\n\n-- | Raises an output message for the component.\nraise :: forall state action slots output m. output -> HalogenM state action slots output m Unit\nraise o = HalogenM $ liftF $ Raise o unit\n\n-- | Sends a query to a child of a component at the specified slot.\nquery\n :: forall state action output m label slots query output' slot a _1\n . Row.Cons label (Slot query output' slot) _1 slots\n => IsSymbol label\n => Ord slot\n => Proxy label\n -> slot\n -> query a\n -> HalogenM state action slots output m (Maybe a)\nquery label p q = HalogenM $ liftF $ ChildQuery $ CQ.mkChildQueryBox $\n CQ.ChildQuery (\\k -> maybe (pure Nothing) k <<< Slot.lookup label p) q identity\n\n-- | Sends a query to all children of a component at a given slot label.\nqueryAll\n :: forall state action output m label slots query output' slot a _1\n . Row.Cons label (Slot query output' slot) _1 slots\n => IsSymbol label\n => Ord slot\n => Proxy label\n -> query a\n -> HalogenM state action slots output m (Map slot a)\nqueryAll label q =\n HalogenM $ liftF $ ChildQuery $ CQ.mkChildQueryBox $\n CQ.ChildQuery (\\k -> map catMapMaybes <<< traverse k <<< Slot.slots label) q identity\n where\n catMapMaybes :: forall k v. Ord k => Map k (Maybe v) -> Map k v\n catMapMaybes = foldrWithIndex (\\k v acc -> maybe acc (flip (Map.insert k) acc) v) Map.empty\n\n-- | The ID value associated with a subscription. Allows the subscription to be\n-- | stopped at a later time.\nnewtype SubscriptionId = SubscriptionId Int\n\nderive newtype instance eqSubscriptionId :: Eq SubscriptionId\nderive newtype instance ordSubscriptionId :: Ord SubscriptionId\n\n-- | Subscribes a component to an `Emitter`.\n-- |\n-- | When a component is disposed of any active subscriptions will automatically\n-- | be stopped and no further subscriptions will be possible during\n-- | finalization.\nsubscribe :: forall state action slots output m. HS.Emitter action -> HalogenM state action slots output m SubscriptionId\nsubscribe es = HalogenM $ liftF $ Subscribe (\\_ -> es) identity\n\n-- | An alternative to `subscribe`, intended for subscriptions that unsubscribe\n-- | themselves. Instead of returning the `SubscriptionId` from `subscribe'`, it\n-- | is passed into an `Emitter` constructor. This allows emitted queries\n-- | to include the `SubscriptionId`, rather than storing it in the state of the\n-- | component.\n-- |\n-- | When a component is disposed of any active subscriptions will automatically\n-- | be stopped and no further subscriptions will be possible during\n-- | finalization.\nsubscribe' :: forall state action slots output m. (SubscriptionId -> HS.Emitter action) -> HalogenM state action slots output m Unit\nsubscribe' esc = HalogenM $ liftF $ Subscribe esc (const unit)\n\n-- | Unsubscribes a component from a subscription. If the subscription associated\n-- | with the ID has already ended this will have no effect.\nunsubscribe :: forall state action slots output m. SubscriptionId -> HalogenM state action slots output m Unit\nunsubscribe sid = HalogenM $ liftF $ Unsubscribe sid unit\n\n-- | The ID value associated with a forked process. Allows the fork to be killed\n-- | at a later time.\nnewtype ForkId = ForkId Int\n\nderive newtype instance eqForkId :: Eq ForkId\nderive newtype instance ordForkId :: Ord ForkId\n\n-- | Starts a `HalogenM` process running independent from the current `eval`\n-- | \"thread\".\n-- |\n-- | A commonly use case for `fork` is in component initializers where some\n-- | async action is started. Normally all interaction with the component will\n-- | be blocked until the initializer completes, but if the async action is\n-- | `fork`ed instead, the initializer can complete synchronously while the\n-- | async action continues.\n-- |\n-- | Some care needs to be taken when using a `fork` that can modify the\n-- | component state, as it's easy for the forked process to \"clobber\" the state\n-- | (overwrite some or all of it with an old value) by mistake.\n-- |\n-- | When a component is disposed of any active forks will automatically\n-- | be killed. New forks can be started during finalization but there will be\n-- | no means of killing them.\nfork :: forall state action slots output m. HalogenM state action slots output m Unit -> HalogenM state action slots output m ForkId\nfork hmu = HalogenM $ liftF $ Fork hmu identity\n\n-- | Joins a forked process. Attempting to join a forked process that has\n-- | already ended will result in eval continuing immediately. Attempting\n-- | to join a forked process that has been killed will also terminate the\n-- | current eval.\njoin :: forall state action slots output m. ForkId -> HalogenM state action slots output m Unit\njoin fid = HalogenM $ liftF $ Join fid unit\n\n-- | Kills a forked process if it is still running. Attempting to kill a forked\n-- | process that has already ended will have no effect.\nkill :: forall state action slots output m. ForkId -> HalogenM state action slots output m Unit\nkill fid = HalogenM $ liftF $ Kill fid unit\n\n-- | Retrieves an `Element` value that is associated with a `Ref` in the\n-- | rendered output of a component. If there is no currently rendered value for\n-- | the requested ref this will return `Nothing`.\ngetRef :: forall state action slots output m. RefLabel -> HalogenM state action slots output m (Maybe Element)\ngetRef p = HalogenM $ liftF $ GetRef p identity\n\nimapState\n :: forall state state' action slots output m a\n . (state -> state')\n -> (state' -> state)\n -> HalogenM state action slots output m a\n -> HalogenM state' action slots output m a\nimapState f f' (HalogenM h) = HalogenM (hoistFree go h)\n where\n go :: HalogenF state action slots output m ~> HalogenF state' action slots output m\n go = case _ of\n State fs -> State (map f <<< fs <<< f')\n Subscribe fes k -> Subscribe fes k\n Unsubscribe sid a -> Unsubscribe sid a\n Lift q -> Lift q\n ChildQuery cq -> ChildQuery cq\n Raise o a -> Raise o a\n Par p -> Par (over HalogenAp (hoistFreeAp (imapState f f')) p)\n Fork hmu k -> Fork (imapState f f' hmu) k\n Join fid a -> Join fid a\n Kill fid a -> Kill fid a\n GetRef p k -> GetRef p k\n\nmapAction\n :: forall state action action' slots output m a\n . Functor m\n => (action -> action')\n -> HalogenM state action slots output m a\n -> HalogenM state action' slots output m a\nmapAction f (HalogenM h) = HalogenM (hoistFree go h)\n where\n go :: HalogenF state action slots output m ~> HalogenF state action' slots output m\n go = case _ of\n State fs -> State fs\n Subscribe fes k -> Subscribe (map f <<< fes) k\n Unsubscribe sid a -> Unsubscribe sid a\n Lift q -> Lift q\n ChildQuery cq -> ChildQuery cq\n Raise o a -> Raise o a\n Par p -> Par (over HalogenAp (hoistFreeAp (mapAction f)) p)\n Fork hmu k -> Fork (mapAction f hmu) k\n Join fid a -> Join fid a\n Kill fid a -> Kill fid a\n GetRef p k -> GetRef p k\n\nmapOutput\n :: forall state action slots output output' m a\n . (output -> output')\n -> HalogenM state action slots output m a\n -> HalogenM state action slots output' m a\nmapOutput f (HalogenM h) = HalogenM (hoistFree go h)\n where\n go :: HalogenF state action slots output m ~> HalogenF state action slots output' m\n go = case _ of\n State fs -> State fs\n Subscribe fes k -> Subscribe fes k\n Unsubscribe sid a -> Unsubscribe sid a\n Lift q -> Lift q\n ChildQuery cq -> ChildQuery cq\n Raise o a -> Raise (f o) a\n Par p -> Par (over HalogenAp (hoistFreeAp (mapOutput f)) p)\n Fork hmu k -> Fork (mapOutput f hmu) k\n Join fid a -> Join fid a\n Kill fid a -> Kill fid a\n GetRef p k -> GetRef p k\n\nhoist\n :: forall state action slots output m m' a\n . Functor m'\n => (m ~> m')\n -> HalogenM state action slots output m a\n -> HalogenM state action slots output m' a\nhoist nat (HalogenM fa) = HalogenM (hoistFree go fa)\n where\n go :: HalogenF state action slots output m ~> HalogenF state action slots output m'\n go = case _ of\n State f -> State f\n Subscribe fes k -> Subscribe fes k\n Unsubscribe sid a -> Unsubscribe sid a\n Lift q -> Lift (nat q)\n ChildQuery cq -> ChildQuery cq\n Raise o a -> Raise o a\n Par p -> Par (over HalogenAp (hoistFreeAp (hoist nat)) p)\n Fork hmu k -> Fork (hoist nat hmu) k\n Join fid a -> Join fid a\n Kill fid a -> Kill fid a\n GetRef p k -> GetRef p k\n", "module Halogen.Query.HalogenQ where\n\nimport Prelude\n\nimport Data.Bifunctor (class Bifunctor)\nimport Data.Coyoneda (Coyoneda)\n\ndata HalogenQ query action input a\n = Initialize a\n | Finalize a\n | Receive input a\n | Action action a\n | Query (Coyoneda query a) (Unit -> a)\n\ninstance bifunctorHalogenQ :: Bifunctor (HalogenQ query action) where\n bimap f g = case _ of\n Initialize a -> Initialize (g a)\n Finalize a -> Finalize (g a)\n Receive i a -> Receive (f i) (g a)\n Action action a -> Action action (g a)\n Query fa k -> Query (map g fa) (map g k)\n\nderive instance functorHalogenQ :: Functor (HalogenQ query action input)\n", "module Halogen.VDom.Thunk\n ( Thunk\n , buildThunk\n , runThunk\n , hoist\n , mapThunk\n , thunked\n , thunk1\n , thunk2\n , thunk3\n ) where\n\nimport Prelude\n\nimport Data.Function.Uncurried as Fn\nimport Effect.Uncurried as EFn\nimport Halogen.VDom as V\nimport Halogen.VDom.Machine as M\nimport Halogen.VDom.Util as Util\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM.Node (Node)\n\nforeign import data ThunkArg \u2237 Type\n\nforeign import data ThunkId \u2237 Type\n\ndata Thunk :: (Type -> Type) -> Type -> Type\ndata Thunk f i = Thunk ThunkId (Fn.Fn2 ThunkArg ThunkArg Boolean) (ThunkArg \u2192 f i) ThunkArg\n\nunsafeThunkId \u2237 \u2200 a. a \u2192 ThunkId\nunsafeThunkId = unsafeCoerce\n\ninstance functorThunk \u2237 Functor f \u21D2 Functor (Thunk f) where\n map f (Thunk a b c d) = Thunk a b (c >>> map f) d\n\nhoist \u2237 \u2200 f g. (f ~> g) \u2192 Thunk f ~> Thunk g\nhoist = mapThunk\n\nmapThunk \u2237 \u2200 f g i j. (f i -> g j) \u2192 Thunk f i -> Thunk g j\nmapThunk k (Thunk a b c d) = Thunk a b (c >>> k) d\n\nthunk \u2237 \u2200 a f i. Fn.Fn4 ThunkId (Fn.Fn2 a a Boolean) (a \u2192 f i) a (Thunk f i)\nthunk = Fn.mkFn4 \\tid eqFn f a \u2192\n Thunk tid\n (unsafeCoerce eqFn \u2237 Fn.Fn2 ThunkArg ThunkArg Boolean)\n (unsafeCoerce f \u2237 ThunkArg \u2192 f i)\n (unsafeCoerce a \u2237 ThunkArg)\n\nthunked \u2237 \u2200 a f i. (a \u2192 a \u2192 Boolean) \u2192 (a \u2192 f i) \u2192 a \u2192 Thunk f i\nthunked eqFn f =\n let\n tid = unsafeThunkId { f }\n eqFn' = Fn.mkFn2 eqFn\n in\n \\a \u2192 Fn.runFn4 thunk tid eqFn' f a\n\nthunk1 \u2237 \u2200 a f i. Fn.Fn2 (a \u2192 f i) a (Thunk f i)\nthunk1 = Fn.mkFn2 \\f a \u2192 Fn.runFn4 thunk (unsafeThunkId f) Util.refEq f a\n\nthunk2 \u2237 \u2200 a b f i. Fn.Fn3 (a \u2192 b \u2192 f i) a b (Thunk f i)\nthunk2 =\n let\n eqFn = Fn.mkFn2 \\a b \u2192\n Fn.runFn2 Util.refEq a._1 b._1 &&\n Fn.runFn2 Util.refEq a._2 b._2\n in\n Fn.mkFn3 \\f a b \u2192\n Fn.runFn4 thunk (unsafeThunkId f) eqFn (\\{ _1, _2 } \u2192 f _1 _2) { _1: a, _2: b }\n\nthunk3 \u2237 \u2200 a b c f i. Fn.Fn4 (a \u2192 b \u2192 c \u2192 f i) a b c (Thunk f i)\nthunk3 =\n let\n eqFn = Fn.mkFn2 \\a b \u2192\n Fn.runFn2 Util.refEq a._1 b._1 &&\n Fn.runFn2 Util.refEq a._2 b._2 &&\n Fn.runFn2 Util.refEq a._3 b._3\n in\n Fn.mkFn4 \\f a b c \u2192\n Fn.runFn4 thunk (unsafeThunkId f) eqFn (\\{ _1, _2, _3 } \u2192 f _1 _2 _3) { _1: a, _2: b, _3: c }\n\nrunThunk \u2237 \u2200 f i. Thunk f i \u2192 f i\nrunThunk (Thunk _ _ render arg) = render arg\n\nunsafeEqThunk \u2237 \u2200 f i. Fn.Fn2 (Thunk f i) (Thunk f i) Boolean\nunsafeEqThunk = Fn.mkFn2 \\(Thunk a1 b1 _ d1) (Thunk a2 b2 _ d2) \u2192\n Fn.runFn2 Util.refEq a1 a2 &&\n Fn.runFn2 Util.refEq b1 b2 &&\n Fn.runFn2 b1 d1 d2\n\ntype ThunkState :: (Type -> Type) -> Type -> Type -> Type -> Type\ntype ThunkState f i a w =\n { thunk \u2237 Thunk f i\n , vdom \u2237 M.Step (V.VDom a w) Node\n }\n\nbuildThunk\n \u2237 \u2200 f i a w\n . (f i \u2192 V.VDom a w)\n \u2192 V.VDomSpec a w\n \u2192 V.Machine (Thunk f i) Node\nbuildThunk toVDom = renderThunk\n where\n renderThunk \u2237 V.VDomSpec a w \u2192 V.Machine (Thunk f i) Node\n renderThunk spec = EFn.mkEffectFn1 \\t \u2192 do\n vdom \u2190 EFn.runEffectFn1 (V.buildVDom spec) (toVDom (runThunk t))\n pure $ M.mkStep $ M.Step (M.extract vdom) { thunk: t, vdom } patchThunk haltThunk\n\n patchThunk \u2237 EFn.EffectFn2 (ThunkState f i a w) (Thunk f i) (V.Step (Thunk f i) Node)\n patchThunk = EFn.mkEffectFn2 \\state t2 \u2192 do\n let { vdom: prev, thunk: t1 } = state\n if Fn.runFn2 unsafeEqThunk t1 t2\n then pure $ M.mkStep $ M.Step (M.extract prev) state patchThunk haltThunk\n else do\n vdom \u2190 EFn.runEffectFn2 M.step prev (toVDom (runThunk t2))\n pure $ M.mkStep $ M.Step (M.extract vdom) { vdom, thunk: t2 } patchThunk haltThunk\n\n haltThunk \u2237 EFn.EffectFn1 (ThunkState f i a w) Unit\n haltThunk = EFn.mkEffectFn1 \\state \u2192 do\n EFn.runEffectFn1 M.halt state.vdom\n", "module Halogen.Component\n ( Component\n , ComponentSpec\n , mkComponent\n , unComponent\n , hoist\n , EvalSpec\n , mkEval\n , defaultEval\n , ComponentSlotBox\n , ComponentSlot(..)\n , componentSlot\n , ComponentSlotSpec\n , mkComponentSlot\n , unComponentSlot\n , hoistSlot\n ) where\n\nimport Prelude\n\nimport Data.Bifunctor (bimap, lmap)\nimport Data.Coyoneda (unCoyoneda)\nimport Data.Foldable (traverse_)\nimport Data.Maybe (Maybe(..), maybe)\nimport Data.Symbol (class IsSymbol)\nimport Data.Tuple (Tuple)\nimport Halogen.Data.Slot (Slot, SlotStorage)\nimport Halogen.Data.Slot as Slot\nimport Halogen.HTML.Core as HC\nimport Halogen.Query.HalogenM (HalogenM)\nimport Halogen.Query.HalogenM as HM\nimport Halogen.Query.HalogenQ (HalogenQ(..))\nimport Halogen.VDom.Thunk (Thunk)\nimport Halogen.VDom.Thunk as Thunk\nimport Prim.Row as Row\nimport Type.Proxy (Proxy)\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | The \"public\" type for a component, with details of the component internals\n-- | existentially hidden.\n-- |\n-- | `HTML`\n-- | - `query` is the query algebra; the requests that can be made of the\n-- | component\n-- | - `input` is the input value that will be received when the parent of\n-- | this component renders\n-- | - `output` is the type of messages the component can raise\n-- | - `m` is the effect monad used during evaluation\ndata Component\n (query :: Type -> Type)\n (input :: Type)\n (output :: Type)\n (m :: Type -> Type)\n\n-- | The spec for a component.\n-- |\n-- | The type variables involved:\n-- | - `state` is the component's state\n-- | - `query` is the query algebra; the requests that can be made of the\n-- | component\n-- | - `action` is the type of actions; messages internal to the component that\n-- | can be evaluated\n-- | - `slots` is the set of slots for addressing child components\n-- | - `input` is the input value that will be received when the parent of\n-- | this component renders\n-- | - `output` is the type of messages the component can raise\n-- | - `m` is the effect monad used during evaluation\n-- |\n-- | The values in the record:\n-- | - `initialState` is a function that accepts an input value and produces the\n-- | state the component will start with. If the input value is unused\n-- | (`Unit`), or irrelevant to the state construction, this will often be\n-- | `const ?someInitialStateValue`.\n-- | - `render` is a function that accepts the component's current state and\n-- | produces a value to render (`HTML` usually). The rendered output can\n-- | raise actions that will be handled in `eval`.\n-- | - `eval` is a function that handles the `HalogenQ` algebra that deals with\n-- | component lifecycle, handling actions, and responding to requests.\ntype ComponentSpec state query action slots input output m =\n { initialState :: input -> state\n , render :: state -> HC.HTML (ComponentSlot slots m action) action\n , eval :: HalogenQ query action input ~> HalogenM state action slots output m\n }\n\n-- | Constructs a [`Component`](#t:Component) from a [`ComponentSpec`](#t:ComponentSpec).\nmkComponent\n :: forall state query action slots input output m\n . ComponentSpec state query action slots input output m\n -> Component query input output m\nmkComponent = unsafeCoerce\n\n-- | Exposes the inner details of a [`Component`](#t:Component) to a function\n-- | to produce a new result.\n-- |\n-- | The hidden details will not be allowed to be revealed in the result\n-- | of the function - if any of the hidden types (state, action, set of slots)\n-- | appear in the result, the compiler will complain about an escaped skolem.\nunComponent\n :: forall query input output m a\n . (forall state action slots. ComponentSpec state query action slots input output m -> a)\n -> Component query input output m\n -> a\nunComponent = unsafeCoerce\n\n-- | Changes the [`Component`](#t:Component)'s `m` type. A use case for this\n-- | might be to interpret some `Free` monad as `Aff` so the component can be\n-- | used with `runUI`.\nhoist\n :: forall query input output m m'\n . Functor m'\n => (m ~> m')\n -> Component query input output m\n -> Component query input output m'\nhoist nat = unComponent \\c ->\n mkComponent\n { initialState: c.initialState\n , render: lmap (hoistSlot nat) <<< c.render\n , eval: HM.hoist nat <<< c.eval\n }\n\n-- | The spec record that `mkEval` accepts to construct a component `eval`\n-- | function.\n-- |\n-- | It's not a requirement to use `mkEval`, and sometimes it's preferrable\n-- | to write a component `eval` function from scratch, but often `mkEval` is\n-- | more convenient for common cases.\n-- |\n-- | See below for more details about `mkEval` and `defaultEval`.\ntype EvalSpec state query action slots input output m =\n { handleAction :: action -> HalogenM state action slots output m Unit\n , handleQuery :: forall a. query a -> HalogenM state action slots output m (Maybe a)\n , receive :: input -> Maybe action\n , initialize :: Maybe action\n , finalize :: Maybe action\n }\n\n-- | A default value for `mkEval` that will result in an `eval` that nothing at\n-- | all - all incoming actions and queries will be ignored, and no receiver,\n-- | initializer, or finalizer will be specified.\n-- |\n-- | Usually this will be used with record update syntax to override fields to\n-- | specify things as needed. If a component only needs to handle actions,\n-- | for instance, a usage might be something like this:\n-- |\n-- | ```purescript\n-- | H.mkComponent\n-- | { initialState\n-- | , render\n-- | , eval: H.mkEval (H.defaultEval { handleAction = ?handleAction })\n-- | }\n-- | ```\ndefaultEval :: forall state query action slots input output m. EvalSpec state query action slots input output m\ndefaultEval =\n { handleAction: const (pure unit)\n , handleQuery: const (pure Nothing)\n , receive: const Nothing\n , initialize: Nothing\n , finalize: Nothing\n }\n\n-- | Accepts an `EvalSpec` to produce an `eval` function for a component. For\n-- | example:\n-- |\n-- | ```purescript\n-- | -- use `defaultEval` and override fields selectively\n-- | H.mkEval (H.defaultEval { handleAction = ?handleAction })\n-- |\n-- | -- or specify all the fields in the `EvalSpec`\n-- | H.mkEval\n-- | { handleAction: ?handleAction\n-- | , handleQuery: ?handleQuery\n-- | , receive: ?receive\n-- | , initialize: ?initialize\n-- | , finalize: ?finalize\n-- | }\n-- | ```\nmkEval\n :: forall state query action slots input output m a\n . EvalSpec state query action slots input output m\n -> HalogenQ query action input a\n -> HalogenM state action slots output m a\nmkEval args = case _ of\n Initialize a ->\n traverse_ args.handleAction args.initialize $> a\n Finalize a ->\n traverse_ args.handleAction args.finalize $> a\n Receive i a ->\n traverse_ args.handleAction (args.receive i) $> a\n Action action a ->\n args.handleAction action $> a\n Query req f ->\n unCoyoneda (\\g -> map (maybe (f unit) g) <<< args.handleQuery) req\n\n-- | A slot for a child component in a component's rendered content.\ndata ComponentSlotBox\n (slots :: Row Type)\n (m :: Type -> Type)\n (action :: Type)\n\ninstance functorComponentSlotBox :: Functor (ComponentSlotBox slots m) where\n map f = unComponentSlot \\slot ->\n mkComponentSlot $ slot { output = map f <$> slot.output }\n\ndata ComponentSlot slots m action\n = ComponentSlot (ComponentSlotBox slots m action)\n | ThunkSlot (Thunk (HC.HTML (ComponentSlot slots m action)) action)\n\ninstance functorComponentSlot :: Functor (ComponentSlot slots m) where\n map f = case _ of\n ComponentSlot box -> ComponentSlot (map f box)\n ThunkSlot thunk -> ThunkSlot (Thunk.mapThunk (bimap (map f) f) thunk)\n\n-- | Constructs a [`ComponentSlot`](#t:ComponentSlot).\n-- |\n-- | Takes:\n-- | - the slot address label\n-- | - the slot address index\n-- | - the component for the slot\n-- | - the input value to pass to the component\n-- | - a function mapping outputs from the component to a query in the parent\ncomponentSlot\n :: forall query input output slots m action label slot _1\n . Row.Cons label (Slot query output slot) _1 slots\n => IsSymbol label\n => Ord slot\n => Proxy label\n -> slot\n -> Component query input output m\n -> input\n -> (output -> Maybe action)\n -> ComponentSlotBox slots m action\ncomponentSlot label p comp input output =\n mkComponentSlot\n { get: Slot.lookup label p\n , pop: Slot.pop label p\n , set: Slot.insert label p\n , component: comp\n , input: input\n , output\n }\n\n-- | The internal representation used for a [`ComponentSlot`](#t:ComponentSlot).\ntype ComponentSlotSpec query input output slots m action =\n { get :: forall slot. SlotStorage slots slot -> Maybe (slot query output)\n , pop :: forall slot. SlotStorage slots slot -> Maybe (Tuple (slot query output) (SlotStorage slots slot))\n , set :: forall slot. slot query output -> SlotStorage slots slot -> SlotStorage slots slot\n , component :: Component query input output m\n , input :: input\n , output :: output -> Maybe action\n }\n\n-- | Constructs [`ComponentSlotBox`](#t:ComponentSlot) from a [`ComponentSlotSpec`](#t:ComponentSlotSpec).\nmkComponentSlot\n :: forall query input output slots m action\n . ComponentSlotSpec query input output slots m action\n -> ComponentSlotBox slots m action\nmkComponentSlot = unsafeCoerce\n\n-- | Exposes the inner details of a [`ComponentSlot`](#t:ComponentSlot) to a\n-- | function to produce a new result.\n-- |\n-- | The hidden details will not be allowed to be revealed in the result\n-- | of the function - if any of the hidden types (state, action, set of slots)\n-- | appear in the result, the compiler will complain about an escaped skolem.\nunComponentSlot\n :: forall slots m action a\n . (forall query input output. ComponentSlotSpec query input output slots m action -> a)\n -> ComponentSlotBox slots m action\n -> a\nunComponentSlot = unsafeCoerce\n\n-- | Changes the [`ComponentSlot`](#t:ComponentSlot)'s `m` type.\nhoistSlot\n :: forall slots m m' action\n . Functor m'\n => (m ~> m')\n -> ComponentSlot slots m action\n -> ComponentSlot slots m' action\nhoistSlot nat = case _ of\n ComponentSlot cs ->\n cs # unComponentSlot \\slot ->\n ComponentSlot $ mkComponentSlot $ slot { component = hoist nat slot.component }\n ThunkSlot t ->\n ThunkSlot $ Thunk.hoist (lmap (hoistSlot nat)) t\n", "module Halogen.HTML.Elements\n ( Node\n , Leaf\n , element\n , elementNS\n , keyed\n , keyedNS\n , withKeys\n , withKeys_\n , a\n , a_\n , abbr\n , abbr_\n , address\n , address_\n , area\n , article\n , article_\n , aside\n , aside_\n , audio\n , audio_\n , b\n , b_\n , base\n , bdi\n , bdi_\n , bdo\n , bdo_\n , blockquote\n , blockquote_\n , body\n , body_\n , br\n , br_\n , button\n , button_\n , canvas\n , caption\n , caption_\n , cite\n , cite_\n , code\n , code_\n , col\n , colgroup\n , colgroup_\n , command\n , datalist\n , datalist_\n , dd\n , dd_\n , del\n , del_\n , details\n , details_\n , dfn\n , dfn_\n , dialog\n , dialog_\n , div\n , div_\n , dl\n , dl_\n , dt\n , dt_\n , em\n , em_\n , embed\n , embed_\n , fieldset\n , fieldset_\n , figcaption\n , figcaption_\n , figure\n , figure_\n , footer\n , footer_\n , form\n , form_\n , h1\n , h1_\n , h2\n , h2_\n , h3\n , h3_\n , h4\n , h4_\n , h5\n , h5_\n , h6\n , h6_\n , head\n , head_\n , header\n , header_\n , hr\n , hr_\n , html\n , html_\n , i\n , i_\n , iframe\n , img\n , input\n , ins\n , ins_\n , kbd\n , kbd_\n , label\n , label_\n , legend\n , legend_\n , li\n , li_\n , link\n , main\n , main_\n , map\n , map_\n , mark\n , mark_\n , menu\n , menu_\n , menuitem\n , menuitem_\n , meta\n , meter\n , meter_\n , nav\n , nav_\n , noscript\n , noscript_\n , object\n , object_\n , ol\n , ol_\n , optgroup\n , optgroup_\n , option\n , option_\n , output\n , output_\n , p\n , p_\n , param\n , pre\n , pre_\n , progress\n , progress_\n , q\n , q_\n , rp\n , rp_\n , rt\n , rt_\n , ruby\n , ruby_\n , samp\n , samp_\n , script\n , script_\n , section\n , section_\n , select\n , select_\n , small\n , small_\n , source\n , span\n , span_\n , strong\n , strong_\n , style\n , style_\n , sub\n , sub_\n , summary\n , summary_\n , sup\n , sup_\n , table\n , table_\n , tbody\n , tbody_\n , td\n , td_\n , textarea\n , tfoot\n , tfoot_\n , th\n , th_\n , thead\n , thead_\n , time\n , time_\n , title\n , title_\n , tr\n , tr_\n , track\n , u\n , u_\n , ul\n , ul_\n , var\n , var_\n , video\n , video_\n , wbr\n ) where\n\nimport Prelude ((#), (>>>), pure)\nimport Data.Maybe (Maybe(Nothing))\nimport Data.Tuple (Tuple)\n\nimport DOM.HTML.Indexed as I\n\nimport Halogen.HTML.Core (ElemName(..), HTML(..), Namespace, Prop)\nimport Halogen.HTML.Core as Core\nimport Halogen.HTML.Properties (IProp)\nimport Halogen.Query.Input (Input)\nimport Halogen.VDom as VDom\n\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | An HTML element that admits children.\ntype Node r w i = Array (IProp r i) -> Array (HTML w i) -> HTML w i\n\n-- | An HTML element that does not admit children.\ntype Leaf r w i = Array (IProp r i) -> HTML w i\n\n-- | Creates an HTML element that expects indexed properties.\nelement :: forall r w i. ElemName -> Array (IProp r i) -> Array (HTML w i) -> HTML w i\nelement =\n Core.element Nothing #\n ( unsafeCoerce\n :: (ElemName -> Array (Prop i) -> Array (HTML w i) -> HTML w i)\n -> ElemName\n -> Array (IProp r i)\n -> Array (HTML w i)\n -> HTML w i\n )\n\n-- | Creates a Namespaced HTML element that expects indexed properties.\nelementNS :: forall r w i. Namespace -> ElemName -> Array (IProp r i) -> Array (HTML w i) -> HTML w i\nelementNS =\n pure >>> Core.element >>>\n ( unsafeCoerce\n :: (ElemName -> Array (Prop i) -> Array (HTML w i) -> HTML w i)\n -> ElemName\n -> Array (IProp r i)\n -> Array (HTML w i)\n -> HTML w i\n )\n\n-- | Creates an HTML element that expects indexed properties, with keyed\n-- | children.\nkeyed :: forall r w i. ElemName -> Array (IProp r i) -> Array (Tuple String (HTML w i)) -> HTML w i\nkeyed =\n Core.keyed Nothing #\n ( unsafeCoerce\n :: (ElemName -> Array (Prop i) -> Array (Tuple String (HTML w i)) -> HTML w i)\n -> ElemName\n -> Array (IProp r i)\n -> Array (Tuple String (HTML w i))\n -> HTML w i\n )\n\n-- | Creates a Namespaced HTML element that expects indexed properties, with\n-- | keyed children.\nkeyedNS :: forall r w i. Namespace -> ElemName -> Array (IProp r i) -> Array (Tuple String (HTML w i)) -> HTML w i\nkeyedNS =\n pure >>> Core.keyed >>>\n ( unsafeCoerce\n :: (ElemName -> Array (Prop i) -> Array (Tuple String (HTML w i)) -> HTML w i)\n -> ElemName\n -> Array (IProp r i)\n -> Array (Tuple String (HTML w i))\n -> HTML w i\n )\n\nwithKeys :: forall r w i. (Array (IProp r i) -> Array (HTML w i) -> HTML w i) -> Array (IProp r i) -> Array (Tuple String (HTML w i)) -> HTML w i\nwithKeys ctor props children =\n case ctor props [] of\n HTML (VDom.Elem x y z _) -> HTML (VDom.Keyed x y z (coe children))\n h -> h\n where\n coe :: Array (Tuple String (HTML w i)) -> Array (Tuple String (VDom.VDom (Array (Prop (Input i))) w))\n coe = unsafeCoerce\n\nwithKeys_ :: forall w i. (Array (HTML w i) -> HTML w i) -> Array (Tuple String (HTML w i)) -> HTML w i\nwithKeys_ ctor children =\n case ctor [] of\n HTML (VDom.Elem x y z _) -> HTML (VDom.Keyed x y z (coe children))\n h -> h\n where\n coe :: Array (Tuple String (HTML w i)) -> Array (Tuple String (VDom.VDom (Array (Prop (Input i))) w))\n coe = unsafeCoerce\n\na :: forall w i. Node I.HTMLa w i\na = element (ElemName \"a\")\n\na_ :: forall w i. Array (HTML w i) -> HTML w i\na_ = a []\n\nabbr :: forall w i. Node I.HTMLabbr w i\nabbr = element (ElemName \"abbr\")\n\nabbr_ :: forall w i. Array (HTML w i) -> HTML w i\nabbr_ = abbr []\n\naddress :: forall w i. Node I.HTMLaddress w i\naddress = element (ElemName \"address\")\n\naddress_ :: forall w i. Array (HTML w i) -> HTML w i\naddress_ = address []\n\narea :: forall w i. Leaf I.HTMLarea w i\narea props = element (ElemName \"area\") props []\n\narticle :: forall w i. Node I.HTMLarticle w i\narticle = element (ElemName \"article\")\n\narticle_ :: forall w i. Array (HTML w i) -> HTML w i\narticle_ = article []\n\naside :: forall w i. Node I.HTMLaside w i\naside = element (ElemName \"aside\")\n\naside_ :: forall w i. Array (HTML w i) -> HTML w i\naside_ = aside []\n\naudio :: forall w i. Node I.HTMLaudio w i\naudio = element (ElemName \"audio\")\n\naudio_ :: forall w i. Array (HTML w i) -> HTML w i\naudio_ = audio []\n\nb :: forall w i. Node I.HTMLb w i\nb = element (ElemName \"b\")\n\nb_ :: forall w i. Array (HTML w i) -> HTML w i\nb_ = b []\n\nbase :: forall w i. Leaf I.HTMLbase w i\nbase props = element (ElemName \"base\") props []\n\nbdi :: forall w i. Node I.HTMLbdi w i\nbdi = element (ElemName \"bdi\")\n\nbdi_ :: forall w i. Array (HTML w i) -> HTML w i\nbdi_ = bdi []\n\nbdo :: forall w i. Node I.HTMLbdo w i\nbdo = element (ElemName \"bdo\")\n\nbdo_ :: forall w i. Array (HTML w i) -> HTML w i\nbdo_ = bdo []\n\nblockquote :: forall w i. Node I.HTMLblockquote w i\nblockquote = element (ElemName \"blockquote\")\n\nblockquote_ :: forall w i. Array (HTML w i) -> HTML w i\nblockquote_ = blockquote []\n\nbody :: forall w i. Node I.HTMLbody w i\nbody = element (ElemName \"body\")\n\nbody_ :: forall w i. Array (HTML w i) -> HTML w i\nbody_ = body []\n\nbr :: forall w i. Leaf I.HTMLbr w i\nbr props = element (ElemName \"br\") props []\n\nbr_ :: forall w i. HTML w i\nbr_ = br []\n\nbutton :: forall w i. Node I.HTMLbutton w i\nbutton = element (ElemName \"button\")\n\nbutton_ :: forall w i. Array (HTML w i) -> HTML w i\nbutton_ = button []\n\ncanvas :: forall w i. Leaf I.HTMLcanvas w i\ncanvas props = element (ElemName \"canvas\") props []\n\ncaption :: forall w i. Node I.HTMLcaption w i\ncaption = element (ElemName \"caption\")\n\ncaption_ :: forall w i. Array (HTML w i) -> HTML w i\ncaption_ = caption []\n\ncite :: forall w i. Node I.HTMLcite w i\ncite = element (ElemName \"cite\")\n\ncite_ :: forall w i. Array (HTML w i) -> HTML w i\ncite_ = cite []\n\ncode :: forall w i. Node I.HTMLcode w i\ncode = element (ElemName \"code\")\n\ncode_ :: forall w i. Array (HTML w i) -> HTML w i\ncode_ = code []\n\ncol :: forall w i. Leaf I.HTMLcol w i\ncol props = element (ElemName \"col\") props []\n\ncolgroup :: forall w i. Node I.HTMLcolgroup w i\ncolgroup = element (ElemName \"colgroup\")\n\ncolgroup_ :: forall w i. Array (HTML w i) -> HTML w i\ncolgroup_ = colgroup []\n\ncommand :: forall w i. Leaf I.HTMLcommand w i\ncommand props = element (ElemName \"command\") props []\n\ndatalist :: forall w i. Node I.HTMLdatalist w i\ndatalist = element (ElemName \"datalist\")\n\ndatalist_ :: forall w i. Array (HTML w i) -> HTML w i\ndatalist_ = datalist []\n\ndd :: forall w i. Node I.HTMLdd w i\ndd = element (ElemName \"dd\")\n\ndd_ :: forall w i. Array (HTML w i) -> HTML w i\ndd_ = dd []\n\ndel :: forall w i. Node I.HTMLdel w i\ndel = element (ElemName \"del\")\n\ndel_ :: forall w i. Array (HTML w i) -> HTML w i\ndel_ = del []\n\ndetails :: forall w i. Node I.HTMLdetails w i\ndetails = element (ElemName \"details\")\n\ndetails_ :: forall w i. Array (HTML w i) -> HTML w i\ndetails_ = details []\n\ndfn :: forall w i. Node I.HTMLdfn w i\ndfn = element (ElemName \"dfn\")\n\ndfn_ :: forall w i. Array (HTML w i) -> HTML w i\ndfn_ = dfn []\n\ndialog :: forall w i. Node I.HTMLdialog w i\ndialog = element (ElemName \"dialog\")\n\ndialog_ :: forall w i. Array (HTML w i) -> HTML w i\ndialog_ = dialog []\n\ndiv :: forall w i. Node I.HTMLdiv w i\ndiv = element (ElemName \"div\")\n\ndiv_ :: forall w i. Array (HTML w i) -> HTML w i\ndiv_ = div []\n\ndl :: forall w i. Node I.HTMLdl w i\ndl = element (ElemName \"dl\")\n\ndl_ :: forall w i. Array (HTML w i) -> HTML w i\ndl_ = dl []\n\ndt :: forall w i. Node (I.HTMLdt) w i\ndt = element (ElemName \"dt\")\n\ndt_ :: forall w i. Array (HTML w i) -> HTML w i\ndt_ = dt []\n\nem :: forall w i. Node I.HTMLem w i\nem = element (ElemName \"em\")\n\nem_ :: forall w i. Array (HTML w i) -> HTML w i\nem_ = em []\n\nembed :: forall w i. Node I.HTMLembed w i\nembed = element (ElemName \"embed\")\n\nembed_ :: forall w i. Array (HTML w i) -> HTML w i\nembed_ = embed []\n\nfieldset :: forall w i. Node I.HTMLfieldset w i\nfieldset = element (ElemName \"fieldset\")\n\nfieldset_ :: forall w i. Array (HTML w i) -> HTML w i\nfieldset_ = fieldset []\n\nfigcaption :: forall w i. Node I.HTMLfigcaption w i\nfigcaption = element (ElemName \"figcaption\")\n\nfigcaption_ :: forall w i. Array (HTML w i) -> HTML w i\nfigcaption_ = figcaption []\n\nfigure :: forall w i. Node I.HTMLfigure w i\nfigure = element (ElemName \"figure\")\n\nfigure_ :: forall w i. Array (HTML w i) -> HTML w i\nfigure_ = figure []\n\nfooter :: forall w i. Node I.HTMLfooter w i\nfooter = element (ElemName \"footer\")\n\nfooter_ :: forall w i. Array (HTML w i) -> HTML w i\nfooter_ = footer []\n\nform :: forall w i. Node I.HTMLform w i\nform = element (ElemName \"form\")\n\nform_ :: forall w i. Array (HTML w i) -> HTML w i\nform_ = form []\n\nh1 :: forall w i. Node I.HTMLh1 w i\nh1 = element (ElemName \"h1\")\n\nh1_ :: forall w i. Array (HTML w i) -> HTML w i\nh1_ = h1 []\n\nh2 :: forall w i. Node I.HTMLh2 w i\nh2 = element (ElemName \"h2\")\n\nh2_ :: forall w i. Array (HTML w i) -> HTML w i\nh2_ = h2 []\n\nh3 :: forall w i. Node I.HTMLh3 w i\nh3 = element (ElemName \"h3\")\n\nh3_ :: forall w i. Array (HTML w i) -> HTML w i\nh3_ = h3 []\n\nh4 :: forall w i. Node I.HTMLh4 w i\nh4 = element (ElemName \"h4\")\n\nh4_ :: forall w i. Array (HTML w i) -> HTML w i\nh4_ = h4 []\n\nh5 :: forall w i. Node I.HTMLh5 w i\nh5 = element (ElemName \"h5\")\n\nh5_ :: forall w i. Array (HTML w i) -> HTML w i\nh5_ = h5 []\n\nh6 :: forall w i. Node I.HTMLh6 w i\nh6 = element (ElemName \"h6\")\n\nh6_ :: forall w i. Array (HTML w i) -> HTML w i\nh6_ = h6 []\n\nhead :: forall w i. Node I.HTMLhead w i\nhead = element (ElemName \"head\")\n\nhead_ :: forall w i. Array (HTML w i) -> HTML w i\nhead_ = head []\n\nheader :: forall w i. Node I.HTMLheader w i\nheader = element (ElemName \"header\")\n\nheader_ :: forall w i. Array (HTML w i) -> HTML w i\nheader_ = header []\n\nhr :: forall w i. Leaf I.HTMLhr w i\nhr props = element (ElemName \"hr\") props []\n\nhr_ :: forall w i. HTML w i\nhr_ = hr []\n\nhtml :: forall w i. Node I.HTMLhtml w i\nhtml = element (ElemName \"html\")\n\nhtml_ :: forall w i. Array (HTML w i) -> HTML w i\nhtml_ = html []\n\ni :: forall w i. Node I.HTMLi w i\ni = element (ElemName \"i\")\n\ni_ :: forall w i. Array (HTML w i) -> HTML w i\ni_ = i []\n\niframe :: forall w i. Leaf I.HTMLiframe w i\niframe props = element (ElemName \"iframe\") props []\n\nimg :: forall w i. Leaf I.HTMLimg w i\nimg props = element (ElemName \"img\") props []\n\ninput :: forall w i. Leaf I.HTMLinput w i\ninput props = element (ElemName \"input\") props []\n\nins :: forall w i. Node I.HTMLins w i\nins = element (ElemName \"ins\")\n\nins_ :: forall w i. Array (HTML w i) -> HTML w i\nins_ = ins []\n\nkbd :: forall w i. Node I.HTMLkbd w i\nkbd = element (ElemName \"kbd\")\n\nkbd_ :: forall w i. Array (HTML w i) -> HTML w i\nkbd_ = kbd []\n\nlabel :: forall w i. Node I.HTMLlabel w i\nlabel = element (ElemName \"label\")\n\nlabel_ :: forall w i. Array (HTML w i) -> HTML w i\nlabel_ = label []\n\nlegend :: forall w i. Node I.HTMLlegend w i\nlegend = element (ElemName \"legend\")\n\nlegend_ :: forall w i. Array (HTML w i) -> HTML w i\nlegend_ = legend []\n\nli :: forall w i. Node I.HTMLli w i\nli = element (ElemName \"li\")\n\nli_ :: forall w i. Array (HTML w i) -> HTML w i\nli_ = li []\n\nlink :: forall w i. Leaf I.HTMLlink w i\nlink props = element (ElemName \"link\") props []\n\nmain :: forall w i. Node I.HTMLmain w i\nmain = element (ElemName \"main\")\n\nmain_ :: forall w i. Array (HTML w i) -> HTML w i\nmain_ = main []\n\nmap :: forall w i. Node I.HTMLmap w i\nmap = element (ElemName \"map\")\n\nmap_ :: forall w i. Array (HTML w i) -> HTML w i\nmap_ = map []\n\nmark :: forall w i. Node I.HTMLmark w i\nmark = element (ElemName \"mark\")\n\nmark_ :: forall w i. Array (HTML w i) -> HTML w i\nmark_ = mark []\n\nmenu :: forall w i. Node I.HTMLmenu w i\nmenu = element (ElemName \"menu\")\n\nmenu_ :: forall w i. Array (HTML w i) -> HTML w i\nmenu_ = menu []\n\nmenuitem :: forall w i. Node I.HTMLmenuitem w i\nmenuitem = element (ElemName \"menuitem\")\n\nmenuitem_ :: forall w i. Array (HTML w i) -> HTML w i\nmenuitem_ = menuitem []\n\nmeta :: forall w i. Leaf I.HTMLmeta w i\nmeta props = element (ElemName \"meta\") props []\n\nmeter :: forall w i. Node I.HTMLmeter w i\nmeter = element (ElemName \"meter\")\n\nmeter_ :: forall w i. Array (HTML w i) -> HTML w i\nmeter_ = meter []\n\nnav :: forall w i. Node I.HTMLnav w i\nnav = element (ElemName \"nav\")\n\nnav_ :: forall w i. Array (HTML w i) -> HTML w i\nnav_ = nav []\n\nnoscript :: forall w i. Node I.HTMLnoscript w i\nnoscript = element (ElemName \"noscript\")\n\nnoscript_ :: forall w i. Array (HTML w i) -> HTML w i\nnoscript_ = noscript []\n\nobject :: forall w i. Node I.HTMLobject w i\nobject = element (ElemName \"object\")\n\nobject_ :: forall w i. Array (HTML w i) -> HTML w i\nobject_ = object []\n\nol :: forall w i. Node I.HTMLol w i\nol = element (ElemName \"ol\")\n\nol_ :: forall w i. Array (HTML w i) -> HTML w i\nol_ = ol []\n\noptgroup :: forall w i. Node I.HTMLoptgroup w i\noptgroup = element (ElemName \"optgroup\")\n\noptgroup_ :: forall w i. Array (HTML w i) -> HTML w i\noptgroup_ = optgroup []\n\noption :: forall w i. Node I.HTMLoption w i\noption = element (ElemName \"option\")\n\noption_ :: forall w i. Array (HTML w i) -> HTML w i\noption_ = option []\n\noutput :: forall w i. Node I.HTMLoutput w i\noutput = element (ElemName \"output\")\n\noutput_ :: forall w i. Array (HTML w i) -> HTML w i\noutput_ = output []\n\np :: forall w i. Node I.HTMLp w i\np = element (ElemName \"p\")\n\np_ :: forall w i. Array (HTML w i) -> HTML w i\np_ = p []\n\nparam :: forall w i. Leaf I.HTMLparam w i\nparam props = element (ElemName \"param\") props []\n\npre :: forall w i. Node I.HTMLpre w i\npre = element (ElemName \"pre\")\n\npre_ :: forall w i. Array (HTML w i) -> HTML w i\npre_ = pre []\n\nprogress :: forall w i. Node I.HTMLprogress w i\nprogress = element (ElemName \"progress\")\n\nprogress_ :: forall w i. Array (HTML w i) -> HTML w i\nprogress_ = progress []\n\nq :: forall w i. Node I.HTMLq w i\nq = element (ElemName \"q\")\n\nq_ :: forall w i. Array (HTML w i) -> HTML w i\nq_ = q []\n\nrp :: forall w i. Node I.HTMLrp w i\nrp = element (ElemName \"rp\")\n\nrp_ :: forall w i. Array (HTML w i) -> HTML w i\nrp_ = rp []\n\nrt :: forall w i. Node I.HTMLrt w i\nrt = element (ElemName \"rt\")\n\nrt_ :: forall w i. Array (HTML w i) -> HTML w i\nrt_ = rt []\n\nruby :: forall w i. Node I.HTMLruby w i\nruby = element (ElemName \"ruby\")\n\nruby_ :: forall w i. Array (HTML w i) -> HTML w i\nruby_ = ruby []\n\nsamp :: forall w i. Node I.HTMLsamp w i\nsamp = element (ElemName \"samp\")\n\nsamp_ :: forall w i. Array (HTML w i) -> HTML w i\nsamp_ = samp []\n\nscript :: forall w i. Node I.HTMLscript w i\nscript = element (ElemName \"script\")\n\nscript_ :: forall w i. Array (HTML w i) -> HTML w i\nscript_ = script []\n\nsection :: forall w i. Node I.HTMLsection w i\nsection = element (ElemName \"section\")\n\nsection_ :: forall w i. Array (HTML w i) -> HTML w i\nsection_ = section []\n\nselect :: forall w i. Node I.HTMLselect w i\nselect = element (ElemName \"select\")\n\nselect_ :: forall w i. Array (HTML w i) -> HTML w i\nselect_ = select []\n\nsmall :: forall w i. Node I.HTMLsmall w i\nsmall = element (ElemName \"small\")\n\nsmall_ :: forall w i. Array (HTML w i) -> HTML w i\nsmall_ = small []\n\nsource :: forall w i. Leaf I.HTMLsource w i\nsource props = element (ElemName \"source\") props []\n\nspan :: forall w i. Node I.HTMLspan w i\nspan = element (ElemName \"span\")\n\nspan_ :: forall w i. Array (HTML w i) -> HTML w i\nspan_ = span []\n\nstrong :: forall w i. Node I.HTMLstrong w i\nstrong = element (ElemName \"strong\")\n\nstrong_ :: forall w i. Array (HTML w i) -> HTML w i\nstrong_ = strong []\n\nstyle :: forall w i. Node I.HTMLstyle w i\nstyle = element (ElemName \"style\")\n\nstyle_ :: forall w i. Array (HTML w i) -> HTML w i\nstyle_ = style []\n\nsub :: forall w i. Node I.HTMLsub w i\nsub = element (ElemName \"sub\")\n\nsub_ :: forall w i. Array (HTML w i) -> HTML w i\nsub_ = sub []\n\nsummary :: forall w i. Node I.HTMLsummary w i\nsummary = element (ElemName \"summary\")\n\nsummary_ :: forall w i. Array (HTML w i) -> HTML w i\nsummary_ = summary []\n\nsup :: forall w i. Node I.HTMLsup w i\nsup = element (ElemName \"sup\")\n\nsup_ :: forall w i. Array (HTML w i) -> HTML w i\nsup_ = sup []\n\ntable :: forall w i. Node I.HTMLtable w i\ntable = element (ElemName \"table\")\n\ntable_ :: forall w i. Array (HTML w i) -> HTML w i\ntable_ = table []\n\ntbody :: forall w i. Node I.HTMLtbody w i\ntbody = element (ElemName \"tbody\")\n\ntbody_ :: forall w i. Array (HTML w i) -> HTML w i\ntbody_ = tbody []\n\ntd :: forall w i. Node I.HTMLtd w i\ntd = element (ElemName \"td\")\n\ntd_ :: forall w i. Array (HTML w i) -> HTML w i\ntd_ = td []\n\ntextarea :: forall w i. Leaf I.HTMLtextarea w i\ntextarea es = element (ElemName \"textarea\") es []\n\ntfoot :: forall w i. Node I.HTMLtfoot w i\ntfoot = element (ElemName \"tfoot\")\n\ntfoot_ :: forall w i. Array (HTML w i) -> HTML w i\ntfoot_ = tfoot []\n\nth :: forall w i. Node I.HTMLth w i\nth = element (ElemName \"th\")\n\nth_ :: forall w i. Array (HTML w i) -> HTML w i\nth_ = th []\n\nthead :: forall w i. Node I.HTMLthead w i\nthead = element (ElemName \"thead\")\n\nthead_ :: forall w i. Array (HTML w i) -> HTML w i\nthead_ = thead []\n\ntime :: forall w i. Node I.HTMLtime w i\ntime = element (ElemName \"time\")\n\ntime_ :: forall w i. Array (HTML w i) -> HTML w i\ntime_ = time []\n\ntitle :: forall w i. Node I.HTMLtitle w i\ntitle = element (ElemName \"title\")\n\ntitle_ :: forall w i. Array (HTML w i) -> HTML w i\ntitle_ = title []\n\ntr :: forall w i. Node I.HTMLtr w i\ntr = element (ElemName \"tr\")\n\ntr_ :: forall w i. Array (HTML w i) -> HTML w i\ntr_ = tr []\n\ntrack :: forall w i. Leaf I.HTMLtrack w i\ntrack props = element (ElemName \"track\") props []\n\nu :: forall w i. Node I.HTMLu w i\nu = element (ElemName \"u\")\n\nu_ :: forall w i. Array (HTML w i) -> HTML w i\nu_ = u []\n\nul :: forall w i. Node I.HTMLul w i\nul = element (ElemName \"ul\")\n\nul_ :: forall w i. Array (HTML w i) -> HTML w i\nul_ = ul []\n\nvar :: forall w i. Node I.HTMLvar w i\nvar = element (ElemName \"var\")\n\nvar_ :: forall w i. Array (HTML w i) -> HTML w i\nvar_ = var []\n\nvideo :: forall w i. Node I.HTMLvideo w i\nvideo = element (ElemName \"video\")\n\nvideo_ :: forall w i. Array (HTML w i) -> HTML w i\nvideo_ = video []\n\nwbr :: forall w i. Leaf I.HTMLwbr w i\nwbr props = element (ElemName \"wbr\") props []\n", "export function bubbles(e) {\n return e.bubbles;\n}\n\nexport function cancelable(e) {\n return e.cancelable;\n}\n\nexport function _currentTarget(e) {\n return e.currentTarget;\n}\n\nexport function defaultPrevented(e) {\n return function() {\n return e.defaultPrevented;\n };\n}\n\nexport function eventPhaseIndex(e) {\n return e.eventPhase;\n}\n\nexport function _target(e) {\n return e.target;\n}\n\nexport function timeStamp(e) {\n return e.timeStamp;\n}\n\nexport function type_(e) {\n return e.type;\n}\n\nexport function preventDefault(e) {\n return function () {\n return e.preventDefault();\n };\n}\n\nexport function stopImmediatePropagation(e) {\n return function () {\n return e.stopImmediatePropagation();\n };\n}\n\nexport function stopPropagation(e) {\n return function () {\n return e.stopPropagation();\n };\n}\n", "module Web.Event.Event\n ( module Exports\n , EventType(..)\n , type_\n , target\n , currentTarget\n , eventPhase\n , stopPropagation\n , stopImmediatePropagation\n , bubbles\n , cancelable\n , preventDefault\n , defaultPrevented\n , timeStamp\n ) where\n\nimport Prelude\n\nimport Data.DateTime.Instant (Instant)\nimport Data.Enum (toEnum)\nimport Data.Maybe (Maybe, fromJust)\nimport Data.Newtype (class Newtype)\nimport Data.Nullable (Nullable, toMaybe)\nimport Effect (Effect)\nimport Web.Event.EventPhase (EventPhase)\nimport Web.Event.Internal.Types (Event) as Exports\nimport Web.Event.Internal.Types (Event, EventTarget)\n\n-- | The type of strings used for event types.\nnewtype EventType = EventType String\n\nderive instance newtypeEventType :: Newtype EventType _\nderive newtype instance eqEventType :: Eq EventType\nderive newtype instance ordEventType :: Ord EventType\n\n-- | The event type.\nforeign import type_ :: Event -> EventType\n\n-- | The element that was the source of the event.\ntarget :: Event -> Maybe EventTarget\ntarget = toMaybe <<< _target\n\nforeign import _target :: Event -> Nullable EventTarget\n\n-- | The element that the event listener was added to.\ncurrentTarget :: Event -> Maybe EventTarget\ncurrentTarget = toMaybe <<< _currentTarget\n\nforeign import _currentTarget :: Event -> Nullable EventTarget\n\n-- | Indicates which phase of the event flow that is currently being processed\n-- | for the event.\neventPhase :: Partial => Event -> EventPhase\neventPhase = fromJust <<< toEnum <<< eventPhaseIndex\n\n-- | The integer value for the current event phase.\nforeign import eventPhaseIndex :: Event -> Int\n\n-- | Prevents the event from bubbling up to futher event listeners. Other event\n-- | listeners on the current target will still fire.\nforeign import stopPropagation :: Event -> Effect Unit\n\n-- | Prevents all other listeners for the event from being called. This includes\n-- | event listeners added to the current target after the current listener.\nforeign import stopImmediatePropagation :: Event -> Effect Unit\n\n-- | Indicates whether the event will bubble up through the DOM or not.\nforeign import bubbles :: Event -> Boolean\n\n-- | Indicates whether the event can be cancelled.\nforeign import cancelable :: Event -> Boolean\n\n-- | Cancels the event if it can be cancelled.\nforeign import preventDefault :: Event -> Effect Unit\n\n-- | Indicates whether `preventDefault` was called on the event.\nforeign import defaultPrevented :: Event -> Effect Boolean\n\n-- | The time in milliseconds between 01/01/1970 and when the event was\n-- | dispatched.\nforeign import timeStamp :: Event -> Instant\n", "module Web.HTML.Event.EventTypes where\n\nimport Web.Event.Event (EventType(..))\n\nabort :: EventType\nabort = EventType \"abort\"\n\nafterprint :: EventType\nafterprint = EventType \"afterprint\"\n\nafterscriptexecute :: EventType\nafterscriptexecute = EventType \"afterscriptexecute\"\n\nbeforeprint :: EventType\nbeforeprint = EventType \"beforeprint\"\n\nbeforescriptexecute :: EventType\nbeforescriptexecute = EventType \"beforescriptexecute\"\n\nblur :: EventType\nblur = EventType \"blur\"\n\ncancel :: EventType\ncancel = EventType \"cancel\"\n\nchange :: EventType\nchange = EventType \"change\"\n\nclick :: EventType\nclick = EventType \"click\"\n\nclose :: EventType\nclose = EventType \"close\"\n\ncopy :: EventType\ncopy = EventType \"copy\"\n\ncut :: EventType\ncut = EventType \"cut\"\n\ndomcontentloaded :: EventType\ndomcontentloaded = EventType \"DOMContentLoaded\"\n\nerror :: EventType\nerror = EventType \"error\"\n\nfocus :: EventType\nfocus = EventType \"focus\"\n\ninput :: EventType\ninput = EventType \"input\"\n\ninvalid :: EventType\ninvalid = EventType \"invalid\"\n\nlanguagechange :: EventType\nlanguagechange = EventType \"languagechange\"\n\nload :: EventType\nload = EventType \"load\"\n\nloadend :: EventType\nloadend = EventType \"loadend\"\n\nloadstart :: EventType\nloadstart = EventType \"loadstart\"\n\nmessage :: EventType\nmessage = EventType \"message\"\n\noffline :: EventType\noffline = EventType \"offline\"\n\nonline :: EventType\nonline = EventType \"online\"\n\npaste :: EventType\npaste = EventType \"paste\"\n\nprogress :: EventType\nprogress = EventType \"progress\"\n\nreadystatechange :: EventType\nreadystatechange = EventType \"readystatechange\"\n\nreset :: EventType\nreset = EventType \"reset\"\n\nselect :: EventType\nselect = EventType \"select\"\n\nstorage :: EventType\nstorage = EventType \"storage\"\n\nsubmit :: EventType\nsubmit = EventType \"submit\"\n\ntoggle :: EventType\ntoggle = EventType \"toggle\"\n\nunload :: EventType\nunload = EventType \"unload\"\n", "module Web.UIEvent.MouseEvent.EventTypes where\n\nimport Web.Event.Event (EventType(..))\n\nauxclick :: EventType\nauxclick = EventType \"auxclick\"\n\nclick :: EventType\nclick = EventType \"click\"\n\ndblclick :: EventType\ndblclick = EventType \"dblclick\"\n\nmousedown :: EventType\nmousedown = EventType \"mousedown\"\n\nmouseenter :: EventType\nmouseenter = EventType \"mouseenter\"\n\nmouseleave :: EventType\nmouseleave = EventType \"mouseleave\"\n\nmousemove :: EventType\nmousemove = EventType \"mousemove\"\n\nmouseout :: EventType\nmouseout = EventType \"mouseout\"\n\nmouseover :: EventType\nmouseover = EventType \"mouseover\"\n\nmouseup :: EventType\nmouseup = EventType \"mouseup\"\n", "module Halogen.HTML.Events\n ( handler\n , handler'\n , onAbort\n , onError\n , onLoad\n , onScroll\n , onChange\n , onFileUpload\n , onInput\n , onInvalid\n , onReset\n , onSelect\n , onSubmit\n , onTransitionEnd\n , onCopy\n , onPaste\n , onCut\n , onAuxClick\n , onClick\n -- , onContextMenu\n , onDoubleClick\n , onMouseDown\n , onMouseEnter\n , onMouseLeave\n , onMouseMove\n , onMouseOver\n , onMouseOut\n , onMouseUp\n , onWheel\n , onKeyDown\n -- , onKeyPress\n , onKeyUp\n , onBlur\n , onFocus\n , onFocusIn\n , onFocusOut\n , onDrag\n , onDragEnd\n , onDragExit\n , onDragEnter\n , onDragLeave\n , onDragOver\n , onDragStart\n , onDrop\n , onTouchCancel\n , onTouchEnd\n , onTouchEnter\n , onTouchLeave\n , onTouchMove\n , onTouchStart\n , onResize\n , onValueChange\n , onValueInput\n , onSelectedIndexChange\n , onChecked\n ) where\n\nimport Prelude\n\nimport Control.Monad.Except (runExcept)\nimport Data.Either (either)\nimport Data.Maybe (Maybe(..), maybe)\nimport Data.Unfoldable (class Unfoldable, none)\nimport Foreign (F, Foreign, readBoolean, readInt, readString, unsafeToForeign)\nimport Foreign.Index (readProp)\nimport Halogen.HTML.Core (Prop)\nimport Halogen.HTML.Core as Core\nimport Halogen.HTML.Properties (IProp)\nimport Halogen.Query.Input (Input(..))\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.Clipboard.ClipboardEvent (ClipboardEvent)\nimport Web.Clipboard.ClipboardEvent.EventTypes as CET\nimport Web.Event.Event (Event, EventType(..))\nimport Web.Event.Event as EE\nimport Web.Event.Event as Event\nimport Web.File.File (File)\nimport Web.File.FileList (items)\nimport Web.HTML.Event.DragEvent (DragEvent)\nimport Web.HTML.Event.DragEvent.EventTypes as DET\nimport Web.HTML.Event.EventTypes as ET\nimport Web.HTML.HTMLInputElement as HTMLInputElement\nimport Web.TouchEvent.TouchEvent (TouchEvent)\nimport Web.UIEvent.FocusEvent (FocusEvent)\nimport Web.UIEvent.FocusEvent.EventTypes as FET\nimport Web.UIEvent.KeyboardEvent (KeyboardEvent)\nimport Web.UIEvent.KeyboardEvent.EventTypes as KET\nimport Web.UIEvent.MouseEvent (MouseEvent)\nimport Web.UIEvent.MouseEvent.EventTypes as MET\nimport Web.UIEvent.WheelEvent (WheelEvent)\nimport Web.UIEvent.WheelEvent.EventTypes as WET\nimport Effect.Unsafe (unsafePerformEffect)\n\nhandler :: forall r i. EventType -> (Event -> i) -> IProp r i\nhandler et f =\n (unsafeCoerce :: (EventType -> (Event -> Maybe i) -> Prop i) -> EventType -> (Event -> Maybe (Input i)) -> IProp r i)\n Core.handler\n et\n \\ev -> Just (Action (f ev))\n\nhandler' :: forall r i. EventType -> (Event -> Maybe i) -> IProp r i\nhandler' et f =\n (unsafeCoerce :: (EventType -> (Event -> Maybe i) -> Prop i) -> EventType -> (Event -> Maybe (Input i)) -> IProp r i)\n Core.handler\n et\n \\ev -> Action <$> f ev\n\nonAbort :: forall r i. (Event -> i) -> IProp (onAbort :: Event | r) i\nonAbort = handler (EventType \"abort\")\n\nonError :: forall r i. (Event -> i) -> IProp (onError :: Event | r) i\nonError = handler ET.error\n\nonLoad :: forall r i. (Event -> i) -> IProp (onLoad :: Event | r) i\nonLoad = handler ET.load\n\nonScroll :: forall r i. (Event -> i) -> IProp (onScroll :: Event | r) i\nonScroll = handler (EventType \"scroll\")\n\nonChange :: forall r i. (Event -> i) -> IProp (onChange :: Event | r) i\nonChange = handler ET.change\n\nonFileUpload\n :: forall r i t\n . Unfoldable t\n => (t File -> i)\n -> IProp (onChange :: Event | r) i\nonFileUpload f = handler ET.change $\n ( Event.target\n >=> HTMLInputElement.fromEventTarget\n >=>\n HTMLInputElement.files >>> unsafePerformEffect\n )\n >>> maybe none items\n >>> f\n\nonInput :: forall r i. (Event -> i) -> IProp (onInput :: Event | r) i\nonInput = handler ET.input\n\nonInvalid :: forall r i. (Event -> i) -> IProp (onInvalid :: Event | r) i\nonInvalid = handler ET.invalid\n\nonReset :: forall r i. (Event -> i) -> IProp (onReset :: Event | r) i\nonReset = handler (EventType \"reset\")\n\nonSelect :: forall r i. (Event -> i) -> IProp (onSelect :: Event | r) i\nonSelect = handler ET.select\n\nonSubmit :: forall r i. (Event -> i) -> IProp (onSubmit :: Event | r) i\nonSubmit = handler (EventType \"submit\")\n\nonTransitionEnd :: forall r i. (Event -> i) -> IProp (onTransitionEnd :: Event | r) i\nonTransitionEnd = handler (EventType \"transitionend\")\n\nonCopy :: forall r i. (ClipboardEvent -> i) -> IProp (onCopy :: ClipboardEvent | r) i\nonCopy = handler CET.copy <<< clipboardHandler\n\nonPaste :: forall r i. (ClipboardEvent -> i) -> IProp (onPaste :: ClipboardEvent | r) i\nonPaste = handler CET.paste <<< clipboardHandler\n\nonCut :: forall r i. (ClipboardEvent -> i) -> IProp (onCut :: ClipboardEvent | r) i\nonCut = handler CET.cut <<< clipboardHandler\n\nonAuxClick :: forall r i. (MouseEvent -> i) -> IProp (onAuxClick :: MouseEvent | r) i\nonAuxClick = handler MET.auxclick <<< mouseHandler\n\nonClick :: forall r i. (MouseEvent -> i) -> IProp (onClick :: MouseEvent | r) i\nonClick = handler MET.click <<< mouseHandler\n\n-- onContextMenu :: forall r i. (MouseEvent -> i) -> IProp (onContextMenu :: MouseEvent | r) i\n-- onContextMenu = handler ET.contextmenu <<< mouseHandler\n\nonDoubleClick :: forall r i. (MouseEvent -> i) -> IProp (onDoubleClick :: MouseEvent | r) i\nonDoubleClick = handler MET.dblclick <<< mouseHandler\n\nonMouseDown :: forall r i. (MouseEvent -> i) -> IProp (onMouseDown :: MouseEvent | r) i\nonMouseDown = handler MET.mousedown <<< mouseHandler\n\nonMouseEnter :: forall r i. (MouseEvent -> i) -> IProp (onMouseEnter :: MouseEvent | r) i\nonMouseEnter = handler MET.mouseenter <<< mouseHandler\n\nonMouseLeave :: forall r i. (MouseEvent -> i) -> IProp (onMouseLeave :: MouseEvent | r) i\nonMouseLeave = handler MET.mouseleave <<< mouseHandler\n\nonMouseMove :: forall r i. (MouseEvent -> i) -> IProp (onMouseMove :: MouseEvent | r) i\nonMouseMove = handler MET.mousemove <<< mouseHandler\n\nonMouseOver :: forall r i. (MouseEvent -> i) -> IProp (onMouseOver :: MouseEvent | r) i\nonMouseOver = handler MET.mouseover <<< mouseHandler\n\nonMouseOut :: forall r i. (MouseEvent -> i) -> IProp (onMouseOut :: MouseEvent | r) i\nonMouseOut = handler MET.mouseout <<< mouseHandler\n\nonMouseUp :: forall r i. (MouseEvent -> i) -> IProp (onMouseUp :: MouseEvent | r) i\nonMouseUp = handler MET.mouseup <<< mouseHandler\n\nonWheel :: forall r i. (WheelEvent -> i) -> IProp (onWheel :: WheelEvent | r) i\nonWheel = handler WET.wheel <<< wheelHandler\n\nonKeyDown :: forall r i. (KeyboardEvent -> i) -> IProp (onKeyDown :: KeyboardEvent | r) i\nonKeyDown = handler KET.keydown <<< keyHandler\n\n-- onKeyPress :: forall r i. (KeyboardEvent -> i) -> IProp (onKeyPress :: KeyboardEvent | r) i\n-- onKeyPress = handler KET.keypress <<< keyHandler\n\nonKeyUp :: forall r i. (KeyboardEvent -> i) -> IProp (onKeyUp :: KeyboardEvent | r) i\nonKeyUp = handler KET.keyup <<< keyHandler\n\nonBlur :: forall r i. (FocusEvent -> i) -> IProp (onBlur :: FocusEvent | r) i\nonBlur = handler ET.blur <<< focusHandler\n\nonFocus :: forall r i. (FocusEvent -> i) -> IProp (onFocus :: FocusEvent | r) i\nonFocus = handler FET.focus <<< focusHandler\n\nonFocusIn :: forall r i. (FocusEvent -> i) -> IProp (onFocusIn :: FocusEvent | r) i\nonFocusIn = handler FET.focusin <<< focusHandler\n\nonFocusOut :: forall r i. (FocusEvent -> i) -> IProp (onFocusOut :: FocusEvent | r) i\nonFocusOut = handler FET.focusout <<< focusHandler\n\nonDrag :: forall r i. (DragEvent -> i) -> IProp (onDrag :: DragEvent | r) i\nonDrag = handler DET.drag <<< dragHandler\n\nonDragEnd :: forall r i. (DragEvent -> i) -> IProp (onDragEnd :: DragEvent | r) i\nonDragEnd = handler DET.dragend <<< dragHandler\n\nonDragExit :: forall r i. (DragEvent -> i) -> IProp (onDragExit :: DragEvent | r) i\nonDragExit = handler DET.dragexit <<< dragHandler\n\nonDragEnter :: forall r i. (DragEvent -> i) -> IProp (onDragEnter :: DragEvent | r) i\nonDragEnter = handler DET.dragenter <<< dragHandler\n\nonDragLeave :: forall r i. (DragEvent -> i) -> IProp (onDragLeave :: DragEvent | r) i\nonDragLeave = handler DET.dragleave <<< dragHandler\n\nonDragOver :: forall r i. (DragEvent -> i) -> IProp (onDragOver :: DragEvent | r) i\nonDragOver = handler DET.dragover <<< dragHandler\n\nonDragStart :: forall r i. (DragEvent -> i) -> IProp (onDragStart :: DragEvent | r) i\nonDragStart = handler DET.dragstart <<< dragHandler\n\nonDrop :: forall r i. (DragEvent -> i) -> IProp (onDrop :: DragEvent | r) i\nonDrop = handler DET.drop <<< dragHandler\n\nonTouchCancel :: forall r i. (TouchEvent -> i) -> IProp (onTouchCancel :: TouchEvent | r) i\nonTouchCancel = handler (EventType \"touchcancel\") <<< touchHandler\n\nonTouchEnd :: forall r i. (TouchEvent -> i) -> IProp (onTouchEnd :: TouchEvent | r) i\nonTouchEnd = handler (EventType \"touchend\") <<< touchHandler\n\nonTouchEnter :: forall r i. (TouchEvent -> i) -> IProp (onTouchEnter :: TouchEvent | r) i\nonTouchEnter = handler (EventType \"touchenter\") <<< touchHandler\n\nonTouchLeave :: forall r i. (TouchEvent -> i) -> IProp (onTouchEnter :: TouchEvent | r) i\nonTouchLeave = handler (EventType \"touchleave\") <<< touchHandler\n\nonTouchMove :: forall r i. (TouchEvent -> i) -> IProp (onTouchMove :: TouchEvent | r) i\nonTouchMove = handler (EventType \"touchmove\") <<< touchHandler\n\nonTouchStart :: forall r i. (TouchEvent -> i) -> IProp (onTouchStart :: TouchEvent | r) i\nonTouchStart = handler (EventType \"touchstart\") <<< touchHandler\n\nonResize :: forall r i. (Event -> i) -> IProp (onResize :: Event | r) i\nonResize = handler (EventType \"resize\")\n\nkeyHandler :: forall i. (KeyboardEvent -> i) -> Event -> i\nkeyHandler = unsafeCoerce\n\nmouseHandler :: forall i. (MouseEvent -> i) -> Event -> i\nmouseHandler = unsafeCoerce\n\nwheelHandler :: forall i. (WheelEvent -> i) -> Event -> i\nwheelHandler = unsafeCoerce\n\nfocusHandler :: forall i. (FocusEvent -> i) -> Event -> i\nfocusHandler = unsafeCoerce\n\ndragHandler :: forall i. (DragEvent -> i) -> Event -> i\ndragHandler = unsafeCoerce\n\nclipboardHandler :: forall i. (ClipboardEvent -> i) -> Event -> i\nclipboardHandler = unsafeCoerce\n\ntouchHandler :: forall i. (TouchEvent -> i) -> Event -> i\ntouchHandler = unsafeCoerce\n\n-- | Attaches event handler to event `key` with getting `prop` field as an\n-- | argument of `handler`.\naddForeignPropHandler :: forall r i value. EventType -> String -> (Foreign -> F value) -> (value -> i) -> IProp r i\naddForeignPropHandler key prop reader f =\n handler' key $ EE.currentTarget >=> \\e -> either (const Nothing) (Just <<< f) $ runExcept $ go e\n where\n go a = reader <=< readProp prop $ unsafeToForeign a\n\n-- | Attaches an event handler which will produce an input when the value of an\n-- | input field changes.\nonValueChange :: forall r i. (String -> i) -> IProp (value :: String, onChange :: Event | r) i\nonValueChange = addForeignPropHandler ET.change \"value\" readString\n\n-- | Attaches an event handler which will produce an input when the seleced index of a\n-- | `select` element changes.\nonSelectedIndexChange :: forall r i. (Int -> i) -> IProp (selectedIndex :: Int, onChange :: Event | r) i\nonSelectedIndexChange = addForeignPropHandler ET.change \"selectedIndex\" readInt\n\n-- | Attaches an event handler which will fire on input.\nonValueInput :: forall r i. (String -> i) -> IProp (value :: String, onInput :: Event | r) i\nonValueInput = addForeignPropHandler ET.input \"value\" readString\n\n-- | Attaches an event handler which will fire when a checkbox is checked or\n-- | unchecked.\nonChecked :: forall r i. (Boolean -> i) -> IProp (checked :: Boolean, onChange :: Event | r) i\nonChecked = addForeignPropHandler ET.change \"checked\" readBoolean\n", "-- | A closed signature of type-indexed (refined) HTML properties; these can be\n-- | used to ensure correctness by construction, and then erased into the\n-- | standard unrefined versions.\nmodule Halogen.HTML.Properties\n ( IProp(..)\n , prop\n , attr\n , attrNS\n , ref\n , expand\n\n , alt\n , charset\n , class_\n , classes\n , cols\n , rows\n , colSpan\n , rowSpan\n , for\n , height\n , width\n , href\n , id\n , name\n , rel\n , src\n , srcDoc\n , style\n , scope\n , target\n , title\n , download\n\n , method\n , action\n , enctype\n , noValidate\n\n , type_\n , value\n , min\n , max\n , step\n , disabled\n , enabled\n , required\n , readOnly\n , spellcheck\n , checked\n , selected\n , selectedIndex\n , placeholder\n , autocomplete\n , list\n , autofocus\n , multiple\n , pattern\n , accept\n\n , autoplay\n , controls\n , loop\n , muted\n , poster\n , preload\n\n , draggable\n , tabIndex\n\n , module I\n ) where\n\nimport Prelude\n\nimport DOM.HTML.Indexed (CSSPixel) as I\nimport DOM.HTML.Indexed.AutocompleteType (AutocompleteType(..)) as I\nimport DOM.HTML.Indexed.ButtonType (ButtonType(..)) as I\nimport DOM.HTML.Indexed.FormMethod (FormMethod(..)) as I\nimport DOM.HTML.Indexed.InputAcceptType (InputAcceptType(..)) as I\nimport DOM.HTML.Indexed.InputType (InputType(..)) as I\nimport DOM.HTML.Indexed.MenuType (MenuType(..)) as I\nimport DOM.HTML.Indexed.MenuitemType (MenuitemType(..)) as I\nimport DOM.HTML.Indexed.OrderedListType (OrderedListType(..)) as I\nimport DOM.HTML.Indexed.PreloadValue (PreloadValue(..)) as I\nimport DOM.HTML.Indexed.ScopeValue (ScopeValue(..)) as I\nimport DOM.HTML.Indexed.StepValue (StepValue(..)) as I\nimport Data.Maybe (Maybe(..))\nimport Data.MediaType (MediaType)\nimport Data.Newtype (class Newtype, unwrap)\nimport Data.String (joinWith)\nimport Halogen.HTML.Core (class IsProp, AttrName(..), ClassName, Namespace, PropName(..), Prop)\nimport Halogen.HTML.Core as Core\nimport Halogen.Query.Input (Input(..), RefLabel)\nimport Prim.Row as Row\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM.Element (Element)\n\n-- | The phantom row `r` can be thought of as a context which is synthesized in\n-- | the course of constructing a refined HTML expression.\nnewtype IProp (r :: Row Type) i = IProp (Prop (Input i))\n\nderive instance newtypeIProp :: Newtype (IProp r i) _\nderive instance functorIProp :: Functor (IProp r)\n\n-- | Creates an indexed HTML property.\nprop\n :: forall value r i\n . IsProp value\n => PropName value\n -> value\n -> IProp r i\nprop = (unsafeCoerce :: (PropName value -> value -> Prop (Input i)) -> PropName value -> value -> IProp r i) Core.prop\n\n-- | Creates an indexed HTML attribute.\nattr :: forall r i. AttrName -> String -> IProp r i\nattr =\n Core.attr Nothing #\n ( unsafeCoerce\n :: (AttrName -> String -> Prop (Input i))\n -> AttrName\n -> String\n -> IProp r i\n )\n\n-- | Creates an indexed HTML attribute.\nattrNS :: forall r i. Namespace -> AttrName -> String -> IProp r i\nattrNS =\n pure >>> Core.attr >>>\n ( unsafeCoerce\n :: (AttrName -> String -> Prop (Input i))\n -> AttrName\n -> String\n -> IProp r i\n )\n\n-- | The `ref` property allows an input to be raised once a `HTMLElement` has\n-- | been created or destroyed in the DOM for the element that the property is\n-- | attached to.\nref :: forall r i. RefLabel -> IProp r i\nref = (unsafeCoerce :: ((Maybe Element -> Maybe (Input i)) -> Prop (Input i)) -> (Maybe Element -> Maybe (Input i)) -> IProp r i) Core.ref <<< go\n where\n go :: RefLabel -> Maybe Element -> Maybe (Input i)\n go p mel = Just (RefUpdate p mel)\n\n-- | Every `IProp lt i` can be cast to some `IProp gt i` as long as `lt` is a\n-- | subset of `gt`.\nexpand :: forall lt gt a i. Row.Union lt a gt => IProp lt i -> IProp gt i\nexpand = unsafeCoerce\n\nalt :: forall r i. String -> IProp (alt :: String | r) i\nalt = prop (PropName \"alt\")\n\ncharset :: forall r i. String -> IProp (charset :: String | r) i\ncharset = prop (PropName \"charset\")\n\nclass_ :: forall r i. ClassName -> IProp (class :: String | r) i\nclass_ = prop (PropName \"className\") <<< unwrap\n\nclasses :: forall r i. Array ClassName -> IProp (class :: String | r) i\nclasses = prop (PropName \"className\") <<< joinWith \" \" <<< map unwrap\n\ncols :: forall r i. Int -> IProp (cols :: Int | r) i\ncols = prop (PropName \"cols\")\n\nrows :: forall r i. Int -> IProp (rows :: Int | r) i\nrows = prop (PropName \"rows\")\n\ncolSpan :: forall r i. Int -> IProp (colSpan :: Int | r) i\ncolSpan = prop (PropName \"colSpan\")\n\nrowSpan :: forall r i. Int -> IProp (rowSpan :: Int | r) i\nrowSpan = prop (PropName \"rowSpan\")\n\nfor :: forall r i. String -> IProp (for :: String | r) i\nfor = prop (PropName \"htmlFor\")\n\nheight :: forall r i. I.CSSPixel -> IProp (height :: I.CSSPixel | r) i\nheight = prop (PropName \"height\")\n\nwidth :: forall r i. I.CSSPixel -> IProp (width :: I.CSSPixel | r) i\nwidth = prop (PropName \"width\")\n\nhref :: forall r i. String -> IProp (href :: String | r) i\nhref = prop (PropName \"href\")\n\nid :: forall r i. String -> IProp (id :: String | r) i\nid = prop (PropName \"id\")\n\nname :: forall r i. String -> IProp (name :: String | r) i\nname = prop (PropName \"name\")\n\nrel :: forall r i. String -> IProp (rel :: String | r) i\nrel = prop (PropName \"rel\")\n\nsrc :: forall r i. String -> IProp (src :: String | r) i\nsrc = prop (PropName \"src\")\n\nsrcDoc :: forall r i. String -> IProp (srcDoc :: String | r) i\nsrcDoc = prop (PropName \"srcdoc\")\n\n-- | Sets the `style` attribute to the specified string.\n-- |\n-- | ```purs\n-- | ... [ style \"height: 50px;\" ]\n-- | ```\n-- |\n-- | If you prefer to use typed CSS for this attribute, you can use the purescript-halogen-css library:\n-- | https://github.com/purescript-halogen/purescript-halogen-css\nstyle :: forall r i. String -> IProp (style :: String | r) i\nstyle = attr (AttrName \"style\")\n\nscope :: forall r i. I.ScopeValue -> IProp (scope :: I.ScopeValue | r) i\nscope = prop (PropName \"scope\")\n\ntarget :: forall r i. String -> IProp (target :: String | r) i\ntarget = prop (PropName \"target\")\n\ntitle :: forall r i. String -> IProp (title :: String | r) i\ntitle = prop (PropName \"title\")\n\ndownload :: forall r i. String -> IProp (download :: String | r) i\ndownload = prop (PropName \"download\")\n\nmethod :: forall r i. I.FormMethod -> IProp (method :: I.FormMethod | r) i\nmethod = prop (PropName \"method\")\n\naction :: forall r i. String -> IProp (action :: String | r) i\naction = prop (PropName \"action\")\n\nenctype :: forall r i. MediaType -> IProp (enctype :: MediaType | r) i\nenctype = prop (PropName \"enctype\")\n\nnoValidate :: forall r i. Boolean -> IProp (noValidate :: Boolean | r) i\nnoValidate = prop (PropName \"noValidate\")\n\ntype_ :: forall r i value. IsProp value => value -> IProp (type :: value | r) i\ntype_ = prop (PropName \"type\")\n\nvalue :: forall r i value. IsProp value => value -> IProp (value :: value | r) i\nvalue = prop (PropName \"value\")\n\nmin :: forall r i. Number -> IProp (min :: Number | r) i\nmin = prop (PropName \"min\")\n\nmax :: forall r i. Number -> IProp (max :: Number | r) i\nmax = prop (PropName \"max\")\n\nstep :: forall r i. I.StepValue -> IProp (step :: I.StepValue | r) i\nstep = prop (PropName \"step\")\n\nenabled :: forall r i. Boolean -> IProp (disabled :: Boolean | r) i\nenabled = disabled <<< not\n\ndisabled :: forall r i. Boolean -> IProp (disabled :: Boolean | r) i\ndisabled = prop (PropName \"disabled\")\n\nrequired :: forall r i. Boolean -> IProp (required :: Boolean | r) i\nrequired = prop (PropName \"required\")\n\nreadOnly :: forall r i. Boolean -> IProp (readOnly :: Boolean | r) i\nreadOnly = prop (PropName \"readOnly\")\n\nspellcheck :: forall r i. Boolean -> IProp (spellcheck :: Boolean | r) i\nspellcheck = prop (PropName \"spellcheck\")\n\nchecked :: forall r i. Boolean -> IProp (checked :: Boolean | r) i\nchecked = prop (PropName \"checked\")\n\nselected :: forall r i. Boolean -> IProp (selected :: Boolean | r) i\nselected = prop (PropName \"selected\")\n\nselectedIndex :: forall r i. Int -> IProp (selectedIndex :: Int | r) i\nselectedIndex = prop (PropName \"selectedIndex\")\n\nplaceholder :: forall r i. String -> IProp (placeholder :: String | r) i\nplaceholder = prop (PropName \"placeholder\")\n\nautocomplete :: forall r i. I.AutocompleteType -> IProp (autocomplete :: I.AutocompleteType | r) i\nautocomplete = prop (PropName \"autocomplete\")\n\nlist :: forall r i. String -> IProp (list :: String | r) i\nlist = attr (AttrName \"list\")\n\nautofocus :: forall r i. Boolean -> IProp (autofocus :: Boolean | r) i\nautofocus = prop (PropName \"autofocus\")\n\nmultiple :: forall r i. Boolean -> IProp (multiple :: Boolean | r) i\nmultiple = prop (PropName \"multiple\")\n\naccept :: forall r i. I.InputAcceptType -> IProp (accept :: I.InputAcceptType | r) i\naccept = prop (PropName \"accept\")\n\npattern :: forall r i. String -> IProp (pattern :: String | r) i\npattern = prop (PropName \"pattern\")\n\nautoplay :: forall r i. Boolean -> IProp (autoplay :: Boolean | r) i\nautoplay = prop (PropName \"autoplay\")\n\ncontrols :: forall r i. Boolean -> IProp (controls :: Boolean | r) i\ncontrols = prop (PropName \"controls\")\n\nloop :: forall r i. Boolean -> IProp (loop :: Boolean | r) i\nloop = prop (PropName \"loop\")\n\nmuted :: forall r i. Boolean -> IProp (muted :: Boolean | r) i\nmuted = prop (PropName \"muted\")\n\nposter :: forall r i. String -> IProp (poster :: String | r) i\nposter = prop (PropName \"poster\")\n\npreload :: forall r i. I.PreloadValue -> IProp (preload :: I.PreloadValue | r) i\npreload = prop (PropName \"preload\")\n\ndraggable :: forall r i. Boolean -> IProp (draggable :: Boolean | r) i\ndraggable = prop (PropName \"draggable\")\n\ntabIndex :: forall r i. Int -> IProp (tabIndex :: Int | r) i\ntabIndex = prop (PropName \"tabIndex\")\n", "/* global Symbol */\n\nvar hasArrayFrom = typeof Array.from === \"function\";\nvar hasStringIterator =\n typeof Symbol !== \"undefined\" &&\n Symbol != null &&\n typeof Symbol.iterator !== \"undefined\" &&\n typeof String.prototype[Symbol.iterator] === \"function\";\nvar hasFromCodePoint = typeof String.prototype.fromCodePoint === \"function\";\nvar hasCodePointAt = typeof String.prototype.codePointAt === \"function\";\n\nexport const _unsafeCodePointAt0 = function (fallback) {\n return hasCodePointAt\n ? function (str) { return str.codePointAt(0); }\n : fallback;\n};\n\nexport const _codePointAt = function (fallback) {\n return function (Just) {\n return function (Nothing) {\n return function (unsafeCodePointAt0) {\n return function (index) {\n return function (str) {\n var length = str.length;\n if (index < 0 || index >= length) return Nothing;\n if (hasStringIterator) {\n var iter = str[Symbol.iterator]();\n for (var i = index;; --i) {\n var o = iter.next();\n if (o.done) return Nothing;\n if (i === 0) return Just(unsafeCodePointAt0(o.value));\n }\n }\n return fallback(index)(str);\n };\n };\n };\n };\n };\n};\n\nexport const _countPrefix = function (fallback) {\n return function (unsafeCodePointAt0) {\n if (hasStringIterator) {\n return function (pred) {\n return function (str) {\n var iter = str[Symbol.iterator]();\n for (var cpCount = 0; ; ++cpCount) {\n var o = iter.next();\n if (o.done) return cpCount;\n var cp = unsafeCodePointAt0(o.value);\n if (!pred(cp)) return cpCount;\n }\n };\n };\n }\n return fallback;\n };\n};\n\nexport const _fromCodePointArray = function (singleton) {\n return hasFromCodePoint\n ? function (cps) {\n // Function.prototype.apply will fail for very large second parameters,\n // so we don't use it for arrays with 10,000 or more entries.\n if (cps.length < 10e3) {\n return String.fromCodePoint.apply(String, cps);\n }\n return cps.map(singleton).join(\"\");\n }\n : function (cps) {\n return cps.map(singleton).join(\"\");\n };\n};\n\nexport const _singleton = function (fallback) {\n return hasFromCodePoint ? String.fromCodePoint : fallback;\n};\n\nexport const _take = function (fallback) {\n return function (n) {\n if (hasStringIterator) {\n return function (str) {\n var accum = \"\";\n var iter = str[Symbol.iterator]();\n for (var i = 0; i < n; ++i) {\n var o = iter.next();\n if (o.done) return accum;\n accum += o.value;\n }\n return accum;\n };\n }\n return fallback(n);\n };\n};\n\nexport const _toCodePointArray = function (fallback) {\n return function (unsafeCodePointAt0) {\n if (hasArrayFrom) {\n return function (str) {\n return Array.from(str, unsafeCodePointAt0);\n };\n }\n return fallback;\n };\n};\n", "-- | These functions allow PureScript strings to be treated as if they were\n-- | sequences of Unicode code points instead of their true underlying\n-- | implementation (sequences of UTF-16 code units). For nearly all uses of\n-- | strings, these functions should be preferred over the ones in\n-- | `Data.String.CodeUnits`.\nmodule Data.String.CodePoints\n ( module Exports\n , CodePoint\n , codePointFromChar\n , singleton\n , fromCodePointArray\n , toCodePointArray\n , codePointAt\n , uncons\n , length\n , countPrefix\n , indexOf\n , indexOf'\n , lastIndexOf\n , lastIndexOf'\n , take\n -- , takeRight\n , takeWhile\n , drop\n -- , dropRight\n , dropWhile\n -- , slice\n , splitAt\n ) where\n\nimport Prelude\n\nimport Data.Array as Array\nimport Data.Enum (class BoundedEnum, class Enum, Cardinality(..), defaultPred, defaultSucc, fromEnum, toEnum, toEnumWithDefaults)\nimport Data.Int (hexadecimal, toStringAs)\nimport Data.Maybe (Maybe(..))\nimport Data.String.CodeUnits (contains, stripPrefix, stripSuffix) as Exports\nimport Data.String.CodeUnits as CU\nimport Data.String.Common (toUpper)\nimport Data.String.Pattern (Pattern)\nimport Data.String.Unsafe as Unsafe\nimport Data.Tuple (Tuple(..))\nimport Data.Unfoldable (unfoldr)\n\n-- | CodePoint is an `Int` bounded between `0` and `0x10FFFF`, corresponding to\n-- | Unicode code points.\nnewtype CodePoint = CodePoint Int\n\nderive instance eqCodePoint :: Eq CodePoint\nderive instance ordCodePoint :: Ord CodePoint\n\ninstance showCodePoint :: Show CodePoint where\n show (CodePoint i) = \"(CodePoint 0x\" <> toUpper (toStringAs hexadecimal i) <> \")\"\n\ninstance boundedCodePoint :: Bounded CodePoint where\n bottom = CodePoint 0\n top = CodePoint 0x10FFFF\n\ninstance enumCodePoint :: Enum CodePoint where\n succ = defaultSucc toEnum fromEnum\n pred = defaultPred toEnum fromEnum\n\ninstance boundedEnumCodePoint :: BoundedEnum CodePoint where\n cardinality = Cardinality (0x10FFFF + 1)\n fromEnum (CodePoint n) = n\n toEnum n\n | n >= 0 && n <= 0x10FFFF = Just (CodePoint n)\n | otherwise = Nothing\n\n-- | Creates a `CodePoint` from a given `Char`.\n-- |\n-- | ```purescript\n-- | >>> codePointFromChar 'B'\n-- | CodePoint 0x42 -- represents 'B'\n-- | ```\n-- |\ncodePointFromChar :: Char -> CodePoint\ncodePointFromChar = fromEnum >>> CodePoint\n\n-- | Creates a string containing just the given code point. Operates in\n-- | constant space and time.\n-- |\n-- | ```purescript\n-- | >>> map singleton (toEnum 0x1D400)\n-- | Just \"\uD835\uDC00\"\n-- | ```\n-- |\nsingleton :: CodePoint -> String\nsingleton = _singleton singletonFallback\n\nforeign import _singleton\n :: (CodePoint -> String)\n -> CodePoint\n -> String\n\nsingletonFallback :: CodePoint -> String\nsingletonFallback (CodePoint cp) | cp <= 0xFFFF = fromCharCode cp\nsingletonFallback (CodePoint cp) =\n let lead = ((cp - 0x10000) / 0x400) + 0xD800 in\n let trail = (cp - 0x10000) `mod` 0x400 + 0xDC00 in\n fromCharCode lead <> fromCharCode trail\n\n-- | Creates a string from an array of code points. Operates in space and time\n-- | linear to the length of the array.\n-- |\n-- | ```purescript\n-- | >>> codePointArray = toCodePointArray \"c \uD835\uDC00\"\n-- | >>> codePointArray\n-- | [CodePoint 0x63, CodePoint 0x20, CodePoint 0x1D400]\n-- | >>> fromCodePointArray codePointArray\n-- | \"c \uD835\uDC00\"\n-- | ```\n-- |\nfromCodePointArray :: Array CodePoint -> String\nfromCodePointArray = _fromCodePointArray singletonFallback\n\nforeign import _fromCodePointArray\n :: (CodePoint -> String)\n -> Array CodePoint\n -> String\n\n-- | Creates an array of code points from a string. Operates in space and time\n-- | linear to the length of the string.\n-- |\n-- | ```purescript\n-- | >>> codePointArray = toCodePointArray \"b \uD835\uDC00\uD835\uDC00\"\n-- | >>> codePointArray\n-- | [CodePoint 0x62, CodePoint 0x20, CodePoint 0x1D400, CodePoint 0x1D400]\n-- | >>> map singleton codePointArray\n-- | [\"b\", \" \", \"\uD835\uDC00\", \"\uD835\uDC00\"]\n-- | ```\n-- |\ntoCodePointArray :: String -> Array CodePoint\ntoCodePointArray = _toCodePointArray toCodePointArrayFallback unsafeCodePointAt0\n\nforeign import _toCodePointArray\n :: (String -> Array CodePoint)\n -> (String -> CodePoint)\n -> String\n -> Array CodePoint\n\ntoCodePointArrayFallback :: String -> Array CodePoint\ntoCodePointArrayFallback s = unfoldr unconsButWithTuple s\n\nunconsButWithTuple :: String -> Maybe (Tuple CodePoint String)\nunconsButWithTuple s = (\\{ head, tail } -> Tuple head tail) <$> uncons s\n\n-- | Returns the first code point of the string after dropping the given number\n-- | of code points from the beginning, if there is such a code point. Operates\n-- | in constant space and in time linear to the given index.\n-- |\n-- | ```purescript\n-- | >>> codePointAt 1 \"\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\"\n-- | Just (CodePoint 0x1D400) -- represents \"\uD835\uDC00\"\n-- | -- compare to Data.String:\n-- | >>> charAt 1 \"\uD835\uDC00\uD835\uDC00\uD835\uDC00\uD835\uDC00\"\n-- | Just '\uFFFD'\n-- | ```\n-- |\ncodePointAt :: Int -> String -> Maybe CodePoint\ncodePointAt n _ | n < 0 = Nothing\ncodePointAt 0 \"\" = Nothing\ncodePointAt 0 s = Just (unsafeCodePointAt0 s)\ncodePointAt n s = _codePointAt codePointAtFallback Just Nothing unsafeCodePointAt0 n s\n\nforeign import _codePointAt\n :: (Int -> String -> Maybe CodePoint)\n -> (forall a. a -> Maybe a)\n -> (forall a. Maybe a)\n -> (String -> CodePoint)\n -> Int\n -> String\n -> Maybe CodePoint\n\ncodePointAtFallback :: Int -> String -> Maybe CodePoint\ncodePointAtFallback n s = case uncons s of\n Just { head, tail } -> if n == 0 then Just head else codePointAtFallback (n - 1) tail\n _ -> Nothing\n\n-- | Returns a record with the first code point and the remaining code points\n-- | of the string. Returns `Nothing` if the string is empty. Operates in\n-- | constant space and time.\n-- |\n-- | ```purescript\n-- | >>> uncons \"\uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Just { head: CodePoint 0x1D400, tail: \"\uD835\uDC00 c \uD835\uDC00\" }\n-- | >>> uncons \"\"\n-- | Nothing\n-- | ```\n-- |\nuncons :: String -> Maybe { head :: CodePoint, tail :: String }\nuncons s = case CU.length s of\n 0 -> Nothing\n 1 -> Just { head: CodePoint (fromEnum (Unsafe.charAt 0 s)), tail: \"\" }\n _ ->\n let\n cu0 = fromEnum (Unsafe.charAt 0 s)\n cu1 = fromEnum (Unsafe.charAt 1 s)\n in\n if isLead cu0 && isTrail cu1\n then Just { head: unsurrogate cu0 cu1, tail: CU.drop 2 s }\n else Just { head: CodePoint cu0, tail: CU.drop 1 s }\n\n-- | Returns the number of code points in the string. Operates in constant\n-- | space and in time linear to the length of the string.\n-- |\n-- | ```purescript\n-- | >>> length \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | 8\n-- | -- compare to Data.String:\n-- | >>> length \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | 11\n-- | ```\n-- |\nlength :: String -> Int\nlength = Array.length <<< toCodePointArray\n\n-- | Returns the number of code points in the leading sequence of code points\n-- | which all match the given predicate. Operates in constant space and in\n-- | time linear to the length of the string.\n-- |\n-- | ```purescript\n-- | >>> countPrefix (\\c -> fromEnum c == 0x1D400) \"\uD835\uDC00\uD835\uDC00 b c \uD835\uDC00\"\n-- | 2\n-- | ```\n-- |\ncountPrefix :: (CodePoint -> Boolean) -> String -> Int\ncountPrefix = _countPrefix countFallback unsafeCodePointAt0\n\nforeign import _countPrefix\n :: ((CodePoint -> Boolean) -> String -> Int)\n -> (String -> CodePoint)\n -> (CodePoint -> Boolean)\n -> String\n -> Int\n\ncountFallback :: (CodePoint -> Boolean) -> String -> Int\ncountFallback p s = countTail p s 0\n\ncountTail :: (CodePoint -> Boolean) -> String -> Int -> Int\ncountTail p s accum = case uncons s of\n Just { head, tail } -> if p head then countTail p tail (accum + 1) else accum\n _ -> accum\n\n-- | Returns the number of code points preceding the first match of the given\n-- | pattern in the string. Returns `Nothing` when no matches are found.\n-- |\n-- | ```purescript\n-- | >>> indexOf (Pattern \"\uD835\uDC00\") \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Just 2\n-- | >>> indexOf (Pattern \"o\") \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Nothing\n-- | ```\n-- |\nindexOf :: Pattern -> String -> Maybe Int\nindexOf p s = (\\i -> length (CU.take i s)) <$> CU.indexOf p s\n\n-- | Returns the number of code points preceding the first match of the given\n-- | pattern in the string. Pattern matches preceding the given index will be\n-- | ignored. Returns `Nothing` when no matches are found.\n-- |\n-- | ```purescript\n-- | >>> indexOf' (Pattern \"\uD835\uDC00\") 4 \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Just 7\n-- | >>> indexOf' (Pattern \"o\") 4 \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Nothing\n-- | ```\n-- |\nindexOf' :: Pattern -> Int -> String -> Maybe Int\nindexOf' p i s =\n let s' = drop i s in\n (\\k -> i + length (CU.take k s')) <$> CU.indexOf p s'\n\n-- | Returns the number of code points preceding the last match of the given\n-- | pattern in the string. Returns `Nothing` when no matches are found.\n-- |\n-- | ```purescript\n-- | >>> lastIndexOf (Pattern \"\uD835\uDC00\") \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Just 7\n-- | >>> lastIndexOf (Pattern \"o\") \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Nothing\n-- | ```\n-- |\nlastIndexOf :: Pattern -> String -> Maybe Int\nlastIndexOf p s = (\\i -> length (CU.take i s)) <$> CU.lastIndexOf p s\n\n-- | Returns the number of code points preceding the first match of the given\n-- | pattern in the string. Pattern matches following the given index will be\n-- | ignored.\n-- |\n-- | Giving a negative index is equivalent to giving 0 and giving an index\n-- | greater than the number of code points in the string is equivalent to\n-- | searching in the whole string.\n-- |\n-- | Returns `Nothing` when no matches are found.\n-- |\n-- | ```purescript\n-- | >>> lastIndexOf' (Pattern \"\uD835\uDC00\") (-1) \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Nothing\n-- | >>> lastIndexOf' (Pattern \"\uD835\uDC00\") 0 \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Nothing\n-- | >>> lastIndexOf' (Pattern \"\uD835\uDC00\") 5 \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Just 3\n-- | >>> lastIndexOf' (Pattern \"\uD835\uDC00\") 8 \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Just 7\n-- | >>> lastIndexOf' (Pattern \"o\") 5 \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | Nothing\n-- | ```\n-- |\nlastIndexOf' :: Pattern -> Int -> String -> Maybe Int\nlastIndexOf' p i s =\n let i' = CU.length (take i s) in\n (\\k -> length (CU.take k s)) <$> CU.lastIndexOf' p i' s\n\n-- | Returns a string containing the given number of code points from the\n-- | beginning of the given string. If the string does not have that many code\n-- | points, returns the empty string. Operates in constant space and in time\n-- | linear to the given number.\n-- |\n-- | ```purescript\n-- | >>> take 3 \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | \"b \uD835\uDC00\"\n-- | -- compare to Data.String:\n-- | >>> take 3 \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | \"b \uFFFD\"\n-- | ```\n-- |\ntake :: Int -> String -> String\ntake = _take takeFallback\n\nforeign import _take :: (Int -> String -> String) -> Int -> String -> String\n\ntakeFallback :: Int -> String -> String\ntakeFallback n _ | n < 1 = \"\"\ntakeFallback n s = case uncons s of\n Just { head, tail } -> singleton head <> takeFallback (n - 1) tail\n _ -> s\n\n-- | Returns a string containing the leading sequence of code points which all\n-- | match the given predicate from the string. Operates in constant space and\n-- | in time linear to the length of the string.\n-- |\n-- | ```purescript\n-- | >>> takeWhile (\\c -> fromEnum c == 0x1D400) \"\uD835\uDC00\uD835\uDC00 b c \uD835\uDC00\"\n-- | \"\uD835\uDC00\uD835\uDC00\"\n-- | ```\n-- |\ntakeWhile :: (CodePoint -> Boolean) -> String -> String\ntakeWhile p s = take (countPrefix p s) s\n\n-- | Drops the given number of code points from the beginning of the string. If\n-- | the string does not have that many code points, returns the empty string.\n-- | Operates in constant space and in time linear to the given number.\n-- |\n-- | ```purescript\n-- | >>> drop 5 \"\uD835\uDC00\uD835\uDC00 b c\"\n-- | \"c\"\n-- | -- compared to Data.String:\n-- | >>> drop 5 \"\uD835\uDC00\uD835\uDC00 b c\"\n-- | \"b c\" -- because \"\uD835\uDC00\" occupies 2 code units\n-- | ```\n-- |\ndrop :: Int -> String -> String\ndrop n s = CU.drop (CU.length (take n s)) s\n\n-- | Drops the leading sequence of code points which all match the given\n-- | predicate from the string. Operates in constant space and in time linear\n-- | to the length of the string.\n-- |\n-- | ```purescript\n-- | >>> dropWhile (\\c -> fromEnum c == 0x1D400) \"\uD835\uDC00\uD835\uDC00 b c \uD835\uDC00\"\n-- | \" b c \uD835\uDC00\"\n-- | ```\n-- |\ndropWhile :: (CodePoint -> Boolean) -> String -> String\ndropWhile p s = drop (countPrefix p s) s\n\n-- | Splits a string into two substrings, where `before` contains the code\n-- | points up to (but not including) the given index, and `after` contains the\n-- | rest of the string, from that index on.\n-- |\n-- | ```purescript\n-- | >>> splitAt 3 \"b \uD835\uDC00\uD835\uDC00 c \uD835\uDC00\"\n-- | { before: \"b \uD835\uDC00\", after: \"\uD835\uDC00 c \uD835\uDC00\" }\n-- | ```\n-- |\n-- | Thus the length of `(splitAt i s).before` will equal either `i` or\n-- | `length s`, if that is shorter. (Or if `i` is negative the length will be\n-- | 0.)\n-- |\n-- | In code:\n-- | ```purescript\n-- | length (splitAt i s).before == min (max i 0) (length s)\n-- | (splitAt i s).before <> (splitAt i s).after == s\n-- | splitAt i s == {before: take i s, after: drop i s}\n-- | ```\nsplitAt :: Int -> String -> { before :: String, after :: String }\nsplitAt i s =\n let before = take i s in\n { before\n -- inline drop i s to reuse the result of take i s\n , after: CU.drop (CU.length before) s\n }\n\nunsurrogate :: Int -> Int -> CodePoint\nunsurrogate lead trail = CodePoint ((lead - 0xD800) * 0x400 + (trail - 0xDC00) + 0x10000)\n\nisLead :: Int -> Boolean\nisLead cu = 0xD800 <= cu && cu <= 0xDBFF\n\nisTrail :: Int -> Boolean\nisTrail cu = 0xDC00 <= cu && cu <= 0xDFFF\n\nfromCharCode :: Int -> String\nfromCharCode = CU.singleton <<< toEnumWithDefaults bottom top\n\n-- WARN: this function expects the String parameter to be non-empty\nunsafeCodePointAt0 :: String -> CodePoint\nunsafeCodePointAt0 = _unsafeCodePointAt0 unsafeCodePointAt0Fallback\n\nforeign import _unsafeCodePointAt0\n :: (String -> CodePoint)\n -> String\n -> CodePoint\n\nunsafeCodePointAt0Fallback :: String -> CodePoint\nunsafeCodePointAt0Fallback s =\n let\n cu0 = fromEnum (Unsafe.charAt 0 s)\n in\n if isLead cu0 && CU.length s > 1\n then\n let cu1 = fromEnum (Unsafe.charAt 1 s) in\n if isTrail cu1 then unsurrogate cu0 cu1 else CodePoint cu0\n else\n CodePoint cu0\n", "var getEffProp = function (name) {\n return function (doc) {\n return function () {\n return doc[name];\n };\n };\n};\n\nexport const url = getEffProp(\"URL\");\nexport const documentURI = getEffProp(\"documentURI\");\nexport const origin = getEffProp(\"origin\");\nexport const compatMode = getEffProp(\"compatMode\");\nexport const characterSet = getEffProp(\"characterSet\");\nexport const contentType = getEffProp(\"contentType\");\nexport function _doctype(doc) {\n return doc[\"doctype\"];\n}\nexport const _documentElement = getEffProp(\"documentElement\");\n\nexport function getElementsByTagName(localName) {\n return function (doc) {\n return function () {\n return doc.getElementsByTagName(localName);\n };\n };\n}\n\nexport function _getElementsByTagNameNS(ns) {\n return function (localName) {\n return function (doc) {\n return function () {\n return doc.getElementsByTagNameNS(ns, localName);\n };\n };\n };\n}\n\nexport function getElementsByClassName(classNames) {\n return function (doc) {\n return function () {\n return doc.getElementsByClassName(classNames);\n };\n };\n}\n\nexport function createElement(localName) {\n return function (doc) {\n return function () {\n return doc.createElement(localName);\n };\n };\n}\n\nexport function _createElementNS(ns) {\n return function (qualifiedName) {\n return function (doc) {\n return function () {\n return doc.createElementNS(ns, qualifiedName);\n };\n };\n };\n}\n\nexport function createDocumentFragment(doc) {\n return function () {\n return doc.createDocumentFragment();\n };\n}\n\nexport function createTextNode(data) {\n return function (doc) {\n return function () {\n return doc.createTextNode(data);\n };\n };\n}\n\nexport function createComment(data) {\n return function (doc) {\n return function () {\n return doc.createComment(data);\n };\n };\n}\n\nexport function createProcessingInstruction(target) {\n return function (data) {\n return function (doc) {\n return function () {\n return doc.createProcessingInstruction(target, data);\n };\n };\n };\n}\n\nexport function importNode(node) {\n return function (deep) {\n return function (doc) {\n return function () {\n return doc.importNode(node, deep);\n };\n };\n };\n}\n\nexport function adoptNode(node) {\n return function (doc) {\n return function () {\n return doc.adoptNode(node);\n };\n };\n}\n", "module Util where\n\nimport Prelude\n\nimport Control.Monad.Maybe.Trans (MaybeT(..))\nimport Data.Array (filter, find, mapMaybe)\nimport Data.Foldable (for_)\nimport Data.Maybe (Maybe(..), fromJust, fromMaybe, maybe)\nimport Data.Nullable (Nullable, toMaybe)\nimport Data.String (Pattern(..), Replacement(..), drop, replaceAll, split, take)\nimport Data.Tuple (Tuple(..), fst, snd)\nimport Effect (Effect)\nimport Halogen (ClassName(..))\nimport Halogen.HTML as HH\nimport Halogen.HTML.Properties as HP\nimport JSURI (decodeURIComponent, encodeURIComponent)\nimport Partial.Unsafe (unsafePartial)\nimport Web.DOM (Element, Node)\nimport Web.DOM.Document (toNonElementParentNode)\nimport Web.DOM.Element (fromNode, toParentNode)\nimport Web.DOM.NodeList (toArray)\nimport Web.DOM.NonElementParentNode (getElementById)\nimport Web.DOM.ParentNode (QuerySelector(..), querySelector, querySelectorAll)\nimport Web.HTML (HTMLDocument, Location, window)\nimport Web.HTML.HTMLDocument (body) as HD\nimport Web.HTML.HTMLDocument (toDocument)\nimport Web.HTML.HTMLElement (HTMLElement)\nimport Web.HTML.HTMLElement (fromElement) as HE\nimport Web.HTML.Location (search)\nimport Web.HTML.Window (document, location)\n\nunsafeDecode :: String -> String\nunsafeDecode str = unsafePartial $ fromJust $ decodeURIComponent str\n \n-- Halogen\n\nclass_ :: forall r i. String -> HP.IProp ( \"class\" :: String | r) i\nclass_ = HP.class_ <<< HH.ClassName\n\nattr :: forall r i. String -> String -> HP.IProp r i\nattr a = HP.attr (HH.AttrName a)\n\n-- Util\n\n_queryBoth :: forall a. Tuple String Element -> Tuple String Element -> (Element -> Element -> Effect a) -> Effect Unit\n_queryBoth (Tuple qa ea) (Tuple qb eb) f = do\n ma <- _querySelector qa ea\n mb <- _querySelector qb eb\n for_ ma \\a -> \n for_ mb \\b ->\n f a b\n\n_queryBoth' :: forall a. Tuple String Element -> Tuple String Element -> (Element -> Array Node -> Effect a) -> Effect Unit\n_queryBoth' (Tuple qa ea) (Tuple qb eb) f = do\n ma <- _querySelector qa ea\n bs <- _querySelectorAll qb eb\n for_ ma \\a -> \n f a bs\n\n_queryBoth'' :: forall a. Tuple String Element -> Tuple String Element -> (Array Node -> Array Node -> Effect a) -> Effect a\n_queryBoth'' (Tuple qa ea) (Tuple qb eb) f = do\n as <- _querySelectorAll qa ea\n bs <- _querySelectorAll qb eb\n f as bs\n\n_querySelector :: String -> Element -> Effect (Maybe Element)\n_querySelector s n = querySelector (QuerySelector s) (toParentNode n)\n\n_querySelectorAll :: String -> Element -> Effect (Array Node)\n_querySelectorAll s n = toArray =<< querySelectorAll (QuerySelector s) (toParentNode n)\n\n_fromNode :: Node -> Element\n_fromNode e = unsafePartial $ fromJust (fromNode e)\n\n_fromElement :: Element -> HTMLElement\n_fromElement e = unsafePartial $ fromJust (HE.fromElement e)\n\n_getElementById :: String -> HTMLDocument -> Effect (Maybe Element)\n_getElementById s = getElementById s <<< toNonElementParentNode <<< toDocument\n\n_doc :: Effect HTMLDocument\n_doc = document =<< window \n\n_loc :: Effect Location\n_loc = location =<< window \n\ntype QueryStringArray = Array (Tuple String (Maybe String))\n\n_curQuerystring :: Effect QueryStringArray\n_curQuerystring = do\n loc <- _loc\n srh <- search loc\n pure $ _parseQueryString srh\n\n_parseQueryString :: String -> QueryStringArray\n_parseQueryString srh = do\n let qs = let srh' = take 1 srh in if (srh' == \"#\" || srh' == \"?\") then drop 1 srh else srh\n mapMaybe go $ (filter (_ /= \"\") <<< split (Pattern \"&\")) qs\n where\n decode = unsafeDecode <<< replaceAll (Pattern \"+\") (Replacement \" \")\n go kv =\n case split (Pattern \"=\") kv of\n [k] -> Just (Tuple (decode k) Nothing)\n [k, v] -> Just (Tuple (decode k) (Just (decode v)))\n _ -> Nothing\n\n_lookupQueryStringValue :: QueryStringArray -> String -> Maybe String\n_lookupQueryStringValue qs k = do\n join $ map snd $ find ((_ == k) <<< fst) qs\n\n_body :: Effect HTMLElement\n_body = unsafePartial $ pure <<< fromJust =<< HD.body =<< _doc\n\n_mt :: forall a. Effect (Maybe a) -> MaybeT Effect a\n_mt = MaybeT\n\n_mt_pure :: forall a. Maybe a -> MaybeT Effect a\n_mt_pure = MaybeT <<< pure\n\nencodeTag :: String -> String\nencodeTag = fromMaybe \"\" <<< encodeURIComponent <<< replaceAll (Pattern \"+\") (Replacement \"%2B\")\n\ndummyAttr :: forall r i. HP.IProp r i\ndummyAttr = HP.attr (HH.AttrName \"data-dummy\") \"\"\n\nwhenP :: forall r i. Boolean -> HP.IProp r i -> HP.IProp r i\nwhenP b p = if b then p else dummyAttr\n\nmaybeP :: forall a r i. Maybe a -> (a -> HP.IProp r i) -> HP.IProp r i\nmaybeP m p = maybe dummyAttr p m\n \nwhenC :: Boolean -> ClassName -> ClassName\nwhenC b c = if b then c else ClassName \"\"\n\nwhenH :: forall p i. Boolean -> (Unit -> HH.HTML p i) -> HH.HTML p i\nwhenH b k = if b then k unit else HH.text \"\"\n\nwhenA :: forall t. Boolean -> (Unit -> Array t) -> Array t\nwhenA b k = if b then k unit else []\n\nifElseH :: forall p i. Boolean -> (Unit -> HH.HTML p i) -> (Unit -> HH.HTML p i) -> HH.HTML p i\nifElseH b f k = if b then f unit else k unit\n\nifElseA :: forall t. Boolean -> (Unit -> Array t) -> (Unit -> Array t) -> Array t\nifElseA b f k = if b then f unit else k unit\n\nmaybeH :: forall a p i. Maybe a -> (a -> HH.HTML p i) -> HH.HTML p i\nmaybeH m k = maybe (HH.text \"\") k m\n\nfromNullableStr :: Nullable String -> String\nfromNullableStr = fromMaybe \"\" <<< toMaybe\n\nmonthNames :: Array String\nmonthNames = [\"january\", \"february\", \"march\", \"april\", \"may\", \"june\", \"july\", \"august\", \"september\", \"october\", \"november\", \"december\"]\n", "module Component.AccountSettings where\n\nimport Prelude hiding (div)\n\nimport App (editAccountSettings)\nimport Data.Lens (Lens', lens, use, (%=))\nimport Effect.Aff (Aff)\nimport Halogen as H\nimport Halogen.HTML (div, input, text)\nimport Halogen.HTML.Elements (label)\nimport Halogen.HTML.Events (onChecked)\nimport Halogen.HTML.Properties (InputType(..), checked, for, id, name, type_)\nimport Model (AccountSettings)\nimport Util (class_)\nimport Web.Event.Event (Event)\n\ntype UState =\n { us :: AccountSettings\n }\n\n_us :: Lens' UState AccountSettings\n_us = lens _.us (_ { us = _ })\n\ndata UAction\n = UEditField EditField\n | USubmit Event\n\ndata EditField\n = EarchiveDefault Boolean\n | EprivateDefault Boolean\n | EprivacyLock Boolean\n\n\n-- | The bookmark component definition.\nusetting :: forall q i o. AccountSettings -> H.Component q i o Aff\nusetting u' =\n H.mkComponent\n { initialState: const (mkState u')\n , render\n , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }\n }\n where\n\n mkState u =\n { us: u\n }\n\n render :: forall m. UState -> H.ComponentHTML UAction () m\n render { us } =\n div [ class_ \"settings-form\" ]\n [ div [ class_ \"fw7 mb2\"] [ text \"Account Settings\" ]\n , div [ class_ \"flex items-center mb2\" ]\n [ input [ type_ InputCheckbox , class_ \"pointer mr2\" , id \"archiveDefault\", name \"archiveDefault\"\n , checked (us.archiveDefault) , onChecked (editField EarchiveDefault) ]\n , label [ for \"archiveDefault\", class_ \"lh-copy\" ]\n [ text \"Archive Non-Private Bookmarks (archive.li)\" ]\n ]\n , div [ class_ \"flex items-center mb2\" ]\n [ input [ type_ InputCheckbox , class_ \"pointer mr2\" , id \"privateDefault\", name \"privateDefault\"\n , checked (us.privateDefault) , onChecked (editField EprivateDefault) ]\n , label [ for \"privateDefault\", class_ \"lh-copy\" ]\n [ text \"Default new bookmarks to Private\" ]\n ]\n , div [ class_ \"flex items-center mb2\" ]\n [ input [ type_ InputCheckbox , class_ \"pointer mr2\" , id \"privacyLock\", name \"privacyLock\"\n , checked (us.privacyLock) , onChecked (editField EprivacyLock) ]\n , label [ for \"privacyLock\", class_ \"lh-copy\" ]\n [ text \"Privacy Lock (Private Account)\" ]\n ]\n ]\n where\n editField :: forall a. (a -> EditField) -> a -> UAction\n editField f = UEditField <<< f\n\n handleAction :: UAction -> H.HalogenM UState UAction () o Aff Unit\n handleAction (UEditField f) = do\n _us %= case f of\n EarchiveDefault e -> _ { archiveDefault = e }\n EprivateDefault e -> _ { privateDefault = e }\n EprivacyLock e -> _ { privacyLock = e }\n us <- use _us\n void $ H.liftAff (editAccountSettings us)\n\n handleAction (USubmit _) = do\n us <- use _us\n void $ H.liftAff (editAccountSettings us)\n", "export const log = function (s) {\n return function () {\n console.log(s);\n };\n};\n\nexport const warn = function (s) {\n return function () {\n console.warn(s);\n };\n};\n\nexport const error = function (s) {\n return function () {\n console.error(s);\n };\n};\n\nexport const info = function (s) {\n return function () {\n console.info(s);\n };\n};\n\nexport const debug = function (s) {\n return function () {\n console.debug(s);\n };\n};\n\nexport const time = function (s) {\n return function () {\n console.time(s);\n };\n};\n\nexport const timeLog = function (s) {\n return function () {\n console.timeLog(s);\n };\n};\n\nexport const timeEnd = function (s) {\n return function () {\n console.timeEnd(s);\n };\n};\n\nexport const clear = function () {\n console.clear();\n};\n\nexport const group = function (s) {\n return function () {\n console.group(s);\n };\n};\n\nexport const groupCollapsed = function (s) {\n return function () {\n console.groupCollapsed(s);\n };\n};\n\nexport const groupEnd = function () {\n console.groupEnd();\n};\n", "module Component.Add where\n\nimport Prelude hiding (div)\n\nimport Affjax (printError)\nimport Affjax.StatusCode (StatusCode(..))\nimport App (destroy, editBookmark, lookupTitle)\nimport Data.Either (Either(..))\nimport Data.Lens (Lens', lens, use, (%=), (.=))\nimport Data.Maybe (Maybe(..), fromMaybe, isJust, maybe)\nimport Data.Monoid (guard)\nimport Data.String (Pattern(..), null, stripPrefix)\nimport Data.Tuple (fst, snd)\nimport Effect.Aff (Aff)\nimport Effect.Class (liftEffect)\nimport Effect.Console (log)\nimport Globals (closeWindow, mmoment8601)\nimport Halogen as H\nimport Halogen.HTML (button, div, form, input, label, p, span, table, tbody_, td, td_, text, textarea, tr_)\nimport Halogen.HTML.Events (onSubmit, onValueChange, onChecked, onClick)\nimport Halogen.HTML.Properties (ButtonType(..), InputType(..), autocomplete, autofocus, checked, disabled, for, id, name, required, rows, title, type_, value)\nimport Model (Bookmark)\nimport Util (_curQuerystring, _loc, _doc, _lookupQueryStringValue, attr, class_, ifElseH, whenH)\nimport Web.Event.Event (Event, preventDefault)\nimport Web.HTML (window)\nimport Web.HTML.HTMLDocument (referrer)\nimport Web.HTML.Location (setHref, origin)\nimport DOM.HTML.Indexed.AutocompleteType (AutocompleteType(..))\n\ndata BAction\n = BEditField EditField\n | BEditSubmit Event\n | BDeleteAsk Boolean\n | BLookupTitle\n | BDestroy\n\ndata EditField\n = Eurl String\n | Etitle String\n | Edescription String\n | Etags String\n | Eprivate Boolean\n | Etoread Boolean\n\ntype BState =\n { bm :: Bookmark\n , edit_bm :: Bookmark\n , deleteAsk :: Boolean\n , loading :: Boolean\n , destroyed :: Boolean\n , apiError :: Maybe String\n }\n\n_bm :: Lens' BState Bookmark\n_bm = lens _.bm (_ { bm = _ })\n\n_edit_bm :: Lens' BState Bookmark\n_edit_bm = lens _.edit_bm (_ { edit_bm = _ })\n\n_apiError :: Lens' BState (Maybe String)\n_apiError = lens _.apiError (_ { apiError = _ })\n\naddbmark :: forall q i o. Bookmark -> H.Component q i o Aff\naddbmark b' =\n H.mkComponent\n { initialState: const (mkState b')\n , render\n , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }\n }\n where\n\n mkState b =\n { bm: b\n , edit_bm: b\n , deleteAsk: false\n , destroyed: false\n , loading: false\n , apiError: Nothing\n }\n\n render :: forall m. BState -> H.ComponentHTML BAction () m\n render s@{ bm, edit_bm, apiError } =\n ifElseH (not s.destroyed)\n display_edit\n display_destroyed\n where\n display_edit _ =\n form [ onSubmit BEditSubmit ]\n [ table [ class_ \"w-100\" ]\n [ tbody_\n [ tr_\n [ td [ class_ \"w1\" ] [ ]\n , td_ [ whenH (bm.bid > 0)\n display_exists,\n whenH (isJust apiError)\n (alert_notification (fromMaybe \"\" apiError))\n ]\n ]\n , tr_\n [ td_ [ label [ for \"url\" ] [ text \"URL\" ] ]\n , td_ [ input [ type_ InputUrl , id \"url\", class_ \"w-100 mv1\" , required true, name \"url\", autofocus (null bm.url)\n , value (edit_bm.url) , onValueChange (editField Eurl)] ]\n ]\n , tr_\n [ td_ [ label [ for \"title\" ] [ text \"title\" ] ]\n , td [class_ \"flex\"]\n [ input [ type_ InputText , id \"title\", class_ \"w-100 mv1 flex-auto\" , name \"title\" , value (edit_bm.title) , onValueChange (editField Etitle)]\n , button [ disabled s.loading, type_ ButtonButton, onClick \\_ -> BLookupTitle, class_ (\"ml2 input-reset ba b--navy pointer f6 di dim pa1 ma1 mr0 \" <> guard s.loading \"bg-light-silver\") ] [ text \"fetch\" ]\n ]\n ]\n , tr_\n [ td_ [ label [ for \"description\" ] [ text \"description\" ] ]\n , td_ [ textarea [ class_ \"w-100 mt1 mid-gray\" , id \"description\", name \"description\", rows 4\n , value (edit_bm.description) , onValueChange (editField Edescription)] ]\n ]\n , tr_\n [ td_ [ label [ for \"tags\" ] [ text \"tags\" ] ]\n , td_ [ input [ type_ InputText , id \"tags\", class_ \"w-100 mv1\" , name \"tags\", autocomplete AutocompleteOff, attr \"autocapitalize\" \"off\", autofocus (not $ null bm.url)\n , value (edit_bm.tags) , onValueChange (editField Etags)] ]\n ]\n , tr_\n [ td_ [ label [ for \"private\" ] [ text \"private\" ] ]\n , td_ [ input [ type_ InputCheckbox , id \"private\", class_ \"private pointer\" , name \"private\"\n , checked (edit_bm.private) , onChecked (editField Eprivate)] ]\n ]\n , tr_\n [ td_ [ label [ for \"toread\" ] [ text \"read later\" ] ]\n , td_ [ input [ type_ InputCheckbox , id \"toread\", class_ \"toread pointer\" , name \"toread\"\n , checked (edit_bm.toread) , onChecked (editField Etoread)] ]\n ]\n , tr_\n [ td_ [ ]\n , td_ [ input [ type_ InputSubmit , class_ \"ph3 pv2 input-reset ba b--navy bg-transparent pointer f6 dib mt1 dim\"\n , value (if bm.bid > 0 then \"update bookmark\" else \"add bookmark\") ] ]\n ]\n ]\n ]\n ]\n\n display_exists _ = \n div [ class_ \"alert\" ]\n [ text \"previously saved\u00A0\"\n , span [ class_ \"link f7 dib gray pr3\" , title (maybe bm.time snd mmoment) ]\n [ text (maybe \"\u00A0\" fst mmoment) ]\n , div [ class_ \"edit_links dib ml1\" ]\n [ div [ class_ \"delete_link di\" ]\n [ button ([ type_ ButtonButton, onClick \\_ -> BDeleteAsk true, class_ \"delete\" ] <> guard s.deleteAsk [ attr \"hidden\" \"hidden\" ]) [ text \"delete\" ]\n , span ([ class_ \"confirm red\" ] <> guard (not s.deleteAsk) [ attr \"hidden\" \"hidden\" ])\n [ button [ type_ ButtonButton, onClick \\_ -> BDeleteAsk false] [ text \"cancel\u00A0/\u00A0\" ]\n , button [ type_ ButtonButton, onClick \\_ -> BDestroy, class_ \"red\" ] [ text \"destroy\" ]\n ] \n ]\n ]\n ]\n\n alert_notification alert_text _ = \n div [ class_ \"alert alert-err\" ] [ text alert_text ]\n\n display_destroyed _ = p [ class_ \"red\"] [text \"you killed this bookmark\"]\n\n editField :: forall a. (a -> EditField) -> a -> BAction\n editField f = BEditField <<< f\n mmoment = mmoment8601 bm.time\n -- toTextarea =\n -- drop 1\n -- <<< foldMap (\\x -> [br_, text x])\n -- <<< S.split (Pattern \"\\n\")\n\n handleAction :: BAction -> H.HalogenM BState BAction () o Aff Unit\n handleAction (BDeleteAsk e) = do\n H.modify_ (_ { deleteAsk = e })\n\n handleAction BLookupTitle = do\n H.modify_ (_ { loading = true })\n edit_bm <- H.gets _.edit_bm\n mtitle <- H.liftAff $ lookupTitle edit_bm\n case mtitle of\n Just title' -> _edit_bm %= (_ { title = title' })\n Nothing -> pure $ unit\n H.modify_ (_ { loading = false })\n\n handleAction (BDestroy) = do\n bid <- H.gets _.bm.bid\n void $ H.liftAff (destroy bid)\n H.modify_ (_ { destroyed = true })\n\n handleAction (BEditField f) = do\n _edit_bm %= case f of\n Eurl e -> _ { url = e }\n Etitle e -> _ { title = e }\n Edescription e -> _ { description = e }\n Etags e -> _ { tags = e }\n Eprivate e -> _ { private = e }\n Etoread e -> _ { toread = e }\n\n handleAction (BEditSubmit e) = do\n liftEffect (preventDefault e)\n edit_bm <- use _edit_bm \n _apiError .= Nothing\n H.liftAff (editBookmark edit_bm) >>= case _ of\n Left affErr -> do\n _apiError .= Just (printError affErr)\n liftEffect $ log (printError affErr)\n Right { status: StatusCode s } | s >= 200 && s < 300 -> do\n _bm .= edit_bm\n qs <- liftEffect $ _curQuerystring\n doc <- liftEffect $ _doc\n ref <- liftEffect $ referrer doc\n loc <- liftEffect $ _loc\n org <- liftEffect $ origin loc\n case _lookupQueryStringValue qs \"next\" of\n Just \"closeWindow\" -> liftEffect $ closeWindow =<< window\n Just \"back\" -> liftEffect $\n case stripPrefix (Pattern org) ref of\n Just _ -> setHref ref loc\n Nothing -> setHref org loc\n _ -> liftEffect $ closeWindow =<< window\n Right res -> do\n _apiError .= Just (res.body)\n liftEffect $ log (res.body)\n", "// use at your own risk!\nexport const unsafeSetInnerHTML = function(element) {\n return function(html) {\n return function() {\n element.innerHTML = html;\n };\n };\n};\n", "-- | Functions and types used to describe the `HalogenF` algebra used in a\n-- | component's `eval` function.\nmodule Halogen.Query\n ( Tell\n , mkTell\n , tell\n , tellAll\n , Request\n , mkRequest\n , request\n , requestAll\n , getHTMLElementRef\n , module Exports\n , module Halogen.Query.Input\n , module Halogen.Query.HalogenM\n , module Halogen.Query.HalogenQ\n ) where\n\nimport Prelude hiding (join)\n\nimport Control.Monad.State.Class (get, gets, modify, modify_, put) as Exports\nimport Control.Monad.Trans.Class (lift) as Exports\nimport Data.Map (Map)\nimport Data.Maybe (Maybe)\nimport Data.Symbol (class IsSymbol)\nimport Effect.Aff.Class (liftAff) as Exports\nimport Effect.Class (liftEffect) as Exports\nimport Halogen.Data.Slot (Slot)\nimport Halogen.Query.HalogenM (ForkId, HalogenF(..), HalogenM(..), SubscriptionId, fork, getRef, join, kill, query, queryAll, raise, subscribe, subscribe', unsubscribe)\nimport Halogen.Query.HalogenQ (HalogenQ(..))\nimport Halogen.Query.Input (RefLabel(..))\nimport Prim.Row as Row\nimport Type.Proxy (Proxy)\nimport Web.HTML.HTMLElement (HTMLElement)\nimport Web.HTML.HTMLElement as HTMLElement\n\n-- | Type synonym for a \"tell-style\" query - queries that only cause effects,\n-- | but that cannot receive a return value.\n-- |\n-- | In a query algebra, a tell constructor carries the algebra's type variable\n-- | as its last argument. For example:\n-- |\n-- | ``` purescript\n-- | data Query a\n-- | = SomeTell a\n-- | | SomeOtherTell String a\n-- | | NotATell (Boolean -> a)\n-- | ```\n-- |\n-- | Both `SomeTell` and `SomeOtherTell` carry a plain `a` as a value, whereas\n-- | `NotATell` has `a` as the result of a function so is considered to be a\n-- | \"request\" ([see below](#Request)).\ntype Tell f = Unit -> f Unit\n\n-- | Takes a data constructor of query algebra `f` and creates a tell query.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | data Query a = Tick a\n-- |\n-- | sendTick :: forall o. H.HalogenIO Query o Aff -> Aff (Maybe Unit)\n-- | sendTick app = app.query (H.mkTell Tick)\n-- | ```\nmkTell :: forall f. Tell f -> f Unit\nmkTell act = act unit\n\ntell\n :: forall state action output m label slots query output' slot _1\n . Row.Cons label (Slot query output' slot) _1 slots\n => IsSymbol label\n => Ord slot\n => Proxy label\n -> slot\n -> Tell query\n -> HalogenM state action slots output m Unit\ntell slot label req = void $ query slot label (req unit)\n\ntellAll\n :: forall state action output m label slots query output' slot _1\n . Row.Cons label (Slot query output' slot) _1 slots\n => IsSymbol label\n => Ord slot\n => Proxy label\n -> Tell query\n -> HalogenM state action slots output m Unit\ntellAll label req = void $ queryAll label (req unit)\n\n-- | Type synonym for an \"request-style\" query - queries that can cause effects\n-- | as well as fetching some information from a component.\n-- |\n-- | In a query algebra, a request constructor carries the algebra's type\n-- | variable as the return value of a function as its last argument. For\n-- | example:\n-- |\n-- | ``` purescript\n-- | data Query a = SomeRequest (Boolean -> a)\n-- | ```\ntype Request f a = (a -> a) -> f a\n\n-- | Takes a data constructor of query algebra `f` and creates a request query.\n-- |\n-- | For example:\n-- |\n-- | ```purescript\n-- | data Query a = GetTickCount (Int -> a)\n-- |\n-- | getTickCount :: forall o. H.HalogenIO Query o Aff -> Aff (Maybe Int)\n-- | getTickCount app = app.query (H.mkRequest GetTickCount)\n-- | ```\nmkRequest :: forall f a. Request f a -> f a\nmkRequest req = req identity\n\nrequest\n :: forall state action output m label slots query output' slot a _1\n . Row.Cons label (Slot query output' slot) _1 slots\n => IsSymbol label\n => Ord slot\n => Proxy label\n -> slot\n -> Request query a\n -> HalogenM state action slots output m (Maybe a)\nrequest slot label req = query slot label (req identity)\n\nrequestAll\n :: forall state action output m label slots query output' slot a _1\n . Row.Cons label (Slot query output' slot) _1 slots\n => IsSymbol label\n => Ord slot\n => Proxy label\n -> Request query a\n -> HalogenM state action slots output m (Map slot a)\nrequestAll label req = queryAll label (req identity)\n\n-- | Retrieves a `HTMLElement` value that is associated with a `Ref` in the\n-- | rendered output of a component. If there is no currently rendered value (or\n-- | it is not an `HTMLElement`) for the request will return `Nothing`.\ngetHTMLElementRef\n :: forall state action slots output m\n . RefLabel\n -> HalogenM state action slots output m (Maybe HTMLElement)\ngetHTMLElementRef = map (HTMLElement.fromElement =<< _) <<< getRef\n", "module Component.RawHtml where\n\nimport Prelude\n\nimport Data.Foldable (for_)\nimport Data.Maybe (Maybe(..))\nimport Effect (Effect)\nimport Effect.Aff (Aff, forkAff, makeAff)\nimport Effect.Class (liftEffect)\nimport Globals (RawHTML(..))\nimport Halogen as H\nimport Halogen.HTML as HH\nimport Halogen.HTML.Properties as HP\nimport Web.HTML (HTMLElement)\n\nforeign import unsafeSetInnerHTML :: HTMLElement -> RawHTML -> Effect Unit\n\ndata Action i\n = SetInnerHTML\n | Receive (Input i)\n\ntype Input :: forall k. k -> k\ntype Input i = i\n\ntype State i =\n { elRef :: H.RefLabel\n , inputval :: Input i\n }\n\ncomponent :: forall q o. H.Component q (Input String) o Aff\ncomponent = mkComponent RawHTML\n\nmkComponent :: forall q i o. (Input i -> RawHTML) -> H.Component q (Input i) o Aff\nmkComponent toRawHTML =\n H.mkComponent\n { initialState: \\inputval -> { elRef: H.RefLabel \"inputval\", inputval } \n , render\n , eval: H.mkEval (H.defaultEval { handleAction = handleAction\n , initialize = Just SetInnerHTML\n , receive = Just <<< Receive\n })\n }\n where\n render :: forall m. (State i) -> H.ComponentHTML (Action i) () m\n render state = \n HH.div \n [ HP.ref state.elRef ] \n []\n\n handleAction :: (Action i) -> H.HalogenM (State i) (Action i) () o Aff Unit\n handleAction = case _ of\n SetInnerHTML -> do\n { elRef } <- H.get\n mel <- H.getHTMLElementRef elRef\n for_ mel \\el -> do \n { inputval } <- H.get\n H.liftAff $ forkAff $ makeAff \\_ -> do\n liftEffect $ unsafeSetInnerHTML el (toRawHTML inputval)\n mempty\n pure unit\n \n Receive inputval -> do\n H.modify_ _ { inputval = inputval }\n handleAction $ SetInnerHTML\n", "/**\n * Gets the original marked default options.\n */\nexport function _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null\n };\n}\nexport let _defaults = _getDefaults();\nexport function changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n", "/**\n * Helpers\n */\nconst escapeTest = /[&<>\"']/;\nconst escapeReplace = new RegExp(escapeTest.source, 'g');\nconst escapeTestNoEncode = /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/;\nconst escapeReplaceNoEncode = new RegExp(escapeTestNoEncode.source, 'g');\nconst escapeReplacements = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nexport function escape(html, encode) {\n if (encode) {\n if (escapeTest.test(html)) {\n return html.replace(escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (escapeTestNoEncode.test(html)) {\n return html.replace(escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nconst unescapeTest = /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig;\nexport function unescape(html) {\n // explicitly match decimal, hex, and named HTML entities\n return html.replace(unescapeTest, (_, n) => {\n n = n.toLowerCase();\n if (n === 'colon')\n return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\nconst caret = /(^|[^\\[])\\^/g;\nexport function edit(regex, opt) {\n let source = typeof regex === 'string' ? regex : regex.source;\n opt = opt || '';\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n }\n };\n return obj;\n}\nexport function cleanUrl(href) {\n try {\n href = encodeURI(href).replace(/%25/g, '%');\n }\n catch (e) {\n return null;\n }\n return href;\n}\nexport const noopTest = { exec: () => null };\nexport function splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(/\\|/g, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(/ \\|/);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells[cells.length - 1].trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(/\\\\\\|/g, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nexport function rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && !invert) {\n suffLen++;\n }\n else if (currChar !== c && invert) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nexport function findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n return -1;\n}\n", "import { _defaults } from './defaults.ts';\nimport { rtrim, splitCells, escape, findClosingBracket } from './helpers.ts';\nfunction outputLink(cap, link, raw, lexer) {\n const href = link.href;\n const title = link.title ? escape(link.title) : null;\n const text = cap[1].replace(/\\\\([\\[\\]])/g, '$1');\n if (cap[0].charAt(0) !== '!') {\n lexer.state.inLink = true;\n const token = {\n type: 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text)\n };\n lexer.state.inLink = false;\n return token;\n }\n return {\n type: 'image',\n raw,\n href,\n title,\n text: escape(text)\n };\n}\nfunction indentCodeCompensation(raw, text) {\n const matchIndentToCode = raw.match(/^(\\s+)(?:```)/);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(/^\\s+/);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nexport class _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0]\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(/^ {1,4}/gm, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '');\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (/#$/.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || / $/.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: cap[0]\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n const text = rtrim(cap[0].replace(/^ *>[ \\t]?/gm, ''), '\\n');\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n const tokens = this.lexer.blockTokens(text);\n this.lexer.state.top = top;\n return {\n type: 'blockquote',\n raw: cap[0],\n tokens,\n text\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: []\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`);\n let raw = '';\n let itemContents = '';\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(/^\\t+/, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else {\n indent = cap[2].search(/[^ ]/); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n let blankLine = false;\n if (!line && /^ *$/.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`);\n const hrRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`);\n const fencesBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`);\n const headingBeginRegex = new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(/^ {1,4}(?=( {4})*[^ ])/g, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(src)) {\n break;\n }\n if (nextLine.search(/[^ ]/) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLine.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.search(/[^ ]/) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLine.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (/\\n *\\n *$/.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = /^\\[[ xX]\\] /.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(/^\\[[ xX]\\] +/, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: []\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n list.items[list.items.length - 1].raw = raw.trimEnd();\n (list.items[list.items.length - 1]).text = itemContents.trimEnd();\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => /\\n.*\\n/.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0]\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(/\\s+/g, ' ');\n const href = cap[2] ? cap[2].replace(/^<(.*)>$/, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!/[:|]/.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(/^\\||\\| *$/g, '').split('|');\n const rows = cap[3] && cap[3].trim() ? cap[3].replace(/\\n[ \\t]*$/, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: []\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (/^ *-+: *$/.test(align)) {\n item.align.push('right');\n }\n else if (/^ *:-+: *$/.test(align)) {\n item.align.push('center');\n }\n else if (/^ *:-+ *$/.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (const header of headers) {\n item.header.push({\n text: header,\n tokens: this.lexer.inline(header)\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map(cell => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell)\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1])\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text)\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0])\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: escape(cap[1])\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && /^
    /i.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && /^<(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && /^<\\/(pre|code|kbd|script)(\\s|>)/i.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0]\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && /^$/.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (/^$/.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title\n }, cap[0], this.lexer);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text\n };\n }\n return outputLink(cap, link, cap[0], this.lexer);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(/[\\p{L}\\p{N}]/u))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text)\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(/\\n/g, ' ');\n const hasNonSpaceChars = /[^ ]/.test(text);\n const hasSpaceCharsOnBothEnds = /^ /.test(text) && / $/.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n text = escape(text, true);\n return {\n type: 'codespan',\n raw: cap[0],\n text\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0]\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2])\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[1]);\n href = 'mailto:' + text;\n }\n else {\n text = escape(cap[1]);\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = escape(cap[0]);\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = escape(cap[0]);\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text\n }\n ]\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n let text;\n if (this.lexer.state.inRawBlock) {\n text = cap[0];\n }\n else {\n text = escape(cap[0]);\n }\n return {\n type: 'text',\n raw: cap[0],\n text\n };\n }\n }\n}\n", "import { edit, noopTest } from './helpers.ts';\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?: *(?:\\n|$))+/;\nconst blockCode = /^( {4}[^\\n]+(?:\\n(?: *(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheading = edit(/^(?!bull )((?:.|\\n(?!\\s*?\\n|bull ))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/)\n .replace(/bull/g, bullet) // lists can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n *)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n *)?| *\\n *)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|section|source|summary|table|tbody|td|tfoot|th|thead|title|tr'\n + '|track|ul';\nconst _comment = /|$)/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|\\\\n*|$)' // (4)\n + '|\\\\n*|$)' // (5)\n + '|)[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) open tag\n + '|(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n *)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', ' {4}[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setex headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', ')|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex()\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+? *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex()\n};\n/**\n * Inline-Level Grammar\n */\nconst escape = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\`^|~';\nconst punctuation = edit(/^((?![*_])[\\spunctuation])/, 'u')\n .replace(/punctuation/g, _punctuation).getRegex();\n// sequences em should skip over [title](link), `code`, \nconst blockSkip = /\\[[^[\\]]*?\\]\\([^\\(\\)]*?\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelim = edit(/^(?:\\*+(?:((?!\\*)[punct])|[^\\s*]))|^_+(?:((?!_)[punct])|([^\\s_]))/, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAst = edit('^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)[punct](\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?!\\\\*)(?=[punct\\\\s]|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)[punct\\\\s](\\\\*+)(?=[^punct\\\\s])' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=[punct])' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)[punct](\\\\*+)(?!\\\\*)(?=[punct])' // (5) #***# can be either Left or Right Delimiter\n + '|[^punct\\\\s](\\\\*+)(?=[^punct\\\\s])', 'gu') // (6) a***a can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)[punct](_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|[^punct\\\\s](_+)(?!_)(?=[punct\\\\s]|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)[punct\\\\s](_+)(?=[^punct\\\\s])' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=[punct])' // (4) ___# can only be Left Delimiter\n + '|(?!_)[punct](_+)(?!_)(?=[punct])', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\([punct])/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. \n + '|^' // declaration, e.g. \n + '|^') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:\\s+(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^\\s\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex()\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n escape: edit(escape).replace('])', '~|])').getRegex(),\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])([\\s\\S]*?[^\\s~])\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\ {\n return leading + ' '.repeat(tabs.length);\n });\n }\n let token;\n let lastToken;\n let cutSrc;\n let lastParagraphClipped;\n while (src) {\n if (this.options.extensions\n && this.options.extensions.block\n && this.options.extensions.block.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n if (token.raw.length === 1 && tokens.length > 0) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n tokens[tokens.length - 1].raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n // An indented code block cannot interrupt a paragraph.\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && (lastToken.type === 'paragraph' || lastToken.type === 'text')) {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n lastToken = tokens[tokens.length - 1];\n if (lastParagraphClipped && lastToken.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = (cutSrc.length !== src.length);\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue[this.inlineQueue.length - 1].src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n let token, lastToken, cutSrc;\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match;\n let keepPrevChar, prevChar;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n // extensions\n if (this.options.extensions\n && this.options.extensions.inline\n && this.options.extensions.inline.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n lastToken = tokens[tokens.length - 1];\n if (lastToken && token.type === 'text' && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n cutSrc = src;\n if (this.options.extensions && this.options.extensions.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n lastToken = tokens[tokens.length - 1];\n if (lastToken && lastToken.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n", "import { _defaults } from './defaults.ts';\nimport { cleanUrl, escape } from './helpers.ts';\n/**\n * Renderer\n */\nexport class _Renderer {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n code(code, infostring, escaped) {\n const lang = (infostring || '').match(/^\\S*/)?.[0];\n code = code.replace(/\\n$/, '') + '\\n';\n if (!lang) {\n return '
    '\n                + (escaped ? code : escape(code, true))\n                + '
    \\n';\n }\n return '
    '\n            + (escaped ? code : escape(code, true))\n            + '
    \\n';\n }\n blockquote(quote) {\n return `
    \\n${quote}
    \\n`;\n }\n html(html, block) {\n return html;\n }\n heading(text, level, raw) {\n // ignore IDs\n return `${text}\\n`;\n }\n hr() {\n return '
    \\n';\n }\n list(body, ordered, start) {\n const type = ordered ? 'ol' : 'ul';\n const startatt = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startatt + '>\\n' + body + '\\n';\n }\n listitem(text, task, checked) {\n return `
  • ${text}
  • \\n`;\n }\n checkbox(checked) {\n return '';\n }\n paragraph(text) {\n return `

    ${text}

    \\n`;\n }\n table(header, body) {\n if (body)\n body = `${body}`;\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + body\n + '
    \\n';\n }\n tablerow(content) {\n return `\\n${content}\\n`;\n }\n tablecell(content, flags) {\n const type = flags.header ? 'th' : 'td';\n const tag = flags.align\n ? `<${type} align=\"${flags.align}\">`\n : `<${type}>`;\n return tag + content + `\\n`;\n }\n /**\n * span level renderer\n */\n strong(text) {\n return `${text}`;\n }\n em(text) {\n return `${text}`;\n }\n codespan(text) {\n return `${text}`;\n }\n br() {\n return '
    ';\n }\n del(text) {\n return `${text}`;\n }\n link(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '
    ';\n return out;\n }\n image(href, title, text) {\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = `\"${text}\"`;\n 0 && item.tokens[0].type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + item.tokens[0].tokens[0].text;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n text: checkbox + ' '\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parse(item.tokens, loose);\n body += this.renderer.listitem(itemBody, task, !!checked);\n }\n out += this.renderer.list(body, ordered, start);\n continue;\n }\n case 'html': {\n const htmlToken = token;\n out += this.renderer.html(htmlToken.text, htmlToken.block);\n continue;\n }\n case 'paragraph': {\n const paragraphToken = token;\n out += this.renderer.paragraph(this.parseInline(paragraphToken.tokens));\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text;\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + (textToken.tokens ? this.parseInline(textToken.tokens) : textToken.text);\n }\n out += top ? this.renderer.paragraph(body) : body;\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer) {\n renderer = renderer || this.renderer;\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions && this.options.extensions.renderers && this.options.extensions.renderers[token.type]) {\n const ret = this.options.extensions.renderers[token.type].call({ parser: this }, token);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(token.type)) {\n out += ret || '';\n continue;\n }\n }\n switch (token.type) {\n case 'escape': {\n const escapeToken = token;\n out += renderer.text(escapeToken.text);\n break;\n }\n case 'html': {\n const tagToken = token;\n out += renderer.html(tagToken.text);\n break;\n }\n case 'link': {\n const linkToken = token;\n out += renderer.link(linkToken.href, linkToken.title, this.parseInline(linkToken.tokens, renderer));\n break;\n }\n case 'image': {\n const imageToken = token;\n out += renderer.image(imageToken.href, imageToken.title, imageToken.text);\n break;\n }\n case 'strong': {\n const strongToken = token;\n out += renderer.strong(this.parseInline(strongToken.tokens, renderer));\n break;\n }\n case 'em': {\n const emToken = token;\n out += renderer.em(this.parseInline(emToken.tokens, renderer));\n break;\n }\n case 'codespan': {\n const codespanToken = token;\n out += renderer.codespan(codespanToken.text);\n break;\n }\n case 'br': {\n out += renderer.br();\n break;\n }\n case 'del': {\n const delToken = token;\n out += renderer.del(this.parseInline(delToken.tokens, renderer));\n break;\n }\n case 'text': {\n const textToken = token;\n out += renderer.text(textToken.text);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n", "import { _defaults } from './defaults.ts';\nexport class _Hooks {\n options;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens'\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n}\n", "import { _getDefaults } from './defaults.ts';\nimport { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { escape } from './helpers.ts';\nexport class Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.#parseMarkdown(_Lexer.lex, _Parser.parse);\n parseInline = this.#parseMarkdown(_Lexer.lexInline, _Parser.parseInline);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n values = values.concat(this.walkTokens(genericToken[childTokens], callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (prop === 'options') {\n // ignore options property\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n #parseMarkdown(lexer, parser) {\n return (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n // Show warning if an extension set async to true but the parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n if (!opt.silent) {\n console.warn('marked(): The async option was set to true by an extension. The async: false option sent to parse will be ignored.');\n }\n opt.async = true;\n }\n const throwError = this.#onError(!!opt.silent, !!opt.async);\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n }\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n }\n #onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '

    An error occurred:

    '\n                    + escape(e.message + '', true)\n                    + '
    ';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n", "import { _Lexer } from './Lexer.ts';\nimport { _Parser } from './Parser.ts';\nimport { _Tokenizer } from './Tokenizer.ts';\nimport { _Renderer } from './Renderer.ts';\nimport { _TextRenderer } from './TextRenderer.ts';\nimport { _Hooks } from './Hooks.ts';\nimport { Marked } from './Instance.ts';\nimport { _getDefaults, changeDefaults, _defaults } from './defaults.ts';\nconst markedInstance = new Marked();\nexport function marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nexport const options = marked.options;\nexport const setOptions = marked.setOptions;\nexport const use = marked.use;\nexport const walkTokens = marked.walkTokens;\nexport const parseInline = marked.parseInline;\nexport const parse = marked;\nexport const parser = _Parser.parse;\nexport const lexer = _Lexer.lex;\nexport { _defaults as defaults, _getDefaults as getDefaults } from './defaults.ts';\nexport { _Lexer as Lexer } from './Lexer.ts';\nexport { _Parser as Parser } from './Parser.ts';\nexport { _Tokenizer as Tokenizer } from './Tokenizer.ts';\nexport { _Renderer as Renderer } from './Renderer.ts';\nexport { _TextRenderer as TextRenderer } from './TextRenderer.ts';\nexport { _Hooks as Hooks } from './Hooks.ts';\nexport { Marked } from './Instance.ts';\n", "import { marked } from 'marked';\nimport DOMPurify from \"dompurify\"\n\nmarked.setOptions({\n pedantic: false,\n gfm: true\n});\n\nexport const markedImpl = function(str) {\n if (!str) return \"\";\n return DOMPurify.sanitize(marked.parse(str));\n};\n", "module Foreign.Marked where\n\nimport Prelude\nimport Globals (RawHTML(..))\n\nforeign import markedImpl :: String -> String\n\nmarked :: String -> RawHTML\nmarked = RawHTML <<< markedImpl\n", "module Component.Markdown (component, Slot) where\n\nimport Component.RawHtml as RH\nimport Data.Const (Const)\nimport Effect.Aff (Aff)\nimport Foreign.Marked (marked)\nimport Halogen as H\nimport Prelude (Void)\n\ntype Slot = H.Slot (Const Void) Void\n\ncomponent :: forall q o. H.Component q String o Aff\ncomponent = RH.mkComponent marked\n", "module Effect.Class.Console where\n\nimport Control.Bind (discard, bind, pure)\nimport Data.Function ((<<<))\nimport Data.Show (class Show)\nimport Data.Unit (Unit)\nimport Effect.Class (class MonadEffect, liftEffect)\nimport Effect.Console as EffConsole\n\nlog :: forall m. MonadEffect m => String -> m Unit\nlog = liftEffect <<< EffConsole.log\n\nlogShow :: forall m a. MonadEffect m => Show a => a -> m Unit\nlogShow = liftEffect <<< EffConsole.logShow\n\nwarn :: forall m. MonadEffect m => String -> m Unit\nwarn = liftEffect <<< EffConsole.warn\n\nwarnShow :: forall m a. MonadEffect m => Show a => a -> m Unit\nwarnShow = liftEffect <<< EffConsole.warnShow\n\nerror :: forall m. MonadEffect m => String -> m Unit\nerror = liftEffect <<< EffConsole.error\n\nerrorShow :: forall m a. MonadEffect m => Show a => a -> m Unit\nerrorShow = liftEffect <<< EffConsole.errorShow\n\ninfo :: forall m. MonadEffect m => String -> m Unit\ninfo = liftEffect <<< EffConsole.info\n\ninfoShow :: forall m a. MonadEffect m => Show a => a -> m Unit\ninfoShow = liftEffect <<< EffConsole.infoShow\n\ndebug :: forall m. MonadEffect m => String -> m Unit\ndebug = liftEffect <<< EffConsole.debug\n\ndebugShow :: forall m a. MonadEffect m => Show a => a -> m Unit\ndebugShow = liftEffect <<< EffConsole.debugShow\n\ntime :: forall m. MonadEffect m => String -> m Unit\ntime = liftEffect <<< EffConsole.time\n\ntimeLog :: forall m. MonadEffect m => String -> m Unit\ntimeLog = liftEffect <<< EffConsole.timeLog\n\ntimeEnd :: forall m. MonadEffect m => String -> m Unit\ntimeEnd = liftEffect <<< EffConsole.timeEnd\n\nclear :: forall m. MonadEffect m => m Unit\nclear = liftEffect EffConsole.clear\n\ngroup :: forall m. MonadEffect m => String -> m Unit\ngroup = liftEffect <<< EffConsole.group\n\ngroupCollapsed :: forall m. MonadEffect m => String -> m Unit\ngroupCollapsed = liftEffect <<< EffConsole.groupCollapsed\n\ngroupEnd :: forall m. MonadEffect m => m Unit\ngroupEnd = liftEffect EffConsole.groupEnd\n\ngrouped :: forall m a. MonadEffect m => String -> m a -> m a\ngrouped name inner = do\n group name\n result <- inner\n groupEnd\n pure result\n", "-- | This module re-exports the types for the `HTML` DSL, and values for all\n-- | supported HTML elements.\nmodule Halogen.HTML\n ( ComponentHTML\n , PlainHTML\n , fromPlainHTML\n , slot\n , slot_\n , memoized\n , lazy\n , lazy2\n , lazy3\n , module Halogen.HTML.Core\n , module Halogen.HTML.Elements\n , module Halogen.HTML.Properties\n ) where\n\nimport Halogen.HTML.Elements\n\nimport Data.Function (const)\nimport Data.Function.Uncurried as Fn\nimport Data.Maybe (Maybe(..))\nimport Data.Symbol (class IsSymbol)\nimport Halogen.Component (Component, ComponentSlot(..), componentSlot)\nimport Halogen.Data.Slot (Slot)\nimport Halogen.HTML.Core (class IsProp, AttrName(..), ClassName(..), HTML(..), Namespace(..), PropName(..), ElemName(..), text, handler)\nimport Halogen.HTML.Core as Core\nimport Halogen.HTML.Properties (IProp, attr, attrNS, prop)\nimport Halogen.VDom.Thunk (thunk1, thunk2, thunk3, thunked)\nimport Prelude (class Ord, Void, (<<<), (<$>))\nimport Prim.Row as Row\nimport Type.Proxy (Proxy)\nimport Unsafe.Coerce (unsafeCoerce)\n\n-- | A convenience synonym for the output type of a `render` function for a\n-- | component that renders HTML.\n-- |\n-- | - `action` is the type of actions, events internal to the component that can\n-- | be evaluated with the `handleAction` function\n-- | - `slots` is the set of child component types that can be used in the HTML\n-- | - `m` is the monad used by the child component during evaluation\ntype ComponentHTML action slots m = HTML (ComponentSlot slots m action) action\n\n-- | A type useful for a chunk of HTML with no slot-embedding or query-raising.\n-- |\n-- | Often a polymorphic usage of `HTML` is good enough for this, but sometimes\n-- | it's useful to have a type like this (and accompanying coercion) when doing\n-- | things like creating components that accept a chunk of HTML as part of\n-- | their configuration.\ntype PlainHTML = HTML Void Void\n\n-- | Relaxes the type of `PlainHTML` to make it compatible with all `HTML`.\nfromPlainHTML :: forall w i. PlainHTML -> HTML w i\nfromPlainHTML = unsafeCoerce -- \u2245 bimap absurd absurd\n\n-- | Defines a slot for a child component. Takes:\n-- | - the slot address label\n-- | - the slot address index\n-- | - the component for the slot\n-- | - the input value to pass to the component\n-- | - a function mapping outputs from the component to a query in the parent\nslot\n :: forall query action input output slots m label slot _1\n . Row.Cons label (Slot query output slot) _1 slots\n => IsSymbol label\n => Ord slot\n => Proxy label\n -> slot\n -> Component query input output m\n -> input\n -> (output -> action)\n -> ComponentHTML action slots m\nslot label p component input outputQuery =\n Core.widget (ComponentSlot (componentSlot label p component input (Just <<< outputQuery)))\n\n-- | Defines a slot for a child component, ignoring its output.\n-- |\n-- | This variant may be used when the component produces output, but it is not\n-- | needed in the current context, or instead of passing `absurd` to `slot`\n-- | when the output type is `Void`.\n-- |\n-- | Takes:\n-- | - the slot address label\n-- | - the slot address index\n-- | - the component for the slot\n-- | - the input value to pass to the component\nslot_\n :: forall query action input output slots m label slot _1\n . Row.Cons label (Slot query output slot) _1 slots\n => IsSymbol label\n => Ord slot\n => Proxy label\n -> slot\n -> Component query input output m\n -> input\n -> ComponentHTML action slots m\nslot_ label p component input =\n Core.widget (ComponentSlot (componentSlot label p component input (const Nothing)))\n\n-- | Optimizes rendering of a subtree given an equality predicate. If an argument\n-- | is deemed equivalent to the previous value, rendering and diffing will be\n-- | skipped. You should not use this function fully saturated, but instead\n-- | partially apply it for use within a Component's scope. For example, to skip\n-- | rendering for equal states, just wrap your `render` function.\n-- |\n-- | ```purescript\n-- | myComponent = component\n-- | { render: memoized eq render\n-- | , ...\n-- | }\n-- | ```\nmemoized\n :: forall a action slots m\n . (a -> a -> Boolean)\n -> (a -> ComponentHTML action slots m)\n -> a\n -> ComponentHTML action slots m\nmemoized eqFn f =\n -- Note: This implementation must not be eta-expanded, as it relies on\n -- partial application to work.\n Core.widget <<< ThunkSlot <$> thunked eqFn f\n\n-- | Skips rendering for referentially equal arguments. You should not use this\n-- | function fully saturated, but instead partially apply it for use within a\n-- | Component's scope.\nlazy\n :: forall a action slots m\n . (a -> ComponentHTML action slots m)\n -> a\n -> ComponentHTML action slots m\nlazy f a = Core.widget (ThunkSlot (Fn.runFn2 thunk1 f a))\n\n-- | Like `lazy`, but for a rendering function which takes 2 arguments.\nlazy2\n :: forall a b action slots m\n . (a -> b -> ComponentHTML action slots m)\n -> a\n -> b\n -> ComponentHTML action slots m\nlazy2 f a b = Core.widget (ThunkSlot (Fn.runFn3 thunk2 f a b))\n\n-- | Like `lazy`, but for a rendering function which takes 3 arguments.\nlazy3\n :: forall a b c action slots m\n . (a -> b -> c -> ComponentHTML action slots m)\n -> a\n -> b\n -> c\n -> ComponentHTML action slots m\nlazy3 f a b c = Core.widget (ThunkSlot (Fn.runFn4 thunk3 f a b c))\n", "module Component.BMark where\n\nimport Prelude hiding (div)\n\nimport Affjax (printError)\nimport Affjax.StatusCode (StatusCode(..))\nimport App (StarAction(..), destroy, editBookmark, markRead, toggleStar, lookupTitle)\nimport Component.Markdown as Markdown\nimport Data.Const (Const)\nimport Data.Either (Either(..))\nimport Data.Lens (Lens', lens, use, (%=), (.=))\nimport Data.Maybe (Maybe(..), fromMaybe, isJust)\nimport Data.Monoid (guard)\nimport Data.Nullable (toMaybe)\nimport Data.String (null, split, take, replaceAll) as S\nimport Data.String.Pattern (Pattern(..), Replacement(..))\nimport Effect.Aff (Aff)\nimport Effect.Class (liftEffect)\nimport Effect.Class.Console (log)\nimport Globals (app', setFocus, toLocaleDateString)\nimport Halogen as H\nimport Halogen.HTML (a, br_, button, div, div_, form, input, label, span, text, textarea)\nimport Halogen.HTML as HH\nimport Halogen.HTML.Events (onSubmit, onValueChange, onChecked, onClick)\nimport Halogen.HTML.Properties (ButtonType(..), InputType(..), autocomplete, checked, disabled, for, href, id, name, required, rows, target, title, type_, value)\nimport Model (Bookmark)\nimport Type.Proxy (Proxy(..))\nimport Util (attr, class_, encodeTag, fromNullableStr, ifElseH, whenA, whenH)\nimport Web.Event.Event (Event, preventDefault)\nimport DOM.HTML.Indexed.AutocompleteType (AutocompleteType(..))\n\n-- | UI Events\ndata BAction\n = BStar Boolean\n | BDeleteAsk Boolean\n | BLookupTitle\n | BDestroy\n | BEdit Boolean\n | BEditField EditField\n | BEditSubmit Event\n | BMarkRead\n\n-- | FormField Edits\ndata EditField\n = Eurl String\n | Etitle String\n | Edescription String\n | Etags String\n | Eprivate Boolean\n | Etoread Boolean\n\n-- | Messages to parent\ndata BMessage\n = BNotifyRemove\n\ntype BSlot = H.Slot (Const Void) BMessage\n\ntype BState =\n { bm :: Bookmark\n , edit_bm :: Bookmark\n , deleteAsk:: Boolean\n , edit :: Boolean\n , loading :: Boolean\n , apiError :: Maybe String\n }\n\n_bm :: Lens' BState Bookmark\n_bm = lens _.bm (_ { bm = _ })\n\n_edit_bm :: Lens' BState Bookmark\n_edit_bm = lens _.edit_bm (_ { edit_bm = _ })\n\n_edit :: Lens' BState Boolean\n_edit = lens _.edit (_ { edit = _ })\n\n_apiError :: Lens' BState (Maybe String)\n_apiError = lens _.apiError (_ { apiError = _ })\n\n_markdown = Proxy :: Proxy \"markdown\"\n\ntype ChildSlots =\n ( markdown :: Markdown.Slot Unit\n )\n\nbmark :: forall q i. Bookmark -> H.Component q i BMessage Aff\nbmark b' =\n H.mkComponent\n { initialState: const (mkState b')\n , render\n , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }\n }\n where\n app = app' unit\n\n mkState b =\n { bm: b\n , edit_bm: b\n , deleteAsk: false\n , edit: false\n , loading: false\n , apiError: Nothing\n }\n\n render :: BState -> H.ComponentHTML BAction ChildSlots Aff\n render s@{ bm, edit_bm, apiError } =\n div [ id (show bm.bid) , class_ (\"bookmark w-100 mw7 pa1 mb3\" <> guard bm.private \" private\")] $\n [ whenH app.dat.isowner\n star\n , ifElseH s.edit\n display_edit\n display\n ]\n\n where\n\n star _ =\n div [ class_ (\"star fl pointer\" <> guard bm.selected \" selected\") ]\n [ button [ class_ \"moon-gray\", onClick \\_ -> BStar (not bm.selected) ] [ text \"\u272D\" ] ]\n\n display _ =\n div [ class_ \"display\" ] $\n [ a [ href bm.url, target \"_blank\", class_ (\"link f5 lh-title\" <> guard bm.toread \" unread\")]\n [ text $ if S.null bm.title then \"[no title]\" else bm.title ]\n , br_\n , a [ href bm.url , class_ \"link f7 gray hover-blue\" ] [ text bm.url ]\n , a [ href (fromMaybe (\"http://archive.is/\" <> bm.url) (toMaybe bm.archiveUrl))\n , class_ (\"link f7 gray hover-blue ml2\" <> (guard (isJust (toMaybe bm.archiveUrl)) \" green\"))\n , target \"_blank\", title \"archive link\"]\n [ if isJust (toMaybe bm.archiveUrl) then text \"\u2611\" else text \"\u2610\" ]\n , br_\n , div [ class_ \"description mt1 mid-gray\" ] [ HH.slot _markdown unit Markdown.component bm.description absurd ]\n , div [ class_ \"tags\" ] $\n whenA (not (S.null bm.tags)) $ \\_ ->\n map (\\tag -> a [ class_ (\"link tag mr1\" <> guard (S.take 1 tag == \".\") \" private\")\n , href (linkToFilterTag tag) ]\n [ text tag ])\n (S.split (Pattern \" \") bm.tags)\n \n , a [ class_ \"link f7 dib gray w4\", href (linkToFilterSingle bm.slug), title shdatetime ]\n [ text shdate ]\n\n -- links\n , whenH app.dat.isowner $ \\_ ->\n div [ class_ \"edit_links di\" ]\n [ button [ type_ ButtonButton, onClick \\_ -> BEdit true, class_ \"edit light-silver hover-blue\" ] [ text \"edit\u00A0\u00A0\" ]\n , div [ class_ \"delete_link di\" ]\n [ button [ type_ ButtonButton, onClick \\_ -> BDeleteAsk true, class_ (\"delete light-silver hover-blue\" <> guard s.deleteAsk \" dn\") ] [ text \"delete\" ]\n , span ([ class_ (\"confirm red\" <> guard (not s.deleteAsk) \" dn\") ] )\n [ button [ type_ ButtonButton, onClick \\_ -> BDeleteAsk false] [ text \"cancel\u00A0/\u00A0\" ]\n , button [ type_ ButtonButton, onClick \\_ -> BDestroy, class_ \"red\" ] [ text \"destroy\" ]\n ] \n ]\n ]\n , whenH app.dat.isowner $ \\_ ->\n div [ class_ \"read di\" ] $\n guard bm.toread\n [ text \"\u00A0\u00A0\"\n , button [ onClick \\_ -> BMarkRead, class_ \"mark_read\" ] [ text \"mark as read\"]\n ]\n ]\n \n\n display_edit _ =\n div [ class_ \"edit_bookmark_form pa2 pt0 bg-white\" ] $\n [ whenH (isJust apiError)\n (alert_notification (fromMaybe \"\" apiError))\n , form [ onSubmit BEditSubmit ]\n [ div_ [ text \"url\" ]\n , input [ type_ InputUrl , class_ \"url w-100 mb2 pt1 edit_form_input\" , required true , name \"url\"\n , value (edit_bm.url) , onValueChange (editField Eurl) ]\n , div_ [ text \"title\" ]\n , div [class_ \"flex\"]\n [input [ type_ InputText , class_ \"title w-100 mb2 pt1 edit_form_input\" , name \"title\"\n , value (edit_bm.title) , onValueChange (editField Etitle) ]\n , button [ disabled s.loading, type_ ButtonButton, onClick \\_ -> BLookupTitle, class_ (\"ml1 pa1 mb2 dark-gray ba b--moon-gray bg-near-white pointer rdim f7 \" <> guard s.loading \"bg-light-silver\") ] [ text \"fetch\" ]\n ]\n , div_ [ text \"description\" ]\n , textarea [ class_ \"description w-100 mb1 pt1 edit_form_input\" , name \"description\", rows 5\n , value (edit_bm.description) , onValueChange (editField Edescription) ]\n , div [ id \"tags_input_box\"]\n [ div_ [ text \"tags\" ]\n , input [ id (tagid edit_bm), type_ InputText , class_ \"tags w-100 mb1 pt1 edit_form_input\" , name \"tags\"\n , autocomplete AutocompleteOff, attr \"autocapitalize\" \"off\"\n , value (edit_bm.tags) , onValueChange (editField Etags) ]\n ]\n , div [ class_ \"edit_form_checkboxes mv3\"]\n [ input [ type_ InputCheckbox , class_ \"private pointer\" , id \"edit_private\", name \"private\"\n , checked (edit_bm.private) , onChecked (editField Eprivate) ]\n , text \" \"\n , label [ for \"edit_private\" , class_ \"mr2\" ] [ text \"private\" ]\n , text \" \"\n , input [ type_ InputCheckbox , class_ \"toread pointer\" , id \"edit_toread\", name \"toread\"\n , checked (edit_bm.toread) , onChecked (editField Etoread) ]\n , text \" \"\n , label [ for \"edit_toread\" ] [ text \"to-read\" ]\n ]\n , input [ type_ InputSubmit , class_ \"mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\" , value \"save\" ]\n , text \" \"\n , input [ type_ InputReset , class_ \"pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\" , value \"cancel\"\n , onClick \\_ -> BEdit false ]\n ]\n ]\n \n alert_notification alert_text _ = \n div [ class_ \"alert alert-err\" ] [ text alert_text ]\n\n editField :: forall a. (a -> EditField) -> a -> BAction\n editField f = BEditField <<< f\n linkToFilterSingle slug = fromNullableStr app.userR <> \"/b:\" <> slug\n linkToFilterTag tag = fromNullableStr app.userR <> \"/t:\" <> encodeTag tag \n shdate = toLocaleDateString bm.time \n shdatetime = S.take 16 bm.time `append` \"Z\"\n\n tagid bm = show bm.bid <> \"_tags\"\n\n handleAction :: BAction -> H.HalogenM BState BAction ChildSlots BMessage Aff Unit\n\n -- | Star\n handleAction (BStar e) = do\n bm <- use _bm\n H.liftAff (toggleStar bm.bid (if e then Star else UnStar))\n _bm %= _ { selected = e }\n _edit_bm %= _ { selected = e }\n\n -- | Delete\n handleAction (BDeleteAsk e) = do\n H.modify_ (_ { deleteAsk = e })\n\n -- | Destroy\n handleAction (BDestroy) = do\n bm <- use _bm\n void $ H.liftAff (destroy bm.bid)\n H.raise BNotifyRemove\n\n -- | Mark Read\n handleAction (BMarkRead) = do\n bm <- use _bm\n void (H.liftAff (markRead bm.bid))\n _bm %= _ { toread = false }\n\n -- | Start/Stop Editing\n handleAction (BEdit e) = do\n bm <- use _bm\n _edit_bm .= bm\n _edit .= e\n _apiError .= Nothing\n H.liftEffect $\n when e\n (setFocus (tagid bm)) \n\n -- | Update Form Field \n handleAction (BEditField f) = do\n _edit_bm %= case f of\n Eurl e -> _ { url = e }\n Etitle e -> _ { title = e }\n Edescription e -> _ { description = e }\n Etags e -> _ { tags = e }\n Eprivate e -> _ { private = e }\n Etoread e -> _ { toread = e }\n\n -- | Lookup Title\n handleAction BLookupTitle = do\n H.modify_ (_ { loading = true })\n edit_bm <- H.gets _.edit_bm\n mtitle <- H.liftAff $ lookupTitle edit_bm\n case mtitle of\n Just title' -> _edit_bm %= (_ { title = title' })\n Nothing -> pure $ unit\n H.modify_ (_ { loading = false })\n\n -- | Submit\n handleAction (BEditSubmit e) = do\n H.liftEffect (preventDefault e)\n edit_bm <- use _edit_bm\n _apiError .= Nothing\n let edit_bm' = edit_bm { tags = S.replaceAll (Pattern \",\") (Replacement \" \") edit_bm.tags }\n H.liftAff (editBookmark edit_bm') >>= case _ of\n Left affErr -> do\n _apiError .= Just (printError affErr)\n liftEffect $ log (printError affErr)\n Right { status: StatusCode s } | s >= 200 && s < 300 -> do\n _bm .= edit_bm'\n _edit .= false\n Right res -> do\n _apiError .= Just (res.body)\n liftEffect $ log (res.body)\n", "module Component.BList where\n\nimport Prelude\n\nimport Component.BMark (BMessage(..), BSlot, bmark)\nimport Model (Bookmark, BookmarkId)\n\nimport Data.Array (filter)\nimport Effect.Aff (Aff)\nimport Halogen as H\nimport Halogen.HTML as HH\nimport Type.Proxy (Proxy(..))\n\ndata LAction =\n HandleBMessage BookmarkId BMessage\n\ntype ChildSlots =\n ( bookmark :: BSlot Int\n )\n\n_bookmark = Proxy :: Proxy \"bookmark\"\n\nblist :: forall q i o. Array Bookmark -> H.Component q i o Aff\nblist st =\n H.mkComponent\n { initialState: const st\n , render\n , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }\n }\n where\n\n render :: Array Bookmark -> H.ComponentHTML LAction ChildSlots Aff\n render bms =\n HH.div_ $ map (\\b -> HH.slot _bookmark b.bid (bmark b) unit (HandleBMessage b.bid)) bms\n\n handleAction :: LAction -> H.HalogenM (Array Bookmark) LAction ChildSlots o Aff Unit\n handleAction (HandleBMessage bid BNotifyRemove) = do\n H.modify_ (filter (\\b -> b.bid /= bid))\n", "module Component.NList where\n\nimport Prelude hiding (div)\n\nimport Data.Array (drop, foldMap)\nimport Data.Maybe (Maybe(..), maybe)\nimport Data.String (null, split, take) as S\nimport Data.String.Pattern (Pattern(..))\nimport Data.Tuple (fst, snd)\nimport Effect.Aff (Aff)\nimport Globals (app', mmoment8601)\nimport Halogen as H\nimport Halogen.HTML (a, br_, div, text)\nimport Halogen.HTML as HH\nimport Halogen.HTML.Properties (href, id, title)\nimport Model (Note, NoteSlug)\nimport Util (class_, fromNullableStr)\n\ndata NLAction\n = NLNop\n\ntype NLState =\n { notes :: Array Note\n , cur :: Maybe NoteSlug\n , deleteAsk:: Boolean\n , edit :: Boolean\n }\n\n\nnlist :: forall q i o. Array Note -> H.Component q i o Aff\nnlist st' =\n H.mkComponent\n { initialState: const (mkState st')\n , render\n , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }\n }\n where\n app = app' unit\n\n mkState notes' =\n { notes: notes'\n , cur: Nothing\n , deleteAsk: false\n , edit: false\n }\n\n render :: NLState -> H.ComponentHTML NLAction () Aff\n render { notes } =\n HH.div_ (map renderNote notes)\n where\n renderNote note =\n div [ id (show note.id)\n , class_ (\"note w-100 mw7 pa1 mb2\"\n <> if note.shared then \"\" else \" private\")] $\n [ div [ class_ \"display\" ] $\n [ a [ href (linkToFilterSingle note.slug), class_ (\"link f5 lh-title\")]\n [ text $ if S.null note.title then \"[no title]\" else note.title ]\n , br_\n , div [ class_ \"description mt1 mid-gray\" ] (toTextarea (S.take 200 note.text))\n , a [ class_ \"link f7 dib gray w4\"\n , title (maybe note.created snd (mmoment note))\n , href (linkToFilterSingle note.slug)]\n [text (maybe \"\u00A0\" fst (mmoment note))]\n ]\n ]\n\n mmoment note = mmoment8601 note.created\n linkToFilterSingle slug = fromNullableStr app.userR <> \"/notes/\" <> slug\n toTextarea input =\n S.split (Pattern \"\\n\") input\n # foldMap (\\x -> [br_, text x])\n # drop 1\n\n handleAction :: NLAction -> H.HalogenM NLState NLAction () o Aff Unit\n handleAction NLNop = pure unit\n", "module Component.NNote where\n\nimport Prelude hiding (div)\n\nimport Affjax (printError)\nimport Affjax.StatusCode (StatusCode(..))\nimport App (destroyNote, editNote)\nimport Component.Markdown as Markdown\nimport Data.Array (drop, foldMap)\nimport Data.Either (Either(..))\nimport Data.Lens (Lens', lens, use, (%=), (.=))\nimport Data.Maybe (Maybe(..), fromMaybe, isJust, maybe)\nimport Data.Monoid (guard)\nimport Data.String (null, split) as S\nimport Data.String (null, stripPrefix)\nimport Data.String.Pattern (Pattern(..))\nimport Data.Tuple (fst, snd)\nimport Effect.Aff (Aff)\nimport Effect.Class (liftEffect)\nimport Effect.Console (log)\nimport Globals (app', mmoment8601, setFocus, closeWindow)\nimport Halogen as H\nimport Halogen.HTML (br_, button, div, form, input, label, p, span, text, textarea)\nimport Halogen.HTML as HH\nimport Halogen.HTML.Events (onChecked, onClick, onSubmit, onValueChange)\nimport Halogen.HTML.Properties (ButtonType(..), InputType(..), autofocus, checked, for, id, name, rows, title, type_, value)\nimport Model (Note)\nimport Type.Proxy (Proxy(..))\nimport Util (_curQuerystring, _doc, _loc, _lookupQueryStringValue, class_, fromNullableStr, ifElseH, whenH)\nimport Web.Event.Event (Event, preventDefault)\nimport Web.HTML (window)\nimport Web.HTML.HTMLDocument (referrer)\nimport Web.HTML.Location (origin, setHref)\n\ndata NAction\n = NNop\n | NEditField EditField\n | NEditSubmit Event\n | NEdit Boolean\n | NDeleteAsk Boolean\n | NDestroy\n\ntype NState =\n { note :: Note\n , edit_note :: Note\n , deleteAsk :: Boolean\n , edit :: Boolean\n , destroyed :: Boolean\n , apiError :: Maybe String\n }\n\n_note :: Lens' NState Note\n_note = lens _.note (_ { note = _ })\n\n_edit_note :: Lens' NState Note\n_edit_note = lens _.edit_note (_ { edit_note = _ })\n\n_edit :: Lens' NState Boolean\n_edit = lens _.edit (_ { edit = _ })\n\n_apiError :: Lens' NState (Maybe String)\n_apiError = lens _.apiError (_ { apiError = _ })\n\n-- | FormField Edits\ndata EditField\n = Etitle String\n | Etext String\n | EisMarkdown Boolean\n | Eshared Boolean\n\n_markdown = Proxy :: Proxy \"markdown\"\n\ntype ChildSlots =\n ( markdown :: Markdown.Slot Unit\n )\n\nnnote :: forall q i o. Note -> H.Component q i o Aff\nnnote st' =\n H.mkComponent\n { initialState: const (mkState st')\n , render\n , eval: H.mkEval $ H.defaultEval { handleAction = handleAction }\n }\n where\n app = app' unit\n\n mkState note' =\n { note: note'\n , edit_note: note'\n , deleteAsk: false\n , edit: note'.id <= 0\n , destroyed: false\n , apiError: Nothing\n }\n\n render :: NState -> H.ComponentHTML NAction ChildSlots Aff\n render st@{ note, edit_note, apiError } =\n ifElseH st.destroyed\n display_destroyed\n (const (ifElseH st.edit\n renderNote_edit\n renderNote))\n where\n\n renderNote _ =\n div [ id (show note.id) , class_ (\"note w-100 mw7 pa1 mb2\")] $\n [ div [ class_ \"display\" ] $\n [ div [ class_ (\"link f5 lh-title\")]\n [ text $ if S.null note.title then \"[no title]\" else note.title ]\n , br_\n , if note.isMarkdown\n then div [ class_ \"description mt1\" ] [ HH.slot _markdown unit Markdown.component note.text absurd ]\n else div [ class_ \"description mt1 mid-gray\" ] (toTextarea note.text)\n , div [ class_ \"link f7 dib gray w4\"]\n [ span [title (maybe note.created snd (mmoment note))]\n [text (maybe \"\u00A0\" fst (mmoment note))]\n , text \" - \"\n , span [ class_ (\"gray\")]\n [ text $ if note.shared then \"public\" else \"private\" ]\n ]\n ]\n , whenH app.dat.isowner $ \\_ ->\n div [ class_ \"edit_links db mt3\" ]\n [ button [ type_ ButtonButton, onClick \\_ -> NEdit true, class_ \"edit light-silver hover-blue\" ] [ text \"edit\u00A0\u00A0\" ]\n , div [ class_ \"delete_link di\" ]\n [ button [ type_ ButtonButton, onClick \\_ -> NDeleteAsk true, class_ (\"delete light-silver hover-blue\" <> guard st.deleteAsk \" dn\") ] [ text \"delete\" ]\n , span ([ class_ (\"confirm red\" <> guard (not st.deleteAsk) \" dn\") ] )\n [ button [ type_ ButtonButton, onClick \\_ -> NDeleteAsk false] [ text \"cancel\u00A0/\u00A0\" ]\n , button [ type_ ButtonButton, onClick \\_ -> NDestroy, class_ \"red\" ] [ text \"destroy\" ]\n ]\n ]\n ]\n \n ]\n\n renderNote_edit _ =\n form [ onSubmit NEditSubmit ]\n [ whenH (isJust apiError)\n (alert_notification (fromMaybe \"\" apiError))\n , p [ class_ \"mt2 mb1\"] [ text \"title:\" ]\n , input [ type_ InputText , class_ \"title w-100 mb1 pt1 edit_form_input\" , name \"title\"\n , value (edit_note.title) , onValueChange (editField Etitle), autofocus (null edit_note.title)\n ]\n , br_\n , p [ class_ \"mt2 mb1\"] [ text \"description:\" ]\n , textarea [ id (notetextid edit_note), class_ \"description w-100 mb1 pt1 edit_form_input\" , name \"text\", rows 25\n , value (edit_note.text) , onValueChange (editField Etext)\n ]\n , div [ class_ \"edit_form_checkboxes mb3\"]\n [ input [ type_ InputCheckbox , class_ \"is-markdown pointer\" , id \"edit_ismarkdown\", name \"ismarkdown\"\n , checked (edit_note.isMarkdown) , onChecked (editField EisMarkdown) ]\n , text \" \"\n , label [ for \"edit_ismarkdown\" , class_ \"mr2\" ] [ text \"use markdown?\" ]\n , br_\n ]\n , div [ class_ \"edit_form_checkboxes mb3\"]\n [ input [ type_ InputCheckbox , class_ \"is-markdown pointer\" , id \"edit_shared\", name \"shared\"\n , checked (edit_note.shared) , onChecked (editField Eshared) ]\n , text \" \"\n , label [ for \"edit_shared\" , class_ \"mr2\" ] [ text \"public?\" ]\n , br_\n ]\n , input [ type_ InputSubmit\n , class_ \"mr1 pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"\n , value \"save\" ]\n , text \" \"\n , input [ type_ InputReset\n , class_ \"pv1 ph2 dark-gray ba b--moon-gray bg-near-white pointer rdim\"\n , value \"cancel\"\n , onClick \\_ -> NEdit false\n ]\n ]\n\n display_destroyed _ = p [ class_ \"red\"] [text \"you killed this note\"]\n\n alert_notification alert_text _ = \n div [ class_ \"alert alert-err\" ] [ text alert_text ]\n\n mmoment n = mmoment8601 n.created\n editField :: forall a. (a -> EditField) -> a -> NAction\n editField f = NEditField <<< f\n toTextarea input =\n S.split (Pattern \"\\n\") input\n # foldMap (\\x -> [br_, text x])\n # drop 1\n\n notetextid note = show note.id <> \"_text\"\n\n handleAction :: NAction -> H.HalogenM NState NAction ChildSlots o Aff Unit\n handleAction (NNop) = pure unit\n\n -- | EditField\n handleAction (NEditField f) = do\n _edit_note %= case f of\n Etitle e -> _ { title = e }\n Etext e -> _ { text = e }\n EisMarkdown e -> _ { isMarkdown = e }\n Eshared e -> _ { shared = e }\n\n -- | Delete\n handleAction (NDeleteAsk e) = do\n H.modify_ (_ { deleteAsk = e })\n\n -- | Destroy\n handleAction (NDestroy) = do\n note <- use _note\n void $ H.liftAff (destroyNote note.id)\n H.modify_ (_ { destroyed = true })\n\n -- | Start/Stop Editing\n handleAction (NEdit e) = do\n note <- use _note\n _edit_note .= note\n _edit .= e\n qs <- liftEffect _curQuerystring\n case {e:e, q:_lookupQueryStringValue qs \"next\"} of\n {e:false, q:Just \"closeWindow\"} -> liftEffect $ closeWindow =<< window\n _ -> H.liftEffect $ whenM (pure e) (setFocus (notetextid note))\n \n\n -- | Submit\n handleAction (NEditSubmit e) = do\n H.liftEffect (preventDefault e)\n edit_note <- use _edit_note\n _apiError .= Nothing\n H.liftAff (editNote edit_note) >>= case _ of\n Left affErr -> do\n _apiError .= Just (printError affErr)\n liftEffect $ log (printError affErr)\n Right { status: StatusCode s } | s >= 200 && s < 300 -> do\n qs <- liftEffect _curQuerystring\n doc <- liftEffect $ _doc\n ref <- liftEffect $ referrer doc\n loc <- liftEffect $ _loc\n org <- liftEffect $ origin loc\n case _lookupQueryStringValue qs \"next\" of\n Just \"closeWindow\" -> liftEffect $ closeWindow =<< window\n Just \"back\" -> liftEffect $\n if isJust (stripPrefix (Pattern org) ref)\n then setHref ref loc\n else setHref org loc\n _ -> if (edit_note.id == 0)\n then liftEffect $ setHref (fromNullableStr app.noteR) =<< _loc\n else do\n _note .= edit_note\n _edit .= false\n Right res -> do\n _apiError .= Just (res.body)\n liftEffect $ log (res.body)\n", "module Component.TagCloud where\n\nimport Prelude hiding (div)\n\nimport App (getTagCloud, updateTagCloudMode)\nimport Data.Array (concat, cons, delete, notElem, null, sortBy)\nimport Data.Foldable (maximum, minimum)\nimport Data.Int (toNumber)\nimport Data.Lens (Lens', lens)\nimport Data.Maybe (Maybe(..), fromMaybe)\nimport Data.Monoid (guard)\nimport Data.String (joinWith, toLower, null) as S\nimport Data.String (toLower)\nimport Data.Tuple (fst, uncurry)\nimport Effect.Aff (Aff)\nimport Foreign.Object (Object)\nimport Foreign.Object (toUnfoldable, empty, values) as F\nimport Globals (app')\nimport Halogen (AttrName(..))\nimport Halogen as H\nimport Halogen.HTML (HTML, a, attr, button, div, text)\nimport Halogen.HTML.Events (onClick)\nimport Halogen.HTML.Properties (ButtonType(..), href, title, type_)\nimport Data.Number (log)\nimport Model (TagCloud, TagCloudModeF(..), isExpanded, isRelated, setExpanded, tagCloudModeFromF)\nimport Util (class_, encodeTag, fromNullableStr, ifElseA, whenH)\n\ndata TAction\n = TInitialize\n | TExpanded Boolean\n | TChangeMode TagCloudModeF\n\ntype TState =\n { mode :: TagCloudModeF\n , tagcloud :: TagCloud\n }\n\n_mode :: Lens' TState TagCloudModeF\n_mode = lens _.mode (_ { mode = _ })\n\ntagcloudcomponent :: forall q i o. TagCloudModeF -> H.Component q i o Aff\ntagcloudcomponent m' =\n H.mkComponent\n { initialState: const (mkState m')\n , render\n , eval: H.mkEval $ H.defaultEval { handleAction = handleAction\n , initialize = Just TInitialize\n }\n }\n where\n app = app' unit\n mkState m =\n { mode: m\n , tagcloud: F.empty\n }\n\n render :: TState -> H.ComponentHTML TAction () Aff\n render { mode:TagCloudModeNone } =\n div [class_ \"tag_cloud\" ] []\n render { mode, tagcloud } =\n div [class_ \"tag_cloud mv3\" ] \n [\n div [class_ \"tag_cloud_header mb2\"] $\n ifElseA (isRelated mode)\n (\\_ -> do --RELATED\n [ button [ type_ ButtonButton, class_ (\"pa1 f7 link hover-blue mr1 b\")\n , onClick \\_ -> TExpanded (not (isExpanded mode))\n ] [text \"Related Tags\"]\n ]\n ) \n (\\_ -> do -- NOT RELATED\n [ button [ type_ ButtonButton, class_ (\"pa1 f7 link hover-blue mr1\" <> guard (mode == modetop) \" b\")\n , title \"show a cloud of your most-used tags\"\n , onClick \\_ -> TChangeMode modetop\n ] [text \"Top Tags\"]\n , button [ type_ ButtonButton, class_ (\"pa1 f7 link hover-blue ml2 \" <> guard (mode == modelb1) \" b\") \n , title \"show all tags\"\n , onClick \\_ -> TChangeMode modelb1\n ] [text \"all\"] \n , text \"\u2027\"\n , button [ type_ ButtonButton, class_ (\"pa1 f7 link hover-blue\" <> guard (mode == modelb2) \" b\") \n , title \"show tags with at least 2 bookmarks\"\n , onClick \\_ -> TChangeMode modelb2\n ] [text \"2\"]\n , text \"\u2027\"\n , button [ type_ ButtonButton, class_ (\"pa1 f7 link hover-blue\" <> guard (mode == modelb5) \" b\") \n , title \"show tags with at least 5 bookmarks\"\n , onClick \\_ -> TChangeMode modelb5\n ] [text \"5\"]\n , text \"\u2027\"\n , button [ type_ ButtonButton, class_ (\"pa1 f7 link hover-blue\" <> guard (mode == modelb10) \" b\") \n , title \"show tags with at least 10 bookmarks\"\n , onClick \\_ -> TChangeMode modelb10\n ] [text \"10\"]\n , text \"\u2027\"\n , button [ type_ ButtonButton, class_ (\"pa1 f7 link hover-blue\" <> guard (mode == modelb20) \" b\") \n , title \"show tags with at least 20 bookmarks\"\n , onClick \\_ -> TChangeMode modelb20\n ] [text \"20\"]\n ])\n <> [button [ type_ ButtonButton, class_ \"pa1 ml2 f7 link silver hover-blue \"\n , onClick \\_ -> TExpanded (not (isExpanded mode))]\n [ text (if isExpanded mode then \"hide\" else \"show\") ]]\n , whenH (isExpanded mode) \\_ -> do\n let n = fromMaybe 1 (minimum (F.values tagcloud))\n m = fromMaybe 1 (maximum (F.values tagcloud))\n div [class_ \"tag_cloud_body\"] $ case mode of\n TagCloudModeNone -> []\n (TagCloudModeRelated _ curtags) -> \n toArray curtags n m tagcloud\n _ -> \n toArray [] n m tagcloud\n \n ]\n where\n modetop = TagCloudModeTop (isExpanded mode) 200\n modelb1 = TagCloudModeLowerBound (isExpanded mode) 1\n modelb2 = TagCloudModeLowerBound (isExpanded mode) 2\n modelb5 = TagCloudModeLowerBound (isExpanded mode) 5\n modelb10 = TagCloudModeLowerBound (isExpanded mode) 10\n modelb20 = TagCloudModeLowerBound (isExpanded mode) 20\n\n\n toArray :: Array String -> Int -> Int -> Object Int -> Array (HTML _ _)\n toArray curtags n m =\n concat\n <<< map (uncurry (toSizedTag (map toLower curtags) n m))\n <<< sortBy (comparing (S.toLower <<< fst))\n <<< F.toUnfoldable\n\n linkToFilterTag rest = fromNullableStr app.userR <> (if S.null rest then \"\" else \"/t:\" <> rest) \n\n toSizedTag :: Array String -> Int -> Int -> String -> Int -> _\n toSizedTag curtags n m k v =\n [ a [ href (linkToFilterTag (encodeTag k)), class_ \"link tag mr1\" , style] \n [ text k ]\n , whenH (not (null curtags)) \\_ -> if (notElem k_lower curtags)\n then a [href (linkToFilterTag (S.joinWith \"+\" (map encodeTag (cons k_lower curtags)))), class_ \"link mr2 tag-include\"] [text \"\u2295\"]\n else a [href (linkToFilterTag (S.joinWith \"+\" (map encodeTag (delete k_lower curtags)))), class_ \"link mr2 tag-exclude\"] [text \"\u2296\"]\n ]\n where\n k_lower = toLower k\n fontsize = rescale identity (toNumber v) (toNumber n) (toNumber m) 100.0 150.0\n opacity = rescale (log <<< (1.0 + _)) (toNumber v) (toNumber n) (toNumber m) 0.6 1.0\n style = attr (AttrName \"style\") (\"font-size:\" <> show fontsize <> \"%\" <> \";opacity:\" <> show opacity)\n\n rescale :: (Number -> Number) -> Number -> Number -> Number -> Number -> Number -> Number\n rescale f v n m l h = (if m - n < 0.01 then 1.0 else (f (v - n) / f (m - n))) * (h - l) + l\n\n fetchTagCloud :: TagCloudModeF -> H.HalogenM TState TAction () o Aff Unit\n fetchTagCloud mode' = do\n case mode' of\n TagCloudModeNone -> pure unit\n _ -> do\n tagcloud <- H.liftAff $ getTagCloud (tagCloudModeFromF mode')\n H.modify_ (\\s -> s { \n mode = mode',\n tagcloud = fromMaybe F.empty tagcloud\n })\n \n handleAction :: TAction -> H.HalogenM TState TAction () o Aff Unit\n handleAction TInitialize = do\n mode <- H.gets _.mode\n fetchTagCloud mode\n handleAction (TExpanded expanded) = do\n H.modify_ (\\s -> s { mode = setExpanded s.mode expanded })\n mode <- H.gets _.mode\n void $ H.liftAff $ updateTagCloudMode (tagCloudModeFromF mode)\n handleAction (TChangeMode mode') = do\n mode <- H.gets _.mode\n if mode == mode'\n then handleAction (TExpanded (not (isExpanded mode)))\n else fetchTagCloud (setExpanded mode' true)\n", "module Halogen.Aff.Util\n ( awaitLoad\n , awaitBody\n , selectElement\n , runHalogenAff\n ) where\n\nimport Prelude\n\nimport Control.Monad.Error.Class (throwError)\nimport Data.Either (Either(..), either)\nimport Data.Maybe (Maybe, maybe)\nimport Effect (Effect)\nimport Effect.Aff (Aff, effectCanceler, makeAff, nonCanceler, runAff_)\nimport Effect.Class (liftEffect)\nimport Effect.Exception (throwException, error)\nimport Web.DOM.ParentNode (QuerySelector(..), querySelector)\nimport Web.Event.EventTarget (addEventListener, eventListener, removeEventListener)\nimport Web.HTML (window)\nimport Web.HTML.Event.EventTypes as ET\nimport Web.HTML.HTMLDocument (readyState)\nimport Web.HTML.HTMLDocument as HTMLDocument\nimport Web.HTML.HTMLDocument.ReadyState (ReadyState(..))\nimport Web.HTML.HTMLElement (HTMLElement)\nimport Web.HTML.HTMLElement as HTMLElement\nimport Web.HTML.Window as Window\n\n-- | Waits for the document to load.\nawaitLoad :: Aff Unit\nawaitLoad = makeAff \\callback -> do\n rs <- readyState =<< Window.document =<< window\n case rs of\n Loading -> do\n et <- Window.toEventTarget <$> window\n listener <- eventListener (\\_ -> callback (Right unit))\n addEventListener ET.domcontentloaded listener false et\n pure $ effectCanceler (removeEventListener ET.domcontentloaded listener false et)\n _ -> do\n callback (Right unit)\n pure nonCanceler\n\n-- | Waits for the document to load and then finds the `body` element.\nawaitBody :: Aff HTMLElement\nawaitBody = do\n awaitLoad\n body <- selectElement (QuerySelector \"body\")\n maybe (throwError (error \"Could not find body\")) pure body\n\n-- | Tries to find an element in the document.\nselectElement :: QuerySelector -> Aff (Maybe HTMLElement)\nselectElement query = do\n mel <- liftEffect do\n (querySelector query <<< HTMLDocument.toParentNode <=< Window.document) =<< window\n pure $ HTMLElement.fromElement =<< mel\n\n-- | Runs an `Aff` value of the type commonly used by Halogen components. Any\n-- | unhandled errors will be re-thrown as exceptions.\nrunHalogenAff :: forall x. Aff x -> Effect Unit\nrunHalogenAff = runAff_ (either throwException (const (pure unit)))\n", "module Control.Monad.Fork.Class where\n\nimport Prelude hiding (join)\n\nimport Effect.Aff as Aff\nimport Control.Monad.Error.Class (class MonadThrow, class MonadError)\nimport Control.Monad.Reader.Trans (ReaderT(..), runReaderT)\nimport Control.Monad.Trans.Class (lift)\n\n-- | Represents Monads which can be forked asynchronously.\n-- |\n-- | Laws:\n-- |\n-- | ```purescript\n-- | -- Unjoined suspension is a no-op\n-- | suspend a1 *> suspend a2 = suspend a2\n-- |\n-- | -- Suspend/join is identity\n-- | suspend >=> join = id\n-- |\n-- | -- Fork/join is identity\n-- | fork >=> join = id\n-- |\n-- | -- Join is idempotent\n-- | join t *> join t = join t\n-- | ```\nclass (Monad m, Functor f) <= MonadFork f m | m -> f where\n suspend :: forall a. m a -> m (f a)\n fork :: forall a. m a -> m (f a)\n join :: forall a. f a -> m a\n\ninstance monadForkAff :: MonadFork Aff.Fiber Aff.Aff where\n suspend = Aff.suspendAff\n fork = Aff.forkAff\n join = Aff.joinFiber\n\ninstance monadForkReaderT :: MonadFork f m => MonadFork f (ReaderT r m) where\n suspend (ReaderT ma) = ReaderT (suspend <<< ma)\n fork (ReaderT ma) = ReaderT (fork <<< ma)\n join = lift <<< join\n\n-- | Represents Monads which can be killed after being forked.\n-- |\n-- | Laws:\n-- |\n-- | ```purescript\n-- | -- Killed suspension is an exception\n-- | suspend a >>= \\f -> kill e f *> join f = throwError e\n-- |\n-- | -- Suspend/kill is unit\n-- | suspend a >>= kill e = pure unit\n-- | ```\nclass (MonadFork f m, MonadThrow e m) <= MonadKill e f m | m -> e f where\n kill :: forall a. e -> f a -> m Unit\n\ninstance monadKillAff :: MonadKill Aff.Error Aff.Fiber Aff.Aff where\n kill = Aff.killFiber\n\ninstance monadKillReaderT :: MonadKill e f m => MonadKill e f (ReaderT r m) where\n kill e = lift <<< kill e\n\ndata BracketCondition e a\n = Completed a\n | Failed e\n | Killed e\n\n-- | Represents Monads which support cleanup in the presence of async\n-- | exceptions.\n-- |\n-- | Laws:\n-- | ```purescript\n-- | bracket a k \\_ -> pure r\n-- | = uninterruptible (a >>= k (Completed r))\n-- |\n-- | -- Release failed\n-- | bracket a k \\_ -> throwError e\n-- | = uninterruptible (a >>= k (Failed e) *> throwError e)\n-- |\n-- | -- Release killed\n-- | fork (bracket a k \\_ -> never) >>= \\f -> kill e f *> void (try (join f))\n-- | = uninterruptible (a >>= k (Killed e))\n-- | ```\nclass (MonadKill e f m, MonadError e m) <= MonadBracket e f m | m -> e f where\n bracket :: forall r a. m r -> (BracketCondition e a -> r -> m Unit) -> (r -> m a) -> m a\n uninterruptible :: forall a. m a -> m a\n never :: forall a. m a\n\ninstance monadBracketAff :: MonadBracket Aff.Error Aff.Fiber Aff.Aff where\n bracket acquire release run =\n Aff.generalBracket acquire\n { completed: release <<< Completed\n , failed: release <<< Failed\n , killed: release <<< Killed\n }\n run\n uninterruptible = Aff.invincible\n never = Aff.never\n\ninstance monadBracketReaderT :: MonadBracket e f m => MonadBracket e f (ReaderT r m) where\n bracket (ReaderT acquire) release run = ReaderT \\r ->\n bracket (acquire r)\n (\\c a -> runReaderT (release c a) r)\n (\\a -> runReaderT (run a) r)\n uninterruptible k = ReaderT \\r ->\n uninterruptible (runReaderT k r)\n never = lift never\n", "module Halogen.Aff.Driver.State\n ( LifecycleHandlers\n , DriverState(..)\n , mapDriverState\n , DriverStateRef(..)\n , DriverStateRec\n , DriverStateX\n , unDriverStateX\n , mkDriverStateXRef\n , RenderStateX\n , renderStateX\n , renderStateX_\n , unRenderStateX\n , initDriverState\n ) where\n\nimport Prelude\n\nimport Data.List (List(..))\nimport Data.Map as M\nimport Data.Maybe (Maybe(..))\nimport Data.Traversable (traverse_)\nimport Effect (Effect)\nimport Effect.Aff (Aff, Fiber)\nimport Effect.Ref (Ref)\nimport Effect.Ref as Ref\nimport Halogen.Component (ComponentSpec)\nimport Halogen.Data.Slot (SlotStorage)\nimport Halogen.Data.Slot as SlotStorage\nimport Halogen.Query.HalogenM (ForkId, SubscriptionId)\nimport Halogen.Subscription as HS\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM (Element)\n\ntype LifecycleHandlers =\n { initializers :: List (Aff Unit)\n , finalizers :: List (Aff Unit)\n }\n\nnewtype DriverState r s f act ps i o = DriverState (DriverStateRec r s f act ps i o)\n\ntype DriverStateRec r s f act ps i o =\n { component :: ComponentSpec s f act ps i o Aff\n , state :: s\n , refs :: M.Map String Element\n , children :: SlotStorage ps (DriverStateRef r)\n , childrenIn :: Ref (SlotStorage ps (DriverStateRef r))\n , childrenOut :: Ref (SlotStorage ps (DriverStateRef r))\n , selfRef :: Ref (DriverState r s f act ps i o)\n , handlerRef :: Ref (o -> Aff Unit)\n , pendingQueries :: Ref (Maybe (List (Aff Unit)))\n , pendingOuts :: Ref (Maybe (List (Aff Unit)))\n , pendingHandlers :: Ref (Maybe (List (Aff Unit)))\n , rendering :: Maybe (r s act ps o)\n , fresh :: Ref Int\n , subscriptions :: Ref (Maybe (M.Map SubscriptionId HS.Subscription))\n , forks :: Ref (M.Map ForkId (Fiber Unit))\n , lifecycleHandlers :: Ref LifecycleHandlers\n }\n\nmapDriverState\n :: forall r s f act ps i o\n . (DriverStateRec r s f act ps i o -> DriverStateRec r s f act ps i o)\n -> DriverState r s f act ps i o\n -> DriverState r s f act ps i o\nmapDriverState f (DriverState ds) = DriverState (f ds)\n\nnewtype DriverStateRef r f o = DriverStateRef (Ref (DriverStateX r f o))\n\n-- | A version of `DriverState` with the aspects relating to child components\n-- | existentially hidden.\ndata DriverStateX\n (r :: Type -> Type -> Row Type -> Type -> Type)\n (f :: Type -> Type)\n (o :: Type)\n\nmkDriverStateXRef\n :: forall r s f act ps i o\n . Ref (DriverState r s f act ps i o)\n -> Ref (DriverStateX r f o)\nmkDriverStateXRef = unsafeCoerce\n\nunDriverStateX\n :: forall r f i o x\n . (forall s act ps. DriverStateRec r s f act ps i o -> x)\n -> DriverStateX r f o\n -> x\nunDriverStateX = unsafeCoerce\n\n-- | A wrapper of `r` from `DriverState` with the aspects relating to child\n-- | components existentially hidden.\ndata RenderStateX (r :: Type -> Type -> Row Type -> Type -> Type)\n\nmkRenderStateX\n :: forall r s f ps o m\n . m (r s f ps o)\n -> m (RenderStateX r)\nmkRenderStateX = unsafeCoerce\n\nunRenderStateX\n :: forall r x\n . (forall s f ps o. r s f ps o -> x)\n -> RenderStateX r\n -> x\nunRenderStateX = unsafeCoerce\n\nrenderStateX\n :: forall m r f o\n . Functor m\n => (forall s act ps. Maybe (r s act ps o) -> m (r s act ps o))\n -> DriverStateX r f o\n -> m (RenderStateX r)\nrenderStateX f = unDriverStateX \\st ->\n mkRenderStateX (f st.rendering)\n\nrenderStateX_\n :: forall m r f o\n . Applicative m\n => (forall s act ps. r s act ps o -> m Unit)\n -> DriverStateX r f o\n -> m Unit\nrenderStateX_ f = unDriverStateX \\st -> traverse_ f st.rendering\n\ninitDriverState\n :: forall r s f act ps i o\n . ComponentSpec s f act ps i o Aff\n -> i\n -> (o -> Aff Unit)\n -> Ref LifecycleHandlers\n -> Effect (Ref (DriverStateX r f o))\ninitDriverState component input handler lchs = do\n selfRef <- Ref.new (unsafeCoerce {})\n childrenIn <- Ref.new SlotStorage.empty\n childrenOut <- Ref.new SlotStorage.empty\n handlerRef <- Ref.new handler\n pendingQueries <- Ref.new (Just Nil)\n pendingOuts <- Ref.new (Just Nil)\n pendingHandlers <- Ref.new Nothing\n fresh <- Ref.new 1\n subscriptions <- Ref.new (Just M.empty)\n forks <- Ref.new M.empty\n let\n ds :: DriverStateRec r s f act ps i o\n ds =\n { component\n , state: component.initialState input\n , refs: M.empty\n , children: SlotStorage.empty\n , childrenIn\n , childrenOut\n , selfRef\n , handlerRef\n , pendingQueries\n , pendingOuts\n , pendingHandlers\n , rendering: Nothing\n , fresh\n , subscriptions\n , forks\n , lifecycleHandlers: lchs\n }\n Ref.write (DriverState ds) selfRef\n pure $ mkDriverStateXRef selfRef\n", "module Halogen.Aff.Driver.Eval\n ( Renderer\n , evalF\n , evalQ\n , evalM\n , handleLifecycle\n , queueOrRun\n , handleAff\n ) where\n\nimport Prelude\n\nimport Control.Applicative.Free (hoistFreeAp, retractFreeAp)\nimport Control.Monad.Fork.Class (fork)\nimport Control.Monad.Free (foldFree)\nimport Control.Parallel (parSequence_, parallel, sequential)\nimport Data.Coyoneda (liftCoyoneda)\nimport Data.Either (either)\nimport Data.Foldable (traverse_)\nimport Data.List (List, (:))\nimport Data.List as L\nimport Data.Map as M\nimport Data.Maybe (Maybe(..))\nimport Data.Tuple (Tuple(..))\nimport Effect (Effect)\nimport Effect.Aff (Aff, error, finally, joinFiber, killFiber, runAff_)\nimport Effect.Class (liftEffect)\nimport Effect.Exception (throwException)\nimport Effect.Ref (Ref)\nimport Effect.Ref as Ref\nimport Halogen.Aff.Driver.State (DriverState(..), DriverStateRef(..), LifecycleHandlers, mapDriverState, unDriverStateX)\nimport Halogen.Query.ChildQuery as CQ\nimport Halogen.Query.HalogenM (ForkId(..), HalogenAp(..), HalogenF(..), HalogenM(..), SubscriptionId(..))\nimport Halogen.Query.HalogenQ as HQ\nimport Halogen.Query.Input (Input)\nimport Halogen.Query.Input as Input\nimport Halogen.Subscription as HS\nimport Unsafe.Reference (unsafeRefEq)\n\ntype Renderer r =\n forall s f act ps i o\n . Ref LifecycleHandlers\n -> Ref (DriverState r s f act ps i o)\n -> Effect Unit\n\nevalF\n :: forall r s f act ps i o\n . Renderer r\n -> Ref (DriverState r s f act ps i o)\n -> Input act\n -> Aff Unit\nevalF render ref = case _ of\n Input.RefUpdate (Input.RefLabel p) el -> do\n liftEffect $ flip Ref.modify_ ref $ mapDriverState \\st ->\n st { refs = M.alter (const el) p st.refs }\n Input.Action act -> do\n DriverState st <- liftEffect (Ref.read ref)\n evalM render ref (st.component.eval (HQ.Action act unit))\n\nevalQ\n :: forall r s f act ps i o a\n . Renderer r\n -> Ref (DriverState r s f act ps i o)\n -> f a\n -> Aff (Maybe a)\nevalQ render ref q = do\n DriverState st <- liftEffect (Ref.read ref)\n evalM render ref (st.component.eval (HQ.Query (Just <$> liftCoyoneda q) (const Nothing)))\n\nevalM\n :: forall r s f act ps i o a\n . Renderer r\n -> Ref (DriverState r s f act ps i o)\n -> HalogenM s act ps o Aff a\n -> Aff a\nevalM render initRef (HalogenM hm) = foldFree (go initRef) hm\n where\n go\n :: forall s' f' act' ps' i' o' a'\n . Ref (DriverState r s' f' act' ps' i' o')\n -> HalogenF s' act' ps' o' Aff a'\n -> Aff a'\n go ref = case _ of\n State f -> do\n DriverState (st@{ state, lifecycleHandlers }) <- liftEffect (Ref.read ref)\n case f state of\n Tuple a state'\n | unsafeRefEq state state' -> pure a\n | otherwise -> do\n liftEffect $ Ref.write (DriverState (st { state = state' })) ref\n handleLifecycle lifecycleHandlers (render lifecycleHandlers ref)\n pure a\n Subscribe fes k -> do\n sid <- fresh SubscriptionId ref\n finalize <- liftEffect $ HS.subscribe (fes sid) \\act ->\n handleAff $ evalF render ref (Input.Action act)\n DriverState ({ subscriptions }) <- liftEffect (Ref.read ref)\n liftEffect $ Ref.modify_ (map (M.insert sid finalize)) subscriptions\n pure (k sid)\n Unsubscribe sid next -> do\n liftEffect $ unsubscribe sid ref\n pure next\n Lift aff ->\n aff\n ChildQuery cq ->\n evalChildQuery ref cq\n Raise o a -> do\n DriverState { handlerRef, pendingOuts } <- liftEffect (Ref.read ref)\n handler <- liftEffect (Ref.read handlerRef)\n queueOrRun pendingOuts (handler o)\n pure a\n Par (HalogenAp p) ->\n sequential $ retractFreeAp $ hoistFreeAp (parallel <<< evalM render ref) p\n Fork hmu k -> do\n fid <- fresh ForkId ref\n DriverState ({ forks }) <- liftEffect (Ref.read ref)\n doneRef <- liftEffect (Ref.new false)\n fiber <- fork $ finally\n ( liftEffect do\n Ref.modify_ (M.delete fid) forks\n Ref.write true doneRef\n )\n (evalM render ref hmu)\n liftEffect $ unlessM (Ref.read doneRef) do\n Ref.modify_ (M.insert fid fiber) forks\n pure (k fid)\n Join fid a -> do\n DriverState { forks } <- liftEffect (Ref.read ref)\n forkMap <- liftEffect (Ref.read forks)\n traverse_ joinFiber (M.lookup fid forkMap)\n pure a\n Kill fid a -> do\n DriverState ({ forks }) <- liftEffect (Ref.read ref)\n forkMap <- liftEffect (Ref.read forks)\n traverse_ (killFiber (error \"Cancelled\")) (M.lookup fid forkMap)\n pure a\n GetRef (Input.RefLabel p) k -> do\n DriverState { refs } <- liftEffect (Ref.read ref)\n pure $ k $ M.lookup p refs\n\n evalChildQuery\n :: forall s' f' act' ps' i' o' a'\n . Ref (DriverState r s' f' act' ps' i' o')\n -> CQ.ChildQueryBox ps' a'\n -> Aff a'\n evalChildQuery ref cqb = do\n DriverState st <- liftEffect (Ref.read ref)\n cqb # CQ.unChildQueryBox \\(CQ.ChildQuery unpack query reply) -> do\n let\n evalChild (DriverStateRef var) = parallel do\n dsx <- liftEffect (Ref.read var)\n unDriverStateX (\\ds -> evalQ render ds.selfRef query) dsx\n reply <$> sequential (unpack evalChild st.children)\n\nunsubscribe\n :: forall r s' f' act' ps' i' o'\n . SubscriptionId\n -> Ref (DriverState r s' f' act' ps' i' o')\n -> Effect Unit\nunsubscribe sid ref = do\n DriverState ({ subscriptions }) <- Ref.read ref\n subs <- Ref.read subscriptions\n traverse_ HS.unsubscribe (M.lookup sid =<< subs)\n\nhandleLifecycle :: Ref LifecycleHandlers -> Effect ~> Aff\nhandleLifecycle lchs f = do\n liftEffect $ Ref.write { initializers: L.Nil, finalizers: L.Nil } lchs\n result <- liftEffect f\n { initializers, finalizers } <- liftEffect $ Ref.read lchs\n traverse_ fork finalizers\n parSequence_ initializers\n pure result\n\nfresh\n :: forall r s f act ps i o a\n . (Int -> a)\n -> Ref (DriverState r s f act ps i o)\n -> Aff a\nfresh f ref = do\n DriverState st <- liftEffect (Ref.read ref)\n liftEffect $ Ref.modify' (\\i -> { state: i + 1, value: f i }) st.fresh\n\nqueueOrRun\n :: Ref (Maybe (List (Aff Unit)))\n -> Aff Unit\n -> Aff Unit\nqueueOrRun ref au =\n liftEffect (Ref.read ref) >>= case _ of\n Nothing -> au\n Just p -> liftEffect $ Ref.write (Just (au : p)) ref\n\n-- We could perhaps do something more intelligent now this isn't baked into\n-- the virtual-dom rendering. It hasn't really been a problem so far though.\nhandleAff :: forall a. Aff a -> Effect Unit\nhandleAff = runAff_ (either throwException (const (pure unit)))\n", "module Halogen.Aff.Driver\n ( RenderSpec\n , runUI\n , module Halogen\n ) where\n\nimport Prelude\n\nimport Control.Monad.Fork.Class (fork)\nimport Control.Monad.Rec.Class (Step(..), tailRecM)\nimport Control.Parallel (parSequence_)\nimport Data.List ((:))\nimport Data.List as L\nimport Data.Map as M\nimport Data.Maybe (Maybe(..), maybe, isJust, isNothing)\nimport Data.Traversable (for_, traverse_)\nimport Data.Tuple (Tuple(..))\nimport Effect (Effect)\nimport Effect.Aff (Aff, killFiber)\nimport Effect.Class (liftEffect)\nimport Effect.Console (warn)\nimport Effect.Exception (error, throw)\nimport Effect.Ref (Ref)\nimport Effect.Ref as Ref\nimport Halogen (HalogenIO)\nimport Halogen.Aff.Driver.Eval as Eval\nimport Halogen.Aff.Driver.State (DriverState(..), DriverStateRef(..), DriverStateX, LifecycleHandlers, RenderStateX, initDriverState, mapDriverState, renderStateX, renderStateX_, unDriverStateX)\nimport Halogen.Component (Component, ComponentSlot, ComponentSlotBox, unComponent, unComponentSlot)\nimport Halogen.Data.Slot as Slot\nimport Halogen.HTML.Core as HC\nimport Halogen.Query.HalogenQ as HQ\nimport Halogen.Query.Input (Input)\nimport Halogen.Query.Input as Input\nimport Halogen.Subscription as HS\n\n-- | `RenderSpec` allows for alternative driver implementations without the need\n-- | to provide all of the driver machinery again, focusing just on the code\n-- | needed to render components.\n-- |\n-- | The type variables are as follows:\n-- | - `h` is the type of value being rendered (`Halogen.HTML.Core.HTML`, for\n-- | example).\n-- | - `r` is the type for the \"render state\" for the driver. This is a value\n-- | that is stored for each component, that allows the driver to persist\n-- | state between each rendering of a component. This will differ entirely\n-- | for each driver. `r` accepts a number of parameters that will be\n-- | explained below.\n-- |\n-- | The \"inner\" type variables, used by `r` and the other functions are as\n-- | follows:\n-- | - `s` is the state type for the component.\n-- | - `act` is the action type for the component\n-- | - `ps` is the set of slots for addressing child components\n-- | - `o` is the output message type for the component\n-- |\n-- | Note that none of these variables can escape `RenderSpec`'s functions. They\n-- | need to be instantiated with each function call, as the same `RenderSpec`\n-- | is used to deal with all components in the hierarchy.\n-- |\n-- | The `render` function is the main part of the spec, it accepts:\n-- | - A \"handler\" function, for evaluating component queries. This is used to\n-- | implement event handlers in HTML-based drivers.\n-- | - A \"child\" function for dealing with the rendering of children, returning\n-- | the render state for the child component in an existentially hidden\n-- | package. This return value would commonly be used to extract the rendered\n-- | subtree for the child to graft it in place of the child slot. The\n-- | existential package can be unwrapped with `Halogen.Aff.Driver.State.unRenderStateX`.\n-- | - The `h` value to render, parameterised by the slot type for the\n-- | component's children. This slot type is what the \"child\" function\n-- | accepts.\n-- | - The previous render state for the component. If the component has not\n-- | previously been initalized, this will be `Nothing`.\n-- |\n-- | The render function then returns the updated (or initial) render state for\n-- | the component, which will be fed back into `render` the next time the\n-- | component needs to update.\n-- |\n-- | The `renderChild` function's behaviour will be highly dependant on the\n-- | particular driver implementing `RenderSpec`. Its purpose is to take a\n-- | driver render state for a component and produce a new one that may remap\n-- | the rendered value to be something more suitable for grafting during\n-- | `render` of the parent. For the built-in `halogen-vdom` driver this is\n-- | just `identity`. For the `virtual-dom` driver it wraps the rendered HTML\n-- | in a widget, to prevent the `virtual-dom` algorithm from re-diffing\n-- | values that we know are unchanged.\n-- |\n-- | The `removeChild` function is for drivers that need to perform some special\n-- | cleanup when removing a component from the hierarchy. In the `halogen-vdom`\n-- | driver this actually performs the `removeChild` from the DOM. For the\n-- | `virtual-dom` driver nothing needs to happen here, so it is\n-- | `const (pure unit)`.\n-- |\n-- | The `dispose` function is called when the top level component is disposed of\n-- | via `HalogenIO`.\ntype RenderSpec r =\n { render ::\n forall s act ps o\n . (Input act -> Effect Unit)\n -> (ComponentSlotBox ps Aff act -> Effect (RenderStateX r))\n -> HC.HTML (ComponentSlot ps Aff act) act\n -> Maybe (r s act ps o)\n -> Effect (r s act ps o)\n , renderChild :: forall s act ps o. r s act ps o -> r s act ps o\n , removeChild :: forall s act ps o. r s act ps o -> Effect Unit\n , dispose :: forall s act ps o. r s act ps o -> Effect Unit\n }\n\nrunUI\n :: forall r f i o\n . RenderSpec r\n -> Component f i o Aff\n -> i\n -> Aff (HalogenIO f o Aff)\nrunUI renderSpec component i = do\n lchs <- liftEffect newLifecycleHandlers\n disposed <- liftEffect $ Ref.new false\n Eval.handleLifecycle lchs do\n sio <- HS.create\n dsx <- Ref.read =<< runComponent lchs (liftEffect <<< HS.notify sio.listener) i component\n dsx # unDriverStateX \\st -> pure\n { query: evalDriver disposed st.selfRef\n , messages: sio.emitter\n , dispose: dispose disposed lchs dsx\n }\n where\n evalDriver\n :: forall s f' act ps i' o'\n . Ref Boolean\n -> Ref (DriverState r s f' act ps i' o')\n -> (forall a. f' a -> Aff (Maybe a))\n evalDriver disposed ref q =\n liftEffect (Ref.read disposed) >>=\n if _ then pure Nothing\n else Eval.evalQ render ref q\n\n runComponent\n :: forall f' i' o'\n . Ref LifecycleHandlers\n -> (o' -> Aff Unit)\n -> i'\n -> Component f' i' o' Aff\n -> Effect (Ref (DriverStateX r f' o'))\n runComponent lchs handler j = unComponent \\c -> do\n lchs' <- newLifecycleHandlers\n var <- initDriverState c j handler lchs'\n pre <- Ref.read lchs\n Ref.write { initializers: L.Nil, finalizers: pre.finalizers } lchs\n unDriverStateX (render lchs <<< _.selfRef) =<< Ref.read var\n squashChildInitializers lchs pre.initializers =<< Ref.read var\n pure var\n\n render\n :: forall s f' act ps i' o'\n . Ref LifecycleHandlers\n -> Ref (DriverState r s f' act ps i' o')\n -> Effect Unit\n render lchs var = Ref.read var >>= \\(DriverState ds) -> do\n shouldProcessHandlers <- isNothing <$> Ref.read ds.pendingHandlers\n when shouldProcessHandlers $ Ref.write (Just L.Nil) ds.pendingHandlers\n Ref.write Slot.empty ds.childrenOut\n Ref.write ds.children ds.childrenIn\n\n let\n -- The following 3 defs are working around a capture bug, see #586\n pendingHandlers = identity ds.pendingHandlers\n pendingQueries = identity ds.pendingQueries\n selfRef = identity ds.selfRef\n\n handler :: Input act -> Aff Unit\n handler = Eval.queueOrRun pendingHandlers <<< void <<< Eval.evalF render selfRef\n\n childHandler :: act -> Aff Unit\n childHandler = Eval.queueOrRun pendingQueries <<< handler <<< Input.Action\n\n rendering <-\n renderSpec.render\n (Eval.handleAff <<< handler)\n (renderChild lchs childHandler ds.childrenIn ds.childrenOut)\n (ds.component.render ds.state)\n ds.rendering\n\n children <- Ref.read ds.childrenOut\n childrenIn <- Ref.read ds.childrenIn\n\n Slot.foreachSlot childrenIn \\(DriverStateRef childVar) -> do\n childDS <- Ref.read childVar\n renderStateX_ renderSpec.removeChild childDS\n finalize lchs childDS\n\n flip Ref.modify_ ds.selfRef $ mapDriverState \\ds' ->\n ds' { rendering = Just rendering, children = children }\n\n when shouldProcessHandlers do\n flip tailRecM unit \\_ -> do\n handlers <- Ref.read pendingHandlers\n Ref.write (Just L.Nil) pendingHandlers\n traverse_ (Eval.handleAff <<< traverse_ fork <<< L.reverse) handlers\n mmore <- Ref.read pendingHandlers\n if maybe false L.null mmore then Ref.write Nothing pendingHandlers $> Done unit\n else pure $ Loop unit\n\n renderChild\n :: forall ps act\n . Ref LifecycleHandlers\n -> (act -> Aff Unit)\n -> Ref (Slot.SlotStorage ps (DriverStateRef r))\n -> Ref (Slot.SlotStorage ps (DriverStateRef r))\n -> ComponentSlotBox ps Aff act\n -> Effect (RenderStateX r)\n renderChild lchs handler childrenInRef childrenOutRef =\n unComponentSlot \\slot -> do\n childrenIn <- slot.pop <$> Ref.read childrenInRef\n var <- case childrenIn of\n Just (Tuple (DriverStateRef existing) childrenIn') -> do\n Ref.write childrenIn' childrenInRef\n dsx <- Ref.read existing\n dsx # unDriverStateX \\st -> do\n flip Ref.write st.handlerRef $ maybe (pure unit) handler <<< slot.output\n Eval.handleAff $ Eval.evalM render st.selfRef (st.component.eval (HQ.Receive slot.input unit))\n pure existing\n Nothing ->\n runComponent lchs (maybe (pure unit) handler <<< slot.output) slot.input slot.component\n isDuplicate <- isJust <<< slot.get <$> Ref.read childrenOutRef\n when isDuplicate\n $ warn \"Halogen: Duplicate slot address was detected during rendering, unexpected results may occur\"\n Ref.modify_ (slot.set $ DriverStateRef var) childrenOutRef\n Ref.read var >>= renderStateX case _ of\n Nothing -> throw \"Halogen internal error: child was not initialized in renderChild\"\n Just r -> pure (renderSpec.renderChild r)\n\n squashChildInitializers\n :: forall f' o'\n . Ref LifecycleHandlers\n -> L.List (Aff Unit)\n -> DriverStateX r f' o'\n -> Effect Unit\n squashChildInitializers lchs preInits =\n unDriverStateX \\st -> do\n let parentInitializer = Eval.evalM render st.selfRef (st.component.eval (HQ.Initialize unit))\n lchs # Ref.modify_ \\handlers ->\n { initializers:\n ( do\n parSequence_ (L.reverse handlers.initializers)\n parentInitializer\n liftEffect do\n handlePending st.pendingQueries\n handlePending st.pendingOuts\n ) : preInits\n , finalizers: handlers.finalizers\n }\n\n finalize\n :: forall f' o'\n . Ref LifecycleHandlers\n -> DriverStateX r f' o'\n -> Effect Unit\n finalize lchs = do\n unDriverStateX \\st -> do\n cleanupSubscriptionsAndForks (DriverState st)\n let f = Eval.evalM render st.selfRef (st.component.eval (HQ.Finalize unit))\n lchs # Ref.modify_ \\handlers ->\n { initializers: handlers.initializers\n , finalizers: f : handlers.finalizers\n }\n Slot.foreachSlot st.children \\(DriverStateRef ref) -> do\n dsx <- Ref.read ref\n finalize lchs dsx\n\n dispose\n :: forall f' o'\n . Ref Boolean\n -> Ref LifecycleHandlers\n -> DriverStateX r f' o'\n -> Aff Unit\n dispose disposed lchs dsx = Eval.handleLifecycle lchs do\n Ref.read disposed >>=\n if _ then\n pure unit\n else do\n Ref.write true disposed\n finalize lchs dsx\n dsx # unDriverStateX \\{ selfRef } -> do\n (DriverState ds) <- liftEffect $ Ref.read selfRef\n for_ ds.rendering renderSpec.dispose\n\nnewLifecycleHandlers :: Effect (Ref LifecycleHandlers)\nnewLifecycleHandlers = Ref.new { initializers: L.Nil, finalizers: L.Nil }\n\nhandlePending :: Ref (Maybe (L.List (Aff Unit))) -> Effect Unit\nhandlePending ref = do\n queue <- Ref.read ref\n Ref.write Nothing ref\n for_ queue (Eval.handleAff <<< traverse_ fork <<< L.reverse)\n\ncleanupSubscriptionsAndForks\n :: forall r s f act ps i o\n . DriverState r s f act ps i o\n -> Effect Unit\ncleanupSubscriptionsAndForks (DriverState ds) = do\n traverse_ (traverse_ HS.unsubscribe) =<< Ref.read ds.subscriptions\n Ref.write Nothing ds.subscriptions\n traverse_ (Eval.handleAff <<< killFiber (error \"finalized\")) =<< Ref.read ds.forks\n Ref.write M.empty ds.forks\n", "var getEffProp = function (name) {\n return function (node) {\n return function () {\n return node[name];\n };\n };\n};\n\nexport function nodeTypeIndex(node) {\n return node.nodeType;\n}\n\nexport function nodeName(node) {\n return node.nodeName;\n}\n\nexport const baseURI = getEffProp(\"baseURI\");\nexport const _ownerDocument = getEffProp(\"ownerDocument\");\nexport const _parentNode = getEffProp(\"parentNode\");\nexport const _parentElement = getEffProp(\"parentElement\");\n\nexport function hasChildNodes(node) {\n return function () {\n return node.hasChildNodes();\n };\n}\n\nexport const childNodes = getEffProp(\"childNodes\");\nexport const _firstChild = getEffProp(\"firstChild\");\nexport const _lastChild = getEffProp(\"lastChild\");\nexport const _previousSibling = getEffProp(\"previousSibling\");\nexport const _nextSibling = getEffProp(\"nextSibling\");\nexport const _nodeValue = getEffProp(\"nodeValue\");\n\nexport function setNodeValue(value) {\n return function (node) {\n return function () {\n node.nodeValue = value;\n };\n };\n}\n\nexport const textContent = getEffProp(\"textContent\");\n\nexport function setTextContent(value) {\n return function (node) {\n return function () {\n node.textContent = value;\n };\n };\n}\n\nexport function normalize(node) {\n return function () {\n node.normalize();\n };\n}\n\nexport function clone(node) {\n return function () {\n return node.cloneNode(false);\n };\n}\n\nexport function deepClone(node) {\n return function () {\n return node.cloneNode(true);\n };\n}\n\nexport function isEqualNode(node1) {\n return function (node2) {\n return function () {\n return node1.isEqualNode(node2);\n };\n };\n}\n\nexport function compareDocumentPositionBits(node1) {\n return function (node2) {\n return function () {\n return node1.compareDocumentPosition(node2);\n };\n };\n}\n\nexport function contains(node1) {\n return function (node2) {\n return function () {\n return node1.contains(node2);\n };\n };\n}\n\nexport function _lookupPrefix(prefix) {\n return function (node) {\n return function () {\n return node.lookupPrefix(prefix);\n };\n };\n}\n\nexport function _lookupNamespaceURI(ns) {\n return function (node) {\n return function () {\n return node.lookupNamespaceURI(ns);\n };\n };\n}\n\nexport function isDefaultNamespace(ns) {\n return function (node) {\n return function () {\n return node.isDefaultNamespace(ns);\n };\n };\n}\n\nexport function insertBefore(node1) {\n return function (node2) {\n return function (parent) {\n return function () {\n parent.insertBefore(node1, node2);\n };\n };\n };\n}\n\nexport function appendChild(node) {\n return function (parent) {\n return function () {\n parent.appendChild(node);\n };\n };\n}\n\nexport function replaceChild(newChild) {\n return function (oldChild) {\n return function (parent) {\n return function () {\n parent.replaceChild(newChild, oldChild);\n };\n };\n };\n}\n\nexport function removeChild(node) {\n return function (parent) {\n return function () {\n parent.removeChild(node);\n };\n };\n}\n", "module Web.DOM.Node\n ( module Exports\n , fromEventTarget\n , toEventTarget\n , nodeType\n , nodeTypeIndex\n , nodeName\n , baseURI\n , ownerDocument\n , parentNode\n , parentElement\n , hasChildNodes\n , childNodes\n , firstChild\n , lastChild\n , previousSibling\n , nextSibling\n , nodeValue\n , setNodeValue\n , textContent\n , setTextContent\n , normalize\n , clone\n , deepClone\n , isEqualNode\n , compareDocumentPositionBits\n , contains\n , lookupPrefix\n , lookupNamespaceURI\n , isDefaultNamespace\n , insertBefore\n , appendChild\n , replaceChild\n , removeChild\n ) where\n\nimport Prelude\n\nimport Data.Enum (toEnum)\nimport Data.Maybe (Maybe, fromJust)\nimport Data.Nullable (Nullable, toMaybe)\nimport Effect (Effect)\nimport Unsafe.Coerce (unsafeCoerce)\nimport Web.DOM.Document (Document)\nimport Web.DOM.Element (Element)\nimport Web.DOM.Internal.Types (Node) as Exports\nimport Web.DOM.Internal.Types (Node, NodeList)\nimport Web.DOM.NodeType (NodeType)\nimport Web.Event.EventTarget (EventTarget)\nimport Web.Internal.FFI (unsafeReadProtoTagged)\n\nfromEventTarget :: EventTarget -> Maybe Node\nfromEventTarget = unsafeReadProtoTagged \"Node\"\n\ntoEventTarget :: Node -> EventTarget\ntoEventTarget = unsafeCoerce\n\n-- | The type of a node.\nnodeType :: Partial => Node -> NodeType\nnodeType = fromJust <<< toEnum <<< nodeTypeIndex\n\n-- | The numeric value for the type of a node.\nforeign import nodeTypeIndex :: Node -> Int\n\n-- | For elements this is the tag name, for document types this is the doctype\n-- | name, for processing instructions this is the target, for all other nodes\n-- | it is a string like `\"#text\"`, `\"#comment\", etc. depending on the node\n-- | type.\nforeign import nodeName :: Node -> String\n\n-- | The node's base URL.\nforeign import baseURI :: Node -> Effect String\n\n-- | The document the node belongs to, unless the node is a document in which\n-- | case the value is Nothing.\nownerDocument :: Node -> Effect (Maybe Document)\nownerDocument = map toMaybe <<< _ownerDocument\n\nforeign import _ownerDocument :: Node -> Effect (Nullable Document)\n\n-- | The parent node of the node.\nparentNode :: Node -> Effect (Maybe Node)\nparentNode = map toMaybe <<< _parentNode\n\nforeign import _parentNode :: Node -> Effect (Nullable Node)\n\n-- | The parent element of the node.\nparentElement :: Node -> Effect (Maybe Element)\nparentElement = map toMaybe <<< _parentElement\n\nforeign import _parentElement :: Node -> Effect (Nullable Element)\n\n-- | Indicates whether the node has any child nodes.\nforeign import hasChildNodes :: Node -> Effect Boolean\n\n-- | The children of the node.\nforeign import childNodes :: Node -> Effect NodeList\n\n-- | The first child of the node, or Nothing if the node has no children.\nfirstChild :: Node -> Effect (Maybe Node)\nfirstChild = map toMaybe <<< _firstChild\n\nforeign import _firstChild :: Node -> Effect (Nullable Node)\n\n\n-- | The last child of the node, or Nothing if the node has no children.\nlastChild :: Node -> Effect (Maybe Node)\nlastChild = map toMaybe <<< _lastChild\n\nforeign import _lastChild :: Node -> Effect (Nullable Node)\n\n-- | The previous sibling node, or Nothing if there is no previous sibling.\npreviousSibling :: Node -> Effect (Maybe Node)\npreviousSibling = map toMaybe <<< _previousSibling\n\nforeign import _previousSibling :: Node -> Effect (Nullable Node)\n\n-- | The next sibling node, or Nothing if there is no next sibling.\nnextSibling :: Node -> Effect (Maybe Node)\nnextSibling = map toMaybe <<< _nextSibling\n\nforeign import _nextSibling :: Node -> Effect (Nullable Node)\n\n-- | If the node type is text, comment, or processing instruction this is\n-- | `Just` the node's data, or `Nothing` in all other cases.\nnodeValue :: Node -> Effect (Maybe String)\nnodeValue = map toMaybe <<< _nodeValue\n\nforeign import _nodeValue :: Node -> Effect (Nullable String)\n\n-- | If the node type is text, comment, or processing instruction this allows\n-- | the node's data to be changed, or has no effect in all other cases.\nforeign import setNodeValue :: String -> Node -> Effect Unit\n\n-- | If the node type is document fragment, element, text, processing\n-- | instruction, or comment this is the node's data, or null in all other\n-- | cases.\nforeign import textContent :: Node -> Effect String\n\n-- | If the node type is document fragment, element, text, processing\n-- | instruction, or comment this allows the node's data to be changed, or has\n-- | no effect in all other cases.\nforeign import setTextContent :: String -> Node -> Effect Unit\n\n-- | Removes empty text nodes and then combines any remaining text nodes that\n-- | are contiguous.\nforeign import normalize :: Node -> Effect Unit\n\n-- | Clones the node without cloning the node's descendants.\nforeign import clone :: Node -> Effect Node\n\n-- | Clones the node and its descendants.\nforeign import deepClone :: Node -> Effect Node\n\n-- | Checks whether two nodes are equivalent.\nforeign import isEqualNode :: Node -> Node -> Effect Boolean\n\n-- TODO: compareDocumentPosition that returns a semigroup or something instead of the bitmask value\n\n-- | Compares the position of two nodes in the document.\nforeign import compareDocumentPositionBits :: Node -> Node -> Effect Int\n\n-- | Checks whether the second node is contained within the first\nforeign import contains :: Node -> Node -> Effect Boolean\n\nlookupPrefix :: String -> Node -> Effect (Maybe String)\nlookupPrefix p = map toMaybe <<< _lookupPrefix p\n\nforeign import _lookupPrefix :: String -> Node -> Effect (Nullable String)\n\nlookupNamespaceURI :: String -> Node -> Effect (Maybe String)\nlookupNamespaceURI ns = map toMaybe <<< _lookupNamespaceURI ns\n\nforeign import _lookupNamespaceURI :: String -> Node -> Effect (Nullable String)\n\nforeign import isDefaultNamespace :: String -> Node -> Effect Boolean\n\n-- | Inserts the first node before the second as a child of the third node.\nforeign import insertBefore :: Node -> Node -> Node -> Effect Unit\n\n-- | Appends the first node to the child node list of the second node.\nforeign import appendChild :: Node -> Node -> Effect Unit\n\n-- | Uses the first node as a replacement for the second node in the children\n-- | of the third node.\nforeign import replaceChild :: Node -> Node -> Node -> Effect Unit\n\n-- | Removes the first node from the children of the second node.\nforeign import removeChild :: Node -> Node -> Effect Unit\n", "module Halogen.VDom.Driver\n ( runUI\n , module Halogen.Aff.Driver\n ) where\n\nimport Prelude\n\nimport Data.Foldable (traverse_)\nimport Data.Maybe (Maybe(..))\nimport Data.Newtype (unwrap)\nimport Effect (Effect)\nimport Effect.Aff (Aff)\nimport Effect.Class (liftEffect)\nimport Effect.Ref (Ref)\nimport Effect.Ref as Ref\nimport Effect.Uncurried as EFn\nimport Halogen.Aff.Driver (HalogenIO)\nimport Halogen.Aff.Driver as AD\nimport Halogen.Aff.Driver.State (RenderStateX, unRenderStateX)\nimport Halogen.Component (Component, ComponentSlot(..), ComponentSlotBox)\nimport Halogen.HTML.Core (HTML(..), Prop)\nimport Halogen.Query.Input (Input)\nimport Halogen.VDom as V\nimport Halogen.VDom.DOM.Prop as VP\nimport Halogen.VDom.Thunk (Thunk)\nimport Halogen.VDom.Thunk as Thunk\nimport Unsafe.Reference (unsafeRefEq)\nimport Web.DOM.Document (Document) as DOM\nimport Web.DOM.Element (Element) as DOM\nimport Web.DOM.Node (Node, appendChild, removeChild, parentNode, nextSibling, insertBefore) as DOM\nimport Web.HTML (window) as DOM\nimport Web.HTML.HTMLDocument as HTMLDocument\nimport Web.HTML.HTMLElement (HTMLElement) as DOM\nimport Web.HTML.HTMLElement as HTMLElement\nimport Web.HTML.Window (document) as DOM\n\ntype VHTML action slots =\n V.VDom (Array (Prop (Input action))) (ComponentSlot slots Aff action)\n\ntype ChildRenderer action slots = ComponentSlotBox slots Aff action -> Effect (RenderStateX RenderState)\n\nnewtype RenderState state action slots output =\n RenderState\n { node :: DOM.Node\n , machine :: V.Step (VHTML action slots) DOM.Node\n , renderChildRef :: Ref (ChildRenderer action slots)\n }\n\ntype HTMLThunk slots action =\n Thunk (HTML (ComponentSlot slots Aff action)) action\n\ntype WidgetState slots action =\n Maybe (V.Step (HTMLThunk slots action) DOM.Node)\n\nmkSpec\n :: forall action slots\n . (Input action -> Effect Unit)\n -> Ref (ChildRenderer action slots)\n -> DOM.Document\n -> V.VDomSpec\n (Array (VP.Prop (Input action)))\n (ComponentSlot slots Aff action)\nmkSpec handler renderChildRef document =\n V.VDomSpec { buildWidget, buildAttributes, document }\n where\n\n buildAttributes\n :: DOM.Element\n -> V.Machine (Array (VP.Prop (Input action))) Unit\n buildAttributes = VP.buildProp handler\n\n buildWidget\n :: V.VDomSpec\n (Array (VP.Prop (Input action)))\n (ComponentSlot slots Aff action)\n -> V.Machine\n (ComponentSlot slots Aff action)\n DOM.Node\n buildWidget spec = render\n where\n\n render :: V.Machine (ComponentSlot slots Aff action) DOM.Node\n render = EFn.mkEffectFn1 \\slot ->\n case slot of\n ComponentSlot cs ->\n EFn.runEffectFn1 renderComponentSlot cs\n ThunkSlot t -> do\n step <- EFn.runEffectFn1 buildThunk t\n pure $ V.mkStep $ V.Step (V.extract step) (Just step) patch done\n\n patch\n :: EFn.EffectFn2 (WidgetState slots action)\n (ComponentSlot slots Aff action)\n (V.Step (ComponentSlot slots Aff action) DOM.Node)\n patch = EFn.mkEffectFn2 \\st slot ->\n case st of\n Just step -> case slot of\n ComponentSlot cs -> do\n EFn.runEffectFn1 V.halt step\n EFn.runEffectFn1 renderComponentSlot cs\n ThunkSlot t -> do\n step' <- EFn.runEffectFn2 V.step step t\n pure $ V.mkStep $ V.Step (V.extract step') (Just step') patch done\n _ -> EFn.runEffectFn1 render slot\n\n buildThunk :: V.Machine (HTMLThunk slots action) DOM.Node\n buildThunk = Thunk.buildThunk unwrap spec\n\n renderComponentSlot\n :: EFn.EffectFn1\n (ComponentSlotBox slots Aff action)\n (V.Step (ComponentSlot slots Aff action) DOM.Node)\n renderComponentSlot = EFn.mkEffectFn1 \\cs -> do\n renderChild <- Ref.read renderChildRef\n rsx <- renderChild cs\n let node = getNode rsx\n pure $ V.mkStep $ V.Step node Nothing patch done\n\n done :: EFn.EffectFn1 (WidgetState slots action) Unit\n done = EFn.mkEffectFn1 \\st ->\n case st of\n Just step -> EFn.runEffectFn1 V.halt step\n _ -> pure unit\n\n getNode :: RenderStateX RenderState -> DOM.Node\n getNode = unRenderStateX (\\(RenderState { node }) -> node)\n\nrunUI\n :: forall query input output\n . Component query input output Aff\n -> input\n -> DOM.HTMLElement\n -> Aff (HalogenIO query output Aff)\nrunUI component i element = do\n document <- liftEffect $ HTMLDocument.toDocument <$> (DOM.document =<< DOM.window)\n AD.runUI (renderSpec document element) component i\n\nrenderSpec\n :: DOM.Document\n -> DOM.HTMLElement\n -> AD.RenderSpec RenderState\nrenderSpec document container =\n { render\n , renderChild: identity\n , removeChild\n , dispose: removeChild\n }\n where\n render\n :: forall state action slots output\n . (Input action -> Effect Unit)\n -> (ComponentSlotBox slots Aff action -> Effect (RenderStateX RenderState))\n -> HTML (ComponentSlot slots Aff action) action\n -> Maybe (RenderState state action slots output)\n -> Effect (RenderState state action slots output)\n render handler child (HTML vdom) =\n case _ of\n Nothing -> do\n renderChildRef <- Ref.new child\n let spec = mkSpec handler renderChildRef document\n machine <- EFn.runEffectFn1 (V.buildVDom spec) vdom\n let node = V.extract machine\n void $ DOM.appendChild node (HTMLElement.toNode container)\n pure $ RenderState { machine, node, renderChildRef }\n Just (RenderState { machine, node, renderChildRef }) -> do\n Ref.write child renderChildRef\n parent <- DOM.parentNode node\n nextSib <- DOM.nextSibling node\n machine' <- EFn.runEffectFn2 V.step machine vdom\n let newNode = V.extract machine'\n when (not unsafeRefEq node newNode) do\n substInParent newNode nextSib parent\n pure $ RenderState { machine: machine', node: newNode, renderChildRef }\n\nremoveChild :: forall state action slots output. RenderState state action slots output -> Effect Unit\nremoveChild (RenderState { node }) = do\n npn <- DOM.parentNode node\n traverse_ (\\pn -> DOM.removeChild node pn) npn\n\nsubstInParent :: DOM.Node -> Maybe DOM.Node -> Maybe DOM.Node -> Effect Unit\nsubstInParent newNode (Just sib) (Just pn) = void $ DOM.insertBefore newNode sib pn\nsubstInParent newNode Nothing (Just pn) = void $ DOM.appendChild newNode pn\nsubstInParent _ _ _ = pure unit\n", "module Main where\n\nimport Prelude\n\nimport App (logout)\nimport Component.AccountSettings (usetting)\nimport Component.Add (addbmark)\nimport Component.BList (blist)\nimport Component.NList (nlist)\nimport Component.NNote (nnote)\nimport Component.TagCloud (tagcloudcomponent)\nimport Data.Foldable (traverse_)\nimport Effect (Effect)\nimport Effect.Aff (Aff, launchAff)\nimport Effect.Class (liftEffect)\nimport Halogen.Aff as HA\nimport Halogen.VDom.Driver (runUI)\nimport Model (AccountSettings, Bookmark, Note, TagCloudMode, tagCloudModeToF)\nimport Web.DOM.Element (setAttribute)\nimport Web.DOM.ParentNode (QuerySelector(..))\nimport Web.Event.Event (Event, preventDefault)\nimport Web.HTML.HTMLElement (toElement)\n\nlogoutE :: Event -> Effect Unit\nlogoutE e = void <<< launchAff <<< logout =<< preventDefault e\n\nrenderBookmarks :: String -> Array Bookmark -> Effect Unit\nrenderBookmarks renderElSelector bmarks = do\n HA.runHalogenAff do\n HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \\el -> do\n void $ runUI (blist bmarks) unit el\n viewRendered\n\nrenderTagCloud :: String -> TagCloudMode -> Effect Unit\nrenderTagCloud renderElSelector tagCloudMode = do\n HA.runHalogenAff do\n HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \\el -> do\n void $ runUI (tagcloudcomponent (tagCloudModeToF tagCloudMode)) unit el\n\nrenderAddForm :: String -> Bookmark -> Effect Unit\nrenderAddForm renderElSelector bmark = do\n HA.runHalogenAff do\n HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \\el -> do\n void $ runUI (addbmark bmark) unit el\n viewRendered\n\nrenderNotes :: String -> Array Note -> Effect Unit\nrenderNotes renderElSelector notes = do\n HA.runHalogenAff do\n HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \\el -> do\n void $ runUI (nlist notes) unit el\n viewRendered\n\nrenderNote :: String -> Note -> Effect Unit\nrenderNote renderElSelector note = do\n HA.runHalogenAff do\n HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \\el -> do\n void $ runUI (nnote note) unit el\n viewRendered\n\nrenderAccountSettings :: String -> AccountSettings -> Effect Unit\nrenderAccountSettings renderElSelector accountSettings = do\n HA.runHalogenAff do\n HA.selectElement (QuerySelector renderElSelector) >>= traverse_ \\el -> do\n void $ runUI (usetting accountSettings) unit el\n viewRendered\n\nviewRendered :: Aff Unit\nviewRendered = HA.selectElement (QuerySelector \"#content\") >>= traverse_ \\el ->\n liftEffect $ setAttribute \"view-rendered\" \"\" (toElement el) \n"], + "mappings": "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AO,IAAI,EAE7B,OAAW,CAAC0D,GAAUC,CAAK,IAAKnE,EAAQgE,EAAM,EACxC5D,EAAyB4D,GAAQE,EAAQ,IAAMT,SAC7CtC,MAAMiD,QAAQD,CAAK,EACrBF,EAAUC,EAAQ,EAAIL,GAAWM,CAAK,EAEtCA,GACA,OAAOA,GAAU,UACjBA,EAAME,cAAgBhE,OAEtB4D,EAAUC,EAAQ,EAAIH,GAAMI,CAAK,EAEjCF,EAAUC,EAAQ,EAAIC,GAK5B,OAAOF,CACT,CASA,SAASK,GAAaN,GAAQO,EAAM,CAClC,KAAOP,KAAW,MAAM,CACtB,IAAMQ,EAAOpE,EAAyB4D,GAAQO,CAAI,EAElD,GAAIC,EAAM,CACR,GAAIA,EAAKC,IACP,OAAOvD,EAAQsD,EAAKC,GAAG,EAGzB,GAAI,OAAOD,EAAKL,OAAU,WACxB,OAAOjD,EAAQsD,EAAKL,KAAK,CAE7B,CAEAH,GAAS7D,EAAe6D,EAAM,CAChC,CAEA,SAASU,GAAcf,EAAS,CAC9BgB,eAAQC,KAAK,qBAAsBjB,CAAO,EACnC,IACT,CAEA,OAAOe,EACT,CCrLO,IAAMG,GAAOvE,EAAO,CACzB,IACA,OACA,UACA,UACA,OACA,UACA,QACA,QACA,IACA,MACA,MACA,MACA,QACA,aACA,OACA,KACA,SACA,SACA,UACA,SACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,YACA,MACA,UACA,MACA,SACA,MACA,MACA,KACA,KACA,UACA,KACA,WACA,aACA,SACA,OACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,OACA,SACA,SACA,KACA,OACA,IACA,MACA,QACA,MACA,MACA,QACA,SACA,KACA,OACA,MACA,OACA,UACA,OACA,WACA,QACA,MACA,OACA,KACA,WACA,SACA,SACA,IACA,UACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,SACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,KACA,IACA,KACA,MACA,QACA,KAAK,CACN,EAGYwE,GAAMxE,EAAO,CACxB,MACA,IACA,WACA,cACA,eACA,eACA,gBACA,mBACA,SACA,WACA,OACA,OACA,UACA,SACA,OACA,IACA,QACA,WACA,QACA,QACA,OACA,iBACA,SACA,OACA,WACA,QACA,OACA,UACA,UACA,WACA,iBACA,OACA,OACA,QACA,SACA,SACA,OACA,WACA,QACA,OACA,QACA,OACA,OAAO,CACR,EAEYyE,GAAazE,EAAO,CAC/B,UACA,gBACA,sBACA,cACA,mBACA,oBACA,oBACA,iBACA,eACA,UACA,UACA,UACA,UACA,UACA,iBACA,UACA,UACA,cACA,eACA,WACA,eACA,qBACA,cACA,SACA,cAAc,CACf,EAMY0E,GAAgB1E,EAAO,CAClC,UACA,gBACA,SACA,UACA,YACA,mBACA,iBACA,gBACA,gBACA,gBACA,QACA,YACA,OACA,eACA,YACA,UACA,gBACA,SACA,MACA,aACA,UACA,KAAK,CACN,EAEY2E,GAAS3E,EAAO,CAC3B,OACA,WACA,SACA,UACA,QACA,SACA,KACA,aACA,gBACA,KACA,KACA,QACA,UACA,WACA,QACA,OACA,KACA,SACA,QACA,SACA,OACA,OACA,UACA,SACA,MACA,QACA,MACA,SACA,aACA,aAAa,CACd,EAIY4E,GAAmB5E,EAAO,CACrC,UACA,cACA,aACA,WACA,YACA,UACA,UACA,SACA,SACA,QACA,YACA,aACA,iBACA,cACA,MAAM,CACP,EAEY6E,GAAO7E,EAAO,CAAC,OAAO,CAAC,ECrRvBuE,GAAOvE,EAAO,CACzB,SACA,SACA,QACA,MACA,iBACA,eACA,uBACA,WACA,aACA,UACA,SACA,UACA,cACA,cACA,UACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,eACA,SACA,cACA,WACA,WACA,UACA,MACA,WACA,0BACA,wBACA,WACA,YACA,UACA,eACA,OACA,MACA,UACA,SACA,SACA,OACA,OACA,WACA,KACA,YACA,YACA,QACA,OACA,QACA,OACA,OACA,UACA,OACA,MACA,MACA,YACA,QACA,SACA,MACA,YACA,WACA,QACA,OACA,QACA,UACA,aACA,SACA,OACA,UACA,UACA,cACA,cACA,SACA,UACA,UACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,OACA,UACA,aACA,QACA,WACA,QACA,OACA,QACA,OACA,UACA,QACA,MACA,SACA,OACA,QACA,UACA,WACA,QACA,YACA,OACA,SACA,SACA,QACA,QACA,QACA,MAAM,CACP,EAEYwE,GAAMxE,EAAO,CACxB,gBACA,aACA,WACA,qBACA,SACA,gBACA,gBACA,UACA,gBACA,iBACA,QACA,OACA,KACA,QACA,OACA,gBACA,YACA,YACA,QACA,sBACA,8BACA,gBACA,kBACA,KACA,KACA,IACA,KACA,KACA,kBACA,YACA,UACA,UACA,MACA,WACA,YACA,MACA,OACA,eACA,YACA,SACA,cACA,cACA,gBACA,cACA,YACA,mBACA,eACA,aACA,eACA,cACA,KACA,KACA,KACA,KACA,aACA,WACA,gBACA,oBACA,SACA,OACA,KACA,kBACA,KACA,MACA,IACA,KACA,KACA,KACA,KACA,UACA,YACA,aACA,WACA,OACA,eACA,iBACA,eACA,mBACA,iBACA,QACA,aACA,aACA,eACA,eACA,cACA,cACA,mBACA,YACA,MACA,OACA,QACA,SACA,OACA,MACA,OACA,aACA,SACA,WACA,UACA,QACA,SACA,cACA,SACA,WACA,cACA,OACA,aACA,sBACA,mBACA,eACA,SACA,gBACA,sBACA,iBACA,IACA,KACA,KACA,SACA,OACA,OACA,cACA,YACA,UACA,SACA,SACA,QACA,OACA,kBACA,mBACA,mBACA,eACA,cACA,eACA,cACA,aACA,eACA,mBACA,oBACA,iBACA,kBACA,oBACA,iBACA,SACA,eACA,QACA,eACA,iBACA,WACA,UACA,UACA,YACA,mBACA,cACA,kBACA,iBACA,aACA,OACA,KACA,KACA,UACA,SACA,UACA,aACA,UACA,aACA,gBACA,gBACA,QACA,eACA,OACA,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", + "names": ["require_moment", "__commonJSMin", "exports", "module", "global", "factory", "hookCallback", "hooks", "setHookCallback", "callback", "isArray", "input", "isObject", "hasOwnProp", "a", "b", "isObjectEmpty", "obj", "k", "isUndefined", "isNumber", "isDate", "map", "arr", "fn", "res", "i", "arrLen", "extend", "createUTC", "format", "locale", "strict", "createLocalOrUTC", "defaultParsingFlags", "getParsingFlags", "m", "some", "fun", "t", "len", "isValid", "flags", "parsedParts", "isNowValid", "createInvalid", "momentProperties", "updateInProgress", "copyConfig", "to", "from", "prop", "val", "momentPropertiesLen", "Moment", "config", "isMoment", "warn", "msg", "deprecate", "firstTime", "args", "arg", "key", "argLen", "deprecations", "deprecateSimple", "name", "isFunction", "set", "mergeConfigs", "parentConfig", "childConfig", "Locale", "keys", "defaultCalendar", "calendar", "mom", "now", "output", "zeroFill", "number", "targetLength", "forceSign", "absNumber", "zerosToFill", "sign", "formattingTokens", "localFormattingTokens", "formatFunctions", "formatTokenFunctions", "addFormatToken", "token", "padded", "ordinal", "func", "removeFormattingTokens", "makeFormatFunction", "array", "length", "formatMoment", "expandFormat", "replaceLongDateFormatTokens", "defaultLongDateFormat", "longDateFormat", "formatUpper", "tok", "defaultInvalidDate", "invalidDate", "defaultOrdinal", "defaultDayOfMonthOrdinalParse", "defaultRelativeTime", "relativeTime", "withoutSuffix", "string", "isFuture", "pastFuture", "diff", "aliases", "normalizeUnits", "units", "normalizeObjectUnits", "inputObject", "normalizedInput", "normalizedProp", "priorities", "getPrioritizedUnits", "unitsObj", "u", "match1", "match2", "match3", "match4", "match6", "match1to2", "match3to4", "match5to6", "match1to3", "match1to4", "match1to6", "matchUnsigned", "matchSigned", "matchOffset", "matchShortOffset", "matchTimestamp", "matchWord", "match1to2NoLeadingZero", "match1to2HasZero", "regexes", "addRegexToken", "regex", "strictRegex", "isStrict", "localeData", "getParseRegexForToken", "unescapeFormat", "s", "regexEscape", "matched", "p1", "p2", "p3", "p4", "absFloor", "toInt", "argumentForCoercion", "coercedNumber", "value", "tokens", "addParseToken", "tokenLen", "addWeekParseToken", "addTimeToArrayFromToken", "isLeapYear", "year", "YEAR", "MONTH", "DATE", "HOUR", "MINUTE", "SECOND", "MILLISECOND", "WEEK", "WEEKDAY", "y", "daysInYear", "getSetYear", "makeGetSet", "getIsLeapYear", "unit", "keepTime", "set$1", "get", "d", "isUTC", "month", "date", "stringGet", "stringSet", "prioritized", "prioritizedLen", "mod", "n", "x", "indexOf", "o", "daysInMonth", "modMonth", "defaultLocaleMonths", "defaultLocaleMonthsShort", "MONTHS_IN_FORMAT", "defaultMonthsShortRegex", "defaultMonthsRegex", "localeMonths", "localeMonthsShort", "handleStrictParse", "monthName", "ii", "llc", "localeMonthsParse", "setMonth", "getSetMonth", "getDaysInMonth", "monthsShortRegex", "computeMonthsParse", "monthsRegex", "cmpLenRev", "shortPieces", "longPieces", "mixedPieces", "shortP", "longP", "createDate", "h", "M", "ms", "createUTCDate", "firstWeekOffset", "dow", "doy", "fwd", "fwdlw", "dayOfYearFromWeeks", "week", "weekday", "localWeekday", "weekOffset", "dayOfYear", "resYear", "resDayOfYear", "weekOfYear", "resWeek", "weeksInYear", "weekOffsetNext", "localeWeek", "defaultLocaleWeek", "localeFirstDayOfWeek", "localeFirstDayOfYear", "getSetWeek", "getSetISOWeek", "parseWeekday", "parseIsoWeekday", "shiftWeekdays", "ws", "defaultLocaleWeekdays", "defaultLocaleWeekdaysShort", "defaultLocaleWeekdaysMin", "defaultWeekdaysRegex", "defaultWeekdaysShortRegex", "defaultWeekdaysMinRegex", "localeWeekdays", "weekdays", "localeWeekdaysShort", "localeWeekdaysMin", "handleStrictParse$1", "weekdayName", "localeWeekdaysParse", "getSetDayOfWeek", "day", "getSetLocaleDayOfWeek", "getSetISODayOfWeek", "weekdaysRegex", "computeWeekdaysParse", "weekdaysShortRegex", "weekdaysMinRegex", "minPieces", "minp", "shortp", "longp", "hFormat", "kFormat", "meridiem", "lowercase", "matchMeridiem", "kInput", "pos", "pos1", "pos2", "localeIsPM", "defaultLocaleMeridiemParse", "getSetHour", "localeMeridiem", "hours", "minutes", "isLower", "baseConfig", "locales", "localeFamilies", "globalLocale", "commonPrefix", "arr1", "arr2", "minl", "normalizeLocale", "chooseLocale", "names", "j", "next", "split", "loadLocale", "isLocaleNameSane", "oldLocale", "aliasedRequire", "__require", "getSetGlobalLocale", "e", "values", "data", "getLocale", "defineLocale", "updateLocale", "tmpLocale", "listLocales", "checkOverflow", "overflow", "extendedIsoRegex", "basicIsoRegex", "tzRegex", "isoDates", "isoTimes", "aspNetJsonRegex", "rfc2822", "obsOffsets", "configFromISO", "l", "match", "allowTime", "dateFormat", "timeFormat", "tzFormat", "isoDatesLen", "isoTimesLen", "configFromStringAndFormat", "extractFromRFC2822Strings", "yearStr", "monthStr", "dayStr", "hourStr", "minuteStr", "secondStr", "result", "untruncateYear", "preprocessRFC2822", "checkWeekday", "weekdayStr", "parsedInput", "weekdayProvided", "weekdayActual", "calculateOffset", "obsOffset", "militaryOffset", "numOffset", "hm", "configFromRFC2822", "parsedArray", "configFromString", "defaults", "currentDateArray", "nowValue", "configFromArray", "currentDate", "expectedWeekday", "yearToUse", "dayOfYearFromWeekInfo", "w", "weekYear", "temp", "weekdayOverflow", "curWeek", "createLocal", "skipped", "stringLength", "totalParsedInputLength", "era", "meridiemFixWrap", "hour", "isPm", "configFromStringAndArray", "tempConfig", "bestMoment", "scoreToBeat", "currentScore", "validFormatFound", "bestFormatIsValid", "configfLen", "configFromObject", "dayOrDate", "createFromConfig", "prepareConfig", "configFromInput", "c", "prototypeMin", "other", "prototypeMax", "pickBy", "moments", "min", "max", "ordering", "isDurationValid", "unitHasDecimal", "orderLen", "isValid$1", "createInvalid$1", "createDuration", "Duration", "duration", "years", "quarters", "months", "weeks", "days", "seconds", "milliseconds", "isDuration", "absRound", "compareArrays", "array1", "array2", "dontConvert", "lengthDiff", "diffs", "offset", "separator", "offsetFromString", "chunkOffset", "matcher", "matches", "chunk", "parts", "cloneWithOffset", "model", "getDateOffset", "getSetOffset", "keepLocalTime", "keepMinutes", "localAdjust", "addSubtract", "getSetZone", "setOffsetToUTC", "setOffsetToLocal", "setOffsetToParsedOffset", "tZone", "hasAlignedHourOffset", "isDaylightSavingTime", "isDaylightSavingTimeShifted", "isLocal", "isUtcOffset", "isUtc", "aspNetRegex", "isoRegex", "ret", "diffRes", "parseIso", "momentsDifference", "inp", "positiveMomentsDifference", "base", "createAdder", "direction", "period", "dur", "tmp", "isAdding", "updateOffset", "add", "subtract", "isString", "isMomentInput", "isNumberOrStringArray", "isMomentInputObject", "objectTest", "propertyTest", "properties", "property", "propertyLen", "arrayTest", "dataTypeTest", "item", "isCalendarSpec", "getCalendarFormat", "myMoment", "calendar$1", "time", "formats", "sod", "clone", "isAfter", "localInput", "isBefore", "isBetween", "inclusivity", "localFrom", "localTo", "isSame", "inputMs", "isSameOrAfter", "isSameOrBefore", "asFloat", "that", "zoneDelta", "monthDiff", "wholeMonthDiff", "anchor", "anchor2", "adjust", "toString", "toISOString", "keepOffset", "utc", "inspect", "zone", "prefix", "datetime", "suffix", "inputString", "fromNow", "toNow", "newLocaleData", "lang", "MS_PER_SECOND", "MS_PER_MINUTE", "MS_PER_HOUR", "MS_PER_400_YEARS", "mod$1", "dividend", "divisor", "localStartOfDate", "utcStartOfDate", "startOf", "startOfDate", "endOf", "valueOf", "unix", "toDate", "toArray", "toObject", "toJSON", "isValid$2", "parsingFlags", "invalidAt", "creationData", "matchEraAbbr", "matchEraName", "matchEraNarrow", "matchEraYearOrdinal", "localeEras", "eras", "localeErasParse", "eraName", "abbr", "narrow", "localeErasConvertYear", "dir", "getEraName", "getEraNarrow", "getEraAbbr", "getEraYear", "erasNameRegex", "computeErasParse", "erasAbbrRegex", "erasNarrowRegex", "abbrPieces", "namePieces", "narrowPieces", "erasName", "erasAbbr", "erasNarrow", "addWeekYearFormatToken", "getter", "getSetWeekYear", "getSetWeekYearHelper", "getSetISOWeekYear", "getISOWeeksInYear", "getISOWeeksInISOWeekYear", "getWeeksInYear", "weekInfo", "getWeeksInWeekYear", "weeksTarget", "setWeekAll", "dayOfYearData", "getSetQuarter", "getSetDayOfMonth", "getSetDayOfYear", "getSetMinute", "getSetSecond", "getSetMillisecond", "parseMs", "getZoneAbbr", "getZoneName", "proto", "createUnix", "createInZone", "preParsePostFormat", "proto$1", "get$1", "index", "field", "setter", "listMonthsImpl", "out", "listWeekdaysImpl", "localeSorted", "shift", "listMonths", "listMonthsShort", "listWeekdays", "listWeekdaysShort", "listWeekdaysMin", "mathAbs", "abs", "addSubtract$1", "add$1", "subtract$1", "absCeil", "bubble", "monthsFromDays", "monthsToDays", "daysToMonths", "as", "makeAs", "alias", "asMilliseconds", "asSeconds", "asMinutes", "asHours", "asDays", "asWeeks", "asMonths", "asQuarters", "asYears", "valueOf$1", "clone$1", "get$2", "makeGetter", "round", "thresholds", "substituteTimeAgo", "relativeTime$1", "posNegDuration", "getSetRelativeTimeRounding", "roundingFunction", "getSetRelativeTimeThreshold", "threshold", "limit", "humanize", "argWithSuffix", "argThresholds", "withSuffix", "th", "abs$1", "toISOString$1", "total", "totalSign", "ymSign", "daysSign", "hmsSign", "proto$2", "entries", "setPrototypeOf", "isFrozen", "getPrototypeOf", "getOwnPropertyDescriptor", "Object", "freeze", "seal", "create", "apply", "construct", "Reflect", "x", "fun", "thisValue", "args", "Func", "arrayForEach", "unapply", "Array", "prototype", "forEach", "arrayPop", "pop", "arrayPush", "push", "stringToLowerCase", "String", "toLowerCase", "stringToString", "toString", "stringMatch", "match", "stringReplace", "replace", "stringIndexOf", "indexOf", "stringTrim", "trim", "regExpTest", "RegExp", "test", "typeErrorCreate", "unconstruct", "TypeError", "func", "thisArg", "_len", "arguments", "length", "_key", "_len2", "_key2", "addToSet", "set", "array", "transformCaseFunc", "undefined", "l", "element", "lcElement", "cleanArray", "index", "clone", "object", "newObject", "property", "value", "isArray", "constructor", "lookupGetter", "prop", "desc", "get", "fallbackValue", "console", "warn", "html", "svg", "svgFilters", "svgDisallowed", "mathMl", "mathMlDisallowed", "text", "xml", "MUSTACHE_EXPR", "ERB_EXPR", "TMPLIT_EXPR", "DATA_ATTR", "ARIA_ATTR", "IS_ALLOWED_URI", "IS_SCRIPT_OR_DATA", "ATTR_WHITESPACE", "DOCTYPE_NAME", "getGlobal", "window", "_createTrustedTypesPolicy", "trustedTypes", "purifyHostElement", "createPolicy", "suffix", "ATTR_NAME", "hasAttribute", "getAttribute", "policyName", "createHTML", "createScriptURL", "scriptUrl", "_", "createDOMPurify", "DOMPurify", "root", "version", "VERSION", "removed", "document", "nodeType", "isSupported", "originalDocument", "currentScript", "DocumentFragment", "HTMLTemplateElement", "Node", "Element", "NodeFilter", "NamedNodeMap", "MozNamedAttrMap", "HTMLFormElement", "DOMParser", "ElementPrototype", "cloneNode", "getNextSibling", "getChildNodes", "getParentNode", "template", "createElement", "content", "ownerDocument", "trustedTypesPolicy", "emptyHTML", "implementation", "createNodeIterator", "createDocumentFragment", "getElementsByTagName", "importNode", "hooks", "createHTMLDocument", "EXPRESSIONS", "ALLOWED_TAGS", "DEFAULT_ALLOWED_TAGS", "TAGS", "ALLOWED_ATTR", "DEFAULT_ALLOWED_ATTR", "ATTRS", "CUSTOM_ELEMENT_HANDLING", "tagNameCheck", "writable", "configurable", "enumerable", "attributeNameCheck", "allowCustomizedBuiltInElements", "FORBID_TAGS", "FORBID_ATTR", "ALLOW_ARIA_ATTR", "ALLOW_DATA_ATTR", "ALLOW_UNKNOWN_PROTOCOLS", "ALLOW_SELF_CLOSE_IN_ATTR", "SAFE_FOR_TEMPLATES", "WHOLE_DOCUMENT", "SET_CONFIG", "FORCE_BODY", "RETURN_DOM", "RETURN_DOM_FRAGMENT", "RETURN_TRUSTED_TYPE", "SANITIZE_DOM", "SANITIZE_NAMED_PROPS", "SANITIZE_NAMED_PROPS_PREFIX", "KEEP_CONTENT", "IN_PLACE", "USE_PROFILES", "FORBID_CONTENTS", "DEFAULT_FORBID_CONTENTS", "DATA_URI_TAGS", "DEFAULT_DATA_URI_TAGS", "URI_SAFE_ATTRIBUTES", "DEFAULT_URI_SAFE_ATTRIBUTES", "MATHML_NAMESPACE", "SVG_NAMESPACE", "HTML_NAMESPACE", "NAMESPACE", "IS_EMPTY_INPUT", "ALLOWED_NAMESPACES", "DEFAULT_ALLOWED_NAMESPACES", "PARSER_MEDIA_TYPE", "SUPPORTED_PARSER_MEDIA_TYPES", "DEFAULT_PARSER_MEDIA_TYPE", "CONFIG", "formElement", "isRegexOrFunction", "testValue", "Function", "_parseConfig", "cfg", "ADD_URI_SAFE_ATTR", "ADD_DATA_URI_TAGS", "ALLOWED_URI_REGEXP", "ADD_TAGS", "ADD_ATTR", "table", "tbody", "TRUSTED_TYPES_POLICY", "MATHML_TEXT_INTEGRATION_POINTS", "HTML_INTEGRATION_POINTS", "COMMON_SVG_AND_HTML_ELEMENTS", "ALL_SVG_TAGS", "ALL_MATHML_TAGS", "_checkValidNamespace", "parent", "tagName", "namespaceURI", "parentTagName", "Boolean", "_forceRemove", "node", "parentNode", "removeChild", "remove", "_removeAttribute", "name", "attribute", "getAttributeNode", "from", "removeAttribute", "setAttribute", "_initDocument", "dirty", "doc", "leadingWhitespace", "matches", "dirtyPayload", "parseFromString", "documentElement", "createDocument", "innerHTML", "body", "insertBefore", "createTextNode", "childNodes", "call", "_createNodeIterator", "SHOW_ELEMENT", "SHOW_COMMENT", "SHOW_TEXT", "_isClobbered", "elm", "nodeName", "textContent", "attributes", "hasChildNodes", "_isNode", "_executeHook", "entryPoint", "currentNode", "data", "hook", "_sanitizeElements", "allowedTags", "firstElementChild", "_isBasicCustomElement", "childCount", "i", "expr", "_isValidAttribute", "lcTag", "lcName", "_sanitizeAttributes", "hookEvent", "attrName", "attrValue", "keepAttr", "allowedAttributes", "attr", "forceKeepAttr", "getAttributeType", "setAttributeNS", "_sanitizeShadowDOM", "fragment", "shadowNode", "shadowIterator", "nextNode", "sanitize", "importedNode", "returnNode", "appendChild", "firstChild", "nodeIterator", "shadowroot", "shadowrootmode", "serializedHTML", "outerHTML", "doctype", "setConfig", "clearConfig", "isValidAttribute", "tag", "addHook", "hookFunction", "removeHook", "removeHooks", "removeAllHooks", "purify", "_ajax", "platformSpecificDriver", "timeoutErrorMessageIdent", "requestFailedMessageIdent", "mkHeader", "options", "errback", "callback", "xhr", "fixedUrl", "i", "header", "e", "onerror", "msgIdent", "error", "cancelErrback", "cancelCallback", "arrayMap", "f", "arr", "l", "result", "i", "semigroupoidFn", "f", "g", "x", "compose", "dict", "identity", "dict", "categoryFn", "x", "otherwise", "on", "f", "g", "x", "y", "flip", "b", "a", "$$const", "v", "$$Proxy", "map", "dict", "mapFlipped", "dictFunctor", "fa", "f", "$$void", "$$const", "voidLeft", "x", "functorArray", "concatString", "s1", "s2", "concatArray", "xs", "ys", "reflectSymbol", "dict", "absurd", "a", "spin", "$copy_v", "v", "unsafeGet", "label", "rec", "semigroupString", "semigroupArray", "append", "dict", "alt", "dict", "arrayApply", "fs", "xs", "l", "k", "result", "n", "i", "f", "j", "applyArray", "apply", "dict", "applySecond", "dictApply", "apply", "b", "lift2", "f", "a", "pure", "dict", "unless", "dictApplicative", "v", "v1", "pure1", "when", "liftA1", "f", "a", "topChar", "bottomChar", "topNumber", "bottomNumber", "unsafeCompareImpl", "lt", "eq", "gt", "x", "y", "ordIntImpl", "unsafeCompareImpl", "ordStringImpl", "unsafeCompareImpl", "ordCharImpl", "refEq", "r1", "r2", "eqIntImpl", "refEq", "eqCharImpl", "refEq", "eqStringImpl", "eqArrayImpl", "f", "xs", "ys", "i", "eqUnit", "v", "v1", "eqString", "eqInt", "eqChar", "eq", "dict", "eqArray", "dictEq", "eq", "LT", "GT", "EQ", "eqOrdering", "v", "v1", "LT", "GT", "EQ", "intSub", "x", "y", "intAdd", "x", "y", "intMul", "semiringInt", "ringInt", "ordUnit", "v", "v1", "ordString", "ordInt", "ordChar", "compare", "dict", "comparing", "dictOrd", "compare", "f", "x", "y", "top", "dict", "boundedChar", "bottom", "dict", "showIntImpl", "showNumberImpl", "str", "showStringImpl", "s", "l", "c", "i", "k", "empty", "showString", "showNumber", "showInt", "show", "dict", "Nothing", "Just", "maybe", "v", "v1", "v2", "Nothing", "Just", "isNothing", "$$const", "isJust", "functorMaybe", "v", "v1", "Just", "Nothing", "fromMaybe", "a", "maybe", "identity", "fromJust", "v", "Just", "applyMaybe", "v", "v1", "Just", "map", "Nothing", "bindMaybe", "v", "v1", "Just", "Nothing", "applicativeMaybe", "applicationJSON", "applicationFormURLEncoded", "ArrayView", "Blob", "Document", "$$String", "FormData", "FormURLEncoded", "Json", "toMediaType", "v", "Just", "applicationFormURLEncoded", "applicationJSON", "Nothing", "string", "unsafeCoerce", "x", "coerce", "unwrap", "alaF", "v", "Accept", "ContentType", "RequestHeader", "value", "v", "unwrap", "name", "v", "Accept", "ContentType", "RequestHeader", "$$ArrayBuffer", "Blob", "Document", "Json", "$$String", "Ignore", "toResponseType", "v", "toMediaType", "Just", "applicationJSON", "Nothing", "string", "json", "ignore", "ResponseHeader", "arrayBind", "arr", "f", "result", "i", "l", "discard", "dict", "bindArray", "bind", "dict", "bindFlipped", "dictBind", "composeKleisliFlipped", "f", "g", "a", "composeKleisli", "discardUnit", "dictBind", "bind", "join", "dictBind", "bind", "m", "identity", "Left", "Right", "note", "a", "Right", "functorEither", "either", "v", "v1", "v2", "Left", "Right", "hush", "$$const", "Nothing", "Just", "applyEither", "v", "v1", "Left", "Right", "map", "applicativeEither", "pureE", "a", "bindE", "f", "whenM", "dictMonad", "mb", "m", "b", "unlessM", "ap", "dictMonad", "f", "a", "f$prime", "a$prime", "intDegree", "x", "intDiv", "y", "intMod", "yy", "commutativeRingInt", "mod", "dict", "euclideanRingInt", "div", "dict", "monoidString", "monoidArray", "mempty", "dict", "guard", "dictMonoid", "mempty", "v", "v1", "mempty1", "monadEffect", "bindEffect", "applicativeEffect", "functorEffect", "$lazy_functorEffect", "applyEffect", "$lazy_applyEffect", "semigroupEffect", "dictSemigroup", "monoidEffect", "dictMonoid", "error", "msg", "message", "e", "throwException", "e", "$$throw", "$4", "throwError", "dict", "catchError", "dict", "$$try", "dictMonadError", "catchError", "a", "$52", "Identity", "x", "functorIdentity", "applyIdentity", "v", "v1", "bindIdentity", "f", "applicativeIdentity", "Identity", "monadIdentity", "_new", "val", "read", "ref", "modifyImpl", "f", "write", "val", "$$new", "_new", "modify$prime", "modifyImpl", "modify", "f", "s", "s$prime", "modify_", "Loop", "Done", "tailRecM", "dict", "monadRecEffect", "f", "a", "fromDone", "v", "Done", "r", "Loop", "e", "read", "boolConj", "b1", "b2", "boolDisj", "boolNot", "b", "tt", "dict", "not", "dict", "implies", "dict", "ff", "dict", "disj", "dict", "heytingAlgebraBoolean", "a", "b", "not", "conj", "dict", "heytingAlgebraFunction", "dictHeytingAlgebra", "ff", "tt", "implies", "disj", "not", "v", "f", "g", "a", "Tuple", "uncurry", "f", "v", "snd", "v", "functorTuple", "fst", "v", "eqTuple", "dictEq", "dictEq1", "ordTuple", "dictOrd", "dictOrd1", "v", "compare", "x", "y", "LT", "GT", "state", "dict", "modify_", "dictMonadState", "state", "f", "s", "modify", "s$prime", "gets", "get", "monadEffectEffect", "liftEffect", "dict", "ExceptT", "x", "runExceptT", "v", "mapExceptT", "f", "v", "functorExceptT", "dictFunctor", "map1", "map", "monadExceptT", "dictMonad", "bindExceptT", "v", "k", "bind", "either", "$187", "a", "v1", "applyExceptT", "applicativeExceptT", "$188", "pure", "$189", "ExceptT", "Right", "monadThrowExceptT", "dictMonad", "$198", "pure", "$199", "ExceptT", "Left", "altExceptT", "dictSemigroup", "dictMonad", "v", "v1", "bind", "rm", "Right", "pure", "Left", "rn", "append", "runExcept", "$3", "stringify", "j", "empty", "_lookup", "no", "yes", "k", "m", "toArrayWithKey", "f", "m", "r", "k", "keys", "replicateFill", "count", "value", "result", "replicatePolyfill", "n", "i", "replicateImpl", "length", "xs", "findIndexImpl", "just", "nothing", "f", "xs", "i", "l", "_deleteAt", "just", "nothing", "i", "l", "l1", "concat", "xss", "result", "i", "l", "xs", "j", "m", "filterImpl", "f", "sortByImpl", "mergeFromTo", "compare", "fromOrdering", "xs1", "xs2", "from", "to", "mid", "i", "j", "k", "x", "y", "c", "xs", "out", "sliceImpl", "s", "l", "unsafeIndexImpl", "xs", "n", "unsafeFreezeThawImpl", "xs", "unsafeFreezeImpl", "copyImpl", "xs", "thawImpl", "copyImpl", "pushImpl", "a", "xs", "runSTFn1", "fn", "a", "runSTFn2", "b", "unsafeFreeze", "runSTFn1", "unsafeFreezeImpl", "thaw", "runSTFn1", "thawImpl", "withArray", "f", "xs", "result", "unsafeFreeze", "push", "runSTFn2", "pushImpl", "foldrArray", "f", "init", "xs", "acc", "len", "foldlArray", "empty", "dict", "bimap", "dict", "Disj", "x", "semigroupDisj", "dictHeytingAlgebra", "v", "v1", "disj", "monoidDisj", "dictHeytingAlgebra", "foldr", "dict", "traverse_", "dictApplicative", "dictFoldable", "foldr", "f", "$454", "for_", "foldl", "dict", "intercalate", "dictFoldable", "foldl", "dictMonoid", "sep", "xs", "go", "v", "v1", "append", "maximumBy", "dictFoldable", "foldl", "cmp", "max$prime", "v", "v1", "Nothing", "Just", "GT", "$303", "maximum", "dictOrd", "compare", "minimumBy", "min$prime", "LT", "$307", "minimum", "foldableMaybe", "v", "v1", "v2", "Nothing", "Just", "dictMonoid", "foldMapDefaultR", "dictFoldable", "foldr", "dictMonoid", "f", "x", "acc", "foldableArray", "foldMap", "dict", "any", "dictFoldable", "foldMap", "dictHeytingAlgebra", "runFn2", "fn", "a", "b", "runFn3", "c", "runFn4", "d", "traverseArrayImpl", "array1", "a", "array2", "b", "array3", "c", "concat2", "xs", "ys", "apply", "map", "pure", "f", "array", "go", "bot", "top", "pivot", "traverse", "dict", "sequenceDefault", "dictTraversable", "traverse", "dictApplicative", "traversableArray", "unfoldrArrayImpl", "isNothing", "fromJust", "fst", "snd", "f", "b", "result", "value", "maybe", "tuple", "unfoldr1ArrayImpl", "isNothing", "fromJust", "fst", "snd", "f", "b", "result", "value", "tuple", "maybe", "unfoldable1Array", "unfoldr", "dict", "unfoldableArray", "unsafeIndex", "toUnfoldable", "dictUnfoldable", "xs", "len", "length", "f", "otherwise", "sortBy", "comp", "v", "GT", "EQ", "LT", "snoc", "xs", "x", "slice", "runFn3", "sliceImpl", "singleton", "a", "$$null", "xs", "intercalate", "dictMonoid", "foldMap", "dictMonoid", "findIndex", "find", "f", "xs", "filter", "runFn2", "filterImpl", "elemIndex", "dictEq", "x", "findIndex", "v", "notElem", "a", "arr", "drop", "xs", "$173", "slice", "length", "deleteAt", "deleteBy", "v", "v1", "v2", "maybe", "i", "findIndex", "$$delete", "dictEq", "eq", "cons", "x", "xs", "concatMap", "flip", "bind", "bindArray", "mapMaybe", "f", "$189", "maybe", "singleton", "$190", "newImpl", "values", "toArrayWithKey", "v", "v1", "toUnfoldable", "dictUnfoldable", "$89", "$90", "Tuple", "$91", "lookup", "jsonEmptyObject", "empty", "_jsonParser", "fail", "succ", "s", "e", "jsonParser", "j", "replaceAll", "s1", "s2", "s3", "split", "sep", "s", "toLower", "joinWith", "s", "xs", "$$null", "s", "encodeURIComponent_to_RFC3986", "input", "c", "_encodeURIComponent", "fail", "succeed", "input", "encodeURIComponent_to_RFC3986", "err", "_encodeFormURLComponent", "_decodeURIComponent", "$$encodeURIComponent", "encodeFormURLComponent", "$$decodeURIComponent", "toArray", "v", "encode", "encodePart", "v", "Nothing", "Just", "apply", "map", "key", "val", "$37", "joinWith", "$38", "traverse", "$39", "toArray", "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "CONNECT", "PROPFIND", "PROPPATCH", "MKCOL", "COPY", "MOVE", "LOCK", "UNLOCK", "PATCH", "unCustomMethod", "v", "showMethod", "OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "CONNECT", "PROPFIND", "PROPPATCH", "MKCOL", "COPY", "MOVE", "LOCK", "UNLOCK", "PATCH", "print", "either", "show", "showMethod", "unCustomMethod", "NonEmpty", "singleton", "dictPlus", "a", "empty", "Nil", "Cons", "NonEmptyList", "x", "toList", "v", "listMap", "f", "chunkedRevMap", "$copy_v", "$copy_v1", "v1", "Cons", "$tco_var_v", "v", "unrolledMap", "v2", "Nil", "reverseUnrolledMap", "$copy_v2", "$copy_v3", "$tco_var_v2", "v3", "$tco_done1", "functorList", "foldableList", "f", "b", "rev", "go", "$copy_v", "$copy_v1", "v1", "Nil", "Cons", "$tco_var_v", "$284", "foldl", "flip", "$285", "$copy_b", "v", "$tco_var_b", "dictMonoid", "acc", "$286", "append2", "$287", "semigroupList", "xs", "ys", "semigroupNonEmptyList", "v", "as$prime", "NonEmpty", "append1", "toList", "altList", "plusList", "reverse", "go", "$copy_v", "$copy_v1", "v1", "Nil", "v", "Cons", "$tco_var_v", "$$null", "v", "Nil", "_unsafePartial", "f", "_crashWith", "msg", "crashWith", "unsafePartial", "_unsafePartial", "unsafeCrashWith", "msg", "singleton", "$200", "plusList", "$201", "head", "v", "cons", "y", "v", "NonEmpty", "Cons", "nullable", "a", "r", "f", "notNull", "x", "toNullable", "maybe", "notNull", "toMaybe", "Nothing", "Just", "Aff", "EMPTY", "PURE", "THROW", "CATCH", "SYNC", "ASYNC", "BIND", "BRACKET", "FORK", "SEQ", "MAP", "APPLY", "ALT", "CONS", "RESUME", "RELEASE", "FINALIZER", "FINALIZED", "FORKED", "FIBER", "THUNK", "tag", "_1", "_2", "_3", "AffCtr", "fn", "nonCanceler", "error", "runEff", "eff", "runSync", "left", "right", "runAsync", "k", "Scheduler", "limit", "size", "ix", "queue", "draining", "drain", "thunk", "cb", "i", "tmp", "Supervisor", "util", "fibers", "fiberId", "count", "fiber", "fid", "result", "killError", "killCount", "kills", "kill", "SUSPENDED", "CONTINUE", "STEP_BIND", "STEP_RESULT", "PENDING", "RETURN", "COMPLETED", "Fiber", "supervisor", "aff", "runTick", "status", "step", "fail", "interrupt", "bhead", "btail", "attempts", "bracketCount", "joinId", "joins", "rethrow", "run", "localRunTick", "attempt", "e", "sequential", "onComplete", "join", "jid", "canceler", "runPar", "par", "killId", "early", "root", "head", "tail", "kid", "loop", "lhs", "rhs", "resolve", "cancel", "innerKills", "newKills", "killCb", "_pure", "_throwError", "_catchError", "_map", "f", "value", "_bind", "_fork", "immediate", "_liftEffect", "_parAffMap", "_parAffApply", "aff1", "aff2", "makeAff", "Aff", "generalBracket", "acquire", "options", "k", "_makeFiber", "util", "aff", "_sequential", "Aff", "profunctorFn", "a2b", "c2d", "b2c", "$18", "dimap", "dict", "sequential", "dict", "parallel", "parTraverse_", "dictParallel", "dictApplicative", "dictFoldable", "f", "$51", "traverse_1", "$53", "$52", "parSequence_", "dictParallel", "parTraverse_", "dictApplicative", "dictFoldable", "unsafePerformEffect", "f", "Canceler", "x", "suspendAff", "_fork", "functorParAff", "functorAff", "forkAff", "_fork", "ffiUtil", "unsafeFromRight", "v", "Right", "Left", "unsafeCrashWith", "unsafeFromLeft", "isLeft", "makeFiber", "aff", "launchAff", "fiber", "bracket", "acquire", "completed", "applyParAff", "monadAff", "bindAff", "applicativeAff", "applyAff", "$lazy_applyAff", "$$finally", "fin", "a", "bracket", "pure2", "$$const", "parallelAff", "applicativeParAff", "$76", "semigroupCanceler", "v", "v1", "err", "monadEffectAff", "effectCanceler", "$77", "Canceler", "$$const", "liftEffect", "joinFiber", "v", "makeAff", "k", "functorFiber", "f", "t", "makeFiber", "map1", "killFiber", "e", "v", "bind1", "liftEffect", "suspended", "$$const", "pure", "makeAff", "k", "effectCanceler", "monadThrowAff", "monadErrorAff", "runAff", "k", "aff", "launchAff", "bindFlipped", "$83", "runAff_", "monadRecAff", "k", "go", "a", "res", "Done", "pure2", "Loop", "nonCanceler", "$$const", "pure2", "monoidCanceler", "fromEffectFnAff", "v", "makeAff", "k", "$9", "Left", "$10", "Right", "e", "k2", "v1", "$11", "$12", "typeOf", "value", "tagOf", "isArray", "value", "fromNumberImpl", "just", "nothing", "n", "toNumber", "log", "fromNumber", "singleton", "c", "length", "s", "drop", "s", "splitAt", "i", "s", "charAt", "i", "s", "stripPrefix", "v", "str", "v1", "splitAt", "length", "$20", "Nothing", "ForeignError", "TypeMismatch", "ErrorAtIndex", "ErrorAtProperty", "unsafeToForeign", "unsafeCoerce", "unsafeFromForeign", "renderForeignError", "v", "ForeignError", "ErrorAtIndex", "show1", "ErrorAtProperty", "show", "TypeMismatch", "fail", "dictMonad", "$153", "throwError", "monadThrowExceptT", "$154", "singleton", "unsafeReadTagged", "dictMonad", "fail", "tag", "value", "tagOf", "unsafeFromForeign", "otherwise", "readBoolean", "readNumber", "readInt", "error", "Left", "singleton", "TypeMismatch", "fromNumber", "$155", "maybe", "pure", "$156", "readNumber1", "readString", "RequestContentError", "ResponseBodyError", "TimeoutError", "RequestFailedError", "XHROtherError", "request", "driver", "req", "parseJSON", "v", "either", "$74", "fromResponse", "$$ArrayBuffer", "unsafeReadTagged", "Blob", "Document", "x", "alt", "Json", "composeKleisliFlipped", "$75", "$$String", "Ignore", "$$const", "pure", "extractContent", "ArrayView", "Right", "unsafeToForeign", "FormData", "FormURLEncoded", "note", "map", "encode", "stringify", "addHeader", "mh", "hs", "Just", "any", "on", "eq", "name", "headers", "reqContent", "ContentType", "bindFlipped", "toMediaType", "Accept", "ajaxRequest", "h", "v1", "send", "content", "ResponseHeader", "runExcept", "Left", "head", "message", "$61", "$62", "Nothing", "toNullable", "pure1", "printError", "renderForeignError", "defaultRequest", "eqStatusCode", "driver", "url", "request", "driver", "import_moment", "_app", "_mmoment8601", "just", "nothing", "tuple", "s", "m", "moment", "s1", "s2", "error", "_closeWindow", "window", "_setFocus", "elemId", "_toLocaleDateString", "dateString", "RawHTML", "x", "toLocaleDateString", "s", "setFocus", "mmoment8601", "s", "closeWindow", "win", "app$prime", "v", "_unsafeStringify", "toCharCode", "c", "fromCharCode", "toEnum", "dict", "fromEnum", "dict", "toEnumWithDefaults", "dictBoundedEnum", "toEnum", "low", "high", "x", "v", "toEnum1", "Just", "Nothing", "fromEnum1", "bottom2", "$140", "defaultSucc", "toEnum$prime", "fromEnum$prime", "a", "defaultPred", "charToEnum", "v", "toCharCode", "bottom1", "top1", "Nothing", "enumChar", "defaultSucc", "defaultPred", "boundedEnumChar", "charToEnum", "unsafeReadPropImpl", "f", "s", "key", "value", "unsafeReadProp", "dictMonad", "k", "value", "typeOf", "pure", "readProp", "get", "dictIsSymbol", "l", "r", "copyRecord", "rec", "copy", "key", "unsafeInsert", "l", "a", "semigroupoidBuilder", "semigroupoidFn", "insert", "dictIsSymbol", "l", "r1", "categoryBuilder", "categoryFn", "build", "v", "r1", "copyRecord", "writeImplFields", "dict", "writeImpl", "writeJSON", "dictWriteForeign", "$191", "$192", "writeForeignString", "writeForeignNullable", "dictWriteForeign", "$195", "maybe", "unsafeToForeign", "toNullable", "Nothing", "writeImpl", "$196", "toMaybe", "writeForeignInt", "writeForeignForeign", "writeForeignBoolean", "recordWriteForeign", "dictWriteForeignFields", "writeImplFields", "rec", "steps", "writeImplFields1", "$$Proxy", "nilWriteForeignFields", "v", "v1", "consWriteForeignFields", "dictIsSymbol", "dictWriteForeign", "writeImpl", "dictWriteForeignFields", "writeImplFields", "v", "rec", "rest", "writeImplFields1", "$$Proxy", "value", "writeImpl1", "get", "result", "compose1", "insert1", "TagCloudModeTop", "TagCloudModeLowerBound", "TagCloudModeRelated", "TagCloudModeNone", "writeForeignTagCloudMode$prime", "recordWriteForeign", "consWriteForeignFields", "expandedIsSymbol", "writeForeignBoolean", "modeIsSymbol", "writeForeignString", "valueIsSymbol", "writeForeignForeign", "nilWriteForeignFields", "writeForeignNote$prime", "createdIsSymbol", "idIsSymbol", "writeForeignInt", "isMarkdownIsSymbol", "lengthIsSymbol", "sharedIsSymbol", "textIsSymbol", "consWriteForeignFields1", "updatedIsSymbol", "writeForeignBookmark$prime", "archiveUrlIsSymbol", "writeForeignNullable", "bidIsSymbol", "descriptionIsSymbol", "privateIsSymbol", "selectedIsSymbol", "tagsIsSymbol", "timeIsSymbol", "toreadIsSymbol", "urlIsSymbol", "writeForeignAccountSettin", "archiveDefaultIsSymbol", "privacyLockIsSymbol", "privateDefaultIsSymbol", "eqTagCloudModeF", "tagCloudModeToF", "tagCloudMode", "readInt", "s", "split", "pure", "TagCloudModeNone", "tagCloudModeFromF", "v", "TagCloudModeTop", "TagCloudModeLowerBound", "TagCloudModeRelated", "setExpanded", "v", "v1", "TagCloudModeTop", "TagCloudModeLowerBound", "TagCloudModeRelated", "TagCloudModeNone", "isRelated", "isExpanded", "windowImpl", "ClassName", "x", "_referrer", "doc", "toParentNode", "unsafeCoerce", "toDocument", "unsafeCoerce", "referrer", "doc", "_read", "nothing", "just", "value", "tag", "toNode", "unsafeCoerce", "toElement", "unsafeCoerce", "fromElement", "x", "setHref", "href", "location", "origin", "search", "location", "reload", "location", "document", "window", "location", "window", "Star", "UnStar", "showStar", "v", "fetchUrl", "method", "url", "headers", "content", "rt", "app", "app$prime", "logout", "u", "POST", "Nothing", "ignore", "fetchPath", "path", "fetchUrlEnc", "ContentType", "applicationFormURLEncoded", "map", "FormURLEncoded", "markRead", "bid", "show", "toggleStar", "action", "show1", "fetchJson", "dictWriteForeign", "applicationJSON", "$25", "writeForeignTagCloudMode$prime", "writeForeignBookmark$prime", "writeForeignNote$prime", "writeForeignAccountSettin", "getTagCloud", "mode", "Just", "json", "eres", "res", "lookupTitle", "bm", "string", "$24", "updateTagCloudMode", "editNote", "editBookmark", "editAccountSettings", "us", "destroyNote", "nid", "DELETE", "destroy", "InputButton", "InputCheckbox", "InputColor", "InputDate", "InputDatetimeLocal", "InputEmail", "InputFile", "InputHidden", "InputImage", "InputMonth", "InputNumber", "InputPassword", "InputRadio", "InputRange", "InputReset", "InputSearch", "InputSubmit", "InputTel", "InputText", "InputTime", "InputUrl", "InputWeek", "renderInputType", "v", "profunctorForget", "f", "v", "v1", "$36", "strongForget", "$37", "fst", "$38", "snd", "strongFn", "a2b", "v", "Tuple", "first", "dict", "view", "l", "identity", "viewOn", "s", "use", "dictMonadState", "p", "v", "lens$prime", "to", "dictStrong", "pab", "v", "lens", "get", "set", "s", "b", "over", "l", "set", "b", "$$const", "modifying", "dictMonadState", "p", "f", "over", "assign", "dictMonadState", "p", "b", "set", "monadAffAff", "liftAff", "dict", "runExists", "unsafeCoerce", "mkExists", "CoyonedaF", "unCoyoneda", "f", "v", "runExists", "v1", "coyoneda", "k", "fi", "functorCoyoneda", "f", "v", "runExists", "v1", "$180", "liftCoyoneda", "coyoneda", "identity", "categoryFn", "Leaf", "Node", "Split", "SplitLast", "unsafeNode", "k", "v", "l", "r", "Leaf", "Node", "$277", "singleton", "k", "v", "Leaf", "unsafeBalancedNode", "height", "Node", "rotateLeft", "l", "rk", "rv", "rl", "rr", "unsafeNode", "rotateRight", "lk", "lv", "ll", "lr", "r", "comp", "m", "LT", "v1", "$lazy_unsafeSplit", "Split", "GT", "EQ", "unsafeSplit", "$lazy_unsafeSplitLast", "SplitLast", "unsafeSplitLast", "unsafeJoinNodes", "v2", "pop", "dictOrd", "k", "m", "v", "unsafeSplit", "compare", "map", "a", "unsafeJoinNodes", "lookup", "dictOrd", "k", "go", "$copy_v", "v", "Leaf", "Node", "v1", "compare", "LT", "GT", "EQ", "insert", "dictOrd", "k", "v", "go", "v1", "Leaf", "singleton", "Node", "v2", "compare", "LT", "unsafeBalancedNode", "GT", "EQ", "foldableMap", "f", "z", "m$prime", "z$prime", "Leaf", "Node", "$lazy_go", "go", "m", "dictMonoid", "v", "append1", "empty", "$$delete", "dictOrd", "k", "go", "v", "Leaf", "Node", "v1", "compare", "LT", "unsafeBalancedNode", "GT", "EQ", "unsafeJoinNodes", "alter", "dictOrd", "f", "k", "m", "v", "unsafeSplit", "compare", "v2", "Nothing", "unsafeJoinNodes", "Just", "unsafeBalancedNode", "OrdBox", "mkOrdBox", "dictOrd", "eqOrdBox", "v", "v1", "ordOrdBox", "pop", "dictIsSymbol", "dictOrd", "sym", "key", "v", "pop1", "Tuple", "reflectSymbol", "mkOrdBox", "lookup", "lookup1", "insert", "val", "insert1", "foreachSlot", "dictApplicative", "k", "traverse_", "$54", "empty", "AutocompleteOff", "AutocompleteOn", "AutocompleteName", "AutocompleteHonorificPrefix", "AutocompleteGivenName", "AutocompleteAdditionalName", "AutocompleteFamilyName", "AutocompleteHonorificSuffix", "AutocompleteNickname", "AutocompleteEmail", "AutocompleteUsername", "AutocompleteNewPassword", "AutocompleteCurrentPassword", "AutocompleteOneTimeCode", "AutocompleteOrganizationTitle", "AutocompleteOrganization", "AutocompleteStreetAddress", "AutocompleteAddressLine1", "AutocompleteAddressLine2", "AutocompleteAddressLine3", "AutocompleteAddressLevel1", "AutocompleteAddressLevel2", "AutocompleteAddressLevel3", "AutocompleteAddressLevel4", "AutocompleteCountry", "AutocompleteCountryName", "AutocompletePostalCode", "AutocompleteCreditCardName", "AutocompleteCreditCardGivenName", "AutocompleteCreditCardAdditionalName", "AutocompleteCreditCardFamilyName", "AutocompleteCreditCardNumber", "AutocompleteCreditCardExpiration", "AutocompleteCreditCardExpirationMonth", "AutocompleteCreditCardExpirationYear", "AutocompleteCreditCardSecurityCode", "AutocompleteCreditCardType", "AutocompleteTransactionCurrency", "AutocompleteTransactionAmount", "AutocompleteLanguage", "AutocompleteBirthday", "AutocompleteBirthdayDay", "AutocompleteBirthdayMonth", "AutocompleteBirthdayYear", "AutocompleteSex", "AutocompleteTelephone", "AutocompleteTelephoneCountryCode", "AutocompleteTelephoneNational", "AutocompleteTelephoneAreaCode", "AutocompleteTelephoneLocal", "AutocompleteTelephoneLocalPrefix", "AutocompleteTelephoneLocalSuffix", "AutocompleteTelephoneExtension", "AutocompleteIMPP", "AutocompleteURL", "AutocompletePhoto", "renderAutocompleteType", "v", "ButtonButton", "ButtonSubmit", "ButtonReset", "renderButtonType", "v", "RefUpdate", "Action", "Step", "unStep", "unsafeCoerce", "step", "v", "a", "mkStep", "halt", "extract", "Text", "Elem", "Keyed", "Widget", "Grafted", "Graft", "unGraft", "f", "$61", "graft", "unsafeCoerce", "bifunctorGraft", "f", "g", "unGraft", "v", "graft", "Graft", "$63", "$64", "runGraft", "unGraft", "v", "go", "v2", "Text", "Elem", "map", "Keyed", "map1", "Widget", "Grafted", "bimap", "unsafeGetAny", "key", "obj", "unsafeHasAny", "unsafeSetAny", "val", "forE", "a", "f", "b", "i", "forEachE", "forInE", "o", "ks", "k", "diffWithIxE", "a1", "a2", "f1", "f2", "f3", "a3", "l1", "l2", "i", "strMapWithIxE", "as", "fk", "f", "o", "a", "k", "diffWithKeyAndIxE", "o1", "o2", "refEq", "b", "createTextNode", "s", "doc", "setTextContent", "n", "createElement", "ns", "name", "insertChildIx", "removeChild", "parentNode", "setAttribute", "attr", "val", "el", "removeAttribute", "hasAttribute", "addEventListener", "ev", "listener", "removeEventListener", "jsUndefined", "unsafeLookup", "unsafeGetAny", "unsafeFreeze", "unsafeCoerce", "pokeMutMap", "unsafeSetAny", "newMutMap", "newImpl", "getProp", "name", "doctype", "_namespaceURI", "_prefix", "localName", "tagName", "setAttribute", "name", "value", "element", "getEffProp", "name", "node", "children", "_firstElementChild", "_lastElementChild", "childElementCount", "_querySelector", "selector", "querySelector", "qs", "$2", "map", "toMaybe", "$3", "_querySelector", "$4", "toNode", "unsafeCoerce", "haltWidget", "v", "state", "vdom", "Grafted", "$lazy_patchWidget", "runGraft", "Widget", "res$prime", "unStep", "mkStep", "Step", "res", "patchWidget", "haltText", "parent", "$lazy_patchText", "Text", "otherwise", "nextState", "patchText", "haltKeyed", "v1", "s", "haltElem", "eqElemSpec", "ns1", "ns2", "$63", "Just", "Nothing", "$lazy_patchElem", "Elem", "length", "attrs2", "onThis", "v2", "onThese", "ix", "extract", "onThat", "children2", "patchElem", "$lazy_patchKeyed", "Keyed", "ix$prime", "v3", "fst", "patchKeyed", "buildWidget", "build", "w", "buildText", "node", "buildKeyed", "name1", "as1", "ch1", "toNode", "el", "onChild", "attrs", "children", "buildElem", "child", "buildVDom", "spec", "$lazy_build", "eventListener", "fn", "event", "Created", "Removed", "Attribute", "Property", "Handler", "Ref", "unsafeGetProperty", "unsafeGetAny", "setProperty", "unsafeSetAny", "removeProperty", "key", "el", "v", "v1", "typeOf", "jsUndefined", "propToStrKey", "Just", "propFromString", "unsafeCoerce", "propFromInt", "unsafeCoerce", "propFromBoolean", "buildProp", "emit", "el", "removeProp", "prevEvents", "v1", "Attribute", "removeAttribute", "toNullable", "Property", "removeProperty", "Handler", "handler", "unsafeLookup", "fst", "Ref", "mbEmit", "v", "Just", "haltProp", "state", "lookup", "Removed", "diffProp", "events", "v11", "v2", "$66", "v4", "refEq", "elVal", "unsafeGetProperty", "$75", "setProperty", "snd", "applyProp", "v3", "unsafeGetAny", "unsafeHasAny", "ev", "ref", "f$prime", "Tuple", "listener", "Created", "ps2", "onThis", "onThese", "onThat", "propToStrKey", "nextState", "props", "$lazy_patchProp", "patchProp", "renderProp", "ps1", "ps1$prime", "HTML", "x", "widget", "$28", "Widget", "toPropValue", "dict", "text", "$29", "Text", "ref", "f", "$30", "v", "Created", "Just", "Removed", "Nothing", "prop", "dictIsProp", "$31", "Property", "$32", "toPropValue1", "isPropString", "isPropInt", "isPropInputType", "$45", "isPropButtonType", "$50", "isPropBoolean", "isPropAutocompleteType", "$51", "handler", "element", "ns", "name", "props", "children", "attr", "ns", "v", "Attribute", "Pure", "Lift", "Ap", "mkAp", "fba", "fb", "liftFreeAp", "goLeft", "dictApplicative", "fStack", "valStack", "nat", "func", "count", "Tuple", "Cons", "cons", "goApply", "vals", "gVal", "Nil", "gRes", "apply", "$31", "Right", "NonEmpty", "functorFreeAp", "f", "x", "foldFreeAp", "z", "go", "$copy_v", "v1", "goApply1", "pure", "Left", "$tco_done", "nextVals", "singleton", "retractFreeAp", "identity", "applyFreeAp", "applicativeFreeAp", "hoistFreeAp", "$54", "CatQueue", "uncons", "$copy_v", "v", "Nil", "CatQueue", "reverse", "Cons", "$tco_done", "Just", "Tuple", "snoc", "a", "$$null", "v", "Nil", "empty", "CatNil", "CatCons", "link", "v", "v1", "CatNil", "CatCons", "snoc", "foldr", "k", "b", "q", "foldl", "$copy_v", "$copy_v1", "$copy_v2", "v2", "Nil", "Cons", "$tco_var_v", "$tco_var_v1", "go", "$copy_xs", "$copy_ys", "uncons", "xs", "Nothing", "x", "i", "ys", "Just", "$tco_var_xs", "Tuple", "$66", "empty", "append", "link", "semigroupCatList", "append", "snoc", "cat", "a", "append", "CatCons", "empty", "Free", "Return", "Bind", "toView", "$copy_v", "runExpF", "v2", "concatF", "r", "append", "v", "uncons", "Nothing", "Just", "$tco_done", "a", "fromView", "f", "empty", "freeMonad", "freeFunctor", "k", "f", "$189", "pure", "freeApplicative", "$190", "freeBind", "v", "Free", "snoc", "$191", "fromView", "Return", "liftF", "f", "fromView", "Bind", "$192", "foldFree", "dictMonadRec", "k", "go", "f", "v", "toView", "Return", "map1", "Done", "pure1", "Bind", "$199", "unChildQueryBox", "unsafeCoerce", "reallyUnsafeRefEq", "a", "b", "unsafeRefEq", "reallyUnsafeRefEq", "unsubscribe", "v", "subscribe", "k", "$76", "notify", "v", "a", "create", "k", "v", "subscribers", "a", "traverse_1", "SubscriptionId", "x", "ForkId", "State", "Subscribe", "Unsubscribe", "Lift", "ChildQuery", "Raise", "Par", "Fork", "Join", "Kill", "GetRef", "HalogenM", "x", "raise", "o", "ordSubscriptionId", "ordInt", "ordForkId", "monadHalogenM", "freeMonad", "monadStateHalogenM", "$181", "HalogenM", "liftF", "State", "monadEffectHalogenM", "dictMonadEffect", "$186", "liftEffect", "$187", "HalogenM", "liftF", "Lift", "monadAffHalogenM", "dictMonadAff", "$188", "liftAff", "$189", "HalogenM", "liftF", "Lift", "getRef", "p", "identity", "functorHalogenM", "freeFunctor", "bindHalogenM", "freeBind", "applicativeHalogenM", "freeApplicative", "Initialize", "Finalize", "Receive", "Action", "Query", "unsafeEqThunk", "v", "v1", "refEq", "runThunk", "v", "buildThunk", "toVDom", "haltThunk", "state", "t2", "unsafeEqThunk", "$48", "$lazy_patchThunk", "runThunk", "vdom", "patchThunk", "renderThunk", "spec", "t", "ComponentSlot", "ThunkSlot", "unComponentSlot", "unsafeCoerce", "unComponent", "mkEval", "args", "v", "Initialize", "voidLeft", "traverse_", "Finalize", "Receive", "Action", "Query", "unCoyoneda", "g", "$45", "map", "maybe", "$46", "mkComponentSlot", "mkComponent", "defaultEval", "componentSlot", "dictIsSymbol", "dictOrd", "label", "p", "comp", "input", "output", "mkComponentSlot", "element", "form", "element", "input", "props", "element", "label", "element", "p", "element", "span", "element", "table", "element", "tbody", "element", "tbody_", "td", "td_", "textarea", "es", "tr", "element", "tr_", "div", "element", "div_", "button", "element", "br", "props", "element", "br_", "a", "element", "_currentTarget", "e", "preventDefault", "e", "currentTarget", "$5", "change", "click", "mouseHandler", "unsafeCoerce", "handler$prime", "et", "f", "ev", "handler", "onClick", "$15", "handler", "click", "$16", "mouseHandler", "onSubmit", "handler", "addForeignPropHandler", "key", "prop", "reader", "f", "go", "a", "readProp", "unsafeToForeign", "handler$prime", "composeKleisli", "currentTarget", "e", "$85", "onChecked", "change", "readBoolean", "monadIdentity", "onValueChange", "addForeignPropHandler", "change", "readString", "ref", "go", "p", "mel", "$29", "prop", "dictIsProp", "isPropBoolean", "isPropString", "isPropInt", "required", "prop1", "rows", "prop3", "target", "prop2", "title", "type_", "dictIsProp", "prop", "value", "name", "prop2", "id", "prop2", "href", "$$for", "prop2", "disabled", "prop1", "class_", "$36", "prop2", "$37", "unwrap", "checked", "prop1", "autofocus", "prop1", "autocomplete", "prop", "isPropAutocompleteType", "attr", "hasArrayFrom", "hasStringIterator", "hasFromCodePoint", "hasCodePointAt", "_singleton", "fallback", "hasFromCodePoint", "_take", "n", "hasStringIterator", "str", "accum", "iter", "o", "unsurrogate", "lead", "trail", "isTrail", "cu", "isLead", "uncons", "s", "v", "length", "cu1", "fromEnum", "charAt", "cu0", "$43", "unsurrogate", "Just", "fromCharCode", "$75", "toEnumWithDefaults", "boundedEnumChar", "bottom", "boundedChar", "top", "$76", "singletonFallback", "v", "lead", "div", "trail", "mod", "singleton", "_singleton", "singletonFallback", "takeFallback", "v", "v1", "v2", "uncons", "Just", "take", "_take", "drop", "s", "take", "getEffProp", "name", "doc", "url", "documentURI", "origin", "compatMode", "characterSet", "contentType", "_documentElement", "getEffProp", "whenH", "b", "k", "text", "whenA", "b", "k", "unsafeDecode", "str", "ifElseH", "b", "f", "k", "ifElseA", "fromNullableStr", "$53", "fromMaybe", "$54", "toMaybe", "encodeTag", "$55", "$56", "replaceAll", "$57", "$$encodeURIComponent", "class_", "$58", "attr", "a", "_parseQueryString", "srh", "decode", "$59", "replaceAll", "$60", "unsafeDecode", "go", "kv", "v", "split", "Just", "Tuple", "Nothing", "qs", "srh$prime", "take", "$52", "filter", "_lookupQueryStringValue", "qs", "k", "$62", "v", "_loc", "bindFlipped", "location", "windowImpl", "_doc", "bindFlipped", "document", "windowImpl", "_curQuerystring", "_loc", "loc", "_parseQueryString", "srh", "EarchiveDefault", "EprivateDefault", "EprivacyLock", "UEditField", "USubmit", "_us", "dictStrong", "v", "v1", "strongFn", "strongForget", "usetting", "u$prime", "render", "editField", "$31", "class_", "div", "text", "input", "type_", "InputCheckbox", "id", "name", "checked", "onChecked", "label", "$$for", "mkState", "handleAction", "discard", "modifying", "_us1", "us", "bind", "use", "_us2", "log", "s", "warn", "Eurl", "Etitle", "Edescription", "Etags", "Eprivate", "Etoread", "BEditField", "BEditSubmit", "BDeleteAsk", "BLookupTitle", "BDestroy", "_edit_bm", "dictStrong", "v", "v1", "strongFn", "strongForget", "_bm", "_apiError", "addbmark", "b$prime", "render", "mmoment", "mmoment8601", "editField", "f", "$111", "display_exists", "class_", "text", "span", "title", "maybe", "snd", "fst", "div", "button", "append", "type_", "ButtonButton", "onClick", "v2", "guard", "attr", "display_destroyed", "alert_notification", "alert_text", "display_edit", "onSubmit", "table", "tbody_", "tr_", "td", "td_", "whenH", "isJust", "fromMaybe", "label", "$$for", "input", "type_1", "InputUrl", "id", "required", "name", "autofocus", "$$null", "value", "onValueChange", "InputText", "disabled", "guard1", "textarea", "rows", "autocomplete", "AutocompleteOff", "InputCheckbox", "checked", "onChecked", "InputSubmit", "$72", "mkState", "b", "handleAction", "modify_", "edit_bm", "mtitle", "Just", "modifying", "_edit_bm1", "Nothing", "bid", "discard", "liftEffect", "preventDefault", "Left", "assign", "_apiError1", "printError", "Right", "qs", "doc", "ref", "loc", "org", "_lookupQueryStringValue", "v3", "stripPrefix", "setHref", "bindFlipped", "closeWindow", "windowImpl", "unsafeSetInnerHTML", "element", "html", "getHTMLElementRef", "$24", "map", "functorHalogenM", "v", "$25", "getRef", "SetInnerHTML", "Receive", "mkComponent", "toRawHTML", "render", "state", "ref", "handleAction", "v", "v1", "bind", "getHTMLElementRef", "mel", "el", "v2", "liftAff", "forkAff", "makeAff", "v3", "discard1", "modify_", "inputval", "$30", "_getDefaults", "_defaults", "changeDefaults", "newDefaults", "escapeTest", "escapeReplace", "escapeTestNoEncode", "escapeReplaceNoEncode", "escapeReplacements", "getEscapeReplacement", "ch", "escape", "html", "encode", "unescapeTest", "unescape", "_", "n", "caret", "edit", "regex", "opt", "source", "obj", "name", "val", "valSource", "cleanUrl", "href", "noopTest", "splitCells", "tableRow", "count", "row", "match", "offset", "str", "escaped", "curr", "cells", "i", "rtrim", "c", "invert", "l", "suffLen", "currChar", "findClosingBracket", "b", "level", "outputLink", "cap", "link", "raw", "lexer", "title", "text", "token", "indentCodeCompensation", "matchIndentToCode", "indentToCode", "node", "matchIndentInNode", "indentInNode", "_Tokenizer", "options", "__publicField", "src", "trimmed", "top", "tokens", "bull", "isordered", "list", "itemRegex", "itemContents", "endsWithBlankLine", "endEarly", "line", "t", "nextLine", "indent", "blankLine", "nextBulletRegex", "hrRegex", "fencesBeginRegex", "headingBeginRegex", "rawLine", "istask", "ischecked", "spacers", "hasMultipleLineBreaks", "tag", "headers", "aligns", "rows", "item", "align", "header", "cell", "trimmedUrl", "rtrimSlash", "lastParenIndex", "linkLen", "links", "linkString", "maskedSrc", "prevChar", "lLength", "rDelim", "rLength", "delimTotal", "midDelimTotal", "endReg", "lastCharLength", "hasNonSpaceChars", "hasSpaceCharsOnBothEnds", "prevCapZero", "_b", "_a", "newline", "blockCode", "fences", "hr", "heading", "bullet", "lheading", "_paragraph", "blockText", "_blockLabel", "def", "_tag", "_comment", "paragraph", "blockquote", "blockNormal", "gfmTable", "blockGfm", "__spreadProps", "__spreadValues", "blockPedantic", "inlineCode", "br", "inlineText", "_punctuation", "punctuation", "blockSkip", "emStrongLDelim", "emStrongRDelimAst", "emStrongRDelimUnd", "anyPunctuation", "autolink", "_inlineComment", "_inlineLabel", "reflink", "nolink", "reflinkSearch", "inlineNormal", "inlinePedantic", "inlineGfm", "inlineBreaks", "block", "inline", "_Lexer", "__Lexer", "rules", "next", "leading", "tabs", "lastToken", "cutSrc", "lastParagraphClipped", "extTokenizer", "startIndex", "tempSrc", "tempStart", "getStartIndex", "errMsg", "keepPrevChar", "_Renderer", "code", "infostring", "lang", "quote", "body", "ordered", "start", "type", "startatt", "task", "checked", "content", "flags", "cleanHref", "out", "_TextRenderer", "_Parser", "__Parser", "genericToken", "ret", "headingToken", "codeToken", "tableToken", "j", "k", "blockquoteToken", "listToken", "loose", "itemBody", "checkbox", "htmlToken", "paragraphToken", "textToken", "renderer", "escapeToken", "tagToken", "linkToken", "imageToken", "strongToken", "emToken", "codespanToken", "delToken", "_Hooks", "markdown", "Marked", "args", "__privateAdd", "_parseMarkdown", "_onError", "__privateMethod", "parseMarkdown_fn", "callback", "values", "childTokens", "extensions", "pack", "opts", "ext", "prevRenderer", "extLevel", "prop", "rendererProp", "rendererFunc", "tokenizer", "tokenizerProp", "tokenizerFunc", "prevTokenizer", "hooks", "hooksProp", "hooksFunc", "prevHook", "arg", "walkTokens", "packWalktokens", "parser", "origOpt", "throwError", "onError_fn", "e", "silent", "async", "msg", "markedInstance", "marked", "setOptions", "use", "parseInline", "parser", "_Parser", "lexer", "_Lexer", "import_dompurify", "marked", "markedImpl", "str", "DOMPurify", "marked", "$1", "component", "mkComponent", "marked", "log", "dictMonadEffect", "$67", "liftEffect", "$68", "slot", "dictIsSymbol", "dictOrd", "label", "p", "component", "input", "outputQuery", "$11", "Eurl", "Etitle", "Edescription", "Etags", "Eprivate", "Etoread", "BNotifyRemove", "BStar", "BDeleteAsk", "BLookupTitle", "BDestroy", "BEdit", "BEditField", "BEditSubmit", "BMarkRead", "_markdown", "_edit_bm", "dictStrong", "v", "v1", "strongFn", "strongForget", "_edit", "_bm", "_apiError", "bmark", "b$prime", "tagid", "bm", "mkState", "b", "handleAction", "bind", "use", "_bm1", "UnStar", "modify_", "setFocus", "modifying", "_edit_bm1", "edit_bm", "mtitle", "Just", "Nothing", "discard", "liftEffect", "preventDefault", "edit_bm$prime", "Left", "assign", "_apiError1", "printError", "Right", "app", "app$prime", "render", "star", "class_", "guard", "button", "onClick", "v2", "text", "shdatetime", "take", "shdate", "toLocaleDateString", "linkToFilterTag", "tag", "encodeTag", "linkToFilterSingle", "slug", "editField", "f", "$126", "display", "a", "href", "target", "$121", "fromMaybe", "toMaybe", "isJust", "title", "$122", "slot", "component", "absurd", "div", "whenA", "$$null", "whenH", "type_", "ButtonButton", "v3", "span", "guard1", "alert_notification", "alert_text", "display_edit", "form", "onSubmit", "div_", "input", "type_1", "InputUrl", "required", "name", "value", "onValueChange", "InputText", "disabled", "textarea", "rows", "id", "autocomplete", "AutocompleteOff", "attr", "InputCheckbox", "checked", "onChecked", "label", "$$for", "InputSubmit", "InputReset", "show", "ifElseH", "HandleBMessage", "_bookmark", "blist", "st", "render", "bms", "b", "bmark", "handleAction", "v", "modify_", "filter", "nlist", "st$prime", "toTextarea", "input", "foldMap", "x", "br_", "text", "mmoment", "note", "mkState", "notes$prime", "handleAction", "v", "pure", "app", "app$prime", "linkToFilterSingle", "slug", "render", "renderNote", "id", "show", "class_", "div", "a", "href", "$11", "take", "title", "maybe", "snd", "fst", "Etitle", "Etext", "EisMarkdown", "Eshared", "NNop", "NEditField", "NEditSubmit", "NEdit", "NDeleteAsk", "NDestroy", "_note", "dictStrong", "v", "v1", "strongForget", "strongFn", "_markdown", "_edit_note", "_edit", "_apiError", "nnote", "st$prime", "notetextid", "note", "mkState", "note$prime", "app", "app$prime", "handleAction", "modifying", "_edit_note1", "modify_", "bind", "use", "_note1", "qs", "$91", "Just", "liftEffect", "whenM", "pure1", "setFocus", "discard", "preventDefault", "edit_note", "Left", "assign", "_apiError1", "printError", "Right", "doc", "ref", "loc", "org", "v2", "_lookupQueryStringValue", "$100", "setHref", "$102", "_loc", "_note2", "render", "toTextarea", "input", "foldMap", "x", "br_", "text", "mmoment", "n", "renderNote", "id", "show", "class_", "div", "$108", "slot", "component", "absurd", "span", "title", "maybe", "snd", "fst", "button", "type_", "ButtonButton", "onClick", "v3", "guard", "editField", "f", "$114", "display_destroyed", "alert_notification", "alert_text", "renderNote_edit", "onSubmit", "whenH", "isJust", "fromMaybe", "p", "type_1", "InputText", "name", "value", "onValueChange", "autofocus", "$$null", "textarea", "rows", "InputCheckbox", "checked", "onChecked", "label", "$$for", "InputSubmit", "InputReset", "$$const", "ifElseH", "TInitialize", "TExpanded", "TChangeMode", "tagcloudcomponent", "m$prime", "rescale", "f", "n", "m", "l", "h", "$57", "mkState", "fetchTagCloud", "mode$prime", "TagCloudModeNone", "bind", "liftAff", "getTagCloud", "tagCloudModeFromF", "tagcloud", "s", "$60", "handleAction", "v", "v1", "mode", "discard", "modify_", "$64", "gets", "$67", "isExpanded", "setExpanded", "app", "app$prime", "linkToFilterTag", "rest", "$69", "toSizedTag", "curtags", "k", "opacity", "$79", "toNumber", "k_lower", "toLower", "fontsize", "identity", "style", "attr", "show", "a", "href", "encodeTag", "class_", "text", "whenH", "$$null", "$70", "joinWith", "map", "cons", "$$delete", "toArray", "$80", "uncurry", "$81", "sortBy", "comparing", "$83", "$82", "toUnfoldable", "render", "modetop", "TagCloudModeTop", "modelb5", "TagCloudModeLowerBound", "modelb20", "modelb2", "modelb10", "modelb1", "div", "append1", "ifElseA", "isRelated", "button", "type_", "ButtonButton", "onClick", "v2", "guard", "eq", "title", "$73", "fromMaybe", "minimum", "values", "maximum", "TagCloudModeRelated", "selectElement", "query", "$16", "querySelector", "$17", "toParentNode", "mel", "runHalogenAff", "runAff_", "either", "throwException", "$$const", "pure1", "monadForkAff", "fork", "dict", "unRenderStateX", "unsafeCoerce", "unDriverStateX", "renderStateX_", "dictApplicative", "f", "st", "mkRenderStateX", "renderStateX", "dictFunctor", "mkDriverStateXRef", "mapDriverState", "v", "initDriverState", "component", "input", "handler", "lchs", "ds", "childrenIn", "childrenOut", "selfRef", "handlerRef", "pendingQueries", "pendingOuts", "pendingHandlers", "fresh", "subscriptions", "forks", "unsubscribe", "sid", "ref", "v", "subs", "queueOrRun", "au", "Nothing", "Just", "liftEffect", "write", "Cons", "handleLifecycle", "lchs", "f", "result", "discard1", "traverse_2", "fork", "handleAff", "runAff_", "either", "throwException", "$$const", "pure", "applicativeEffect", "fresh", "modify$prime", "i", "evalQ", "render", "q", "evalM", "Query", "map", "liftCoyoneda", "initRef", "evalChildQuery", "cqb", "v1", "unChildQueryBox", "v2", "evalChild", "v3", "parallel", "bind1", "read", "dsx", "ds", "go", "State", "unsafeRefEq", "otherwise", "Subscribe", "SubscriptionId", "act", "evalF", "Action", "finalize", "modify_", "map2", "insert", "Unsubscribe", "Lift", "ChildQuery", "Raise", "handler", "Par", "sequential", "retractFreeAp", "hoistFreeAp", "$119", "$120", "Fork", "ForkId", "fid", "$$new", "doneRef", "fiber", "insert1", "Join", "forkMap", "Kill", "lookup1", "GetRef", "lookup2", "RefUpdate", "flip", "mapDriverState", "st", "newLifecycleHandlers", "handlePending", "ref", "queue", "$59", "traverse_", "fork", "$60", "reverse", "cleanupSubscriptionsAndForks", "v", "$61", "killFiber", "error", "$62", "runUI", "renderSpec", "component", "i", "squashChildInitializers", "lchs", "preInits", "st", "parentInitializer", "evalM", "render", "Initialize", "handlers", "runComponent", "handler", "j", "c", "lchs$prime", "pre", "$63", "$64", "$$var", "read", "renderChild", "childrenInRef", "childrenOutRef", "slot", "childrenIn", "Just", "$65", "maybe", "pure1", "$66", "Receive", "dsx", "Nothing", "$67", "$68", "$69", "isDuplicate", "warn", "renderStateX", "pure", "shouldProcessHandlers", "write", "Nil", "$70", "queueOrRun", "$71", "evalF", "$72", "$$void", "childHandler", "$73", "$74", "Action", "$75", "v1", "childDS", "finalize", "ds$prime", "rendering", "children", "flip", "tailRecM", "$76", "$77", "$$null", "mmore", "$52", "Loop", "f", "Finalize", "evalDriver", "disposed", "q", "evalQ", "dispose", "for_", "v2", "$78", "notify", "sio", "$79", "getEffProp", "name", "node", "baseURI", "getEffProp", "_ownerDocument", "_parentNode", "_parentElement", "childNodes", "getEffProp", "_firstChild", "_lastChild", "_previousSibling", "_nextSibling", "_nodeValue", "textContent", "getEffProp", "insertBefore", "node1", "node2", "parent", "appendChild", "node", "removeChild", "node", "parent", "parentNode", "$6", "map", "toMaybe", "$7", "_parentNode", "nextSibling", "$15", "map", "toMaybe", "$16", "_nextSibling", "substInParent", "v", "v1", "v2", "Just", "$$void", "insertBefore", "Nothing", "appendChild", "pure", "removeChild", "pn", "npn", "mkSpec", "handler", "renderChildRef", "document", "getNode", "unRenderStateX", "done", "st", "halt", "buildWidget", "spec", "buildThunk", "unwrap", "slot", "ComponentSlot", "ThunkSlot", "step$prime", "$lazy_patch", "$lazy_render", "$lazy_renderComponentSlot", "step", "cs", "renderChild", "node", "rsx", "patch", "render", "renderComponentSlot", "buildAttributes", "buildProp", "renderSpec", "container", "child", "extract", "machine", "toNode", "newNode", "machine$prime", "nextSib", "parent", "runUI", "component", "i", "element", "viewRendered", "bind", "selectElement", "traverse_", "el", "toElement", "renderTagCloud", "renderElSelector", "tagCloudMode", "renderNotes", "notes", "renderNote", "note", "renderBookmarks", "bmarks", "renderAddForm", "bmark", "renderAccountSettings", "accountSettings", "logoutE", "e", "$10"] } diff --git a/static/js/app.min.js.map.gz b/static/js/app.min.js.map.gz index 629728a7df0a67807f93f0cbdc46833a69be41aa..96a0394cfef853676a7aca0e2651ea53594ee232 100644 GIT binary patch literal 381265 zcmV(#K;*w4iwFqXB(!A!17UD*E^TRUE^2cwZDDW#tUPOX+qRP5_g5e}d#Qs{vNZSh-fyBSxl2${u+JGo)3uu6R>z$ zq~UBe&QgC|)r_v)O0w>v+ae8qO1A z_}I(6(c2>NbC#MwqipHT*?2i#rZg%7y7OP7m!n-i-4RRjlttrf8i(_g6-yQdBj8~R z)FUsabC#|;q9Lo}H;hHpOSVDb(t&++#F?y?bo?P@U$^2*s!&ByHC$TOZ8B}+2;mZh){{sn5~LSD!AiHfRx@mN2UC%Jr!5t?cBfmt;UVhWgZ!82Q4CPtp`BucOGz zGAj|#QId!GN)H_G<#V@iS9I1QR!V0UfdI!YiWf#H^%Z+<{2P?KWnS&BIWWOO}oLX{y`gstld)T@4xrlGAQt0O#8#ijp2 zU3$R|kZ>sAEsFy0E^14S?y~knRM=PME}V&8z{vG)%8~8E-S{}nK3madQivU}2yBG; zdu`%UP^Tiw4yi@gD*U9LszrBQI8!LOnERN_oa0l-$n)h+O!EZ`j39D4nS6k*0mtlRIZJ4~gnB`n_JSoR_}q#Vg;{Q7 z&NFz(cSG!P&WU5uE-Y;xdXaPQp$XPj9S8^|-@4U^CFAF z5mOFY(5}N6yNrKcUtVn37fgz{t=EKMV}TH-rBHaE1k|#>zj^7#9MifcDc>qq;-=g? zc5W)aDZ(gdbpr>zpak}m&o%>05ME@v zxw|dx2L=I)cS1BksE~H+UB~0gbHU_$F$TY3s)=hyQOSEyZ)MQ_|Ewi$c#5HxrU|5d zu>3i-*TY>hD8@?W+^y=u$vc|o4rA{|0Dt@m^lSJ0?gZ-I{P@aiB~4!^{HZ;Sq?9U? z$UVdrl&pb$Plw?t2Uv*DpqB8(E*#e2YJ==8s|B`K(_X~pR1JWq;z@PT@P^sL;0Da= zh}mtat8Kq7a^^FPW;u15cvoU?iackDlZ;!IUkjS9grBuyenC!tHqd`NW-%;+zX+4| zncMJkYchgCra=4-`6b##Idtidz7?fNZlN1S2c8dtd~{b*s^> z3Ueb`qV`teBky+UPre{s{&V7Cko=R1=3=JI9{b(4DAR3fR}6*^Z)s^ZlylwjTL7{j zQF}Q}c=Kg#@s7M4JfV0huHN~&VqSBH*2(N9cRgA_*~H(v5B{#`41#CUdiGav(4Djd zRgUvyLs3y_(k@YqDbzyoEjTX$ZQ+j)!_ru z(`_+PbJqonET^LZ> zKm^K|ZI?=;7ufo}+NiI*hf^?-4tc`im2OcaX%(P(iO);#q2fWLfX=)k0;T4gAQv=( z#qIz&VfQo%zd@P25j4dIo59YYKLtti*o^KwL>xHHW3_$p3|O7d|~0rX|;MPJC+Xcgoxqh=M6H{GOU*e&Ebm; z!xt>4?%|0yKZ;o4I7@H}guR^}Qq*0ed*`__EZ}`hTi8D3aSByhDh}44j(+lG>u#^c zZi&E8uIZiCyqh6WC>tCJ^ADwIPt_~UxD2r3{ATlb{ESrBm~RvOC@(^jeX=+D0g{k- z>J|Bdr5QY(gfaQVSTH2-vwNuN$k77YX8L7F&PzgspLmCN1s-4ve5kB(Ljmy5-%rFN zG4JPW1l{Xxa+@6VXYvS{^yhq+bVz0%ZbqyI4}5O z9{Jnf%3%>j$TJ+p8+|kADuW(5lmnv*y`J8 zg87kIFPr(<6pHdGC2;zsSUqm2CK$n5b)hv6y98NZ^KGg;mt zN9AnXZf=BO3PRIfO~+8Z!nB}o;Tp92{^V!Sa1@ao)k`YNCSDQ{Twda3L{1vcNSKoc zFH3qkfl$;SBxHT|iX(MXj06T3_|y6jDBTpY@UqK?1WW9`Hzaqqbu>7raiA<;2|hUT zMz!;U**>t@m7*uMqQ4L3V#>8bai-W@95Km6k`7sJR_ZM9LFBGVwyr~ zP8tlOiKY~D>dkbhajks@^fRa%Uf~<*2a3&byABDu1qsRjNazFd;zeljH7p*pMSqqc zQ#avsNW#Iuv_M6rfa4SnIwHtYW~kvjp@bp&+nvFO=4p4F3!9&Lz#@ot2fq%S{#5a0 zC*3QTvuDoXRcnp2R38qy6Ni$xpqDc%Z8^qC%l9tIQrVtU)x1QYA16n`9*3yo*n{5@ z11qINSq|BpLZITwVsx2qq%h<`X)r2szwb6{xdnh-F6irRR!0?5)vTT~84&Gy$hCxVU>tH(b_kP~nv(NcJ>3!g>&ch6Z@)su1qtncw z9B7zWY*ZTY==UXfm?*alAC#kZb8QWK98>2DLs|w!ynK%H%PXZ-?!e&&8~6Y?u)&q& zjT%Pc)J+e(Gh{<%uw9ZRF#6R%(>%T+o;vcffcoW^Uksz>vK*-4h%bVcSR%|S;foi} z+KC7I9J@YXSL9C7z2zd&z?+TLlvWT~)~B%`8n#}GxeY7KenSt^3<^~`L*pQ?Y*sFu zhdT~$Q*C~C!5%ne000vTP#e$Ssds^v8en}p31ixCBwen&3e!+g$&u*{2W|YJ5s6jc z1V)+8CaiQ72c#Km?$GJ*wag+Il|X70mmbM8$catJ3#S(+X3#A zh*WKmS}T9t9E*!}8nw%LxD7OvS?ia3!9aGiBw<0&QlbcoKW?PYq?Bt?~T(lKA8ON>8YkTeWbbm9GW>yts?ahU@QDMkRFwj#}Dvy3{lA;v1=;^S7-mkv|l z9f%&)xMyx>8N5w*m*U6U7L)~4-{*0;!LJ&wd8;I06mIc3 zHWH9;=>y+*l!WkMdCYJ~s%LeJLH3CyeLv#_%l^k=PUd_X6-7~)Qd5582zozQlQ5?w zVzBDa3Hl!7c9FR*g>Q+nBIAUGQ8XwC-DRUDzh>@xC9|Kwx+P6o`bm*cGl!Sn0PAn_2nx=c(?!il;Le1vJHi}I}S+QKA zI+z2^SB+!>u1?%?|j<`s`(mv^t7X(G? zvOs|(Kv5aiz4=*~X55czBQlmz*1Cq%cuTjwd6RnKx2+##yi zo%JjnBLl#y@DP>M4U9~2XxJ(Rz8>AfEkj~S;O8jA3oZSZL$b3sIKW_kMPv4bf@^tU z#BV;ZIQIC-e75v_YNu&$7_Bo_3+xcg!8JOBI3k00x{EpRcucaB13x7%+}xrqy)Jp> z>*IzsHjq)H^0Xe99*jP-5JDr^@P-LnXTj9W|2j^8FoJ~S-vl*(T^;gyW7(YAs5XL)f~Wj*CY{gb%V1n0S}Fze{JsPp{1u1zC9!S? z`B*1fDtNR+zJWs2Z3CIVunIO&Dx0eVynu2ZgUd!rK-puOI76sb0Wn%yBk(tIvW{@J zDAyWjIePDRo&?*7wDngit;^EDgd0y2PdEqlxF^Us}q@=OW9A zN5qvBo@#?28H6U4D%&=OGks@}VNP0IX3IKZDYj_DuIT*a>(cO{ z7W|R8zlwc?0AuE$HCgo5))X*%G@A10J`^afPNF zZaDzWs{M-Zj}~{rm()lF+fi9?Q<4=a#ak`O9DFKg>WN3d@V0Br zf^fEydXNFwB&V*V;+NIqmUeWzJ7xTy61AmTZh|6Fxa^JxIwe!L)I|J_C|zY$F{2#x z;qwM zLk?rF(D|*KBUsNQ@UVJR*vX)DJ@!`6_1sJt9=dz^l$=d^idHanRv`jtm4yC9@rJ&AJ_M7LZqDHSl(+~Y^Cz(I0C`qExAY&rlpOZ}hPdT9Bnf*k zvYq%k43_bt7?N0`J+IPt^|)8g-c#+QIxMbgKtXmu4&?-*60W(}m(QK9_>HFQZ3sA` za2k@Fe@p$0@7nPDgFbXtb93{|yOTGJ`GyP>T<2cC7{OCXNzdRoQ8wXop%#=`$WBd6 zZWn2|88E>65nEw6tb~;$Y z=iA%CVgKfIF^%JXmJJTq=WKm`eu)3p$83Fk%zqr>zcm>5VF16_;rii*tska`>re3e z6a4-ao?Sq-_tWG0U;MSMf5MOT>igdC$H(;wz~=M*d_F&fsouTozkBx%-_iBS+FQR~ zFBXUE)6>KC{r%xOjt|#acDTLA0>OLbszItm2@0Ry$ za=kvAtk2F4@!vXv8Gd|h(iFNZeM4**7{h#~Cd`3y+LPn(K7Qz(_o}B$XgBa4CLuSy z^Yh-2>`kjNS#s|q2CGrZZ{zHf#@?}T^cV|y`1peCmZ7(Tf~nrtoc1|GL&?FgoNY*~ z-w5Is1%%9R1K~^A9`&oQ4Pm#O$-C3W$)F(BviYqzAnzDUy3@W-7`xlw+wQny9ptIyNkfhP@Ey- zx9K62NfM4-&NfLMI|#_3In+S|W|m5M6Rw8~%RUtE-1uMI;aB(iV~i%Zx7qFO^>l33 zO6s?2Mk!rJo=^K@j6Q1!KK}{P1+#^HjqJD>t(s`I?~B|^S*koP7S&9${0n!lm~7pQm~i=K_Pm-yIBW$I%W#^*wRh z7q~1E$%{tDwL#FpPt8bChhQGz&R8->RVpQlEeW|^Dq@KO3gGWt>tZbvN7%&i zKhH**t-!+~j41lpFXFcF|Ficmj7=O#qX7C>h9vu0!jfzQA&Ge%2b_C0-k|A|(Z*6;f4G$L17yh)jmu+{l@T31Vi`31z@CXkFwshXex!uD@yl@XV zY2AN5oVz9Hky~Fy%?e4T4kU zZp|q^Bgi!odNIK6C8btL29b{+IB}twaU|OknYOo=$b|T^66RTGxKzDUN)8)KstwqJ z{^sfrroP#a5&h&OHmu=YyXzr;qF!kOUI`b2vqwhmbr}MYtD$9eKZULSWgr);`o0~# z$-<+*xqJ!%)Q1x#TS|hc@)@d4ASl66Lc@T7dQ}XGLs9w-qWaT0RF6Wya-998mi?Ik zA%^t7)LDL3Ig&$2&9l?uBCCsjH6A#nYW(__LG06r%8knL941MokGKebaf+N{5%g^` zpE}9sTmsXb`~zxYkY7281I`V}PUZ{BjMh+2>ILVh2;Yhmot zP`Smm%+?+%|1wxBlUQs91o4q8Yz@lO(@v&^!_C{8(`PJ*O5!LiWy~juDOSBe60I5b zN2-1!n%?v|skOh<*d6sfwkUzhz}{H93vnAa`rKU^_+BT{W66}};y&PfG&M}b8kK3F zvmQ99Zu}bmxPxS+u3m>~RP#P$bs{~I z{MyzYX})g!8vlqZHQ4V|XJhGJa%2}ABW)d)zj2I_)*SzhvPUfUr|*u?-`~0v?LDNN zB%yFp;PCPcI;amX{?6sw-G;lA0hlk^8EldPC?i3CyD|mX)rWtpgFl<)WoYN9REGpd zCsjjIEz?xG7w#f!lk$)Y3|?EhQ$!^r#|Lc9Et@=#ctdjN7Q?fhfc4Y#XaWTC+Kg@6 zlWAE^OJ&_EKH$vh!?u69(`xwdn zE#B8F;_8=>hsp`^a8}9qfrK?*CNm1{5W(x5!W^1O6zJm6OxF)RTciU z^QE3{G3#b0=0%E6+98`u&BQRC1SK2l?7G%L**E{zq52;LR$;zdDxaHmowE9QZ|n2$ z?Tq-y(A5C`S#`(e z4@%jVymH^ps=IzUuk<1~Z(C7<96SwZq{JOt;!dnYq=-9+8=WPG@#itBrI2?6Y;e_Y ztQ? zaSn?tUT^EsrmnjENK}rMU9S;5g4VNqG;#XdIy&m<`D`mR*tm83&bN2J`~C;})PpBm zALPl$SJ_219pF`ZHoK_Wuuk6&X(U*+d;z5B!Q@9Ujg z-`@RrxRQ5&J35-LuWzk)@$a`!p5UMF*6DToJ9>Tc1HV4meoU|1Px$r8`ginaL%r@i zIYtQ^)cfHOYq`tC*6(61Yx)}uczyGcpFw|Zvy4vOG8+={yn0sTIF$b=rWH=&KMyyc zFFwi0GDwY)n5TJdO15;-4~ST9aab)*1=HfJxGb!mr+QDA4CRBtE6m_1*iaGeAdfzK zY&6wq6;OoegT4haAWHT5W8sgf-dDc(?A>C5;WNS(E`b+Y0!(O1zHM^D0l&A<0b4=k zpHx$4SQ0wAQrB4xO@}o;lGn1r!eKrx>V7`acQ2~kf@>>x28@Bc_GqZz)y-z)RvIHk zu=xkZf!$nNBjY#itqNUkul;Kd^an3i*KU7%cjL|vx7W(LJ45d<-MmWxOu7tuR}UW$ z;qI^b`<$b&cth)TGQP4Qb9et_6PNJj8BIx z)Vn(-)w?!4@JCN?PyU301TJ7yPn&GO|8K$nZ^QrZG+MB#?oT%Gj5)bQ|K6s5??etO zYBK$#r7Ys*2uG)&wzA1XAa^uA|NQ3W>Z4w(jfC>}_m9V<)PorxLPd)UIaL?s#S_lL3hz zSH-kXwt3#EqK_Ynfzb$FjT8#~56ug8hwToMTiFfe`U@#8d7p5POFL64n!bjXr?TmNrP|Om-W??+(V?%+YMd%drbuU6<ESjrw^%zfC|IoVi(C~(4y*9JeNEksBD&0D2=S}0l5%d za<-#*5g$Cgh3S1X;vR!GxC>)KiO)a;0!uOtiLTz{_M3E(bG}vH@on zqD4e`bv8(p{^}iy@ypKEE7GyFt?a#ce()61q!?&>>tF|xq?h8SFMh_7QjWE^`}}9h zC#6;UJC9#H-$tb^C+D+gyXK3Oc)i})`EN-2&P&?f`UO(IzbAO5Cof*@Z5GPX8qoj&TI8^erO}S1Te}xytT8prbNyu|}&Jmckt}(O5;h5-pthXmukz zSOA8@71SQeZXGv4BsB#XAfDD`8=xlca1$(-*F8$*#{%D8s{od`%l^6ja%OT~ZoS%f zXGR=nXkvuuK(y%OGTHFlr5hW$<{$v4DL=aLty1Fn77A`l@ zg2=8ru*9y#yA@UyC~>l;w{S>$3y_xGD3G_+gNtgrJS%5JUzC31W^A+jn1u2ZU|ayf zq9#A3MQY3Rssl@?9WEij)2BPnUhcfw4_$WTSM~0=kqifv`cZcK?p+wp+jqZ>9POUI zc=6w+oy35ITuYQVi0MKv0?zxx?C$pf$;J;r^*6Iy>+81Tvfq0z_I92h?8~hH&e;2f z1_M=of1-re$`jZY`RbB=@<*lnyLL1d43?m6&GrYXeUxmYx1nMZ_>c;;;Mp^3>>hwQ z?j}R=x|n^lp)5zZO|C6+(o6Vm6HrD93DWL!lu5$@Rp!hzfPgjKJ2Xj9SkssA06{>Xjb%AU}(SlLXD6F2lI zBkzOoD2tIJLi*sQ28=1Tw}0)X_Wf4&8ynbDdUDt43zd-FPzlino|0PK^3_v*Te*6T zR*lM)*Qi-(Y^sU_8wXkM)wQa`@OgzecMzbaDCGbrIWuP4U`L zTA%5abQt&!9V0q?HPE4Z@<15kQV%kipil!` zbAp{q_#hW5J<+db}{D#Pw+R!k3eO}F=fqWR`Tiozf z(C*cuW)+pw4P$VE?4;=D7@+dP#y^_mbxoIlu)<3WX28D*pH$l?lu!p!owfQNWJ_fB#b7_z#}Aen5eY zst?{bRP2@DuyE^p96oEPfWIX9vEy$xjDRi&I@(mEA%E-!$~zd?ZG!~2KPi6Py`s?i zI#ESGPb4hvB*_||b@-Ajr^vG)Qj*}SBby#UuTK+oY||6+YN3Ic^2i!=S*i*K9jB=k z+GoF!x6j8d@GOf) zdbXBDCHzIuDSEnV^cU5LVxwx%8h0}PN}eUQt#S4j{IrVyz*9^VTcW`vh34b5SXeKW z$3WIoOw9Fz@tEE1&dr||>{Yc7Pq8%@7e zZ?Yn5SlFk22vav<_wsj}+ZzB*t7RJeOZFY&`mNY5 zvsiYI9&C&wn-2M{SxRUw+}13VnWI%_y6CZnRerBT$?U@!G!9TW#19N;0 z!8P5w`8Ut7pyF8UHn*o5Y-+OU>XwNQQyy1GNsRzCr>k?cu1shjL3vQ~@Dz_7gK|J| z%weC&l+|UX{8H!BcNE!**yg;}*1cZP4K9)r+Ij;=nI&~yDy)~f6Lv%NJ&1XH2v^m! z7mv4|?KnboDs^EbQ$pcdu!VYPky$oNz{Iyxq|Y9Ee{ z>h>xk^`o^A;60BV(3OQ!R!!v&GKLo!Lop7GE?$yunrdRglt*M^Ty`IpKE8T#hiYL$vdY2 z0K5_NrbI=a)25;w2StL0#x&YWKLKUpZpv`j*Bc8qL578hJ;J=u6K~v*V@43h&Qlb8 z9R3?CS)H39s3PWz*E-zTTP9Wx-4}4q^ZoUzV(_EK_UBLJ@Hz5zJQj)6uSG;t_z#k{A;@v)j1V z;lOqfZyRo)%aWADx*K=^EVIpMRORHAbP5V@6u$@%id5>ds2+0pjZDM!_Z@b*t!-Xhq7V@Koy$BzBvgNb{ZGcXPlJ@YYh7~3`gd$d z4xA>^2?j()Q(8E_IbZiVjnsx}jx_*%!w|@PghcbY{N!ZX#$7khCez}yyv#5L8*IVn z(zzIhQ!WbK2#3xY!C6pFzRexmGGj7y9R&f8yo3k(giN6i&hz&G?<~uQu%8aD0Neoc1b`p~K~ zz#j*4BqHLCV4g;c=ZNvAOj3X1iKi*0SW;! zBNl%0IDow{x~J_?h~j))F|>1;m?nvP2oa*@bKq|RKZ5js2>b#;W0>H#d97B`+ilbJ zvsN-7oQ>b!E>L15-H5E3L^oC_+O$cki(zH9)nv$oxzRiKVD+0d9;SpA6#lds7|VR) z7m`WFO&7*qM{Wg}O-ZV-nk{vUcfhPJhZuP0G%ts+eLjjadN+*uRYR|m!zzY1@fzrq zYOypm=TYI9R))mWK-c(UD%5e+dJI-|<*2SvH`qEF19cyP;9W-CI!fI=d zo=lT^hRq)4jo6{sv5ac>?z?I@{^DrXe>N~MCmF?>q|&oi3Xjacr|jHl|7n$+l{(W> z_EN0;X(ljsnIk7yD4%zn3&RFg^yJM`pgyu3FYge} z>w}qG8`0~_|KpMN%i!xDfU3)4X%s;}5jQ^(Etkj0rI9g21D9CajHAi3V*ILj-{>Xl zL|eIavpm#w3-}0PoL`njzlb^(!(&1E>!`de2I?-985SepXo|0G!g1Dri@{8A*( zk6};%=vlgOvYePC_QJ*q(dtDmdiOJlIlE4-utl-RzJQ*BjoWvG${*>vxVr0fucg5nVISdx8 zC-itgijw`S{;)tkzo0;&g}3pkBO*>Dk1EX09VCe1*hXZn#@7p03L<~h>CqC(T*`I|>D*#Dwf!N>IVBt(EPJoA!lo9>eD4_$ZWDlwf{3pavjO}Hs#t6IJE=FB~9rjmN zyrZpoc#&VB+96>s6(C=?S?dllVr5-*vJHBqecKb>oL-;-$9FLQ00+PifOGi!?(5F{TFW#<~KOaUq8-={W*qc7@xh#De28w`MwyxfuVbY zF!pXe=Ird*>rFl$yir~DX4`m8MkhWv>$U16X7A{6YM6f-PvwzW51JWtGbr9{T^RI2 zV~A#i3#5<=V04)SZGD&B%vuVqG3Krd(5h(4s|ZL9RuiUf>lT8`W83!q7{OFEBBjDV zT_^08UpdK2jnfNN6yYC;=5;}FRbXLw7*R9CZ<_C~~&((Dxa5~em*DG{v@Qm>(D$ExEY zN{uPD9>?ndd8y_5S*SB&=goE?j=ZlKc&dq4mWRKh-*N1vq7R*-(NT*5DO>L@t|A0K z?4`RP7NNB**f=!TLuvN-9-qn-x;G=TT(zHy%FQ&`7JXh^riv57MyEqt=><-I9L!(! znxSP7**F*5HeHZy)5V3hZMs0)CJyb9aK5$jnu@%Bt&6;-B07A>HEew@KEu}MB33wM z>+||E8hRZoe9N(b@f;l5$vmVkGOPpy)+R-Efqe{f7R{awF%P@>>(%oUINPE>w2gLy zt4PIfH+h>1O-MY2Gwfs#*;iq!zeTXL0#kd0FyxK%Jad^?JzCyNqh66pz%W<9kH6Lep(R+FAGvTU6;v5yo z_Yy<&1WVE8N`sZOn=>PmBvpQWNncj($VMnYN{NAQX$j8IxtAt^S|H|J>Enms!bC>* z&K@ZDm5;a*C8URi(o+5{nU=MIJN*vU#Gt`JFoOvk{$fZ467pTg2Kq&mxb_DCx)hBa zuxaJWfCweV97|hb4hElThpFSB?Um!}T7eF}SmU2$ggW?g?O(U)!nAAR&ZTz09h+4I zk-NsOH<0^DV$&&>$g{IV9vaY3GB*`ybUho_!RNR636`~kFVO5Vwzb|?f5;=OI?YhT z%w895>za(QoWQet)$o0uO}@^UH>y#_sfFx1O7YOt^t%vO zWe3HS0Lwv~$EMTmk1=lC>0^Cfp3YwDUG4(*xN(#ruT|u2AQ9iSdw}cxeAY6l>sTz{ zWuhE7wi6g&Gxz;wucAK(^Po%+jhSWHn8RL>rHkUgK#tXaZ_Qj zli&rFYmBQuBrI|DXZP!-_w~^I%)b#i8Y9|;DwtMTTbD8>*?*4pb;$9LXptjue&@Y4 zr5^lKY^XBpH~Pp7{2>V~11n}MrL!zJ`Z<`?iXOU`?T|YURN<%eEmBQGHzT>1>@l8O zzF>c$y3g+|RI+qmA#bv$fyvxA8yesKShI1_$nu8c&Q6yw#B=g2u&{f*T;5SRj^=dp z`WkBAUE4l<~tu*mL;~+ zfiGzB9D(c;OvGRRLC{?T4u4(zTMX>~sCoVKjmVc9%Rd#aKV*jg{8jL$j@f@8di{aZ z_(zb7|J$eQ52EjZP+}1e&a#c`ai)tMOE?35J=YT7Y)I!4O@K8D#lARSo8nc&oY&!i zQ3bRytJAXxC;SCWHG*@+wOHt=|A(Mk%^o0P*{|tUA>=q+9|0JjwD;%_@CEUO;BNE> z@kan3Kk$4C=yZ(#qXCb(vxuKTKGBOs{8JpaQn}gV#S%5Sv;EoC$r-rLS?xdGuLd#x z4UQ>dgoCAyV&nKX`_@>{g(wmE&+9`|7b2wO59&bRAjC)Nu-!l2NeC;hSY@D4b;VMv zg~86;sIV-Z1YU1Z3^ck!6|M}ng<6A#z^OWvrKoGa*j;9zebL}|fpluLO3eUu=7lni zn9g|jy*uR;56eUTOhNRg4!j(8dymh2FNuvw8NVCRSg}%RWgiiRz*SVj+Bd^-RiBpC zsQS0zCajv10vS%$wX0!4qV56gRmFJrHFmDJ>=zT)I5kHTR)Bq0OgpOS8iuqS*E3*P zQA=+r1ciUlAwW_LSMM5CB^WlI3{*2GiG7KS`OpEtrHLtZg;dNGy ziwTLV>1!>afxgCLgu*Lli4OXyn|-(R!V=ZRZ?EG@)DdNwxF?4tPJAgh1x`E7-W;55 z<`44cV0g68_2}UA>r+IapE_8P=B;0c*ULe*%&;uy+aXdg%uIY3?M%d!I+3X z{xNc257ui*eX%DoS35C@RMg*2W9h|yej1A>OB&Q*uRGX@<(vTp*<#Lsf=q#%pIC!& zUqFkq1uZV?F-V^t{urM@c8Jr?fc|ZMg?yIyOL!KFax2ZuY;tpm7fZJIZ*feNWTO6X z*F@2wyB-7 zb};KRNB8NM99CXO3w zU?R7y-jIYDOb6Ug4to)hK?Bc9zT&!LwqLf;QZI+|Rg=}E9arQo_H^NE*!8{9Ez)Tt zLIuLrJx#bAc$(J@&IZmu!%@Mz&nWve25!oz^gIS-D)YM-Sg!j7 zr*0xjlef=VJ&o07ayq7kI7~QLu#Y``@$)NDp_2{!j6Gi% z0X5L0dbg`?+!CG~IL;`xjaT(L_k#zp(ZhLu9nR>SCh1fRLPU4K?MbD};2_WJaV%qf}bcZJ~hAH#Ylk)5-P|J*sOqu~yhH*29BCTkIeUt_yO!2^o_2S4zR&(=UQXZD*ObHmej(R(v)s3}h{tIvCcq!+dg#3WcLb z`0tt&xT46bn32c}rBlcYYq;MP#e@=PC2A3$6#aZ&vy>G6PP5{2GA#S$YwPHFgH8NI39uxwI>D<) z5zg@6)OaUT=Y~#J)-;{LH53E+Fx!av)Klj0R1$4{CnJi;`*LqZte-~B1yMNX!dq_P z2pXLL$~`9f;<}Z>{^9D_)QI+2B?wGHK^b~E<+IzSMM;?~@+(&s_|0VAwP_+}HH8Vz zhbGqxewW7LsHj7+3e-13eN$jN`ne-lA-Y3-UmO62nNqJrVn>P-*~j>1EE;>q&qd-fUH*2{H&l08(vLno6AniVNqKI<&U^||NhazJ#q$?kIG>gemxsjC;5T zyNa0iwMp53r!Gcl-cP61h~8;;HQ8Xx$PQPEaW|in@0xM<>}2H_71jJidVqh)R}ZYh z_qb(EtNEF_e<@Mtnm3>#@1L6%nBl-=0%24^KDC$iajO~@c@13H32f6`DQm!u(S;?! znw2v+yuqxMvlYA+#8vG!q#J0%{|d$E zV|X>KVNX|#&Ow7HD7py#c|?Ci>v6j;)z4pH7Y_X~+wmf=KKVewz)%}EF~7FerARlt zIK>|>7k*TvRRH3`0!mTz}Mj|HB6`38{<@RiqwwsBoK$b+e7IT(W;_ zYtfZb15b%6ro1L{;5&)k#^{D-Es}3Z$O&v;yzY}}k-uAR%zo{5)ASL4b0cVPz9qTkQQjI;h31P1m!E`GvicC;IUF`JIM>J+53Cn_QdL0ELibTOZVb}^%SuXIF6t9 zJMiZX|LM+a;_+Z{!%QekAZ#MFvlv|C-3i+vBY_dDP0^uiaCJ_-5q|3csi{?(MCBA( zE^4R43fLWdn@BQvuYf22{wBPbDMfm|x=X~-E3@>zb*UFAOWs?*E*XT4-wst%0x^tK6(xrH zQ|}_5hTghuU+^;vm!R4xZXx?EP78gKRN*=~DY78;kN(Nl6I>JiR@4X}<-&u_Dm-zVV>J zE+=|Uz~3at#cO0lR$%1yRb6T!$Vl7(o_iryyEHImCxpL2F_{*y4;1@IPl}Y0wH$;O zK!c~{ph%ieqcBsg5Dt^925)HgTswpqitU`trjnM$R44GU#U(HzxJhV|sn@5RAlXK9 zjT!IgD4m_BE|T zlyk2!&|S5qQ-gG@Eyt%-Z%Mm(4`rN5@4e~Aut%7#Dn#N+)B{z7lQLGkNsF8B*LP9PTw_eKCVa>&o!J41G|Vj0Wh?eNlLMv#lowJFn;r+CMLc19J)`Yl4%a2w`C( zfxPgS|12_?! zoW+7I_6|_1HJAp-NWI9S<)W;Mb}ycLA)lWZV#5K6T_`=Iie+&Y&4WfNV@uf$FDhUE z!rMXv1vV|Fh$|j(nOxA+GZMnGo{t$rIzIWWmn1(68Rcuzr1ap%s%l_j2`f>~8X2~@ zDCQdDEPpX($(}KmA2j?evByQ4{4AlJmfEXTg94gRNS3&%wfmm4Un#j5?o23i(=sCW zm1PdWNMN}KVLo>|cbmEqlfk90RpNDMSN&L5#EO&bq`Lib+MfgUBN^=MoMgX4Uqe53 z0E-Cq7Tn!6-P?VP4cQ_5NqQ+%wK z+EejW`Y59;@sB{r54X2aSMh$f!4>kW4vI@EI<5Thmz}Lw#~ssNLo@~~pZbc;u|_4s z-*kY~IUl0FdUMv6&a1TBQ+K&e39Y1w;=e_(SeUeq=JiVL?LK?9>lAG#M-ayldz1dY znOW#99;k$e*|$G50R`wlIh*oqijJBFbi$$runErFoNLn`7ts}w`Y`+9hXw6%r%ahe znK!fUM)brI7L2UkH+p$)n=s5VbZePad_TjrgFQ1z4{4DshNA>F_xro+8`3i+ zB(KA-OaJlXYj^-&R6lpuv(@YX{;!ia#e?_UgEEkF)qGgRTGWHW5!`-?%UJ=(k-=_V zy^1*_UHj+JQGK)3dbD}C+C4rx8vK6u;|Kh6=VQAIsqhH@b@|VS*Y;IEf8am%sojQR zt%DC)yTu9cx*2&o>~*lc)%GL$UrV*GvOQ9jJ^Fy~{R6XnvnKY?le{kbpVBGQC$~#Y zJ^B#qQuy$B9h&{7t;yH^@gY%E<_8o*JzsJO;`aV<{mb(jTvyI2{$!A6B(6B&h zYt*CxK~%4(9b`o{@F=oAeY!asZPs;fAAYKB_;1tsb9B_hr4{L$F5YP>-dRvMRW4N| z$REv!mPlT&-2c*j!lIpY(R6>5^;4uwBDZ$S_qT2_&TM8+DzwI#<>e3!RQR5?-dtOoRn@TWmBs9|S542> z&S#_H+Vr%KMZc~KI*N5~_il^bnLmbG1Cnw$pL{r&7av|1gAWJi^AAs^<%j)z_F;cM zZg&9Cy8Wm{E5CE=V;f#uf6d1qo)jk^_VVe6t;rPrUVZrMd<_2|e%P9yeb_H1A71ol zAD&n5KWrC$Dnl!`bLXReK@z^HACRu==Qg&8VEugX;itWW4~ILC_g)?!?r$F-v_G^C z|MA-~{!zpT>T5e2M|D!aI6bY4S?wB~;P2;y%|Oi=S_l(&wjr^5C%c*54L|DqMS zC5f3a`1+Sh@7CHb2X+snjrSm6%z8jE`z1RA`h<*0UiMUz;?dg`v-%#>H)79a0vuT2zPQcpW_!jfP% zh-R(nJ-K7f(%|s9XYtXFNAPz1MmsWP8gCX(nQlOr38(FL!?fX#Zl5tDjJ!27T{$4t z@OqN>6PHBzv#SRkaGPpi#ja%J*GYnvL0bS1dv#a z42$XLGv7kkbUE-xVc?xO2GZF5Ca9~)og6<+9|5$Lf2_ntrcv$ZPZ@sQ$SG^0>VaQ% z5CxHyaJ6N+#7R*#MBEbhY3tb9ALdtc~3?_Rs`roD{GE)1saaXW@}%K87s{!(kUF=W8ht{arg{ z(%Mr|yIQ&^T*ZAnNEKvOiH2va^o?dq)evp_(M}II4cyk$@tjp&Mljyx zWLR|RQ_X5pd4`M^szsEg@&xcB-1VK$`iHku3_9mgADKl*>lj&9v_8Nl% zpHYCDAZD+a2Qv`JKs!B&?&7JVg(|sM*7|%FIcDJRx=c#+bE7hYblMZ5Za(bKhcG#O z2Yko!yo2`B7cF;z6=3>IPER?-pxksYz;HTbuZ6J(tv(l z8`u~vb0CW_5|ES=-Uwe?aOW-mVxwl8gK- zyI9DXnK4&fb!6PDDGAFix#Sa5e9MxW- zn8gMhT4!QPUBTX2RV7a)w&xwFrk0S=+o;8kaV0?4CrO7r9;1v30BV z!RQfN&c4~=S5>jY&>uvA#tsTcg{2-y!Nh18R{)#R3G@mqocU!z^r-277MK!*NbF-d zbqyGvQi^?o{+hCUHY-Mx8EL>~?9%gzLSMJUc~!ludrTZ?axt&Y8awoRE32_QF{{cD zQS1~eWXKC=9L33%Y`I;cPYcLgosG-iAX!Z!E<->$wJf!HAlaw_wcxdeOS2|5WYqut zwPsvzM{EUG*vXn|a#{>a_W97CR&`DGCnwYDqDG}}+{oX<12jk(J~Q}#)}QUxMBSyLE$M(_0|(y;ZL`t_VOn%RwQqUvD02& zR{C5bqgst_zT?J`Ka^Dnpq#2T08Sz|7SjrcF@p6x!&5lB)j<;=TF5<<$9U4x*94<- zIwd4Vllo~sD##!NqdH!gLO@E2O(Gubq5v%u*yMraMMxbC7lBlT3{4c?Yrj}{RDwbi zAVcW#l54VX9b!!#7ItCVZSN~~@1Xj*4wdc=`AQ&lk{hs)Ap4tGuTFDoYbvM|4KTS3(gZ50OB~V*<-viuYNaXtz*@H1Pf9C0#la1>CCHLkm&?a&6eAce&ne|?cTJaOJ>Sb#SIZ-`hjY3OKxvc*eq(&MB!uY|Cc6#%BMuMRSis{3aFOfi zPEclT=-Xoy#t@LV?pV!dmprAwZM5zXt4I6YCgY5BKI3S6K|aS2!J{zA!A0+W+az3z zkdL5Cu6Q&&^fGrJGV%_+!AYQZd}%8gklS#?!5mG$=#T)!+tP&+6a(N^^hgMlH2t}1 zd3QUTZYF&h;GoDB0&cup1F=Ban9}tkU+CEZa&dgUF`xBWc$W2n?>i}!Uz&kaBVEpr zQ0^a4W6#AlDUwTVgI_>Y7M)$$zQUM><*Jdzgy;(DLoV1Xu#vj_KpLT_E;2UDthI}j ze?OCvmftlOP*XVn+ zAg_Qk9p_VT|0PG9=dQDJu^hJ@ywXIkqd}GD0K-MWuB#`&vEx}y8HsjqaUwr@N%8`^ zPa=Q!Or?UVaw@AtGKj4jC}sNHB50}VHK=(_69z<)4zdhEjoc7c>)Y$=`IT&Kxc%YW zM2^2c{~IX?)ib`e7zVn{#iQ&-C%e<`xr_?_e8!G0jRkOk7Em~riz&0nxD&}JZdkRA zr+$5yeHZ1CJjd+w8=`3oD~dDH1ofghwe*5$Tm0C>^s~_=ik{1E7X=MO?Z@-c35hu=)W*0j z2gMZDA$c8kw*ha$aX5Q}d*OE%ht^#jx|>w8TMCcx=j*}QOX-W=LZ>iYTy_=EI8ooEU| z0G0PVH8PoVAVmq{SDc-K5#=yIwluQ z6+5@9vS#@3MqU1Q#^KVp&qLzr)S1zkAokS1ho!N4ab6+mZPzI zA-r%xEQ3rF<(HhCXbdT^&?F&CJEfzcJDdq#K7GrIznIu_QGoV-d zNQdIirYv>*cc~rdt$PeTR>u;3>!5e#WKs;GHbc)itiS{H8aJ<*RWlWShXFB#e0`>3 zn#bTl^9m=lH$m=;a^U2Zdn*L+r{i&2ZROpb7as1N6oRcL>m_I6b<;S<#>-R@{6%*UhlbwyJXpm&?>2y?%6eD40hagoX~n+7qv; zKVdB~pc3m~^+BY@H1mQ#+)hZsO9f5*8H!$)y@R9Rn6WIJ^-~*V`H9+S>O;z#HaJ;? zDfnANCQ}Nh&BiCqsK6_iae=z9Bqrp80b2PSRCJ4m`-ZceVhYv%bOgSNl@<(&(Qhmo zug~mN%6~XY7Y3*(j{)`&)#qb|MBQ|%rKgw~$#OISg`o)RXT|9Z8B?F;I-5W@f#9Aj z$k{2PgkX6Bz^0{5g2Ey4mTxw0os$R!0ia-mur1$zkZs&rMowt_IAMW60Jt!q=>z5w z8f5R<`BRg~eR14WBcx0XN2&@&6688w(jn3cCvqL}XqgDEB9yT%uaoXMb8-&b^sq2d zJ(|nScps0seud>9~5QsohufPS~#3sW__8?93rhYIA%)d~_(Vm(- z;SiLrAG6*E9Y~Q)@=GNbK|)_bWOtpxx!*$}vp*$j@UtnhszkcgRH=KN7pXEaJ1Lz{ILg~e0`s9(ClcJvOk&c{yg6daOU_yQ@ zLf-{(g`|Bf;C-UlseI^pf+0&Hjq}%CR}D8x4^R2HV-8O#4+t_hdH7q}8Nyh=+k9>8 zXnH=+pI=YY+dr9Eh!g4pVuT~8?T>PTp|vIqiOMztt2kXR~p|kU$i%oQC&t22^~0*C~L|=@5Wb(!6lKM)*?}?FLK0r z1{5S8&aT*r@;N(qHkM3L99RvvchMb}D~?>2U^~Ree|i(nX+UwyH?xiPptYt-YK73U z;pm**2q;DJIG8vxTWV&MXi`2yong4|6ipTJaV2u%P8}j0$o!Fr6|fXrNu_x-6S;9n zeCQhec*JOO;-&j5u$0-}xzF&}HdTiVN z9L-!EkJkjNg3lZZ`kk|8AoH(3h%!20&lk6oum1X z5}93NtD|<<1XDI8?|sNdF!r?Evkn@c=F`HhBQQ&VO45o;sLC}Muo+!ekMN$Q7*pWs zd`f%T_Wps7S9K3|rPf9#TNwn-OJrlq9O|tfisWELdl{V1l-N0SuW+haHp4MQCQw8j z^b%mzT5t8{n~Ma*IxrY^1JM%8ATn!av!a1d;wZ<6vde5|>vyV^1W21Kl=+xEH;WjD zq9r~ntfY$M$rWj>;060)$-2H@_XOHO)u@AYKbLL z){1{=>_*7vq-uLk8dIs-U^gRaiQozR6HIcV7q7z4wbS*sf7(r6OySJS0CdzQ)zKlp zlubJ@Ikj(3h-;}2T@Wf7__IXF%I#qf5=n6zYjyeaK;`r%-0YnTcXJWsQMNCV7PKD? zOJX+VrP_DP`UprnuS(j%yFG(S{>jZ-fM(0qXIYjU369Y3l%{nFsP!Y@ta4A(m*&)? zc})R=2dG|8!o`bRhnZHzw42_ua&|sHA?sx}X4QYnx}F#H+Qyw*!bfi(P1?73-{o-# z&u@Jxp27V5NPpdI!`P(t1tZ}mpT=;kZ*CtSC``B)+kgU|c@clj`lXF)D;9$0x~r2> z+J^;K=ww>WD%>CT%5lODAAc)6U9C2rZ;%f+83*hFWi%mWN?Gv-#z6GmCSVo>`pt|LbP<;eX7`-V=8&93va;=Izq#E?TG9}&f{7_l))Lp8pihzX3% zk8o-lcQjBjkp(a;9$T+6%dK;RcVgaR)%U~oh#y$p`v;lL72iqe*yA?Ue6Cgo2=Urj z_7ZK=+|F$9?Tp)I+~iaOcUT^a67 zrZY{49(hv_^rjU|Hc$!*FLBHVj~+$=Z5i^>$=2Jkom^qjN?HF{z)%(|L~#3P6{fvI|+mQ%6UimsappLQk^6|E_u1kF-oUf|FmXc;AB0Yl1esXbf`S> zuJBz=%*W;IX)bnsiWvB442h;Uca~)znoT+ z)~J(F)W=w$up5c1Bc*1^7^opr_1vJ)S;;VWtr3M+6gN)U4LIcH&(()m?73xvkuB{9 zGeXqVm9rl0G&vg`>dpcwN~>SGbG?W)V32A1H2y1LDUQ2ny?BP!3@JVwBJ@s;ou$&3|IpJJtm zsK&~$FN;Wt3uO`I7a$8P$nU2stKC>t=uIV36W*^yaw9R1Whb?!Sl8IzJ=Qn+5-X!* zXOS}eCEkt|x5xN-~4A@1t-;xWf z+mBV}<7#|hZe|-f(T3pt!^%hS_>%xdY#lsgq6E?=C(-hEL`-;pMpxn4xWJY(!$&+wWb4mcwiYIOEB zD~4D8?5Xv#N`F_?O1znUch6~Zmku}O$hh-D&2ct?1ay2-&~b?zoNp|TEDyg`mnW|pG~&HqKk zXJ27mJ6)!x>@!S3^)g4Mz9Gqh!o zq8*jHO7elaPIjz-*6F_nX&@a#**nJrUjD{SPt>1eU7jJ@t*rVnc*wgwR}@>N_%rQv z`6*~9H^>MZA2-Z*yt6}O*@;n{MZ$^1RWvZ^fU;sR* z%0nPYKLUEHrgh~XE1hg*(zO#dM?zOlU_krtV&IRp9XI!4{JbStG zYG0%nr&Rs(`S@KiH6K=1H_(^aO7<{2T-jKMu4OCmdTcXvH@>|M-zft;W9M(140Pv; zRld;Jyw*BAI$AwC>K^Mb%)nuV0+M(Ki>Wq5O}Hbktrcy?fufW#tt##>Qi3fspPu

    {@Sf&<2W!>o+zuW78hO>Jr%>v2F^epn6$|X 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

    wFn-tUvtYq?0c^)NR1O&X-diBJEU0`B2|D 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�GIiCOVAKxQXHC6M$_r04Tk$CG=WLINDgI| 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 W-T(UE|Mh?V>;D2-ab1xM-WUKG6|n;V literal 380171 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

    e_xBeyVKY}pGasLBevwoMK+Ak^dX2}Xb-aZP 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 z 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 dfsTw&CTuBdR`Y-U

    O&IPBZ5*~xkcNSzKNu2TNhT# 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