diff --git a/.gitignore b/.gitignore
index 34c02e69..25f6fcf4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,5 @@ terraform/.terraform/environment
terraform/*.tfstate.backup
terraform/*.tfstate
*~
+.DS_Store
+AGENTS.md
\ No newline at end of file
diff --git a/client/npm-shrinkwrap.json b/client/npm-shrinkwrap.json
index 9937fa03..34f7ff32 100644
--- a/client/npm-shrinkwrap.json
+++ b/client/npm-shrinkwrap.json
@@ -39,6 +39,94 @@
"uglifyify": "^5.0.2"
}
},
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/compat-data": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
+ "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
+ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helpers": "^7.28.6",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/traverse": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
+ }
+ },
+ "node_modules/@babel/core/node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "license": "MIT",
+ "peer": true
+ },
+ "node_modules/@babel/core/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/generator": {
+ "version": "7.29.1",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
+ "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-annotate-as-pure": {
"version": "7.12.10",
"resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz",
@@ -66,12 +154,88 @@
"@babel/types": "^7.12.11"
}
},
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
+ "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/compat-data": "^7.28.6",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "license": "ISC",
+ "peer": true,
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "license": "ISC",
+ "peer": true,
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/@babel/helper-compilation-targets/node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "license": "ISC",
+ "peer": true
+ },
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-module-imports": {
- "version": "7.12.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz",
- "integrity": "sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
+ "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
+ "license": "MIT",
"dependencies": {
- "@babel/types": "^7.12.5"
+ "@babel/traverse": "^7.28.6",
+ "@babel/types": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
+ "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
"node_modules/@babel/helper-plugin-utils": {
@@ -79,10 +243,62 @@
"resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz",
"integrity": "sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg=="
},
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz",
- "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw=="
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.29.2",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz",
+ "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/parser": {
+ "version": "7.29.2",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
+ "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.29.0"
+ },
+ "bin": {
+ "parser": "bin/babel-parser.js"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
},
"node_modules/@babel/plugin-syntax-jsx": {
"version": "7.12.1",
@@ -131,20 +347,50 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
},
- "node_modules/@babel/types": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.11.tgz",
- "integrity": "sha512-ukA9SQtKThINm++CX1CwmliMrE54J6nIYB5XTwL5f/CLFW9owfls+YSU8tVW15RQ2w+a3fSbPjC6HdQNtWZkiA==",
+ "node_modules/@babel/template": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/traverse": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
+ "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
+ "license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.12.11",
- "lodash": "^4.17.19",
- "to-fast-properties": "^2.0.0"
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0",
+ "debug": "^4.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/@babel/types/node_modules/lodash": {
- "version": "4.17.20",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz",
- "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA=="
+ "node_modules/@babel/types": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
"node_modules/@cycle/dom": {
"version": "22.8.0",
@@ -314,6 +560,52 @@
"xstream": "*"
}
},
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
+ }
+ },
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "license": "MIT"
+ },
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
+ }
+ },
"node_modules/@most/multicast": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/@most/multicast/-/multicast-1.3.0.tgz",
@@ -445,6 +737,19 @@
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
"integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g=="
},
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.10.16",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.16.tgz",
+ "integrity": "sha512-Lyf3aK28zpsD1yQMiiHD4RvVb6UdMoo8xzG2XzFIfR9luPzOpcBlAsT/qfB1XWS1bxWT+UtE4WmQgsp297FYOA==",
+ "license": "Apache-2.0",
+ "peer": true,
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
"node_modules/basic-l10n": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/basic-l10n/-/basic-l10n-2.0.0.tgz",
@@ -514,6 +819,40 @@
"resolved": "https://registry.npmjs.org/browserify-package-json/-/browserify-package-json-1.0.1.tgz",
"integrity": "sha1-mN3oqlxWH9bT/km7qhArdLOW/eo="
},
+ "node_modules/browserslist": {
+ "version": "4.28.2",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz",
+ "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "baseline-browser-mapping": "^2.10.12",
+ "caniuse-lite": "^1.0.30001782",
+ "electron-to-chromium": "^1.5.328",
+ "node-releases": "^2.0.36",
+ "update-browserslist-db": "^1.2.3"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
"node_modules/bs58": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz",
@@ -589,6 +928,27 @@
"node": ">=6"
}
},
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001787",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001787.tgz",
+ "integrity": "sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0",
+ "peer": true
+ },
"node_modules/cipher-base": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
@@ -782,6 +1142,13 @@
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz",
"integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs="
},
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.334",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.334.tgz",
+ "integrity": "sha512-mgjZAz7Jyx1SRCwEpy9wefDS7GvNPazLthHg8eQMJ76wBdGQQDW33TCrUTvQ4wzpmOrv2zrFoD3oNufMdyMpog==",
+ "license": "ISC",
+ "peer": true
+ },
"node_modules/emoji-regex": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
@@ -804,6 +1171,16 @@
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.5.tgz",
"integrity": "sha512-n6wvpdE43VFtJq+lUDYDBFUwV8TZbuGXLV4D6wKafg13ldznKsyEvatubnmUe31zcvelSzOHF+XbaT+Bl9ObDg=="
},
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/esprima": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
@@ -905,6 +1282,16 @@
"node": ">=4"
}
},
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "license": "MIT",
+ "peer": true,
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
"node_modules/get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
@@ -1016,6 +1403,31 @@
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
},
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "license": "MIT",
+ "peer": true,
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/jsonparse": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
@@ -1201,6 +1613,13 @@
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="
},
+ "node_modules/node-releases": {
+ "version": "2.0.37",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz",
+ "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==",
+ "license": "MIT",
+ "peer": true
+ },
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -1268,6 +1687,12 @@
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.0.tgz",
"integrity": "sha512-f66KywYG6+43afgE/8j/GoiNyygk/bnoCbps++3ErRKsIYkGGupyv07R2Ok5m9i67Iqc+T2g1eAUGUPzWhYTyg=="
},
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
"node_modules/pngjs": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
@@ -1276,6 +1701,18 @@
"node": ">=4.0.0"
}
},
+ "node_modules/popper.js": {
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz",
+ "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==",
+ "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1",
+ "license": "MIT",
+ "peer": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/popperjs"
+ }
+ },
"node_modules/process-nextick-args": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
@@ -1653,14 +2090,6 @@
"xtend": "~4.0.1"
}
},
- "node_modules/to-fast-properties": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
- "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
- "engines": {
- "node": ">=4"
- }
- },
"node_modules/tree-selector": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/tree-selector/-/tree-selector-2.1.1.tgz",
@@ -1696,6 +2125,37 @@
"umd": "bin/cli.js"
}
},
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "peer": true,
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
+ }
+ },
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
diff --git a/client/src/app.js b/client/src/app.js
index 9c354b90..6b91318f 100644
--- a/client/src/app.js
+++ b/client/src/app.js
@@ -260,7 +260,7 @@ export default function main({ DOM, HTTP, route, storage, scanner: scan$, search
// Page title
, title$ = O.merge(page$.mapTo(null)
- , goAPILanding$.withLatestFrom(t$, (_, t) => t`Explorer API`)
+ , goAPILanding$.mapTo(process.env.API_LANDING_TITLE || 'API Access')
, block$.filter(notNully).withLatestFrom(t$, (block, t) => t`Block #${block.height}: ${block.id}`)
, tx$.filter(notNully).withLatestFrom(t$, (tx, t) => t`Transaction: ${tx.txid}`)
, addr$.filter(notNully).withLatestFrom(goAddr$, t$, (_, goAddr, t) => t`Address: ${goAddr.display_addr}`)
diff --git a/client/src/views/lander.js b/client/src/views/lander.js
index 0be96afc..8bcc7f33 100644
--- a/client/src/views/lander.js
+++ b/client/src/views/lander.js
@@ -2,214 +2,34 @@ import Snabbdom from 'snabbdom-pragma'
import layout from './layout'
const staticRoot = process.env.STATIC_ROOT || ''
+const siteTitle = process.env.SITE_TITLE || 'Block Explorer'
+const apiTitle = process.env.API_LANDING_TITLE || 'API Access'
+const apiDescription = process.env.API_LANDING_BODY || 'Public REST API endpoints are available through the explorer. Documentation and integration guides are coming soon.'
+const primaryUrl = process.env.API_DOCS_URL || process.env.WEBSITE_URL
+const primaryLabel = process.env.API_DOCS_URL ? 'VIEW API DOCS' : 'VISIT HASHCASH'
-const logoSources = {
- dark: {
- sideswap: `${staticRoot}img/logos/sideswap.svg`,
- sparrow: `${staticRoot}img/logos/sparrow.png`,
- blockstreamApp: `${staticRoot}img/logos/app_logo_darkmode.svg`,
- lwk: `${staticRoot}img/logos/lwk.svg`,
- aqua: `${staticRoot}img/logos/aqua.svg`,
- bitcoinDevKit: `${staticRoot}img/logos/bitcoin-dev-kit.svg`,
- nunchuk: `${staticRoot}img/logos/nunchuk.svg`,
- },
- light: {
- sideswap: `${staticRoot}img/logos/sideswap-dark.svg`,
- sparrow: `${staticRoot}img/logos/sparrow-dark.png`,
- blockstreamApp: `${staticRoot}img/logos/app_logo_lightmode.svg`,
- lwk: `${staticRoot}img/logos/lwk-dark.svg`,
- aqua: `${staticRoot}img/logos/aqua-dark.svg`,
- bitcoinDevKit: `${staticRoot}img/logos/bitcoin-dev-kit-dark.svg`,
- nunchuk: `${staticRoot}img/logos/nunchuk-dark.svg`,
- }
-}
-
-const LandingPage = ({ t, theme, ...S }) => {
- const logos = logoSources[theme || 'dark']
+const LandingPage = ({ t, ...S }) => {
return layout(
-
-
-
-
-
-
+
+
+
+
+
-
-
-
Build on Bitcoin at Scale
-
Let the Blockstream Explorer API handle the blockchain backend for you.
-Faster, always available, and easy to integrate into wallets, exchanges, and fintech platforms.
-
GET YOUR API KEY
-
-
-
-
-
-
-
-
-
-
-
-
WHY EXPLORER API
-
High performance service - optimized for scaling and uptime
-
Proven in production, and trusted by some of the biggest names in the industry, our API is built to handle demanding workloads so your team can focus on growth.
-
-
-
-
-
Plug in and Scale
-
Innovate without the burden of backend systems.
-
-
-
-
Always Online
-
99.9% uptime SLA guarantee.
-
-
-
-
Privacy and Security
-
No persistent logging and end-to-end encryption.
-
-
-
-
-
FEATURES
-
Explorer handles millions of requests on globally distributed infrastructure so your services are always online
-
-
-
-
Built on the battle-tested and well-maintained Esplora stack.
-
-
-
-
Access Bitcoin mainnet, testnet, and Liquid network data.
-
-
-
-
API designed for developers with up-to-date documentation.
-
-
-
-
Enterprise reliability from one of the most experienced teams in Bitcoin.
-
-
-
-
Blockstream runs the infrastructure so your team can focus on product.
-
-
-
-
Pre-indexed blockchain data makes applications run faster
-
+
+
+
{apiTitle}
+
{apiDescription}
+ { primaryUrl ?
{primaryLabel} : "" }
-
-
-
-
-
-
-
-
-
HTTP REST API for Bitcoin and Liquid
-
Instant API keys, clear docs, and well-maintained repos make integration seamless. Access UTXOs, balances, mempool, and fee data through low-latency REST endpoints.
-
EXPLORE DOCUMENTATION
-
-
-
-
-
-
-
-
-
-
-
OUR OFFER
-
Pricing
-
-
-
-
-
Basic
-
-
- Basic support and access to help center
- Quick sync access (10 credits per call)
- SLA 99.9%
-
-
-
500k API credits for $40
-
-
GET YOUR API KEY NOW
-
-
-
-
-
Advanced
-
-
- Advanced support with 24h-48h response
- Quick sync access (5 credits per call)
- Early access to new features
- Propose new features
- SLA 99.9%
-
-
-
1M API credits for $100
-
5M API credits for $499
-
10M API credits for $999
-
-
GET YOUR API KEY NOW
-
-
-
-
-
Enterprise
-
-
- Optional custom agreements and dedicated servers
- Dedicated support
- Quick sync access (1 credit per call)
- First access to new features
- SLA 99.9%
-
-
-
Contact us now if you are looking for more tailored plans designed for high-volume and enterprise-grade applications.
-
-
CONTACT US
-
-
+
+
+
+
, { t, activeTab: 'apiLanding', ...S })
}
-export default LandingPage
\ No newline at end of file
+export default LandingPage
diff --git a/client/src/views/nav-toggle.js b/client/src/views/nav-toggle.js
index 4386defb..4d9d28ef 100644
--- a/client/src/views/nav-toggle.js
+++ b/client/src/views/nav-toggle.js
@@ -2,9 +2,10 @@ import Snabbdom from 'snabbdom-pragma'
import { nativeAssetId } from '../const'
import { updateQuery } from '../util'
-const staticRoot = process.env.STATIC_ROOT || ''
const hasCam = process.browser && navigator.mediaDevices && navigator.mediaDevices.getUserMedia
const otherTheme = { dark: 'light', light: 'dark' }
+const utilityLinks = process.env.UTILITY_LINKS ? JSON.parse(process.env.UTILITY_LINKS) : {}
+const brandName = process.env.BRAND_NAME || 'Explorer'
export default (t, theme, page) =>
@@ -20,75 +21,25 @@ export default (t, theme, page) =>
:
}
-
-
Explorers
-
-
Developer Tools
+
Explorer
-
-
-
+ { Object.keys(utilityLinks).length > 0 &&
+
+
{brandName}
+
+ { Object.entries(utilityLinks).map(([ label, url ]) =>
+ {label}
+ ) }
+
+
+ }
diff --git a/client/src/views/sub-navbar.js b/client/src/views/sub-navbar.js
index 3598ecc8..dc31b6e2 100644
--- a/client/src/views/sub-navbar.js
+++ b/client/src/views/sub-navbar.js
@@ -1,6 +1,9 @@
import Snabbdom from 'snabbdom-pragma'
import search from './search'
+const showApiLanding = process.env.HIDE_API_LANDING !== '1'
+const apiLandingLabel = process.env.API_LANDING_LABEL || 'API'
+
export default ( t, isTouch, activeTab) =>
{ search({ t, autofocus: !isTouch }) }
-
\ No newline at end of file
+
diff --git a/flavors/bitcoin-mainnet/config.env b/flavors/bitcoin-mainnet/config.env
index 59974394..b2a93eae 100755
--- a/flavors/bitcoin-mainnet/config.env
+++ b/flavors/bitcoin-mainnet/config.env
@@ -1,7 +1,8 @@
#!/bin/bash
-export SITE_TITLE='Bitcoin Explorer'
-export HOME_TITLE='Bitcoin Explorer'
-export NATIVE_ASSET_LABEL=BTC
-export NATIVE_ASSET_NAME=Bitcoin
-export MENU_ACTIVE='Bitcoin'
+export SITE_TITLE='HashCash Block Explorer'
+export HOME_TITLE='HashCash Block Explorer'
+export NATIVE_ASSET_LABEL=HCASH
+export NATIVE_ASSET_NAME=HashCash
+
+source flavors/hashcash/common.env
diff --git a/flavors/bitcoin-testnet/config.env b/flavors/bitcoin-testnet/config.env
index 87744af3..e12eb16d 100755
--- a/flavors/bitcoin-testnet/config.env
+++ b/flavors/bitcoin-testnet/config.env
@@ -1,12 +1,12 @@
#!/bin/bash
-export SITE_TITLE='Bitcoin Testnet Explorer'
-export HOME_TITLE='Bitcoin Testnet Explorer'
-export NATIVE_ASSET_LABEL=tBTC
-export NATIVE_ASSET_NAME='Bitcoin Testnet'
-
-export MENU_ACTIVE='Bitcoin Testnet'
-export BASE_HREF=${BASE_HREF:-'/testnet/'}
+export SITE_TITLE='HashCash Testnet Block Explorer'
+export HOME_TITLE='HashCash Testnet Block Explorer'
+export NATIVE_ASSET_LABEL=HCASH
+export NATIVE_ASSET_NAME='HashCash Testnet'
+export BASE_HREF=${BASE_HREF:-'/'}
export CUSTOM_ASSETS="$CUSTOM_ASSETS flavors/bitcoin-testnet/www/*"
export CUSTOM_CSS="$CUSTOM_CSS flavors/bitcoin-testnet/extras.css"
+
+source flavors/hashcash/common.env
diff --git a/flavors/hashcash/common.env b/flavors/hashcash/common.env
new file mode 100644
index 00000000..abbee2d0
--- /dev/null
+++ b/flavors/hashcash/common.env
@@ -0,0 +1,43 @@
+export BRAND_NAME='HashCash'
+export WEBSITE_URL='https://hashcash.club'
+export SITE_DESC='HashCash Block Explorer for mainnet and testnet. Search blocks, transactions, addresses, and blockchain data on HCASH.'
+export SITE_FOOTER='© 2026 HashCash. Powered by Esplora.'
+export OG_TITLE="${SITE_TITLE}"
+export API_LANDING_TITLE='HashCash API'
+export API_LANDING_BODY='Public REST API endpoints are available through the explorer. Documentation and integration guides are coming soon.'
+
+YESJS_BASE_HREF="${BASE_HREF//\/nojs\//\/}"
+if [[ "${SITE_TITLE}" == *Testnet* ]]; then
+ export CANONICAL_URL="https://explorer.hcash-dev.network${YESJS_BASE_HREF:-/}"
+else
+ export CANONICAL_URL="https://explorer.hcash.network${YESJS_BASE_HREF:-/}"
+fi
+
+export FOOTER_LINKS='{
+ "/img/favicon.png": "https://hashcash.club",
+ "/img/github_blue.png": "https://github.com/ClubHashCash"
+}'
+
+export UTILITY_LINKS='{
+ "Website": "https://hashcash.club",
+ "GitHub": "https://github.com/ClubHashCash"
+}'
+
+export HEAD_HTML="$(cat <
+
+
+
+
+
+
+
+EOF
+)"
+
+export CUSTOM_ASSETS="$CUSTOM_ASSETS flavors/hashcash/www/*"
+export CUSTOM_CSS="$CUSTOM_CSS flavors/hashcash/extras.css"
+
+export NOSCRIPT_REDIR=1
+export NAVBAR_HTML=1
+export HIDE_API_LANDING=1
diff --git a/flavors/hashcash/extras.css b/flavors/hashcash/extras.css
new file mode 100644
index 00000000..e3224ccc
--- /dev/null
+++ b/flavors/hashcash/extras.css
@@ -0,0 +1,115 @@
+body.theme-dark {
+ background-color: #0F1113;
+ background-image:
+ radial-gradient(circle at top right, rgba(198, 0, 1, 0.18), transparent 32%),
+ radial-gradient(circle at bottom left, rgba(198, 0, 1, 0.1), transparent 28%);
+}
+
+.theme-light {
+ background-color: #F7F4F4;
+}
+
+.navbar-brand::before {
+ background: url(img/icons/explorer_logo.svg);
+ background-size: contain;
+ width: 290px;
+ height: 54px;
+ margin: 0;
+ background-repeat: no-repeat;
+}
+
+.theme-light .navbar-brand::before {
+ background: url(img/icons/explorer_dark_logo.svg);
+ background-repeat: no-repeat;
+ background-size: contain;
+ width: 290px;
+ height: 54px;
+ margin: 0;
+}
+
+.main-nav .nav-item.active .nav-link,
+.main-nav .nav-link:hover,
+.sub-nav a.active,
+.sub-nav a:hover,
+.highlight,
+.highlighted-text,
+.pagination .control a,
+.pagination .control a:link,
+.pagination .control a:visited,
+.pagination .control a:hover,
+.pagination .control a:focus {
+ color: #C60001 !important;
+}
+
+.table-title:after,
+.block-header-title:after,
+.transaction-header-title:after,
+.asset-page h1:after {
+ background-color: #C60001;
+}
+
+.primary-btn,
+.primary-btn:link,
+.primary-btn:visited,
+.primary-btn:hover,
+.primary-btn:focus {
+ background: #C60001;
+ border-color: #C60001;
+ color: #FFFFFF !important;
+}
+
+.primary-btn:hover,
+.primary-btn:focus {
+ background: #9F0707;
+ border-color: #9F0707;
+}
+
+.search-bar,
+.sub-navbar,
+.toggle-container .toggle-menu,
+.blocks-table,
+.transactions-table,
+.stats-table,
+.transaction-box,
+.assets-table,
+.explorer-container > .footer {
+ border-color: #2A2F36;
+}
+
+.search-bar-input:focus {
+ box-shadow: 0 0 0 1px rgba(198, 0, 1, 0.35);
+}
+
+.footer_container_content_row_social-media_link:hover {
+ border-color: #C60001;
+}
+
+.theme-light .sub-navbar,
+.theme-light .search-bar,
+.theme-light .toggle-container .toggle-menu,
+.theme-light .blocks-table,
+.theme-light .transactions-table,
+.theme-light .stats-table,
+.theme-light .transaction-box,
+.theme-light .assets-table,
+.theme-light .explorer-container > .footer {
+ border-color: #E6DADA;
+}
+
+@media only screen and (max-width: 900px) {
+ .theme-light .navbar-brand::before,
+ .navbar-brand::before {
+ background-size: 54px 54px;
+ width: 54px;
+ }
+
+ .theme-light .navbar-brand::before {
+ background: url(img/icons/dark-logo-icon.svg);
+ background-repeat: no-repeat;
+ }
+
+ .navbar-brand::before {
+ background: url(img/icons/light-logo-icon.svg);
+ background-repeat: no-repeat;
+ }
+}
diff --git a/flavors/hashcash/www/img/favicon.png b/flavors/hashcash/www/img/favicon.png
new file mode 100644
index 00000000..8496ae6c
Binary files /dev/null and b/flavors/hashcash/www/img/favicon.png differ
diff --git a/flavors/hashcash/www/img/icons/HashCash-menu-logo.svg b/flavors/hashcash/www/img/icons/HashCash-menu-logo.svg
new file mode 100644
index 00000000..69c10af0
--- /dev/null
+++ b/flavors/hashcash/www/img/icons/HashCash-menu-logo.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/flavors/hashcash/www/img/icons/HashCashTestnet-menu-logo.svg b/flavors/hashcash/www/img/icons/HashCashTestnet-menu-logo.svg
new file mode 100644
index 00000000..1130c6c0
--- /dev/null
+++ b/flavors/hashcash/www/img/icons/HashCashTestnet-menu-logo.svg
@@ -0,0 +1,5 @@
+
+
+
+ T
+
diff --git a/flavors/hashcash/www/img/icons/dark-logo-icon.svg b/flavors/hashcash/www/img/icons/dark-logo-icon.svg
new file mode 100644
index 00000000..13a07662
--- /dev/null
+++ b/flavors/hashcash/www/img/icons/dark-logo-icon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/flavors/hashcash/www/img/icons/explorer_dark_logo.svg b/flavors/hashcash/www/img/icons/explorer_dark_logo.svg
new file mode 100644
index 00000000..3c515f76
--- /dev/null
+++ b/flavors/hashcash/www/img/icons/explorer_dark_logo.svg
@@ -0,0 +1,5 @@
+
+
+ HashCash
+ BLOCK EXPLORER
+
diff --git a/flavors/hashcash/www/img/icons/explorer_logo.svg b/flavors/hashcash/www/img/icons/explorer_logo.svg
new file mode 100644
index 00000000..e7fc5065
--- /dev/null
+++ b/flavors/hashcash/www/img/icons/explorer_logo.svg
@@ -0,0 +1,5 @@
+
+
+ HashCash
+ BLOCK EXPLORER
+
diff --git a/flavors/hashcash/www/img/icons/hcash_token.svg b/flavors/hashcash/www/img/icons/hcash_token.svg
new file mode 100644
index 00000000..4240b9fd
--- /dev/null
+++ b/flavors/hashcash/www/img/icons/hcash_token.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/flavors/hashcash/www/img/icons/light-logo-icon.svg b/flavors/hashcash/www/img/icons/light-logo-icon.svg
new file mode 100644
index 00000000..13a07662
--- /dev/null
+++ b/flavors/hashcash/www/img/icons/light-logo-icon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/flavors/hashcash/www/img/icons/menu-logo.svg b/flavors/hashcash/www/img/icons/menu-logo.svg
new file mode 100644
index 00000000..13a07662
--- /dev/null
+++ b/flavors/hashcash/www/img/icons/menu-logo.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json
index bc098552..a1ec6f39 100644
--- a/npm-shrinkwrap.json
+++ b/npm-shrinkwrap.json
@@ -3613,16 +3613,16 @@
},
"node_modules/fsevents/node_modules/abbrev": {
"version": "1.1.1",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/ansi-regex": {
"version": "2.1.1",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -3630,16 +3630,16 @@
},
"node_modules/fsevents/node_modules/aproba": {
"version": "1.2.0",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/are-we-there-yet": {
"version": "1.1.5",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"delegates": "^1.0.0",
@@ -3648,16 +3648,16 @@
},
"node_modules/fsevents/node_modules/balanced-match": {
"version": "1.0.0",
- "integrity": "sha512-9Y0g0Q8rmSt+H33DfKv7FOc3v+iRI+o1lbzt8jGcIosYW37IIW/2XVYq5NPdmaD5NQ59Nk26Kl/vZbwW9Fr8vg==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/brace-expansion": {
"version": "1.1.11",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"balanced-match": "^1.0.0",
@@ -3666,16 +3666,16 @@
},
"node_modules/fsevents/node_modules/chownr": {
"version": "1.1.1",
- "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/code-point-at": {
"version": "1.1.0",
- "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -3683,30 +3683,30 @@
},
"node_modules/fsevents/node_modules/concat-map": {
"version": "0.0.1",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/console-control-strings": {
"version": "1.1.0",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/core-util-is": {
"version": "1.0.2",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/debug": {
"version": "2.6.9",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"ms": "2.0.0"
@@ -3714,9 +3714,9 @@
},
"node_modules/fsevents/node_modules/deep-extend": {
"version": "0.6.0",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=4.0.0"
@@ -3724,16 +3724,16 @@
},
"node_modules/fsevents/node_modules/delegates": {
"version": "1.0.0",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/detect-libc": {
"version": "1.0.3",
- "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
"dev": true,
"inBundle": true,
+ "license": "Apache-2.0",
"optional": true,
"bin": {
"detect-libc": "bin/detect-libc.js"
@@ -3744,9 +3744,9 @@
},
"node_modules/fsevents/node_modules/fs-minipass": {
"version": "1.2.5",
- "integrity": "sha512-JhBl0skXjUPCFH7x6x61gQxrKyXsxB5gcgePLZCwfyCGGsTISMoIeObbrvVeP6Xmyaudw4TT43qV2Gz+iyd2oQ==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"minipass": "^2.2.1"
@@ -3754,16 +3754,16 @@
},
"node_modules/fsevents/node_modules/fs.realpath": {
"version": "1.0.0",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/gauge": {
"version": "2.7.4",
- "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"aproba": "^1.0.3",
@@ -3778,9 +3778,9 @@
},
"node_modules/fsevents/node_modules/glob": {
"version": "7.1.3",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"fs.realpath": "^1.0.0",
@@ -3796,16 +3796,16 @@
},
"node_modules/fsevents/node_modules/has-unicode": {
"version": "2.0.1",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/iconv-lite": {
"version": "0.4.24",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"safer-buffer": ">= 2.1.2 < 3"
@@ -3816,9 +3816,9 @@
},
"node_modules/fsevents/node_modules/ignore-walk": {
"version": "3.0.1",
- "integrity": "sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"minimatch": "^3.0.4"
@@ -3826,9 +3826,9 @@
},
"node_modules/fsevents/node_modules/inflight": {
"version": "1.0.6",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"once": "^1.3.0",
@@ -3837,17 +3837,16 @@
},
"node_modules/fsevents/node_modules/inherits": {
"version": "2.0.3",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/ini": {
"version": "1.3.5",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
- "deprecated": "Please update to ini >=1.3.6 to avoid a prototype pollution issue",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"engines": {
"node": "*"
@@ -3855,9 +3854,9 @@
},
"node_modules/fsevents/node_modules/is-fullwidth-code-point": {
"version": "1.0.0",
- "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"number-is-nan": "^1.0.0"
@@ -3868,16 +3867,16 @@
},
"node_modules/fsevents/node_modules/isarray": {
"version": "1.0.0",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/minimatch": {
"version": "3.0.4",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -3888,16 +3887,16 @@
},
"node_modules/fsevents/node_modules/minimist": {
"version": "0.0.8",
- "integrity": "sha512-miQKw5Hv4NS1Psg2517mV4e4dYNaO3++hjAvLOAzKqZ61rH8NS1SK+vbfBWZ5PY/Me/bEWhUwqMghEW5Fb9T7Q==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/minipass": {
"version": "2.3.5",
- "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"safe-buffer": "^5.1.2",
@@ -3906,9 +3905,9 @@
},
"node_modules/fsevents/node_modules/minizlib": {
"version": "1.2.1",
- "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"minipass": "^2.2.1"
@@ -3916,10 +3915,9 @@
},
"node_modules/fsevents/node_modules/mkdirp": {
"version": "0.5.1",
- "integrity": "sha512-SknJC52obPfGQPnjIkXbmA6+5H15E+fR+E4iR2oQ3zzCLbd7/ONua69R/Gw7AgkTLsRG+r5fzksYwWe1AgTyWA==",
- "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"minimist": "0.0.8"
@@ -3930,16 +3928,16 @@
},
"node_modules/fsevents/node_modules/ms": {
"version": "2.0.0",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/needle": {
"version": "2.2.4",
- "integrity": "sha512-HyoqEb4wr/rsoaIDfTH2aVL9nWtQqba2/HvMv+++m8u0dz808MaagKILxtfeSN7QU7nvbQ79zk3vYOJp9zsNEA==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"debug": "^2.1.2",
@@ -3955,10 +3953,9 @@
},
"node_modules/fsevents/node_modules/node-pre-gyp": {
"version": "0.10.3",
- "integrity": "sha512-d1xFs+C/IPS8Id0qPTZ4bUT8wWryfR/OzzAFxweG+uLN85oPzyo2Iw6bVlLQ/JOdgNonXLCoRyqDzDWq4iw72A==",
- "deprecated": "Please upgrade to @mapbox/node-pre-gyp: the non-scoped node-pre-gyp package is deprecated and only the @mapbox scoped package will recieve updates in the future",
"dev": true,
"inBundle": true,
+ "license": "BSD-3-Clause",
"optional": true,
"dependencies": {
"detect-libc": "^1.0.2",
@@ -3978,9 +3975,9 @@
},
"node_modules/fsevents/node_modules/nopt": {
"version": "4.0.1",
- "integrity": "sha512-+5XZFpQZEY0cg5JaxLwGxDlKNKYxuXwGt8/Oi3UXm5/4ymrJve9d2CURituxv3rSrVCGZj4m1U1JlHTdcKt2Ng==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"abbrev": "1",
@@ -3992,16 +3989,16 @@
},
"node_modules/fsevents/node_modules/npm-bundled": {
"version": "1.0.5",
- "integrity": "sha512-m/e6jgWu8/v5niCUKQi9qQl8QdeEduFA96xHDDzFGqly0OOjI7c+60KM/2sppfnUU9JJagf+zs+yGhqSOFj71g==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/npm-packlist": {
"version": "1.2.0",
- "integrity": "sha512-7Mni4Z8Xkx0/oegoqlcao/JpPCPEMtUvsmB0q7mgvlMinykJLSRTYuFqoQLYgGY8biuxIeiHO+QNJKbCfljewQ==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"ignore-walk": "^3.0.1",
@@ -4010,9 +4007,9 @@
},
"node_modules/fsevents/node_modules/npmlog": {
"version": "4.1.2",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"are-we-there-yet": "~1.1.2",
@@ -4023,9 +4020,9 @@
},
"node_modules/fsevents/node_modules/number-is-nan": {
"version": "1.0.1",
- "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -4033,9 +4030,9 @@
},
"node_modules/fsevents/node_modules/object-assign": {
"version": "4.1.1",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -4043,9 +4040,9 @@
},
"node_modules/fsevents/node_modules/once": {
"version": "1.4.0",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"wrappy": "1"
@@ -4053,9 +4050,9 @@
},
"node_modules/fsevents/node_modules/os-homedir": {
"version": "1.0.2",
- "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -4063,9 +4060,9 @@
},
"node_modules/fsevents/node_modules/os-tmpdir": {
"version": "1.0.2",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -4073,9 +4070,9 @@
},
"node_modules/fsevents/node_modules/osenv": {
"version": "0.1.5",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"os-homedir": "^1.0.0",
@@ -4084,9 +4081,9 @@
},
"node_modules/fsevents/node_modules/path-is-absolute": {
"version": "1.0.1",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -4094,16 +4091,16 @@
},
"node_modules/fsevents/node_modules/process-nextick-args": {
"version": "2.0.0",
- "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/rc": {
"version": "1.2.8",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
"inBundle": true,
+ "license": "(BSD-2-Clause OR MIT OR Apache-2.0)",
"optional": true,
"dependencies": {
"deep-extend": "^0.6.0",
@@ -4117,16 +4114,16 @@
},
"node_modules/fsevents/node_modules/rc/node_modules/minimist": {
"version": "1.2.0",
- "integrity": "sha512-7Wl+Jz+IGWuSdgsQEJ4JunV0si/iMhg42MnQQG6h1R6TNeVenp4U9x5CC5v/gYqz/fENLQITAWXidNtVL0NNbw==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/readable-stream": {
"version": "2.3.6",
- "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"core-util-is": "~1.0.0",
@@ -4140,9 +4137,9 @@
},
"node_modules/fsevents/node_modules/rimraf": {
"version": "2.6.3",
- "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"glob": "^7.1.3"
@@ -4153,30 +4150,30 @@
},
"node_modules/fsevents/node_modules/safe-buffer": {
"version": "5.1.2",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/safer-buffer": {
"version": "2.1.2",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/sax": {
"version": "1.2.4",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/semver": {
"version": "5.6.0",
- "integrity": "sha512-RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"bin": {
"semver": "bin/semver"
@@ -4184,23 +4181,23 @@
},
"node_modules/fsevents/node_modules/set-blocking": {
"version": "2.0.0",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/signal-exit": {
"version": "3.0.2",
- "integrity": "sha512-meQNNykwecVxdu1RlYMKpQx4+wefIYpmxi6gexo/KAbwquJrBUrBmKYJrE8KFkVQAAVWEnwNdu21PgrD77J3xA==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/string_decoder": {
"version": "1.1.1",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"safe-buffer": "~5.1.0"
@@ -4208,9 +4205,9 @@
},
"node_modules/fsevents/node_modules/string-width": {
"version": "1.0.2",
- "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"code-point-at": "^1.0.0",
@@ -4223,9 +4220,9 @@
},
"node_modules/fsevents/node_modules/strip-ansi": {
"version": "3.0.1",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"dependencies": {
"ansi-regex": "^2.0.0"
@@ -4236,9 +4233,9 @@
},
"node_modules/fsevents/node_modules/strip-json-comments": {
"version": "2.0.1",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true,
"engines": {
"node": ">=0.10.0"
@@ -4246,9 +4243,9 @@
},
"node_modules/fsevents/node_modules/tar": {
"version": "4.4.8",
- "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"chownr": "^1.1.1",
@@ -4265,16 +4262,16 @@
},
"node_modules/fsevents/node_modules/util-deprecate": {
"version": "1.0.2",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
"dev": true,
"inBundle": true,
+ "license": "MIT",
"optional": true
},
"node_modules/fsevents/node_modules/wide-align": {
"version": "1.1.3",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true,
"dependencies": {
"string-width": "^1.0.2 || 2"
@@ -4282,16 +4279,16 @@
},
"node_modules/fsevents/node_modules/wrappy": {
"version": "1.0.2",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/fsevents/node_modules/yallist": {
"version": "3.0.3",
- "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
"dev": true,
"inBundle": true,
+ "license": "ISC",
"optional": true
},
"node_modules/function-bind": {