From b5d94399777cf1f847348a2fb0b768ead27ea958 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 12:19:44 -0700 Subject: [PATCH 01/34] First cut. --- .gitignore | 5 + browser-extension/README.md | 18 + browser-extension/package-lock.json | 1160 +++++++- browser-extension/package.json | 6 + browser-extension/playwright.config.ts | 13 + browser-extension/tests/har-index.ts | 5 + browser-extension/tests/har-record.ts | 134 + browser-extension/tests/har-view.ts | 150 + browser-extension/tests/har/gh_issue.har | 2885 +++++++++++++++++++ browser-extension/tests/har/gh_pr.har | 3328 ++++++++++++++++++++++ 10 files changed, 7700 insertions(+), 4 deletions(-) create mode 100644 browser-extension/playwright.config.ts create mode 100644 browser-extension/tests/har-index.ts create mode 100644 browser-extension/tests/har-record.ts create mode 100644 browser-extension/tests/har-view.ts create mode 100644 browser-extension/tests/har/gh_issue.har create mode 100644 browser-extension/tests/har/gh_pr.har diff --git a/.gitignore b/.gitignore index 4b0d558..011e869 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,8 @@ dist/ # OS junk .DS_Store Thumbs.db + +# playright +browser-extension/playwright-report/ +browser-extension/playwright/ +browser-extension/test-results/ \ No newline at end of file diff --git a/browser-extension/README.md b/browser-extension/README.md index 24c46df..4936563 100644 --- a/browser-extension/README.md +++ b/browser-extension/README.md @@ -42,3 +42,21 @@ Every time a `textarea` shows up on a page, on initial load or later on, it gets Those values get bundled up with the `HTMLTextAreaElement` itself into an `EnhancedTextarea`, which gets added to the `TextareaRegistry`. At some interval, draft edits will get saved by the browser extension (TODO). When the `textarea` gets removed from the page, the `TextareaRegistry` is notified so that the `CommentSpot` can be marked as abandoned or submitted as appropriate (TODO). + +## Testing + +In `tests/har` there are various `.har` files. These are complete recordings of a single page load. + +- `npm run har:view` and you can see the recordings, without our browser extension. + +### Recording new HAR files + +- you can add or change URLs in `tests/har-index.ts` +- `npx playwright codegen https://github.com/login --save-storage=playwright/.auth/gh.json` will store new auth tokens + - login manually, then close the browser + - ***these cookies are very sensitive! we only run this script using a test account that has no permissions or memberships to anything, recommend you do the same!*** +- `npm run har:record` this records new snapshots using those auth tokens (it needs args, run it with no args for docs) + - DO NOT COMMIT AND PUSH NEW OR CHANGED `har` files! + - we try to sanitize these (see `har-record.ts` for details) but there may be important PII in them + - if you need new HAR files for something, let us know and we will generate them ourselves using a dummy account + - IF YOUR PR CHANGES OR ADDS HAR FILES WE WILL CLOSE IT. Ask for HAR files and we'll be happy to generate clean ones you can test against. diff --git a/browser-extension/package-lock.json b/browser-extension/package-lock.json index cb3d2e8..bb00498 100644 --- a/browser-extension/package-lock.json +++ b/browser-extension/package-lock.json @@ -17,11 +17,15 @@ }, "devDependencies": { "@biomejs/biome": "^2.1.2", + "@playwright/test": "^1.46.0", "@testing-library/jest-dom": "^6.6.4", + "@types/express": "^4.17.21", "@types/node": "^22.16.5", "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", + "express": "^4.19.2", "happy-dom": "^18.0.1", + "tsx": "^4.19.1", "typescript": "^5.8.3", "vitest": "^3.2.4", "wxt": "^0.20.7" @@ -1012,6 +1016,22 @@ "node": ">=14" } }, + "node_modules/@playwright/test": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.55.0.tgz", + "integrity": "sha512-04IXzPwHrW69XusN/SIdDdKZBzMfOT9UNT/YiJit/xpy2VuAoB8NHc8Aplb96zsWDddLnbkPL3TsmrS04ZU2xQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright": "1.55.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@pnpm/config.env-replace": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", @@ -1340,6 +1360,17 @@ "yarn": ">=1" } }, + "node_modules/@types/body-parser": { + "version": "1.19.6", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.6.tgz", + "integrity": "sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, "node_modules/@types/chai": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", @@ -1350,6 +1381,16 @@ "@types/deep-eql": "*" } }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/deep-eql": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", @@ -1363,6 +1404,32 @@ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "license": "MIT" }, + "node_modules/@types/express": { + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.23.tgz", + "integrity": "sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, "node_modules/@types/filesystem": { "version": "0.0.36", "resolved": "https://registry.npmjs.org/@types/filesystem/-/filesystem-0.0.36.tgz", @@ -1384,6 +1451,20 @@ "integrity": "sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==", "license": "MIT" }, + "node_modules/@types/http-errors": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.5.tgz", + "integrity": "sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", @@ -1399,6 +1480,43 @@ "undici-types": "~6.21.0" } }, + "node_modules/@types/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/send": { + "version": "0.17.5", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.5.tgz", + "integrity": "sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.8", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.8.tgz", + "integrity": "sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, "node_modules/@types/whatwg-mimetype": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/whatwg-mimetype/-/whatwg-mimetype-3.0.2.tgz", @@ -1644,6 +1762,20 @@ "wxt": ">=0.20.0" } }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -1782,6 +1914,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true, + "license": "MIT" + }, "node_modules/array-union": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", @@ -1915,6 +2054,48 @@ "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "license": "MIT" }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -2083,6 +2264,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/c12": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/c12/-/c12-3.2.0.tgz", @@ -2132,6 +2323,37 @@ "node": ">=8" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/camelcase": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", @@ -2713,6 +2935,67 @@ "node": "^14.18.0 || >=16.10.0" } }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true, + "license": "MIT" + }, "node_modules/core-util-is": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", @@ -2874,6 +3157,16 @@ "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "license": "MIT" }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -2889,6 +3182,17 @@ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", "license": "MIT" }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, "node_modules/dom-accessibility-api": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", @@ -3005,6 +3309,21 @@ "url": "https://dotenvx.com" } }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -3012,6 +3331,13 @@ "dev": true, "license": "MIT" }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -3019,6 +3345,16 @@ "dev": true, "license": "MIT" }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/end-of-stream": { "version": "1.4.5", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", @@ -3061,12 +3397,45 @@ "is-arrayish": "^0.2.1" } }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", "license": "MIT" }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es6-error": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", @@ -3135,6 +3504,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, "node_modules/escape-string-regexp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", @@ -3156,6 +3532,16 @@ "@types/estree": "^1.0.0" } }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/eventemitter3": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", @@ -3228,6 +3614,91 @@ "node": ">=12.0.0" } }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/exsolve": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", @@ -3342,10 +3813,46 @@ "node": ">=8" } }, - "node_modules/firefox-profile": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.7.0.tgz", - "integrity": "sha512-aGApEu5bfCNbA4PGUZiRJAIU6jKmghV2UVdklXAofnNtiDjqYw0czLS46W7IfFqVKgKhFB8Ao2YoNGHY4BoIMQ==", + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/firefox-profile": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/firefox-profile/-/firefox-profile-4.7.0.tgz", + "integrity": "sha512-aGApEu5bfCNbA4PGUZiRJAIU6jKmghV2UVdklXAofnNtiDjqYw0czLS46W7IfFqVKgKhFB8Ao2YoNGHY4BoIMQ==", "license": "MIT", "dependencies": { "adm-zip": "~0.5.x", @@ -3394,6 +3901,26 @@ "node": ">= 18" } }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/fs-extra": { "version": "11.3.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.1.tgz", @@ -3422,6 +3949,16 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/fx-runner": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/fx-runner/-/fx-runner-1.4.0.tgz", @@ -3491,12 +4028,51 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "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": "https://github.com/sponsors/ljharb" + } + }, "node_modules/get-port-please": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.2.0.tgz", "integrity": "sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==", "license": "MIT" }, + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", @@ -3512,6 +4088,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/giget": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/giget/-/giget-2.0.0.tgz", @@ -3592,6 +4181,19 @@ "node": "^14.17.0 || ^16.13.0 || >=18.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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", @@ -3644,6 +4246,32 @@ "node": ">=8" } }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/highlight.js": { "version": "11.11.1", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.11.1.tgz", @@ -3697,6 +4325,23 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -3706,6 +4351,19 @@ "node": ">=14.18.0" } }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -3767,6 +4425,16 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/is-absolute": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.1.7.tgz", @@ -4536,6 +5204,36 @@ "integrity": "sha512-ocnPZQLNpvbedwTy9kNrQEsknEfgvcLMvOtz3sFeWApDq1MXH1TqkCIx58xlpESsfwQOnuBO9beyQuNGzVvuhQ==", "license": "Apache-2.0" }, + "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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -4551,6 +5249,16 @@ "node": ">= 8" } }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -4576,6 +5284,42 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-fn": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", @@ -4771,6 +5515,16 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/node-fetch-native": { "version": "1.6.7", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz", @@ -4909,6 +5663,19 @@ "node": ">=0.10.0" } }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/ofetch": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.4.1.tgz", @@ -4935,6 +5702,19 @@ "node": ">=14.0.0" } }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -5102,6 +5882,16 @@ "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "license": "MIT" }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -5128,6 +5918,13 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "dev": true, + "license": "MIT" + }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -5222,6 +6019,53 @@ "pathe": "^2.0.3" } }, + "node_modules/playwright": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.55.0.tgz", + "integrity": "sha512-sdCWStblvV1YU909Xqx0DhOjPZE4/5lJsIS84IfN9dAZfcl/CIZ5O8l3o0j7hPMjDvqoTF8ZUcc+i/GL5erstA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.55.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.55.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.55.0.tgz", + "integrity": "sha512-GvZs4vU3U5ro2nZpeiwyb0zuFaqb9sUiAJuyrWpcGouD8y9/HLgGbNRjIph7zU9D3hnPaisMl9zG9CgFi/biIg==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -5303,6 +6147,20 @@ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "license": "ISC" }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/publish-browser-extension": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/publish-browser-extension/-/publish-browser-extension-3.0.1.tgz", @@ -5670,6 +6528,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/quansync": { "version": "0.2.11", "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", @@ -5712,6 +6586,32 @@ "integrity": "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==", "license": "MIT" }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -5845,6 +6745,16 @@ "node": ">=0.10.0" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "devOptional": true, + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/restore-cursor": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", @@ -5966,6 +6876,13 @@ "node": ">=10" } }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true, + "license": "MIT" + }, "node_modules/sax": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", @@ -5990,6 +6907,74 @@ "node": ">=10" } }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-value": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-4.1.0.tgz", @@ -6014,6 +6999,13 @@ "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", "license": "MIT" }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -6047,6 +7039,82 @@ "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "license": "MIT" }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/siginfo": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", @@ -6200,6 +7268,16 @@ "dev": true, "license": "MIT" }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/std-env": { "version": "3.9.0", "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", @@ -6541,6 +7619,16 @@ "node": ">=8.0" } }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, "node_modules/totalist": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", @@ -6557,6 +7645,26 @@ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, + "node_modules/tsx": { + "version": "4.20.5", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.5.tgz", + "integrity": "sha512-+wKjMNU9w/EaQayHXb7WA7ZaHY6hN8WgfvHNQ3t1PnU91/7O8TcTnIhCDYTZwnt8JsO9IBqZ30Ln1r7pPF52Aw==", + "devOptional": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, "node_modules/type-fest": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", @@ -6569,6 +7677,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", @@ -6641,6 +7763,16 @@ "node": ">= 10.0.0" } }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/unplugin": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.9.tgz", @@ -6711,6 +7843,16 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -6720,6 +7862,16 @@ "uuid": "dist/bin/uuid" } }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/vite": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.3.tgz", diff --git a/browser-extension/package.json b/browser-extension/package.json index 6e1f68d..5e14fe9 100644 --- a/browser-extension/package.json +++ b/browser-extension/package.json @@ -11,9 +11,13 @@ "@biomejs/biome": "^2.1.2", "@testing-library/jest-dom": "^6.6.4", "@types/node": "^22.16.5", + "@playwright/test": "^1.46.0", "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", + "express": "^4.19.2", + "@types/express": "^4.17.21", "happy-dom": "^18.0.1", + "tsx": "^4.19.1", "typescript": "^5.8.3", "vitest": "^3.2.4", "wxt": "^0.20.7" @@ -39,6 +43,8 @@ "dev:firefox": "wxt -b firefox", "postinstall": "wxt prepare", "test": "vitest run", + "har:record": "tsx tests/har-record.ts", + "har:view": "tsx tests/har-view.ts", "zip": "wxt zip", "zip:firefox": "wxt zip -b firefox" }, diff --git a/browser-extension/playwright.config.ts b/browser-extension/playwright.config.ts new file mode 100644 index 0000000..173e3b5 --- /dev/null +++ b/browser-extension/playwright.config.ts @@ -0,0 +1,13 @@ +// playwright.config.ts +import { defineConfig } from '@playwright/test' + +export default defineConfig({ + testDir: 'tests/e2e', + use: { + screenshot: 'only-on-failure', + video: 'retain-on-failure', + trace: 'retain-on-failure', + }, + reporter: [['html', { open: 'never' }]], +}) + diff --git a/browser-extension/tests/har-index.ts b/browser-extension/tests/har-index.ts new file mode 100644 index 0000000..0aa7e57 --- /dev/null +++ b/browser-extension/tests/har-index.ts @@ -0,0 +1,5 @@ +export const PAGES = [ + ['gh_issue', 'https://github.com/diffplug/selfie/issues/523'], + ['gh_pr', 'https://github.com/diffplug/selfie/pull/517'], + ] as const + \ No newline at end of file diff --git a/browser-extension/tests/har-record.ts b/browser-extension/tests/har-record.ts new file mode 100644 index 0000000..bd9f9e6 --- /dev/null +++ b/browser-extension/tests/har-record.ts @@ -0,0 +1,134 @@ +import { chromium } from '@playwright/test' +import fs from 'node:fs/promises' +import path from 'node:path' +import { PAGES } from './har-index' + +// Convert glob pattern to regex +function globToRegex(pattern: string): RegExp { + const regexPattern = pattern + .replace(/[.+^${}()|[\]\\]/g, '\\$&') // Escape regex special chars + .replace(/\*/g, '.*') // Replace * with .* + .replace(/\?/g, '.') // Replace ? with . + return new RegExp(`^${regexPattern}$`) +} + +// Filter pages based on pattern +function filterPages(pattern: string) { + const regex = globToRegex(pattern) + return PAGES.filter(([name]) => regex.test(name)) +} + +const FILTER = /^(https?:\/\/(github\.com|assets\.github\.com|avatars\.githubusercontent\.com|user-images\.githubusercontent\.com))/ + +// Sanitization config +const REDACTIONS: Array<[RegExp, string]> = [ + [/\b(authenticity_token|_octo|user_session)=[^"&;]+/g, '$1=REDACTED'], + [/"login":"[^"]+"/g, '"login":"oss-test-user"'], + [/"email":"[^"]+"/g, '"email":"oss-test@example.com"'], +] + +async function record(name: string, url: string) { + console.log('Recording HAR:', name, url) + + const browser = await chromium.launch() + const context = await browser.newContext({ + storageState: 'playwright/.auth/gh.json', // local-only; never commit + recordHar: { + path: `tests/har/${name}.har`, + mode: 'minimal', // smaller; omits cookies etc. + urlFilter: FILTER, // restrict scope to GitHub + assets + }, + }) + + const page = await context.newPage() + await page.goto(url, { waitUntil: 'domcontentloaded' }) + // Allow dynamic assets (sprites/avatars) to settle + await page.waitForTimeout(800) + + await context.close() + await browser.close() +} + +function stripHeaders(headers?: any[]) { + if (!Array.isArray(headers)) return + for (let i = headers.length - 1; i >= 0; i--) { + const n = String(headers[i]?.name || '').toLowerCase() + if (n === 'cookie' || n === 'set-cookie' || n === 'authorization') { + headers.splice(i, 1) + } + } +} + +async function sanitize(filename: string) { + console.log('Sanitizing:', filename) + + const p = path.join('tests/har', filename) + const har = JSON.parse(await fs.readFile(p, 'utf8')) + + for (const e of har.log?.entries ?? []) { + stripHeaders(e.request?.headers) + stripHeaders(e.response?.headers) + + // Optional: scrub body text for predictable PII + const content = e.response?.content + if (content && typeof content.text === 'string') { + let t = content.text + for (const [re, rep] of REDACTIONS) t = t.replace(re, rep) + content.text = t + } + } + + await fs.writeFile(p, JSON.stringify(har, null, 2)) +} + +;(async () => { + const pattern = process.argv[2] + + // If no argument provided, show available keys + if (!pattern) { + console.log('Available recording targets:') + for (const [name] of PAGES) { + console.log(` ${name}`) + } + console.log('\nUsage: npm run har:record ') + console.log('Examples:') + console.log(' npm run har:record "*" # Record all') + console.log(' npm run har:record "github_*" # Record all github_*') + console.log(' npm run har:record "github_issue" # Record specific target') + return + } + + // Filter pages based on pattern + const pagesToRecord = filterPages(pattern) + + if (pagesToRecord.length === 0) { + console.log(`No targets match pattern: ${pattern}`) + console.log('Available targets:') + for (const [name] of PAGES) { + console.log(` ${name}`) + } + return + } + + console.log(`Recording ${pagesToRecord.length} target(s) matching "${pattern}":`) + for (const [name] of pagesToRecord) { + console.log(` ${name}`) + } + console.log() + + await fs.mkdir('tests/har', { recursive: true }) + + // Record filtered HAR files + for (const [name, url] of pagesToRecord) { + await record(name, url) + } + + console.log('Recording complete. Sanitizing...') + + // Sanitize recorded HAR files + for (const [name] of pagesToRecord) { + await sanitize(`${name}.har`) + } + + console.log('Done.') +})() \ No newline at end of file diff --git a/browser-extension/tests/har-view.ts b/browser-extension/tests/har-view.ts new file mode 100644 index 0000000..aa8f477 --- /dev/null +++ b/browser-extension/tests/har-view.ts @@ -0,0 +1,150 @@ +import express from 'express' +import fs from 'node:fs/promises' +import path from 'node:path' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const app = express() +const PORT = 3000 + +// Store HAR data +const harCache = new Map() + +// Load and cache HAR file +async function loadHar(filename: string) { + if (harCache.has(filename)) { + return harCache.get(filename) + } + + const harPath = path.join(__dirname, 'har', filename) + const harContent = await fs.readFile(harPath, 'utf-8') + const harData = JSON.parse(harContent) + harCache.set(filename, harData) + return harData +} + +// List available HAR files +app.get('/', async (req, res) => { + try { + const harDir = path.join(__dirname, 'har') + const files = await fs.readdir(harDir) + const harFiles = files.filter(file => file.endsWith('.har')) + + const links = harFiles.map(file => { + const basename = path.basename(file, '.har') + return `
  • ${basename}
  • ` + }).join('') + + res.send(` + + + + HAR Page Viewer + + + +

    📄 HAR Page Viewer

    +

    Select a recorded page to view:

    +
      ${links}
    + + + `) + } catch (error) { + res.status(500).send('Error listing HAR files') + } +}) + +// Serve the main HTML page from HAR +app.get('/page/:filename', async (req, res) => { + try { + const filename = req.params.filename + if (!filename.endsWith('.har')) { + return res.status(400).send('Invalid file type') + } + + const harData = await loadHar(filename) + + // Find the main HTML response + const mainEntry = harData.log.entries.find((entry: any) => + entry.request.url.includes('github.com') && + entry.response.content.mimeType?.includes('text/html') && + entry.response.content.text + ) + + if (!mainEntry) { + return res.status(404).send('No HTML content found in HAR file') + } + + let html = mainEntry.response.content.text + + // Replace external URLs with local asset URLs + html = html.replace( + /https:\/\/(github\.com|assets\.github\.com|avatars\.githubusercontent\.com|user-images\.githubusercontent\.com)/g, + `/asset/${filename.replace('.har', '')}` + ) + + res.send(html) + } catch (error) { + console.error('Error serving page:', error) + res.status(500).send('Error loading page') + } +}) + +// Serve assets from HAR file +app.get('/asset/:harname/*', async (req, res) => { + try { + const harname = req.params.harname + '.har' + const assetPath = req.params[0] + + const harData = await loadHar(harname) + + // Find matching asset in HAR + const assetEntry = harData.log.entries.find((entry: any) => { + const url = new URL(entry.request.url) + return url.pathname === '/' + assetPath || url.pathname.endsWith('/' + assetPath) + }) + + if (!assetEntry) { + return res.status(404).send('Asset not found') + } + + const content = assetEntry.response.content + const mimeType = content.mimeType || 'application/octet-stream' + + res.set('Content-Type', mimeType) + + if (content.encoding === 'base64') { + res.send(Buffer.from(content.text, 'base64')) + } else { + res.send(content.text || '') + } + } catch (error) { + console.error('Error serving asset:', error) + res.status(404).send('Asset not found') + } +}) + +app.listen(PORT, () => { + console.log(`HAR Page Viewer running at http://localhost:${PORT}`) + console.log('Click the links to view recorded GitHub pages') +}) \ No newline at end of file diff --git a/browser-extension/tests/har/gh_issue.har b/browser-extension/tests/har/gh_issue.har new file mode 100644 index 0000000..aa0f333 --- /dev/null +++ b/browser-extension/tests/har/gh_issue.har @@ -0,0 +1,2885 @@ +{ + "log": { + "version": "1.2", + "creator": { + "name": "Playwright", + "version": "1.55.0" + }, + "browser": { + "name": "chromium", + "version": "140.0.7339.16" + }, + "entries": [ + { + "startedDateTime": "2025-09-05T21:31:48.676Z", + "time": 57.378, + "request": { + "method": "GET", + "url": "https://github.com/diffplug/selfie/issues/523", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/diffplug/selfie/issues/523" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=0, i" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "document" + }, + { + "name": "sec-fetch-mode", + "value": "navigate" + }, + { + "name": "sec-fetch-site", + "value": "none" + }, + { + "name": "sec-fetch-user", + "value": "?1" + }, + { + "name": "upgrade-insecure-requests", + "value": "1" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "link", + "value": "; rel=preload; as=fetch; crossorigin=use-credentials" + }, + { + "name": "referrer-policy", + "value": "no-referrer-when-downgrade" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "server-timing", + "value": "issue_layout-fragment;desc=\"issue_layout fragment\";dur=257.91804,issue_conversation_content-fragment;desc=\"issue_conversation_content fragment\";dur=403.588521,nginx;desc=\"NGINX\";dur=1.337846,glb;desc=\"GLB\";dur=31.101926" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With, Accept,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:184133:18A2B3:68BB56C4" + }, + { + "name": "x-iris-sidecar-esi-nonce", + "value": "d53b02ee922b2c0ff53626424b2a0fe66b5869909a8cce02a119ae6129d945b3" + }, + { + "name": "x-voltron-version", + "value": "266d7a9" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "text/html; charset=utf-8", + "text": "\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n \n \n \n \n \n \n\n \n\n \n\n \n\n \n \n \n \n \n\n \n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n [jvm] docs for VCR · Issue #523 · diffplug/selfie\n\n\n\n \n \n \n \n\n \n \n\n\n \n\n\n \n\n\n \n \n\n \n \n\n \n\n\n\n \n\n \n\n\n\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n\n \n \n \n\n\n \n \n\n\n \n\n\n \n \n \n\n \n\n\n \n \n \n \n\n \n\n \n \n \n\n \n\n\n\n \n\n\n \n\n\n \n\n \n\n \n \n\n \n \n \n\n\n\n\n\n \n\n \n\n \n
    \n
    \n \n\n\n\n
    \n Skip to content\n\n \n \n \n \n \n\n\n \n \n
    \n\n\n\n\n\n\n \n\n \n\n
    \n

    Navigation Menu

    \n\n\n \n\n
    \n
    \n
    \n \n \n \n \n\n\n \n
    \n
    \n
    \n

    \n Global navigation\n

    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n \n\n
    \n \n \n \n \n Loading\n\n
    \n
    \n
    \n\n\n

    © 2025 GitHub, Inc.

    \n\n
    \n
    \n
    \n \n
    \n\n\n \n
    \n
    \n\n \n\n \n
    \n \n
    \n\n\n
    \n
    \n
    \n \n\n\n\n \n \n \n\n\n
    \n
    \n
    \n \n \n \n\n \n\n \n
    \n \n Type / to search\n \n
    \n \n\n
    \n\n\n
    \n
    \n\n \n\n \n
    \n \n

    Search code, repositories, users, issues, pull requests...

    \n
    \n \n
    \n
    \n \n
    \n \n \n \n \n \n\n \n
    \n
    \n
    \n
    \n \n
    \n
    \n Clear\n \n\n
    \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
    \n \n
    \n
    \n
    \n\n
    \n Search syntax tips
    \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n
    \n \n\n \n
    \n
    \n
    \n

    \n Provide feedback\n

    \n \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n

    We read every piece of feedback, and take your input very seriously.

    \n \n \n \n
    \n
    \n \n
    \n\n \n \n\n \n
    \n
    \n
    \n

    \n Saved searches\n

    \n

    Use saved searches to filter your results more quickly

    \n
    \n
    \n \n
    \n
    \n \n
    \n \n
    \n\n \n\n
    \n
    \n
    \n\n
    \n
    \n \n
    \n
    \n
    \n \n\n\n
    \n\n \n
    \n
    \n \n \n \n\nChat with Copilot\n\n \n \n
    \n \n \n Open Copilot…\n\n \n \n
    \n
    \n
    \n\n\n
    \n \n Create new…\n\n \n \n\n\n \n \n\nYour issues\n\n \n \n\nYour pull requests\n\n
    \n\n \n \n \n\n\n\n Notifications\n\n\n
    \n \n \n \n \n \n \n\n\n\n \n\n
    \n\n
    \n \n\n\n\n\n
    \n
    \n \n\n\n \n \n\n\n\n \n \n \n \n\n
    \n\n\n\n\n\n\n\n\n
    \n\n\n\n\n \n
    \n\n\n \n \n \n\n\n\n\n\n\n \n
    \n
    \n \n \n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n

    [jvm] docs for VCR #523

    Copy link
    Copy link

    Metadata

    Metadata

    Assignees

    No one assigned

      Labels

      Type

      No type

      Projects

      No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Notifications

      You're not receiving notifications from this thread.

      Issue actions

        \n\n\n\n\n\n
        \n
        \n\n \n\n
        \n

        Footer

        \n\n \n\n\n
        \n
        \n \n \n \n\n\n \n © 2025 GitHub, Inc.\n \n
        \n\n \n
        \n
        \n\n\n\n \n\n\n\n \n\n \n\n
        \n
        \n
        \n
        \n\n \n\n\n\n \n\n\n \n
        \n
        \n \n\n\n" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 57.378 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.308Z", + "time": 0.778, + "request": { + "method": "GET", + "url": "https://github.com/_graphql?body=%7B%22query%22%3A%223eac1215ca38acd36d00a9ca102cf2e1%22%2C%22variables%22%3A%7B%22markAsRead%22%3Atrue%2C%22number%22%3A523%2C%22owner%22%3A%22diffplug%22%2C%22repo%22%3A%22selfie%22%7D%7D", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/_graphql?body=%7B%22query%22%3A%223eac1215ca38acd36d00a9ca102cf2e1%22%2C%22variables%22%3A%7B%22markAsRead%22%3Atrue%2C%22number%22%3A523%2C%22owner%22%3A%22diffplug%22%2C%22repo%22%3A%22selfie%22%7D%7D" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "*/*" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "origin", + "value": "https://github.com" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "body", + "value": "{\"query\":\"3eac1215ca38acd36d00a9ca102cf2e1\",\"variables\":{\"markAsRead\":true,\"number\":523,\"owner\":\"diffplug\",\"repo\":\"selfie\"}}" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "no-cache" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "text/plain; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "W/\"2e02b7662e6861c46e9906b38a8776b0\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:1843D8:18A55A:68BB56C5" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "text/plain; charset=utf-8", + "text": "{\"data\":{\"repository\":{\"issue\":{\"id\":\"I_kwDOJMKF3M6rC16A\",\"isTransferInProgress\":false,\"parent\":null,\"viewerCanReopen\":false,\"viewerCanClose\":false,\"authorAssociation\":\"MEMBER\",\"discussion\":null,\"repository\":{\"slashCommandsEnabled\":true,\"id\":\"R_kgDOJMKF3A\",\"databaseId\":616728028,\"name\":\"selfie\",\"owner\":{\"__typename\":\"Organization\",\"login\":\"oss-test-user\",\"id\":\"MDEyOk9yZ2FuaXphdGlvbjY1NzI4OTg=\"},\"nameWithOwner\":\"diffplug/selfie\",\"isArchived\":false,\"viewerCanPinIssues\":false,\"isPrivate\":false},\"title\":\"[jvm] docs for VCR\",\"number\":523,\"databaseId\":2869649024,\"linkedBranches\":{\"nodes\":[]},\"closedByPullRequestsReferences\":{\"nodes\":[]},\"linkedPullRequests\":{\"nodes\":[]},\"viewerCanLinkBranches\":false,\"topBlockedBy\":{\"nodes\":[],\"pageInfo\":{\"hasNextPage\":false}},\"topBlocking\":{\"nodes\":[],\"pageInfo\":{\"hasNextPage\":false}},\"issueDependenciesSummary\":{\"blockedBy\":0,\"blocking\":0},\"viewerCanUpdateMetadata\":false,\"threadSubscriptionChannel\":\"eyJjIjoidGhyZWFkLXN1YnNjcmlwdGlvbjoyODY5NjQ5MDI0OjIzMDYyNTQzNCIsInQiOjE3NTcxMDc5MDl9--ed58c1f7082fae5562d6883badcc113a53c95d48672215d1d73ecbb7e1e9db87\",\"viewerThreadSubscriptionFormAction\":\"SUBSCRIBE\",\"viewerCustomSubscriptionEvents\":[],\"participants\":{\"nodes\":[{\"__isActor\":\"User\",\"__typename\":\"User\",\"id\":\"MDQ6VXNlcjI5MjQ5OTI=\",\"login\":\"oss-test-user\",\"name\":\"Ned Twigg\",\"profileResourcePath\":\"/nedtwigg\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/2924992?s=64&u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4\"}],\"totalCount\":1},\"viewerCanConvertToDiscussion\":false,\"viewerCanDelete\":false,\"viewerCanTransfer\":false,\"viewerCanType\":false,\"viewerCanLock\":false,\"suggestedActors\":{\"nodes\":[{\"__typename\":\"User\",\"__isActor\":\"User\",\"id\":\"MDQ6VXNlcjI5MjQ5OTI=\",\"login\":\"oss-test-user\",\"name\":\"Ned Twigg\",\"profileResourcePath\":\"/nedtwigg\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/2924992?s=64&u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4\",\"__isNode\":\"User\"}]},\"taskListSummary\":{\"itemCount\":0,\"completeCount\":0},\"tasklistBlocksCompletion\":null,\"trackedInIssues\":{\"nodes\":[],\"totalCount\":0},\"__isComment\":\"Issue\",\"viewerCanReadUserContentEdits\":true,\"lastEditedAt\":null,\"lastUserContentEdit\":null,\"showSpammyBadge\":false,\"viewerCanReport\":false,\"viewerCanReportToMaintainer\":false,\"viewerCanBlockFromOrg\":false,\"viewerCanUnblockFromOrg\":false,\"subIssues\":{\"nodes\":[]},\"subIssuesConnection\":{\"totalCount\":0},\"projectItemsNext\":{\"edges\":[],\"pageInfo\":{\"endCursor\":null,\"hasNextPage\":false}},\"milestone\":null,\"state\":\"OPEN\",\"blockedBy\":{\"nodes\":[]}},\"codeOfConductFileUrl\":\"https://github.com/diffplug/selfie/blob/main/CODE_OF_CONDUCT.md\",\"securityPolicyUrl\":null,\"contributingFileUrl\":\"https://github.com/diffplug/selfie/blob/main/CONTRIBUTING.md\",\"supportFileUrl\":null,\"id\":\"R_kgDOJMKF3A\"}}}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.778 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.324Z", + "time": 7.626, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/230625434?v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/230625434?v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "26807" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "\"56f873398d956d1564aea12d82f4a5a7402334c684777eeae2f5209f961dbae4\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:49 GMT" + }, + { + "name": "last-modified", + "value": "Fri, 05 Sep 2025 19:37:15 GMT" + }, + { + "name": "source-age", + "value": "6754" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "d2951891e22bf6d45780a81bb768067f74761fd1" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "5F07:14FDE:4A68:6007:68BB3C62" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc1000146-SJC" + }, + { + "name": "x-timer", + "value": "S1757107909.398973,VS0,VE2" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "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", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 7.626 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.350Z", + "time": 0.237, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/2924992?u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4&size=80", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/2924992?u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4&size=80" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "u", + "value": "b69110f1956d894eaa7b17c54793e11bd33da424" + }, + { + "name": "v", + "value": "4" + }, + { + "name": "size", + "value": "80" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "2233" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "\"05dc1007d4b755a66c5f53a59ee1822945f06df2e4068ede85ff14b554862d34\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:49 GMT" + }, + { + "name": "last-modified", + "value": "Thu, 14 Mar 2019 02:56:52 GMT" + }, + { + "name": "source-age", + "value": "64958" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "4d7e51e6ae6115e5a88957533c484e80d6a8de41" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "F984:4031D:16A0A9:1D25F3:68BA58FE" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc1000146-SJC" + }, + { + "name": "x-timer", + "value": "S1757107909.398962,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "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", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.237 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.350Z", + "time": 0.471, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/2924992?u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4&size=48", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/2924992?u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4&size=48" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "u", + "value": "b69110f1956d894eaa7b17c54793e11bd33da424" + }, + { + "name": "v", + "value": "4" + }, + { + "name": "size", + "value": "48" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "1304" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "\"adece9fed1bfdf7967664dc8af8e58dc9020e310f2d90359a1f69f951c617160\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:49 GMT" + }, + { + "name": "last-modified", + "value": "Thu, 14 Mar 2019 02:56:52 GMT" + }, + { + "name": "source-age", + "value": "278272" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "096c0054b22e710524d23a2dc613bff182f5715d" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "B7E3:770D6:1542E6:1A68CD:68B717C5" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc1000146-SJC" + }, + { + "name": "x-timer", + "value": "S1757107909.398979,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIADAAMAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APRJJZl09jty6jofSvNvFnjme6lbS7BwkCjy5ZE6ue4z2FdrrGpzWWg302f3sVo5GPXHFeMaVo13qMYlSOQoeGIyT2/pmuGlZXcioRcnoXbW/tbcgxrHOMgNkHOfZutd3YePpLBLOKaCSS1I27x1Ufj1xWtpHhLSLVQwtkY4H3hnn1q54i0KC+8PzW8MCpKil4tgwQRzxWjkp7rQ6ZULI1pL/BhnjYOkihlIPUHnNXIbmGZwQeWGCK43wlfi98MwB3xJaMY3yOo6j+f6VpabdeZqZUFTgdBWCjvbocb912MvUoWksdStXZDJ9mcZ3dcqa43w1qlzp+hBLWJA0ZPmeYpPJY4AA6mum0iQXxuIZufPUruxkg1WtNNbTtWuYZbZ4UmPmqSONx4YZ6HoD+NOouR2Z04NKWzL2n+JNQki8mSCEztG0gIRkIAx0HOTz04pNNXVri7eaa5uvLBykrTcN/wEYGKdGY4tZgdSx2nDN1rbgurZNQVEEWXywUYDAeuPSn7RWud/sn1MXw7pj6cdS+2sFE9w4GDwMEgcfn+laWh28UWoyysx4bA9MVeszvu7hdqlYXZ2zzv3EkD9atTaefPWaBFVHx8vpQ5WvfqeXVinK8RZ9OsbSATrGu8fNlRjFY+sLNdaebskBYV81GU5zjqPyrYsYn1a2klRAiuu1C5/X6VT1Cwg8PaA6ahdgtcMIIh6u3AwO/XP0FckZOUrLc0UlF3Ry2lsr3jzQbQ0xy6+WrZb1GQcV1aRpkzSEmbG0s3XHp7Dk1yGn2clnfIJA0eeGx0z611trbGaWOKEFnY9Sc10a/CegmuW5HHeWmnyJai4Q3l2xkVXIUuASDj16VsXF2YbZXXpjLMex9KzfHXh+zvPDSrt/wBJsVeaGVTgq2CT+BPavObX4g6lDpwtLlY7uHrlztb8SP6ivQlgXOKlHc8Z4iMZNPY//9k=", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.471 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.466Z", + "time": -1, + "request": { + "method": "GET", + "url": "https://github.com/assets-cdn/worker/socket-worker-7db934acff24.js?module=true", + "httpVersion": "HTTP/1.1", + "cookies": [], + "headers": [ + { + "name": "Accept", + "value": "*/*" + } + ], + "queryString": [ + { + "name": "module", + "value": "true" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": -1, + "statusText": "", + "httpVersion": "HTTP/1.1", + "cookies": [], + "headers": [], + "content": { + "size": -1, + "mimeType": "x-unknown" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": -1 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.481Z", + "time": 0.527, + "request": { + "method": "GET", + "url": "https://github.com/diffplug/selfie/security/overall-count", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/diffplug/selfie/security/overall-count" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "text/fragment+html" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-fetch-nonce-to-validate", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=14400, private" + }, + { + "name": "content-length", + "value": "0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "text/fragment+html; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "referrer-policy", + "value": "no-referrer-when-downgrade" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:1844BE:18A641:68BB56C5" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "text/fragment+html; charset=utf-8", + "text": "" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.527 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.636Z", + "time": 0.373, + "request": { + "method": "GET", + "url": "https://github.com/suggestions/issue/2869649024?mention_suggester=1&user_avatar=1&repository_id=616728028", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/suggestions/issue/2869649024?mention_suggester=1&user_avatar=1&repository_id=616728028" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "github-verified-fetch", + "value": "true" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [ + { + "name": "mention_suggester", + "value": "1" + }, + { + "name": "user_avatar", + "value": "1" + }, + { + "name": "repository_id", + "value": "616728028" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "W/\"1ab0013ea01172e218cfa76aaf6f8e48\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:184582:18A700:68BB56C5" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "[{\"type\":\"user\",\"id\":2924992,\"login\":\"oss-test-user\",\"name\":\"Ned Twigg\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/2924992?v=4\",\"participant\":true},{\"type\":\"user\",\"id\":36124,\"login\":\"oss-test-user\",\"name\":\"Stein Martin Hustad\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/36124?v=4\"},{\"type\":\"user\",\"id\":1301129,\"login\":\"oss-test-user\",\"name\":\"Edgar Espina\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/1301129?v=4\"},{\"type\":\"user\",\"id\":3778875,\"login\":\"oss-test-user\",\"name\":\"Michael Olšavský\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/3778875?v=4\"},{\"type\":\"user\",\"id\":9659564,\"login\":\"oss-test-user\",\"name\":\"Nathan Regner\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/9659564?v=4\"},{\"type\":\"user\",\"id\":15790480,\"login\":\"oss-test-user\",\"name\":\"Todd\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/15790480?v=4\"},{\"type\":\"user\",\"id\":35294802,\"login\":\"oss-test-user\",\"name\":\"Saad Malik Paracha\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/35294802?v=4\"},{\"type\":\"user\",\"id\":52329388,\"login\":\"oss-test-user\",\"name\":\"Stephen Lewchuk\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/52329388?v=4\"},{\"type\":\"user\",\"id\":81444630,\"login\":\"oss-test-user\",\"name\":\"Selina Delgado\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/81444630?v=4\"},{\"type\":\"user\",\"id\":111702494,\"login\":\"oss-test-user\",\"name\":\"Edwin Ye\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/111702494?v=4\"},{\"type\":\"user\",\"id\":112027012,\"login\":\"oss-test-user\",\"name\":\"\",\"avatarUrl\":\"https://avatars.githubusercontent.com/u/112027012?v=4\"}]" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.373 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.636Z", + "time": 0.649, + "request": { + "method": "GET", + "url": "https://github.com/suggestions/issue/2869649024?issue_suggester=1&repository_id=616728028", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/suggestions/issue/2869649024?issue_suggester=1&repository_id=616728028" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "github-verified-fetch", + "value": "true" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [ + { + "name": "issue_suggester", + "value": "1" + }, + { + "name": "repository_id", + "value": "616728028" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "W/\"5311cd5a234f341d2b1f671115410bec\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:184582:18A701:68BB56C5" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "{\"suggestions\":[{\"id\":2101474379,\"number\":129,\"title\":\"Dependency Dashboard\",\"type\":\"issue_open\"},{\"id\":3297395028,\"number\":547,\"title\":\"plusOrReplace example not working in Java\",\"type\":\"issue_open\"},{\"id\":3282361921,\"number\":546,\"title\":\"Update dependency prettier-plugin-tailwindcss to v0.6.14 - autoclosed\",\"type\":\"pull_request\"},{\"id\":3282055134,\"number\":544,\"title\":\"Update dependency org.assertj:assertj-core to v3.27.3\",\"type\":\"pull_request\"},{\"id\":3282361595,\"number\":545,\"title\":\"Update dependency @tailwindcss/typography to v0.5.16\",\"type\":\"pull_request\"},{\"id\":3213546413,\"number\":543,\"title\":\"When env vars have different value depending on case, throw error\",\"type\":\"issue_open\"},{\"id\":3162770495,\"number\":542,\"title\":\"[jvm] NullPointerException in SnapshotSystemJUnit5\",\"type\":\"issue_open\"},{\"id\":3147103292,\"number\":539,\"title\":\"Update dependency next to v14.2.30 [SECURITY]\",\"type\":\"pull_request\"},{\"id\":3157355461,\"number\":541,\"title\":\"[Enhancment] Calling expectSelfie() from another package\",\"type\":\"issue_open\"},{\"id\":3153397799,\"number\":540,\"title\":\"[jvm] Snapshots are not being written to disk when there are tests with numbered names\",\"type\":\"issue_open\"},{\"id\":3104490065,\"number\":536,\"title\":\"#81: Implement ignoring of multiline strings and comments for //selfieonce\",\"type\":\"pull_request\"},{\"id\":3105382472,\"number\":537,\"title\":\"[jvm] Address kotlin compiler warnings\",\"type\":\"issue_open\"},{\"id\":3105394586,\"number\":538,\"title\":\"[jvm] Gradle cache and parallel builds\",\"type\":\"issue_open\"},{\"id\":3095805227,\"number\":535,\"title\":\"Update blowdryer-diffplug to 9.0.0.\",\"type\":\"pull_request\"},{\"id\":3077274113,\"number\":534,\"title\":\"Fix race conditions writing snapshots when junit.jupiter.execution.parallel.enabled is true\",\"type\":\"pull_request\"},{\"id\":3026957112,\"number\":533,\"title\":\"Make sure that we compile to JRE 11.\",\"type\":\"pull_request\"},{\"id\":2936662801,\"number\":528,\"title\":\"[jvm] restore support for JRE 11\",\"type\":\"issue_closed\"},{\"id\":3024965330,\"number\":531,\"title\":\"[jvm] ClassCastException in ArraySet\",\"type\":\"issue_closed\"},{\"id\":2951975965,\"number\":529,\"title\":\"toMatchDisk throws StringIndexOutOfBoundsException when serializing an empty snapshot\",\"type\":\"issue_closed\"},{\"id\":2896522241,\"number\":526,\"title\":\"Off-by-one in the error message for a VCR key mismatch.\",\"type\":\"pull_request\"},{\"id\":3020997349,\"number\":530,\"title\":\"Fix StringIndexOutOfBounds when a snapshot has an \\\"empty\\\" before\",\"type\":\"pull_request\"},{\"id\":3025253282,\"number\":532,\"title\":\"Prevent ClassCastException during ArraySet sorting\",\"type\":\"pull_request\"},{\"id\":2919310059,\"number\":527,\"title\":\"[jvm] better error message when a test exists in a transparent package\",\"type\":\"issue_open\"},{\"id\":2893183869,\"number\":525,\"title\":\"Fix vcr\",\"type\":\"pull_request\"},{\"id\":2893103808,\"number\":524,\"title\":\"Bump gradle to latest.\",\"type\":\"pull_request\"},{\"id\":2869647038,\"number\":522,\"title\":\"[jvm] selfie vcr should support java.io.Serializable\",\"type\":\"issue_open\"},{\"id\":2869636729,\"number\":521,\"title\":\"[jvm] better error checking when we can't find test file\",\"type\":\"issue_open\"},{\"id\":2867526737,\"number\":517,\"title\":\"Add \\\"VCR\\\" functionality\",\"type\":\"pull_request\"},{\"id\":2868235516,\"number\":520,\"title\":\"[py] add VCR functionality\",\"type\":\"issue_open\"},{\"id\":2868233011,\"number\":519,\"title\":\"[py] facet parsing bug\",\"type\":\"issue_open\"},{\"id\":2868054726,\"number\":518,\"title\":\"Fix facet parsing\",\"type\":\"pull_request\"},{\"id\":2864636979,\"number\":516,\"title\":\"[py] consequences of allowing snapshots based on repr\",\"type\":\"issue_open\"},{\"id\":2836668482,\"number\":515,\"title\":\"Add native support for JUnit 4\",\"type\":\"pull_request\"},{\"id\":2808598301,\"number\":514,\"title\":\"Remove requirement to not have \\\"/\\\" in test names? (Junit 5)\",\"type\":\"issue_open\"},{\"id\":2764820933,\"number\":511,\"title\":\"Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.7.3\",\"type\":\"pull_request\"},{\"id\":2764763755,\"number\":509,\"title\":\"Update dependency com.aallam.openai:openai-client-bom to v3.8.2\",\"type\":\"pull_request\"},{\"id\":2764820918,\"number\":510,\"title\":\"Update dependency org.assertj:assertj-core to v3.27.0\",\"type\":\"pull_request\"},{\"id\":2768395397,\"number\":512,\"title\":\"Update dependency next to v14.2.21 [SECURITY]\",\"type\":\"pull_request\"},{\"id\":2778677065,\"number\":513,\"title\":\"User modifies test code while it is running, which jams the inline snapshot\",\"type\":\"issue_open\"},{\"id\":2764763735,\"number\":508,\"title\":\"Update dependency autoprefixer to v10.4.20\",\"type\":\"pull_request\"},{\"id\":2764561693,\"number\":507,\"title\":\"A single leading space should not override an otherwise 100% tab-indented file\",\"type\":\"pull_request\"},{\"id\":2763495302,\"number\":506,\"title\":\"Leading tab / space detection shouldn't get thrown off by a single leading space.\",\"type\":\"issue_closed\"},{\"id\":2748552402,\"number\":505,\"title\":\"Update dependency next to v14.2.15 [SECURITY]\",\"type\":\"pull_request\"},{\"id\":2743287840,\"number\":503,\"title\":\"Publish 1.0 of the python packages\",\"type\":\"pull_request\"},{\"id\":2743660306,\"number\":504,\"title\":\"Update social embed images\",\"type\":\"issue_open\"},{\"id\":2743119988,\"number\":502,\"title\":\"Final cleanup before publish\",\"type\":\"pull_request\"},{\"id\":2330262365,\"number\":415,\"title\":\"website improvements\",\"type\":\"issue_closed\"},{\"id\":2106163225,\"number\":170,\"title\":\"Python implementation (done!)\",\"type\":\"issue_closed\"},{\"id\":2069248597,\"number\":85,\"title\":\"JS / .NET / Go / other langauges\",\"type\":\"issue_open\"},{\"id\":2358374121,\"number\":445,\"title\":\"toBe parse failure should be ignored if we are planning to overwrite the value anyway\",\"type\":\"issue_closed\"},{\"id\":2743107184,\"number\":501,\"title\":\"[py] better error messages for snapshot mismatch\",\"type\":\"issue_open\"},{\"id\":2743024057,\"number\":500,\"title\":\"Fixup the JVM build\",\"type\":\"pull_request\"},{\"id\":2727652645,\"number\":489,\"title\":\"Make a section somewhere to link to articles & tutorials\",\"type\":\"issue_open\"},{\"id\":2550998652,\"number\":474,\"title\":\"[jvm] CI error message should be more helpful\",\"type\":\"issue_closed\"},{\"id\":2596122720,\"number\":482,\"title\":\"fluent API for snapshotting only specific subsets of a snapshot\",\"type\":\"issue_open\"},{\"id\":2238355744,\"number\":319,\"title\":\"Create CacheExample.py\",\"type\":\"issue_closed\"},{\"id\":2226696240,\"number\":304,\"title\":\"docs for Python\",\"type\":\"issue_closed\"},{\"id\":2743016763,\"number\":499,\"title\":\"Finish up caching for Python\",\"type\":\"pull_request\"},{\"id\":2280063616,\"number\":382,\"title\":\"python: escape leading whitespace\",\"type\":\"issue_closed\"},{\"id\":2226688600,\"number\":303,\"title\":\"facets for python\",\"type\":\"issue_closed\"},{\"id\":2240711395,\"number\":323,\"title\":\"Lens for python\",\"type\":\"issue_closed\"},{\"id\":2240737118,\"number\":324,\"title\":\"CompoundLens for python\",\"type\":\"issue_closed\"},{\"id\":2269276028,\"number\":365,\"title\":\"python: to_be_file\",\"type\":\"issue_closed\"},{\"id\":2478941884,\"number\":469,\"title\":\"[python] investigate switching to uv\",\"type\":\"issue_closed\"},{\"id\":2738731253,\"number\":498,\"title\":\"Docs for 1.0\",\"type\":\"pull_request\"},{\"id\":2736685491,\"number\":496,\"title\":\"feat: implement binary selfie methods in Python\",\"type\":\"pull_request\"},{\"id\":2736797824,\"number\":497,\"title\":\"docs: update Python documentation to reflect implementation status\",\"type\":\"pull_request\"},{\"id\":2735303786,\"number\":495,\"title\":\"Python: Implement missing features for parity with JVM\",\"type\":\"pull_request\"},{\"id\":2735201323,\"number\":494,\"title\":\"refactor: hide SnapshotValue from Snapshot API\",\"type\":\"pull_request\"},{\"id\":2735012522,\"number\":493,\"title\":\"Migrate python from poetry to uv\",\"type\":\"pull_request\"},{\"id\":2734992304,\"number\":492,\"title\":\"Migrate Python projects from Poetry to UV\",\"type\":\"pull_request\"},{\"id\":2732272618,\"number\":490,\"title\":\"Migrate Python projects from poetry to uv\",\"type\":\"pull_request\"},{\"id\":2499193435,\"number\":472,\"title\":\"chore(deps): update dependency pyright to v1.1.389 - autoclosed\",\"type\":\"pull_request\"},{\"id\":2734378266,\"number\":491,\"title\":\"chore: update Python dependencies\",\"type\":\"pull_request\"},{\"id\":2367802118,\"number\":458,\"title\":\"fix(deps): update dependency shiki to v1 - autoclosed\",\"type\":\"pull_request\"},{\"id\":2673916513,\"number\":488,\"title\":\"Confusing when a got-away-with-it multiple snapshot stops getting away with it\",\"type\":\"issue_open\"},{\"id\":2628263728,\"number\":487,\"title\":\"fix(deps): update dependency @tailwindcss/typography to v0.5.15\",\"type\":\"pull_request\"},{\"id\":2628263704,\"number\":486,\"title\":\"fix(deps): update dependency @headlessui/react to v2.1.10\",\"type\":\"pull_request\"},{\"id\":2628181882,\"number\":485,\"title\":\"chore(deps): update dependency prettier-plugin-tailwindcss to v0.6.8\",\"type\":\"pull_request\"},{\"id\":2628181848,\"number\":484,\"title\":\"chore(deps): update dependency @jothepro/doxygen-awesome-css to v2.3.4\",\"type\":\"pull_request\"},{\"id\":2615523090,\"number\":483,\"title\":\"chore(deps): update dependency werkzeug to v3.0.6 [security]\",\"type\":\"pull_request\"},{\"id\":2581632096,\"number\":481,\"title\":\"Add documentation how to setup for android\",\"type\":\"issue_open\"},{\"id\":2570038962,\"number\":480,\"title\":\"[Feature Request] Opt-In to write Snapshots to other source roots\",\"type\":\"issue_closed\"},{\"id\":2567647262,\"number\":479,\"title\":\"[jvm] fix multi-string toBe\",\"type\":\"pull_request\"},{\"id\":2559630566,\"number\":478,\"title\":\"Bump jvm dependencies\",\"type\":\"pull_request\"},{\"id\":2558099580,\"number\":476,\"title\":\"chore(deps): update kotlin monorepo to v2.0.20\",\"type\":\"pull_request\"},{\"id\":2558355120,\"number\":477,\"title\":\"Better error messages\",\"type\":\"pull_request\"},{\"id\":2558099444,\"number\":475,\"title\":\"chore(deps): update dependency werkzeug to v3.0.4\",\"type\":\"pull_request\"},{\"id\":2499160469,\"number\":470,\"title\":\"chore(deps): update dependency prettier to v3.3.3\",\"type\":\"pull_request\"},{\"id\":2499193427,\"number\":471,\"title\":\"chore(deps): update dependency prettier-plugin-tailwindcss to v0.6.6\",\"type\":\"pull_request\"},{\"id\":2532891290,\"number\":473,\"title\":\"fix(deps): update dependency next to v14.2.10 [security]\",\"type\":\"pull_request\"},{\"id\":2407062672,\"number\":468,\"title\":\"Add instructions for always overwriting when using Gradle\",\"type\":\"pull_request\"},{\"id\":2404131467,\"number\":467,\"title\":\"DiskSelfie now makes the Snapshot actual value public\",\"type\":\"pull_request\"},{\"id\":2381932025,\"number\":466,\"title\":\"Relax the renovate.json configuration.\",\"type\":\"pull_request\"},{\"id\":2366040572,\"number\":446,\"title\":\"Demonstrate facets in python\",\"type\":\"pull_request\"},{\"id\":2381486218,\"number\":461,\"title\":\"fix(deps): update dependency openai to v1.35.7\",\"type\":\"pull_request\"},{\"id\":2381341074,\"number\":459,\"title\":\"chore(deps): update dependency pyright to v1.1.369\",\"type\":\"pull_request\"},{\"id\":2381341195,\"number\":460,\"title\":\"fix(deps): update dependency framer-motion to v11.2.12\",\"type\":\"pull_request\"},{\"id\":2381486262,\"number\":462,\"title\":\"fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.7.1\",\"type\":\"pull_request\"},{\"id\":2381572375,\"number\":463,\"title\":\"fix(deps): update dependency zustand to v4.5.4\",\"type\":\"pull_request\"},{\"id\":2381572409,\"number\":464,\"title\":\"fix(deps): update junit5 monorepo to v5.10.3\",\"type\":\"pull_request\"},{\"id\":2381667818,\"number\":465,\"title\":\"chore(deps): update dependency ruff to ^0.5.0\",\"type\":\"pull_request\"},{\"id\":2367623967,\"number\":454,\"title\":\"chore(deps): update python docker tag to v3.12\",\"type\":\"pull_request\"},{\"id\":2201803490,\"number\":278,\"title\":\"Porting reference\",\"type\":\"pull_request\"},{\"id\":2367770777,\"number\":456,\"title\":\"fix(deps): update dependency com.aallam.openai:openai-client-bom to v3.8.1\",\"type\":\"pull_request\"},{\"id\":2367801466,\"number\":457,\"title\":\"fix(deps): update dependency openai to v1.35.6\",\"type\":\"pull_request\"},{\"id\":2367770675,\"number\":455,\"title\":\"fix(deps): update dependency @headlessui/react to v2.1.1\",\"type\":\"pull_request\"},{\"id\":2367623943,\"number\":453,\"title\":\"chore(deps): update dependency typescript to v5.5.2\",\"type\":\"pull_request\"},{\"id\":2367551502,\"number\":452,\"title\":\"chore(deps): update dependency node to v20.15.0\",\"type\":\"pull_request\"},{\"id\":2367550969,\"number\":451,\"title\":\"fix(deps): update jooby to v3.2.3\",\"type\":\"pull_request\"},{\"id\":2355144377,\"number\":443,\"title\":\"fix(deps): update ver_kotest to v5.9.1\",\"type\":\"pull_request\"},{\"id\":2367450648,\"number\":447,\"title\":\"chore(deps): update dependency prettier-plugin-tailwindcss to v0.6.5\",\"type\":\"pull_request\"},{\"id\":2367450996,\"number\":448,\"title\":\"chore(deps): update dependency pyright to v1.1.368\",\"type\":\"pull_request\"},{\"id\":2367458438,\"number\":449,\"title\":\"chore(deps): update dependency ruff to v0.4.10\",\"type\":\"pull_request\"},{\"id\":2367458669,\"number\":450,\"title\":\"fix(deps): update dependency framer-motion to v11.2.11\",\"type\":\"pull_request\"},{\"id\":2355152119,\"number\":444,\"title\":\"python: test against older versions of Python\",\"type\":\"pull_request\"},{\"id\":2069240878,\"number\":84,\"title\":\"Javascript roadmap\",\"type\":\"issue_open\"},{\"id\":2122922286,\"number\":202,\"title\":\"fix(deps): update dependency shiki to v1 - autoclosed\",\"type\":\"pull_request\"},{\"id\":2339327209,\"number\":426,\"title\":\"python: add lens and camera\",\"type\":\"pull_request\"},{\"id\":2354608129,\"number\":440,\"title\":\"Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.7.0\",\"type\":\"pull_request\"},{\"id\":2354546234,\"number\":438,\"title\":\"Update dependency acorn to v8.12.0\",\"type\":\"pull_request\"},{\"id\":2354608327,\"number\":441,\"title\":\"Update dependency prettier to v3.3.2\",\"type\":\"pull_request\"},{\"id\":2354546826,\"number\":439,\"title\":\"Update dependency openai to v1.34.0\",\"type\":\"pull_request\"},{\"id\":2354316873,\"number\":437,\"title\":\"Update nextjs monorepo to v14.2.4\",\"type\":\"pull_request\"},{\"id\":2354316465,\"number\":436,\"title\":\"Update dependency prettier-plugin-tailwindcss to v0.6.4\",\"type\":\"pull_request\"},{\"id\":2341438903,\"number\":430,\"title\":\"Update dependency ruff to v0.4.9\",\"type\":\"pull_request\"},{\"id\":2354693986,\"number\":442,\"title\":\"Update ver_KOTEST to v5.9.1\",\"type\":\"pull_request\"},{\"id\":2341312052,\"number\":427,\"title\":\"Update dependency prettier-plugin-tailwindcss to v0.6.3\",\"type\":\"pull_request\"},{\"id\":2341438758,\"number\":429,\"title\":\"Update dependency pytest to v8.2.2\",\"type\":\"pull_request\"},{\"id\":2341521761,\"number\":431,\"title\":\"Update dependency tailwindcss to v3.4.4\",\"type\":\"pull_request\"},{\"id\":2341522010,\"number\":432,\"title\":\"Update dependency tox to v4.15.1\",\"type\":\"pull_request\"},{\"id\":2341570369,\"number\":433,\"title\":\"Update jooby to v3.2.0\",\"type\":\"pull_request\"},{\"id\":2341570466,\"number\":434,\"title\":\"Update dependency @types/node to v20.14.2\",\"type\":\"pull_request\"},{\"id\":2341630512,\"number\":435,\"title\":\"Update dependency openai to v1.33.0\",\"type\":\"pull_request\"},{\"id\":2341312296,\"number\":428,\"title\":\"Update dependency pyright to v1.1.367\",\"type\":\"pull_request\"},{\"id\":2339250559,\"number\":425,\"title\":\"Fix default arguments for cacheSelfie.\",\"type\":\"pull_request\"},{\"id\":2339144065,\"number\":424,\"title\":\"Smooth scroll modifications\",\"type\":\"pull_request\"},{\"id\":2339019488,\"number\":423,\"title\":\"Use clsx/lite\",\"type\":\"pull_request\"},{\"id\":2338991500,\"number\":422,\"title\":\"Website Improvements\",\"type\":\"pull_request\"},{\"id\":2290887307,\"number\":395,\"title\":\"Update dependency eslint to v9\",\"type\":\"pull_request\"},{\"id\":2336323466,\"number\":421,\"title\":\"Add expectSelfies for suspend fun\",\"type\":\"pull_request\"},{\"id\":2101538102,\"number\":131,\"title\":\"Update dependency flexsearch to v0.7.43\",\"type\":\"pull_request\"},{\"id\":2332679511,\"number\":420,\"title\":\"Kotlin/JS - Unify PerCharacterEscaper\",\"type\":\"pull_request\"},{\"id\":2332485395,\"number\":419,\"title\":\"Kotlin/JS - core selfie-lib\",\"type\":\"pull_request\"},{\"id\":2332288382,\"number\":418,\"title\":\"Enforce no java multiline strings\",\"type\":\"pull_request\"},{\"id\":2332237194,\"number\":417,\"title\":\"Provide more debugging info when a snapshot gets set multiple times\",\"type\":\"pull_request\"},{\"id\":2332226902,\"number\":416,\"title\":\"Added Selfie.expectSelfie for easy \\\"multi-asserts\\\"\",\"type\":\"pull_request\"},{\"id\":2328674689,\"number\":406,\"title\":\"handle multiline java strings as comma-delimited single-line strings\",\"type\":\"pull_request\"},{\"id\":2329030682,\"number\":413,\"title\":\"fix(deps): update dependency org.assertj:assertj-core to v3.26.0\",\"type\":\"pull_request\"},{\"id\":2328982297,\"number\":412,\"title\":\"chore(deps): update plugin dev.adamko.dokkatoo-html to v2.3.1\",\"type\":\"pull_request\"},{\"id\":2329030844,\"number\":414,\"title\":\"chore(deps): update kotlin monorepo to v2 (major)\",\"type\":\"pull_request\"},{\"id\":2328982247,\"number\":411,\"title\":\"chore(deps): update dependency prettier-plugin-tailwindcss to ^0.6.0\",\"type\":\"pull_request\"},{\"id\":2328905229,\"number\":410,\"title\":\"chore(deps): update dependency gradle to v8.8\",\"type\":\"pull_request\"},{\"id\":2328903868,\"number\":409,\"title\":\"fix(deps): update dependency openai to v1.30.5\",\"type\":\"pull_request\"},{\"id\":2328827164,\"number\":408,\"title\":\"fix(deps): update dependency @headlessui/react to v2.0.4\",\"type\":\"pull_request\"},{\"id\":2328826944,\"number\":407,\"title\":\"chore(deps): update dependency ruff to v0.4.7\",\"type\":\"pull_request\"},{\"id\":2303827523,\"number\":398,\"title\":\"chore(deps): update dependency @jothepro/doxygen-awesome-css to v2.3.3\",\"type\":\"pull_request\"},{\"id\":2303940152,\"number\":400,\"title\":\"chore(deps): update dependency pyright to v1.1.365\",\"type\":\"pull_request\"},{\"id\":2303827598,\"number\":399,\"title\":\"chore(deps): update dependency node to v20.14.0\",\"type\":\"pull_request\"},{\"id\":2303940320,\"number\":401,\"title\":\"fix(deps): update dependency framer-motion to v11.2.10\",\"type\":\"pull_request\"},{\"id\":2304827403,\"number\":404,\"title\":\"chore(deps): update dependency pytest to v8.2.1\",\"type\":\"pull_request\"},{\"id\":2328426667,\"number\":405,\"title\":\"Bump kotlin to 2.0.0\",\"type\":\"pull_request\"},{\"id\":2304084669,\"number\":403,\"title\":\"fix(deps): update jooby to v3.1.2\",\"type\":\"pull_request\"},{\"id\":2139923733,\"number\":234,\"title\":\"Update plugin dev.adamko.dokkatoo-html to v2.1.0\",\"type\":\"pull_request\"},{\"id\":2304084622,\"number\":402,\"title\":\"fix(deps): update dependency openai to v1.30.4\",\"type\":\"pull_request\"},{\"id\":2286986687,\"number\":386,\"title\":\"py: leading whitespace and literal fixes\",\"type\":\"pull_request\"},{\"id\":6676833,\"number\":397,\"title\":\"Is there an option to force multiline strings on toBe_TODO()?\",\"type\":\"discussion\"},{\"id\":2290887389,\"number\":396,\"title\":\"fix(deps): update dependency @headlessui/react to v2\",\"type\":\"pull_request\"},{\"id\":2290817821,\"number\":394,\"title\":\"fix(deps): update ver_kotest to v5.9.0\",\"type\":\"pull_request\"},{\"id\":2290817739,\"number\":393,\"title\":\"fix(deps): update dependency openai to v1.28.1\",\"type\":\"pull_request\"},{\"id\":2290771928,\"number\":392,\"title\":\"chore(deps): update dependency node to v20.13.1\",\"type\":\"pull_request\"},{\"id\":2290771684,\"number\":391,\"title\":\"fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.8.1\",\"type\":\"pull_request\"},{\"id\":2290542164,\"number\":388,\"title\":\"chore(deps): update dependency ruff to v0.4.4\",\"type\":\"pull_request\"},{\"id\":2290678253,\"number\":390,\"title\":\"fix(deps): update dependency framer-motion to v11.1.9\",\"type\":\"pull_request\"},{\"id\":2290677920,\"number\":389,\"title\":\"chore(deps): update kotlin monorepo to v1.9.24\",\"type\":\"pull_request\"},{\"id\":2290541983,\"number\":387,\"title\":\"chore(deps): update dependency pyright to v1.1.362\",\"type\":\"pull_request\"},{\"id\":2229497513,\"number\":316,\"title\":\"chore(deps): update dependency eslint to v9 - autoclosed\",\"type\":\"pull_request\"},{\"id\":2272171720,\"number\":367,\"title\":\"Do not remove stale snapshot files when readonly is true\",\"type\":\"pull_request\"},{\"id\":2286799995,\"number\":385,\"title\":\"py: fix bugs related to switching a snapshot between string and repr\",\"type\":\"pull_request\"},{\"id\":2286350126,\"number\":384,\"title\":\"py: fixup multiline string literal roundtripping\",\"type\":\"pull_request\"},{\"id\":2280155118,\"number\":383,\"title\":\"Make ruff more strict\",\"type\":\"pull_request\"},{\"id\":2278784469,\"number\":377,\"title\":\"fix(deps): update react monorepo to v18.3.1\",\"type\":\"pull_request\"},{\"id\":2279339241,\"number\":379,\"title\":\"fix(deps): update ver_kotest to v5.8.1\",\"type\":\"pull_request\"},{\"id\":2279709233,\"number\":381,\"title\":\"fix(deps): update dependency openai to v1.25.2\",\"type\":\"pull_request\"},{\"id\":2279346989,\"number\":380,\"title\":\"Sort imports\",\"type\":\"pull_request\"},{\"id\":2270021299,\"number\":366,\"title\":\"python to_be_file\",\"type\":\"pull_request\"},{\"id\":2248670597,\"number\":333,\"title\":\"Python: type-sensitivity in expectSelfie\",\"type\":\"issue_closed\"},{\"id\":2279332926,\"number\":378,\"title\":\"python: use repr for everything except str and bytes\",\"type\":\"pull_request\"},{\"id\":2226687420,\"number\":302,\"title\":\"cacheSelfie for python\",\"type\":\"issue_closed\"},{\"id\":2226252898,\"number\":296,\"title\":\"pytest-selfie initial acceptance tests\",\"type\":\"issue_closed\"},{\"id\":2226255912,\"number\":298,\"title\":\"python schedule\",\"type\":\"issue_closed\"},{\"id\":2226257195,\"number\":299,\"title\":\"pytest-selfie: FS.assertFailed\",\"type\":\"issue_closed\"},{\"id\":2258038132,\"number\":350,\"title\":\"pytest plugin deepdive\",\"type\":\"issue_closed\"},{\"id\":2248858813,\"number\":335,\"title\":\"Python: IntSelfie and BooleanSelfie\",\"type\":\"issue_closed\"},{\"id\":2278752393,\"number\":376,\"title\":\"Update dependency tox to v4.15.0\",\"type\":\"pull_request\"},{\"id\":2278752306,\"number\":375,\"title\":\"Update dependency openai to v1.25.1\",\"type\":\"pull_request\"},{\"id\":2278671654,\"number\":371,\"title\":\"Update dependency @types/node to v20.12.8\",\"type\":\"pull_request\"},{\"id\":2278671680,\"number\":372,\"title\":\"Update dependency com.aallam.openai:openai-client-bom to v3.7.2\",\"type\":\"pull_request\"},{\"id\":2278728226,\"number\":373,\"title\":\"Update dependency pyright to v1.1.361\",\"type\":\"pull_request\"},{\"id\":2278728346,\"number\":374,\"title\":\"Update dependency ruff to v0.4.3\",\"type\":\"pull_request\"},{\"id\":2276655425,\"number\":369,\"title\":\"MultiLine string literal fix\",\"type\":\"pull_request\"},{\"id\":2278232131,\"number\":370,\"title\":\"toMatchDisk_TODO throws error when writing multiple snapshots to disk during parameterized tests, succeeds on follow ups.\",\"type\":\"issue_open\"},{\"id\":2274346725,\"number\":368,\"title\":\"Added ondisk function: read and write Disk (Not Working)\",\"type\":\"pull_request\"},{\"id\":2264331596,\"number\":355,\"title\":\"Implement assertfailed\",\"type\":\"pull_request\"},{\"id\":2251330968,\"number\":337,\"title\":\"Make our API consisten with https://github.com/diffplug/selfie/issues/333\",\"type\":\"issue_closed\"},{\"id\":2266735527,\"number\":359,\"title\":\"Update dependency clsx to v2.1.1\",\"type\":\"pull_request\"},{\"id\":2266735383,\"number\":358,\"title\":\"Update dependency @tailwindcss/typography to v0.5.13\",\"type\":\"pull_request\"},{\"id\":2266836576,\"number\":360,\"title\":\"Update dependency openai to v1.24.0\",\"type\":\"pull_request\"},{\"id\":2266836678,\"number\":361,\"title\":\"Update dependency pyright to v1.1.360\",\"type\":\"pull_request\"},{\"id\":2266881106,\"number\":362,\"title\":\"Update dependency pytest to v8.2.0\",\"type\":\"pull_request\"},{\"id\":2266881231,\"number\":363,\"title\":\"Update dependency ruff to v0.4.2\",\"type\":\"pull_request\"},{\"id\":2266948754,\"number\":364,\"title\":\"Update nextjs monorepo to v14.2.3\",\"type\":\"pull_request\"},{\"id\":2265021098,\"number\":357,\"title\":\"Update Docs\",\"type\":\"pull_request\"},{\"id\":2264969757,\"number\":356,\"title\":\"cacheSelfie.py\",\"type\":\"pull_request\"},{\"id\":2262380119,\"number\":354,\"title\":\"Simple inline test\",\"type\":\"pull_request\"},{\"id\":2251332327,\"number\":338,\"title\":\"Docs: type sensitivity\",\"type\":\"issue_closed\"},{\"id\":2248732001,\"number\":334,\"title\":\"Fix the python landing page (but keep hidden) - blocked\",\"type\":\"pull_request\"},{\"id\":2261834662,\"number\":353,\"title\":\"Fix pythong type error introduced in #352\",\"type\":\"pull_request\"},{\"id\":2260134188,\"number\":352,\"title\":\"IntSelfie and BooleanSelfie\",\"type\":\"pull_request\"},{\"id\":2259409907,\"number\":351,\"title\":\"Simple comment remover\",\"type\":\"pull_request\"},{\"id\":2240561464,\"number\":321,\"title\":\"pytest snapshot_folder_name and allow_multiple_equivalent_writes_to_one_location\",\"type\":\"issue_open\"},{\"id\":2254724225,\"number\":346,\"title\":\"IntSelfie and BooleanSelfie\",\"type\":\"pull_request\"},{\"id\":2249191640,\"number\":336,\"title\":\"Make pytest-snapshot closer to kotest\",\"type\":\"pull_request\"},{\"id\":2254773602,\"number\":349,\"title\":\"Update gradle/wrapper-validation-action action to v3\",\"type\":\"pull_request\"},{\"id\":2254743580,\"number\":348,\"title\":\"Update nextjs monorepo to v14.2.2\",\"type\":\"pull_request\"},{\"id\":2254742847,\"number\":347,\"title\":\"Update dependency ruff to ^0.4.0\",\"type\":\"pull_request\"},{\"id\":2254291277,\"number\":340,\"title\":\"Update dependency prettier-plugin-tailwindcss to v0.5.14\",\"type\":\"pull_request\"},{\"id\":2254412025,\"number\":344,\"title\":\"Update dependency openai to v1.23.2\",\"type\":\"pull_request\"},{\"id\":2254290971,\"number\":339,\"title\":\"Update dependency @headlessui/react to v1.7.19\",\"type\":\"pull_request\"},{\"id\":2254359356,\"number\":341,\"title\":\"Update dependency pyright to v1.1.359\",\"type\":\"pull_request\"},{\"id\":2254359382,\"number\":342,\"title\":\"Update jooby to v3.0.10\",\"type\":\"pull_request\"},{\"id\":2254411664,\"number\":343,\"title\":\"Update dependency framer-motion to v11.1.7\",\"type\":\"pull_request\"},{\"id\":2254487773,\"number\":345,\"title\":\"Update dependency rehype-mdx-title to v3.1.0\",\"type\":\"pull_request\"},{\"id\":2238365494,\"number\":320,\"title\":\"SnapshotFile Now Using ArrayMap\",\"type\":\"pull_request\"},{\"id\":2240591475,\"number\":322,\"title\":\"Implement toy project for python\",\"type\":\"issue_closed\"},{\"id\":2226254829,\"number\":297,\"title\":\"python SnapshotFile\",\"type\":\"issue_closed\"},{\"id\":2237068144,\"number\":318,\"title\":\"Python Docs\",\"type\":\"pull_request\"},{\"id\":2226968375,\"number\":307,\"title\":\"ExpectSelfie and pytest integration\",\"type\":\"pull_request\"},{\"id\":2241231770,\"number\":326,\"title\":\"Update dependency framer-motion to v11.0.28\",\"type\":\"pull_request\"},{\"id\":2241419687,\"number\":331,\"title\":\"Update dependency openai to v1.17.1\",\"type\":\"pull_request\"},{\"id\":2241231993,\"number\":327,\"title\":\"Update dependency node to v20.12.2\",\"type\":\"pull_request\"},{\"id\":2241304849,\"number\":328,\"title\":\"Update dependency pyright to v1.1.358\",\"type\":\"pull_request\"},{\"id\":2241419308,\"number\":330,\"title\":\"Update dependency typescript to v5.4.5\",\"type\":\"pull_request\"},{\"id\":2241516289,\"number\":332,\"title\":\"Update nextjs monorepo to v14.2.1\",\"type\":\"pull_request\"},{\"id\":2241304981,\"number\":329,\"title\":\"Update dependency ruff to v0.3.7\",\"type\":\"pull_request\"},{\"id\":2240762251,\"number\":325,\"title\":\"SelfieGC for python\",\"type\":\"issue_open\"},{\"id\":2229566498,\"number\":317,\"title\":\"Add API docs for the Python\",\"type\":\"pull_request\"},{\"id\":2228997882,\"number\":308,\"title\":\"Update dependency com.aallam.openai:openai-client-bom to v3.7.1\",\"type\":\"pull_request\"},{\"id\":2228998021,\"number\":309,\"title\":\"Update dependency framer-motion to v11.0.25\",\"type\":\"pull_request\"},{\"id\":2229061450,\"number\":311,\"title\":\"Update dependency openai to v1.16.2\",\"type\":\"pull_request\"},{\"id\":2229119380,\"number\":313,\"title\":\"Update dependency ruff to v0.3.5\",\"type\":\"pull_request\"},{\"id\":2229061285,\"number\":310,\"title\":\"Update dependency node to v20.12.1\",\"type\":\"pull_request\"},{\"id\":2229119325,\"number\":312,\"title\":\"Update dependency pyright to v1.1.357\",\"type\":\"pull_request\"},{\"id\":2229177292,\"number\":314,\"title\":\"Update dependency typescript to v5.4.4\",\"type\":\"pull_request\"},{\"id\":2229177316,\"number\":315,\"title\":\"Update plugin io.github.gradle-nexus.publish-plugin to v2.0.0\",\"type\":\"pull_request\"},{\"id\":2203702679,\"number\":281,\"title\":\".NET port\",\"type\":\"pull_request\"},{\"id\":2226957100,\"number\":306,\"title\":\"expectSelfie and pytest integration\",\"type\":\"pull_request\"},{\"id\":2226684696,\"number\":301,\"title\":\"Scaffold for the python docs\",\"type\":\"pull_request\"},{\"id\":2226768021,\"number\":305,\"title\":\"LiteralString and LiteralStringTest\",\"type\":\"pull_request\"},{\"id\":2108510221,\"number\":177,\"title\":\"String constant too long\",\"type\":\"issue_open\"},{\"id\":2226476767,\"number\":300,\"title\":\"SnapshotFile Completed, Type Hint Has Been Added\",\"type\":\"pull_request\"},{\"id\":2216107513,\"number\":291,\"title\":\"Update dependency framer-motion to v11.0.24\",\"type\":\"pull_request\"},{\"id\":2216107420,\"number\":290,\"title\":\"Update dependency @tailwindcss/typography to v0.5.12\",\"type\":\"pull_request\"},{\"id\":2216254028,\"number\":292,\"title\":\"Update dependency prettier-plugin-tailwindcss to v0.5.13\",\"type\":\"pull_request\"},{\"id\":2216254778,\"number\":293,\"title\":\"Update dependency pyright to v1.1.356\",\"type\":\"pull_request\"},{\"id\":2216309760,\"number\":294,\"title\":\"Update dependency tailwindcss to v3.4.3\",\"type\":\"pull_request\"},{\"id\":2216309866,\"number\":295,\"title\":\"Update dependency node to v20.12.0\",\"type\":\"pull_request\"},{\"id\":2213943222,\"number\":289,\"title\":\"Skeleton of a pytest plugin\",\"type\":\"pull_request\"},{\"id\":2203884069,\"number\":288,\"title\":\"Update ver_OKIO to v3.9.0\",\"type\":\"pull_request\"},{\"id\":2203801193,\"number\":287,\"title\":\"Update ver_KOTEST to v5.8.1\",\"type\":\"pull_request\"},{\"id\":2203801129,\"number\":286,\"title\":\"Update dependency gradle to v8.7\",\"type\":\"pull_request\"},{\"id\":2203718320,\"number\":285,\"title\":\"Update nextjs monorepo to v14.1.4\",\"type\":\"pull_request\"},{\"id\":2203718100,\"number\":284,\"title\":\"Update dependency typescript to v5.4.3\",\"type\":\"pull_request\"},{\"id\":2203702902,\"number\":283,\"title\":\"Update dependency ruff to v0.3.4\",\"type\":\"pull_request\"},{\"id\":2203702852,\"number\":282,\"title\":\"Update dependency pyright to v1.1.355\",\"type\":\"pull_request\"},{\"id\":2203621874,\"number\":280,\"title\":\"Update dependency framer-motion to v11.0.20\",\"type\":\"pull_request\"},{\"id\":2203621653,\"number\":279,\"title\":\"Update dependency autoprefixer to v10.4.19\",\"type\":\"pull_request\"},{\"id\":2198200333,\"number\":277,\"title\":\"Better error messages for toBeFile\",\"type\":\"pull_request\"},{\"id\":2137120809,\"number\":226,\"title\":\"toBeFile has bad error message when the file doesn't exist\",\"type\":\"issue_closed\"},{\"id\":2196579236,\"number\":276,\"title\":\"Update renovate.json\",\"type\":\"pull_request\"},{\"id\":2189891165,\"number\":275,\"title\":\"Update dependency ruff to v0.3.3\",\"type\":\"pull_request\"},{\"id\":2189810451,\"number\":274,\"title\":\"Update dependency pyright to v1.1.354\",\"type\":\"pull_request\"},{\"id\":2189810189,\"number\":273,\"title\":\"Update dependency io.jooby:jooby-test to v3.0.9\",\"type\":\"pull_request\"},{\"id\":2189780663,\"number\":272,\"title\":\"Update dependency io.jooby:jooby-netty to v3.0.9\",\"type\":\"pull_request\"},{\"id\":2189780602,\"number\":271,\"title\":\"Update dependency io.jooby:jooby to v3.0.9\",\"type\":\"pull_request\"},{\"id\":2189665354,\"number\":270,\"title\":\"Update dependency framer-motion to v11.0.15\",\"type\":\"pull_request\"},{\"id\":2189665268,\"number\":269,\"title\":\"Update dependency @types/node to v20.11.30\",\"type\":\"pull_request\"},{\"id\":2177334359,\"number\":268,\"title\":\"Update dependency typescript to v5.4.2\",\"type\":\"pull_request\"},{\"id\":2177320064,\"number\":267,\"title\":\"Update dependency ruff to ^0.3.0\",\"type\":\"pull_request\"},{\"id\":2177320022,\"number\":266,\"title\":\"Update dependency pytest to v8.1.1\",\"type\":\"pull_request\"},{\"id\":2177043767,\"number\":260,\"title\":\"Update dependency prettier-plugin-tailwindcss to v0.5.12\",\"type\":\"pull_request\"},{\"id\":2176951816,\"number\":258,\"title\":\"Update dependency @types/node to v20.11.25\",\"type\":\"pull_request\"},{\"id\":2176951871,\"number\":259,\"title\":\"Update dependency jakarta.mail:jakarta.mail-api to v2.1.3\",\"type\":\"pull_request\"},{\"id\":2177044012,\"number\":261,\"title\":\"Update dependency pyright to v1.1.353\",\"type\":\"pull_request\"},{\"id\":2177070260,\"number\":262,\"title\":\"Update dependency zustand to v4.5.2\",\"type\":\"pull_request\"},{\"id\":2177070289,\"number\":263,\"title\":\"Update kotlin monorepo to v1.9.23\",\"type\":\"pull_request\"},{\"id\":2177151795,\"number\":264,\"title\":\"Update nextjs monorepo to v14.1.3\",\"type\":\"pull_request\"},{\"id\":2177151823,\"number\":265,\"title\":\"Update plugin org.jetbrains.dokka to v1.9.20\",\"type\":\"pull_request\"},{\"id\":2164872321,\"number\":254,\"title\":\"Update dependency io.jooby:jooby-netty to v3.0.8\",\"type\":\"pull_request\"},{\"id\":2164950617,\"number\":257,\"title\":\"Update dependency pytest to v8.0.2\",\"type\":\"pull_request\"},{\"id\":2164950585,\"number\":256,\"title\":\"Update dependency pyright to v1.1.352\",\"type\":\"pull_request\"},{\"id\":2164872341,\"number\":255,\"title\":\"Update dependency io.jooby:jooby-test to v3.0.8\",\"type\":\"pull_request\"},{\"id\":2164809064,\"number\":253,\"title\":\"Update dependency io.jooby:jooby to v3.0.8\",\"type\":\"pull_request\"},{\"id\":2164809033,\"number\":252,\"title\":\"Update dependency framer-motion to v11.0.8\",\"type\":\"pull_request\"},{\"id\":2164766873,\"number\":251,\"title\":\"Update dependency autoprefixer to v10.4.18\",\"type\":\"pull_request\"},{\"id\":2164766836,\"number\":250,\"title\":\"Update dependency @types/node to v20.11.24\",\"type\":\"pull_request\"},{\"id\":2161983583,\"number\":249,\"title\":\"Fix the way we've been using ruff\",\"type\":\"pull_request\"},{\"id\":2157431616,\"number\":248,\"title\":\"Skeleton of python implementation\",\"type\":\"pull_request\"},{\"id\":2152047860,\"number\":243,\"title\":\"Update dependency @types/node to v20.11.20\",\"type\":\"pull_request\"},{\"id\":2152101689,\"number\":246,\"title\":\"Update ver_KOTEST to v5.8.0\",\"type\":\"pull_request\"},{\"id\":2152047928,\"number\":244,\"title\":\"Update dependency framer-motion to v11.0.6\",\"type\":\"pull_request\"},{\"id\":2152101670,\"number\":245,\"title\":\"Update dependency eslint to v8.57.0\",\"type\":\"pull_request\"},{\"id\":2152380870,\"number\":247,\"title\":\"Make DiskStorage errors when running though Kotest lazy, so that we can use toBe anywhere.\",\"type\":\"pull_request\"},{\"id\":2146257725,\"number\":242,\"title\":\"Create first draft PR for my simple function \",\"type\":\"pull_request\"},{\"id\":2146251366,\"number\":241,\"title\":\"Create first draft PR for my simple function\",\"type\":\"pull_request\"},{\"id\":2145483074,\"number\":240,\"title\":\"Don't escape leading whitespace if we can safely avoid it\",\"type\":\"pull_request\"},{\"id\":2133331277,\"number\":220,\"title\":\"Escaping leading space in multiline string literals is annoying.\",\"type\":\"issue_closed\"},{\"id\":2145427665,\"number\":239,\"title\":\"Kotest 5.4.0 is the oldest we support.\",\"type\":\"pull_request\"},{\"id\":2129252065,\"number\":215,\"title\":\"Add memoizing API\",\"type\":\"issue_closed\"},{\"id\":2135010810,\"number\":222,\"title\":\"Document memoize (maybe lazySelfie?)\",\"type\":\"issue_closed\"},{\"id\":2140735050,\"number\":236,\"title\":\"Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.6.3\",\"type\":\"pull_request\"},{\"id\":2145070127,\"number\":238,\"title\":\"Improve cache docs\",\"type\":\"pull_request\"},{\"id\":2145024753,\"number\":237,\"title\":\"cacheSelfie().xxx_TODO() should cascade through later cacheSelfie calls\",\"type\":\"issue_open\"},{\"id\":2133731877,\"number\":221,\"title\":\"toBeFile in the memos is great, exposes a weakness elsewhere...\",\"type\":\"issue_closed\"},{\"id\":2139824635,\"number\":230,\"title\":\"Update dependency org.jetbrains.kotlinx:kotlinx-serialization-json to v1.6.3\",\"type\":\"pull_request\"},{\"id\":2140421795,\"number\":235,\"title\":\"Update dependency com.aallam.openai:openai-client-bom to v3.7.0\",\"type\":\"pull_request\"},{\"id\":2139861443,\"number\":233,\"title\":\"Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.8.0\",\"type\":\"pull_request\"},{\"id\":2137119953,\"number\":225,\"title\":\"Rename lazySelfie to cacheSelfie\",\"type\":\"pull_request\"},{\"id\":2139732097,\"number\":228,\"title\":\"Update dependency framer-motion to v11.0.5\",\"type\":\"pull_request\"},{\"id\":2139732150,\"number\":229,\"title\":\"Update dependency node to v20.11.1\",\"type\":\"pull_request\"},{\"id\":2139824765,\"number\":231,\"title\":\"Update dependency zustand to v4.5.1\",\"type\":\"pull_request\"},{\"id\":2139861426,\"number\":232,\"title\":\"Update mdx monorepo to v3.0.1\",\"type\":\"pull_request\"},{\"id\":2137630709,\"number\":227,\"title\":\"Stubs for starting our python project (especially CI)\",\"type\":\"pull_request\"},{\"id\":2135251660,\"number\":224,\"title\":\"Better binary facets\",\"type\":\"pull_request\"},{\"id\":2135018154,\"number\":223,\"title\":\"Selfie.FooSelfie to just FooSelfie\",\"type\":\"pull_request\"},{\"id\":2132952506,\"number\":219,\"title\":\"Support memoization\",\"type\":\"pull_request\"},{\"id\":2129539157,\"number\":218,\"title\":\"Improve selfie-runner-kotest settings\",\"type\":\"pull_request\"},{\"id\":2129500670,\"number\":217,\"title\":\"Javadoc improvements to prepare for release\",\"type\":\"pull_request\"},{\"id\":2129333021,\"number\":216,\"title\":\"Enable GC for Kotest\",\"type\":\"pull_request\"},{\"id\":2098743016,\"number\":122,\"title\":\"Add support for Kotest\",\"type\":\"issue_closed\"},{\"id\":2129165680,\"number\":214,\"title\":\"Add infix fun String.selfieIs (similar to Kotest shouldBe)\",\"type\":\"issue_open\"},{\"id\":2129159434,\"number\":213,\"title\":\"Remove SelfieBound for taking selfies on weird threads and coroutines.\",\"type\":\"pull_request\"},{\"id\":2129155677,\"number\":212,\"title\":\"Error messages for using the wrong context\",\"type\":\"pull_request\"},{\"id\":2128864124,\"number\":211,\"title\":\"Update kotest docs\",\"type\":\"pull_request\"},{\"id\":2128864025,\"number\":210,\"title\":\"Bump to the new Gradle actions/setup-gradle.\",\"type\":\"pull_request\"},{\"id\":2128800440,\"number\":209,\"title\":\"Massive simplification to SnapshotSystemJUnit5\",\"type\":\"pull_request\"},{\"id\":2128575210,\"number\":208,\"title\":\"Make it easier to mix Kotest and vanilla JUnit5 tests\",\"type\":\"pull_request\"},{\"id\":2111249795,\"number\":186,\"title\":\"JS support for Kotest runner\",\"type\":\"issue_open\"},{\"id\":2128022116,\"number\":207,\"title\":\"Update ver_OKIO to v3.8.0\",\"type\":\"pull_request\"},{\"id\":2128022089,\"number\":206,\"title\":\"Update dependency @types/node to v20.11.17\",\"type\":\"pull_request\"},{\"id\":2124428579,\"number\":205,\"title\":\"Fixup various aspects of the docs\",\"type\":\"pull_request\"},{\"id\":2106380569,\"number\":171,\"title\":\"Add quickstart section on overwrite all\",\"type\":\"issue_closed\"},{\"id\":2045073051,\"number\":44,\"title\":\"Gradle up-to-dateness\",\"type\":\"issue_closed\"},{\"id\":2124171541,\"number\":204,\"title\":\"Move undertest-junit5-kotest to a separate project\",\"type\":\"pull_request\"},{\"id\":2124080573,\"number\":203,\"title\":\"Create a separate Gradle build for launching the undertest ./gradlew build fails (needs :selfie-runner-junit5:testKotest first)\",\"type\":\"issue_closed\"},{\"id\":2121779508,\"number\":201,\"title\":\"Bring Kotest support to life\",\"type\":\"pull_request\"},{\"id\":2113513331,\"number\":191,\"title\":\"Implement Kotest SnapshotFileLayout and SelfieSettings\",\"type\":\"pull_request\"},{\"id\":2118075555,\"number\":200,\"title\":\"Make the JUnit test friendly to Kotest\",\"type\":\"pull_request\"},{\"id\":2112012512,\"number\":190,\"title\":\"Update dependency @types/node to v20.11.16\",\"type\":\"pull_request\"},{\"id\":2117425224,\"number\":197,\"title\":\"Update dependency org.assertj:assertj-core to v3.25.3\",\"type\":\"pull_request\"},{\"id\":2113804338,\"number\":192,\"title\":\"Update plugin io.github.gradle-nexus.publish-plugin to v2.0.0-rc-2\",\"type\":\"pull_request\"},{\"id\":2116911973,\"number\":194,\"title\":\"Update dependency prettier to v3.2.5\",\"type\":\"pull_request\"},{\"id\":2117034923,\"number\":195,\"title\":\"Update junit5 monorepo to v5.10.2\",\"type\":\"pull_request\"},{\"id\":2115516156,\"number\":193,\"title\":\"Update dependency gradle to v8.6\",\"type\":\"pull_request\"},{\"id\":2117744325,\"number\":199,\"title\":\"Improve multithreading correctness / performance\",\"type\":\"pull_request\"},{\"id\":2117631383,\"number\":198,\"title\":\"Refactor to prepare for coroutine support\",\"type\":\"pull_request\"},{\"id\":2117165134,\"number\":196,\"title\":\"Move WithinTestGC to be part of selfie-lib/guts.\",\"type\":\"pull_request\"},{\"id\":2111646695,\"number\":188,\"title\":\"Implement FSOkio, templated from FSJava\",\"type\":\"pull_request\"},{\"id\":2111579957,\"number\":187,\"title\":\"Fixup the JUnit harness\",\"type\":\"pull_request\"},{\"id\":2111108838,\"number\":185,\"title\":\"Kotest project setup\",\"type\":\"pull_request\"},{\"id\":2111068290,\"number\":184,\"title\":\"Introduce TypedPath\",\"type\":\"pull_request\"},{\"id\":2110977577,\"number\":182,\"title\":\"Update dependency @types/node to v20.11.14\",\"type\":\"pull_request\"},{\"id\":2110980813,\"number\":183,\"title\":\"Fix google search console errors\",\"type\":\"pull_request\"},{\"id\":2109095064,\"number\":181,\"title\":\"Update dependency @types/node to v20.11.13\",\"type\":\"pull_request\"},{\"id\":2109038033,\"number\":180,\"title\":\"Point quickstart users to our new gif\",\"type\":\"pull_request\"},{\"id\":2106550086,\"number\":174,\"title\":\"Individual (package private) test method execution stomps snapshot state from other methods\",\"type\":\"issue_closed\"},{\"id\":2108864798,\"number\":179,\"title\":\"Add a route to selfie.dev for the gif demo.\",\"type\":\"pull_request\"},{\"id\":2108677469,\"number\":178,\"title\":\"Update dependency @types/node to v20.11.11\",\"type\":\"pull_request\"},{\"id\":2102409727,\"number\":140,\"title\":\"Help @ParameterizedTest users with better error message\",\"type\":\"issue_closed\"},{\"id\":2106948488,\"number\":176,\"title\":\"Improve the error message for duplicate writes to help the user fix their problem\",\"type\":\"pull_request\"},{\"id\":2106882637,\"number\":175,\"title\":\"Fix within-method GC for package-private tests\",\"type\":\"pull_request\"},{\"id\":2106530591,\"number\":173,\"title\":\"Renovate ignore junit-jupiter-api and junit-platform-launcher (take 2)\",\"type\":\"pull_request\"},{\"id\":2104000232,\"number\":153,\"title\":\"Renovate ignore junit-jupiter-api and junit-platform-launcher\",\"type\":\"pull_request\"},{\"id\":2106453416,\"number\":172,\"title\":\"Update gradle/wrapper-validation-action action to v2\",\"type\":\"pull_request\"},{\"id\":2105809721,\"number\":169,\"title\":\"Update remark (major) - autoclosed\",\"type\":\"pull_request\"},{\"id\":2105600590,\"number\":167,\"title\":\"Update mdx monorepo to v3 (major)\",\"type\":\"pull_request\"},{\"id\":2105107194,\"number\":165,\"title\":\"Update dependency unist-util-filter to v5\",\"type\":\"pull_request\"},{\"id\":2105601761,\"number\":168,\"title\":\"Update nextjs monorepo to v14 (major)\",\"type\":\"pull_request\"},{\"id\":2105107566,\"number\":166,\"title\":\"Update dependency unist-util-visit to v5\",\"type\":\"pull_request\"},{\"id\":2103853198,\"number\":148,\"title\":\"Update dependency prettier-plugin-tailwindcss to ^0.5.0\",\"type\":\"pull_request\"},{\"id\":2104582108,\"number\":162,\"title\":\"Update dependency prettier to v3\",\"type\":\"pull_request\"},{\"id\":2104595063,\"number\":163,\"title\":\"Update dependency recma-nextjs-static-props to v2\",\"type\":\"pull_request\"},{\"id\":2104595282,\"number\":164,\"title\":\"Update dependency rehype-mdx-title to v3\",\"type\":\"pull_request\"},{\"id\":2104582038,\"number\":161,\"title\":\"Update dependency mdast-util-to-string to v4\",\"type\":\"pull_request\"},{\"id\":2104522052,\"number\":159,\"title\":\"Update dependency clsx to v2\",\"type\":\"pull_request\"},{\"id\":2104289962,\"number\":156,\"title\":\"Update dependency @types/node to v20.11.10\",\"type\":\"pull_request\"},{\"id\":2104330322,\"number\":158,\"title\":\"Update actions/setup-java action to v4\",\"type\":\"pull_request\"},{\"id\":2104291167,\"number\":157,\"title\":\"Update actions/checkout action to v4\",\"type\":\"pull_request\"},{\"id\":2103882340,\"number\":149,\"title\":\"Update dependency shiki to ^0.14.0\",\"type\":\"pull_request\"},{\"id\":2104523832,\"number\":160,\"title\":\"Update dependency framer-motion to v11\",\"type\":\"pull_request\"},{\"id\":2104000247,\"number\":154,\"title\":\"Update plugin com.diffplug.spotless to v6.25.0\",\"type\":\"pull_request\"},{\"id\":2102232763,\"number\":138,\"title\":\"Update plugin dev.equo.ide to v1.7.6\",\"type\":\"pull_request\"},{\"id\":2103853121,\"number\":147,\"title\":\"Update dependency org.junit-pioneer:junit-pioneer to v2.2.0\",\"type\":\"pull_request\"},{\"id\":2102033761,\"number\":137,\"title\":\"Update kotlin monorepo to v1.9.22\",\"type\":\"pull_request\"},{\"id\":2104288761,\"number\":155,\"title\":\"Prepare for multilanguage monorepo development\",\"type\":\"pull_request\"},{\"id\":2087579776,\"number\":105,\"title\":\"Add support for multiline string literals in Groovy\",\"type\":\"issue_open\"},{\"id\":2087580647,\"number\":106,\"title\":\"Add support for multiline string literals in Scala \",\"type\":\"issue_open\"},{\"id\":2101459650,\"number\":125,\"title\":\"Add JPMS module-info.java \",\"type\":\"issue_open\"},{\"id\":2103882412,\"number\":150,\"title\":\"Update dependency tailwindcss to v3.4.1\",\"type\":\"pull_request\"},{\"id\":2103959956,\"number\":151,\"title\":\"Update dependency typescript to v5.3.3\",\"type\":\"pull_request\"},{\"id\":2103960009,\"number\":152,\"title\":\"Update dependency zustand to v4.5.0\",\"type\":\"pull_request\"},{\"id\":2103847540,\"number\":146,\"title\":\"Update dependency node to v20.11.0\",\"type\":\"pull_request\"},{\"id\":2102233220,\"number\":139,\"title\":\"Update dependency @algolia/autocomplete-core to v1.15.0\",\"type\":\"pull_request\"},{\"id\":2102590044,\"number\":142,\"title\":\"Update dependency eslint to v8.56.0 - autoclosed\",\"type\":\"pull_request\"},{\"id\":2101785367,\"number\":134,\"title\":\"Update dependency io.jooby:jooby-test to v3.0.7\",\"type\":\"pull_request\"},{\"id\":2101785442,\"number\":135,\"title\":\"Update dependency org.assertj:assertj-core to v3.25.2\",\"type\":\"pull_request\"},{\"id\":2102032608,\"number\":136,\"title\":\"Update dependency org.jsoup:jsoup to v1.17.2\",\"type\":\"pull_request\"},{\"id\":2102589337,\"number\":141,\"title\":\"Update dependency com.squareup.okio:okio to v3.7.0\",\"type\":\"pull_request\"},{\"id\":2103846734,\"number\":145,\"title\":\"Update dependency io.kotest:kotest-assertions-core to v5.8.0\",\"type\":\"pull_request\"},{\"id\":2102800499,\"number\":143,\"title\":\"Update dependency eslint-config-next to v13.5.6\",\"type\":\"pull_request\"},{\"id\":2102800934,\"number\":144,\"title\":\"Update dependency framer-motion to v7.10.3\",\"type\":\"pull_request\"},{\"id\":2101606587,\"number\":133,\"title\":\"Update dependency io.jooby:jooby-netty to v3.0.7\",\"type\":\"pull_request\"},{\"id\":2101606548,\"number\":132,\"title\":\"Update dependency io.jooby:jooby to v3.0.7\",\"type\":\"pull_request\"},{\"id\":2101537918,\"number\":130,\"title\":\"Update dependency autoprefixer to v10.4.17\",\"type\":\"pull_request\"},{\"id\":2101474371,\"number\":128,\"title\":\"Update dependency acorn to v8.11.3\",\"type\":\"pull_request\"},{\"id\":2101474255,\"number\":127,\"title\":\"Update dependency @headlessui/react to v1.7.18\",\"type\":\"pull_request\"},{\"id\":2101469040,\"number\":126,\"title\":\"Configure Renovate\",\"type\":\"pull_request\"},{\"id\":2099281001,\"number\":123,\"title\":\"should not garbage collect snapshots when all tests are package-private\",\"type\":\"issue_closed\"},{\"id\":2100955803,\"number\":124,\"title\":\"Add a test that exercises all java visibility levels.\",\"type\":\"pull_request\"},{\"id\":2096951468,\"number\":121,\"title\":\"Improve advanced docs\",\"type\":\"pull_request\"},{\"id\":2094286263,\"number\":120,\"title\":\"Add meta tags to all docs web pages\",\"type\":\"pull_request\"},{\"id\":2092297804,\"number\":119,\"title\":\"FIx gc bug where one test's name is a prefix of another\",\"type\":\"pull_request\"},{\"id\":2089977737,\"number\":111,\"title\":\"Add github-style anchor links to the docs\",\"type\":\"issue_closed\"},{\"id\":2092253167,\"number\":118,\"title\":\"Add support for @ParameterizedTest\",\"type\":\"pull_request\"},{\"id\":2092242662,\"number\":117,\"title\":\"Smuggle errors from TestExecutionListener\",\"type\":\"pull_request\"},{\"id\":2091437519,\"number\":116,\"title\":\"Popout links\",\"type\":\"pull_request\"},{\"id\":2090878153,\"number\":115,\"title\":\"Anchor links\",\"type\":\"pull_request\"},{\"id\":2090114347,\"number\":114,\"title\":\"Replace 1) 2) with 1. 2. because it syntax highlights better.\",\"type\":\"pull_request\"},{\"id\":2090102846,\"number\":113,\"title\":\"Fixup minor issues\",\"type\":\"pull_request\"},{\"id\":2089961082,\"number\":110,\"title\":\"Finish off the advanced docs\",\"type\":\"pull_request\"},{\"id\":2089980976,\"number\":112,\"title\":\"Improve the landing page CTA\",\"type\":\"pull_request\"},{\"id\":2089118790,\"number\":109,\"title\":\"Fix landing page CTA bug\",\"type\":\"pull_request\"},{\"id\":2085089506,\"number\":100,\"title\":\"landing page CTA bug\",\"type\":\"issue_closed\"},{\"id\":2073180320,\"number\":88,\"title\":\"/r/java launch\",\"type\":\"issue_closed\"},{\"id\":2056961922,\"number\":69,\"title\":\"Improve stand-in inline snapshot exception messages\",\"type\":\"pull_request\"},{\"id\":2079498284,\"number\":97,\"title\":\"Support cloudflare 404 pages\",\"type\":\"pull_request\"},{\"id\":2087658792,\"number\":108,\"title\":\"Add support for binary via base64\",\"type\":\"pull_request\"},{\"id\":2054615981,\"number\":65,\"title\":\"Base64 encoding\",\"type\":\"issue_closed\"},{\"id\":2087588178,\"number\":107,\"title\":\"We can ship 1.0 without multiline for Groovy and Scala\",\"type\":\"pull_request\"},{\"id\":2064257277,\"number\":74,\"title\":\"Improve read/write control\",\"type\":\"issue_closed\"},{\"id\":2086694404,\"number\":104,\"title\":\"Glossary\",\"type\":\"issue_open\"},{\"id\":2085702776,\"number\":103,\"title\":\"Improve landing page CTA images\",\"type\":\"pull_request\"},{\"id\":2085559817,\"number\":102,\"title\":\"Each homepage header should point to a specific sub-place.\",\"type\":\"pull_request\"},{\"id\":2085558397,\"number\":101,\"title\":\"Misc improvements\",\"type\":\"pull_request\"},{\"id\":2079716065,\"number\":98,\"title\":\"Improve the images\",\"type\":\"pull_request\"},{\"id\":2082792006,\"number\":99,\"title\":\"Fine tune styles\",\"type\":\"pull_request\"},{\"id\":2075319694,\"number\":91,\"title\":\"Landing page CTA\",\"type\":\"pull_request\"},{\"id\":2079069766,\"number\":96,\"title\":\"Configure Cloudflare redirects\",\"type\":\"pull_request\"},{\"id\":2077689123,\"number\":95,\"title\":\"More progress on docs\",\"type\":\"pull_request\"},{\"id\":2075792207,\"number\":92,\"title\":\"Improved docs and examples\",\"type\":\"pull_request\"},{\"id\":2077509222,\"number\":94,\"title\":\"Improve JUnit5's settings\",\"type\":\"pull_request\"},{\"id\":2077475369,\"number\":93,\"title\":\"Remove cool multilanguage heading dropdown, many small styling improvements\",\"type\":\"pull_request\"},{\"id\":2046074097,\"number\":48,\"title\":\"Inline snapshot roadmap\",\"type\":\"issue_closed\"},{\"id\":2073802665,\"number\":90,\"title\":\"Add support for Kotlin multiline (and single line) literals\",\"type\":\"pull_request\"},{\"id\":2073687157,\"number\":89,\"title\":\"Remove support for Clojure\",\"type\":\"pull_request\"},{\"id\":1922047841,\"number\":27,\"title\":\"Improve mascot position/animation\",\"type\":\"issue_closed\"},{\"id\":1925051370,\"number\":31,\"title\":\"Code block styling\",\"type\":\"issue_closed\"},{\"id\":2062755639,\"number\":73,\"title\":\"Improve the docs with compiling examples from a real project.\",\"type\":\"pull_request\"},{\"id\":2071726600,\"number\":87,\"title\":\"Add support for multiline java\",\"type\":\"pull_request\"},{\"id\":2071385935,\"number\":86,\"title\":\"Make the parsing of toBe more flexible to (eventually) support multiline strings\",\"type\":\"pull_request\"},{\"id\":2068933061,\"number\":83,\"title\":\"Improve the snapshot error messages\",\"type\":\"pull_request\"},{\"id\":2066825078,\"number\":82,\"title\":\"Add ReadOnlyTest with better error messages for comments in readonly mode\",\"type\":\"pull_request\"},{\"id\":2066186250,\"number\":80,\"title\":\"Implement the interactive mode\",\"type\":\"pull_request\"},{\"id\":2065166668,\"number\":79,\"title\":\"Refactor RW into Mode to prepare for interactive mode\",\"type\":\"pull_request\"},{\"id\":2065090289,\"number\":78,\"title\":\"Make WriteTracker multiplatform\",\"type\":\"pull_request\"},{\"id\":2066670399,\"number\":81,\"title\":\"Ignore comments within String constants\",\"type\":\"issue_open\"},{\"id\":2064866430,\"number\":77,\"title\":\"Change the default snapshotFolderName to be null.\",\"type\":\"pull_request\"},{\"id\":2064852661,\"number\":76,\"title\":\"toMatchDisk_TODO\",\"type\":\"pull_request\"},{\"id\":2064738957,\"number\":75,\"title\":\"Remove infix methods, and add optional argument for toBe_TODO\",\"type\":\"pull_request\"},{\"id\":2058487224,\"number\":71,\"title\":\"Long Literal: Add long literal support\",\"type\":\"pull_request\"},{\"id\":2058530536,\"number\":72,\"title\":\"Literal: bool literal/selfie\",\"type\":\"pull_request\"},{\"id\":2046134396,\"number\":49,\"title\":\"Implement toBe(LITERAL), not just toBe_TODO()\",\"type\":\"pull_request\"},{\"id\":2057875114,\"number\":70,\"title\":\"Int Literal: encode long integers\",\"type\":\"pull_request\"},{\"id\":2056817978,\"number\":68,\"title\":\"Fluent disk and inline facet assertions\",\"type\":\"pull_request\"},{\"id\":2054656063,\"number\":66,\"title\":\"Move the Selfie.expectSelfie methods into selfie-lib\",\"type\":\"pull_request\"},{\"id\":2054674498,\"number\":67,\"title\":\"Improve inline facets\",\"type\":\"pull_request\"},{\"id\":2054551378,\"number\":64,\"title\":\"Inline assertions on facets\",\"type\":\"pull_request\"},{\"id\":2054347800,\"number\":63,\"title\":\"Overhaul the lens infrastructure\",\"type\":\"pull_request\"},{\"id\":2053197850,\"number\":62,\"title\":\"Remove the prism train \\\"pipeline\\\"\",\"type\":\"pull_request\"},{\"id\":2053165908,\"number\":61,\"title\":\"New names for everything\",\"type\":\"pull_request\"},{\"id\":2051002542,\"number\":58,\"title\":\"Fixup some prism issues\",\"type\":\"pull_request\"},{\"id\":2051779222,\"number\":60,\"title\":\"Fix within-method GC for JUnit 4\",\"type\":\"pull_request\"},{\"id\":2051404982,\"number\":59,\"title\":\"Fix another bug in ArrayMap - thanks ChatGPT!\",\"type\":\"pull_request\"},{\"id\":2049109301,\"number\":51,\"title\":\"API for implicit selfies (bad idea)\",\"type\":\"pull_request\"},{\"id\":2049568838,\"number\":56,\"title\":\"Inline string literals (single line)\",\"type\":\"pull_request\"},{\"id\":2049532047,\"number\":55,\"title\":\"Literal parsing is language-specific\",\"type\":\"pull_request\"},{\"id\":2049886888,\"number\":57,\"title\":\"Test harness now runs only one test at a time.\",\"type\":\"pull_request\"},{\"id\":2049463444,\"number\":54,\"title\":\"Add lens / prism infrastructure\",\"type\":\"pull_request\"},{\"id\":1926913511,\"number\":33,\"title\":\"Favicon\",\"type\":\"issue_closed\"},{\"id\":2049447230,\"number\":53,\"title\":\"Emoji snapshot methods\",\"type\":\"issue_open\"},{\"id\":2049395059,\"number\":52,\"title\":\"Remove the alternative APIs we were considering.\",\"type\":\"pull_request\"},{\"id\":2047710724,\"number\":50,\"title\":\"Add support for JUnit 4 via junit-vintage\",\"type\":\"pull_request\"},{\"id\":1874220123,\"number\":18,\"title\":\"JUnit 4\",\"type\":\"issue_closed\"},{\"id\":1976772723,\"number\":38,\"title\":\"Add support for lenses\",\"type\":\"pull_request\"},{\"id\":1900927995,\"number\":23,\"title\":\"Barebones of int selfie\",\"type\":\"pull_request\"},{\"id\":1891249038,\"number\":22,\"title\":\"Add Slice.\",\"type\":\"pull_request\"},{\"id\":2045381534,\"number\":47,\"title\":\"Refactor Selfie's settings API\",\"type\":\"pull_request\"},{\"id\":2045279826,\"number\":46,\"title\":\"Improve callstack capture and IDE-compatible printing\",\"type\":\"pull_request\"},{\"id\":2045270508,\"number\":45,\"title\":\"Fix selfie methods to be @JvmStatic and have easy access from Java\",\"type\":\"pull_request\"},{\"id\":2045072550,\"number\":43,\"title\":\"Improve test reliability\",\"type\":\"pull_request\"},{\"id\":2036742689,\"number\":42,\"title\":\"Bump build plugins\",\"type\":\"pull_request\"},{\"id\":2003665871,\"number\":39,\"title\":\"Publish kdoc using GitHub actions\",\"type\":\"pull_request\"},{\"id\":2004954446,\"number\":41,\"title\":\"kdoc.selfie.dev\",\"type\":\"pull_request\"},{\"id\":2003674534,\"number\":40,\"title\":\"Publish the docs folder to selfie.dev\",\"type\":\"pull_request\"},{\"id\":1927435312,\"number\":34,\"title\":\"Prepare to customize KDoc\",\"type\":\"pull_request\"},{\"id\":1930648747,\"number\":37,\"title\":\"Navigation polish\",\"type\":\"pull_request\"},{\"id\":1929116432,\"number\":36,\"title\":\"Fix mascot animations\",\"type\":\"pull_request\"},{\"id\":1928775678,\"number\":35,\"title\":\"Some Polish\",\"type\":\"pull_request\"},{\"id\":1926315916,\"number\":32,\"title\":\"Feat/routing\",\"type\":\"pull_request\"},{\"id\":1922125118,\"number\":28,\"title\":\"Type error in _app.tsx\",\"type\":\"issue_closed\"},{\"id\":1922697696,\"number\":30,\"title\":\"Style markdown code blocks\",\"type\":\"pull_request\"},{\"id\":1922330851,\"number\":29,\"title\":\"Style markdown content\",\"type\":\"pull_request\"},{\"id\":1919845025,\"number\":26,\"title\":\"Lorum ipsum text for the jvm and js pages\",\"type\":\"pull_request\"},{\"id\":1916193975,\"number\":24,\"title\":\"Selfie docs\",\"type\":\"pull_request\"},{\"id\":1917599784,\"number\":25,\"title\":\"Add bin/ to gitignore\",\"type\":\"pull_request\"},{\"id\":1891155946,\"number\":21,\"title\":\"arraymap: fix tail removal\",\"type\":\"pull_request\"},{\"id\":1889191057,\"number\":20,\"title\":\"build: fix failing test WithinMethodGCTest + better error reporting\",\"type\":\"pull_request\"},{\"id\":1889002038,\"number\":19,\"title\":\"Revise inferDefaultLineEndingIsUnix \",\"type\":\"pull_request\"},{\"id\":1870921367,\"number\":16,\"title\":\"Carriage return handling\",\"type\":\"pull_request\"},{\"id\":1869216187,\"number\":13,\"title\":\"\\\"Sub\\\" snapshots.\",\"type\":\"pull_request\"},{\"id\":1863689409,\"number\":9,\"title\":\"js: write PerCharacterEscaper.js\",\"type\":\"pull_request\"},{\"id\":1870697634,\"number\":15,\"title\":\"Track double writes (prepare for literal snapshots).\",\"type\":\"pull_request\"},{\"id\":5569572,\"number\":17,\"title\":\"PR overview for @jknack\",\"type\":\"discussion\"},{\"id\":1867405163,\"number\":12,\"title\":\"Policy for when to read vs write snapshots\",\"type\":\"issue_closed\"},{\"id\":1870666159,\"number\":14,\"title\":\"Rename and repackage tests\",\"type\":\"pull_request\"},{\"id\":1847531026,\"number\":3,\"title\":\"Migrate PerCharacterEscaper from JVM-only to multiplatform\",\"type\":\"issue_closed\"},{\"id\":1866513229,\"number\":11,\"title\":\"First cut at snapshot read/write with tests\",\"type\":\"pull_request\"},{\"id\":1851975181,\"number\":6,\"title\":\"Implement assertion library\",\"type\":\"issue_closed\"},{\"id\":1851923517,\"number\":5,\"title\":\"Implement SnapshotReader and SnapshotFile\",\"type\":\"issue_closed\"},{\"id\":1866302901,\"number\":10,\"title\":\"Two tweaks to the .ss file format\",\"type\":\"pull_request\"},{\"id\":1862814535,\"number\":8,\"title\":\"Methods for parsing a full snapshot\",\"type\":\"pull_request\"},{\"id\":1862711673,\"number\":7,\"title\":\"Rename to selfie\",\"type\":\"pull_request\"},{\"id\":1847570901,\"number\":4,\"title\":\"Implement SnapshotValueReader\",\"type\":\"pull_request\"},{\"id\":1843644556,\"number\":2,\"title\":\"Add a mode which preserves carriage returns\",\"type\":\"issue_open\"},{\"id\":1843520276,\"number\":1,\"title\":\"Binary-optimized snapshots\",\"type\":\"issue_open\"}],\"icons\":{\"pull_request\":\"\",\"pull_request_closed\":\"\",\"pull_request_draft\":\"\",\"issue_open\":\"\",\"issue_closed\":\"\",\"skip\":\"\",\"discussion\":\"\",\"discussion_resolved\":\"\",\"discussion_outdated\":\"\",\"discussion_duplicate\":\"\"}}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.649 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.636Z", + "time": 0.545, + "request": { + "method": "GET", + "url": "https://github.com/settings/replies?context=issue", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/settings/replies?context=issue" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "github-verified-fetch", + "value": "true" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [ + { + "name": "context", + "value": "issue" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "W/\"01db4a212f10b6246e121049db505f25\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:184582:18A702:68BB56C5" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "[{\"id\":null,\"title\":\"Duplicate issue\",\"body\":\"Duplicate of #\",\"default\":true}]" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.545 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.636Z", + "time": 0.542, + "request": { + "method": "GET", + "url": "https://github.com/autocomplete/emojis_for_editor", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/autocomplete/emojis_for_editor" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "github-is-react", + "value": "true" + }, + { + "name": "github-verified-fetch", + "value": "true" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "W/\"43d0e3c44c74627d475855d956654002\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:184582:18A703:68BB56C5" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "{\"+1\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44d.png?v8\",\"👍\"],\"-1\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44e.png?v8\",\"👎\"],\"100\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4af.png?v8\",\"💯\"],\"1234\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f522.png?v8\",\"🔢\"],\"1st_place_medal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f947.png?v8\",\"🥇\"],\"2nd_place_medal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f948.png?v8\",\"🥈\"],\"3rd_place_medal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f949.png?v8\",\"🥉\"],\"8ball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b1.png?v8\",\"🎱\"],\"a\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f170.png?v8\",\"🅰️\"],\"ab\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f18e.png?v8\",\"🆎\"],\"abacus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ee.png?v8\",\"🧮\"],\"abc\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f524.png?v8\",\"🔤\"],\"abcd\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f521.png?v8\",\"🔡\"],\"accept\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f251.png?v8\",\"🉑\"],\"accessibility\":[\"https://github.githubassets.com/images/icons/emoji/accessibility.png?v8\"],\"accordion\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa97.png?v8\",\"🪗\"],\"adhesive_bandage\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa79.png?v8\",\"🩹\"],\"adult\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1.png?v8\",\"🧑\"],\"aerial_tramway\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a1.png?v8\",\"🚡\"],\"afghanistan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1eb.png?v8\",\"🇦🇫\"],\"airplane\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2708.png?v8\",\"✈️\"],\"aland_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1fd.png?v8\",\"🇦🇽\"],\"alarm_clock\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23f0.png?v8\",\"⏰\"],\"albania\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1f1.png?v8\",\"🇦🇱\"],\"alembic\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2697.png?v8\",\"⚗️\"],\"algeria\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e9-1f1ff.png?v8\",\"🇩🇿\"],\"alien\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f47d.png?v8\",\"👽\"],\"ambulance\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f691.png?v8\",\"🚑\"],\"american_samoa\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1f8.png?v8\",\"🇦🇸\"],\"amphora\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3fa.png?v8\",\"🏺\"],\"anatomical_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fac0.png?v8\",\"🫀\"],\"anchor\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2693.png?v8\",\"⚓\"],\"andorra\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1e9.png?v8\",\"🇦🇩\"],\"angel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f47c.png?v8\",\"👼\"],\"anger\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a2.png?v8\",\"💢\"],\"angola\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1f4.png?v8\",\"🇦🇴\"],\"angry\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f620.png?v8\",\"😠\"],\"anguilla\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1ee.png?v8\",\"🇦🇮\"],\"anguished\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f627.png?v8\",\"😧\"],\"ant\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f41c.png?v8\",\"🐜\"],\"antarctica\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1f6.png?v8\",\"🇦🇶\"],\"antigua_barbuda\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1ec.png?v8\",\"🇦🇬\"],\"apple\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f34e.png?v8\",\"🍎\"],\"aquarius\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2652.png?v8\",\"♒\"],\"argentina\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1f7.png?v8\",\"🇦🇷\"],\"aries\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2648.png?v8\",\"♈\"],\"armenia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1f2.png?v8\",\"🇦🇲\"],\"arrow_backward\":[\"https://github.githubassets.com/images/icons/emoji/unicode/25c0.png?v8\",\"◀️\"],\"arrow_double_down\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23ec.png?v8\",\"⏬\"],\"arrow_double_up\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23eb.png?v8\",\"⏫\"],\"arrow_down\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2b07.png?v8\",\"⬇️\"],\"arrow_down_small\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f53d.png?v8\",\"🔽\"],\"arrow_forward\":[\"https://github.githubassets.com/images/icons/emoji/unicode/25b6.png?v8\",\"▶️\"],\"arrow_heading_down\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2935.png?v8\",\"⤵️\"],\"arrow_heading_up\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2934.png?v8\",\"⤴️\"],\"arrow_left\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2b05.png?v8\",\"⬅️\"],\"arrow_lower_left\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2199.png?v8\",\"↙️\"],\"arrow_lower_right\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2198.png?v8\",\"↘️\"],\"arrow_right\":[\"https://github.githubassets.com/images/icons/emoji/unicode/27a1.png?v8\",\"➡️\"],\"arrow_right_hook\":[\"https://github.githubassets.com/images/icons/emoji/unicode/21aa.png?v8\",\"↪️\"],\"arrow_up\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2b06.png?v8\",\"⬆️\"],\"arrow_up_down\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2195.png?v8\",\"↕️\"],\"arrow_up_small\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f53c.png?v8\",\"🔼\"],\"arrow_upper_left\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2196.png?v8\",\"↖️\"],\"arrow_upper_right\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2197.png?v8\",\"↗️\"],\"arrows_clockwise\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f503.png?v8\",\"🔃\"],\"arrows_counterclockwise\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f504.png?v8\",\"🔄\"],\"art\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a8.png?v8\",\"🎨\"],\"articulated_lorry\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f69b.png?v8\",\"🚛\"],\"artificial_satellite\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6f0.png?v8\",\"🛰️\"],\"artist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f3a8.png?v8\",\"🧑‍🎨\"],\"aruba\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1fc.png?v8\",\"🇦🇼\"],\"ascension_island\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1e8.png?v8\",\"🇦🇨\"],\"asterisk\":[\"https://github.githubassets.com/images/icons/emoji/unicode/002a-20e3.png?v8\",\"*️⃣\"],\"astonished\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f632.png?v8\",\"😲\"],\"astronaut\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f680.png?v8\",\"🧑‍🚀\"],\"athletic_shoe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f45f.png?v8\",\"👟\"],\"atm\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e7.png?v8\",\"🏧\"],\"atom\":[\"https://github.githubassets.com/images/icons/emoji/atom.png?v8\"],\"atom_symbol\":[\"https://github.githubassets.com/images/icons/emoji/unicode/269b.png?v8\",\"⚛️\"],\"australia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1fa.png?v8\",\"🇦🇺\"],\"austria\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1f9.png?v8\",\"🇦🇹\"],\"auto_rickshaw\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6fa.png?v8\",\"🛺\"],\"avocado\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f951.png?v8\",\"🥑\"],\"axe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa93.png?v8\",\"🪓\"],\"azerbaijan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1ff.png?v8\",\"🇦🇿\"],\"b\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f171.png?v8\",\"🅱️\"],\"baby\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f476.png?v8\",\"👶\"],\"baby_bottle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f37c.png?v8\",\"🍼\"],\"baby_chick\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f424.png?v8\",\"🐤\"],\"baby_symbol\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6bc.png?v8\",\"🚼\"],\"back\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f519.png?v8\",\"🔙\"],\"bacon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f953.png?v8\",\"🥓\"],\"badger\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a1.png?v8\",\"🦡\"],\"badminton\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f8.png?v8\",\"🏸\"],\"bagel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f96f.png?v8\",\"🥯\"],\"baggage_claim\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6c4.png?v8\",\"🛄\"],\"baguette_bread\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f956.png?v8\",\"🥖\"],\"bahamas\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f8.png?v8\",\"🇧🇸\"],\"bahrain\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1ed.png?v8\",\"🇧🇭\"],\"balance_scale\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2696.png?v8\",\"⚖️\"],\"bald_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9b2.png?v8\",\"👨‍🦲\"],\"bald_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9b2.png?v8\",\"👩‍🦲\"],\"ballet_shoes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa70.png?v8\",\"🩰\"],\"balloon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f388.png?v8\",\"🎈\"],\"ballot_box\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5f3.png?v8\",\"🗳️\"],\"ballot_box_with_check\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2611.png?v8\",\"☑️\"],\"bamboo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f38d.png?v8\",\"🎍\"],\"banana\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f34c.png?v8\",\"🍌\"],\"bangbang\":[\"https://github.githubassets.com/images/icons/emoji/unicode/203c.png?v8\",\"‼️\"],\"bangladesh\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1e9.png?v8\",\"🇧🇩\"],\"banjo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa95.png?v8\",\"🪕\"],\"bank\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e6.png?v8\",\"🏦\"],\"bar_chart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ca.png?v8\",\"📊\"],\"barbados\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1e7.png?v8\",\"🇧🇧\"],\"barber\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f488.png?v8\",\"💈\"],\"baseball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26be.png?v8\",\"⚾\"],\"basecamp\":[\"https://github.githubassets.com/images/icons/emoji/basecamp.png?v8\"],\"basecampy\":[\"https://github.githubassets.com/images/icons/emoji/basecampy.png?v8\"],\"basket\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9fa.png?v8\",\"🧺\"],\"basketball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c0.png?v8\",\"🏀\"],\"basketball_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f9-2642.png?v8\",\"⛹️‍♂️\"],\"basketball_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f9-2640.png?v8\",\"⛹️‍♀️\"],\"bat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f987.png?v8\",\"🦇\"],\"bath\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6c0.png?v8\",\"🛀\"],\"bathtub\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6c1.png?v8\",\"🛁\"],\"battery\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f50b.png?v8\",\"🔋\"],\"beach_umbrella\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d6.png?v8\",\"🏖️\"],\"beans\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad8.png?v8\",\"🫘\"],\"bear\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f43b.png?v8\",\"🐻\"],\"bearded_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d4.png?v8\",\"🧔\"],\"beaver\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ab.png?v8\",\"🦫\"],\"bed\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6cf.png?v8\",\"🛏️\"],\"bee\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f41d.png?v8\",\"🐝\"],\"beer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f37a.png?v8\",\"🍺\"],\"beers\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f37b.png?v8\",\"🍻\"],\"beetle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab2.png?v8\",\"🪲\"],\"beginner\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f530.png?v8\",\"🔰\"],\"belarus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1fe.png?v8\",\"🇧🇾\"],\"belgium\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1ea.png?v8\",\"🇧🇪\"],\"belize\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1ff.png?v8\",\"🇧🇿\"],\"bell\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f514.png?v8\",\"🔔\"],\"bell_pepper\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad1.png?v8\",\"🫑\"],\"bellhop_bell\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6ce.png?v8\",\"🛎️\"],\"benin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1ef.png?v8\",\"🇧🇯\"],\"bento\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f371.png?v8\",\"🍱\"],\"bermuda\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f2.png?v8\",\"🇧🇲\"],\"beverage_box\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c3.png?v8\",\"🧃\"],\"bhutan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f9.png?v8\",\"🇧🇹\"],\"bicyclist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b4.png?v8\",\"🚴\"],\"bike\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b2.png?v8\",\"🚲\"],\"biking_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b4-2642.png?v8\",\"🚴‍♂️\"],\"biking_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b4-2640.png?v8\",\"🚴‍♀️\"],\"bikini\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f459.png?v8\",\"👙\"],\"billed_cap\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e2.png?v8\",\"🧢\"],\"biohazard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2623.png?v8\",\"☣️\"],\"bird\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f426.png?v8\",\"🐦\"],\"birthday\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f382.png?v8\",\"🎂\"],\"bison\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ac.png?v8\",\"🦬\"],\"biting_lip\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fae6.png?v8\",\"🫦\"],\"black_bird\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f426-2b1b.png?v8\",\"🐦‍⬛\"],\"black_cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f408-2b1b.png?v8\",\"🐈‍⬛\"],\"black_circle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26ab.png?v8\",\"⚫\"],\"black_flag\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f4.png?v8\",\"🏴\"],\"black_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5a4.png?v8\",\"🖤\"],\"black_joker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f0cf.png?v8\",\"🃏\"],\"black_large_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2b1b.png?v8\",\"⬛\"],\"black_medium_small_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/25fe.png?v8\",\"◾\"],\"black_medium_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/25fc.png?v8\",\"◼️\"],\"black_nib\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2712.png?v8\",\"✒️\"],\"black_small_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/25aa.png?v8\",\"▪️\"],\"black_square_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f532.png?v8\",\"🔲\"],\"blond_haired_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f471-2642.png?v8\",\"👱‍♂️\"],\"blond_haired_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f471.png?v8\",\"👱\"],\"blond_haired_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f471-2640.png?v8\",\"👱‍♀️\"],\"blonde_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f471-2640.png?v8\",\"👱‍♀️\"],\"blossom\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f33c.png?v8\",\"🌼\"],\"blowfish\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f421.png?v8\",\"🐡\"],\"blue_book\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d8.png?v8\",\"📘\"],\"blue_car\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f699.png?v8\",\"🚙\"],\"blue_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f499.png?v8\",\"💙\"],\"blue_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e6.png?v8\",\"🟦\"],\"blueberries\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad0.png?v8\",\"🫐\"],\"blush\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f60a.png?v8\",\"😊\"],\"boar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f417.png?v8\",\"🐗\"],\"boat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f5.png?v8\",\"⛵\"],\"bolivia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f4.png?v8\",\"🇧🇴\"],\"bomb\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a3.png?v8\",\"💣\"],\"bone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b4.png?v8\",\"🦴\"],\"book\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d6.png?v8\",\"📖\"],\"bookmark\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f516.png?v8\",\"🔖\"],\"bookmark_tabs\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d1.png?v8\",\"📑\"],\"books\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4da.png?v8\",\"📚\"],\"boom\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a5.png?v8\",\"💥\"],\"boomerang\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa83.png?v8\",\"🪃\"],\"boot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f462.png?v8\",\"👢\"],\"bosnia_herzegovina\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1e6.png?v8\",\"🇧🇦\"],\"botswana\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1fc.png?v8\",\"🇧🇼\"],\"bouncing_ball_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f9-2642.png?v8\",\"⛹️‍♂️\"],\"bouncing_ball_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f9.png?v8\",\"⛹️\"],\"bouncing_ball_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f9-2640.png?v8\",\"⛹️‍♀️\"],\"bouquet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f490.png?v8\",\"💐\"],\"bouvet_island\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1fb.png?v8\",\"🇧🇻\"],\"bow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f647.png?v8\",\"🙇\"],\"bow_and_arrow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f9.png?v8\",\"🏹\"],\"bowing_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f647-2642.png?v8\",\"🙇‍♂️\"],\"bowing_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f647-2640.png?v8\",\"🙇‍♀️\"],\"bowl_with_spoon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f963.png?v8\",\"🥣\"],\"bowling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b3.png?v8\",\"🎳\"],\"bowtie\":[\"https://github.githubassets.com/images/icons/emoji/bowtie.png?v8\"],\"boxing_glove\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f94a.png?v8\",\"🥊\"],\"boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f466.png?v8\",\"👦\"],\"brain\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e0.png?v8\",\"🧠\"],\"brazil\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f7.png?v8\",\"🇧🇷\"],\"bread\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f35e.png?v8\",\"🍞\"],\"breast_feeding\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f931.png?v8\",\"🤱\"],\"bricks\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f1.png?v8\",\"🧱\"],\"bride_with_veil\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f470-2640.png?v8\",\"👰‍♀️\"],\"bridge_at_night\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f309.png?v8\",\"🌉\"],\"briefcase\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4bc.png?v8\",\"💼\"],\"british_indian_ocean_territory\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1f4.png?v8\",\"🇮🇴\"],\"british_virgin_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fb-1f1ec.png?v8\",\"🇻🇬\"],\"broccoli\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f966.png?v8\",\"🥦\"],\"broken_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f494.png?v8\",\"💔\"],\"broom\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f9.png?v8\",\"🧹\"],\"brown_circle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e4.png?v8\",\"🟤\"],\"brown_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f90e.png?v8\",\"🤎\"],\"brown_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7eb.png?v8\",\"🟫\"],\"brunei\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f3.png?v8\",\"🇧🇳\"],\"bubble_tea\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9cb.png?v8\",\"🧋\"],\"bubbles\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fae7.png?v8\",\"🫧\"],\"bucket\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa3.png?v8\",\"🪣\"],\"bug\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f41b.png?v8\",\"🐛\"],\"building_construction\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d7.png?v8\",\"🏗️\"],\"bulb\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a1.png?v8\",\"💡\"],\"bulgaria\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1ec.png?v8\",\"🇧🇬\"],\"bullettrain_front\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f685.png?v8\",\"🚅\"],\"bullettrain_side\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f684.png?v8\",\"🚄\"],\"burkina_faso\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1eb.png?v8\",\"🇧🇫\"],\"burrito\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f32f.png?v8\",\"🌯\"],\"burundi\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1ee.png?v8\",\"🇧🇮\"],\"bus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f68c.png?v8\",\"🚌\"],\"business_suit_levitating\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f574.png?v8\",\"🕴️\"],\"busstop\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f68f.png?v8\",\"🚏\"],\"bust_in_silhouette\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f464.png?v8\",\"👤\"],\"busts_in_silhouette\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f465.png?v8\",\"👥\"],\"butter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c8.png?v8\",\"🧈\"],\"butterfly\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f98b.png?v8\",\"🦋\"],\"cactus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f335.png?v8\",\"🌵\"],\"cake\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f370.png?v8\",\"🍰\"],\"calendar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c6.png?v8\",\"📆\"],\"call_me_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f919.png?v8\",\"🤙\"],\"calling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f2.png?v8\",\"📲\"],\"cambodia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1ed.png?v8\",\"🇰🇭\"],\"camel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f42b.png?v8\",\"🐫\"],\"camera\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f7.png?v8\",\"📷\"],\"camera_flash\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f8.png?v8\",\"📸\"],\"cameroon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1f2.png?v8\",\"🇨🇲\"],\"camping\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d5.png?v8\",\"🏕️\"],\"canada\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1e6.png?v8\",\"🇨🇦\"],\"canary_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1e8.png?v8\",\"🇮🇨\"],\"cancer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/264b.png?v8\",\"♋\"],\"candle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f56f.png?v8\",\"🕯️\"],\"candy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f36c.png?v8\",\"🍬\"],\"canned_food\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f96b.png?v8\",\"🥫\"],\"canoe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6f6.png?v8\",\"🛶\"],\"cape_verde\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1fb.png?v8\",\"🇨🇻\"],\"capital_abcd\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f520.png?v8\",\"🔠\"],\"capricorn\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2651.png?v8\",\"♑\"],\"car\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f697.png?v8\",\"🚗\"],\"card_file_box\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5c3.png?v8\",\"🗃️\"],\"card_index\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c7.png?v8\",\"📇\"],\"card_index_dividers\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5c2.png?v8\",\"🗂️\"],\"caribbean_netherlands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f6.png?v8\",\"🇧🇶\"],\"carousel_horse\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a0.png?v8\",\"🎠\"],\"carpentry_saw\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa9a.png?v8\",\"🪚\"],\"carrot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f955.png?v8\",\"🥕\"],\"cartwheeling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f938.png?v8\",\"🤸\"],\"cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f431.png?v8\",\"🐱\"],\"cat2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f408.png?v8\",\"🐈\"],\"cayman_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1fe.png?v8\",\"🇰🇾\"],\"cd\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4bf.png?v8\",\"💿\"],\"central_african_republic\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1eb.png?v8\",\"🇨🇫\"],\"ceuta_melilla\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1e6.png?v8\",\"🇪🇦\"],\"chad\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1e9.png?v8\",\"🇹🇩\"],\"chains\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26d3.png?v8\",\"⛓️\"],\"chair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa91.png?v8\",\"🪑\"],\"champagne\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f37e.png?v8\",\"🍾\"],\"chart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b9.png?v8\",\"💹\"],\"chart_with_downwards_trend\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c9.png?v8\",\"📉\"],\"chart_with_upwards_trend\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c8.png?v8\",\"📈\"],\"checkered_flag\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c1.png?v8\",\"🏁\"],\"cheese\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c0.png?v8\",\"🧀\"],\"cherries\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f352.png?v8\",\"🍒\"],\"cherry_blossom\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f338.png?v8\",\"🌸\"],\"chess_pawn\":[\"https://github.githubassets.com/images/icons/emoji/unicode/265f.png?v8\",\"♟️\"],\"chestnut\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f330.png?v8\",\"🌰\"],\"chicken\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f414.png?v8\",\"🐔\"],\"child\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d2.png?v8\",\"🧒\"],\"children_crossing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b8.png?v8\",\"🚸\"],\"chile\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1f1.png?v8\",\"🇨🇱\"],\"chipmunk\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f43f.png?v8\",\"🐿️\"],\"chocolate_bar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f36b.png?v8\",\"🍫\"],\"chopsticks\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f962.png?v8\",\"🥢\"],\"christmas_island\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1fd.png?v8\",\"🇨🇽\"],\"christmas_tree\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f384.png?v8\",\"🎄\"],\"church\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26ea.png?v8\",\"⛪\"],\"cinema\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a6.png?v8\",\"🎦\"],\"circus_tent\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3aa.png?v8\",\"🎪\"],\"city_sunrise\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f307.png?v8\",\"🌇\"],\"city_sunset\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f306.png?v8\",\"🌆\"],\"cityscape\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d9.png?v8\",\"🏙️\"],\"cl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f191.png?v8\",\"🆑\"],\"clamp\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5dc.png?v8\",\"🗜️\"],\"clap\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44f.png?v8\",\"👏\"],\"clapper\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ac.png?v8\",\"🎬\"],\"classical_building\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3db.png?v8\",\"🏛️\"],\"climbing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d7.png?v8\",\"🧗\"],\"climbing_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d7-2642.png?v8\",\"🧗‍♂️\"],\"climbing_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d7-2640.png?v8\",\"🧗‍♀️\"],\"clinking_glasses\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f942.png?v8\",\"🥂\"],\"clipboard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4cb.png?v8\",\"📋\"],\"clipperton_island\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1f5.png?v8\",\"🇨🇵\"],\"clock1\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f550.png?v8\",\"🕐\"],\"clock10\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f559.png?v8\",\"🕙\"],\"clock1030\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f565.png?v8\",\"🕥\"],\"clock11\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f55a.png?v8\",\"🕚\"],\"clock1130\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f566.png?v8\",\"🕦\"],\"clock12\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f55b.png?v8\",\"🕛\"],\"clock1230\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f567.png?v8\",\"🕧\"],\"clock130\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f55c.png?v8\",\"🕜\"],\"clock2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f551.png?v8\",\"🕑\"],\"clock230\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f55d.png?v8\",\"🕝\"],\"clock3\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f552.png?v8\",\"🕒\"],\"clock330\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f55e.png?v8\",\"🕞\"],\"clock4\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f553.png?v8\",\"🕓\"],\"clock430\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f55f.png?v8\",\"🕟\"],\"clock5\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f554.png?v8\",\"🕔\"],\"clock530\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f560.png?v8\",\"🕠\"],\"clock6\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f555.png?v8\",\"🕕\"],\"clock630\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f561.png?v8\",\"🕡\"],\"clock7\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f556.png?v8\",\"🕖\"],\"clock730\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f562.png?v8\",\"🕢\"],\"clock8\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f557.png?v8\",\"🕗\"],\"clock830\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f563.png?v8\",\"🕣\"],\"clock9\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f558.png?v8\",\"🕘\"],\"clock930\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f564.png?v8\",\"🕤\"],\"closed_book\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d5.png?v8\",\"📕\"],\"closed_lock_with_key\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f510.png?v8\",\"🔐\"],\"closed_umbrella\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f302.png?v8\",\"🌂\"],\"cloud\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2601.png?v8\",\"☁️\"],\"cloud_with_lightning\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f329.png?v8\",\"🌩️\"],\"cloud_with_lightning_and_rain\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26c8.png?v8\",\"⛈️\"],\"cloud_with_rain\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f327.png?v8\",\"🌧️\"],\"cloud_with_snow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f328.png?v8\",\"🌨️\"],\"clown_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f921.png?v8\",\"🤡\"],\"clubs\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2663.png?v8\",\"♣️\"],\"cn\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1f3.png?v8\",\"🇨🇳\"],\"coat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e5.png?v8\",\"🧥\"],\"cockroach\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab3.png?v8\",\"🪳\"],\"cocktail\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f378.png?v8\",\"🍸\"],\"coconut\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f965.png?v8\",\"🥥\"],\"cocos_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1e8.png?v8\",\"🇨🇨\"],\"coffee\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2615.png?v8\",\"☕\"],\"coffin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26b0.png?v8\",\"⚰️\"],\"coin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa99.png?v8\",\"🪙\"],\"cold_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f976.png?v8\",\"🥶\"],\"cold_sweat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f630.png?v8\",\"😰\"],\"collision\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a5.png?v8\",\"💥\"],\"colombia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1f4.png?v8\",\"🇨🇴\"],\"comet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2604.png?v8\",\"☄️\"],\"comoros\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1f2.png?v8\",\"🇰🇲\"],\"compass\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ed.png?v8\",\"🧭\"],\"computer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4bb.png?v8\",\"💻\"],\"computer_mouse\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5b1.png?v8\",\"🖱️\"],\"confetti_ball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f38a.png?v8\",\"🎊\"],\"confounded\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f616.png?v8\",\"😖\"],\"confused\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f615.png?v8\",\"😕\"],\"congo_brazzaville\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1ec.png?v8\",\"🇨🇬\"],\"congo_kinshasa\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1e9.png?v8\",\"🇨🇩\"],\"congratulations\":[\"https://github.githubassets.com/images/icons/emoji/unicode/3297.png?v8\",\"㊗️\"],\"construction\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a7.png?v8\",\"🚧\"],\"construction_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f477.png?v8\",\"👷\"],\"construction_worker_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f477-2642.png?v8\",\"👷‍♂️\"],\"construction_worker_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f477-2640.png?v8\",\"👷‍♀️\"],\"control_knobs\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f39b.png?v8\",\"🎛️\"],\"convenience_store\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ea.png?v8\",\"🏪\"],\"cook\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f373.png?v8\",\"🧑‍🍳\"],\"cook_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1f0.png?v8\",\"🇨🇰\"],\"cookie\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f36a.png?v8\",\"🍪\"],\"cool\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f192.png?v8\",\"🆒\"],\"cop\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46e.png?v8\",\"👮\"],\"copilot\":[\"https://github.githubassets.com/images/icons/emoji/copilot.png?v8\"],\"copyright\":[\"https://github.githubassets.com/images/icons/emoji/unicode/00a9.png?v8\",\"©️\"],\"coral\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab8.png?v8\",\"🪸\"],\"corn\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f33d.png?v8\",\"🌽\"],\"costa_rica\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1f7.png?v8\",\"🇨🇷\"],\"cote_divoire\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1ee.png?v8\",\"🇨🇮\"],\"couch_and_lamp\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6cb.png?v8\",\"🛋️\"],\"couple\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46b.png?v8\",\"👫\"],\"couple_with_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f491.png?v8\",\"💑\"],\"couple_with_heart_man_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-2764-1f468.png?v8\",\"👨‍❤️‍👨\"],\"couple_with_heart_woman_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-2764-1f468.png?v8\",\"👩‍❤️‍👨\"],\"couple_with_heart_woman_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-2764-1f469.png?v8\",\"👩‍❤️‍👩\"],\"couplekiss\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f48f.png?v8\",\"💏\"],\"couplekiss_man_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-2764-1f48b-1f468.png?v8\",\"👨‍❤️‍💋‍👨\"],\"couplekiss_man_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-2764-1f48b-1f468.png?v8\",\"👩‍❤️‍💋‍👨\"],\"couplekiss_woman_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-2764-1f48b-1f469.png?v8\",\"👩‍❤️‍💋‍👩\"],\"cow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f42e.png?v8\",\"🐮\"],\"cow2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f404.png?v8\",\"🐄\"],\"cowboy_hat_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f920.png?v8\",\"🤠\"],\"crab\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f980.png?v8\",\"🦀\"],\"crayon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f58d.png?v8\",\"🖍️\"],\"credit_card\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b3.png?v8\",\"💳\"],\"crescent_moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f319.png?v8\",\"🌙\"],\"cricket\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f997.png?v8\",\"🦗\"],\"cricket_game\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3cf.png?v8\",\"🏏\"],\"croatia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ed-1f1f7.png?v8\",\"🇭🇷\"],\"crocodile\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f40a.png?v8\",\"🐊\"],\"croissant\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f950.png?v8\",\"🥐\"],\"crossed_fingers\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f91e.png?v8\",\"🤞\"],\"crossed_flags\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f38c.png?v8\",\"🎌\"],\"crossed_swords\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2694.png?v8\",\"⚔️\"],\"crown\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f451.png?v8\",\"👑\"],\"crutch\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa7c.png?v8\",\"🩼\"],\"cry\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f622.png?v8\",\"😢\"],\"crying_cat_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f63f.png?v8\",\"😿\"],\"crystal_ball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f52e.png?v8\",\"🔮\"],\"cuba\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1fa.png?v8\",\"🇨🇺\"],\"cucumber\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f952.png?v8\",\"🥒\"],\"cup_with_straw\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f964.png?v8\",\"🥤\"],\"cupcake\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c1.png?v8\",\"🧁\"],\"cupid\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f498.png?v8\",\"💘\"],\"curacao\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1fc.png?v8\",\"🇨🇼\"],\"curling_stone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f94c.png?v8\",\"🥌\"],\"curly_haired_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9b1.png?v8\",\"👨‍🦱\"],\"curly_haired_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9b1.png?v8\",\"👩‍🦱\"],\"curly_loop\":[\"https://github.githubassets.com/images/icons/emoji/unicode/27b0.png?v8\",\"➰\"],\"currency_exchange\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b1.png?v8\",\"💱\"],\"curry\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f35b.png?v8\",\"🍛\"],\"cursing_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f92c.png?v8\",\"🤬\"],\"custard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f36e.png?v8\",\"🍮\"],\"customs\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6c3.png?v8\",\"🛃\"],\"cut_of_meat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f969.png?v8\",\"🥩\"],\"cyclone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f300.png?v8\",\"🌀\"],\"cyprus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1fe.png?v8\",\"🇨🇾\"],\"czech_republic\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1ff.png?v8\",\"🇨🇿\"],\"dagger\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5e1.png?v8\",\"🗡️\"],\"dancer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f483.png?v8\",\"💃\"],\"dancers\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46f.png?v8\",\"👯\"],\"dancing_men\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46f-2642.png?v8\",\"👯‍♂️\"],\"dancing_women\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46f-2640.png?v8\",\"👯‍♀️\"],\"dango\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f361.png?v8\",\"🍡\"],\"dark_sunglasses\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f576.png?v8\",\"🕶️\"],\"dart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3af.png?v8\",\"🎯\"],\"dash\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a8.png?v8\",\"💨\"],\"date\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c5.png?v8\",\"📅\"],\"de\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e9-1f1ea.png?v8\",\"🇩🇪\"],\"deaf_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9cf-2642.png?v8\",\"🧏‍♂️\"],\"deaf_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9cf.png?v8\",\"🧏\"],\"deaf_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9cf-2640.png?v8\",\"🧏‍♀️\"],\"deciduous_tree\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f333.png?v8\",\"🌳\"],\"deer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f98c.png?v8\",\"🦌\"],\"denmark\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e9-1f1f0.png?v8\",\"🇩🇰\"],\"department_store\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ec.png?v8\",\"🏬\"],\"dependabot\":[\"https://github.githubassets.com/images/icons/emoji/dependabot.png?v8\"],\"derelict_house\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3da.png?v8\",\"🏚️\"],\"desert\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3dc.png?v8\",\"🏜️\"],\"desert_island\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3dd.png?v8\",\"🏝️\"],\"desktop_computer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5a5.png?v8\",\"🖥️\"],\"detective\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f575.png?v8\",\"🕵️\"],\"diamond_shape_with_a_dot_inside\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a0.png?v8\",\"💠\"],\"diamonds\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2666.png?v8\",\"♦️\"],\"diego_garcia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e9-1f1ec.png?v8\",\"🇩🇬\"],\"disappointed\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f61e.png?v8\",\"😞\"],\"disappointed_relieved\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f625.png?v8\",\"😥\"],\"disguised_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f978.png?v8\",\"🥸\"],\"diving_mask\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93f.png?v8\",\"🤿\"],\"diya_lamp\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa94.png?v8\",\"🪔\"],\"dizzy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ab.png?v8\",\"💫\"],\"dizzy_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f635.png?v8\",\"😵\"],\"djibouti\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e9-1f1ef.png?v8\",\"🇩🇯\"],\"dna\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ec.png?v8\",\"🧬\"],\"do_not_litter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6af.png?v8\",\"🚯\"],\"dodo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a4.png?v8\",\"🦤\"],\"dog\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f436.png?v8\",\"🐶\"],\"dog2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f415.png?v8\",\"🐕\"],\"dollar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b5.png?v8\",\"💵\"],\"dolls\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f38e.png?v8\",\"🎎\"],\"dolphin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f42c.png?v8\",\"🐬\"],\"dominica\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e9-1f1f2.png?v8\",\"🇩🇲\"],\"dominican_republic\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e9-1f1f4.png?v8\",\"🇩🇴\"],\"donkey\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1facf.png?v8\",\"🫏\"],\"door\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6aa.png?v8\",\"🚪\"],\"dotted_line_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fae5.png?v8\",\"🫥\"],\"doughnut\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f369.png?v8\",\"🍩\"],\"dove\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f54a.png?v8\",\"🕊️\"],\"dragon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f409.png?v8\",\"🐉\"],\"dragon_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f432.png?v8\",\"🐲\"],\"dress\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f457.png?v8\",\"👗\"],\"dromedary_camel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f42a.png?v8\",\"🐪\"],\"drooling_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f924.png?v8\",\"🤤\"],\"drop_of_blood\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa78.png?v8\",\"🩸\"],\"droplet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a7.png?v8\",\"💧\"],\"drum\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f941.png?v8\",\"🥁\"],\"duck\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f986.png?v8\",\"🦆\"],\"dumpling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f95f.png?v8\",\"🥟\"],\"dvd\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c0.png?v8\",\"📀\"],\"e-mail\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e7.png?v8\",\"📧\"],\"eagle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f985.png?v8\",\"🦅\"],\"ear\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f442.png?v8\",\"👂\"],\"ear_of_rice\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f33e.png?v8\",\"🌾\"],\"ear_with_hearing_aid\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9bb.png?v8\",\"🦻\"],\"earth_africa\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f30d.png?v8\",\"🌍\"],\"earth_americas\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f30e.png?v8\",\"🌎\"],\"earth_asia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f30f.png?v8\",\"🌏\"],\"ecuador\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1e8.png?v8\",\"🇪🇨\"],\"egg\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f95a.png?v8\",\"🥚\"],\"eggplant\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f346.png?v8\",\"🍆\"],\"egypt\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1ec.png?v8\",\"🇪🇬\"],\"eight\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0038-20e3.png?v8\",\"8️⃣\"],\"eight_pointed_black_star\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2734.png?v8\",\"✴️\"],\"eight_spoked_asterisk\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2733.png?v8\",\"✳️\"],\"eject_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23cf.png?v8\",\"⏏️\"],\"el_salvador\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1fb.png?v8\",\"🇸🇻\"],\"electric_plug\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f50c.png?v8\",\"🔌\"],\"electron\":[\"https://github.githubassets.com/images/icons/emoji/electron.png?v8\"],\"elephant\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f418.png?v8\",\"🐘\"],\"elevator\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6d7.png?v8\",\"🛗\"],\"elf\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9dd.png?v8\",\"🧝\"],\"elf_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9dd-2642.png?v8\",\"🧝‍♂️\"],\"elf_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9dd-2640.png?v8\",\"🧝‍♀️\"],\"email\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e7.png?v8\",\"📧\"],\"empty_nest\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab9.png?v8\",\"🪹\"],\"end\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f51a.png?v8\",\"🔚\"],\"england\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f4-e0067-e0062-e0065-e006e-e0067-e007f.png?v8\",\"🏴󠁧󠁢󠁥󠁮󠁧󠁿\"],\"envelope\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2709.png?v8\",\"✉️\"],\"envelope_with_arrow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e9.png?v8\",\"📩\"],\"equatorial_guinea\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f6.png?v8\",\"🇬🇶\"],\"eritrea\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1f7.png?v8\",\"🇪🇷\"],\"es\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1f8.png?v8\",\"🇪🇸\"],\"estonia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1ea.png?v8\",\"🇪🇪\"],\"ethiopia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1f9.png?v8\",\"🇪🇹\"],\"eu\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1fa.png?v8\",\"🇪🇺\"],\"euro\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b6.png?v8\",\"💶\"],\"european_castle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f0.png?v8\",\"🏰\"],\"european_post_office\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e4.png?v8\",\"🏤\"],\"european_union\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1fa.png?v8\",\"🇪🇺\"],\"evergreen_tree\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f332.png?v8\",\"🌲\"],\"exclamation\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2757.png?v8\",\"❗\"],\"exploding_head\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f92f.png?v8\",\"🤯\"],\"expressionless\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f611.png?v8\",\"😑\"],\"eye\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f441.png?v8\",\"👁️\"],\"eye_speech_bubble\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f441-1f5e8.png?v8\",\"👁️‍🗨️\"],\"eyeglasses\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f453.png?v8\",\"👓\"],\"eyes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f440.png?v8\",\"👀\"],\"face_exhaling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f62e-1f4a8.png?v8\",\"😮‍💨\"],\"face_holding_back_tears\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f979.png?v8\",\"🥹\"],\"face_in_clouds\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f636-1f32b.png?v8\",\"😶‍🌫️\"],\"face_with_diagonal_mouth\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fae4.png?v8\",\"🫤\"],\"face_with_head_bandage\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f915.png?v8\",\"🤕\"],\"face_with_open_eyes_and_hand_over_mouth\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fae2.png?v8\",\"🫢\"],\"face_with_peeking_eye\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fae3.png?v8\",\"🫣\"],\"face_with_spiral_eyes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f635-1f4ab.png?v8\",\"😵‍💫\"],\"face_with_thermometer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f912.png?v8\",\"🤒\"],\"facepalm\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f926.png?v8\",\"🤦\"],\"facepunch\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44a.png?v8\",\"👊\"],\"factory\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ed.png?v8\",\"🏭\"],\"factory_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f3ed.png?v8\",\"🧑‍🏭\"],\"fairy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9da.png?v8\",\"🧚\"],\"fairy_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9da-2642.png?v8\",\"🧚‍♂️\"],\"fairy_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9da-2640.png?v8\",\"🧚‍♀️\"],\"falafel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c6.png?v8\",\"🧆\"],\"falkland_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1eb-1f1f0.png?v8\",\"🇫🇰\"],\"fallen_leaf\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f342.png?v8\",\"🍂\"],\"family\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46a.png?v8\",\"👪\"],\"family_man_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f466.png?v8\",\"👨‍👦\"],\"family_man_boy_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f466-1f466.png?v8\",\"👨‍👦‍👦\"],\"family_man_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f467.png?v8\",\"👨‍👧\"],\"family_man_girl_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f467-1f466.png?v8\",\"👨‍👧‍👦\"],\"family_man_girl_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f467-1f467.png?v8\",\"👨‍👧‍👧\"],\"family_man_man_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f468-1f466.png?v8\",\"👨‍👨‍👦\"],\"family_man_man_boy_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f468-1f466-1f466.png?v8\",\"👨‍👨‍👦‍👦\"],\"family_man_man_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f468-1f467.png?v8\",\"👨‍👨‍👧\"],\"family_man_man_girl_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f468-1f467-1f466.png?v8\",\"👨‍👨‍👧‍👦\"],\"family_man_man_girl_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f468-1f467-1f467.png?v8\",\"👨‍👨‍👧‍👧\"],\"family_man_woman_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f469-1f466.png?v8\",\"👨‍👩‍👦\"],\"family_man_woman_boy_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f469-1f466-1f466.png?v8\",\"👨‍👩‍👦‍👦\"],\"family_man_woman_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f469-1f467.png?v8\",\"👨‍👩‍👧\"],\"family_man_woman_girl_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f469-1f467-1f466.png?v8\",\"👨‍👩‍👧‍👦\"],\"family_man_woman_girl_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f469-1f467-1f467.png?v8\",\"👨‍👩‍👧‍👧\"],\"family_woman_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f466.png?v8\",\"👩‍👦\"],\"family_woman_boy_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f466-1f466.png?v8\",\"👩‍👦‍👦\"],\"family_woman_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f467.png?v8\",\"👩‍👧\"],\"family_woman_girl_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f467-1f466.png?v8\",\"👩‍👧‍👦\"],\"family_woman_girl_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f467-1f467.png?v8\",\"👩‍👧‍👧\"],\"family_woman_woman_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f469-1f466.png?v8\",\"👩‍👩‍👦\"],\"family_woman_woman_boy_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f469-1f466-1f466.png?v8\",\"👩‍👩‍👦‍👦\"],\"family_woman_woman_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f469-1f467.png?v8\",\"👩‍👩‍👧\"],\"family_woman_woman_girl_boy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f469-1f467-1f466.png?v8\",\"👩‍👩‍👧‍👦\"],\"family_woman_woman_girl_girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f469-1f467-1f467.png?v8\",\"👩‍👩‍👧‍👧\"],\"farmer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f33e.png?v8\",\"🧑‍🌾\"],\"faroe_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1eb-1f1f4.png?v8\",\"🇫🇴\"],\"fast_forward\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23e9.png?v8\",\"⏩\"],\"fax\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e0.png?v8\",\"📠\"],\"fearful\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f628.png?v8\",\"😨\"],\"feather\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab6.png?v8\",\"🪶\"],\"feelsgood\":[\"https://github.githubassets.com/images/icons/emoji/feelsgood.png?v8\"],\"feet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f43e.png?v8\",\"🐾\"],\"female_detective\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f575-2640.png?v8\",\"🕵️‍♀️\"],\"female_sign\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2640.png?v8\",\"♀️\"],\"ferris_wheel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a1.png?v8\",\"🎡\"],\"ferry\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f4.png?v8\",\"⛴️\"],\"field_hockey\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d1.png?v8\",\"🏑\"],\"fiji\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1eb-1f1ef.png?v8\",\"🇫🇯\"],\"file_cabinet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5c4.png?v8\",\"🗄️\"],\"file_folder\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c1.png?v8\",\"📁\"],\"film_projector\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4fd.png?v8\",\"📽️\"],\"film_strip\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f39e.png?v8\",\"🎞️\"],\"finland\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1eb-1f1ee.png?v8\",\"🇫🇮\"],\"finnadie\":[\"https://github.githubassets.com/images/icons/emoji/finnadie.png?v8\"],\"fire\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f525.png?v8\",\"🔥\"],\"fire_engine\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f692.png?v8\",\"🚒\"],\"fire_extinguisher\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ef.png?v8\",\"🧯\"],\"firecracker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e8.png?v8\",\"🧨\"],\"firefighter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f692.png?v8\",\"🧑‍🚒\"],\"fireworks\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f386.png?v8\",\"🎆\"],\"first_quarter_moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f313.png?v8\",\"🌓\"],\"first_quarter_moon_with_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f31b.png?v8\",\"🌛\"],\"fish\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f41f.png?v8\",\"🐟\"],\"fish_cake\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f365.png?v8\",\"🍥\"],\"fishing_pole_and_fish\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a3.png?v8\",\"🎣\"],\"fishsticks\":[\"https://github.githubassets.com/images/icons/emoji/fishsticks.png?v8\"],\"fist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/270a.png?v8\",\"✊\"],\"fist_left\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f91b.png?v8\",\"🤛\"],\"fist_oncoming\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44a.png?v8\",\"👊\"],\"fist_raised\":[\"https://github.githubassets.com/images/icons/emoji/unicode/270a.png?v8\",\"✊\"],\"fist_right\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f91c.png?v8\",\"🤜\"],\"five\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0035-20e3.png?v8\",\"5️⃣\"],\"flags\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f38f.png?v8\",\"🎏\"],\"flamingo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a9.png?v8\",\"🦩\"],\"flashlight\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f526.png?v8\",\"🔦\"],\"flat_shoe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f97f.png?v8\",\"🥿\"],\"flatbread\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad3.png?v8\",\"🫓\"],\"fleur_de_lis\":[\"https://github.githubassets.com/images/icons/emoji/unicode/269c.png?v8\",\"⚜️\"],\"flight_arrival\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6ec.png?v8\",\"🛬\"],\"flight_departure\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6eb.png?v8\",\"🛫\"],\"flipper\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f42c.png?v8\",\"🐬\"],\"floppy_disk\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4be.png?v8\",\"💾\"],\"flower_playing_cards\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b4.png?v8\",\"🎴\"],\"flushed\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f633.png?v8\",\"😳\"],\"flute\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa88.png?v8\",\"🪈\"],\"fly\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab0.png?v8\",\"🪰\"],\"flying_disc\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f94f.png?v8\",\"🥏\"],\"flying_saucer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6f8.png?v8\",\"🛸\"],\"fog\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f32b.png?v8\",\"🌫️\"],\"foggy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f301.png?v8\",\"🌁\"],\"folding_hand_fan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faad.png?v8\",\"🪭\"],\"fondue\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad5.png?v8\",\"🫕\"],\"foot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b6.png?v8\",\"🦶\"],\"football\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c8.png?v8\",\"🏈\"],\"footprints\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f463.png?v8\",\"👣\"],\"fork_and_knife\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f374.png?v8\",\"🍴\"],\"fortune_cookie\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f960.png?v8\",\"🥠\"],\"fountain\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f2.png?v8\",\"⛲\"],\"fountain_pen\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f58b.png?v8\",\"🖋️\"],\"four\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0034-20e3.png?v8\",\"4️⃣\"],\"four_leaf_clover\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f340.png?v8\",\"🍀\"],\"fox_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f98a.png?v8\",\"🦊\"],\"fr\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1eb-1f1f7.png?v8\",\"🇫🇷\"],\"framed_picture\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5bc.png?v8\",\"🖼️\"],\"free\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f193.png?v8\",\"🆓\"],\"french_guiana\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1eb.png?v8\",\"🇬🇫\"],\"french_polynesia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1eb.png?v8\",\"🇵🇫\"],\"french_southern_territories\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1eb.png?v8\",\"🇹🇫\"],\"fried_egg\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f373.png?v8\",\"🍳\"],\"fried_shrimp\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f364.png?v8\",\"🍤\"],\"fries\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f35f.png?v8\",\"🍟\"],\"frog\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f438.png?v8\",\"🐸\"],\"frowning\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f626.png?v8\",\"😦\"],\"frowning_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2639.png?v8\",\"☹️\"],\"frowning_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64d-2642.png?v8\",\"🙍‍♂️\"],\"frowning_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64d.png?v8\",\"🙍\"],\"frowning_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64d-2640.png?v8\",\"🙍‍♀️\"],\"fu\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f595.png?v8\",\"🖕\"],\"fuelpump\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26fd.png?v8\",\"⛽\"],\"full_moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f315.png?v8\",\"🌕\"],\"full_moon_with_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f31d.png?v8\",\"🌝\"],\"funeral_urn\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26b1.png?v8\",\"⚱️\"],\"gabon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1e6.png?v8\",\"🇬🇦\"],\"gambia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f2.png?v8\",\"🇬🇲\"],\"game_die\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b2.png?v8\",\"🎲\"],\"garlic\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c4.png?v8\",\"🧄\"],\"gb\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1e7.png?v8\",\"🇬🇧\"],\"gear\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2699.png?v8\",\"⚙️\"],\"gem\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f48e.png?v8\",\"💎\"],\"gemini\":[\"https://github.githubassets.com/images/icons/emoji/unicode/264a.png?v8\",\"♊\"],\"genie\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9de.png?v8\",\"🧞\"],\"genie_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9de-2642.png?v8\",\"🧞‍♂️\"],\"genie_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9de-2640.png?v8\",\"🧞‍♀️\"],\"georgia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1ea.png?v8\",\"🇬🇪\"],\"ghana\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1ed.png?v8\",\"🇬🇭\"],\"ghost\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f47b.png?v8\",\"👻\"],\"gibraltar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1ee.png?v8\",\"🇬🇮\"],\"gift\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f381.png?v8\",\"🎁\"],\"gift_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f49d.png?v8\",\"💝\"],\"ginger_root\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fada.png?v8\",\"🫚\"],\"giraffe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f992.png?v8\",\"🦒\"],\"girl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f467.png?v8\",\"👧\"],\"globe_with_meridians\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f310.png?v8\",\"🌐\"],\"gloves\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e4.png?v8\",\"🧤\"],\"goal_net\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f945.png?v8\",\"🥅\"],\"goat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f410.png?v8\",\"🐐\"],\"goberserk\":[\"https://github.githubassets.com/images/icons/emoji/goberserk.png?v8\"],\"godmode\":[\"https://github.githubassets.com/images/icons/emoji/godmode.png?v8\"],\"goggles\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f97d.png?v8\",\"🥽\"],\"golf\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f3.png?v8\",\"⛳\"],\"golfing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3cc.png?v8\",\"🏌️\"],\"golfing_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3cc-2642.png?v8\",\"🏌️‍♂️\"],\"golfing_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3cc-2640.png?v8\",\"🏌️‍♀️\"],\"goose\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fabf.png?v8\",\"🪿\"],\"gorilla\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f98d.png?v8\",\"🦍\"],\"grapes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f347.png?v8\",\"🍇\"],\"greece\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f7.png?v8\",\"🇬🇷\"],\"green_apple\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f34f.png?v8\",\"🍏\"],\"green_book\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d7.png?v8\",\"📗\"],\"green_circle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e2.png?v8\",\"🟢\"],\"green_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f49a.png?v8\",\"💚\"],\"green_salad\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f957.png?v8\",\"🥗\"],\"green_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e9.png?v8\",\"🟩\"],\"greenland\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f1.png?v8\",\"🇬🇱\"],\"grenada\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1e9.png?v8\",\"🇬🇩\"],\"grey_exclamation\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2755.png?v8\",\"❕\"],\"grey_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa76.png?v8\",\"🩶\"],\"grey_question\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2754.png?v8\",\"❔\"],\"grimacing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f62c.png?v8\",\"😬\"],\"grin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f601.png?v8\",\"😁\"],\"grinning\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f600.png?v8\",\"😀\"],\"guadeloupe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f5.png?v8\",\"🇬🇵\"],\"guam\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1fa.png?v8\",\"🇬🇺\"],\"guard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f482.png?v8\",\"💂\"],\"guardsman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f482-2642.png?v8\",\"💂‍♂️\"],\"guardswoman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f482-2640.png?v8\",\"💂‍♀️\"],\"guatemala\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f9.png?v8\",\"🇬🇹\"],\"guernsey\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1ec.png?v8\",\"🇬🇬\"],\"guide_dog\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ae.png?v8\",\"🦮\"],\"guinea\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f3.png?v8\",\"🇬🇳\"],\"guinea_bissau\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1fc.png?v8\",\"🇬🇼\"],\"guitar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b8.png?v8\",\"🎸\"],\"gun\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f52b.png?v8\",\"🔫\"],\"guyana\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1fe.png?v8\",\"🇬🇾\"],\"hair_pick\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faae.png?v8\",\"🪮\"],\"haircut\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f487.png?v8\",\"💇\"],\"haircut_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f487-2642.png?v8\",\"💇‍♂️\"],\"haircut_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f487-2640.png?v8\",\"💇‍♀️\"],\"haiti\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ed-1f1f9.png?v8\",\"🇭🇹\"],\"hamburger\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f354.png?v8\",\"🍔\"],\"hammer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f528.png?v8\",\"🔨\"],\"hammer_and_pick\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2692.png?v8\",\"⚒️\"],\"hammer_and_wrench\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6e0.png?v8\",\"🛠️\"],\"hamsa\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faac.png?v8\",\"🪬\"],\"hamster\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f439.png?v8\",\"🐹\"],\"hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/270b.png?v8\",\"✋\"],\"hand_over_mouth\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f92d.png?v8\",\"🤭\"],\"hand_with_index_finger_and_thumb_crossed\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faf0.png?v8\",\"🫰\"],\"handbag\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f45c.png?v8\",\"👜\"],\"handball_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93e.png?v8\",\"🤾\"],\"handshake\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f91d.png?v8\",\"🤝\"],\"hankey\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a9.png?v8\",\"💩\"],\"hash\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0023-20e3.png?v8\",\"#️⃣\"],\"hatched_chick\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f425.png?v8\",\"🐥\"],\"hatching_chick\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f423.png?v8\",\"🐣\"],\"headphones\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a7.png?v8\",\"🎧\"],\"headstone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa6.png?v8\",\"🪦\"],\"health_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-2695.png?v8\",\"🧑‍⚕️\"],\"hear_no_evil\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f649.png?v8\",\"🙉\"],\"heard_mcdonald_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ed-1f1f2.png?v8\",\"🇭🇲\"],\"heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2764.png?v8\",\"❤️\"],\"heart_decoration\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f49f.png?v8\",\"💟\"],\"heart_eyes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f60d.png?v8\",\"😍\"],\"heart_eyes_cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f63b.png?v8\",\"😻\"],\"heart_hands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faf6.png?v8\",\"🫶\"],\"heart_on_fire\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2764-1f525.png?v8\",\"❤️‍🔥\"],\"heartbeat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f493.png?v8\",\"💓\"],\"heartpulse\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f497.png?v8\",\"💗\"],\"hearts\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2665.png?v8\",\"♥️\"],\"heavy_check_mark\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2714.png?v8\",\"✔️\"],\"heavy_division_sign\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2797.png?v8\",\"➗\"],\"heavy_dollar_sign\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b2.png?v8\",\"💲\"],\"heavy_equals_sign\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7f0.png?v8\",\"🟰\"],\"heavy_exclamation_mark\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2757.png?v8\",\"❗\"],\"heavy_heart_exclamation\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2763.png?v8\",\"❣️\"],\"heavy_minus_sign\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2796.png?v8\",\"➖\"],\"heavy_multiplication_x\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2716.png?v8\",\"✖️\"],\"heavy_plus_sign\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2795.png?v8\",\"➕\"],\"hedgehog\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f994.png?v8\",\"🦔\"],\"helicopter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f681.png?v8\",\"🚁\"],\"herb\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f33f.png?v8\",\"🌿\"],\"hibiscus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f33a.png?v8\",\"🌺\"],\"high_brightness\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f506.png?v8\",\"🔆\"],\"high_heel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f460.png?v8\",\"👠\"],\"hiking_boot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f97e.png?v8\",\"🥾\"],\"hindu_temple\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6d5.png?v8\",\"🛕\"],\"hippopotamus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f99b.png?v8\",\"🦛\"],\"hocho\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f52a.png?v8\",\"🔪\"],\"hole\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f573.png?v8\",\"🕳️\"],\"honduras\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ed-1f1f3.png?v8\",\"🇭🇳\"],\"honey_pot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f36f.png?v8\",\"🍯\"],\"honeybee\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f41d.png?v8\",\"🐝\"],\"hong_kong\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ed-1f1f0.png?v8\",\"🇭🇰\"],\"hook\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa9d.png?v8\",\"🪝\"],\"horse\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f434.png?v8\",\"🐴\"],\"horse_racing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c7.png?v8\",\"🏇\"],\"hospital\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e5.png?v8\",\"🏥\"],\"hot_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f975.png?v8\",\"🥵\"],\"hot_pepper\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f336.png?v8\",\"🌶️\"],\"hotdog\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f32d.png?v8\",\"🌭\"],\"hotel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e8.png?v8\",\"🏨\"],\"hotsprings\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2668.png?v8\",\"♨️\"],\"hourglass\":[\"https://github.githubassets.com/images/icons/emoji/unicode/231b.png?v8\",\"⌛\"],\"hourglass_flowing_sand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23f3.png?v8\",\"⏳\"],\"house\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e0.png?v8\",\"🏠\"],\"house_with_garden\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e1.png?v8\",\"🏡\"],\"houses\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d8.png?v8\",\"🏘️\"],\"hugs\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f917.png?v8\",\"🤗\"],\"hungary\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ed-1f1fa.png?v8\",\"🇭🇺\"],\"hurtrealbad\":[\"https://github.githubassets.com/images/icons/emoji/hurtrealbad.png?v8\"],\"hushed\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f62f.png?v8\",\"😯\"],\"hut\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6d6.png?v8\",\"🛖\"],\"hyacinth\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fabb.png?v8\",\"🪻\"],\"ice_cream\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f368.png?v8\",\"🍨\"],\"ice_cube\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ca.png?v8\",\"🧊\"],\"ice_hockey\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d2.png?v8\",\"🏒\"],\"ice_skate\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f8.png?v8\",\"⛸️\"],\"icecream\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f366.png?v8\",\"🍦\"],\"iceland\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1f8.png?v8\",\"🇮🇸\"],\"id\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f194.png?v8\",\"🆔\"],\"identification_card\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faaa.png?v8\",\"🪪\"],\"ideograph_advantage\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f250.png?v8\",\"🉐\"],\"imp\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f47f.png?v8\",\"👿\"],\"inbox_tray\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e5.png?v8\",\"📥\"],\"incoming_envelope\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e8.png?v8\",\"📨\"],\"index_pointing_at_the_viewer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faf5.png?v8\",\"🫵\"],\"india\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1f3.png?v8\",\"🇮🇳\"],\"indonesia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1e9.png?v8\",\"🇮🇩\"],\"infinity\":[\"https://github.githubassets.com/images/icons/emoji/unicode/267e.png?v8\",\"♾️\"],\"information_desk_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f481.png?v8\",\"💁\"],\"information_source\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2139.png?v8\",\"ℹ️\"],\"innocent\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f607.png?v8\",\"😇\"],\"interrobang\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2049.png?v8\",\"⁉️\"],\"iphone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f1.png?v8\",\"📱\"],\"iran\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1f7.png?v8\",\"🇮🇷\"],\"iraq\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1f6.png?v8\",\"🇮🇶\"],\"ireland\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1ea.png?v8\",\"🇮🇪\"],\"isle_of_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1f2.png?v8\",\"🇮🇲\"],\"israel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1f1.png?v8\",\"🇮🇱\"],\"it\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ee-1f1f9.png?v8\",\"🇮🇹\"],\"izakaya_lantern\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ee.png?v8\",\"🏮\"],\"jack_o_lantern\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f383.png?v8\",\"🎃\"],\"jamaica\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ef-1f1f2.png?v8\",\"🇯🇲\"],\"japan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5fe.png?v8\",\"🗾\"],\"japanese_castle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ef.png?v8\",\"🏯\"],\"japanese_goblin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f47a.png?v8\",\"👺\"],\"japanese_ogre\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f479.png?v8\",\"👹\"],\"jar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad9.png?v8\",\"🫙\"],\"jeans\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f456.png?v8\",\"👖\"],\"jellyfish\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fabc.png?v8\",\"🪼\"],\"jersey\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ef-1f1ea.png?v8\",\"🇯🇪\"],\"jigsaw\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e9.png?v8\",\"🧩\"],\"jordan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ef-1f1f4.png?v8\",\"🇯🇴\"],\"joy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f602.png?v8\",\"😂\"],\"joy_cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f639.png?v8\",\"😹\"],\"joystick\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f579.png?v8\",\"🕹️\"],\"jp\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ef-1f1f5.png?v8\",\"🇯🇵\"],\"judge\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-2696.png?v8\",\"🧑‍⚖️\"],\"juggling_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f939.png?v8\",\"🤹\"],\"kaaba\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f54b.png?v8\",\"🕋\"],\"kangaroo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f998.png?v8\",\"🦘\"],\"kazakhstan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1ff.png?v8\",\"🇰🇿\"],\"kenya\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1ea.png?v8\",\"🇰🇪\"],\"key\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f511.png?v8\",\"🔑\"],\"keyboard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2328.png?v8\",\"⌨️\"],\"keycap_ten\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f51f.png?v8\",\"🔟\"],\"khanda\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faaf.png?v8\",\"🪯\"],\"kick_scooter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6f4.png?v8\",\"🛴\"],\"kimono\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f458.png?v8\",\"👘\"],\"kiribati\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1ee.png?v8\",\"🇰🇮\"],\"kiss\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f48b.png?v8\",\"💋\"],\"kissing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f617.png?v8\",\"😗\"],\"kissing_cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f63d.png?v8\",\"😽\"],\"kissing_closed_eyes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f61a.png?v8\",\"😚\"],\"kissing_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f618.png?v8\",\"😘\"],\"kissing_smiling_eyes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f619.png?v8\",\"😙\"],\"kite\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa81.png?v8\",\"🪁\"],\"kiwi_fruit\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f95d.png?v8\",\"🥝\"],\"kneeling_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ce-2642.png?v8\",\"🧎‍♂️\"],\"kneeling_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ce.png?v8\",\"🧎\"],\"kneeling_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ce-2640.png?v8\",\"🧎‍♀️\"],\"knife\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f52a.png?v8\",\"🔪\"],\"knot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa2.png?v8\",\"🪢\"],\"koala\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f428.png?v8\",\"🐨\"],\"koko\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f201.png?v8\",\"🈁\"],\"kosovo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fd-1f1f0.png?v8\",\"🇽🇰\"],\"kr\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1f7.png?v8\",\"🇰🇷\"],\"kuwait\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1fc.png?v8\",\"🇰🇼\"],\"kyrgyzstan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1ec.png?v8\",\"🇰🇬\"],\"lab_coat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f97c.png?v8\",\"🥼\"],\"label\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f7.png?v8\",\"🏷️\"],\"lacrosse\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f94d.png?v8\",\"🥍\"],\"ladder\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa9c.png?v8\",\"🪜\"],\"lady_beetle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f41e.png?v8\",\"🐞\"],\"lantern\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ee.png?v8\",\"🏮\"],\"laos\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1e6.png?v8\",\"🇱🇦\"],\"large_blue_circle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f535.png?v8\",\"🔵\"],\"large_blue_diamond\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f537.png?v8\",\"🔷\"],\"large_orange_diamond\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f536.png?v8\",\"🔶\"],\"last_quarter_moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f317.png?v8\",\"🌗\"],\"last_quarter_moon_with_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f31c.png?v8\",\"🌜\"],\"latin_cross\":[\"https://github.githubassets.com/images/icons/emoji/unicode/271d.png?v8\",\"✝️\"],\"latvia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1fb.png?v8\",\"🇱🇻\"],\"laughing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f606.png?v8\",\"😆\"],\"leafy_green\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f96c.png?v8\",\"🥬\"],\"leaves\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f343.png?v8\",\"🍃\"],\"lebanon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1e7.png?v8\",\"🇱🇧\"],\"ledger\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d2.png?v8\",\"📒\"],\"left_luggage\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6c5.png?v8\",\"🛅\"],\"left_right_arrow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2194.png?v8\",\"↔️\"],\"left_speech_bubble\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5e8.png?v8\",\"🗨️\"],\"leftwards_arrow_with_hook\":[\"https://github.githubassets.com/images/icons/emoji/unicode/21a9.png?v8\",\"↩️\"],\"leftwards_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faf2.png?v8\",\"🫲\"],\"leftwards_pushing_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faf7.png?v8\",\"🫷\"],\"leg\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b5.png?v8\",\"🦵\"],\"lemon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f34b.png?v8\",\"🍋\"],\"leo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/264c.png?v8\",\"♌\"],\"leopard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f406.png?v8\",\"🐆\"],\"lesotho\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1f8.png?v8\",\"🇱🇸\"],\"level_slider\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f39a.png?v8\",\"🎚️\"],\"liberia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1f7.png?v8\",\"🇱🇷\"],\"libra\":[\"https://github.githubassets.com/images/icons/emoji/unicode/264e.png?v8\",\"♎\"],\"libya\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1fe.png?v8\",\"🇱🇾\"],\"liechtenstein\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1ee.png?v8\",\"🇱🇮\"],\"light_blue_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa75.png?v8\",\"🩵\"],\"light_rail\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f688.png?v8\",\"🚈\"],\"link\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f517.png?v8\",\"🔗\"],\"lion\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f981.png?v8\",\"🦁\"],\"lips\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f444.png?v8\",\"👄\"],\"lipstick\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f484.png?v8\",\"💄\"],\"lithuania\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1f9.png?v8\",\"🇱🇹\"],\"lizard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f98e.png?v8\",\"🦎\"],\"llama\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f999.png?v8\",\"🦙\"],\"lobster\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f99e.png?v8\",\"🦞\"],\"lock\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f512.png?v8\",\"🔒\"],\"lock_with_ink_pen\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f50f.png?v8\",\"🔏\"],\"lollipop\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f36d.png?v8\",\"🍭\"],\"long_drum\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa98.png?v8\",\"🪘\"],\"loop\":[\"https://github.githubassets.com/images/icons/emoji/unicode/27bf.png?v8\",\"➿\"],\"lotion_bottle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f4.png?v8\",\"🧴\"],\"lotus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab7.png?v8\",\"🪷\"],\"lotus_position\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d8.png?v8\",\"🧘\"],\"lotus_position_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d8-2642.png?v8\",\"🧘‍♂️\"],\"lotus_position_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d8-2640.png?v8\",\"🧘‍♀️\"],\"loud_sound\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f50a.png?v8\",\"🔊\"],\"loudspeaker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e2.png?v8\",\"📢\"],\"love_hotel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e9.png?v8\",\"🏩\"],\"love_letter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f48c.png?v8\",\"💌\"],\"love_you_gesture\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f91f.png?v8\",\"🤟\"],\"low_battery\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faab.png?v8\",\"🪫\"],\"low_brightness\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f505.png?v8\",\"🔅\"],\"luggage\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f3.png?v8\",\"🧳\"],\"lungs\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fac1.png?v8\",\"🫁\"],\"luxembourg\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1fa.png?v8\",\"🇱🇺\"],\"lying_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f925.png?v8\",\"🤥\"],\"m\":[\"https://github.githubassets.com/images/icons/emoji/unicode/24c2.png?v8\",\"Ⓜ️\"],\"macau\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f4.png?v8\",\"🇲🇴\"],\"macedonia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f0.png?v8\",\"🇲🇰\"],\"madagascar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1ec.png?v8\",\"🇲🇬\"],\"mag\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f50d.png?v8\",\"🔍\"],\"mag_right\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f50e.png?v8\",\"🔎\"],\"mage\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d9.png?v8\",\"🧙\"],\"mage_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d9-2642.png?v8\",\"🧙‍♂️\"],\"mage_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d9-2640.png?v8\",\"🧙‍♀️\"],\"magic_wand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa84.png?v8\",\"🪄\"],\"magnet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f2.png?v8\",\"🧲\"],\"mahjong\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f004.png?v8\",\"🀄\"],\"mailbox\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4eb.png?v8\",\"📫\"],\"mailbox_closed\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ea.png?v8\",\"📪\"],\"mailbox_with_mail\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ec.png?v8\",\"📬\"],\"mailbox_with_no_mail\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ed.png?v8\",\"📭\"],\"malawi\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1fc.png?v8\",\"🇲🇼\"],\"malaysia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1fe.png?v8\",\"🇲🇾\"],\"maldives\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1fb.png?v8\",\"🇲🇻\"],\"male_detective\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f575-2642.png?v8\",\"🕵️‍♂️\"],\"male_sign\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2642.png?v8\",\"♂️\"],\"mali\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f1.png?v8\",\"🇲🇱\"],\"malta\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f9.png?v8\",\"🇲🇹\"],\"mammoth\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a3.png?v8\",\"🦣\"],\"man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468.png?v8\",\"👨\"],\"man_artist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f3a8.png?v8\",\"👨‍🎨\"],\"man_astronaut\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f680.png?v8\",\"👨‍🚀\"],\"man_beard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d4-2642.png?v8\",\"🧔‍♂️\"],\"man_cartwheeling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f938-2642.png?v8\",\"🤸‍♂️\"],\"man_cook\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f373.png?v8\",\"👨‍🍳\"],\"man_dancing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f57a.png?v8\",\"🕺\"],\"man_facepalming\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f926-2642.png?v8\",\"🤦‍♂️\"],\"man_factory_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f3ed.png?v8\",\"👨‍🏭\"],\"man_farmer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f33e.png?v8\",\"👨‍🌾\"],\"man_feeding_baby\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f37c.png?v8\",\"👨‍🍼\"],\"man_firefighter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f692.png?v8\",\"👨‍🚒\"],\"man_health_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-2695.png?v8\",\"👨‍⚕️\"],\"man_in_manual_wheelchair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9bd.png?v8\",\"👨‍🦽\"],\"man_in_motorized_wheelchair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9bc.png?v8\",\"👨‍🦼\"],\"man_in_tuxedo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f935-2642.png?v8\",\"🤵‍♂️\"],\"man_judge\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-2696.png?v8\",\"👨‍⚖️\"],\"man_juggling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f939-2642.png?v8\",\"🤹‍♂️\"],\"man_mechanic\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f527.png?v8\",\"👨‍🔧\"],\"man_office_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f4bc.png?v8\",\"👨‍💼\"],\"man_pilot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-2708.png?v8\",\"👨‍✈️\"],\"man_playing_handball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93e-2642.png?v8\",\"🤾‍♂️\"],\"man_playing_water_polo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93d-2642.png?v8\",\"🤽‍♂️\"],\"man_scientist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f52c.png?v8\",\"👨‍🔬\"],\"man_shrugging\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f937-2642.png?v8\",\"🤷‍♂️\"],\"man_singer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f3a4.png?v8\",\"👨‍🎤\"],\"man_student\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f393.png?v8\",\"👨‍🎓\"],\"man_teacher\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f3eb.png?v8\",\"👨‍🏫\"],\"man_technologist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f4bb.png?v8\",\"👨‍💻\"],\"man_with_gua_pi_mao\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f472.png?v8\",\"👲\"],\"man_with_probing_cane\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9af.png?v8\",\"👨‍🦯\"],\"man_with_turban\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f473-2642.png?v8\",\"👳‍♂️\"],\"man_with_veil\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f470-2642.png?v8\",\"👰‍♂️\"],\"mandarin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f34a.png?v8\",\"🍊\"],\"mango\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f96d.png?v8\",\"🥭\"],\"mans_shoe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f45e.png?v8\",\"👞\"],\"mantelpiece_clock\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f570.png?v8\",\"🕰️\"],\"manual_wheelchair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9bd.png?v8\",\"🦽\"],\"maple_leaf\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f341.png?v8\",\"🍁\"],\"maracas\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa87.png?v8\",\"🪇\"],\"marshall_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1ed.png?v8\",\"🇲🇭\"],\"martial_arts_uniform\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f94b.png?v8\",\"🥋\"],\"martinique\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f6.png?v8\",\"🇲🇶\"],\"mask\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f637.png?v8\",\"😷\"],\"massage\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f486.png?v8\",\"💆\"],\"massage_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f486-2642.png?v8\",\"💆‍♂️\"],\"massage_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f486-2640.png?v8\",\"💆‍♀️\"],\"mate\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c9.png?v8\",\"🧉\"],\"mauritania\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f7.png?v8\",\"🇲🇷\"],\"mauritius\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1fa.png?v8\",\"🇲🇺\"],\"mayotte\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fe-1f1f9.png?v8\",\"🇾🇹\"],\"meat_on_bone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f356.png?v8\",\"🍖\"],\"mechanic\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f527.png?v8\",\"🧑‍🔧\"],\"mechanical_arm\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9be.png?v8\",\"🦾\"],\"mechanical_leg\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9bf.png?v8\",\"🦿\"],\"medal_military\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f396.png?v8\",\"🎖️\"],\"medal_sports\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c5.png?v8\",\"🏅\"],\"medical_symbol\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2695.png?v8\",\"⚕️\"],\"mega\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e3.png?v8\",\"📣\"],\"melon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f348.png?v8\",\"🍈\"],\"melting_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fae0.png?v8\",\"🫠\"],\"memo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4dd.png?v8\",\"📝\"],\"men_wrestling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93c-2642.png?v8\",\"🤼‍♂️\"],\"mending_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2764-1fa79.png?v8\",\"❤️‍🩹\"],\"menorah\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f54e.png?v8\",\"🕎\"],\"mens\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b9.png?v8\",\"🚹\"],\"mermaid\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9dc-2640.png?v8\",\"🧜‍♀️\"],\"merman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9dc-2642.png?v8\",\"🧜‍♂️\"],\"merperson\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9dc.png?v8\",\"🧜\"],\"metal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f918.png?v8\",\"🤘\"],\"metro\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f687.png?v8\",\"🚇\"],\"mexico\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1fd.png?v8\",\"🇲🇽\"],\"microbe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a0.png?v8\",\"🦠\"],\"micronesia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1eb-1f1f2.png?v8\",\"🇫🇲\"],\"microphone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a4.png?v8\",\"🎤\"],\"microscope\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f52c.png?v8\",\"🔬\"],\"middle_finger\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f595.png?v8\",\"🖕\"],\"military_helmet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa96.png?v8\",\"🪖\"],\"milk_glass\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f95b.png?v8\",\"🥛\"],\"milky_way\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f30c.png?v8\",\"🌌\"],\"minibus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f690.png?v8\",\"🚐\"],\"minidisc\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4bd.png?v8\",\"💽\"],\"mirror\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa9e.png?v8\",\"🪞\"],\"mirror_ball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa9.png?v8\",\"🪩\"],\"mobile_phone_off\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f4.png?v8\",\"📴\"],\"moldova\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1e9.png?v8\",\"🇲🇩\"],\"monaco\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1e8.png?v8\",\"🇲🇨\"],\"money_mouth_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f911.png?v8\",\"🤑\"],\"money_with_wings\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b8.png?v8\",\"💸\"],\"moneybag\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b0.png?v8\",\"💰\"],\"mongolia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f3.png?v8\",\"🇲🇳\"],\"monkey\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f412.png?v8\",\"🐒\"],\"monkey_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f435.png?v8\",\"🐵\"],\"monocle_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d0.png?v8\",\"🧐\"],\"monorail\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f69d.png?v8\",\"🚝\"],\"montenegro\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1ea.png?v8\",\"🇲🇪\"],\"montserrat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f8.png?v8\",\"🇲🇸\"],\"moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f314.png?v8\",\"🌔\"],\"moon_cake\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f96e.png?v8\",\"🥮\"],\"moose\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1face.png?v8\",\"🫎\"],\"morocco\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1e6.png?v8\",\"🇲🇦\"],\"mortar_board\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f393.png?v8\",\"🎓\"],\"mosque\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f54c.png?v8\",\"🕌\"],\"mosquito\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f99f.png?v8\",\"🦟\"],\"motor_boat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6e5.png?v8\",\"🛥️\"],\"motor_scooter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6f5.png?v8\",\"🛵\"],\"motorcycle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3cd.png?v8\",\"🏍️\"],\"motorized_wheelchair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9bc.png?v8\",\"🦼\"],\"motorway\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6e3.png?v8\",\"🛣️\"],\"mount_fuji\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5fb.png?v8\",\"🗻\"],\"mountain\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f0.png?v8\",\"⛰️\"],\"mountain_bicyclist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b5.png?v8\",\"🚵\"],\"mountain_biking_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b5-2642.png?v8\",\"🚵‍♂️\"],\"mountain_biking_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b5-2640.png?v8\",\"🚵‍♀️\"],\"mountain_cableway\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a0.png?v8\",\"🚠\"],\"mountain_railway\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f69e.png?v8\",\"🚞\"],\"mountain_snow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d4.png?v8\",\"🏔️\"],\"mouse\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f42d.png?v8\",\"🐭\"],\"mouse2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f401.png?v8\",\"🐁\"],\"mouse_trap\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa4.png?v8\",\"🪤\"],\"movie_camera\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a5.png?v8\",\"🎥\"],\"moyai\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5ff.png?v8\",\"🗿\"],\"mozambique\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1ff.png?v8\",\"🇲🇿\"],\"mrs_claus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f936.png?v8\",\"🤶\"],\"muscle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4aa.png?v8\",\"💪\"],\"mushroom\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f344.png?v8\",\"🍄\"],\"musical_keyboard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b9.png?v8\",\"🎹\"],\"musical_note\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b5.png?v8\",\"🎵\"],\"musical_score\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3bc.png?v8\",\"🎼\"],\"mute\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f507.png?v8\",\"🔇\"],\"mx_claus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f384.png?v8\",\"🧑‍🎄\"],\"myanmar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f2.png?v8\",\"🇲🇲\"],\"nail_care\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f485.png?v8\",\"💅\"],\"name_badge\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4db.png?v8\",\"📛\"],\"namibia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1e6.png?v8\",\"🇳🇦\"],\"national_park\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3de.png?v8\",\"🏞️\"],\"nauru\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1f7.png?v8\",\"🇳🇷\"],\"nauseated_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f922.png?v8\",\"🤢\"],\"nazar_amulet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ff.png?v8\",\"🧿\"],\"neckbeard\":[\"https://github.githubassets.com/images/icons/emoji/neckbeard.png?v8\"],\"necktie\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f454.png?v8\",\"👔\"],\"negative_squared_cross_mark\":[\"https://github.githubassets.com/images/icons/emoji/unicode/274e.png?v8\",\"❎\"],\"nepal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1f5.png?v8\",\"🇳🇵\"],\"nerd_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f913.png?v8\",\"🤓\"],\"nest_with_eggs\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faba.png?v8\",\"🪺\"],\"nesting_dolls\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa86.png?v8\",\"🪆\"],\"netherlands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1f1.png?v8\",\"🇳🇱\"],\"neutral_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f610.png?v8\",\"😐\"],\"new\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f195.png?v8\",\"🆕\"],\"new_caledonia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1e8.png?v8\",\"🇳🇨\"],\"new_moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f311.png?v8\",\"🌑\"],\"new_moon_with_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f31a.png?v8\",\"🌚\"],\"new_zealand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1ff.png?v8\",\"🇳🇿\"],\"newspaper\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f0.png?v8\",\"📰\"],\"newspaper_roll\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5de.png?v8\",\"🗞️\"],\"next_track_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23ed.png?v8\",\"⏭️\"],\"ng\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f196.png?v8\",\"🆖\"],\"ng_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f645-2642.png?v8\",\"🙅‍♂️\"],\"ng_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f645-2640.png?v8\",\"🙅‍♀️\"],\"nicaragua\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1ee.png?v8\",\"🇳🇮\"],\"niger\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1ea.png?v8\",\"🇳🇪\"],\"nigeria\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1ec.png?v8\",\"🇳🇬\"],\"night_with_stars\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f303.png?v8\",\"🌃\"],\"nine\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0039-20e3.png?v8\",\"9️⃣\"],\"ninja\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f977.png?v8\",\"🥷\"],\"niue\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1fa.png?v8\",\"🇳🇺\"],\"no_bell\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f515.png?v8\",\"🔕\"],\"no_bicycles\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b3.png?v8\",\"🚳\"],\"no_entry\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26d4.png?v8\",\"⛔\"],\"no_entry_sign\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6ab.png?v8\",\"🚫\"],\"no_good\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f645.png?v8\",\"🙅\"],\"no_good_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f645-2642.png?v8\",\"🙅‍♂️\"],\"no_good_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f645-2640.png?v8\",\"🙅‍♀️\"],\"no_mobile_phones\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f5.png?v8\",\"📵\"],\"no_mouth\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f636.png?v8\",\"😶\"],\"no_pedestrians\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b7.png?v8\",\"🚷\"],\"no_smoking\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6ad.png?v8\",\"🚭\"],\"non-potable_water\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b1.png?v8\",\"🚱\"],\"norfolk_island\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1eb.png?v8\",\"🇳🇫\"],\"north_korea\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1f5.png?v8\",\"🇰🇵\"],\"northern_mariana_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1f5.png?v8\",\"🇲🇵\"],\"norway\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f3-1f1f4.png?v8\",\"🇳🇴\"],\"nose\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f443.png?v8\",\"👃\"],\"notebook\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d3.png?v8\",\"📓\"],\"notebook_with_decorative_cover\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d4.png?v8\",\"📔\"],\"notes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b6.png?v8\",\"🎶\"],\"nut_and_bolt\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f529.png?v8\",\"🔩\"],\"o\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2b55.png?v8\",\"⭕\"],\"o2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f17e.png?v8\",\"🅾️\"],\"ocean\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f30a.png?v8\",\"🌊\"],\"octocat\":[\"https://github.githubassets.com/images/icons/emoji/octocat.png?v8\"],\"octopus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f419.png?v8\",\"🐙\"],\"oden\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f362.png?v8\",\"🍢\"],\"office\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e2.png?v8\",\"🏢\"],\"office_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f4bc.png?v8\",\"🧑‍💼\"],\"oil_drum\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6e2.png?v8\",\"🛢️\"],\"ok\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f197.png?v8\",\"🆗\"],\"ok_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44c.png?v8\",\"👌\"],\"ok_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f646-2642.png?v8\",\"🙆‍♂️\"],\"ok_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f646.png?v8\",\"🙆\"],\"ok_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f646-2640.png?v8\",\"🙆‍♀️\"],\"old_key\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5dd.png?v8\",\"🗝️\"],\"older_adult\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d3.png?v8\",\"🧓\"],\"older_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f474.png?v8\",\"👴\"],\"older_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f475.png?v8\",\"👵\"],\"olive\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad2.png?v8\",\"🫒\"],\"om\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f549.png?v8\",\"🕉️\"],\"oman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f4-1f1f2.png?v8\",\"🇴🇲\"],\"on\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f51b.png?v8\",\"🔛\"],\"oncoming_automobile\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f698.png?v8\",\"🚘\"],\"oncoming_bus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f68d.png?v8\",\"🚍\"],\"oncoming_police_car\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f694.png?v8\",\"🚔\"],\"oncoming_taxi\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f696.png?v8\",\"🚖\"],\"one\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0031-20e3.png?v8\",\"1️⃣\"],\"one_piece_swimsuit\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa71.png?v8\",\"🩱\"],\"onion\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c5.png?v8\",\"🧅\"],\"open_book\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d6.png?v8\",\"📖\"],\"open_file_folder\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c2.png?v8\",\"📂\"],\"open_hands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f450.png?v8\",\"👐\"],\"open_mouth\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f62e.png?v8\",\"😮\"],\"open_umbrella\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2602.png?v8\",\"☂️\"],\"ophiuchus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26ce.png?v8\",\"⛎\"],\"orange\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f34a.png?v8\",\"🍊\"],\"orange_book\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d9.png?v8\",\"📙\"],\"orange_circle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e0.png?v8\",\"🟠\"],\"orange_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e1.png?v8\",\"🧡\"],\"orange_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e7.png?v8\",\"🟧\"],\"orangutan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a7.png?v8\",\"🦧\"],\"orthodox_cross\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2626.png?v8\",\"☦️\"],\"otter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a6.png?v8\",\"🦦\"],\"outbox_tray\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e4.png?v8\",\"📤\"],\"owl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f989.png?v8\",\"🦉\"],\"ox\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f402.png?v8\",\"🐂\"],\"oyster\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9aa.png?v8\",\"🦪\"],\"package\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e6.png?v8\",\"📦\"],\"page_facing_up\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c4.png?v8\",\"📄\"],\"page_with_curl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4c3.png?v8\",\"📃\"],\"pager\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4df.png?v8\",\"📟\"],\"paintbrush\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f58c.png?v8\",\"🖌️\"],\"pakistan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1f0.png?v8\",\"🇵🇰\"],\"palau\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1fc.png?v8\",\"🇵🇼\"],\"palestinian_territories\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1f8.png?v8\",\"🇵🇸\"],\"palm_down_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faf3.png?v8\",\"🫳\"],\"palm_tree\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f334.png?v8\",\"🌴\"],\"palm_up_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faf4.png?v8\",\"🫴\"],\"palms_up_together\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f932.png?v8\",\"🤲\"],\"panama\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1e6.png?v8\",\"🇵🇦\"],\"pancakes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f95e.png?v8\",\"🥞\"],\"panda_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f43c.png?v8\",\"🐼\"],\"paperclip\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ce.png?v8\",\"📎\"],\"paperclips\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f587.png?v8\",\"🖇️\"],\"papua_new_guinea\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1ec.png?v8\",\"🇵🇬\"],\"parachute\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa82.png?v8\",\"🪂\"],\"paraguay\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1fe.png?v8\",\"🇵🇾\"],\"parasol_on_ground\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f1.png?v8\",\"⛱️\"],\"parking\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f17f.png?v8\",\"🅿️\"],\"parrot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f99c.png?v8\",\"🦜\"],\"part_alternation_mark\":[\"https://github.githubassets.com/images/icons/emoji/unicode/303d.png?v8\",\"〽️\"],\"partly_sunny\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26c5.png?v8\",\"⛅\"],\"partying_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f973.png?v8\",\"🥳\"],\"passenger_ship\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6f3.png?v8\",\"🛳️\"],\"passport_control\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6c2.png?v8\",\"🛂\"],\"pause_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23f8.png?v8\",\"⏸️\"],\"paw_prints\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f43e.png?v8\",\"🐾\"],\"pea_pod\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fadb.png?v8\",\"🫛\"],\"peace_symbol\":[\"https://github.githubassets.com/images/icons/emoji/unicode/262e.png?v8\",\"☮️\"],\"peach\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f351.png?v8\",\"🍑\"],\"peacock\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f99a.png?v8\",\"🦚\"],\"peanuts\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f95c.png?v8\",\"🥜\"],\"pear\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f350.png?v8\",\"🍐\"],\"pen\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f58a.png?v8\",\"🖊️\"],\"pencil\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4dd.png?v8\",\"📝\"],\"pencil2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/270f.png?v8\",\"✏️\"],\"penguin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f427.png?v8\",\"🐧\"],\"pensive\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f614.png?v8\",\"😔\"],\"people_holding_hands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f91d-1f9d1.png?v8\",\"🧑‍🤝‍🧑\"],\"people_hugging\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fac2.png?v8\",\"🫂\"],\"performing_arts\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ad.png?v8\",\"🎭\"],\"persevere\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f623.png?v8\",\"😣\"],\"person_bald\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9b2.png?v8\",\"🧑‍🦲\"],\"person_curly_hair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9b1.png?v8\",\"🧑‍🦱\"],\"person_feeding_baby\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f37c.png?v8\",\"🧑‍🍼\"],\"person_fencing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93a.png?v8\",\"🤺\"],\"person_in_manual_wheelchair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9bd.png?v8\",\"🧑‍🦽\"],\"person_in_motorized_wheelchair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9bc.png?v8\",\"🧑‍🦼\"],\"person_in_tuxedo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f935.png?v8\",\"🤵\"],\"person_red_hair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9b0.png?v8\",\"🧑‍🦰\"],\"person_white_hair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9b3.png?v8\",\"🧑‍🦳\"],\"person_with_crown\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fac5.png?v8\",\"🫅\"],\"person_with_probing_cane\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f9af.png?v8\",\"🧑‍🦯\"],\"person_with_turban\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f473.png?v8\",\"👳\"],\"person_with_veil\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f470.png?v8\",\"👰\"],\"peru\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1ea.png?v8\",\"🇵🇪\"],\"petri_dish\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9eb.png?v8\",\"🧫\"],\"philippines\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1ed.png?v8\",\"🇵🇭\"],\"phone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/260e.png?v8\",\"☎️\"],\"pick\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26cf.png?v8\",\"⛏️\"],\"pickup_truck\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6fb.png?v8\",\"🛻\"],\"pie\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f967.png?v8\",\"🥧\"],\"pig\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f437.png?v8\",\"🐷\"],\"pig2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f416.png?v8\",\"🐖\"],\"pig_nose\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f43d.png?v8\",\"🐽\"],\"pill\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f48a.png?v8\",\"💊\"],\"pilot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-2708.png?v8\",\"🧑‍✈️\"],\"pinata\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa85.png?v8\",\"🪅\"],\"pinched_fingers\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f90c.png?v8\",\"🤌\"],\"pinching_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f90f.png?v8\",\"🤏\"],\"pineapple\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f34d.png?v8\",\"🍍\"],\"ping_pong\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d3.png?v8\",\"🏓\"],\"pink_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa77.png?v8\",\"🩷\"],\"pirate_flag\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f4-2620.png?v8\",\"🏴‍☠️\"],\"pisces\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2653.png?v8\",\"♓\"],\"pitcairn_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1f3.png?v8\",\"🇵🇳\"],\"pizza\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f355.png?v8\",\"🍕\"],\"placard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa7.png?v8\",\"🪧\"],\"place_of_worship\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6d0.png?v8\",\"🛐\"],\"plate_with_cutlery\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f37d.png?v8\",\"🍽️\"],\"play_or_pause_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23ef.png?v8\",\"⏯️\"],\"playground_slide\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6dd.png?v8\",\"🛝\"],\"pleading_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f97a.png?v8\",\"🥺\"],\"plunger\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa0.png?v8\",\"🪠\"],\"point_down\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f447.png?v8\",\"👇\"],\"point_left\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f448.png?v8\",\"👈\"],\"point_right\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f449.png?v8\",\"👉\"],\"point_up\":[\"https://github.githubassets.com/images/icons/emoji/unicode/261d.png?v8\",\"☝️\"],\"point_up_2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f446.png?v8\",\"👆\"],\"poland\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1f1.png?v8\",\"🇵🇱\"],\"polar_bear\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f43b-2744.png?v8\",\"🐻‍❄️\"],\"police_car\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f693.png?v8\",\"🚓\"],\"police_officer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46e.png?v8\",\"👮\"],\"policeman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46e-2642.png?v8\",\"👮‍♂️\"],\"policewoman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46e-2640.png?v8\",\"👮‍♀️\"],\"poodle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f429.png?v8\",\"🐩\"],\"poop\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a9.png?v8\",\"💩\"],\"popcorn\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f37f.png?v8\",\"🍿\"],\"portugal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1f9.png?v8\",\"🇵🇹\"],\"post_office\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3e3.png?v8\",\"🏣\"],\"postal_horn\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ef.png?v8\",\"📯\"],\"postbox\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ee.png?v8\",\"📮\"],\"potable_water\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b0.png?v8\",\"🚰\"],\"potato\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f954.png?v8\",\"🥔\"],\"potted_plant\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab4.png?v8\",\"🪴\"],\"pouch\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f45d.png?v8\",\"👝\"],\"poultry_leg\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f357.png?v8\",\"🍗\"],\"pound\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b7.png?v8\",\"💷\"],\"pouring_liquid\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad7.png?v8\",\"🫗\"],\"pout\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f621.png?v8\",\"😡\"],\"pouting_cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f63e.png?v8\",\"😾\"],\"pouting_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64e.png?v8\",\"🙎\"],\"pouting_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64e-2642.png?v8\",\"🙎‍♂️\"],\"pouting_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64e-2640.png?v8\",\"🙎‍♀️\"],\"pray\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64f.png?v8\",\"🙏\"],\"prayer_beads\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ff.png?v8\",\"📿\"],\"pregnant_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fac3.png?v8\",\"🫃\"],\"pregnant_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fac4.png?v8\",\"🫄\"],\"pregnant_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f930.png?v8\",\"🤰\"],\"pretzel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f968.png?v8\",\"🥨\"],\"previous_track_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23ee.png?v8\",\"⏮️\"],\"prince\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f934.png?v8\",\"🤴\"],\"princess\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f478.png?v8\",\"👸\"],\"printer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5a8.png?v8\",\"🖨️\"],\"probing_cane\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9af.png?v8\",\"🦯\"],\"puerto_rico\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1f7.png?v8\",\"🇵🇷\"],\"punch\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44a.png?v8\",\"👊\"],\"purple_circle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e3.png?v8\",\"🟣\"],\"purple_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f49c.png?v8\",\"💜\"],\"purple_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7ea.png?v8\",\"🟪\"],\"purse\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f45b.png?v8\",\"👛\"],\"pushpin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4cc.png?v8\",\"📌\"],\"put_litter_in_its_place\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6ae.png?v8\",\"🚮\"],\"qatar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f6-1f1e6.png?v8\",\"🇶🇦\"],\"question\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2753.png?v8\",\"❓\"],\"rabbit\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f430.png?v8\",\"🐰\"],\"rabbit2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f407.png?v8\",\"🐇\"],\"raccoon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f99d.png?v8\",\"🦝\"],\"racehorse\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f40e.png?v8\",\"🐎\"],\"racing_car\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ce.png?v8\",\"🏎️\"],\"radio\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4fb.png?v8\",\"📻\"],\"radio_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f518.png?v8\",\"🔘\"],\"radioactive\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2622.png?v8\",\"☢️\"],\"rage\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f621.png?v8\",\"😡\"],\"rage1\":[\"https://github.githubassets.com/images/icons/emoji/rage1.png?v8\"],\"rage2\":[\"https://github.githubassets.com/images/icons/emoji/rage2.png?v8\"],\"rage3\":[\"https://github.githubassets.com/images/icons/emoji/rage3.png?v8\"],\"rage4\":[\"https://github.githubassets.com/images/icons/emoji/rage4.png?v8\"],\"railway_car\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f683.png?v8\",\"🚃\"],\"railway_track\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6e4.png?v8\",\"🛤️\"],\"rainbow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f308.png?v8\",\"🌈\"],\"rainbow_flag\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f3-1f308.png?v8\",\"🏳️‍🌈\"],\"raised_back_of_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f91a.png?v8\",\"🤚\"],\"raised_eyebrow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f928.png?v8\",\"🤨\"],\"raised_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/270b.png?v8\",\"✋\"],\"raised_hand_with_fingers_splayed\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f590.png?v8\",\"🖐️\"],\"raised_hands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64c.png?v8\",\"🙌\"],\"raising_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64b.png?v8\",\"🙋\"],\"raising_hand_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64b-2642.png?v8\",\"🙋‍♂️\"],\"raising_hand_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64b-2640.png?v8\",\"🙋‍♀️\"],\"ram\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f40f.png?v8\",\"🐏\"],\"ramen\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f35c.png?v8\",\"🍜\"],\"rat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f400.png?v8\",\"🐀\"],\"razor\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa92.png?v8\",\"🪒\"],\"receipt\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9fe.png?v8\",\"🧾\"],\"record_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23fa.png?v8\",\"⏺️\"],\"recycle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/267b.png?v8\",\"♻️\"],\"red_car\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f697.png?v8\",\"🚗\"],\"red_circle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f534.png?v8\",\"🔴\"],\"red_envelope\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e7.png?v8\",\"🧧\"],\"red_haired_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9b0.png?v8\",\"👨‍🦰\"],\"red_haired_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9b0.png?v8\",\"👩‍🦰\"],\"red_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e5.png?v8\",\"🟥\"],\"registered\":[\"https://github.githubassets.com/images/icons/emoji/unicode/00ae.png?v8\",\"®️\"],\"relaxed\":[\"https://github.githubassets.com/images/icons/emoji/unicode/263a.png?v8\",\"☺️\"],\"relieved\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f60c.png?v8\",\"😌\"],\"reminder_ribbon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f397.png?v8\",\"🎗️\"],\"repeat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f501.png?v8\",\"🔁\"],\"repeat_one\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f502.png?v8\",\"🔂\"],\"rescue_worker_helmet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26d1.png?v8\",\"⛑️\"],\"restroom\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6bb.png?v8\",\"🚻\"],\"reunion\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f7-1f1ea.png?v8\",\"🇷🇪\"],\"revolving_hearts\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f49e.png?v8\",\"💞\"],\"rewind\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23ea.png?v8\",\"⏪\"],\"rhinoceros\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f98f.png?v8\",\"🦏\"],\"ribbon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f380.png?v8\",\"🎀\"],\"rice\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f35a.png?v8\",\"🍚\"],\"rice_ball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f359.png?v8\",\"🍙\"],\"rice_cracker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f358.png?v8\",\"🍘\"],\"rice_scene\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f391.png?v8\",\"🎑\"],\"right_anger_bubble\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5ef.png?v8\",\"🗯️\"],\"rightwards_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faf1.png?v8\",\"🫱\"],\"rightwards_pushing_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faf8.png?v8\",\"🫸\"],\"ring\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f48d.png?v8\",\"💍\"],\"ring_buoy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6df.png?v8\",\"🛟\"],\"ringed_planet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa90.png?v8\",\"🪐\"],\"robot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f916.png?v8\",\"🤖\"],\"rock\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa8.png?v8\",\"🪨\"],\"rocket\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f680.png?v8\",\"🚀\"],\"rofl\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f923.png?v8\",\"🤣\"],\"roll_eyes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f644.png?v8\",\"🙄\"],\"roll_of_paper\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9fb.png?v8\",\"🧻\"],\"roller_coaster\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a2.png?v8\",\"🎢\"],\"roller_skate\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6fc.png?v8\",\"🛼\"],\"romania\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f7-1f1f4.png?v8\",\"🇷🇴\"],\"rooster\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f413.png?v8\",\"🐓\"],\"rose\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f339.png?v8\",\"🌹\"],\"rosette\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f5.png?v8\",\"🏵️\"],\"rotating_light\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a8.png?v8\",\"🚨\"],\"round_pushpin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4cd.png?v8\",\"📍\"],\"rowboat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a3.png?v8\",\"🚣\"],\"rowing_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a3-2642.png?v8\",\"🚣‍♂️\"],\"rowing_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a3-2640.png?v8\",\"🚣‍♀️\"],\"ru\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f7-1f1fa.png?v8\",\"🇷🇺\"],\"rugby_football\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c9.png?v8\",\"🏉\"],\"runner\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c3.png?v8\",\"🏃\"],\"running\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c3.png?v8\",\"🏃\"],\"running_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c3-2642.png?v8\",\"🏃‍♂️\"],\"running_shirt_with_sash\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3bd.png?v8\",\"🎽\"],\"running_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c3-2640.png?v8\",\"🏃‍♀️\"],\"rwanda\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f7-1f1fc.png?v8\",\"🇷🇼\"],\"sa\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f202.png?v8\",\"🈂️\"],\"safety_pin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f7.png?v8\",\"🧷\"],\"safety_vest\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ba.png?v8\",\"🦺\"],\"sagittarius\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2650.png?v8\",\"♐\"],\"sailboat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f5.png?v8\",\"⛵\"],\"sake\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f376.png?v8\",\"🍶\"],\"salt\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c2.png?v8\",\"🧂\"],\"saluting_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fae1.png?v8\",\"🫡\"],\"samoa\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fc-1f1f8.png?v8\",\"🇼🇸\"],\"san_marino\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f2.png?v8\",\"🇸🇲\"],\"sandal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f461.png?v8\",\"👡\"],\"sandwich\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f96a.png?v8\",\"🥪\"],\"santa\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f385.png?v8\",\"🎅\"],\"sao_tome_principe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f9.png?v8\",\"🇸🇹\"],\"sari\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f97b.png?v8\",\"🥻\"],\"sassy_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f481-2642.png?v8\",\"💁‍♂️\"],\"sassy_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f481-2640.png?v8\",\"💁‍♀️\"],\"satellite\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4e1.png?v8\",\"📡\"],\"satisfied\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f606.png?v8\",\"😆\"],\"saudi_arabia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1e6.png?v8\",\"🇸🇦\"],\"sauna_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d6-2642.png?v8\",\"🧖‍♂️\"],\"sauna_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d6.png?v8\",\"🧖\"],\"sauna_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d6-2640.png?v8\",\"🧖‍♀️\"],\"sauropod\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f995.png?v8\",\"🦕\"],\"saxophone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b7.png?v8\",\"🎷\"],\"scarf\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e3.png?v8\",\"🧣\"],\"school\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3eb.png?v8\",\"🏫\"],\"school_satchel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f392.png?v8\",\"🎒\"],\"scientist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f52c.png?v8\",\"🧑‍🔬\"],\"scissors\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2702.png?v8\",\"✂️\"],\"scorpion\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f982.png?v8\",\"🦂\"],\"scorpius\":[\"https://github.githubassets.com/images/icons/emoji/unicode/264f.png?v8\",\"♏\"],\"scotland\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f4-e0067-e0062-e0073-e0063-e0074-e007f.png?v8\",\"🏴󠁧󠁢󠁳󠁣󠁴󠁿\"],\"scream\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f631.png?v8\",\"😱\"],\"scream_cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f640.png?v8\",\"🙀\"],\"screwdriver\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa9b.png?v8\",\"🪛\"],\"scroll\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4dc.png?v8\",\"📜\"],\"seal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ad.png?v8\",\"🦭\"],\"seat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ba.png?v8\",\"💺\"],\"secret\":[\"https://github.githubassets.com/images/icons/emoji/unicode/3299.png?v8\",\"㊙️\"],\"see_no_evil\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f648.png?v8\",\"🙈\"],\"seedling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f331.png?v8\",\"🌱\"],\"selfie\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f933.png?v8\",\"🤳\"],\"senegal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f3.png?v8\",\"🇸🇳\"],\"serbia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f7-1f1f8.png?v8\",\"🇷🇸\"],\"service_dog\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f415-1f9ba.png?v8\",\"🐕‍🦺\"],\"seven\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0037-20e3.png?v8\",\"7️⃣\"],\"sewing_needle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa1.png?v8\",\"🪡\"],\"seychelles\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1e8.png?v8\",\"🇸🇨\"],\"shaking_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fae8.png?v8\",\"🫨\"],\"shallow_pan_of_food\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f958.png?v8\",\"🥘\"],\"shamrock\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2618.png?v8\",\"☘️\"],\"shark\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f988.png?v8\",\"🦈\"],\"shaved_ice\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f367.png?v8\",\"🍧\"],\"sheep\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f411.png?v8\",\"🐑\"],\"shell\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f41a.png?v8\",\"🐚\"],\"shield\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6e1.png?v8\",\"🛡️\"],\"shinto_shrine\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26e9.png?v8\",\"⛩️\"],\"ship\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a2.png?v8\",\"🚢\"],\"shipit\":[\"https://github.githubassets.com/images/icons/emoji/shipit.png?v8\"],\"shirt\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f455.png?v8\",\"👕\"],\"shit\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a9.png?v8\",\"💩\"],\"shoe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f45e.png?v8\",\"👞\"],\"shopping\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6cd.png?v8\",\"🛍️\"],\"shopping_cart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6d2.png?v8\",\"🛒\"],\"shorts\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa73.png?v8\",\"🩳\"],\"shower\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6bf.png?v8\",\"🚿\"],\"shrimp\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f990.png?v8\",\"🦐\"],\"shrug\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f937.png?v8\",\"🤷\"],\"shushing_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f92b.png?v8\",\"🤫\"],\"sierra_leone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f1.png?v8\",\"🇸🇱\"],\"signal_strength\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f6.png?v8\",\"📶\"],\"singapore\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1ec.png?v8\",\"🇸🇬\"],\"singer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f3a4.png?v8\",\"🧑‍🎤\"],\"sint_maarten\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1fd.png?v8\",\"🇸🇽\"],\"six\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0036-20e3.png?v8\",\"6️⃣\"],\"six_pointed_star\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f52f.png?v8\",\"🔯\"],\"skateboard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6f9.png?v8\",\"🛹\"],\"ski\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3bf.png?v8\",\"🎿\"],\"skier\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26f7.png?v8\",\"⛷️\"],\"skull\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f480.png?v8\",\"💀\"],\"skull_and_crossbones\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2620.png?v8\",\"☠️\"],\"skunk\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a8.png?v8\",\"🦨\"],\"sled\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6f7.png?v8\",\"🛷\"],\"sleeping\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f634.png?v8\",\"😴\"],\"sleeping_bed\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6cc.png?v8\",\"🛌\"],\"sleepy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f62a.png?v8\",\"😪\"],\"slightly_frowning_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f641.png?v8\",\"🙁\"],\"slightly_smiling_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f642.png?v8\",\"🙂\"],\"slot_machine\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3b0.png?v8\",\"🎰\"],\"sloth\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a5.png?v8\",\"🦥\"],\"slovakia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f0.png?v8\",\"🇸🇰\"],\"slovenia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1ee.png?v8\",\"🇸🇮\"],\"small_airplane\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6e9.png?v8\",\"🛩️\"],\"small_blue_diamond\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f539.png?v8\",\"🔹\"],\"small_orange_diamond\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f538.png?v8\",\"🔸\"],\"small_red_triangle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f53a.png?v8\",\"🔺\"],\"small_red_triangle_down\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f53b.png?v8\",\"🔻\"],\"smile\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f604.png?v8\",\"😄\"],\"smile_cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f638.png?v8\",\"😸\"],\"smiley\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f603.png?v8\",\"😃\"],\"smiley_cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f63a.png?v8\",\"😺\"],\"smiling_face_with_tear\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f972.png?v8\",\"🥲\"],\"smiling_face_with_three_hearts\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f970.png?v8\",\"🥰\"],\"smiling_imp\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f608.png?v8\",\"😈\"],\"smirk\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f60f.png?v8\",\"😏\"],\"smirk_cat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f63c.png?v8\",\"😼\"],\"smoking\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6ac.png?v8\",\"🚬\"],\"snail\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f40c.png?v8\",\"🐌\"],\"snake\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f40d.png?v8\",\"🐍\"],\"sneezing_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f927.png?v8\",\"🤧\"],\"snowboarder\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c2.png?v8\",\"🏂\"],\"snowflake\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2744.png?v8\",\"❄️\"],\"snowman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26c4.png?v8\",\"⛄\"],\"snowman_with_snow\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2603.png?v8\",\"☃️\"],\"soap\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9fc.png?v8\",\"🧼\"],\"sob\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f62d.png?v8\",\"😭\"],\"soccer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26bd.png?v8\",\"⚽\"],\"socks\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9e6.png?v8\",\"🧦\"],\"softball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f94e.png?v8\",\"🥎\"],\"solomon_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1e7.png?v8\",\"🇸🇧\"],\"somalia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f4.png?v8\",\"🇸🇴\"],\"soon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f51c.png?v8\",\"🔜\"],\"sos\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f198.png?v8\",\"🆘\"],\"sound\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f509.png?v8\",\"🔉\"],\"south_africa\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ff-1f1e6.png?v8\",\"🇿🇦\"],\"south_georgia_south_sandwich_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1f8.png?v8\",\"🇬🇸\"],\"south_sudan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f8.png?v8\",\"🇸🇸\"],\"space_invader\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f47e.png?v8\",\"👾\"],\"spades\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2660.png?v8\",\"♠️\"],\"spaghetti\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f35d.png?v8\",\"🍝\"],\"sparkle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2747.png?v8\",\"❇️\"],\"sparkler\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f387.png?v8\",\"🎇\"],\"sparkles\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2728.png?v8\",\"✨\"],\"sparkling_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f496.png?v8\",\"💖\"],\"speak_no_evil\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f64a.png?v8\",\"🙊\"],\"speaker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f508.png?v8\",\"🔈\"],\"speaking_head\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5e3.png?v8\",\"🗣️\"],\"speech_balloon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ac.png?v8\",\"💬\"],\"speedboat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a4.png?v8\",\"🚤\"],\"spider\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f577.png?v8\",\"🕷️\"],\"spider_web\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f578.png?v8\",\"🕸️\"],\"spiral_calendar\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5d3.png?v8\",\"🗓️\"],\"spiral_notepad\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5d2.png?v8\",\"🗒️\"],\"sponge\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9fd.png?v8\",\"🧽\"],\"spoon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f944.png?v8\",\"🥄\"],\"squid\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f991.png?v8\",\"🦑\"],\"sri_lanka\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1f0.png?v8\",\"🇱🇰\"],\"st_barthelemy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e7-1f1f1.png?v8\",\"🇧🇱\"],\"st_helena\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1ed.png?v8\",\"🇸🇭\"],\"st_kitts_nevis\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f0-1f1f3.png?v8\",\"🇰🇳\"],\"st_lucia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f1-1f1e8.png?v8\",\"🇱🇨\"],\"st_martin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f2-1f1eb.png?v8\",\"🇲🇫\"],\"st_pierre_miquelon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f5-1f1f2.png?v8\",\"🇵🇲\"],\"st_vincent_grenadines\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fb-1f1e8.png?v8\",\"🇻🇨\"],\"stadium\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3df.png?v8\",\"🏟️\"],\"standing_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9cd-2642.png?v8\",\"🧍‍♂️\"],\"standing_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9cd.png?v8\",\"🧍\"],\"standing_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9cd-2640.png?v8\",\"🧍‍♀️\"],\"star\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2b50.png?v8\",\"⭐\"],\"star2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f31f.png?v8\",\"🌟\"],\"star_and_crescent\":[\"https://github.githubassets.com/images/icons/emoji/unicode/262a.png?v8\",\"☪️\"],\"star_of_david\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2721.png?v8\",\"✡️\"],\"star_struck\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f929.png?v8\",\"🤩\"],\"stars\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f320.png?v8\",\"🌠\"],\"station\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f689.png?v8\",\"🚉\"],\"statue_of_liberty\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5fd.png?v8\",\"🗽\"],\"steam_locomotive\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f682.png?v8\",\"🚂\"],\"stethoscope\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa7a.png?v8\",\"🩺\"],\"stew\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f372.png?v8\",\"🍲\"],\"stop_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23f9.png?v8\",\"⏹️\"],\"stop_sign\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6d1.png?v8\",\"🛑\"],\"stopwatch\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23f1.png?v8\",\"⏱️\"],\"straight_ruler\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4cf.png?v8\",\"📏\"],\"strawberry\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f353.png?v8\",\"🍓\"],\"stuck_out_tongue\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f61b.png?v8\",\"😛\"],\"stuck_out_tongue_closed_eyes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f61d.png?v8\",\"😝\"],\"stuck_out_tongue_winking_eye\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f61c.png?v8\",\"😜\"],\"student\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f393.png?v8\",\"🧑‍🎓\"],\"studio_microphone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f399.png?v8\",\"🎙️\"],\"stuffed_flatbread\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f959.png?v8\",\"🥙\"],\"sudan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1e9.png?v8\",\"🇸🇩\"],\"sun_behind_large_cloud\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f325.png?v8\",\"🌥️\"],\"sun_behind_rain_cloud\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f326.png?v8\",\"🌦️\"],\"sun_behind_small_cloud\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f324.png?v8\",\"🌤️\"],\"sun_with_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f31e.png?v8\",\"🌞\"],\"sunflower\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f33b.png?v8\",\"🌻\"],\"sunglasses\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f60e.png?v8\",\"😎\"],\"sunny\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2600.png?v8\",\"☀️\"],\"sunrise\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f305.png?v8\",\"🌅\"],\"sunrise_over_mountains\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f304.png?v8\",\"🌄\"],\"superhero\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b8.png?v8\",\"🦸\"],\"superhero_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b8-2642.png?v8\",\"🦸‍♂️\"],\"superhero_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b8-2640.png?v8\",\"🦸‍♀️\"],\"supervillain\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b9.png?v8\",\"🦹\"],\"supervillain_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b9-2642.png?v8\",\"🦹‍♂️\"],\"supervillain_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b9-2640.png?v8\",\"🦹‍♀️\"],\"surfer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c4.png?v8\",\"🏄\"],\"surfing_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c4-2642.png?v8\",\"🏄‍♂️\"],\"surfing_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c4-2640.png?v8\",\"🏄‍♀️\"],\"suriname\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1f7.png?v8\",\"🇸🇷\"],\"sushi\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f363.png?v8\",\"🍣\"],\"suspect\":[\"https://github.githubassets.com/images/icons/emoji/suspect.png?v8\"],\"suspension_railway\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f69f.png?v8\",\"🚟\"],\"svalbard_jan_mayen\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1ef.png?v8\",\"🇸🇯\"],\"swan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9a2.png?v8\",\"🦢\"],\"swaziland\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1ff.png?v8\",\"🇸🇿\"],\"sweat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f613.png?v8\",\"😓\"],\"sweat_drops\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a6.png?v8\",\"💦\"],\"sweat_smile\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f605.png?v8\",\"😅\"],\"sweden\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1ea.png?v8\",\"🇸🇪\"],\"sweet_potato\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f360.png?v8\",\"🍠\"],\"swim_brief\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa72.png?v8\",\"🩲\"],\"swimmer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ca.png?v8\",\"🏊\"],\"swimming_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ca-2642.png?v8\",\"🏊‍♂️\"],\"swimming_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ca-2640.png?v8\",\"🏊‍♀️\"],\"switzerland\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e8-1f1ed.png?v8\",\"🇨🇭\"],\"symbols\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f523.png?v8\",\"🔣\"],\"synagogue\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f54d.png?v8\",\"🕍\"],\"syria\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f8-1f1fe.png?v8\",\"🇸🇾\"],\"syringe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f489.png?v8\",\"💉\"],\"t-rex\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f996.png?v8\",\"🦖\"],\"taco\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f32e.png?v8\",\"🌮\"],\"tada\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f389.png?v8\",\"🎉\"],\"taiwan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1fc.png?v8\",\"🇹🇼\"],\"tajikistan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1ef.png?v8\",\"🇹🇯\"],\"takeout_box\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f961.png?v8\",\"🥡\"],\"tamale\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad4.png?v8\",\"🫔\"],\"tanabata_tree\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f38b.png?v8\",\"🎋\"],\"tangerine\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f34a.png?v8\",\"🍊\"],\"tanzania\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1ff.png?v8\",\"🇹🇿\"],\"taurus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2649.png?v8\",\"♉\"],\"taxi\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f695.png?v8\",\"🚕\"],\"tea\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f375.png?v8\",\"🍵\"],\"teacher\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f3eb.png?v8\",\"🧑‍🏫\"],\"teapot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fad6.png?v8\",\"🫖\"],\"technologist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d1-1f4bb.png?v8\",\"🧑‍💻\"],\"teddy_bear\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f8.png?v8\",\"🧸\"],\"telephone\":[\"https://github.githubassets.com/images/icons/emoji/unicode/260e.png?v8\",\"☎️\"],\"telephone_receiver\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4de.png?v8\",\"📞\"],\"telescope\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f52d.png?v8\",\"🔭\"],\"tennis\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3be.png?v8\",\"🎾\"],\"tent\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26fa.png?v8\",\"⛺\"],\"test_tube\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9ea.png?v8\",\"🧪\"],\"thailand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1ed.png?v8\",\"🇹🇭\"],\"thermometer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f321.png?v8\",\"🌡️\"],\"thinking\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f914.png?v8\",\"🤔\"],\"thong_sandal\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa74.png?v8\",\"🩴\"],\"thought_balloon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ad.png?v8\",\"💭\"],\"thread\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f5.png?v8\",\"🧵\"],\"three\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0033-20e3.png?v8\",\"3️⃣\"],\"thumbsdown\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44e.png?v8\",\"👎\"],\"thumbsup\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44d.png?v8\",\"👍\"],\"ticket\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ab.png?v8\",\"🎫\"],\"tickets\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f39f.png?v8\",\"🎟️\"],\"tiger\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f42f.png?v8\",\"🐯\"],\"tiger2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f405.png?v8\",\"🐅\"],\"timer_clock\":[\"https://github.githubassets.com/images/icons/emoji/unicode/23f2.png?v8\",\"⏲️\"],\"timor_leste\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1f1.png?v8\",\"🇹🇱\"],\"tipping_hand_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f481-2642.png?v8\",\"💁‍♂️\"],\"tipping_hand_person\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f481.png?v8\",\"💁\"],\"tipping_hand_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f481-2640.png?v8\",\"💁‍♀️\"],\"tired_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f62b.png?v8\",\"😫\"],\"tm\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2122.png?v8\",\"™️\"],\"togo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1ec.png?v8\",\"🇹🇬\"],\"toilet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6bd.png?v8\",\"🚽\"],\"tokelau\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1f0.png?v8\",\"🇹🇰\"],\"tokyo_tower\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5fc.png?v8\",\"🗼\"],\"tomato\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f345.png?v8\",\"🍅\"],\"tonga\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1f4.png?v8\",\"🇹🇴\"],\"tongue\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f445.png?v8\",\"👅\"],\"toolbox\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f0.png?v8\",\"🧰\"],\"tooth\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9b7.png?v8\",\"🦷\"],\"toothbrush\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1faa5.png?v8\",\"🪥\"],\"top\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f51d.png?v8\",\"🔝\"],\"tophat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3a9.png?v8\",\"🎩\"],\"tornado\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f32a.png?v8\",\"🌪️\"],\"tr\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1f7.png?v8\",\"🇹🇷\"],\"trackball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5b2.png?v8\",\"🖲️\"],\"tractor\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f69c.png?v8\",\"🚜\"],\"traffic_light\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a5.png?v8\",\"🚥\"],\"train\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f68b.png?v8\",\"🚋\"],\"train2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f686.png?v8\",\"🚆\"],\"tram\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f68a.png?v8\",\"🚊\"],\"transgender_flag\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f3-26a7.png?v8\",\"🏳️‍⚧️\"],\"transgender_symbol\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26a7.png?v8\",\"⚧️\"],\"triangular_flag_on_post\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a9.png?v8\",\"🚩\"],\"triangular_ruler\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4d0.png?v8\",\"📐\"],\"trident\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f531.png?v8\",\"🔱\"],\"trinidad_tobago\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1f9.png?v8\",\"🇹🇹\"],\"tristan_da_cunha\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1e6.png?v8\",\"🇹🇦\"],\"triumph\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f624.png?v8\",\"😤\"],\"troll\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9cc.png?v8\",\"🧌\"],\"trolleybus\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f68e.png?v8\",\"🚎\"],\"trollface\":[\"https://github.githubassets.com/images/icons/emoji/trollface.png?v8\"],\"trophy\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3c6.png?v8\",\"🏆\"],\"tropical_drink\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f379.png?v8\",\"🍹\"],\"tropical_fish\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f420.png?v8\",\"🐠\"],\"truck\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f69a.png?v8\",\"🚚\"],\"trumpet\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ba.png?v8\",\"🎺\"],\"tshirt\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f455.png?v8\",\"👕\"],\"tulip\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f337.png?v8\",\"🌷\"],\"tumbler_glass\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f943.png?v8\",\"🥃\"],\"tunisia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1f3.png?v8\",\"🇹🇳\"],\"turkey\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f983.png?v8\",\"🦃\"],\"turkmenistan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1f2.png?v8\",\"🇹🇲\"],\"turks_caicos_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1e8.png?v8\",\"🇹🇨\"],\"turtle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f422.png?v8\",\"🐢\"],\"tuvalu\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1f9-1f1fb.png?v8\",\"🇹🇻\"],\"tv\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4fa.png?v8\",\"📺\"],\"twisted_rightwards_arrows\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f500.png?v8\",\"🔀\"],\"two\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0032-20e3.png?v8\",\"2️⃣\"],\"two_hearts\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f495.png?v8\",\"💕\"],\"two_men_holding_hands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46c.png?v8\",\"👬\"],\"two_women_holding_hands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f46d.png?v8\",\"👭\"],\"u5272\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f239.png?v8\",\"🈹\"],\"u5408\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f234.png?v8\",\"🈴\"],\"u55b6\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f23a.png?v8\",\"🈺\"],\"u6307\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f22f.png?v8\",\"🈯\"],\"u6708\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f237.png?v8\",\"🈷️\"],\"u6709\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f236.png?v8\",\"🈶\"],\"u6e80\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f235.png?v8\",\"🈵\"],\"u7121\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f21a.png?v8\",\"🈚\"],\"u7533\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f238.png?v8\",\"🈸\"],\"u7981\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f232.png?v8\",\"🈲\"],\"u7a7a\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f233.png?v8\",\"🈳\"],\"uganda\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fa-1f1ec.png?v8\",\"🇺🇬\"],\"uk\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ec-1f1e7.png?v8\",\"🇬🇧\"],\"ukraine\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fa-1f1e6.png?v8\",\"🇺🇦\"],\"umbrella\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2614.png?v8\",\"☔\"],\"unamused\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f612.png?v8\",\"😒\"],\"underage\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f51e.png?v8\",\"🔞\"],\"unicorn\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f984.png?v8\",\"🦄\"],\"united_arab_emirates\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1e6-1f1ea.png?v8\",\"🇦🇪\"],\"united_nations\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fa-1f1f3.png?v8\",\"🇺🇳\"],\"unlock\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f513.png?v8\",\"🔓\"],\"up\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f199.png?v8\",\"🆙\"],\"upside_down_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f643.png?v8\",\"🙃\"],\"uruguay\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fa-1f1fe.png?v8\",\"🇺🇾\"],\"us\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fa-1f1f8.png?v8\",\"🇺🇸\"],\"us_outlying_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fa-1f1f2.png?v8\",\"🇺🇲\"],\"us_virgin_islands\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fb-1f1ee.png?v8\",\"🇻🇮\"],\"uzbekistan\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fa-1f1ff.png?v8\",\"🇺🇿\"],\"v\":[\"https://github.githubassets.com/images/icons/emoji/unicode/270c.png?v8\",\"✌️\"],\"vampire\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9db.png?v8\",\"🧛\"],\"vampire_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9db-2642.png?v8\",\"🧛‍♂️\"],\"vampire_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9db-2640.png?v8\",\"🧛‍♀️\"],\"vanuatu\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fb-1f1fa.png?v8\",\"🇻🇺\"],\"vatican_city\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fb-1f1e6.png?v8\",\"🇻🇦\"],\"venezuela\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fb-1f1ea.png?v8\",\"🇻🇪\"],\"vertical_traffic_light\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6a6.png?v8\",\"🚦\"],\"vhs\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4fc.png?v8\",\"📼\"],\"vibration_mode\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f3.png?v8\",\"📳\"],\"video_camera\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4f9.png?v8\",\"📹\"],\"video_game\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3ae.png?v8\",\"🎮\"],\"vietnam\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fb-1f1f3.png?v8\",\"🇻🇳\"],\"violin\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3bb.png?v8\",\"🎻\"],\"virgo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/264d.png?v8\",\"♍\"],\"volcano\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f30b.png?v8\",\"🌋\"],\"volleyball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3d0.png?v8\",\"🏐\"],\"vomiting_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f92e.png?v8\",\"🤮\"],\"vs\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f19a.png?v8\",\"🆚\"],\"vulcan_salute\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f596.png?v8\",\"🖖\"],\"waffle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9c7.png?v8\",\"🧇\"],\"wales\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f4-e0067-e0062-e0077-e006c-e0073-e007f.png?v8\",\"🏴󠁧󠁢󠁷󠁬󠁳󠁿\"],\"walking\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b6.png?v8\",\"🚶\"],\"walking_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b6-2642.png?v8\",\"🚶‍♂️\"],\"walking_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6b6-2640.png?v8\",\"🚶‍♀️\"],\"wallis_futuna\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fc-1f1eb.png?v8\",\"🇼🇫\"],\"waning_crescent_moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f318.png?v8\",\"🌘\"],\"waning_gibbous_moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f316.png?v8\",\"🌖\"],\"warning\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26a0.png?v8\",\"⚠️\"],\"wastebasket\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5d1.png?v8\",\"🗑️\"],\"watch\":[\"https://github.githubassets.com/images/icons/emoji/unicode/231a.png?v8\",\"⌚\"],\"water_buffalo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f403.png?v8\",\"🐃\"],\"water_polo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93d.png?v8\",\"🤽\"],\"watermelon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f349.png?v8\",\"🍉\"],\"wave\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f44b.png?v8\",\"👋\"],\"wavy_dash\":[\"https://github.githubassets.com/images/icons/emoji/unicode/3030.png?v8\",\"〰️\"],\"waxing_crescent_moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f312.png?v8\",\"🌒\"],\"waxing_gibbous_moon\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f314.png?v8\",\"🌔\"],\"wc\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6be.png?v8\",\"🚾\"],\"weary\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f629.png?v8\",\"😩\"],\"wedding\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f492.png?v8\",\"💒\"],\"weight_lifting\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3cb.png?v8\",\"🏋️\"],\"weight_lifting_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3cb-2642.png?v8\",\"🏋️‍♂️\"],\"weight_lifting_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3cb-2640.png?v8\",\"🏋️‍♀️\"],\"western_sahara\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ea-1f1ed.png?v8\",\"🇪🇭\"],\"whale\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f433.png?v8\",\"🐳\"],\"whale2\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f40b.png?v8\",\"🐋\"],\"wheel\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6de.png?v8\",\"🛞\"],\"wheel_of_dharma\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2638.png?v8\",\"☸️\"],\"wheelchair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/267f.png?v8\",\"♿\"],\"white_check_mark\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2705.png?v8\",\"✅\"],\"white_circle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26aa.png?v8\",\"⚪\"],\"white_flag\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f3f3.png?v8\",\"🏳️\"],\"white_flower\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4ae.png?v8\",\"💮\"],\"white_haired_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f468-1f9b3.png?v8\",\"👨‍🦳\"],\"white_haired_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9b3.png?v8\",\"👩‍🦳\"],\"white_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f90d.png?v8\",\"🤍\"],\"white_large_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/2b1c.png?v8\",\"⬜\"],\"white_medium_small_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/25fd.png?v8\",\"◽\"],\"white_medium_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/25fb.png?v8\",\"◻️\"],\"white_small_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/25ab.png?v8\",\"▫️\"],\"white_square_button\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f533.png?v8\",\"🔳\"],\"wilted_flower\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f940.png?v8\",\"🥀\"],\"wind_chime\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f390.png?v8\",\"🎐\"],\"wind_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f32c.png?v8\",\"🌬️\"],\"window\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa9f.png?v8\",\"🪟\"],\"wine_glass\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f377.png?v8\",\"🍷\"],\"wing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fabd.png?v8\",\"🪽\"],\"wink\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f609.png?v8\",\"😉\"],\"wireless\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6dc.png?v8\",\"🛜\"],\"wolf\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f43a.png?v8\",\"🐺\"],\"woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469.png?v8\",\"👩\"],\"woman_artist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f3a8.png?v8\",\"👩‍🎨\"],\"woman_astronaut\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f680.png?v8\",\"👩‍🚀\"],\"woman_beard\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d4-2640.png?v8\",\"🧔‍♀️\"],\"woman_cartwheeling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f938-2640.png?v8\",\"🤸‍♀️\"],\"woman_cook\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f373.png?v8\",\"👩‍🍳\"],\"woman_dancing\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f483.png?v8\",\"💃\"],\"woman_facepalming\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f926-2640.png?v8\",\"🤦‍♀️\"],\"woman_factory_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f3ed.png?v8\",\"👩‍🏭\"],\"woman_farmer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f33e.png?v8\",\"👩‍🌾\"],\"woman_feeding_baby\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f37c.png?v8\",\"👩‍🍼\"],\"woman_firefighter\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f692.png?v8\",\"👩‍🚒\"],\"woman_health_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-2695.png?v8\",\"👩‍⚕️\"],\"woman_in_manual_wheelchair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9bd.png?v8\",\"👩‍🦽\"],\"woman_in_motorized_wheelchair\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9bc.png?v8\",\"👩‍🦼\"],\"woman_in_tuxedo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f935-2640.png?v8\",\"🤵‍♀️\"],\"woman_judge\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-2696.png?v8\",\"👩‍⚖️\"],\"woman_juggling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f939-2640.png?v8\",\"🤹‍♀️\"],\"woman_mechanic\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f527.png?v8\",\"👩‍🔧\"],\"woman_office_worker\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f4bc.png?v8\",\"👩‍💼\"],\"woman_pilot\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-2708.png?v8\",\"👩‍✈️\"],\"woman_playing_handball\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93e-2640.png?v8\",\"🤾‍♀️\"],\"woman_playing_water_polo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93d-2640.png?v8\",\"🤽‍♀️\"],\"woman_scientist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f52c.png?v8\",\"👩‍🔬\"],\"woman_shrugging\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f937-2640.png?v8\",\"🤷‍♀️\"],\"woman_singer\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f3a4.png?v8\",\"👩‍🎤\"],\"woman_student\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f393.png?v8\",\"👩‍🎓\"],\"woman_teacher\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f3eb.png?v8\",\"👩‍🏫\"],\"woman_technologist\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f4bb.png?v8\",\"👩‍💻\"],\"woman_with_headscarf\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9d5.png?v8\",\"🧕\"],\"woman_with_probing_cane\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f469-1f9af.png?v8\",\"👩‍🦯\"],\"woman_with_turban\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f473-2640.png?v8\",\"👳‍♀️\"],\"woman_with_veil\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f470-2640.png?v8\",\"👰‍♀️\"],\"womans_clothes\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f45a.png?v8\",\"👚\"],\"womans_hat\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f452.png?v8\",\"👒\"],\"women_wrestling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93c-2640.png?v8\",\"🤼‍♀️\"],\"womens\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f6ba.png?v8\",\"🚺\"],\"wood\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab5.png?v8\",\"🪵\"],\"woozy_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f974.png?v8\",\"🥴\"],\"world_map\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f5fa.png?v8\",\"🗺️\"],\"worm\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fab1.png?v8\",\"🪱\"],\"worried\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f61f.png?v8\",\"😟\"],\"wrench\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f527.png?v8\",\"🔧\"],\"wrestling\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f93c.png?v8\",\"🤼\"],\"writing_hand\":[\"https://github.githubassets.com/images/icons/emoji/unicode/270d.png?v8\",\"✍️\"],\"x\":[\"https://github.githubassets.com/images/icons/emoji/unicode/274c.png?v8\",\"❌\"],\"x_ray\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa7b.png?v8\",\"🩻\"],\"yarn\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9f6.png?v8\",\"🧶\"],\"yawning_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f971.png?v8\",\"🥱\"],\"yellow_circle\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e1.png?v8\",\"🟡\"],\"yellow_heart\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f49b.png?v8\",\"💛\"],\"yellow_square\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f7e8.png?v8\",\"🟨\"],\"yemen\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1fe-1f1ea.png?v8\",\"🇾🇪\"],\"yen\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4b4.png?v8\",\"💴\"],\"yin_yang\":[\"https://github.githubassets.com/images/icons/emoji/unicode/262f.png?v8\",\"☯️\"],\"yo_yo\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1fa80.png?v8\",\"🪀\"],\"yum\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f60b.png?v8\",\"😋\"],\"zambia\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ff-1f1f2.png?v8\",\"🇿🇲\"],\"zany_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f92a.png?v8\",\"🤪\"],\"zap\":[\"https://github.githubassets.com/images/icons/emoji/unicode/26a1.png?v8\",\"⚡\"],\"zebra\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f993.png?v8\",\"🦓\"],\"zero\":[\"https://github.githubassets.com/images/icons/emoji/unicode/0030-20e3.png?v8\",\"0️⃣\"],\"zimbabwe\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f1ff-1f1fc.png?v8\",\"🇿🇼\"],\"zipper_mouth_face\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f910.png?v8\",\"🤐\"],\"zombie\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9df.png?v8\",\"🧟\"],\"zombie_man\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9df-2642.png?v8\",\"🧟‍♂️\"],\"zombie_woman\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f9df-2640.png?v8\",\"🧟‍♀️\"],\"zzz\":[\"https://github.githubassets.com/images/icons/emoji/unicode/1f4a4.png?v8\",\"💤\"]}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.542 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.636Z", + "time": 0.266, + "request": { + "method": "GET", + "url": "https://github.com/settings/appearance/viewer-settings", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/settings/appearance/viewer-settings" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "github-is-react", + "value": "true" + }, + { + "name": "github-verified-fetch", + "value": "true" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "W/\"d8dda6bbfc6ff77052816e71979860b3\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:184582:18A704:68BB56C5" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "{\"emojiTone\":0,\"pasteUrlsAsPlainText\":false,\"useMonospaceFont\":false}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.266 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.636Z", + "time": 0.211, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/2924992?s=64&u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/2924992?s=64&u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "s", + "value": "64" + }, + { + "name": "u", + "value": "b69110f1956d894eaa7b17c54793e11bd33da424" + }, + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "1712" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "\"d7c1aaa79cfa562b6a5dc11c0255ae1d4c9da148ae8742c7607edee9a1ddef04\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:49 GMT" + }, + { + "name": "last-modified", + "value": "Thu, 14 Mar 2019 02:56:52 GMT" + }, + { + "name": "source-age", + "value": "186393" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "b9cb1a2c8174ed0f504e506441b9e6179f110e0d" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "D9E5:8698F:FF082:136987:68B87EAC" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc1000146-SJC" + }, + { + "name": "x-timer", + "value": "S1757107910.664195,VS0,VE2" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "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", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.211 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.636Z", + "time": 0.106, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/230625434?s=64&u=a2cfe58096a1b294f42e37fe81ce1058083a5880&v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/230625434?s=64&u=a2cfe58096a1b294f42e37fe81ce1058083a5880&v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "s", + "value": "64" + }, + { + "name": "u", + "value": "a2cfe58096a1b294f42e37fe81ce1058083a5880" + }, + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "1529" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "\"65aed4cca5e4db0febfd2638af8d3cbc0a260bae60cea37beacd700009915940\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:49 GMT" + }, + { + "name": "last-modified", + "value": "Fri, 05 Sep 2025 19:37:15 GMT" + }, + { + "name": "source-age", + "value": "6754" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "dc340dbbfca0e731f2bf904b5a402e8e967b848e" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "6D91:111CBD:57C5:700E:68BB3C60" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc1000146-SJC" + }, + { + "name": "x-timer", + "value": "S1757107910.664680,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "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", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.106 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.651Z", + "time": 0.352, + "request": { + "method": "GET", + "url": "https://github.com/notifications/indicator", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/notifications/indicator" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-length", + "value": "15" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "W/\"7f517f97e00a688b0b402e4005866127\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:184594:18A714:68BB56C5" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "{\"mode\":\"none\"}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.352 + } + }, + { + "startedDateTime": "2025-09-05T21:31:49.657Z", + "time": 0.931, + "request": { + "method": "GET", + "url": "https://github.com/github-copilot/chat?skip_anchor=true", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/github-copilot/chat?skip_anchor=true" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "text/html" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/issues/523" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-fetch-nonce-to-validate", + "value": "v2:28e5d7e3-40b7-f7e1-9def-680855e787f3" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [ + { + "name": "skip_anchor", + "value": "true" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:49 GMT" + }, + { + "name": "etag", + "value": "W/\"45f85d28eceb6149c047b339405abae9\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDB1:2FFDF:18459C:18A71E:68BB56C5" + }, + { + "name": "x-html-safe", + "value": "920a6e279144f7aca527594979b6c25b398b9657e23c355269bebfc1f87cce0f" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "text/html; charset=utf-8", + "text": "\n\n\n\n\n \n \n
        \n\n\n\n" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.931 + } + } + ] + } +} \ No newline at end of file diff --git a/browser-extension/tests/har/gh_pr.har b/browser-extension/tests/har/gh_pr.har new file mode 100644 index 0000000..eab0b53 --- /dev/null +++ b/browser-extension/tests/har/gh_pr.har @@ -0,0 +1,3328 @@ +{ + "log": { + "version": "1.2", + "creator": { + "name": "Playwright", + "version": "1.55.0" + }, + "browser": { + "name": "chromium", + "version": "140.0.7339.16" + }, + "entries": [ + { + "startedDateTime": "2025-09-05T21:31:50.567Z", + "time": 67.131, + "request": { + "method": "GET", + "url": "https://github.com/diffplug/selfie/pull/517", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/diffplug/selfie/pull/517" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=0, i" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "document" + }, + { + "name": "sec-fetch-mode", + "value": "navigate" + }, + { + "name": "sec-fetch-site", + "value": "none" + }, + { + "name": "sec-fetch-user", + "value": "?1" + }, + { + "name": "upgrade-insecure-requests", + "value": "1" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "no-cache" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "referrer-policy", + "value": "no-referrer-when-downgrade" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "server-timing", + "value": "pull_request_layout-fragment;desc=\"pull_request_layout fragment\";dur=654.050597,conversation_content-fragment;desc=\"conversation_content fragment\";dur=492.669794,conversation_sidebar-fragment;desc=\"conversation_sidebar fragment\";dur=699.983376,nginx;desc=\"NGINX\";dur=0.606911,glb;desc=\"GLB\";dur=32.494012" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:177A17:17D64C:68BB56C6" + }, + { + "name": "x-iris-sidecar-esi-nonce", + "value": "168be15eae1b225351d605fb51e83e9fd23caa260e181900099d9896db5f3dc6" + }, + { + "name": "x-voltron-version", + "value": "266d7a9" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "text/html; charset=utf-8", + "text": "\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n \n \n \n \n \n \n \n \n\n \n\n \n\n \n\n \n \n \n \n \n\n\n \n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n\n Add "VCR" functionality by nedtwigg · Pull Request #517 · diffplug/selfie\n\n\n\n \n \n \n \n\n \n \n\n\n \n\n\n \n\n\n \n \n\n \n \n\n \n\n\n\n \n\n \n\n\n\n\n \n\n \n\n \n\n \n\n \n\n \n\n \n \n \n\n \n \n \n\n\n \n \n\n\n \n\n\n \n \n \n\n \n\n\n \n \n \n \n\n \n\n \n \n\n \n\n\n\n \n\n \n\n\n \n\n \n\n \n \n\n \n \n \n\n\n\n\n\n \n\n \n\n \n
        \n
        \n \n\n\n\n
        \n Skip to content\n\n \n \n \n \n \n\n\n \n \n
        \n\n\n\n\n\n\n \n\n \n\n
        \n

        Navigation Menu

        \n\n\n \n\n
        \n
        \n
        \n \n \n \n \n\n\n \n
        \n
        \n
        \n

        \n Global navigation\n

        \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n
        \n \n
        \n \n\n
        \n \n \n \n \n Loading\n\n
        \n
        \n
        \n\n\n

        © 2025 GitHub, Inc.

        \n\n
        \n
        \n
        \n \n
        \n\n\n \n
        \n
        \n\n \n\n \n
        \n \n
        \n\n\n
        \n
        \n
        \n \n\n\n\n \n \n \n\n\n
        \n
        \n
        \n \n \n \n\n \n\n \n
        \n \n Type / to search\n \n
        \n \n\n
        \n\n\n
        \n
        \n\n \n\n \n
        \n \n

        Search code, repositories, users, issues, pull requests...

        \n
        \n \n
        \n
        \n \n
        \n \n \n \n \n \n\n \n
        \n
        \n
        \n
        \n \n
        \n
        \n Clear\n \n\n
        \n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
        \n \n
        \n
        \n
        \n\n
        \n Search syntax tips
        \n \n
        \n
        \n
        \n\n
        \n
        \n
        \n \n
        \n \n\n \n
        \n
        \n
        \n

        \n Provide feedback\n

        \n \n
        \n
        \n \n
        \n
        \n \n
        \n \n
        \n

        We read every piece of feedback, and take your input very seriously.

        \n \n \n \n
        \n
        \n \n
        \n\n \n \n\n \n
        \n
        \n
        \n

        \n Saved searches\n

        \n

        Use saved searches to filter your results more quickly

        \n
        \n
        \n \n
        \n
        \n \n
        \n \n
        \n\n \n\n
        \n
        \n
        \n\n
        \n
        \n \n
        \n
        \n
        \n \n\n\n
        \n\n \n
        \n
        \n \n \n \n\nChat with Copilot\n\n \n \n
        \n \n \n Open Copilot…\n\n \n \n
        \n
        \n
        \n\n\n
        \n \n Create new…\n\n \n \n\n\n \n \n\nYour issues\n\n \n \n\nYour pull requests\n\n
        \n\n \n \n \n\n\n\n Notifications\n\n\n
        \n \n \n \n \n \n \n\n\n\n \n\n
        \n\n
        \n \n\n\n\n\n
        \n
        \n \n\n\n \n \n\n\n\n \n \n \n \n\n
        \n\n\n\n\n\n\n\n\n
        \n\n\n\n\n \n
        \n\n\n \n \n \n\n\n\n\n\n\n \n
        \n
        \n \n \n\n\n\n\n\n \n \n\n \n\n\n\n\n\n\n \n \n\n\n\n\n\n
        \n Open in github.dev\n Open in a new github.dev tab\n Open in codespace\n\n\n\n\n \n \n
        \n\n
        \n \n\n\n
        \n \n \n\n
        \n
        \n
        \n

        \n Add \"VCR\" functionality\n #517\n

        \n\n
        \n
        \n
        \n\n\n
        \n \n
        \n \n \n \n \n\n \n Code\n \n \n \n \n\n \n\n \n \n \n \n\n \n
        \n
        \n
        \n \n
        \n
        \n
        \n\n
        \n
        \n \n Merged\n\n
        \n\n\n\n\n
        \n nedtwigg\n merged 11 commits into\n\n\n main\n\nfrom\n\nfeat/sequence-record\n \n \n \n\n \n \n\n
        \n
        \n\n\n Feb 20, 2025\n\n\n
        \n
        \n
        \n\n
        \n\n
        \n
        \n
        \n
        \n
        \n \n Merged\n\n
        \n\n\n\n\n
        \n

        \n \n Add \"VCR\" functionality\n \n #517\n

        \n\n
        \n nedtwigg\n merged 11 commits into\n\n\n main\n\nfrom\n\nfeat/sequence-record\n \n \n \n\n \n \n\n
        \n
        \n\n\n Feb 20, 2025\n\n\n
        \n
        \n
        \n
        \n
        \n
        \n
        \n\n
        \n\n \n\n\n
        \n\n\n\n \n
        \n
        \n \n \n +175\n \n \n −25\n \n \n \n \n \n
        \n\n \n
        \n\n\n\n
        \n
        \n

        Conversation

        \n \n \n\n\n \n\n
        \n\n
        \n \"nedtwigg\"\n \n \n
        \n
        \n
        \n
        \n
        \n \n \n \n\n \n\n\n \n \n \n

        \n \n \n \n \n\n

        \n \n \n Quote reply\n \n\n \n
        \n
        \n
        \n\n
        \n \n\n \n Member\n\n\n \n\n
        \n\n

        \n
        \n \"@nedtwigg\"\n\n \n nedtwigg\n \n\n \n\n \n\n commented\n\n\n Feb 20, 2025\n\n\n \n
        \n\n

        \n
        \n\n
        \n
        \n \n \n
        \n

        \n No description provided. \n

        \n
        \n
        \n \n
        \n\n
        \n\n
        \n \n \n

        \n \n \n \n \n\n

        \n \n\n \n
        \n
        \n
        \n
        \n \n \n \n \n\n
        \n \n
          \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        • \n
        \n
        \n \n
        \n\n
        \n \n
        \n
        \n \n
        \n
        \n
        \n
        \n\n
        \n
        \n
        \n\n \n\n \n
        \n\n\n
        \n \n
        \n
        \n \n
        \n \n
        \n
        nedtwigg\n \n\n added 11 commits\n February 20, 2025 15:11
        \n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n 91b890d\n \n
        \n
        \n
        \n
        \n
        ….*` and `selfie.*`
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n
        \n \n First cut.\n \n\n
        \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n 07598e7\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n fbedf0b\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n
        \n \n Add nextBinary\n \n\n
        \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n f5ed9dd\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n 6968913\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n acb831a\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n 06aa3eb\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n 414880b\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n e661849\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n
        \n \n Update changelog.\n \n\n
        \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n aad41a4\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n \n
        \n \n
        \n
        \n
        \n
        \n \n
        \n
        \n \n \"@nedtwigg\"\n
        \n
        \n\n \n\n
        \n \n\n \n \n \n\n \n\n
        \n\n
        \n
        \n \n\n \n \n \n\n \n\n
        \n \n
        \n\n
        \n
        \n
        \n\n
        \n \n 292f6e8\n \n
        \n
        \n
        \n
        \n\n
        \n
        \n
        \n\n\n
        \n\n
        \n \n
        \n \n
        \n \n
        \n
        \"@nedtwigg\"\n nedtwigg\n\n\n marked this pull request as ready for review\n\n February 20, 2025 23:44 \n \n
        \n
        \n
        \n
        \n \n \n\n
        \n
        \n\n \n \"@nedtwigg\"\n nedtwigg\n\n\n\n merged commit 54d97cc\n into\n\n \n \n main\n \n\n\n Feb 20, 2025\n\n
        \n 6 checks passed\n
        \n\n
        \n \n \n \n \n \n \n\n\n \n
        \n
        \n
        \n\n
        \n\n
        \n \n
        \n \n
        \n
        \"@nedtwigg\"\n nedtwigg\n\n\n \n deleted the\n \n \n feat/sequence-record\n \n branch\n\n February 20, 2025 23:44 \n \n
        \n
        \n\n\n
        \n\n\n\n\n\n \n
        \n
        \n \n
        \n\n\n\n
        \n\n
        \n\n
        \n
        \n \n \n\n\n \n \n
        Loading
        \n\n\n\n
        \n\n
        \n \n \n
        \n
        \n \"@cavia-porcellus\"\n
        \n
        \n
        \n \n \n
        \n \n

        Add a comment

        \n\n\n \n
        \n \n \n Write\n \n \n Preview\n \n
        \n \n \n
        \n
        Heading\n
        \n
        Bold\n
        \n
        Italic\n
        \n
        Quote\n
        \n
        Code\n
        \n
        Link\n
        \n
        \n
        Numbered list\n
        \n
        Unordered list\n
        \n
        Task list\n
        \n
        \n
        Attach files\n
        \n
        Mention\n
        \n
        Reference\n
        \n
        Saved replies\n
        \n Slash commands\n\n
        \n\n\n \n
        \n
        \n
        \n

        \n Select a reply\n

        \n \n
        \n
        \n \n
        \n
        \n \n
        \n \n
        \n \n \n \n \n \n Loading\n\n\n \n
        \n
        \n \n
        \n\n\n
        \n\n \n\n \n
        \n \n\n \n \n
        \n
        \n
        \n
        \n \n \n\n\n Slash commands\n
        \n\n
        \n Preview\n
        \n\n
        \n
        \n \n \n \n \n Loading\n\n
        \n
        \n
        \n\n
        \n
        \n
        \n
        \n \n \n\n\n Slash commands\n
        \n\n
        \n Preview\n
        \n\n
        \n
        \n
        \n \n \n\n

        An unexpected error has occurred

        \n
        \n
        \n
        \n
        \n\n \n
        \n \n

        \n Add your comment here...\n

        \n
        \n\n \n \n \n
        \n \n
        \n
        \n \n \n\n
        \n
        \n

        We don’t support that file type.

        \n

        Try again with GIF, JPEG, JPG, MOV, MP4, PNG, SVG, WEBM, WEBP, CPUPROFILE, CSV, DMP, DOCX, FODG, FODP, FODS, FODT, GZ, JSON, JSONC, LOG, MD, ODF, ODG, ODP, ODS, ODT, PATCH, PDF, PPTX, TGZ, TXT, XLS, XLSX or ZIP.

        \n
        \n \n
        \n
        \n \n \n\n
        \n
        \n

        Attaching documents requires write permission to this repository.

        \n

        Try again with GIF, JPEG, JPG, MOV, MP4, PNG, SVG, WEBM, WEBP, CPUPROFILE, CSV, DMP, DOCX, FODG, FODP, FODS, FODT, GZ, JSON, JSONC, LOG, MD, ODF, ODG, ODP, ODS, ODT, PATCH, PDF, PPTX, TGZ, TXT, XLS, XLSX or ZIP.

        \n
        \n \n
        \n
        \n \n \n\n
        \n
        \n

        \n
        \n \n
        \n
        \n \n \n\n
        \n
        \n

        This file is empty.

        \n

        Try again with a file that’s not empty.

        \n
        \n \n
        \n
        \n \n \n\n
        \n
        \n

        This file is hidden.

        \n

        Try again with another file.

        \n
        \n \n
        \n
        \n \n \n\n
        \n
        \n

        Something went really wrong, and we can’t process that file.

        \n

        Try again.

        \n
        \n
        \n
        \n\n
        \n \n
        \n
        \n \n \n \n \n \n \n \n \n \n \n
        \n
        \n

        Nothing to preview

        \n
        \n
        \n\n
        \n\n \n\n \n
        \n \n
        \n\n
        \n
        \n\n
        \n\n
        \n
        \n \n\n
        \n
        \n
        \n
        \n\n
        \n\n
        \n
        \n
        \n \n \nRemember, contributions to this repository should follow\n its\n \n \n contributing guidelines and code of conduct.\n
        \n\n\n
        \n \n \n\n ProTip!\n Add comments to specific lines under Files changed.\n
        \n
        \n\n\n
        \n
        \n
        \n\n
        \n
        \n
        \n\n \n
        \n \n
        \n \n\n
        \n Reviewers\n
        \n\n \n\n No reviews\n\n\n
        \n\n\n
        \n
        \n\n \n
        \n Assignees\n
        \n\n\n \n\n\n No one assigned\n\n\n\n
        \n\n\n \n\n \n\n\n
        \n Labels\n
        \n\n\n
        \n None yet\n
        \n\n
        \n\n\n \n\n
        \n
        \n
        \n Projects\n
        \n\n
        \n
        \n\n None yet\n\n\n\n
        \n\n\n \n
        \n
        \n \n
        \n Milestone\n
        \n\n No milestone\n\n
        \n\n\n \n \n \n\n
        \n
        \n \n
        \n \n
        \n Development\n
        \n\n\n \n\n

        Successfully merging this pull request may close these issues.

        \n\n\n\n\n \n \n\n\n
        \n
        \n
        \n
        \n\n \n\n
        \n \n \n
        \n \n \n \n \n Loading\n\n
        \n \n\n \n
        \n
        \n\n\n \n
        \n
        \n
        \n 1 participant\n
        \n
        \n \n \"@nedtwigg\" \n
        \n
        \n
        \n\n\n\n \n\n\n \n\n\n \n\n\n\n\n\n\n \n \n \n \n\n\n \n\n\n \n\n\n\n\n \n \n\n \n\n
        \n

        Footer

        \n\n \n\n\n
        \n
        \n \n \n \n\n\n \n © 2025 GitHub, Inc.\n \n
        \n\n \n
        \n
        \n\n\n\n \n\n\n\n \n\n \n\n
        \n
        \n
        \n
        \n\n \n\n\n\n \n\n\n \n
        \n
        \n \n\n\n" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 67.131 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.575Z", + "time": 2.219, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/230625434?v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/230625434?v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "26807" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "\"56f873398d956d1564aea12d82f4a5a7402334c684777eeae2f5209f961dbae4\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:51 GMT" + }, + { + "name": "last-modified", + "value": "Fri, 05 Sep 2025 19:37:15 GMT" + }, + { + "name": "source-age", + "value": "6756" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "1" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "628e735a9931767fdf8991d0dc88ddccf68b350f" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "5F07:14FDE:4A68:6007:68BB3C62" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc10034-SJC" + }, + { + "name": "x-timer", + "value": "S1757107912.633972,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "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", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 2.219 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.607Z", + "time": 2.82, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/2924992?s=60&v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/2924992?s=60&v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "s", + "value": "60" + }, + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "1687" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "\"d5598f900236f27795c23e9a3baefd9eae1d3475527019a9647d1e50aa77a5ff\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:51 GMT" + }, + { + "name": "last-modified", + "value": "Thu, 14 Mar 2019 02:56:52 GMT" + }, + { + "name": "source-age", + "value": "1478889" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "f1215c359f2b6f89cb95494399672f3f6bda5cf8" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "2712:53B00:88690:AA41D:68A4C5DE" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc10034-SJC" + }, + { + "name": "x-timer", + "value": "S1757107912.641874,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "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", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 2.82 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.607Z", + "time": 1.663, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/2924992?s=48&v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/2924992?s=48&v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "s", + "value": "48" + }, + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "1304" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "\"adece9fed1bfdf7967664dc8af8e58dc9020e310f2d90359a1f69f951c617160\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:51 GMT" + }, + { + "name": "last-modified", + "value": "Thu, 14 Mar 2019 02:56:52 GMT" + }, + { + "name": "source-age", + "value": "912613" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "b7968096f11fe32a7e8991574b632e1fc580c4c1" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "5598:110C87:40D49B:539BE4:68AD69E2" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc10034-SJC" + }, + { + "name": "x-timer", + "value": "S1757107912.641826,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIADAAMAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APRJJZl09jty6jofSvNvFnjme6lbS7BwkCjy5ZE6ue4z2FdrrGpzWWg302f3sVo5GPXHFeMaVo13qMYlSOQoeGIyT2/pmuGlZXcioRcnoXbW/tbcgxrHOMgNkHOfZutd3YePpLBLOKaCSS1I27x1Ufj1xWtpHhLSLVQwtkY4H3hnn1q54i0KC+8PzW8MCpKil4tgwQRzxWjkp7rQ6ZULI1pL/BhnjYOkihlIPUHnNXIbmGZwQeWGCK43wlfi98MwB3xJaMY3yOo6j+f6VpabdeZqZUFTgdBWCjvbocb912MvUoWksdStXZDJ9mcZ3dcqa43w1qlzp+hBLWJA0ZPmeYpPJY4AA6mum0iQXxuIZufPUruxkg1WtNNbTtWuYZbZ4UmPmqSONx4YZ6HoD+NOouR2Z04NKWzL2n+JNQki8mSCEztG0gIRkIAx0HOTz04pNNXVri7eaa5uvLBykrTcN/wEYGKdGY4tZgdSx2nDN1rbgurZNQVEEWXywUYDAeuPSn7RWud/sn1MXw7pj6cdS+2sFE9w4GDwMEgcfn+laWh28UWoyysx4bA9MVeszvu7hdqlYXZ2zzv3EkD9atTaefPWaBFVHx8vpQ5WvfqeXVinK8RZ9OsbSATrGu8fNlRjFY+sLNdaebskBYV81GU5zjqPyrYsYn1a2klRAiuu1C5/X6VT1Cwg8PaA6ahdgtcMIIh6u3AwO/XP0FckZOUrLc0UlF3Ry2lsr3jzQbQ0xy6+WrZb1GQcV1aRpkzSEmbG0s3XHp7Dk1yGn2clnfIJA0eeGx0z611trbGaWOKEFnY9Sc10a/CegmuW5HHeWmnyJai4Q3l2xkVXIUuASDj16VsXF2YbZXXpjLMex9KzfHXh+zvPDSrt/wBJsVeaGVTgq2CT+BPavObX4g6lDpwtLlY7uHrlztb8SP6ivQlgXOKlHc8Z4iMZNPY//9k=", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1.663 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.607Z", + "time": 2.791, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/2924992?s=40&v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/2924992?s=40&v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "s", + "value": "40" + }, + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "1248" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "\"db3cef0937d540548c304e250c453049c0ccf0c34e79c5d5b254f0e24aafaefb\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:51 GMT" + }, + { + "name": "last-modified", + "value": "Thu, 14 Mar 2019 02:56:52 GMT" + }, + { + "name": "source-age", + "value": "193373" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "e8c506006d4a6c5923041df59cd2a029e997af02" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "85BA:185353:2A78C:33DC7:68B8636A" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc10034-SJC" + }, + { + "name": "x-timer", + "value": "S1757107912.641794,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AO91G9bT9Ja7mYCO3G+Qnn5favH9Y8V3Ov3zTXe/7OrfuoIxkD8O59Sa7Xxzcu3g+8jic7cxgse67xVDwn4Ygs5Iby4kiYvH9xjyCQP8D+dcVOSitdzWlT5yn4d1DVrR3ew09w+w4ZYsBuO/Y13mheJH1zSXlePyrmB9skYOeex/n+VXZtQ0/So0WeWOEkYVAMk/QCuWspYLPxvcJbuHtdThMm0Aghh6jt0P50T95Xe5dWkkro7m3v0ldVkGJOh96u7ov7orkbK6aXXRGFYYB69q6bZJ71nJOJzRdzz3VEXWdE1KGBFCyFQoyflwQc/mBWRp2kG9tLeeQkyKuHG1Wyw4wc+mMfhXc23h+PSF3vJ5kTjDI3cH6Vi6hEunvKlmnkRT5Me/JAfuDk5//XSlNc3uHXhUl7s1qJZaUt5p8U08rna+JAHK85yOR9cVrPp1vFfwXKhVnEJVHzngkfn0H51W02EzWRiiaSJ2H3twO0nqQCCDWrFAUu4XYjyrZCck8lj/APqq023ZnTWtGGgiwy2Wo+czIxlAIKjir/2+b/IqYSwizR2XKk5AI5qP7bbf88//AB01Dk30PO9m+hB9muNb052t8rvx5Zc4HHesLxZbcWtgZxNqES+bKqdVQ5Gfz/ka7Dwx/wAge0/3B/KuQ13/AJKTff8AYNj/AJvWWFj7So0+lzRycWmN0bf9jVXkIKk5UDBzW7deHotU8N3Md4ZI3mUGF0OHQg5DA+uf0+tYOmf8tPqa72T/AJBUH/XNf5V34OCdS76G+Nm1Tsup49B48ubC1n03UoBdNG5jM6ttf5TjnsentUX/AAnVj/z53H/f5a5XWP8AkLaj/wBfMv8A6Eaya9SWFpN3seOq9RaJn//Z", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 2.791 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.607Z", + "time": 1.792, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/2924992?s=40&u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/2924992?s=40&u=b69110f1956d894eaa7b17c54793e11bd33da424&v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "s", + "value": "40" + }, + { + "name": "u", + "value": "b69110f1956d894eaa7b17c54793e11bd33da424" + }, + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "1248" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "\"db3cef0937d540548c304e250c453049c0ccf0c34e79c5d5b254f0e24aafaefb\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:51 GMT" + }, + { + "name": "last-modified", + "value": "Thu, 14 Mar 2019 02:56:52 GMT" + }, + { + "name": "source-age", + "value": "2004718" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "a0b45ab976c6c71fe9b25f90bb5bedb7686346cf" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "8911:11D844:BC6E9:F2088:689CBFD7" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc10034-SJC" + }, + { + "name": "x-timer", + "value": "S1757107912.641720,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "/9j/2wCEAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDIBCQkJDAsMGA0NGDIhHCEyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMv/AABEIACgAKAMBIgACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AO91G9bT9Ja7mYCO3G+Qnn5favH9Y8V3Ov3zTXe/7OrfuoIxkD8O59Sa7Xxzcu3g+8jic7cxgse67xVDwn4Ygs5Iby4kiYvH9xjyCQP8D+dcVOSitdzWlT5yn4d1DVrR3ew09w+w4ZYsBuO/Y13mheJH1zSXlePyrmB9skYOeex/n+VXZtQ0/So0WeWOEkYVAMk/QCuWspYLPxvcJbuHtdThMm0Aghh6jt0P50T95Xe5dWkkro7m3v0ldVkGJOh96u7ov7orkbK6aXXRGFYYB69q6bZJ71nJOJzRdzz3VEXWdE1KGBFCyFQoyflwQc/mBWRp2kG9tLeeQkyKuHG1Wyw4wc+mMfhXc23h+PSF3vJ5kTjDI3cH6Vi6hEunvKlmnkRT5Me/JAfuDk5//XSlNc3uHXhUl7s1qJZaUt5p8U08rna+JAHK85yOR9cVrPp1vFfwXKhVnEJVHzngkfn0H51W02EzWRiiaSJ2H3twO0nqQCCDWrFAUu4XYjyrZCck8lj/APqq023ZnTWtGGgiwy2Wo+czIxlAIKjir/2+b/IqYSwizR2XKk5AI5qP7bbf88//AB01Dk30PO9m+hB9muNb052t8rvx5Zc4HHesLxZbcWtgZxNqES+bKqdVQ5Gfz/ka7Dwx/wAge0/3B/KuQ13/AJKTff8AYNj/AJvWWFj7So0+lzRycWmN0bf9jVXkIKk5UDBzW7deHotU8N3Md4ZI3mUGF0OHQg5DA+uf0+tYOmf8tPqa72T/AJBUH/XNf5V34OCdS76G+Nm1Tsup49B48ubC1n03UoBdNG5jM6ttf5TjnsentUX/AAnVj/z53H/f5a5XWP8AkLaj/wBfMv8A6Eaya9SWFpN3seOq9RaJn//Z", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1.792 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.607Z", + "time": 1.987, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/230625434?s=80&v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/230625434?s=80&v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "s", + "value": "80" + }, + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "1952" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "\"75bb4af6ce098e506f0b67820a6b2c99adc0c831646839eff2c40d113e50a68e\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:51 GMT" + }, + { + "name": "last-modified", + "value": "Fri, 05 Sep 2025 19:37:15 GMT" + }, + { + "name": "source-age", + "value": "6345" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "7cdaf17380a2bd9e6c9df0ca807cc84f6062e148" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "9C55:19994D:F1BD:1344D:68BB3DF5" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc10034-SJC" + }, + { + "name": "x-timer", + "value": "S1757107912.642156,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "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", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1.987 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.608Z", + "time": 3.247, + "request": { + "method": "GET", + "url": "https://avatars.githubusercontent.com/u/2924992?s=52&v=4", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "avatars.githubusercontent.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/u/2924992?s=52&v=4" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "image" + }, + { + "name": "sec-fetch-mode", + "value": "no-cors" + }, + { + "name": "sec-fetch-site", + "value": "cross-site" + }, + { + "name": "sec-fetch-storage-access", + "value": "active" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + } + ], + "queryString": [ + { + "name": "s", + "value": "52" + }, + { + "name": "v", + "value": "4" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "accept-ranges", + "value": "bytes" + }, + { + "name": "access-control-allow-origin", + "value": "*" + }, + { + "name": "cache-control", + "value": "max-age=300" + }, + { + "name": "content-length", + "value": "1625" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'" + }, + { + "name": "content-type", + "value": "image/jpeg" + }, + { + "name": "cross-origin-resource-policy", + "value": "cross-origin" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "\"3e336ad77b89868c6ffdf7b3ca65ec038f67efabb5853e7fb95da3649d34d212\"" + }, + { + "name": "expires", + "value": "Fri, 05 Sep 2025 21:36:51 GMT" + }, + { + "name": "last-modified", + "value": "Thu, 14 Mar 2019 02:56:52 GMT" + }, + { + "name": "source-age", + "value": "346132" + }, + { + "name": "strict-transport-security", + "value": "max-age=31557600" + }, + { + "name": "timing-allow-origin", + "value": "https://github.com" + }, + { + "name": "vary", + "value": "Authorization,Accept-Encoding" + }, + { + "name": "via", + "value": "1.1 varnish" + }, + { + "name": "x-cache", + "value": "HIT" + }, + { + "name": "x-cache-hits", + "value": "0" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-fastly-request-id", + "value": "39342c01a557efbba71c86f8ed7e6bd6ed65a58f" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "CD91:12BDE5:1AEF27C:22342AC:68B60EAB" + }, + { + "name": "x-github-tenant", + "value": "" + }, + { + "name": "x-served-by", + "value": "cache-sjc10034-SJC" + }, + { + "name": "x-timer", + "value": "S1757107912.642181,VS0,VE1" + }, + { + "name": "x-xss-protection", + "value": "1; mode=block" + } + ], + "content": { + "size": -1, + "mimeType": "image/jpeg", + "text": "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", + "encoding": "base64" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 3.247 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.697Z", + "time": -1, + "request": { + "method": "GET", + "url": "https://github.com/assets-cdn/worker/socket-worker-7db934acff24.js?module=true", + "httpVersion": "HTTP/1.1", + "cookies": [], + "headers": [ + { + "name": "Accept", + "value": "*/*" + } + ], + "queryString": [ + { + "name": "module", + "value": "true" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": -1, + "statusText": "", + "httpVersion": "HTTP/1.1", + "cookies": [], + "headers": [], + "content": { + "size": -1, + "mimeType": "x-unknown" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": -1 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.722Z", + "time": 0.608, + "request": { + "method": "GET", + "url": "https://github.com/diffplug/selfie/security/overall-count", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/diffplug/selfie/security/overall-count" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "text/fragment+html" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-fetch-nonce-to-validate", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=14400, private" + }, + { + "name": "content-length", + "value": "0" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "text/fragment+html; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "referrer-policy", + "value": "no-referrer-when-downgrade" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:177EBC:17DAF6:68BB56C7" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "text/fragment+html; charset=utf-8", + "text": "" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.608 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.722Z", + "time": 0.406, + "request": { + "method": "GET", + "url": "https://github.com/diffplug/selfie/pull/517/partials/links?has_github_issues=false", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/diffplug/selfie/pull/517/partials/links?has_github_issues=false" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "text/html" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-fetch-nonce-to-validate", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [ + { + "name": "has_github_issues", + "value": "false" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "no-cache" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "W/\"ec6b35c9f8bbbe6260f04067b86347cd\"" + }, + { + "name": "referrer-policy", + "value": "no-referrer-when-downgrade" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:177EBC:17DAF7:68BB56C7" + }, + { + "name": "x-html-safe", + "value": "920a6e279144f7aca527594979b6c25b398b9657e23c355269bebfc1f87cce0f" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "text/html; charset=utf-8", + "text": "\n

        None yet

        \n\n" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.406 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.752Z", + "time": 0.34, + "request": { + "method": "POST", + "url": "https://github.com/commits/badges", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "POST" + }, + { + "name": ":path", + "value": "/commits/badges" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "content-length", + "value": "4665" + }, + { + "name": "content-type", + "value": "multipart/form-data; boundary=----WebKitFormBoundaryAlJ8lyoDEomxzVIJ" + }, + { + "name": "origin", + "value": "https://github.com" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1, + "postData": { + "mimeType": "multipart/form-data; boundary=----WebKitFormBoundaryAlJ8lyoDEomxzVIJ", + "text": "------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-0][id]\"\r\n\r\nC_kwDOJMKF3NoAKDkxYjg5MGQ0ZmU0MzA0NDVkNGU5OGFiMDMxMGJhZDc3NTFmNDM1OGE\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-0][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-0][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-1][id]\"\r\n\r\nC_kwDOJMKF3NoAKDA3NTk4ZTdlZGE0NzAzMTBhMGFkMmEwNGVhNGFmYTgyYzc4OTM1YTM\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-1][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-1][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-2][id]\"\r\n\r\nC_kwDOJMKF3NoAKGZiZWRmMGI3MzFmNzdiNGI5OTJmNDM1MDkwZjVmMzM5YTI5MDUyMmU\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-2][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-2][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-3][id]\"\r\n\r\nC_kwDOJMKF3NoAKGY1ZWQ5ZGRhYzUwYTNjZTFlZmQ3NDIzYzkwZGM5MDIyZWRjN2I0ZWY\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-3][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-3][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-4][id]\"\r\n\r\nC_kwDOJMKF3NoAKDY5Njg5MTM2N2I3OTM0Nzc1MTM4Mjc2YzQ3NmZkOTM3ZDIwZmE5N2Y\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-4][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-4][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-5][id]\"\r\n\r\nC_kwDOJMKF3NoAKGFjYjgzMWE1YjY4ZTYzOTg5M2ZjNzA3MGRlOWQ0YTFhNDdiNDU0NWE\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-5][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-5][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-6][id]\"\r\n\r\nC_kwDOJMKF3NoAKDA2YWEzZWI2NWYyMzNiZTQzNzE5NDFhMzU4YjE4YTcyZmRlYTlhNTQ\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-6][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-6][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-7][id]\"\r\n\r\nC_kwDOJMKF3NoAKDQxNDg4MGJjNmEwMzNmOGFkMTkyNjcxZmM2NGI5NjRjOWYwMzU2YmQ\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-7][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-7][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-8][id]\"\r\n\r\nC_kwDOJMKF3NoAKGU2NjE4NDkwMGJlY2UyMTA5MjNiZTFmZjIyMmUzYzIwM2U0Y2NjZGM\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-8][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-8][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-9][id]\"\r\n\r\nC_kwDOJMKF3NoAKGFhZDQxYTRhMTRhYmZhMWZiNWZjMjdhNzM4NzQ4ZjQ2M2I1OWE0MGU\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-9][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-9][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-10][id]\"\r\n\r\nC_kwDOJMKF3NoAKDI5MmY2ZTg3Nzk3ZWY1ZWM0OTkwNDU3ZTBmMWI2YjAxMzk5ZDlkODU\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-10][badge_size]\"\r\n\r\nsmall\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"items[item-10][dropdown_direction]\"\r\n\r\ns\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ\r\nContent-Disposition: form-data; name=\"_method\"\r\n\r\nGET\r\n------WebKitFormBoundaryAlJ8lyoDEomxzVIJ--\r\n", + "params": [] + } + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "W/\"9808268fba2badeca057b84ef084d829\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:177EDD:17DB1C:68BB56C7" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "{\"item-0\":\"\\n\",\"item-1\":\"\\n\",\"item-2\":\"\\n\",\"item-3\":\"\\n\",\"item-4\":\"\\n\",\"item-5\":\"\\n\",\"item-6\":\"\\n\",\"item-7\":\"\\n\",\"item-8\":\"\\n\",\"item-9\":\"\\n\",\"item-10\":\"\\n\"}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.34 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.752Z", + "time": 0.415, + "request": { + "method": "POST", + "url": "https://github.com/diffplug/selfie/commits/checks-statuses-rollups", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "POST" + }, + { + "name": ":path", + "value": "/diffplug/selfie/commits/checks-statuses-rollups" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "content-length", + "value": "4467" + }, + { + "name": "content-type", + "value": "multipart/form-data; boundary=----WebKitFormBoundaryNBOArnRceA4hRYIB" + }, + { + "name": "origin", + "value": "https://github.com" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1, + "postData": { + "mimeType": "multipart/form-data; boundary=----WebKitFormBoundaryNBOArnRceA4hRYIB", + "text": "------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-0][oid]\"\r\n\r\n91b890d4fe430445d4e98ab0310bad7751f4358a\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-0][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-0][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-1][oid]\"\r\n\r\n07598e7eda470310a0ad2a04ea4afa82c78935a3\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-1][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-1][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-2][oid]\"\r\n\r\nfbedf0b731f77b4b992f435090f5f339a290522e\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-2][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-2][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-3][oid]\"\r\n\r\nf5ed9ddac50a3ce1efd7423c90dc9022edc7b4ef\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-3][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-3][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-4][oid]\"\r\n\r\n696891367b7934775138276c476fd937d20fa97f\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-4][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-4][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-5][oid]\"\r\n\r\nacb831a5b68e639893fc7070de9d4a1a47b4545a\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-5][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-5][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-6][oid]\"\r\n\r\n06aa3eb65f233be4371941a358b18a72fdea9a54\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-6][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-6][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-7][oid]\"\r\n\r\n414880bc6a033f8ad192671fc64b964c9f0356bd\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-7][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-7][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-8][oid]\"\r\n\r\ne66184900bece210923be1ff222e3c203e4cccdc\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-8][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-8][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-9][oid]\"\r\n\r\naad41a4a14abfa1fb5fc27a738748f463b59a40e\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-9][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-9][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-10][oid]\"\r\n\r\n292f6e87797ef5ec4990457e0f1b6b01399d9d85\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-10][dropdown_direction]\"\r\n\r\nw\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"items[item-10][disable_live_updates]\"\r\n\r\nfalse\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB\r\nContent-Disposition: form-data; name=\"_method\"\r\n\r\nGET\r\n------WebKitFormBoundaryNBOArnRceA4hRYIB--\r\n", + "params": [] + } + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "W/\"5b2646070c5378e3c9e2a0ca60b7f924\"" + }, + { + "name": "referrer-policy", + "value": "no-referrer-when-downgrade" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:177EDD:17DB1D:68BB56C7" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "{\"item-0\":\"\\n
        \\n \\n \\n \\n\\n \\n
        \\n \\n \\n \\n \\n \\n \\n Loading\\n\\n
        Loading status checks…
        \\n\\n \\n
        \\n
        \\n\",\"item-1\":\"\",\"item-2\":\"\",\"item-3\":\"\",\"item-4\":\"\",\"item-5\":\"\\n
        \\n \\n \\n \\n\\n \\n
        \\n \\n \\n \\n \\n \\n \\n Loading\\n\\n
        Loading status checks…
        \\n\\n \\n
        \\n
        \\n\",\"item-6\":\"\",\"item-7\":\"\\n
        \\n \\n \\n \\n\\n \\n
        \\n \\n \\n \\n \\n \\n \\n Loading\\n\\n
        Loading status checks…
        \\n\\n \\n
        \\n
        \\n\",\"item-8\":\"\",\"item-9\":\"\\n
        \\n \\n \\n \\n\\n \\n
        \\n \\n \\n \\n \\n \\n \\n Loading\\n\\n
        Loading status checks…
        \\n\\n \\n
        \\n
        \\n\",\"item-10\":\"\\n
        \\n \\n \\n \\n\\n \\n
        \\n \\n \\n \\n \\n \\n \\n Loading\\n\\n
        Loading status checks…
        \\n\\n \\n
        \\n
        \\n\"}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.415 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.753Z", + "time": 0.45, + "request": { + "method": "GET", + "url": "https://github.com/notifications/thread_subscription?repository_id=616728028&thread_class=Issue&thread_id=2867526737", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/notifications/thread_subscription?repository_id=616728028&thread_class=Issue&thread_id=2867526737" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "text/html" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-fetch-nonce-to-validate", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [ + { + "name": "repository_id", + "value": "616728028" + }, + { + "name": "thread_class", + "value": "Issue" + }, + { + "name": "thread_id", + "value": "2867526737" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "W/\"d2fbd1dd7c51f112a9a368f27681e322\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:177EDD:17DB1E:68BB56C7" + }, + { + "name": "x-html-safe", + "value": "920a6e279144f7aca527594979b6c25b398b9657e23c355269bebfc1f87cce0f" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "text/html; charset=utf-8", + "text": " \n
        \n
        \n \n \n\n \n
        \n
        \n
        \n

        \n Notification settings\n

        \n \n
        \n
        \n \n
        \n
        \n \n
        \n \n
        \n \n \n
        \n \n \n \n \n\n
        \n\n \n
        \n
        \n \n
        \n
        \n
        \n\n
        \n \n \n \n \n

        \n You’re not receiving notifications from this thread.\n

        \n \n" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.45 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.759Z", + "time": 1.16, + "request": { + "method": "GET", + "url": "https://github.com/notifications/indicator", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/notifications/indicator" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-length", + "value": "15" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:51 GMT" + }, + { + "name": "etag", + "value": "W/\"7f517f97e00a688b0b402e4005866127\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:177EE1:17DB24:68BB56C7" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "{\"mode\":\"none\"}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1.16 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.762Z", + "time": 1.942, + "request": { + "method": "GET", + "url": "https://github.com/github-copilot/chat?skip_anchor=true", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/github-copilot/chat?skip_anchor=true" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "text/html" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-fetch-nonce-to-validate", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [ + { + "name": "skip_anchor", + "value": "true" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "text/html; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:52 GMT" + }, + { + "name": "etag", + "value": "W/\"45f85d28eceb6149c047b339405abae9\"" + }, + { + "name": "referrer-policy", + "value": "origin-when-cross-origin, strict-origin-when-cross-origin" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:177EE9:17DB2C:68BB56C7" + }, + { + "name": "x-html-safe", + "value": "920a6e279144f7aca527594979b6c25b398b9657e23c355269bebfc1f87cce0f" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "text/html; charset=utf-8", + "text": "\n\n\n\n\n \n \n
        \n\n\n\n" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1.942 + } + }, + { + "startedDateTime": "2025-09-05T21:31:51.817Z", + "time": 0.966, + "request": { + "method": "GET", + "url": "https://github.com/diffplug/selfie/pull/517/page_data/merge_box?merge_method=MERGE&bypass_requirements=false", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/diffplug/selfie/pull/517/page_data/merge_box?merge_method=MERGE&bypass_requirements=false" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "github-is-react", + "value": "true" + }, + { + "name": "github-verified-fetch", + "value": "true" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [ + { + "name": "merge_method", + "value": "MERGE" + }, + { + "name": "bypass_requirements", + "value": "false" + } + ], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:52 GMT" + }, + { + "name": "etag", + "value": "W/\"192b5cde4c790d0f51aab507d444bb35\"" + }, + { + "name": "referrer-policy", + "value": "no-referrer-when-downgrade" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:177F21:17DB64:68BB56C7" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "{\"pullRequest\":{\"advisoryWorkspace\":null,\"autoMergeRequest\":null,\"baseRefName\":\"main\",\"deprovisionableCodespaces\":null,\"headRefName\":\"feat/sequence-record\",\"headRefOid\":\"292f6e87797ef5ec4990457e0f1b6b01399d9d85\",\"headRepository\":{\"ownerLogin\":\"diffplug\",\"name\":\"selfie\",\"url\":\"https://github.com/diffplug/selfie\"},\"baseRepository\":{\"ownerLogin\":\"diffplug\",\"name\":\"selfie\",\"url\":\"https://github.com/diffplug/selfie\"},\"id\":\"PR_kwDOJMKF3M6L-JmN\",\"isDraft\":false,\"isInMergeQueue\":false,\"isCrossRepo\":false,\"latestOpinionatedReviews\":[],\"mergeBoxAliveChannels\":{\"stateChannel\":\"eyJjIjoiaXNzdWU6Mjg2NzUyNjczNzpzdGF0ZSIsInQiOjE3NTcxMDc5MTJ9--ff75b106cc655d163be05375b5b2f71e71624a699d050f225c51b25413411501\",\"deployedChannel\":\"eyJjIjoicHVsbF9yZXF1ZXN0OjIzNDgzMjUyNjE6ZGVwbG95ZWQiLCJ0IjoxNzU3MTA3OTEyfQ==--7122429ed0fc27b230112ed5c81a8eabdcb61915b8e2bbf48bead544162b9644\",\"reviewStateChannel\":\"eyJjIjoicHVsbF9yZXF1ZXN0OjIzNDgzMjUyNjE6cmV2aWV3X3N0YXRlIiwidCI6MTc1NzEwNzkxMn0=--7587e7278f5c462ca74f5877d27c05d69eaa22c7ef33823d9f02f6357b4dd492\",\"workflowsChannel\":\"eyJjIjoicHVsbF9yZXF1ZXN0OjIzNDgzMjUyNjE6d29ya2Zsb3dfcnVuIiwidCI6MTc1NzEwNzkxMn0=--c4904d81e5253de85ecf1be41692f3d5dcf5425fe12273fd6e71a8a28782832c\",\"mergeQueueChannel\":\"eyJjIjoicHVsbF9yZXF1ZXN0OjIzNDgzMjUyNjE6bWVyZ2VfcXVldWVfZW50cnlfc3RhdGUiLCJ0IjoxNzU3MTA3OTEyfQ==--38a3f1a126732fd2e466ca8fe5dfdbfd1811749d322e41ae3b3e7c9050d6049f\",\"headRefChannel\":\"eyJjIjoicmVwbzo2MTY3MjgwMjg6YnJhbmNoOmZlYXQvc2VxdWVuY2UtcmVjb3JkIiwidCI6MTc1NzEwNzkxMn0=--751251dc38947f5bd957244f64cdc23bd8029f13d20eb453d9202ffea5e7f07f\",\"baseRefChannel\":\"eyJjIjoicmVwbzo2MTY3MjgwMjg6YnJhbmNoOm1haW4iLCJ0IjoxNzU3MTA3OTEyfQ==--f77a92d5397ea71da95543acd23e93a3e47247c05bb9ff9bcaf36883af0ee3be\",\"gitMergeStateChannel\":\"eyJjIjoicHVsbF9yZXF1ZXN0OjIzNDgzMjUyNjE6Z2l0X21lcmdlX3N0YXRlIiwidCI6MTc1NzEwNzkxMn0=--2496e9e923228ca745d0d1dec6f0e6e2dd55361cbb8d77c12cc7aea65d973fc8\",\"pullRequestChannel\":\"eyJjIjoicHVsbF9yZXF1ZXN0OjIzNDgzMjUyNjEiLCJ0IjoxNzU3MTA3OTEyfQ==--30e0105c23d3a5ae965b0fbb0f3ec208fcf67a4e0284d606a59178f18adcefff\"},\"mergeBoxUserPreferences\":{\"statusChecksGrouping\":\"grouped_by_status\"},\"mergeQueue\":null,\"mergeQueueEntry\":null,\"mergeStateStatus\":\"UNKNOWN\",\"numberOfCommits\":11,\"pendingReviewRequests\":[],\"resourcePath\":\"https://github.com/diffplug/selfie/pull/517\",\"state\":\"MERGED\",\"viewerCanAddAndRemoveFromMergeQueue\":false,\"viewerCanAdminBypassMergeRequirements\":false,\"viewerCanAddToMergeQueueSolo\":false,\"viewerCanDeleteHeadRef\":false,\"viewerCanDisableAutoMerge\":false,\"viewerCanEnableAutoMerge\":false,\"viewerCanRestoreHeadRef\":false,\"viewerCanUpdateBranch\":false,\"viewerCanUpdate\":false,\"viewerDidAuthor\":false,\"viewerMergeActions\":[{\"allowableStatus\":\"BLOCKED\",\"mergeMethods\":[{\"allowableStatus\":\"BLOCKED\",\"isDefault\":true,\"name\":\"MERGE\"},{\"allowableStatus\":\"BLOCKED\",\"isDefault\":false,\"name\":\"SQUASH\"},{\"allowableStatus\":\"BLOCKED\",\"isDefault\":false,\"name\":\"REBASE\"}],\"name\":\"MERGE_QUEUE\"},{\"allowableStatus\":\"BLOCKED\",\"mergeMethods\":[{\"allowableStatus\":\"ALLOWED\",\"isDefault\":true,\"name\":\"MERGE\"},{\"allowableStatus\":\"ALLOWED\",\"isDefault\":false,\"name\":\"SQUASH\"},{\"allowableStatus\":\"ALLOWED\",\"isDefault\":false,\"name\":\"REBASE\"}],\"name\":\"DIRECT_MERGE\"}],\"viewerCanDismissReviews\":false,\"viewerCanReRequestReviews\":false,\"viewerUpdateMethods\":[{\"allowableStatus\":\"BLOCKED\",\"isDefault\":false,\"name\":\"MERGE\",\"failureReason\":\"You don’t have write access to feat/sequence-record.\"},{\"allowableStatus\":\"UNAVAILABLE\",\"isDefault\":false,\"name\":\"REBASE\",\"failureReason\":\"There was a problem generating the rebase commit.\"}]},\"mergeRequirements\":null}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 0.966 + } + }, + { + "startedDateTime": "2025-09-05T21:31:52.212Z", + "time": 1.153, + "request": { + "method": "GET", + "url": "https://github.com/diffplug/selfie/pull/517/page_data/status_checks", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": ":authority", + "value": "github.com" + }, + { + "name": ":method", + "value": "GET" + }, + { + "name": ":path", + "value": "/diffplug/selfie/pull/517/page_data/status_checks" + }, + { + "name": ":scheme", + "value": "https" + }, + { + "name": "accept", + "value": "application/json" + }, + { + "name": "accept-encoding", + "value": "gzip, deflate, br, zstd" + }, + { + "name": "content-type", + "value": "application/json" + }, + { + "name": "github-is-react", + "value": "true" + }, + { + "name": "github-verified-fetch", + "value": "true" + }, + { + "name": "priority", + "value": "u=1, i" + }, + { + "name": "referer", + "value": "https://github.com/diffplug/selfie/pull/517" + }, + { + "name": "sec-ch-ua", + "value": "\"Chromium\";v=\"140\", \"Not=A?Brand\";v=\"24\", \"HeadlessChrome\";v=\"140\"" + }, + { + "name": "sec-ch-ua-mobile", + "value": "?0" + }, + { + "name": "sec-ch-ua-platform", + "value": "\"macOS\"" + }, + { + "name": "sec-fetch-dest", + "value": "empty" + }, + { + "name": "sec-fetch-mode", + "value": "cors" + }, + { + "name": "sec-fetch-site", + "value": "same-origin" + }, + { + "name": "user-agent", + "value": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/140.0.7339.16 Safari/537.36" + }, + { + "name": "x-fetch-nonce", + "value": "v2:749d217b-4675-ec6e-f065-3f4a6ec72ab6" + }, + { + "name": "x-github-client-version", + "value": "9b6703211019f55a969b3529fb2a9ad8c8b8aa3c" + }, + { + "name": "x-requested-with", + "value": "XMLHttpRequest" + } + ], + "queryString": [], + "headersSize": -1, + "bodySize": -1 + }, + "response": { + "status": 200, + "statusText": "", + "httpVersion": "HTTP/2.0", + "cookies": [], + "headers": [ + { + "name": "cache-control", + "value": "max-age=0, private, must-revalidate" + }, + { + "name": "content-encoding", + "value": "gzip" + }, + { + "name": "content-security-policy", + "value": "default-src 'none'; base-uri 'self'; child-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/; connect-src 'self' uploads.github.com www.githubstatus.com collector.github.com raw.githubusercontent.com api.github.com github-cloud.s3.amazonaws.com github-production-repository-file-5c1aeb.s3.amazonaws.com github-production-upload-manifest-file-7fdce7.s3.amazonaws.com github-production-user-asset-6210df.s3.amazonaws.com *.rel.tunnels.api.visualstudio.com wss://*.rel.tunnels.api.visualstudio.com objects-origin.githubusercontent.com copilot-proxy.githubusercontent.com proxy.individual.githubcopilot.com proxy.business.githubcopilot.com proxy.enterprise.githubcopilot.com *.actions.githubusercontent.com wss://*.actions.githubusercontent.com productionresultssa0.blob.core.windows.net/ productionresultssa1.blob.core.windows.net/ productionresultssa2.blob.core.windows.net/ productionresultssa3.blob.core.windows.net/ productionresultssa4.blob.core.windows.net/ productionresultssa5.blob.core.windows.net/ productionresultssa6.blob.core.windows.net/ productionresultssa7.blob.core.windows.net/ productionresultssa8.blob.core.windows.net/ productionresultssa9.blob.core.windows.net/ productionresultssa10.blob.core.windows.net/ productionresultssa11.blob.core.windows.net/ productionresultssa12.blob.core.windows.net/ productionresultssa13.blob.core.windows.net/ productionresultssa14.blob.core.windows.net/ productionresultssa15.blob.core.windows.net/ productionresultssa16.blob.core.windows.net/ productionresultssa17.blob.core.windows.net/ productionresultssa18.blob.core.windows.net/ productionresultssa19.blob.core.windows.net/ github-production-repository-image-32fea6.s3.amazonaws.com github-production-release-asset-2e65be.s3.amazonaws.com insights.github.com wss://alive.github.com wss://alive-staging.github.com api.githubcopilot.com api.individual.githubcopilot.com api.business.githubcopilot.com api.enterprise.githubcopilot.com; font-src github.githubassets.com; form-action 'self' github.com gist.github.com copilot-workspace.githubnext.com objects-origin.githubusercontent.com; frame-ancestors 'none'; frame-src viewscreen.githubusercontent.com notebooks.githubusercontent.com; img-src 'self' data: blob: github.githubassets.com media.githubusercontent.com camo.githubusercontent.com identicons.github.com avatars.githubusercontent.com private-avatars.githubusercontent.com github-cloud.s3.amazonaws.com objects.githubusercontent.com release-assets.githubusercontent.com secured-user-images.githubusercontent.com/ user-images.githubusercontent.com/ private-user-images.githubusercontent.com opengraph.githubassets.com marketplace-screenshots.githubusercontent.com/ copilotprodattachments.blob.core.windows.net/github-production-copilot-attachments/ github-production-user-asset-6210df.s3.amazonaws.com customer-stories-feed.github.com spotlights-feed.github.com objects-origin.githubusercontent.com *.githubusercontent.com; manifest-src 'self'; media-src github.com user-images.githubusercontent.com/ secured-user-images.githubusercontent.com/ private-user-images.githubusercontent.com github-production-user-asset-6210df.s3.amazonaws.com gist.github.com; script-src github.githubassets.com; style-src 'unsafe-inline' github.githubassets.com; upgrade-insecure-requests; worker-src github.githubassets.com github.com/assets-cdn/worker/ github.com/assets/ gist.github.com/assets-cdn/worker/" + }, + { + "name": "content-type", + "value": "application/json; charset=utf-8" + }, + { + "name": "date", + "value": "Fri, 05 Sep 2025 21:31:52 GMT" + }, + { + "name": "etag", + "value": "W/\"441721e49c0d28d7726785c8ae196090\"" + }, + { + "name": "referrer-policy", + "value": "no-referrer-when-downgrade" + }, + { + "name": "server", + "value": "github.com" + }, + { + "name": "strict-transport-security", + "value": "max-age=31536000; includeSubdomains; preload" + }, + { + "name": "vary", + "value": "X-Fetch-Nonce, X-PJAX, X-PJAX-Container, Turbo-Visit, Turbo-Frame, X-Requested-With,Accept-Encoding, Accept, X-Requested-With" + }, + { + "name": "x-content-type-options", + "value": "nosniff" + }, + { + "name": "x-frame-options", + "value": "deny" + }, + { + "name": "x-github-request-id", + "value": "EDC2:35B64:178113:17DD6E:68BB56C8" + }, + { + "name": "x-xss-protection", + "value": "0" + } + ], + "content": { + "size": -1, + "mimeType": "application/json; charset=utf-8", + "text": "{\"aliveChannels\":{\"commitHeadShaChannel\":\"eyJjIjoicmVwbzo2MTY3MjgwMjg6Y29tbWl0OjI5MmY2ZTg3Nzk3ZWY1ZWM0OTkwNDU3ZTBmMWI2YjAxMzk5ZDlkODUiLCJ0IjoxNzU3MTA3OTEyfQ==--8a2e995103641b371a2bbf778db366ab83990932964fe2615425b6f652930487\"},\"statusChecks\":[{\"description\":null,\"durationInSeconds\":409,\"stateChangedAt\":\"2025-02-20T23:51:54.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / build (11, windows-latest) (push)\",\"state\":\"CANCELLED\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313665/job/37588833274?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Cancelled after 6m\",\"copilotCheckRunFailureContext\":null},{\"description\":\"Deployed successfully\",\"durationInSeconds\":0,\"stateChangedAt\":\"2025-02-20T23:47:00.000-08:00\",\"isRequired\":false,\"displayName\":\"Cloudflare Pages\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/pull/517/checks?check_run_id=37588906626\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/85455?s=40&v=4\",\"additionalContext\":\"\",\"copilotCheckRunFailureContext\":null},{\"description\":\"231 tests run, 231 passed, 0 skipped, 0 failed.\",\"durationInSeconds\":0,\"stateChangedAt\":\"2025-02-20T23:40:49.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / JUnit 11 ubuntu-latest (pull_request)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/pull/517/checks?check_run_id=37588689533\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"\",\"copilotCheckRunFailureContext\":null},{\"description\":\"231 tests run, 231 passed, 0 skipped, 0 failed.\",\"durationInSeconds\":0,\"stateChangedAt\":\"2025-02-20T23:50:02.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / JUnit 11 ubuntu-latest (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/pull/517/checks?check_run_id=37589016424\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"\",\"copilotCheckRunFailureContext\":null},{\"description\":\"231 tests run, 231 passed, 0 skipped, 0 failed.\",\"durationInSeconds\":0,\"stateChangedAt\":\"2025-02-20T23:42:39.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / JUnit 11 windows-latest (pull_request)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/pull/517/checks?check_run_id=37588751840\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"\",\"copilotCheckRunFailureContext\":null},{\"description\":\"226 tests run, 226 passed, 0 skipped, 0 failed.\",\"durationInSeconds\":0,\"stateChangedAt\":\"2025-02-20T23:51:41.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / JUnit 11 windows-latest (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/pull/517/checks?check_run_id=37589077004\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"\",\"copilotCheckRunFailureContext\":null},{\"description\":\"240 tests run, 240 passed, 0 skipped, 0 failed.\",\"durationInSeconds\":0,\"stateChangedAt\":\"2025-02-20T23:40:25.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / JUnit 17 ubuntu-latest (pull_request)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/pull/517/checks?check_run_id=37588675249\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"\",\"copilotCheckRunFailureContext\":null},{\"description\":\"240 tests run, 240 passed, 0 skipped, 0 failed.\",\"durationInSeconds\":0,\"stateChangedAt\":\"2025-02-20T23:50:00.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / JUnit 17 ubuntu-latest (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/pull/517/checks?check_run_id=37589015231\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":131,\"stateChangedAt\":\"2025-02-20T23:47:13.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-publish-kdoc.yml / Publish to Cloudflare Pages (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313670/job/37588832269?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 2m\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":305,\"stateChangedAt\":\"2025-02-20T23:40:54.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / build (11, ubuntu-latest) (pull_request)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452202082/job/37588511131?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 5m\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":310,\"stateChangedAt\":\"2025-02-20T23:50:13.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / build (11, ubuntu-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313665/job/37588832742?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 5m\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":410,\"stateChangedAt\":\"2025-02-20T23:42:43.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / build (11, windows-latest) (pull_request)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452202082/job/37588511324?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 6m\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":280,\"stateChangedAt\":\"2025-02-20T23:40:29.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / build (17, ubuntu-latest) (pull_request)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452202082/job/37588511554?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 4m\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":305,\"stateChangedAt\":\"2025-02-20T23:50:08.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/jvm-ci.yml / build (17, ubuntu-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313665/job/37588833498?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 5m\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":37,\"stateChangedAt\":\"2025-02-20T23:45:40.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/python-ci.yml / build (3.10, ubuntu-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313666/job/37588833520?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 37s\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":78,\"stateChangedAt\":\"2025-02-20T23:46:23.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/python-ci.yml / build (3.10, windows-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313666/job/37588833785?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 1m\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":20,\"stateChangedAt\":\"2025-02-20T23:45:23.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/python-ci.yml / build (3.11, ubuntu-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313666/job/37588834028?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 20s\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":86,\"stateChangedAt\":\"2025-02-20T23:46:32.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/python-ci.yml / build (3.11, windows-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313666/job/37588834285?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 1m\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":20,\"stateChangedAt\":\"2025-02-20T23:45:23.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/python-ci.yml / build (3.12, ubuntu-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313666/job/37588834539?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 20s\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":71,\"stateChangedAt\":\"2025-02-20T23:46:16.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/python-ci.yml / build (3.12, windows-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313666/job/37588834767?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 1m\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":20,\"stateChangedAt\":\"2025-02-20T23:45:22.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/python-ci.yml / build (3.9, ubuntu-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313666/job/37588832741?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 20s\",\"copilotCheckRunFailureContext\":null},{\"description\":null,\"durationInSeconds\":67,\"stateChangedAt\":\"2025-02-20T23:46:12.000-08:00\",\"isRequired\":false,\"displayName\":\".github/workflows/python-ci.yml / build (3.9, windows-latest) (push)\",\"state\":\"SUCCESS\",\"targetUrl\":\"/diffplug/selfie/actions/runs/13452313666/job/37588833280?pr=517\",\"avatarBackgroundColor\":\"#ffffff\",\"avatarUrl\":\"https://avatars.githubusercontent.com/in/15368?s=40&v=4\",\"additionalContext\":\"Successful in 1m\",\"copilotCheckRunFailureContext\":null}],\"statusRollup\":{\"summary\":[{\"count\":21,\"state\":\"SUCCESS\"},{\"count\":1,\"state\":\"CANCELLED\"}],\"combinedState\":\"PENDING\",\"pendingWorkflowApprovalRollup\":null}}" + }, + "headersSize": -1, + "bodySize": -1, + "redirectURL": "" + }, + "cache": {}, + "timings": { + "send": -1, + "wait": -1, + "receive": 1.153 + } + } + ] + } +} \ No newline at end of file From f6ca1dcbacf4199a97e8ad381469884e630d4d21 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 15:01:09 -0700 Subject: [PATCH 02/34] Inject the gitcasso extension into the `har` renders. --- browser-extension/tests/har-view.ts | 107 +++++++++++++++++++++++++--- 1 file changed, 98 insertions(+), 9 deletions(-) diff --git a/browser-extension/tests/har-view.ts b/browser-extension/tests/har-view.ts index aa8f477..291e23f 100644 --- a/browser-extension/tests/har-view.ts +++ b/browser-extension/tests/har-view.ts @@ -5,11 +5,24 @@ import { fileURLToPath } from 'node:url' const __dirname = path.dirname(fileURLToPath(import.meta.url)) const app = express() -const PORT = 3000 +const PORT = 3001 // Store HAR data const harCache = new Map() +// Check if WXT dev server is running +async function checkDevServer(): Promise { + try { + const response = await fetch('http://localhost:3000/@vite/client', { + method: 'HEAD', + signal: AbortSignal.timeout(2000) + }) + return response.ok + } catch { + return false + } +} + // Load and cache HAR file async function loadHar(filename: string) { if (harCache.has(filename)) { @@ -29,10 +42,28 @@ app.get('/', async (req, res) => { const harDir = path.join(__dirname, 'har') const files = await fs.readdir(harDir) const harFiles = files.filter(file => file.endsWith('.har')) + const devServerRunning = await checkDevServer() + + const devServerWarning = !devServerRunning ? ` +
        + ⚠️ Warning: WXT dev server is not running on localhost:3000
        + Gitcasso-enabled links won't work. Run npm run dev to start the server and then refresh this page. +
        + ` : '' const links = harFiles.map(file => { const basename = path.basename(file, '.har') - return `
      • ${basename}
      • ` + return ` +
      • +
        ${basename}
        + +
      • + ` }).join('') res.send(` @@ -43,27 +74,30 @@ app.get('/', async (req, res) => {

        📄 HAR Page Viewer

        + ${devServerWarning}

        Select a recorded page to view:

          ${links}
        @@ -110,11 +144,66 @@ app.get('/page/:filename', async (req, res) => { } }) +// Serve the main HTML page from HAR with Gitcasso content script injected +app.get('/page/:filename/gitcasso', async (req, res) => { + try { + const filename = req.params.filename + if (!filename.endsWith('.har')) { + return res.status(400).send('Invalid file type') + } + + const harData = await loadHar(filename) + + // Find the main HTML response + const mainEntry = harData.log.entries.find((entry: any) => + entry.request.url.includes('github.com') && + entry.response.content.mimeType?.includes('text/html') && + entry.response.content.text + ) + + if (!mainEntry) { + return res.status(404).send('No HTML content found in HAR file') + } + + let html = mainEntry.response.content.text + + // Replace external URLs with local asset URLs + html = html.replace( + /https:\/\/(github\.com|assets\.github\.com|avatars\.githubusercontent\.com|user-images\.githubusercontent\.com)/g, + `/asset/${filename.replace('.har', '')}` + ) + + // Inject the Gitcasso content script at the end of the body + const contentScriptTag = ` + + ` + + // Insert script before closing body tag, or at the end if no body tag + if (html.includes('')) { + html = html.replace('', `${contentScriptTag}`) + } else { + html += contentScriptTag + } + + res.send(html) + } catch (error) { + console.error('Error serving page:', error) + res.status(500).send('Error loading page') + } +}) + // Serve assets from HAR file app.get('/asset/:harname/*', async (req, res) => { try { const harname = req.params.harname + '.har' - const assetPath = req.params[0] + const assetPath = (req.params as any)[0] as string const harData = await loadHar(harname) From f52c484ec1b435c56b9ac39c71821dd51e06f790 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 15:24:38 -0700 Subject: [PATCH 03/34] Our extension loads! --- browser-extension/tests/har-view.ts | 41 ++++++++++++++++++++++++----- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/browser-extension/tests/har-view.ts b/browser-extension/tests/har-view.ts index 291e23f..efc5bcd 100644 --- a/browser-extension/tests/har-view.ts +++ b/browser-extension/tests/har-view.ts @@ -173,15 +173,42 @@ app.get('/page/:filename/gitcasso', async (req, res) => { `/asset/${filename.replace('.har', '')}` ) - // Inject the Gitcasso content script at the end of the body + // Inject patched content script that bypasses webextension-polyfill const contentScriptTag = ` ` From 751816e5ee128d0efd77654c39f6688a81e19cf8 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 15:43:44 -0700 Subject: [PATCH 04/34] har:view now fixes the URL. domain is still weird though... --- browser-extension/tests/har-view.ts | 49 +++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) diff --git a/browser-extension/tests/har-view.ts b/browser-extension/tests/har-view.ts index efc5bcd..ca37252 100644 --- a/browser-extension/tests/har-view.ts +++ b/browser-extension/tests/har-view.ts @@ -2,6 +2,7 @@ import express from 'express' import fs from 'node:fs/promises' import path from 'node:path' import { fileURLToPath } from 'node:url' +import { PAGES } from './har-index' const __dirname = path.dirname(fileURLToPath(import.meta.url)) const app = express() @@ -10,6 +11,31 @@ const PORT = 3001 // Store HAR data const harCache = new Map() +// Create mapping from HAR filename to original URL +const harToUrlMap = Object.fromEntries( + PAGES.map(([key, url]) => [`${key}.har`, url]) +) + +// Extract URL parts for location patching +function getUrlParts(filename: string) { + const originalUrl = harToUrlMap[filename] + if (!originalUrl) { + return null + } + + try { + const url = new URL(originalUrl) + return { + hostname: url.hostname, + pathname: url.pathname, + href: originalUrl, + host: url.host + } + } catch { + return null + } +} + // Check if WXT dev server is running async function checkDevServer(): Promise { try { @@ -152,6 +178,12 @@ app.get('/page/:filename/gitcasso', async (req, res) => { return res.status(400).send('Invalid file type') } + // Get original URL parts for location patching + const urlParts = getUrlParts(filename) + if (!urlParts) { + return res.status(400).send('Unknown HAR file - not found in har-index.ts') + } + const harData = await loadHar(filename) // Find the main HTML response @@ -173,9 +205,22 @@ app.get('/page/:filename/gitcasso', async (req, res) => { `/asset/${filename.replace('.har', '')}` ) - // Inject patched content script that bypasses webextension-polyfill + // Inject patched content script with location patching const contentScriptTag = ` ` - + // Insert script before closing body tag, or at the end if no body tag if (html.includes('')) { html = html.replace('', `${contentScriptTag}`) } else { html += contentScriptTag } - + res.send(html) } catch (error) { console.error('Error serving page:', error) @@ -276,24 +282,24 @@ app.get('/asset/:harname/*', async (req, res) => { try { const harname = req.params.harname + '.har' const assetPath = (req.params as any)[0] as string - + const harData = await loadHar(harname) - + // Find matching asset in HAR const assetEntry = harData.log.entries.find((entry: any) => { const url = new URL(entry.request.url) return url.pathname === '/' + assetPath || url.pathname.endsWith('/' + assetPath) }) - + if (!assetEntry) { return res.status(404).send('Asset not found') } - + const content = assetEntry.response.content const mimeType = content.mimeType || 'application/octet-stream' - + res.set('Content-Type', mimeType) - + if (content.encoding === 'base64') { res.send(Buffer.from(content.text, 'base64')) } else { @@ -308,4 +314,4 @@ app.get('/asset/:harname/*', async (req, res) => { app.listen(PORT, () => { console.log(`HAR Page Viewer running at http://localhost:${PORT}`) console.log('Click the links to view recorded GitHub pages') -}) \ No newline at end of file +}) From 12170ea8ddcba0f434932c9d27ff897e88107386 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 15:58:45 -0700 Subject: [PATCH 09/34] compile errors --- browser-extension/tests/har-record.ts | 6 +++--- browser-extension/tests/har-view.ts | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/browser-extension/tests/har-record.ts b/browser-extension/tests/har-record.ts index 8092326..c229603 100644 --- a/browser-extension/tests/har-record.ts +++ b/browser-extension/tests/har-record.ts @@ -15,7 +15,7 @@ function globToRegex(pattern: string): RegExp { // Filter pages based on pattern function filterPages(pattern: string) { const regex = globToRegex(pattern) - return PAGES.filter(([name]) => regex.test(name)) + return Object.entries(PAGES).filter(([name]) => regex.test(name)) } const FILTER = @@ -88,7 +88,7 @@ async function sanitize(filename: string) { // If no argument provided, show available keys if (!pattern) { console.log('Available recording targets:') - for (const [name] of PAGES) { + for (const [name] of Object.entries(PAGES)) { console.log(` ${name}`) } console.log('\nUsage: npm run har:record ') @@ -105,7 +105,7 @@ async function sanitize(filename: string) { if (pagesToRecord.length === 0) { console.log(`No targets match pattern: ${pattern}`) console.log('Available targets:') - for (const [name] of PAGES) { + for (const [name] of Object.entries(PAGES)) { console.log(` ${name}`) } return diff --git a/browser-extension/tests/har-view.ts b/browser-extension/tests/har-view.ts index 3d8a784..6a9fb90 100644 --- a/browser-extension/tests/har-view.ts +++ b/browser-extension/tests/har-view.ts @@ -63,7 +63,7 @@ async function loadHar(filename: string) { } // List available HAR files -app.get('/', async (req, res) => { +app.get('/', async (_req, res) => { try { const harDir = path.join(__dirname, 'har') const files = await fs.readdir(harDir) @@ -168,10 +168,10 @@ app.get('/page/:filename', async (req, res) => { `/asset/${filename.replace('.har', '')}`, ) - res.send(html) + return res.send(html) } catch (error) { console.error('Error serving page:', error) - res.status(500).send('Error loading page') + return res.status(500).send('Error loading page') } }) @@ -270,10 +270,10 @@ app.get('/page/:filename/gitcasso', async (req, res) => { html += contentScriptTag } - res.send(html) + return res.send(html) } catch (error) { console.error('Error serving page:', error) - res.status(500).send('Error loading page') + return res.status(500).send('Error loading page') } }) @@ -301,13 +301,13 @@ app.get('/asset/:harname/*', async (req, res) => { res.set('Content-Type', mimeType) if (content.encoding === 'base64') { - res.send(Buffer.from(content.text, 'base64')) + return res.send(Buffer.from(content.text, 'base64')) } else { - res.send(content.text || '') + return res.send(content.text || '') } } catch (error) { console.error('Error serving asset:', error) - res.status(404).send('Asset not found') + return res.status(404).send('Asset not found') } }) From 78b0d136257db6ef8251d028649c1e048f733032 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 15:59:42 -0700 Subject: [PATCH 10/34] biome manual fixup. --- browser-extension/tests/har-view.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/browser-extension/tests/har-view.ts b/browser-extension/tests/har-view.ts index 6a9fb90..09b59ae 100644 --- a/browser-extension/tests/har-view.ts +++ b/browser-extension/tests/har-view.ts @@ -133,7 +133,7 @@ app.get('/', async (_req, res) => { `) - } catch (error) { + } catch (_error) { res.status(500).send('Error listing HAR files') } }) @@ -280,7 +280,7 @@ app.get('/page/:filename/gitcasso', async (req, res) => { // Serve assets from HAR file app.get('/asset/:harname/*', async (req, res) => { try { - const harname = req.params.harname + '.har' + const harname = `${req.params.harname}.har` const assetPath = (req.params as any)[0] as string const harData = await loadHar(harname) @@ -288,7 +288,7 @@ app.get('/asset/:harname/*', async (req, res) => { // Find matching asset in HAR const assetEntry = harData.log.entries.find((entry: any) => { const url = new URL(entry.request.url) - return url.pathname === '/' + assetPath || url.pathname.endsWith('/' + assetPath) + return url.pathname === `/${assetPath}` || url.pathname.endsWith(`/${assetPath}`) }) if (!assetEntry) { From 26aad2f64725fc1051b624ef3e67b154a5a3e364 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 16:28:43 -0700 Subject: [PATCH 11/34] Use the har to make snapshots. --- .../tests/lib/enhancers/github.test.ts | 164 +++++++++++------- 1 file changed, 97 insertions(+), 67 deletions(-) diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index 34c4e9e..d9e2a33 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -1,84 +1,114 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' import { EnhancerRegistry } from '../../../src/lib/registries' +import { PAGES } from '../../har-index' +import fs from 'node:fs/promises' +import path from 'node:path' +import { fileURLToPath } from 'node:url' // Mock WXT's defineContentScript global vi.stubGlobal('defineContentScript', vi.fn()) -describe('GitHubHandler', () => { - let enhancers: EnhancerRegistry - let mockTextarea: HTMLTextAreaElement +const __dirname = path.dirname(fileURLToPath(import.meta.url)) - beforeEach(() => { - // Reset DOM and registries for each test - document.body.innerHTML = '' - enhancers = new EnhancerRegistry() - - // Mock window.location for GitHub PR page - Object.defineProperty(window, 'location', { - value: { - hostname: 'github.com', - href: 'https://github.com/diffplug/selfie/pull/517', - pathname: '/diffplug/selfie/pull/517', - }, - writable: true, - }) +// Helper function to load and extract HTML from HAR files +async function loadHarHtml(key: string): Promise { + const harPath = path.join(__dirname, '../../har', `${key}.har`) + const harContent = await fs.readFile(harPath, 'utf-8') + const harData = JSON.parse(harContent) - // Create a mock textarea element that mimics GitHub's PR comment box - mockTextarea = document.createElement('textarea') - mockTextarea.name = 'comment[body]' - mockTextarea.placeholder = 'Leave a comment' - mockTextarea.className = 'form-control markdown-body' + // Find the main HTML response (same logic as har-view.ts) + const mainEntry = harData.log.entries.find((entry: any) => + entry.request.url.includes('github.com') && + entry.response.content.mimeType?.includes('text/html') && + entry.response.content.text + ) - // Add it to a typical GitHub comment form structure - const commentForm = document.createElement('div') - commentForm.className = 'js-new-comment-form' - commentForm.appendChild(mockTextarea) - document.body.appendChild(commentForm) - }) + if (!mainEntry) { + throw new Error(`No HTML content found in HAR file: ${key}.har`) + } - it('should identify GitHub PR textarea and register it in TextareaRegistry', () => { - // Simulate the content script's enhanceMaybe function - // const enhancedTextarea = enhancers.tryToEnhance(mockTextarea) - // expect(enhancedTextarea).toBeTruthy() - // expect(enhancedTextarea?.textarea).toBe(mockTextarea) - // expect(enhancedTextarea?.spot.type).toBe('GH_PR_ADD_COMMENT') - // // Register the enhanced textarea - // if (enhancedTextarea) { - // enhancedTextareas.register(enhancedTextarea) - // } - // // Verify it's in the registry - // const registeredTextarea = enhancedTextareas.get(mockTextarea) - // expect(registeredTextarea).toBeTruthy() - // expect(registeredTextarea?.textarea).toBe(mockTextarea) - }) + return mainEntry.response.content.text +} - it('should create correct GitHubContext spot for PR comment', () => { - // const _enhancedTextarea = enhancers.tryToEnhance(mockTextarea) - // expect(enhancedTextarea).toBeTruthy() - // Snapshot test on the spot value - // expect(enhancedTextarea?.spot).toMatchSnapshot('github-pr-517-spot') - // Also verify specific expected values - // expect(enhancedTextarea?.spot).toMatchObject({ - // domain: 'github.com', - // number: 517, - // slug: 'diffplug/selfie', - // type: 'GH_PR_ADD_COMMENT', - // unique_key: 'github:diffplug/selfie:pull:517', - // }) +describe('github', () => { + beforeEach(() => { + // Reset DOM between tests + document.body.innerHTML = '' + + // Mock console methods to avoid noise + vi.spyOn(console, 'warn').mockImplementation(() => {}) }) - it('should not enhance textarea on non-GitHub pages', () => { - // Change location to non-GitHub site - Object.defineProperty(window, 'location', { - value: { - hostname: 'example.com', - href: 'https://example.com/some/page', - pathname: '/some/page', - }, - writable: true, + // Helper to setup DOM environment with location mocking + function setupDOMEnvironment(url: string, html: string) { + // Set up the HTML content + document.body.innerHTML = html + + // Mock window.location.pathname for GitHub enhancer + Object.defineProperty(window.location, 'pathname', { + value: new URL(url).pathname, + configurable: true }) + + // Add GitHub hostname meta tag (for the enhancer's new hostname check) + const meta = document.createElement('meta') + meta.name = 'hostname' + meta.content = 'github.com' + document.head.appendChild(meta) + } - const enhancedTextarea = enhancers.tryToEnhance(mockTextarea) - expect(enhancedTextarea).toBeNull() + it('should identify gh_pr textarea and create proper spot object', async () => { + const enhancers = new EnhancerRegistry() + const url = PAGES.gh_pr + + // Load the HTML from HAR file + const html = await loadHarHtml('gh_pr') + + // Setup DOM environment with proper location + setupDOMEnvironment(url, html) + + // Get all textarea elements from the page + const textareas = document.querySelectorAll('textarea') + + // Try to enhance each textarea - should find at least one GitHub textarea + let enhancedCount = 0 + let lastEnhancedResult: any = null + + for (const textarea of textareas) { + const enhancedTextarea = enhancers.tryToEnhance(textarea as HTMLTextAreaElement) + if (enhancedTextarea) { + enhancedCount++ + lastEnhancedResult = enhancedTextarea + } + } + + expect(enhancedCount).toBeGreaterThan(0) + expect(lastEnhancedResult).toBeTruthy() + + // Snapshot test on the spot object structure + expect(lastEnhancedResult.spot).toMatchInlineSnapshot(` + { + "domain": "github.com", + "number": 517, + "slug": "diffplug/selfie", + "type": "GH_PR_ADD_COMMENT", + "unique_key": "github.com:diffplug/selfie:517", + } + `) + + // Verify specific fields based on the URL + const urlObj = new URL(url) + const match = urlObj.pathname.match(/^\/([^/]+)\/([^/]+)\/(?:pull|issues)\/(\d+)/) + expect(match).toBeTruthy() // Ensure URL pattern matches + + const [, owner, repo, numberStr] = match! + + expect(owner).toBeDefined() + expect(repo).toBeDefined() + expect(numberStr).toBeDefined() + + expect(lastEnhancedResult.spot.slug).toBe(`${owner}/${repo}`) + expect(lastEnhancedResult.spot.number).toBe(parseInt(numberStr!, 10)) + expect(lastEnhancedResult.spot.unique_key).toBe(`github.com:${owner}/${repo}:${numberStr}`) }) }) From 274471bcd6371395a35c1d8cb343e015ce30e8a9 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 17:06:27 -0700 Subject: [PATCH 12/34] Swap happy-dom for linkedom. --- browser-extension/package-lock.json | 12 +- browser-extension/package.json | 6 +- .../tests/lib/enhancers/github.test.ts | 108 ++++++++---------- browser-extension/tests/setup.ts | 49 ++++++++ browser-extension/vitest.config.ts | 3 +- 5 files changed, 109 insertions(+), 69 deletions(-) diff --git a/browser-extension/package-lock.json b/browser-extension/package-lock.json index bb00498..b478744 100644 --- a/browser-extension/package-lock.json +++ b/browser-extension/package-lock.json @@ -24,7 +24,7 @@ "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", "express": "^4.19.2", - "happy-dom": "^18.0.1", + "linkedom": "^0.18.12", "tsx": "^4.19.1", "typescript": "^5.8.3", "vitest": "^3.2.4", @@ -1522,7 +1522,9 @@ "resolved": "https://registry.npmjs.org/@types/whatwg-mimetype/-/whatwg-mimetype-3.0.2.tgz", "integrity": "sha512-c2AKvDT8ToxLIOUlN51gTiHXflsfIFisS4pO7pDPoKouJCESkhZnEy623gwP9laCy5lnLDAw1vAzu2vM2YLOrA==", "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "peer": true }, "node_modules/@types/yauzl": { "version": "2.10.3", @@ -4218,6 +4220,8 @@ "integrity": "sha512-qn+rKOW7KWpVTtgIUi6RVmTBZJSe2k0Db0vh1f7CWrWclkkc7/Q+FrOfkZIb2eiErLyqu5AXEzE7XthO9JVxRA==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@types/node": "^20.0.0", "@types/whatwg-mimetype": "^3.0.2", @@ -4233,6 +4237,8 @@ "integrity": "sha512-uug3FEEGv0r+jrecvUUpbY8lLisvIjg6AAic6a2bSP5OEOLeJsDSnvhCDov7ipFFMXS3orMpzlmi0ZcuGkBbow==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -8126,6 +8132,8 @@ "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "engines": { "node": ">=12" } diff --git a/browser-extension/package.json b/browser-extension/package.json index 5e14fe9..383fef3 100644 --- a/browser-extension/package.json +++ b/browser-extension/package.json @@ -9,14 +9,14 @@ "description": "Syntax highlighting and autosave for comments on GitHub (and other other markdown-friendly websites).", "devDependencies": { "@biomejs/biome": "^2.1.2", + "@playwright/test": "^1.46.0", "@testing-library/jest-dom": "^6.6.4", + "@types/express": "^4.17.21", "@types/node": "^22.16.5", - "@playwright/test": "^1.46.0", "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", "express": "^4.19.2", - "@types/express": "^4.17.21", - "happy-dom": "^18.0.1", + "linkedom": "^0.18.12", "tsx": "^4.19.1", "typescript": "^5.8.3", "vitest": "^3.2.4", diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index d9e2a33..0d471fd 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -1,22 +1,37 @@ -import { beforeEach, describe, expect, it, vi } from 'vitest' +import { describe, expect, it, vi } from 'vitest' import { EnhancerRegistry } from '../../../src/lib/registries' import { PAGES } from '../../har-index' import fs from 'node:fs/promises' import path from 'node:path' import { fileURLToPath } from 'node:url' +import { parseHTML } from 'linkedom' -// Mock WXT's defineContentScript global vi.stubGlobal('defineContentScript', vi.fn()) +vi.mock('../../../src/overtype/overtype', () => { + const mockConstructor = vi.fn().mockImplementation(() => [{ + container: document.createElement('div'), + wrapper: document.createElement('div'), + textarea: document.createElement('textarea'), + preview: document.createElement('div'), + getValue: vi.fn(() => ''), + setValue: vi.fn(), + focus: vi.fn(), + destroy: vi.fn() + }]) + mockConstructor.setCodeHighlighter = vi.fn() + return { + default: mockConstructor + } +}) + const __dirname = path.dirname(fileURLToPath(import.meta.url)) -// Helper function to load and extract HTML from HAR files -async function loadHarHtml(key: string): Promise { +async function loadHtmlFromHar(key: string): Promise { const harPath = path.join(__dirname, '../../har', `${key}.har`) const harContent = await fs.readFile(harPath, 'utf-8') const harData = JSON.parse(harContent) - // Find the main HTML response (same logic as har-view.ts) const mainEntry = harData.log.entries.find((entry: any) => entry.request.url.includes('github.com') && entry.response.content.mimeType?.includes('text/html') && @@ -27,66 +42,48 @@ async function loadHarHtml(key: string): Promise { throw new Error(`No HTML content found in HAR file: ${key}.har`) } - return mainEntry.response.content.text + let html = mainEntry.response.content.text + + // Check if content is base64 encoded + if (mainEntry.response.content.encoding === 'base64') { + html = Buffer.from(html, 'base64').toString('utf-8') + } + + return html } describe('github', () => { - beforeEach(() => { - // Reset DOM between tests - document.body.innerHTML = '' + it('should identify gh_pr textarea and create proper spot object', async () => { + const html = await loadHtmlFromHar('gh_pr') - // Mock console methods to avoid noise - vi.spyOn(console, 'warn').mockImplementation(() => {}) - }) - - // Helper to setup DOM environment with location mocking - function setupDOMEnvironment(url: string, html: string) { - // Set up the HTML content - document.body.innerHTML = html + // Parse HTML with linkedom + const dom = parseHTML(html) - // Mock window.location.pathname for GitHub enhancer - Object.defineProperty(window.location, 'pathname', { - value: new URL(url).pathname, - configurable: true + // Replace global document with parsed one + Object.assign(globalThis, { + document: dom.document, + window: { + ...dom.window, + location: new URL(PAGES.gh_pr) + } }) - // Add GitHub hostname meta tag (for the enhancer's new hostname check) const meta = document.createElement('meta') meta.name = 'hostname' meta.content = 'github.com' document.head.appendChild(meta) - } - - it('should identify gh_pr textarea and create proper spot object', async () => { - const enhancers = new EnhancerRegistry() - const url = PAGES.gh_pr - - // Load the HTML from HAR file - const html = await loadHarHtml('gh_pr') - - // Setup DOM environment with proper location - setupDOMEnvironment(url, html) - // Get all textarea elements from the page + const enhancers = new EnhancerRegistry() const textareas = document.querySelectorAll('textarea') - // Try to enhance each textarea - should find at least one GitHub textarea - let enhancedCount = 0 - let lastEnhancedResult: any = null - + let enhanced: any = null for (const textarea of textareas) { - const enhancedTextarea = enhancers.tryToEnhance(textarea as HTMLTextAreaElement) - if (enhancedTextarea) { - enhancedCount++ - lastEnhancedResult = enhancedTextarea - } + enhanced = enhancers.tryToEnhance(textarea as HTMLTextAreaElement) + if (enhanced) break } - expect(enhancedCount).toBeGreaterThan(0) - expect(lastEnhancedResult).toBeTruthy() - - // Snapshot test on the spot object structure - expect(lastEnhancedResult.spot).toMatchInlineSnapshot(` + expect(enhanced).toBeTruthy() + expect(enhanced.spot).toMatchInlineSnapshot(` { "domain": "github.com", "number": 517, @@ -95,20 +92,5 @@ describe('github', () => { "unique_key": "github.com:diffplug/selfie:517", } `) - - // Verify specific fields based on the URL - const urlObj = new URL(url) - const match = urlObj.pathname.match(/^\/([^/]+)\/([^/]+)\/(?:pull|issues)\/(\d+)/) - expect(match).toBeTruthy() // Ensure URL pattern matches - - const [, owner, repo, numberStr] = match! - - expect(owner).toBeDefined() - expect(repo).toBeDefined() - expect(numberStr).toBeDefined() - - expect(lastEnhancedResult.spot.slug).toBe(`${owner}/${repo}`) - expect(lastEnhancedResult.spot.number).toBe(parseInt(numberStr!, 10)) - expect(lastEnhancedResult.spot.unique_key).toBe(`github.com:${owner}/${repo}:${numberStr}`) }) }) diff --git a/browser-extension/tests/setup.ts b/browser-extension/tests/setup.ts index a9d0dd3..f9caeb7 100644 --- a/browser-extension/tests/setup.ts +++ b/browser-extension/tests/setup.ts @@ -1 +1,50 @@ import '@testing-library/jest-dom/vitest' +import { parseHTML } from 'linkedom' + +// Set up linkedom globals for browser-like environment +const dom = parseHTML(` + + + + + Test + + + +`) + +// Mock global DOM objects +Object.assign(globalThis, { + window: dom.window, + document: dom.document, + Document: dom.Document, + DocumentFragment: dom.DocumentFragment, + HTMLElement: dom.HTMLElement, + HTMLTextAreaElement: dom.HTMLTextAreaElement, + HTMLDivElement: dom.HTMLDivElement, + HTMLMetaElement: dom.HTMLMetaElement, + Element: dom.Element, + Node: dom.Node, + Text: dom.Text, + location: dom.window.location +}) + +// Mock querySelector methods properly +const originalQuerySelector = dom.document.querySelector.bind(dom.document) +const originalQuerySelectorAll = dom.document.querySelectorAll.bind(dom.document) + +dom.document.querySelector = function(selector) { + try { + return originalQuerySelector(selector) + } catch (e) { + return null + } +} + +dom.document.querySelectorAll = function(selector) { + try { + return originalQuerySelectorAll(selector) + } catch (e) { + return [] + } +} diff --git a/browser-extension/vitest.config.ts b/browser-extension/vitest.config.ts index af7d365..ab2a6d8 100644 --- a/browser-extension/vitest.config.ts +++ b/browser-extension/vitest.config.ts @@ -16,7 +16,8 @@ export default defineConfig({ provider: 'v8', reporter: ['text', 'json', 'html'], }, - environment: 'happy-dom', + environment: 'node', + pool: 'threads', globals: true, setupFiles: ['./tests/setup.ts'], }, From 193c00e7290d726df9200bffd0b2874b69dab396 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 17:07:43 -0700 Subject: [PATCH 13/34] More simplifications. --- browser-extension/tests/lib/enhancers/github.test.ts | 5 ----- 1 file changed, 5 deletions(-) diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index 0d471fd..873cb6e 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -68,11 +68,6 @@ describe('github', () => { } }) - const meta = document.createElement('meta') - meta.name = 'hostname' - meta.content = 'github.com' - document.head.appendChild(meta) - const enhancers = new EnhancerRegistry() const textareas = document.querySelectorAll('textarea') From 50454e6c890c9f2b6a3095c52b18eb85a3fe0c0a Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 17:12:05 -0700 Subject: [PATCH 14/34] Fix all CI stuff. --- .../tests/lib/enhancers/github.test.ts | 57 ++++++++++--------- browser-extension/tests/setup.ts | 26 +++++---- 2 files changed, 44 insertions(+), 39 deletions(-) diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index 873cb6e..ae80167 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -1,27 +1,29 @@ -import { describe, expect, it, vi } from 'vitest' -import { EnhancerRegistry } from '../../../src/lib/registries' -import { PAGES } from '../../har-index' import fs from 'node:fs/promises' import path from 'node:path' import { fileURLToPath } from 'node:url' import { parseHTML } from 'linkedom' +import { describe, expect, it, vi } from 'vitest' +import { EnhancerRegistry } from '../../../src/lib/registries' +import { PAGES } from '../../har-index' vi.stubGlobal('defineContentScript', vi.fn()) vi.mock('../../../src/overtype/overtype', () => { - const mockConstructor = vi.fn().mockImplementation(() => [{ - container: document.createElement('div'), - wrapper: document.createElement('div'), - textarea: document.createElement('textarea'), - preview: document.createElement('div'), - getValue: vi.fn(() => ''), - setValue: vi.fn(), - focus: vi.fn(), - destroy: vi.fn() - }]) - mockConstructor.setCodeHighlighter = vi.fn() + const mockConstructor = vi.fn().mockImplementation(() => [ + { + container: document.createElement('div'), + destroy: vi.fn(), + focus: vi.fn(), + getValue: vi.fn(() => ''), + preview: document.createElement('div'), + setValue: vi.fn(), + textarea: document.createElement('textarea'), + wrapper: document.createElement('div'), + }, + ]) + ;(mockConstructor as any).setCodeHighlighter = vi.fn() return { - default: mockConstructor + default: mockConstructor, } }) @@ -32,10 +34,11 @@ async function loadHtmlFromHar(key: string): Promise { const harContent = await fs.readFile(harPath, 'utf-8') const harData = JSON.parse(harContent) - const mainEntry = harData.log.entries.find((entry: any) => - entry.request.url.includes('github.com') && - entry.response.content.mimeType?.includes('text/html') && - entry.response.content.text + const mainEntry = harData.log.entries.find( + (entry: any) => + entry.request.url.includes('github.com') && + entry.response.content.mimeType?.includes('text/html') && + entry.response.content.text, ) if (!mainEntry) { @@ -43,7 +46,7 @@ async function loadHtmlFromHar(key: string): Promise { } let html = mainEntry.response.content.text - + // Check if content is base64 encoded if (mainEntry.response.content.encoding === 'base64') { html = Buffer.from(html, 'base64').toString('utf-8') @@ -55,28 +58,28 @@ async function loadHtmlFromHar(key: string): Promise { describe('github', () => { it('should identify gh_pr textarea and create proper spot object', async () => { const html = await loadHtmlFromHar('gh_pr') - + // Parse HTML with linkedom const dom = parseHTML(html) - + // Replace global document with parsed one Object.assign(globalThis, { document: dom.document, window: { ...dom.window, - location: new URL(PAGES.gh_pr) - } + location: new URL(PAGES.gh_pr), + }, }) - + const enhancers = new EnhancerRegistry() const textareas = document.querySelectorAll('textarea') - + let enhanced: any = null for (const textarea of textareas) { enhanced = enhancers.tryToEnhance(textarea as HTMLTextAreaElement) if (enhanced) break } - + expect(enhanced).toBeTruthy() expect(enhanced.spot).toMatchInlineSnapshot(` { diff --git a/browser-extension/tests/setup.ts b/browser-extension/tests/setup.ts index f9caeb7..177a22e 100644 --- a/browser-extension/tests/setup.ts +++ b/browser-extension/tests/setup.ts @@ -15,36 +15,38 @@ const dom = parseHTML(` // Mock global DOM objects Object.assign(globalThis, { - window: dom.window, - document: dom.document, Document: dom.Document, DocumentFragment: dom.DocumentFragment, - HTMLElement: dom.HTMLElement, - HTMLTextAreaElement: dom.HTMLTextAreaElement, + document: dom.document, + Element: dom.Element, HTMLDivElement: dom.HTMLDivElement, + HTMLElement: dom.HTMLElement, HTMLMetaElement: dom.HTMLMetaElement, - Element: dom.Element, + HTMLTextAreaElement: dom.HTMLTextAreaElement, + location: dom.window.location, Node: dom.Node, Text: dom.Text, - location: dom.window.location + window: dom.window, }) // Mock querySelector methods properly const originalQuerySelector = dom.document.querySelector.bind(dom.document) const originalQuerySelectorAll = dom.document.querySelectorAll.bind(dom.document) -dom.document.querySelector = function(selector) { +dom.document.querySelector = (selector: string) => { try { return originalQuerySelector(selector) - } catch (e) { + } catch (_e) { return null } } -dom.document.querySelectorAll = function(selector) { +dom.document.querySelectorAll = ((selector: string) => { try { return originalQuerySelectorAll(selector) - } catch (e) { - return [] + } catch (_e) { + // Return an empty NodeList-like object instead of array + const emptyNodeList = document.createDocumentFragment().childNodes + return emptyNodeList as unknown as NodeListOf } -} +}) as typeof dom.document.querySelectorAll From 78a9cae8ed0d6671892d865fcf25af2939ee98ae Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 21:49:52 -0700 Subject: [PATCH 15/34] Simplify HAR parsing. --- .../tests/lib/enhancers/github.test.ts | 21 ++++--------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index ae80167..b7a843b 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -29,30 +29,17 @@ vi.mock('../../../src/overtype/overtype', () => { const __dirname = path.dirname(fileURLToPath(import.meta.url)) -async function loadHtmlFromHar(key: string): Promise { +async function loadHtmlFromHar(key: keyof typeof PAGES): Promise { + const url = PAGES[key] const harPath = path.join(__dirname, '../../har', `${key}.har`) const harContent = await fs.readFile(harPath, 'utf-8') const harData = JSON.parse(harContent) - const mainEntry = harData.log.entries.find( - (entry: any) => - entry.request.url.includes('github.com') && - entry.response.content.mimeType?.includes('text/html') && - entry.response.content.text, - ) - + const mainEntry = harData.log.entries.find((entry: any) => entry.request.url === url) if (!mainEntry) { throw new Error(`No HTML content found in HAR file: ${key}.har`) } - - let html = mainEntry.response.content.text - - // Check if content is base64 encoded - if (mainEntry.response.content.encoding === 'base64') { - html = Buffer.from(html, 'base64').toString('utf-8') - } - - return html + return mainEntry.response.content.text } describe('github', () => { From f4191b13aecc29272ce9a0feb3d8ea931181be74 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 22:06:30 -0700 Subject: [PATCH 16/34] More pruning. --- .../tests/lib/enhancers/github.test.ts | 6 ----- browser-extension/tests/setup.ts | 22 ------------------- 2 files changed, 28 deletions(-) diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index b7a843b..d3de69d 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -7,7 +7,6 @@ import { EnhancerRegistry } from '../../../src/lib/registries' import { PAGES } from '../../har-index' vi.stubGlobal('defineContentScript', vi.fn()) - vi.mock('../../../src/overtype/overtype', () => { const mockConstructor = vi.fn().mockImplementation(() => [ { @@ -28,17 +27,12 @@ vi.mock('../../../src/overtype/overtype', () => { }) const __dirname = path.dirname(fileURLToPath(import.meta.url)) - async function loadHtmlFromHar(key: keyof typeof PAGES): Promise { const url = PAGES[key] const harPath = path.join(__dirname, '../../har', `${key}.har`) const harContent = await fs.readFile(harPath, 'utf-8') const harData = JSON.parse(harContent) - const mainEntry = harData.log.entries.find((entry: any) => entry.request.url === url) - if (!mainEntry) { - throw new Error(`No HTML content found in HAR file: ${key}.har`) - } return mainEntry.response.content.text } diff --git a/browser-extension/tests/setup.ts b/browser-extension/tests/setup.ts index 177a22e..3b90a94 100644 --- a/browser-extension/tests/setup.ts +++ b/browser-extension/tests/setup.ts @@ -28,25 +28,3 @@ Object.assign(globalThis, { Text: dom.Text, window: dom.window, }) - -// Mock querySelector methods properly -const originalQuerySelector = dom.document.querySelector.bind(dom.document) -const originalQuerySelectorAll = dom.document.querySelectorAll.bind(dom.document) - -dom.document.querySelector = (selector: string) => { - try { - return originalQuerySelector(selector) - } catch (_e) { - return null - } -} - -dom.document.querySelectorAll = ((selector: string) => { - try { - return originalQuerySelectorAll(selector) - } catch (_e) { - // Return an empty NodeList-like object instead of array - const emptyNodeList = document.createDocumentFragment().childNodes - return emptyNodeList as unknown as NodeListOf - } -}) as typeof dom.document.querySelectorAll From 48c389ddd580cb401412bf078207b6459f18211f Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 22:15:52 -0700 Subject: [PATCH 17/34] We're not running coverage at all right now. --- browser-extension/vitest.config.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/browser-extension/vitest.config.ts b/browser-extension/vitest.config.ts index ab2a6d8..08c4ee2 100644 --- a/browser-extension/vitest.config.ts +++ b/browser-extension/vitest.config.ts @@ -4,18 +4,6 @@ import { WxtVitest } from 'wxt/testing' export default defineConfig({ plugins: [WxtVitest()], test: { - coverage: { - exclude: [ - 'entrypoints/**/*.d.ts', - 'entrypoints/**/types.ts', - 'entrypoints/**/config.ts', - 'node_modules', - 'tests', - ], - include: ['entrypoints/**/*.ts'], - provider: 'v8', - reporter: ['text', 'json', 'html'], - }, environment: 'node', pool: 'threads', globals: true, From b351215843f9b419d1dc213e5bea00e67ac8de19 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 22:24:20 -0700 Subject: [PATCH 18/34] Cleanup plan. --- browser-extension/tests/PLAN.md | 95 +++++++++++++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 browser-extension/tests/PLAN.md diff --git a/browser-extension/tests/PLAN.md b/browser-extension/tests/PLAN.md new file mode 100644 index 0000000..b697c50 --- /dev/null +++ b/browser-extension/tests/PLAN.md @@ -0,0 +1,95 @@ +# Test Setup Analysis and Improvement Plan + +## Current Test Architecture Analysis + +The browser extension uses a comprehensive but complex test setup with several interesting patterns: + +### 1. **Vitest Configuration Analysis** +- Uses `vitest` with WxtVitest plugin for browser extension testing +- Node environment with thread pool +- Global test utilities enabled +- Custom setup file for DOM mocking + +### 2. **DOM Mocking Strategy (linkedom)** +- Uses linkedom instead of jsdom/happy-dom +- Creates complete HTML document structure +- Global DOM object mocking approach +- Manual assignment to globalThis + +### 3. **HAR-based Testing System** +- Sophisticated HAR recording/playback for GitHub pages +- Express server for viewing HAR content with Gitcasso integration +- URL patching and webextension-polyfill mocking +- Sanitization and redaction for privacy + +### 4. **Overtype Module Mocking** +- Comprehensive mock of OverType editor +- Constructor pattern mocking with array return +- Static method mocking (setCodeHighlighter) + +## Issues Identified + +### **Critical Issues:** +1. **Global DOM pollution** - Shared DOM state between tests +2. **No test isolation** - DOM modifications persist across tests +3. **Memory leak potential** - No cleanup of linkedom instances +4. **Incomplete mock validation** - Mocks don't match real API contracts + +### **Performance Issues:** +5. **HAR file loading** - Synchronous file operations in tests +6. **Large fixture files** - 600KB+ HAR files loaded repeatedly +7. **Express server overhead** - Unnecessary for unit tests + +### **Maintainability Issues:** +8. **Complex mock setup** - Hard to understand/maintain mocks +9. **No mock type safety** - Mocks lack proper TypeScript types +10. **Test-specific globals** - Makes tests harder to reason about + +## Improvement Plan + +### **Phase 1: Test Isolation & Cleanup** +1. Implement proper test setup/teardown with fresh DOM per test +2. Add memory cleanup for linkedom instances +3. Create isolated test contexts +4. Add test environment validation + +### **Phase 2: Mock Strategy Improvements** +1. Create typed mock factories for OverType +2. Implement mock validation against real interfaces +3. Add mock behavior verification +4. Separate unit vs integration test mocking + +### **Phase 3: HAR Testing Optimization** +1. Create lightweight test fixtures +2. Implement HAR caching strategy +3. Add lazy loading for test data +4. Separate HAR viewer from test infrastructure + +### **Phase 4: Test Architecture Enhancement** +1. Add test utilities for common patterns +2. Implement custom matchers for DOM assertions +3. Add performance benchmarks for tests +4. Create test documentation and examples + +## Specific Code Improvements + +### setup.ts improvements: +- Add `beforeEach`/`afterEach` hooks to reset DOM state +- Create a factory function for DOM creation +- Add proper TypeScript types for global extensions +- Implement DOM cleanup utilities + +### vitest.config.ts improvements: +- Consider adding coverage configuration +- Add test timeout configurations +- Configure proper test reporters +- Add test isolation settings + +### github.test.ts improvements: +- Extract HAR loading into a test utility +- Add proper async/await patterns +- Implement test data builders +- Add more comprehensive assertions +- Clean up DOM state after each test +- Type the `enhanced` variable properly +- Add error case testing \ No newline at end of file From e9cb9caae85ab53ea66200510b1b0c4130f1e089 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 23:00:15 -0700 Subject: [PATCH 19/34] Add typings for the `har-format` lib. --- browser-extension/package-lock.json | 1 + browser-extension/package.json | 1 + 2 files changed, 2 insertions(+) diff --git a/browser-extension/package-lock.json b/browser-extension/package-lock.json index b478744..3658686 100644 --- a/browser-extension/package-lock.json +++ b/browser-extension/package-lock.json @@ -20,6 +20,7 @@ "@playwright/test": "^1.46.0", "@testing-library/jest-dom": "^6.6.4", "@types/express": "^4.17.21", + "@types/har-format": "^1.2.16", "@types/node": "^22.16.5", "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", diff --git a/browser-extension/package.json b/browser-extension/package.json index 383fef3..fedf210 100644 --- a/browser-extension/package.json +++ b/browser-extension/package.json @@ -12,6 +12,7 @@ "@playwright/test": "^1.46.0", "@testing-library/jest-dom": "^6.6.4", "@types/express": "^4.17.21", + "@types/har-format": "^1.2.16", "@types/node": "^22.16.5", "@vitest/coverage-v8": "^3.2.4", "@vitest/ui": "^3.2.4", From 6ec1090fd6ca88de41daaa084befbd04bcb5139a Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 23:11:07 -0700 Subject: [PATCH 20/34] Put the `har` stuff into a test fixture. --- .../tests/lib/enhancers/github.test.ts | 39 ++----- browser-extension/tests/setup.ts | 32 +---- browser-extension/tests/test-fixtures.ts | 53 +++++++++ browser-extension/tests/test-utils.ts | 110 ++++++++++++++++++ 4 files changed, 174 insertions(+), 60 deletions(-) create mode 100644 browser-extension/tests/test-fixtures.ts create mode 100644 browser-extension/tests/test-utils.ts diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index d3de69d..ee5e76e 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -1,10 +1,6 @@ -import fs from 'node:fs/promises' -import path from 'node:path' -import { fileURLToPath } from 'node:url' -import { parseHTML } from 'linkedom' -import { describe, expect, it, vi } from 'vitest' +import { vi } from 'vitest' import { EnhancerRegistry } from '../../../src/lib/registries' -import { PAGES } from '../../har-index' +import { describe, expect, it } from '../../test-fixtures' vi.stubGlobal('defineContentScript', vi.fn()) vi.mock('../../../src/overtype/overtype', () => { @@ -26,43 +22,22 @@ vi.mock('../../../src/overtype/overtype', () => { } }) -const __dirname = path.dirname(fileURLToPath(import.meta.url)) -async function loadHtmlFromHar(key: keyof typeof PAGES): Promise { - const url = PAGES[key] - const harPath = path.join(__dirname, '../../har', `${key}.har`) - const harContent = await fs.readFile(harPath, 'utf-8') - const harData = JSON.parse(harContent) - const mainEntry = harData.log.entries.find((entry: any) => entry.request.url === url) - return mainEntry.response.content.text -} - describe('github', () => { - it('should identify gh_pr textarea and create proper spot object', async () => { - const html = await loadHtmlFromHar('gh_pr') - - // Parse HTML with linkedom - const dom = parseHTML(html) - - // Replace global document with parsed one - Object.assign(globalThis, { - document: dom.document, - window: { - ...dom.window, - location: new URL(PAGES.gh_pr), - }, - }) + it('should identify gh_pr textarea and create proper spot object', async ({ harDOM }) => { + // Setup DOM from HAR snapshot + await harDOM('gh_pr') const enhancers = new EnhancerRegistry() const textareas = document.querySelectorAll('textarea') - let enhanced: any = null + let enhanced: ReturnType = null for (const textarea of textareas) { enhanced = enhancers.tryToEnhance(textarea as HTMLTextAreaElement) if (enhanced) break } expect(enhanced).toBeTruthy() - expect(enhanced.spot).toMatchInlineSnapshot(` + expect(enhanced?.spot).toMatchInlineSnapshot(` { "domain": "github.com", "number": 517, diff --git a/browser-extension/tests/setup.ts b/browser-extension/tests/setup.ts index 3b90a94..6c2932d 100644 --- a/browser-extension/tests/setup.ts +++ b/browser-extension/tests/setup.ts @@ -1,30 +1,6 @@ import '@testing-library/jest-dom/vitest' -import { parseHTML } from 'linkedom' +import './test-fixtures' -// Set up linkedom globals for browser-like environment -const dom = parseHTML(` - - - - - Test - - - -`) - -// Mock global DOM objects -Object.assign(globalThis, { - Document: dom.Document, - DocumentFragment: dom.DocumentFragment, - document: dom.document, - Element: dom.Element, - HTMLDivElement: dom.HTMLDivElement, - HTMLElement: dom.HTMLElement, - HTMLMetaElement: dom.HTMLMetaElement, - HTMLTextAreaElement: dom.HTMLTextAreaElement, - location: dom.window.location, - Node: dom.Node, - Text: dom.Text, - window: dom.window, -}) +// Test fixtures are now available globally via test-fixtures.ts +// Individual tests should use the harDOM fixture to load HAR snapshots +// DOM cleanup is handled automatically by the fixture lifecycle diff --git a/browser-extension/tests/test-fixtures.ts b/browser-extension/tests/test-fixtures.ts new file mode 100644 index 0000000..f82605f --- /dev/null +++ b/browser-extension/tests/test-fixtures.ts @@ -0,0 +1,53 @@ +import { describe as baseDescribe, test as baseTest, expect } from 'vitest' +import { PAGES } from './har-index' +import { + cleanupDOM, + createDOMFromHar, + loadHtmlFromHar, + setupDOMFromHar, + type TestDOMGlobals, +} from './test-utils' + +export interface TestFixtures { + harDOM: (key: keyof typeof PAGES) => Promise +} + +export const test = baseTest.extend({ + // biome-ignore lint/correctness/noEmptyPattern: Required by Vitest fixture API + harDOM: async ({}, use) => { + let currentDOM: TestDOMGlobals | null = null + + const setupDOM = async (key: keyof typeof PAGES): Promise => { + // Clean up any existing DOM + if (currentDOM) { + cleanupDOM() + } + + // Load HTML from HAR file + const html = await loadHtmlFromHar(key) + const url = PAGES[key] + + // Create and setup new DOM + const domGlobals = createDOMFromHar(html, url) + setupDOMFromHar(domGlobals) + + currentDOM = domGlobals + return domGlobals + } + + // Provide the setup function to the test + await use(setupDOM) + + // Cleanup after test completes + if (currentDOM) { + cleanupDOM() + currentDOM = null + } + }, +}) + +export const describe = baseDescribe +export const it = test + +// Re-export expect from vitest +export { expect } diff --git a/browser-extension/tests/test-utils.ts b/browser-extension/tests/test-utils.ts new file mode 100644 index 0000000..b4c613c --- /dev/null +++ b/browser-extension/tests/test-utils.ts @@ -0,0 +1,110 @@ +import fs from 'node:fs/promises' +import path from 'node:path' +import { fileURLToPath } from 'node:url' +import type { Har as HarFile } from 'har-format' +import { parseHTML } from 'linkedom' +import { PAGES } from './har-index' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + +export interface TestDOMGlobals { + Document: typeof Document + DocumentFragment: typeof DocumentFragment + document: Document + Element: typeof Element + HTMLDivElement: typeof HTMLDivElement + HTMLElement: typeof HTMLElement + HTMLMetaElement: typeof HTMLMetaElement + HTMLTextAreaElement: typeof HTMLTextAreaElement + location: Location + Node: typeof Node + Text: typeof Text + window: Window +} + +export interface TestDOMContext { + cleanup: () => void + document: Document + window: Window + url: string +} + +let currentDOMInstance: any = null +let originalGlobals: Partial = {} + +export async function loadHtmlFromHar(key: keyof typeof PAGES): Promise { + const url = PAGES[key] + const harPath = path.join(__dirname, 'har', `${key}.har`) + const harContent = await fs.readFile(harPath, 'utf-8') + const harData: HarFile = JSON.parse(harContent) + const mainEntry = harData.log.entries.find((entry) => entry.request.url === url) + + if (!mainEntry) { + throw new Error(`No entry found for URL: ${url} in HAR file: ${harPath}`) + } + + return mainEntry.response.content.text || '' +} + +export function createDOMFromHar(html: string, url: string): TestDOMGlobals { + const dom = parseHTML(html) + + return { + Document: dom.Document, + DocumentFragment: dom.DocumentFragment, + document: dom.document, + Element: dom.Element, + HTMLDivElement: dom.HTMLDivElement, + HTMLElement: dom.HTMLElement, + HTMLMetaElement: dom.HTMLMetaElement, + HTMLTextAreaElement: dom.HTMLTextAreaElement, + location: new URL(url) as any, + Node: dom.Node, + Text: dom.Text, + window: { + ...dom.window, + location: new URL(url), + } as any, + } +} + +export function setupDOMFromHar(domGlobals: TestDOMGlobals): void { + // Store original globals for cleanup + originalGlobals = { + Document: (globalThis as any).Document, + DocumentFragment: (globalThis as any).DocumentFragment, + document: (globalThis as any).document, + Element: (globalThis as any).Element, + HTMLDivElement: (globalThis as any).HTMLDivElement, + HTMLElement: (globalThis as any).HTMLElement, + HTMLMetaElement: (globalThis as any).HTMLMetaElement, + HTMLTextAreaElement: (globalThis as any).HTMLTextAreaElement, + location: (globalThis as any).location, + Node: (globalThis as any).Node, + Text: (globalThis as any).Text, + window: (globalThis as any).window, + } + + // Set new globals + Object.assign(globalThis, domGlobals) + currentDOMInstance = domGlobals +} + +export function cleanupDOM(): void { + if (currentDOMInstance) { + // Reset globals to original values + Object.assign(globalThis, originalGlobals) + + // Clear references + currentDOMInstance = null + originalGlobals = {} + } +} + +export async function setupHarDOM(key: keyof typeof PAGES): Promise { + const html = await loadHtmlFromHar(key) + const url = PAGES[key] + const domGlobals = createDOMFromHar(html, url) + setupDOMFromHar(domGlobals) + return domGlobals +} From 078595577a1c8d0ceade3dce4f1515e4e9bb6ce0 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 23:12:56 -0700 Subject: [PATCH 21/34] Don't need `setup.ts` anymore. --- browser-extension/tests/setup.ts | 6 ------ browser-extension/vitest.config.ts | 1 - 2 files changed, 7 deletions(-) delete mode 100644 browser-extension/tests/setup.ts diff --git a/browser-extension/tests/setup.ts b/browser-extension/tests/setup.ts deleted file mode 100644 index 6c2932d..0000000 --- a/browser-extension/tests/setup.ts +++ /dev/null @@ -1,6 +0,0 @@ -import '@testing-library/jest-dom/vitest' -import './test-fixtures' - -// Test fixtures are now available globally via test-fixtures.ts -// Individual tests should use the harDOM fixture to load HAR snapshots -// DOM cleanup is handled automatically by the fixture lifecycle diff --git a/browser-extension/vitest.config.ts b/browser-extension/vitest.config.ts index 08c4ee2..98e411b 100644 --- a/browser-extension/vitest.config.ts +++ b/browser-extension/vitest.config.ts @@ -7,6 +7,5 @@ export default defineConfig({ environment: 'node', pool: 'threads', globals: true, - setupFiles: ['./tests/setup.ts'], }, }) From a3bc35dfa8cf4c7f68e8696f7fd65c3a80abcc38 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 23:23:06 -0700 Subject: [PATCH 22/34] better har integration --- .../tests/lib/enhancers/github.test.ts | 7 +-- browser-extension/tests/test-fixtures.ts | 51 +++++++++++++++++++ 2 files changed, 53 insertions(+), 5 deletions(-) diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index ee5e76e..59d9066 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -1,6 +1,6 @@ import { vi } from 'vitest' import { EnhancerRegistry } from '../../../src/lib/registries' -import { describe, expect, it } from '../../test-fixtures' +import { describe, expect, usingHar } from '../../test-fixtures' vi.stubGlobal('defineContentScript', vi.fn()) vi.mock('../../../src/overtype/overtype', () => { @@ -23,10 +23,7 @@ vi.mock('../../../src/overtype/overtype', () => { }) describe('github', () => { - it('should identify gh_pr textarea and create proper spot object', async ({ harDOM }) => { - // Setup DOM from HAR snapshot - await harDOM('gh_pr') - + usingHar('gh_pr').it('should identify gh_pr textarea and create proper spot object', async () => { const enhancers = new EnhancerRegistry() const textareas = document.querySelectorAll('textarea') diff --git a/browser-extension/tests/test-fixtures.ts b/browser-extension/tests/test-fixtures.ts index f82605f..49f3038 100644 --- a/browser-extension/tests/test-fixtures.ts +++ b/browser-extension/tests/test-fixtures.ts @@ -51,3 +51,54 @@ export const it = test // Re-export expect from vitest export { expect } + +// Fluent interface for HAR-based tests +export function usingHar(harKey: keyof typeof PAGES) { + // Create a test with auto-setup fixture for this HAR + const harTest = baseTest.extend({ + // Auto-setup fixture that runs the HAR setup automatically + _harAutoSetup: [ + async ({ harDOM }, use) => { + await harDOM(harKey) + await use(undefined) + }, + { auto: true }, + ], + // Keep the original harDOM fixture + // biome-ignore lint/correctness/noEmptyPattern: Required by Vitest fixture API + harDOM: async ({}, use) => { + let currentDOM: TestDOMGlobals | null = null + + const setupDOM = async (key: keyof typeof PAGES): Promise => { + if (currentDOM) { + cleanupDOM() + } + const html = await loadHtmlFromHar(key) + const url = PAGES[key] + const domGlobals = createDOMFromHar(html, url) + setupDOMFromHar(domGlobals) + currentDOM = domGlobals + return domGlobals + } + + await use(setupDOM) + + if (currentDOM) { + cleanupDOM() + currentDOM = null + } + }, + }) + + return { + describe: (name: string, fn: () => void) => { + return baseDescribe(name, fn) + }, + + it: (name: string, fn: () => void | Promise) => { + return harTest(name, async () => { + return await fn() + }) + }, + } +} From 2ac9c896353809ada7b3d4d9a223d87539071b17 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 23:28:26 -0700 Subject: [PATCH 23/34] Huge simplification. --- browser-extension/tests/test-fixtures.ts | 101 +++-------------------- 1 file changed, 12 insertions(+), 89 deletions(-) diff --git a/browser-extension/tests/test-fixtures.ts b/browser-extension/tests/test-fixtures.ts index 49f3038..60831f4 100644 --- a/browser-extension/tests/test-fixtures.ts +++ b/browser-extension/tests/test-fixtures.ts @@ -1,103 +1,26 @@ import { describe as baseDescribe, test as baseTest, expect } from 'vitest' -import { PAGES } from './har-index' -import { - cleanupDOM, - createDOMFromHar, - loadHtmlFromHar, - setupDOMFromHar, - type TestDOMGlobals, -} from './test-utils' - -export interface TestFixtures { - harDOM: (key: keyof typeof PAGES) => Promise -} - -export const test = baseTest.extend({ - // biome-ignore lint/correctness/noEmptyPattern: Required by Vitest fixture API - harDOM: async ({}, use) => { - let currentDOM: TestDOMGlobals | null = null - - const setupDOM = async (key: keyof typeof PAGES): Promise => { - // Clean up any existing DOM - if (currentDOM) { - cleanupDOM() - } - - // Load HTML from HAR file - const html = await loadHtmlFromHar(key) - const url = PAGES[key] - - // Create and setup new DOM - const domGlobals = createDOMFromHar(html, url) - setupDOMFromHar(domGlobals) - - currentDOM = domGlobals - return domGlobals - } - - // Provide the setup function to the test - await use(setupDOM) - - // Cleanup after test completes - if (currentDOM) { - cleanupDOM() - currentDOM = null - } - }, -}) +import type { PAGES } from './har-index' +import { cleanupDOM, setupHarDOM } from './test-utils' export const describe = baseDescribe -export const it = test // Re-export expect from vitest export { expect } // Fluent interface for HAR-based tests export function usingHar(harKey: keyof typeof PAGES) { - // Create a test with auto-setup fixture for this HAR - const harTest = baseTest.extend({ - // Auto-setup fixture that runs the HAR setup automatically - _harAutoSetup: [ - async ({ harDOM }, use) => { - await harDOM(harKey) - await use(undefined) - }, - { auto: true }, - ], - // Keep the original harDOM fixture - // biome-ignore lint/correctness/noEmptyPattern: Required by Vitest fixture API - harDOM: async ({}, use) => { - let currentDOM: TestDOMGlobals | null = null - - const setupDOM = async (key: keyof typeof PAGES): Promise => { - if (currentDOM) { - cleanupDOM() - } - const html = await loadHtmlFromHar(key) - const url = PAGES[key] - const domGlobals = createDOMFromHar(html, url) - setupDOMFromHar(domGlobals) - currentDOM = domGlobals - return domGlobals - } - - await use(setupDOM) - - if (currentDOM) { - cleanupDOM() - currentDOM = null - } - }, - }) - return { - describe: (name: string, fn: () => void) => { - return baseDescribe(name, fn) - }, - it: (name: string, fn: () => void | Promise) => { - return harTest(name, async () => { - return await fn() + return baseTest(name, async () => { + // Setup HAR DOM before test + await setupHarDOM(harKey) + + try { + return await fn() + } finally { + // Cleanup after test + cleanupDOM() + } }) }, } From 5f7fd0001b3f07d8c20cf5c6781b665290ba57ad Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Fri, 5 Sep 2025 23:41:03 -0700 Subject: [PATCH 24/34] Progress... --- .../tests/lib/enhancers/github.test.ts | 25 ++--------- browser-extension/tests/mock-setup.ts | 42 +++++++++++++++++++ 2 files changed, 46 insertions(+), 21 deletions(-) create mode 100644 browser-extension/tests/mock-setup.ts diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index 59d9066..d0eea22 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -1,27 +1,10 @@ -import { vi } from 'vitest' +import { setupCommonMocks } from '../../mock-setup' + +setupCommonMocks() + import { EnhancerRegistry } from '../../../src/lib/registries' import { describe, expect, usingHar } from '../../test-fixtures' -vi.stubGlobal('defineContentScript', vi.fn()) -vi.mock('../../../src/overtype/overtype', () => { - const mockConstructor = vi.fn().mockImplementation(() => [ - { - container: document.createElement('div'), - destroy: vi.fn(), - focus: vi.fn(), - getValue: vi.fn(() => ''), - preview: document.createElement('div'), - setValue: vi.fn(), - textarea: document.createElement('textarea'), - wrapper: document.createElement('div'), - }, - ]) - ;(mockConstructor as any).setCodeHighlighter = vi.fn() - return { - default: mockConstructor, - } -}) - describe('github', () => { usingHar('gh_pr').it('should identify gh_pr textarea and create proper spot object', async () => { const enhancers = new EnhancerRegistry() diff --git a/browser-extension/tests/mock-setup.ts b/browser-extension/tests/mock-setup.ts new file mode 100644 index 0000000..2000d8e --- /dev/null +++ b/browser-extension/tests/mock-setup.ts @@ -0,0 +1,42 @@ +import { vi } from 'vitest' + +/** + * Sets up common mocks that are needed by most DOM-based tests. + * + * This function should be called at the top level of test files to ensure + * proper hoisting of vi.mock calls. + * + * Example usage: + * ```typescript + * import { vi } from 'vitest' + * import { setupCommonMocks } from '../mock-setup' + * + * setupCommonMocks() + * + * // ... rest of your test imports and code + * ``` + */ +export function setupCommonMocks() { + // Mock the webextension defineContentScript global + vi.stubGlobal('defineContentScript', vi.fn()) + + // Mock the OverType editor component + vi.mock('../src/overtype/overtype', () => { + const mockConstructor = vi.fn().mockImplementation(() => [ + { + container: document.createElement('div'), + destroy: vi.fn(), + focus: vi.fn(), + getValue: vi.fn(() => ''), + preview: document.createElement('div'), + setValue: vi.fn(), + textarea: document.createElement('textarea'), + wrapper: document.createElement('div'), + }, + ]) + ;(mockConstructor as any).setCodeHighlighter = vi.fn() + return { + default: mockConstructor, + } + }) +} From 87dec048587175e8aee9474a765fc4abcb21fdcb Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sat, 6 Sep 2025 00:04:30 -0700 Subject: [PATCH 25/34] Cleaned WAY up, getting there... --- .../{test-fixtures.ts => fixture-har.ts} | 22 ++++++++++ .../tests/lib/enhancers/github.test.ts | 6 +-- browser-extension/tests/mock-setup.ts | 42 ------------------- 3 files changed, 25 insertions(+), 45 deletions(-) rename browser-extension/tests/{test-fixtures.ts => fixture-har.ts} (53%) delete mode 100644 browser-extension/tests/mock-setup.ts diff --git a/browser-extension/tests/test-fixtures.ts b/browser-extension/tests/fixture-har.ts similarity index 53% rename from browser-extension/tests/test-fixtures.ts rename to browser-extension/tests/fixture-har.ts index 60831f4..a2f1904 100644 --- a/browser-extension/tests/test-fixtures.ts +++ b/browser-extension/tests/fixture-har.ts @@ -1,3 +1,25 @@ +import { vi } from 'vitest' + +// Mock the OverType editor component +vi.mock('../src/overtype/overtype', () => { + const mockConstructor = vi.fn().mockImplementation(() => [ + { + container: document.createElement('div'), + destroy: vi.fn(), + focus: vi.fn(), + getValue: vi.fn(() => ''), + preview: document.createElement('div'), + setValue: vi.fn(), + textarea: document.createElement('textarea'), + wrapper: document.createElement('div'), + }, + ]) + ;(mockConstructor as any).setCodeHighlighter = vi.fn() + return { + default: mockConstructor, + } +}) + import { describe as baseDescribe, test as baseTest, expect } from 'vitest' import type { PAGES } from './har-index' import { cleanupDOM, setupHarDOM } from './test-utils' diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index d0eea22..0bdcd06 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -1,9 +1,9 @@ -import { setupCommonMocks } from '../../mock-setup' +import { describe, expect, usingHar } from '../../fixture-har' -setupCommonMocks() +// must import fixture **first** for mocks, the `expect` keeps biome from changing sort-order +expect import { EnhancerRegistry } from '../../../src/lib/registries' -import { describe, expect, usingHar } from '../../test-fixtures' describe('github', () => { usingHar('gh_pr').it('should identify gh_pr textarea and create proper spot object', async () => { diff --git a/browser-extension/tests/mock-setup.ts b/browser-extension/tests/mock-setup.ts deleted file mode 100644 index 2000d8e..0000000 --- a/browser-extension/tests/mock-setup.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { vi } from 'vitest' - -/** - * Sets up common mocks that are needed by most DOM-based tests. - * - * This function should be called at the top level of test files to ensure - * proper hoisting of vi.mock calls. - * - * Example usage: - * ```typescript - * import { vi } from 'vitest' - * import { setupCommonMocks } from '../mock-setup' - * - * setupCommonMocks() - * - * // ... rest of your test imports and code - * ``` - */ -export function setupCommonMocks() { - // Mock the webextension defineContentScript global - vi.stubGlobal('defineContentScript', vi.fn()) - - // Mock the OverType editor component - vi.mock('../src/overtype/overtype', () => { - const mockConstructor = vi.fn().mockImplementation(() => [ - { - container: document.createElement('div'), - destroy: vi.fn(), - focus: vi.fn(), - getValue: vi.fn(() => ''), - preview: document.createElement('div'), - setValue: vi.fn(), - textarea: document.createElement('textarea'), - wrapper: document.createElement('div'), - }, - ]) - ;(mockConstructor as any).setCodeHighlighter = vi.fn() - return { - default: mockConstructor, - } - }) -} From 2d4b492db163efc00c61becb37fdb55ffff7cb83 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sat, 6 Sep 2025 00:22:46 -0700 Subject: [PATCH 26/34] Cleanup the PR one. --- browser-extension/tests/lib/enhancers/github.test.ts | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index 0bdcd06..a7dbeab 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -9,15 +9,9 @@ describe('github', () => { usingHar('gh_pr').it('should identify gh_pr textarea and create proper spot object', async () => { const enhancers = new EnhancerRegistry() const textareas = document.querySelectorAll('textarea') - - let enhanced: ReturnType = null - for (const textarea of textareas) { - enhanced = enhancers.tryToEnhance(textarea as HTMLTextAreaElement) - if (enhanced) break - } - - expect(enhanced).toBeTruthy() - expect(enhanced?.spot).toMatchInlineSnapshot(` + expect(textareas.length).toBe(2) + expect(enhancers.tryToEnhance(textareas[0]!)).toBeNull() + expect(enhancers.tryToEnhance(textareas[1]!)?.spot).toMatchInlineSnapshot(` { "domain": "github.com", "number": 517, From b5415239aad64c2d9777263828009f8762150295 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sat, 6 Sep 2025 00:32:09 -0700 Subject: [PATCH 27/34] disable the id check in githubIssueAddComment --- .../src/lib/enhancers/github/githubIssueAddComment.ts | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts b/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts index 3b7a1cd..9c01537 100644 --- a/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts +++ b/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts @@ -17,13 +17,12 @@ export class GitHubIssueAddCommentEnhancer implements CommentEnhancer Date: Sat, 6 Sep 2025 00:32:19 -0700 Subject: [PATCH 28/34] Add snapshot updating info to README --- browser-extension/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/browser-extension/README.md b/browser-extension/README.md index f210cf0..9de8fec 100644 --- a/browser-extension/README.md +++ b/browser-extension/README.md @@ -18,6 +18,7 @@ - `npm run biome:fix` - fixes most of what `biome check` finds - `npm run compile` - typechecking - `npm test` - vitest +- `npm test -- -u` updates all the snapshots ### Deployment - `npm run build` - build for mv3 for most browsers From c338684bee397e7e6edf0b51c2ee1d8194b8b1a8 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sat, 6 Sep 2025 00:32:48 -0700 Subject: [PATCH 29/34] Add a test for issues too. --- .../tests/lib/enhancers/github.test.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/browser-extension/tests/lib/enhancers/github.test.ts b/browser-extension/tests/lib/enhancers/github.test.ts index a7dbeab..24a8602 100644 --- a/browser-extension/tests/lib/enhancers/github.test.ts +++ b/browser-extension/tests/lib/enhancers/github.test.ts @@ -6,7 +6,7 @@ expect import { EnhancerRegistry } from '../../../src/lib/registries' describe('github', () => { - usingHar('gh_pr').it('should identify gh_pr textarea and create proper spot object', async () => { + usingHar('gh_pr').it('should create the correct spot object', async () => { const enhancers = new EnhancerRegistry() const textareas = document.querySelectorAll('textarea') expect(textareas.length).toBe(2) @@ -21,4 +21,18 @@ describe('github', () => { } `) }) + usingHar('gh_issue').it('should create the correct spot object', async () => { + const enhancers = new EnhancerRegistry() + const textareas = document.querySelectorAll('textarea') + expect(textareas.length).toBe(1) + expect(enhancers.tryToEnhance(textareas[0]!)?.spot).toMatchInlineSnapshot(` + { + "domain": "github.com", + "number": 523, + "slug": "diffplug/selfie", + "type": "GH_ISSUE_ADD_COMMENT", + "unique_key": "github.com:diffplug/selfie:523", + } + `) + }) }) From a5efb9ec745d2b98a749079bc47dfc2e0d61a189 Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sat, 6 Sep 2025 00:35:55 -0700 Subject: [PATCH 30/34] Don't need this anymore. --- browser-extension/tests/PLAN.md | 95 --------------------------------- 1 file changed, 95 deletions(-) delete mode 100644 browser-extension/tests/PLAN.md diff --git a/browser-extension/tests/PLAN.md b/browser-extension/tests/PLAN.md deleted file mode 100644 index b697c50..0000000 --- a/browser-extension/tests/PLAN.md +++ /dev/null @@ -1,95 +0,0 @@ -# Test Setup Analysis and Improvement Plan - -## Current Test Architecture Analysis - -The browser extension uses a comprehensive but complex test setup with several interesting patterns: - -### 1. **Vitest Configuration Analysis** -- Uses `vitest` with WxtVitest plugin for browser extension testing -- Node environment with thread pool -- Global test utilities enabled -- Custom setup file for DOM mocking - -### 2. **DOM Mocking Strategy (linkedom)** -- Uses linkedom instead of jsdom/happy-dom -- Creates complete HTML document structure -- Global DOM object mocking approach -- Manual assignment to globalThis - -### 3. **HAR-based Testing System** -- Sophisticated HAR recording/playback for GitHub pages -- Express server for viewing HAR content with Gitcasso integration -- URL patching and webextension-polyfill mocking -- Sanitization and redaction for privacy - -### 4. **Overtype Module Mocking** -- Comprehensive mock of OverType editor -- Constructor pattern mocking with array return -- Static method mocking (setCodeHighlighter) - -## Issues Identified - -### **Critical Issues:** -1. **Global DOM pollution** - Shared DOM state between tests -2. **No test isolation** - DOM modifications persist across tests -3. **Memory leak potential** - No cleanup of linkedom instances -4. **Incomplete mock validation** - Mocks don't match real API contracts - -### **Performance Issues:** -5. **HAR file loading** - Synchronous file operations in tests -6. **Large fixture files** - 600KB+ HAR files loaded repeatedly -7. **Express server overhead** - Unnecessary for unit tests - -### **Maintainability Issues:** -8. **Complex mock setup** - Hard to understand/maintain mocks -9. **No mock type safety** - Mocks lack proper TypeScript types -10. **Test-specific globals** - Makes tests harder to reason about - -## Improvement Plan - -### **Phase 1: Test Isolation & Cleanup** -1. Implement proper test setup/teardown with fresh DOM per test -2. Add memory cleanup for linkedom instances -3. Create isolated test contexts -4. Add test environment validation - -### **Phase 2: Mock Strategy Improvements** -1. Create typed mock factories for OverType -2. Implement mock validation against real interfaces -3. Add mock behavior verification -4. Separate unit vs integration test mocking - -### **Phase 3: HAR Testing Optimization** -1. Create lightweight test fixtures -2. Implement HAR caching strategy -3. Add lazy loading for test data -4. Separate HAR viewer from test infrastructure - -### **Phase 4: Test Architecture Enhancement** -1. Add test utilities for common patterns -2. Implement custom matchers for DOM assertions -3. Add performance benchmarks for tests -4. Create test documentation and examples - -## Specific Code Improvements - -### setup.ts improvements: -- Add `beforeEach`/`afterEach` hooks to reset DOM state -- Create a factory function for DOM creation -- Add proper TypeScript types for global extensions -- Implement DOM cleanup utilities - -### vitest.config.ts improvements: -- Consider adding coverage configuration -- Add test timeout configurations -- Configure proper test reporters -- Add test isolation settings - -### github.test.ts improvements: -- Extract HAR loading into a test utility -- Add proper async/await patterns -- Implement test data builders -- Add more comprehensive assertions -- Clean up DOM state after each test -- Type the `enhanced` variable properly -- Add error case testing \ No newline at end of file From bc18d438f9fef0e2147be29e6d7f8b0ceb4c71fd Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sat, 6 Sep 2025 00:48:45 -0700 Subject: [PATCH 31/34] Make refresh work when viewing gitcasso-modified with `har:view` --- browser-extension/tests/har-view.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/browser-extension/tests/har-view.ts b/browser-extension/tests/har-view.ts index 09b59ae..3b8bfee 100644 --- a/browser-extension/tests/har-view.ts +++ b/browser-extension/tests/har-view.ts @@ -62,6 +62,18 @@ async function loadHar(filename: string) { return harData } +// Add redirect routes for each PAGES URL to handle refreshes +Object.entries(PAGES).forEach(([key, url]) => { + try { + const urlObj = new URL(url) + app.get(urlObj.pathname, (_req, res) => { + res.redirect(`/page/${key}.har/gitcasso`) + }) + } catch (error) { + console.warn(`Could not create redirect route for ${key}: ${url}`) + } +}) + // List available HAR files app.get('/', async (_req, res) => { try { From 74889ed7779965d132acb7843a8d1a0ec6660c8d Mon Sep 17 00:00:00 2001 From: Ned Twigg Date: Sat, 6 Sep 2025 00:54:13 -0700 Subject: [PATCH 32/34] Remove debug logging. --- .../src/lib/enhancers/github/githubIssueAddComment.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts b/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts index 9c01537..e810c60 100644 --- a/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts +++ b/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts @@ -21,8 +21,6 @@ export class GitHubIssueAddCommentEnhancer implements CommentEnhancer Date: Sat, 6 Sep 2025 00:57:20 -0700 Subject: [PATCH 33/34] Fix biome --- .../src/lib/enhancers/github/githubIssueAddComment.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts b/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts index e810c60..136e81f 100644 --- a/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts +++ b/browser-extension/src/lib/enhancers/github/githubIssueAddComment.ts @@ -16,7 +16,7 @@ export class GitHubIssueAddCommentEnhancer implements CommentEnhancer Date: Sat, 6 Sep 2025 00:57:34 -0700 Subject: [PATCH 34/34] Unnecessary error-checking. --- browser-extension/tests/har-view.ts | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/browser-extension/tests/har-view.ts b/browser-extension/tests/har-view.ts index 3b8bfee..ac8a5a6 100644 --- a/browser-extension/tests/har-view.ts +++ b/browser-extension/tests/har-view.ts @@ -64,14 +64,10 @@ async function loadHar(filename: string) { // Add redirect routes for each PAGES URL to handle refreshes Object.entries(PAGES).forEach(([key, url]) => { - try { - const urlObj = new URL(url) - app.get(urlObj.pathname, (_req, res) => { - res.redirect(`/page/${key}.har/gitcasso`) - }) - } catch (error) { - console.warn(`Could not create redirect route for ${key}: ${url}`) - } + const urlObj = new URL(url) + app.get(urlObj.pathname, (_req, res) => { + res.redirect(`/page/${key}.har/gitcasso`) + }) }) // List available HAR files