From d4fa0f32bcd4c6cbd5007afbb0728fa1a5421cf7 Mon Sep 17 00:00:00 2001 From: CTHua Date: Thu, 20 Mar 2025 12:57:56 +0800 Subject: [PATCH 1/5] feat: lab3 --- lab3/README.md | 29 +++++++++++++++++++++++++++++ lab3/main.js | 34 ++++++++++++++++++++++++++++++++++ lab3/main_test.js | 5 +++++ lab3/validate.sh | 38 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 106 insertions(+) create mode 100644 lab3/README.md create mode 100644 lab3/main.js create mode 100644 lab3/main_test.js create mode 100755 lab3/validate.sh diff --git a/lab3/README.md b/lab3/README.md new file mode 100644 index 0000000..b591ab8 --- /dev/null +++ b/lab3/README.md @@ -0,0 +1,29 @@ +# Lab3 + +## Introduction + +In this lab, you will write unit tests for functions implemented in `main.js`. You can learn how to use classes and functions in it by uncommenting the code in it. (But remember don't commit them on GitHub) + +## Preparation (Important!!!) + +1. Sync fork on GitHub +2. `git checkout -b lab3` (**NOT** your student ID !!!) + +## Requirement + +1. (40%) Write test cases in `main_test.js` and achieve 100% code coverage. +2. (30%) For each function, parameterize their testcases to test the error-results. +3. (30%) For each function, use at least 3 parameterized testcases to test the non-error-results. + +You can run `validate.sh` in your local to test if you satisfy the requirements. + +Please note that you must not alter files other than `main_test.js`. You will get 0 points if + +1. you modify other files to achieve requirements. +2. you can't pass all CI on your PR. + +## Submission + +You need to open a pull request to your branch (e.g. 312XXXXXX, your student number) and contain the code that satisfies the abovementioned requirements. + +Moreover, please submit the URL of your PR to E3. Your submission will only be accepted when you present at both places. diff --git a/lab3/main.js b/lab3/main.js new file mode 100644 index 0000000..cee5de7 --- /dev/null +++ b/lab3/main.js @@ -0,0 +1,34 @@ +class Calculator { + exp(x) { + if (!Number.isFinite(x)) { + throw Error('unsupported operand type'); + } + const result = Math.exp(x); + if (result === Infinity) { + throw Error('overflow'); + } + return result; + } + + log(x) { + if (!Number.isFinite(x)) { + throw Error('unsupported operand type'); + } + const result = Math.log(x); + if (result === -Infinity) { + throw Error('math domain error (1)'); + } + if (Number.isNaN(result)) { + throw Error('math domain error (2)'); + } + return result; + } +} + +// const calculator = new Calculator(); +// console.log(calculator.exp(87)); +// console.log(calculator.log(48763)); + +module.exports = { + Calculator +}; \ No newline at end of file diff --git a/lab3/main_test.js b/lab3/main_test.js new file mode 100644 index 0000000..e6d6414 --- /dev/null +++ b/lab3/main_test.js @@ -0,0 +1,5 @@ +const {describe, it} = require('node:test'); +const assert = require('assert'); +const { Calculator } = require('./main'); + +// TODO: write your tests here diff --git a/lab3/validate.sh b/lab3/validate.sh new file mode 100755 index 0000000..7a758fb --- /dev/null +++ b/lab3/validate.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# Check for unwanted files +for file in *; do + if [[ $file != "main.js" && $file != "main_test.js" && $file != "README.md" && $file != "validate.sh" ]]; then + echo "[!] Unwanted file detected: $file." + exit 1 + fi +done + +node=$(which node) +test_path="${BASH_SOURCE[0]}" +solution_path="$(realpath .)" +tmp_dir=$(mktemp -d -t lab3-XXXXXXXXXX) + +cd $tmp_dir + +rm -rf * +cp $solution_path/*.js . +result=$($"node" --test --experimental-test-coverage) ; ret=$? +if [ $ret -ne 0 ] ; then + echo "[!] testing fails" + exit 1 +else + coverage=$(echo "$result" | grep 'all files' | awk -F '|' '{print $2}' | sed 's/ //g') + if (( $(echo "$coverage < 100" | bc -l) )); then + echo "[!] Coverage is only $coverage%" + exit 1 + else + echo "[V] Coverage is 100%" + fi +fi + +rm -rf $tmp_dir + +exit 0 + +# vim: set fenc=utf8 ff=unix et sw=2 ts=2 sts=2: \ No newline at end of file From caff56572d709bf9bd36dd5697b646a1dfa639cb Mon Sep 17 00:00:00 2001 From: Bruce Date: Wed, 26 Mar 2025 10:47:49 +0800 Subject: [PATCH 2/5] lab3 --- lab3/main_test.js | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/lab3/main_test.js b/lab3/main_test.js index e6d6414..130fe7e 100644 --- a/lab3/main_test.js +++ b/lab3/main_test.js @@ -1,5 +1,46 @@ const {describe, it} = require('node:test'); const assert = require('assert'); const { Calculator } = require('./main'); - +const test = require('node:test'); // TODO: write your tests here +// const { test, describe } = require('node:test'); +// const assert = require('assert'); +// const { Calculator } = require('./main'); + +describe('Calculator', () => { + const calculator = new Calculator(); + + test('return Math.exp(x) ', () => { + assert.ok(Math.abs(calculator.exp(1) - Math.exp(1)) < 1e-10); + assert.ok(Math.abs(calculator.exp(0) - 1) < 1e-10); + }); + + test('exp() throw "unsupported operand type" for non-finite x', () => { + assert.throws(() => calculator.exp(Infinity), /unsupported operand type/); + assert.throws(() => calculator.exp(-Infinity), /unsupported operand type/); + assert.throws(() => calculator.exp(NaN), /unsupported operand type/); + }); + + test('exp() throw "overflow" for large x resulting Infinity', () => { + assert.throws(() => calculator.exp(10000), /overflow/); + }); + + test('log() return Math.log(x) ', () => { + assert.ok(Math.abs(calculator.log(1) - 0) < 1e-10); + assert.ok(Math.abs(calculator.log(Math.E) - 1) < 1e-10); + }); + + test('log() throw "unsupported operand type" for non-finite x', () => { + assert.throws(() => calculator.log(Infinity), /unsupported operand type/); + assert.throws(() => calculator.log(-Infinity), /unsupported operand type/); + assert.throws(() => calculator.log(NaN), /unsupported operand type/); + }); + + test('log() throw "math domain error (1)" when x = 0', () => { + assert.throws(() => calculator.log(0), /math domain error \(1\)/); + }); + + test('log() throw "math domain error (2)" when x < 0', () => { + assert.throws(() => calculator.log(-1), /math domain error \(2\)/); + }); +}); From ff59f53499a4ab3b415bce36cec160ccbcc0faf0 Mon Sep 17 00:00:00 2001 From: Bruce Date: Wed, 26 Mar 2025 11:06:44 +0800 Subject: [PATCH 3/5] lab3 --- lab3/main_test.js | 87 +++++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 41 deletions(-) diff --git a/lab3/main_test.js b/lab3/main_test.js index 130fe7e..ca6b640 100644 --- a/lab3/main_test.js +++ b/lab3/main_test.js @@ -1,46 +1,51 @@ -const {describe, it} = require('node:test'); +// const {describe, it} = require('node:test'); const assert = require('assert'); const { Calculator } = require('./main'); const test = require('node:test'); // TODO: write your tests here -// const { test, describe } = require('node:test'); -// const assert = require('assert'); -// const { Calculator } = require('./main'); - -describe('Calculator', () => { - const calculator = new Calculator(); - - test('return Math.exp(x) ', () => { - assert.ok(Math.abs(calculator.exp(1) - Math.exp(1)) < 1e-10); - assert.ok(Math.abs(calculator.exp(0) - 1) < 1e-10); - }); - - test('exp() throw "unsupported operand type" for non-finite x', () => { - assert.throws(() => calculator.exp(Infinity), /unsupported operand type/); - assert.throws(() => calculator.exp(-Infinity), /unsupported operand type/); - assert.throws(() => calculator.exp(NaN), /unsupported operand type/); - }); - - test('exp() throw "overflow" for large x resulting Infinity', () => { - assert.throws(() => calculator.exp(10000), /overflow/); - }); - - test('log() return Math.log(x) ', () => { - assert.ok(Math.abs(calculator.log(1) - 0) < 1e-10); - assert.ok(Math.abs(calculator.log(Math.E) - 1) < 1e-10); - }); - - test('log() throw "unsupported operand type" for non-finite x', () => { - assert.throws(() => calculator.log(Infinity), /unsupported operand type/); - assert.throws(() => calculator.log(-Infinity), /unsupported operand type/); - assert.throws(() => calculator.log(NaN), /unsupported operand type/); - }); - - test('log() throw "math domain error (1)" when x = 0', () => { - assert.throws(() => calculator.log(0), /math domain error \(1\)/); - }); - - test('log() throw "math domain error (2)" when x < 0', () => { - assert.throws(() => calculator.log(-1), /math domain error \(2\)/); - }); + +const calc = new Calculator(); +test('exp', () => { + const cases = [ + { input: 1, expected: Math.exp(1) }, + { input: 0, expected: 1 }, + { input: -2, expected: Math.exp(-2) } + ]; + + for (const tc of cases) { + assert.ok(Math.abs(calc.exp(tc.input) - tc.expected) < 1e-10); + } +}); + + +test('log', () => { + const cases = [ + { input: 1, expected: 0 }, + { input: Math.E, expected: 1 }, + { input: 10, expected: Math.log(10) } + ]; + + for (const tc of cases) { + assert.ok(Math.abs(calc.log(tc.input) - tc.expected) < 1e-10); + } }); + +// error +test('exp type error or overflow', () => { + const badInputs = [Infinity, -Infinity, NaN]; + for (const val of badInputs) { + assert.throws(() => calc.exp(val), /unsupported operand type/); + } + + assert.throws(() => calc.exp(10000), /overflow/); +}); + +test('log errors', () => { + const badInputs = [Infinity, -Infinity, NaN]; + for (const val of badInputs) { + assert.throws(() => calc.log(val), /unsupported operand type/); + } + + assert.throws(() => calc.log(0), /math domain error \(1\)/); + assert.throws(() => calc.log(-1), /math domain error \(2\)/); +}); \ No newline at end of file From d0cbf96eb2891f7602781154544bbd74d52bc1b7 Mon Sep 17 00:00:00 2001 From: CTHua Date: Thu, 27 Mar 2025 13:32:03 +0800 Subject: [PATCH 4/5] feat: lab4 --- lab4/README.md | 29 + lab4/main_test.js | 22 + lab4/package-lock.json | 1174 ++++++++++++++++++++++++++++++++++++++++ lab4/package.json | 5 + lab4/validate.sh | 45 ++ 5 files changed, 1275 insertions(+) create mode 100644 lab4/README.md create mode 100644 lab4/main_test.js create mode 100644 lab4/package-lock.json create mode 100644 lab4/package.json create mode 100755 lab4/validate.sh diff --git a/lab4/README.md b/lab4/README.md new file mode 100644 index 0000000..c9cb0b7 --- /dev/null +++ b/lab4/README.md @@ -0,0 +1,29 @@ +# Lab4 + +## Introduction + +In this lab, you will write tests in `main_test.js`. You can learn how to use [Puppeteer](https://pptr.dev/) to tests a web UI. + +## Preparation (Important!!!) + +1. Sync fork your branch (e.g., `SQLab:312XXXXXX`) +2. `git checkout -b lab4` (**NOT** your student ID !!!) + +## Requirement + +1. (100%) Goto https://pptr.dev/, type `chipi chipi chapa chapa` into the search box, click on **1st** result in the **Docs** section, and print the title. + +For the detailed steps and hints, please check the slide of this lab. + +You can run `validate.sh` in your local to test if you satisfy the requirements. + +Please note that you must not alter files other than `main_test.js`. You will get 0 points if + +1. you modify other files to achieve requirements. +2. you can't pass all CI on your PR. + +## Submission + +You need to open a pull request to your branch (e.g. 312XXXXXX, your student number) and contain the code that satisfies the abovementioned requirements. + +Moreover, please submit the URL of your PR to E3. Your submission will only be accepted when you present at both places. diff --git a/lab4/main_test.js b/lab4/main_test.js new file mode 100644 index 0000000..e37d21a --- /dev/null +++ b/lab4/main_test.js @@ -0,0 +1,22 @@ +const puppeteer = require('puppeteer'); + +(async () => { + // Launch the browser and open a new blank page + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + + // Navigate the page to a URL + await page.goto('https://pptr.dev/'); + + // Hints: + // Click search button + // Type into search box + // Wait for search result + // Get the `Docs` result section + // Click on first result in `Docs` section + // Locate the title + // Print the title + + // Close the browser + await browser.close(); +})(); \ No newline at end of file diff --git a/lab4/package-lock.json b/lab4/package-lock.json new file mode 100644 index 0000000..ced9fee --- /dev/null +++ b/lab4/package-lock.json @@ -0,0 +1,1174 @@ +{ + "name": "lab4", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "puppeteer": "^22.5.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.1.tgz", + "integrity": "sha512-bC49z4spJQR3j8vFtJBLqzyzFV0ciuL5HYX7qfSl3KEqeMVV+eTquRvmXxpvB0AMubRrvv7y5DILiLLPi57Ewg==", + "dependencies": { + "@babel/highlight": "^7.24.1", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.1.tgz", + "integrity": "sha512-EPmDPxidWe/Ex+HTFINpvXdPHRmgSF3T8hGvzondYjmgzTQ/0EbLpSxyt+w3zzlYSk9cNBQNF9k0dT5Z2NiBjw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.2.0.tgz", + "integrity": "sha512-MC7LxpcBtdfTbzwARXIkqGZ1Osn3nnZJlm+i0+VqHl72t//Xwl9wICrXT8BwtgC6s1xJNHsxOpvzISUqe92+sw==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.4.0", + "semver": "7.6.0", + "tar-fs": "3.0.5", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, + "node_modules/@types/node": { + "version": "20.11.30", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.30.tgz", + "integrity": "sha512-dHM6ZxwlmuZaRmUPfv1p+KrdD1Dci04FbdEm/9wEMouFqxYoFl5aMkt0VMAUtYRQDyYvD41WJLukhq/ha3YuTw==", + "optional": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" + }, + "node_modules/bare-events": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.1.tgz", + "integrity": "sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==", + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.2.tgz", + "integrity": "sha512-X9IqgvyB0/VA5OZJyb5ZstoN62AzD7YxVGog13kkfYWYqJYcK0kcqLZ6TrmH5qr4/8//ejVcX4x/a0UvaogXmA==", + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-os": "^2.0.0", + "bare-path": "^2.0.0", + "streamx": "^2.13.0" + } + }, + "node_modules/bare-os": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.1.tgz", + "integrity": "sha512-OwPyHgBBMkhC29Hl3O4/YfxW9n7mdTr2+SsO29XBWKKJsbgj3mnorDB80r5TiCQgQstgE5ga1qNYrpes6NvX2w==", + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", + "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chromium-bidi": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.13.tgz", + "integrity": "sha512-OHbYCetDxdW/xmlrafgOiLsIrw4Sp1BEeolbZ1UGJO5v/nekQOJBj/Kzyw6sqKcAVabUTo0GS3cTYgr6zIf00g==", + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0", + "zod": "3.22.4" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1249869", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1249869.tgz", + "integrity": "sha512-Ctp4hInA0BEavlUoRy9mhGq0i+JSo/AwVyX2EFgZmV1kYB+Zq+EMBAn52QWu6FbRr10hRb6pBl420upbp4++vg==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/puppeteer": { + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.5.0.tgz", + "integrity": "sha512-PNVflixb6w3FMhehYhLcaQHTCcNKVkjxekzyvWr0n0yBnhUYF0ZhiG4J1I14Mzui2oW8dGvUD8kbXj0GiN1pFg==", + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "2.2.0", + "cosmiconfig": "9.0.0", + "puppeteer-core": "22.5.0" + }, + "bin": { + "puppeteer": "lib/esm/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.5.0.tgz", + "integrity": "sha512-bcfmM1nNSysjnES/ZZ1KdwFAFFGL3N76qRpisBb4WL7f4UAD4vPDxlhKZ1HJCDgMSWeYmeder4kftyp6lKqMYg==", + "dependencies": { + "@puppeteer/browsers": "2.2.0", + "chromium-bidi": "0.5.13", + "debug": "4.3.4", + "devtools-protocol": "0.0.1249869", + "ws": "8.16.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tar-fs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "optional": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/zod": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.22.4.tgz", + "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/lab4/package.json b/lab4/package.json new file mode 100644 index 0000000..5014ba0 --- /dev/null +++ b/lab4/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "puppeteer": "^22.5.0" + } +} diff --git a/lab4/validate.sh b/lab4/validate.sh new file mode 100755 index 0000000..1130e5c --- /dev/null +++ b/lab4/validate.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +# Check for unwanted files +for file in *; do + if [[ $file != "node_modules" && $file != "main_test.js" && $file != "package-lock.json" && $file != "package.json" && $file != "README.md" && $file != "validate.sh" ]]; then + echo "[!] Unwanted file detected: $file." + exit 1 + fi +done + +node=$(which node) +test_path="${BASH_SOURCE[0]}" +solution_path="$(realpath .)" +tmp_dir=$(mktemp -d -t lab4-XXXXXXXXXX) +answer="ElementHandle.dragAndDrop() method" + +cd $tmp_dir + +rm -rf * +cp $solution_path/*.js . +cp $solution_path/*.json . + +# Install dependencies +npm ci + +result=$($"node" main_test.js) ; ret=$? +if [ $ret -ne 0 ] ; then + echo "[!] testing fails" + exit 1 +else + title=$(echo "$result" | head -1) + if [[ $title != $answer ]]; then + echo "[!] Expected: $answer" + echo "[!] Actual: $title" + exit 1 + else + echo "[V] Pass" + fi +fi + +rm -rf $tmp_dir + +exit 0 + +# vim: set fenc=utf8 ff=unix et sw=2 ts=2 sts=2: \ No newline at end of file From 418a3050e356298bc6553adc2259269dddcff9db Mon Sep 17 00:00:00 2001 From: Bruce Date: Tue, 1 Apr 2025 15:53:26 +0800 Subject: [PATCH 5/5] 0401 --- lab4/search_result.png | Bin 77404 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 lab4/search_result.png diff --git a/lab4/search_result.png b/lab4/search_result.png deleted file mode 100644 index 69f4ac1d313eecca1bf985340c043fe2fc66b368..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77404 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 z 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